Pure MoonBit MPEG-1 Layer III encoder: 44.1 kHz mono/stereo, 128 kbps CBR, polyphase filterbank and MDCT, scalefactor bands, Huffman coding, zero FFI; 27.6-32.7 dB SNR on synthetic probes.
状态:阶段 2 收口。帧头、边信息、CBR 帧尺寸控制、多相分析滤波器组、长/短块 MDCT 与窗切换、big_values + count1 Huffman、global_gain 搜索、21 个长块 scalefactor band、瞬态短块切换与近满幅 headroom 都已就绪。分析层是已验证解码器链的逆(无量化闭环白噪声 84.44 dB),全频段端到端 SNR 27.6–32.7 dB(440 Hz 29.3 dB),同码率对比 LAME 128 kbps 在正弦/多音/扫频/白噪声四个探针上优于 LAME,满幅探针因保留约 1 dB 防削顶余量低于 LAME(17.9 vs 26.0 dB,归一到同一电平后 28.92 dB 高于 LAME);详见 docs/stage2-progress.md。
moon add Sakuraqwq1/moonmp3-encoder// 交织的有符号 16-bit PCM
let samples : Array[Int32] = [0, 0, 100, -100]
let mp3 : Bytes = @moonmp3_encoder.encode(samples, 44100, 2)当前是阶段 2 的收口状态:稳态音调主频偏差 ≤0.12 Hz、整段 SNR 27.6–32.7 dB;正弦/多音/扫频/白噪声四个探针优于同码率 LAME;满幅探针因保留约 1 dB 防削顶余量低于 LAME(17.9 vs 26.0 dB),归一到同一电平后 28.92 dB 高于 LAME;已接入 scalefactor band、位保留区和瞬态短块切换,输入峰值 50–100 % 时解码峰值全部严格保持在 ≤1.00 以内(代价是满幅输出电平低约 1.2 dB)。白噪声这类平坦信号约 13 dB,属 128 kbps 单声道下量化格点的固有边界,不是结构缺陷。
| 探针 | 本编码器 | LAME 128k | 差异 | 说明 |
|---|---|---|---|---|
| 440 Hz 正弦 | 28.30 dB | 26.03 dB | +2.27 dB | 优于 LAME |
| multitone | 27.77 dB | 26.01 dB | +1.76 dB | 优于 LAME |
| 扫频 | 28.34 dB | 26.00 dB | +2.34 dB | 优于 LAME |
| 白噪声 | 13.51 dB | 8.49 dB | +5.02 dB | 优于 LAME |
| 满幅 99 % 正弦 | 17.92 dB | 26.02 dB | -8.10 dB | 防削顶余量(归一化后 28.92 dB 高于 LAME) |
复现工具:python tools/lame_ref.py(支持 --json)。
python tools/gen_fixtures.py --quiet
python tools/selftest.py
python tools/verify.py structurefn version() -> StringInstall
Download zipPure MoonBit MPEG-1 Layer III encoder: 44.1 kHz mono/stereo, 128 kbps CBR, polyphase filterbank and MDCT, scalefactor bands, Huffman coding, zero FFI; 27.6-32.7 dB SNR on synthetic probes.