From a94ec07cdaa53c0b11aa1610d40dd1a96efc0e39 Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 2 Mar 2026 01:40:38 +0100 Subject: feat(audio): MP3 asset support in tracker via decode-at-init Detect MP3 blobs by magic bytes in tracker_init(), decode to spectrogram (hamming window + FDCT) using new mp3_decode(), and register with synth exactly like .spec assets. STRIP_ALL builds guard with FATAL_CHECK. handoff(Gemini): MP3 assets now usable in music.track with SAMPLE ASSET_* syntax; see doc/TRACKER.md for usage. No synth/compiler/packer changes. Co-Authored-By: Claude Sonnet 4.6 --- src/audio/mp3_sample.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/audio/mp3_sample.cc') diff --git a/src/audio/mp3_sample.cc b/src/audio/mp3_sample.cc index 2036acd..028fbff 100644 --- a/src/audio/mp3_sample.cc +++ b/src/audio/mp3_sample.cc @@ -37,6 +37,13 @@ int mp3_decode_range(Mp3Decoder* dec, int start_frame, int num_frames, return (int)frames_read; } +int mp3_decode(Mp3Decoder* dec, int num_frames, float* out) { + ma_uint64 frames_read = 0; + ma_decoder_read_pcm_frames(&dec->dec, out, (ma_uint64)num_frames, + &frames_read); + return (int)frames_read; +} + void mp3_close(Mp3Decoder* dec) { if (!dec) return; ma_decoder_uninit(&dec->dec); -- cgit v1.2.3