UNPKG

furnace-module-interface

Version:

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

43 lines (42 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FurnaceWavetable = void 0; const defaults_1 = require("./defaults"); class FurnaceWavetable { constructor() { this.name = defaults_1.defaults.wavetableName; this.data = new Int32Array(0); this.min = defaults_1.defaults.wavetableMin; this.max = defaults_1.defaults.wavetableMax; } static create() { return new FurnaceWavetable(); } static fromHelper(helper) { const mod = FurnaceWavetable.create(); if (FurnaceWavetable.magic !== helper.getASCII(4)) { throw new Error("Expected format magic string \"" + FurnaceWavetable.magic + "\" when loading a wavetable block."); } helper.skipBytes(4); mod.name = helper.readString("utf-8"); const length = helper.readUInt32LE(); mod.min = helper.readUInt32LE(); mod.max = helper.readUInt32LE(); const buf = helper.readBuffer(length * 4); mod.data = Int32Array.from(buf); return mod; } writeToBuffer(helper) { const _begin = helper.getPosition(8); helper.writeString(FurnaceWavetable.magic, "ascii", false); helper.skipBytes(4); helper.writeString(this.name, "utf-8", true); helper.writeUInt32LE(this.data.length); helper.writeUInt32LE(this.min); helper.writeUInt32LE(this.max); helper.writeBuffer(Buffer.from(this.data), 0, this.data.length * 4); helper.writeUInt32LE(helper.getPosition() - _begin, _begin - 4); } } exports.FurnaceWavetable = FurnaceWavetable; FurnaceWavetable.magic = "WAVE";