scripts/xa-mel.js — Slaney mel filterbank triangles

First 12 slaney-normalized triangles of filters.mel_filterbank(22050, 2048, 40) (re-exported from scripts/xa-mel.js) plotted over a Hz axis — the mel-filterbank classic. Proofs: the Slaney boundary identities hz_to_mel(1000)=15 and mel_to_hz(15)=1000 (float-exact: ≤1e-9; the raw float64 value is 15 − 1.8e-15 from 200/3 roundoff), filterbank shape 40 × 1025, every filter elementwise-matches an independent Slaney-formula reconstruction (mel grid rebuilt via xa-convert's separate hz_to_mel/mel_to_hz implementation) within 1e-6, and each triangle's peak equals the Slaney area norm 2/(mel_f[i+2]−mel_f[i]): never above it, and within the provable half-FFT-bin sampling bound below it (the continuous apex falls between FFT bins, so a "peak == enorm within 1e-6" literal read is impossible on the sampled grid — measured misses run up to 6%, exactly the bin-quantization bound predicts).