UNPKG

furnace-module-interface

Version:

An interface for loading, processing and saving furnace modules in an object-oriented manner. Fully typed via TypeScript.

891 lines (889 loc) 25.6 kB
declare class BufferReadHelper { buffer: Buffer; private position; constructor(buffer: Buffer); skipBytes(offset: number): void; getPosition(offset?: number): number; setPosition(position: number): void; getASCII(length: number, position?: number): string; readString(encoding: BufferEncoding, position?: number): string; findByte(byte: number, position?: number): number; readBuffer(length: number, position?: number): Buffer; readInt8(position?: number): number; readUInt8(position?: number): number; readInt16LE(position?: number): number; readUInt16LE(position?: number): number; readInt32LE(position?: number): number; readUInt32LE(position?: number): number; readFloat32LE(position?: number): number; } declare class BufferWriteHelper { private position; private buffer; constructor(); getTrimmedBuffer(): Buffer; private expandBuffer; skipBytes(offset: number): void; getPosition(offset?: number): number; setPosition(position: number): void; writeString(str: string, encoding: BufferEncoding, nullTerminated: boolean, position?: number): number; writeBuffer(buf: Buffer, start: number, length: number, position?: number): number; writeInt8(value: number, position?: number): number; writeUInt8(value: number, position?: number): number; writeInt16LE(value: number, position?: number): number; writeUInt16LE(value: number, position?: number): number; writeInt32LE(value: number, position?: number): number; writeUInt32LE(value: number, position?: number): number; writeFloat32LE(value: number, position?: number): number; } export declare class FurnaceGenericMacro { data: number[]; valueOffset: number; mode: number | null; loop: number | null; release: number | null; open: boolean; constructor(); } export declare class FurnaceMacroWithHeight extends FurnaceGenericMacro { height: number | null; constructor(); } export declare class FurnaceArpeggioMacro extends FurnaceGenericMacro { isAbsolute: boolean; constructor(); } export declare class FurnaceOperatorMacro extends FurnaceGenericMacro { operator: number; constructor(operator: number); } export declare enum FurnaceInstrumentTypeEnum { Standard = 0, OPMOPN = 1, GameBoy = 2, C64 = 3, Amiga = 4, PCEngine = 5, AY38910 = 6, AY8930 = 7, TIA = 8, SAA1099 = 9, VIC = 10, PET = 11, VRC6 = 12, OPLL = 13, OPL = 14, FDS = 15, VirtualBoy = 16, Namco163 = 17, SCC = 18, OPZ = 19, POKEY = 20, PCSpeaker = 21, WonderSwan = 22, Lynx = 23, VERA = 24, X1010 = 25, VRC6Saw = 26, E5506 = 27, MultiPCM = 28, SNES = 29, SoundUnit = 30, NamcoWSG = 31 } export declare type FurnaceInstrumentVariables = { fmInsData: number[]; fmInsOpData: number[]; gbInsData: number[]; gbExtraInsData: number[]; c64InsData: number[]; amigaInsData: number[]; oplDrumsModeData: number[]; namco163InsData: number[]; fdsInsData: number[]; fdsModTable: number[]; opzInsData: number[]; wavetableSynthInsData: number[]; multipcmInsData: number[]; tsuInsData: number[]; gbEnvSeq: number[]; sampleMap: null | { frequency: number; sample: number; }[]; volumeMacro: FurnaceMacroWithHeight; arpeggioMacro: FurnaceArpeggioMacro; dutyMacro: FurnaceMacroWithHeight; waveMacro: FurnaceMacroWithHeight; pitchMacro: FurnaceGenericMacro | null; algorithmMacro: FurnaceGenericMacro | null; feedbackMacro: FurnaceGenericMacro | null; fmsMacro: FurnaceGenericMacro | null; amsMacro: FurnaceGenericMacro | null; leftPanMacro: FurnaceGenericMacro | null; rightPanMacro: FurnaceGenericMacro | null; phaseResetMacro: FurnaceGenericMacro | null; extra1Macro: FurnaceGenericMacro | null; extra2Macro: FurnaceGenericMacro | null; extra3Macro: FurnaceGenericMacro | null; extra4Macro: FurnaceGenericMacro | null; extra5Macro: FurnaceGenericMacro | null; extra6Macro: FurnaceGenericMacro | null; extra7Macro: FurnaceGenericMacro | null; extra8Macro: FurnaceGenericMacro | null; amplitudeModulationMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; attackRateMaco: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; decay1RateMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; multipleMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; releaseRateMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; decay2LevelMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; totalLevelMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; detune2Macro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; rateScaleMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; detuneMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; decay2RateMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; ssgegMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _damMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _dvbMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _egtMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _kslMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _susMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _vibMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _wsMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; _ksrMacro: null | [ FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro, FurnaceOperatorMacro ]; }; export declare class FurnaceInstrument { static magic: string; private version; name: string; type: FurnaceInstrumentTypeEnum; private vars; private constructor(); static create(): FurnaceInstrument; static fromHelper(helper: BufferReadHelper): FurnaceInstrument; writeToBuffer(helper: BufferWriteHelper): void; getView(type: FurnaceInstrumentTypeEnum): FurnaceInstrumentView; getVersion(): number; } export interface FurnaceInstrumentView { type: FurnaceInstrumentTypeEnum; } export declare class FurnaceInstrumentViewStandard implements FurnaceInstrumentView { private vars; type: FurnaceInstrumentTypeEnum; constructor(vars: FurnaceInstrumentVariables); get volumeMacro(): FurnaceMacroWithHeight; get noiseModeMacro(): FurnaceMacroWithHeight; get arpeggioMacro(): FurnaceArpeggioMacro; get pitchMacro(): FurnaceGenericMacro | null; get phaseResetMacro(): FurnaceGenericMacro | null; } export declare class FurnaceInstrumentViewOPNOPM implements FurnaceInstrumentView { private vars; type: FurnaceInstrumentTypeEnum; operators: FurnaceInstrumentViewOpOPNOPM[]; constructor(vars: FurnaceInstrumentVariables); get algorithm(): number; set algorithm(value: number); get feedback(): number; set feedback(value: number); get fms(): number; set fms(value: number); get ams(): number; set ams(value: number); get operatorCount(): number; set operatorCount(value: number); get volumeMacro(): FurnaceMacroWithHeight; get arpeggioMacro(): FurnaceArpeggioMacro; get pitchMacro(): FurnaceGenericMacro | null; get algorithmMacro(): FurnaceGenericMacro | null; get feedbackMacro(): FurnaceGenericMacro | null; get fmsMacro(): FurnaceGenericMacro | null; get amsMacro(): FurnaceGenericMacro | null; get hardPanMacro(): FurnaceGenericMacro | null; get phaseResetMacro(): FurnaceGenericMacro | null; } export declare class FurnaceInstrumentViewOpOPNOPM { private offset; private operator; private vars; constructor(offset: number, operator: number, vars: FurnaceInstrumentVariables); get amplitudeModulation(): number; set amplitudeModulation(value: number); get attackRate(): number; set attackRate(value: number); get decay1Rate(): number; set decay1Rate(value: number); get multiple(): number; set multiple(value: number); get releaseRate(): number; set releaseRate(value: number); get decay1Level(): number; set decay1Level(value: number); get totalLevel(): number; set totalLevel(value: number); get rateScale(): number; set rateScale(value: number); get detune(): number; set detune(value: number); get decay2Rate(): number; set decay2Rate(value: number); get ssgeg(): number; set ssgeg(value: number); get amplitudeModulationMacro(): FurnaceOperatorMacro | null; get attackRateMaco(): FurnaceOperatorMacro | null; get decay1RateMacro(): FurnaceOperatorMacro | null; get multipleMacro(): FurnaceOperatorMacro | null; get releaseRateMacro(): FurnaceOperatorMacro | null; get decay2LevelMacro(): FurnaceOperatorMacro | null; get totalLevelMacro(): FurnaceOperatorMacro | null; get rateScaleMacro(): FurnaceOperatorMacro | null; get detuneMacro(): FurnaceOperatorMacro | null; get decay2RateMacro(): FurnaceOperatorMacro | null; get ssgegMacro(): FurnaceOperatorMacro | null; } export declare enum FurnaceAmigaModeEnum { sample = 0, wavetable = 1 } export declare class FurnaceInstrumentViewAmiga implements FurnaceInstrumentView { private vars; type: FurnaceInstrumentTypeEnum; constructor(vars: FurnaceInstrumentVariables); get sampleId(): number | null; set sampleId(value: number | null); get mode(): FurnaceAmigaModeEnum; set mode(value: FurnaceAmigaModeEnum); get waveLen(): FurnaceAmigaModeEnum; set waveLen(value: FurnaceAmigaModeEnum); get waveSize(): FurnaceAmigaModeEnum; set waveSize(value: FurnaceAmigaModeEnum); get volumeMacro(): FurnaceMacroWithHeight; get arpeggioMacro(): FurnaceArpeggioMacro; get pitchMacro(): FurnaceGenericMacro | null; get phaseResetMacro(): FurnaceGenericMacro | null; } export declare class FurnaceMeta { static readonly magic = "META"; private version; toolName: string; toolVersion: string; date: Date; comment: string; backupFile: string; extraStrings: string[]; extraInts: number[]; private constructor(); static create(): FurnaceMeta; static checkFromHelper(helper: BufferReadHelper): FurnaceMeta; static fromHelper(helper: BufferReadHelper): FurnaceMeta; writeToBuffer(helper: BufferWriteHelper): void; } export declare class FurnaceSample { static readonly magic = "SMPL"; static readonly magic2 = "SMP2"; name: string; data: FurnaceSampleFormat; compatRate: number; c4Rate: number; loopStart: number | null; loopEnd: number | null; volume: number | null; pitch: number | null; precense: [ number, number, number, number ]; private constructor(); static create(): FurnaceSample; static fromHelper(helper: BufferReadHelper, version: number): FurnaceSample; private static getFormatMultiply; private static getFormatFunctionFromId; writeToBuffer(helper: BufferWriteHelper, version: number): void; writeToBufferSMP2(helper: BufferWriteHelper): void; writeToBufferSMPL(helper: BufferWriteHelper, version: number): void; } export interface FurnaceSampleFormat { formatName: string; formatId: number; entries: number; rawBuffer: Buffer; convertToArray: () => Int16Array; convertFromArray: (array: Int16Array) => void; } export declare class Furnace8bitSample implements FurnaceSampleFormat { formatName: string; formatId: number; entries: number; rawBuffer: Buffer; private constructor(); static create(): Furnace8bitSample; static fromBuffer(buffer: Buffer, length: number): Furnace8bitSample; convertToArray(): Int16Array; convertFromArray(array: Int16Array): void; } export declare class Furnace16bitSample implements FurnaceSampleFormat { formatName: string; formatId: number; entries: number; rawBuffer: Buffer; private constructor(); static create(): Furnace16bitSample; static fromBuffer(buffer: Buffer, length: number): Furnace16bitSample; convertToArray(): Int16Array; convertFromArray(array: Int16Array): void; } export declare class FurnaceWavetable { static readonly magic = "WAVE"; name: string; min: number; max: number; data: Int32Array; private constructor(); static create(): FurnaceWavetable; static fromHelper(helper: BufferReadHelper): FurnaceWavetable; writeToBuffer(helper: BufferWriteHelper): void; } export declare class FurnaceInstrumentModule { static magic: string; private version; instruments: FurnaceInstrument[]; wavetables: FurnaceWavetable[]; samples: FurnaceSample[]; meta: FurnaceMeta; private constructor(); static create(): FurnaceInstrumentModule; static fromHelper(helper: BufferReadHelper): FurnaceInstrumentModule; getAsBuffer(): Buffer; getVersion(): number; } export declare function loadSystem(id: number): FurnaceSystem | null; export declare enum FurnaceSystemEnum { Null = 0, Genesis = 2, GenesisExtended = 66, YM2612 = 131, YM2612Extended = 160, SMS = 3, YM2612WithDualPCM = 190, YM2612ExtendedWithDualPCM = 189, GameBoy = 4, PCEngine = 5, NES = 6, NESVRC7 = 70, KonamiVRC6 = 136, KonamiVRC7 = 157 } export declare enum FurnaceChipEnum { YM2612 = 131, YM2612Extended = 160, DualPCMYM2612 = 190, DualPCMYM2612Extended = 189, SN76489 = 3, GameBoy = 4, PCEngine = 5, Ricoh2A03 = 6, VRC6 = 136, VRC7 = 157 } export interface FurnaceSystem { systemId: FurnaceSystemEnum; name: string; chips: FurnaceChip[]; } export interface FurnaceChip { chipId: FurnaceChipEnum; volume: number; panning: number; flags: number; channels: FurnaceChipChannel[]; } export declare type FurnaceChipChannel = { longname: string; shortname: string; }; export declare class FurnaceSystemSMS implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.SMS; readonly name = "SMS (SN76489)"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipSN76489 implements FurnaceChip { readonly chipId = FurnaceChipEnum.SN76489; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemGenesis implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.Genesis; readonly name = "Genesis"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceSystemYM2612 implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.YM2612; readonly name = "YM2612 alone"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipYM2612 implements FurnaceChip { readonly chipId = FurnaceChipEnum.YM2612; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemYM2612WithDualPCM implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.YM2612WithDualPCM; readonly name = "YM2612 With Dual PCM"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipYM2612WithDualPCM implements FurnaceChip { readonly chipId = FurnaceChipEnum.DualPCMYM2612; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemGenesisExtended implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.GenesisExtended; readonly name = "Genesis Extended"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceSystemYM2612Extended implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.YM2612Extended; readonly name = "YM2612 Extended"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipYM2612Extended implements FurnaceChip { readonly chipId = FurnaceChipEnum.DualPCMYM2612Extended; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemYM2612ExtendedWithDualPCM implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.YM2612ExtendedWithDualPCM; readonly name = "YM2612 Extended With Dual PCM and CSM"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipYM2612ExtendedWithDualPCM implements FurnaceChip { readonly chipId = FurnaceChipEnum.DualPCMYM2612Extended; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemGameBoy implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.GameBoy; readonly name = "Game Boy"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipGameBoy implements FurnaceChip { readonly chipId = FurnaceChipEnum.GameBoy; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemPCEngine implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.PCEngine; readonly name = "PC Engine"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipPCEngine implements FurnaceChip { readonly chipId = FurnaceChipEnum.PCEngine; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemNES implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.NES; readonly name = "NES"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipRicoh2A03 implements FurnaceChip { readonly chipId = FurnaceChipEnum.Ricoh2A03; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemNESVRC7 implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.NES; readonly name = "NES With Konami VRC7"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceSystemVRC6 implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.NES; readonly name = "Konami VRC6"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipVRC6 implements FurnaceChip { readonly chipId = FurnaceChipEnum.Ricoh2A03; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnaceSystemVRC7 implements FurnaceSystem { readonly systemId = FurnaceSystemEnum.NES; readonly name = "Konami VRC7"; readonly chips: FurnaceChip[]; constructor(); } export declare class FurnaceChipVRC7 implements FurnaceChip { readonly chipId = FurnaceChipEnum.Ricoh2A03; readonly channels: { longname: string; shortname: string; }[]; volume: number; panning: number; flags: number; } export declare class FurnacePattern { static readonly magic = "PATR"; name: string; rows: FurnaceRow[]; private constructor(); static create(rows: number, effects: number): FurnacePattern; static fromHelper(helper: BufferReadHelper, version: number): { pattern: FurnacePattern; channel: number; index: number; song: number; }; loadData(helper: BufferReadHelper, version: number, rows: number, effects: number): void; writeToBuffer(helper: BufferWriteHelper, version: number, channel: number, index: number, song: number): void; } export declare class FurnaceRow { note: null | { note: number; octave: number; }; instrument: number | null; volume: number | null; effects: FurnaceEffect[]; constructor(effects: number); fromHelper(helper: BufferReadHelper): void; writeToBuffer(helper: BufferWriteHelper): void; } export declare type FurnaceEffect = { id: number | null; value: number | null; }; export declare class FurnaceChannelInfo { longname: string; shortname: string; orders: number[]; patterns: (FurnacePattern | null)[]; effects: number; hidden: boolean; collapsed: boolean; constructor(); } export declare class FurnaceChannel { private channel; private info; private system; private chip; constructor(channel: FurnaceChipChannel, info: FurnaceChannelInfo, system: FurnaceSystem, chip: FurnaceChip); get parentSystem(): FurnaceSystem; get parentChip(): FurnaceChip; get longname(): string; set longname(name: string); get shortname(): string; set shortname(name: string); get defaultLongname(): string; get defaultShortname(): string; get activeLongname(): string; get activeShortname(): string; get collapsed(): boolean; get hidden(): boolean; get effectCount(): number; get orders(): number[]; get patterns(): (FurnacePattern | null)[]; makePartialCopy(): FurnaceChannel; create(channel: FurnaceChipChannel, info: FurnaceChannelInfo, system: FurnaceSystem, chip: FurnaceChip): FurnaceChannel; } export declare function computeChannelObjects(info: FurnaceInfo, channels: FurnaceChannelInfo[]): FurnaceChannel[]; export declare function computeChannelCount(info: FurnaceInfo): number; export declare class FurnaceSong { static readonly magic = "SONG"; private channels; channelInfo: FurnaceChannelInfo[]; name: string; comment: string; timebase: number; speed1: number; speed2: number; rows: number; initialArpeggioTime: number; ticksPerSecond: number; highlightA: number; highlightB: number; virtualTempoNumerator: number; virtualTempoDenominator: number; private constructor(); static create(): FurnaceSong; static fromHelper(helper: BufferReadHelper, info: FurnaceInfo, version: number): FurnaceSong; fetchChannels(helper: BufferReadHelper, version: number, channelCount: number, orderCount: number): void; writeToBuffer(helper: BufferWriteHelper): void; writeChannels(helper: BufferWriteHelper): void; getChannels(info: FurnaceInfo): FurnaceChannel[]; } export declare type FurnaceInfoMetadata = { songName: string; songAuthor: string; systemName: string; gameName: string; }; export declare class FurnaceInfo { static readonly magic = "INFO"; instruments: FurnaceInstrument[]; wavetables: FurnaceWavetable[]; samples: FurnaceSample[]; songs: FurnaceSong[]; systems: FurnaceSystem[]; flags: FurnaceFlags; A4Tuning: number; masterVolume: number; comment: string; metadata: FurnaceInfoMetadata; metadataJP: FurnaceInfoMetadata; private constructor(); static create(): FurnaceInfo; static fromHelper(helper: BufferReadHelper, version: number): FurnaceInfo; writeToBuffer(helper: BufferWriteHelper, version: number): void; } export declare type FurnaceFlags = { limitSlides?: boolean; pitchMode?: FurnacePitchMode; loopModality?: FurnaceLoopModality; properNoiseLayout?: boolean; waveDutyIsVolume?: boolean; resetMacroOnPorta?: boolean; legacyVolumeSlides?: boolean; compatibleArpeggio?: boolean; noteOffResetsSlides?: boolean; targetResetsSlides?: boolean; arpeggioInhibitsPortamento?: boolean; wackAlgorithmMacro?: boolean; brokenShortcutSlides?: boolean; ignoreDuplicateSlids?: boolean; stopPortamentoOnNoteOff?: boolean; continuousVibrato?: boolean; brokenDacMode?: boolean; oneTickCut?: boolean; instrumentChangeDuringPorta?: boolean; resetNoteBaseOnArpeggioEffectStop?: boolean; brokenSpeedSelection?: boolean; noSlideOnFirstTick?: boolean; nextRowResetArpPos?: boolean; ignoreJumpAtEnd?: boolean; buggyPortaAfterSlide?: boolean; newInsAffectsEnvelope?: boolean; extChStateIsShared?: boolean; ignoreDacOutsideOfCh?: boolean; E1xxE2xxPriorityOverSlide00?: boolean; newSegaPCM?: boolean; weirdFnumSlides?: boolean; SNDutyMacroAlwaysResetsPhase?: boolean; pitchMacroIsLinear?: boolean; pitchSlideSpeedInFullLinear?: number; oldFMOctaveBehavior?: boolean; disableDACVolume?: boolean; newVolumeScaling?: boolean; volumeMacroIsHeld?: boolean; brokenOutVol?: boolean; slideStopsOnRepeatedNote?: boolean; brokenPortaPositionAfterArp?: boolean; }; export declare enum FurnacePitchMode { nonLinear = 0, partialLinear = 1, fullLinear = 2 } export declare enum FurnaceLoopModality { item0 = 0, item1 = 1, item2 = 2 } export declare class FurnaceSongModule { static magic: string; private version; info: FurnaceInfo; meta: FurnaceMeta; private constructor(); static create(): FurnaceSongModule; static fromHelper(helper: BufferReadHelper): FurnaceSongModule; getAsBuffer(): Buffer; getVersion(): number; } export declare class FurnaceWavetableModule { static magic: string; private version; wavetables: FurnaceWavetable[]; meta: FurnaceMeta; private constructor(); static create(): FurnaceWavetableModule; static fromHelper(helper: BufferReadHelper): FurnaceWavetableModule; getAsBuffer(): Buffer; getVersion(): number; } export declare function deflateBuffer(data: Buffer): Promise<Buffer>; export declare function inflateBuffer(data: Buffer): Promise<Buffer>; export declare function loadFurnaceModule(data: Buffer, compressed?: boolean | undefined): Promise<FurnaceSongModule | FurnaceInstrumentModule | FurnaceWavetableModule>; export declare function getVersionString(version: number): string | undefined; export declare type EffectNameReturn = { minversion?: number; name?: string; format?: string; explanation?: string; parameters: { [key: string]: string; }[]; }; export declare function getEffectName(type: FurnaceSystemEnum, effect: number): EffectNameReturn; export {};