@rgrvmusic/libmad
v0.1.2
Published
libmad (multi-format DAW/tracker converter) compiled to WebAssembly — MED/MMD import, notes+Simpler export, and clip block-render.
Maintainers
Readme
@rgrvmusic/libmad
libmad (multi-format DAW/tracker conversion library) compiled to WebAssembly. Imports MED (MMD0/MMD1), MMD (MMD2/MMD3) and MOD tracker files, exposes the intermediate representation (IR) as JSON, extracts each instrument's PCM as a WAV, and block-renders a clip region to audio, for the "effects Ableton can't do" path (sample offsets, synth patches, vibrato/portamento).
Used by:
- the
madimpcommand-line test app, and - the MED/MMD Ableton extension webview.
Install
npm install @rgrvmusic/libmadAPI
import {
loadFile, getIrJson, extractSampleWav, renderClip, detectFormat,
} from "@rgrvmusic/libmad";
import { readFileSync } from "node:fs";
const bytes = new Uint8Array(readFileSync("song.mmd"));
await loadFile(bytes); // detect + import
const ir = await getIrJson(); // full IR as JSON
console.log(ir.name, ir.tempo, ir.instruments.length);
for (let i = 0; i < ir.instruments.length; i++) {
const wav = await extractSampleWav(i); // RIFF/WAV or null
if (wav) writeFileSync(`sample_${i}.wav`, wav);
}
const clip = await renderClip({ // block render, whole song
fromOrder: 0, fromRow: 0, sampleRate: 44100,
});
writeFileSync("clip.wav", clip);CLI test app (madimp)
madimp info song.mmd # IR as JSON
madimp extract song.mmd --out dir/ # per-instrument WAVs + notes.json
madimp render song.mmd --from 0:0 --to 2:63 --rate 44100 --out clip.wav