UNPKG

furnace-module-interface

Version:

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

46 lines (45 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FurnaceWavetableModule = void 0; const bufferHelper_1 = require("./bufferHelper"); const defaults_1 = require("./defaults"); const meta_1 = require("./meta"); const wavetable_1 = require("./wavetable"); class FurnaceWavetableModule { constructor() { this.version = defaults_1.defaults.version; this.wavetables = [wavetable_1.FurnaceWavetable.create(),]; this.meta = meta_1.FurnaceMeta.create(); } static create() { return new FurnaceWavetableModule(); } static fromHelper(helper) { const mod = FurnaceWavetableModule.create(); if (FurnaceWavetableModule.magic !== helper.getASCII(16)) { throw new Error("Expected format magic string \"" + FurnaceWavetableModule.magic + "\" when loading a wavetable module."); } mod.version = helper.readUInt16LE(); helper.skipBytes(2); mod.wavetables = [wavetable_1.FurnaceWavetable.fromHelper(helper),]; mod.meta = meta_1.FurnaceMeta.checkFromHelper(helper); return mod; } getAsBuffer() { const helper = new bufferHelper_1.BufferWriteHelper(); helper.writeString(FurnaceWavetableModule.magic, "ascii", false); helper.writeUInt16LE(this.version); helper.skipBytes(2); if (this.wavetables.length !== 1) { throw new Error("Expected wavetable module to contain 1 wavetable, but it contains " + this.wavetables.length + "!"); } this.wavetables[0].writeToBuffer(helper); this.meta.writeToBuffer(helper); return helper.getTrimmedBuffer(); } getVersion() { return this.version; } } exports.FurnaceWavetableModule = FurnaceWavetableModule; FurnaceWavetableModule.magic = "-Furnace waveta-";