UNPKG

spessasynth_core

Version:

MIDI and SoundFont2/DLS library with no compromises

25 lines (24 loc) 1.01 kB
import { readLittleEndian, signedInt16 } from "../../utils/byte_functions/little_endian.js"; import { DecodedModulator, Modulator } from "../basic_soundfont/modulator.js"; /** * Reads the modulator read * @param modulatorChunk {RiffChunk} * @returns {Modulator[]} */ export function readModulators(modulatorChunk) { let mods = []; while (modulatorChunk.chunkData.length > modulatorChunk.chunkData.currentIndex) { const dataArray = modulatorChunk.chunkData; const sourceEnum = readLittleEndian(dataArray, 2); const destination = readLittleEndian(dataArray, 2); const amount = signedInt16(dataArray[dataArray.currentIndex++], dataArray[dataArray.currentIndex++]); const secondarySourceEnum = readLittleEndian(dataArray, 2); const transformType = readLittleEndian(dataArray, 2); mods.push(new DecodedModulator(sourceEnum, secondarySourceEnum, destination, amount, transformType)); } // remove terminal mods.pop(); return mods; }