UNPKG

read-wasm-sf2

Version:

ports some parts of https://github.com/schellingb/TinySoundFont to wasm.

32 lines (28 loc) 971 B
const Module = require("./readnode.js"); let api; module.exports = class SFReader { constructor(filename = "./file.sf2") { } async init() { await new Promise(resolve => { Module.addOnInit(resolve); }) const ff = require('fs').readFileSync("./file.sf2"); const p = Module._malloc(ff.byteLength); Module.HEAP8.set(ff, p); Module._read_sf(p, ff.byteLength); this.api = { loadSound: Module.cwrap("load_sound", '', ['number', 'number', 'number', 'number', 'number']), ...Module } return this; } loadSound(presetId, midi, velocity, duration) { const n = 48000 * duration; const ptr = Module._malloc(n); api.loadSound(ptr, presetId, midi, velocity, n); //._load_sound(ptr, presetId, midi, velocity, n); const r = new Float32Array(Module.HEAPF32.buffer, ptr, n); Module._free(ptr); return r; } }