/** * Layer III synthesis filterbank window, in this decoder's tap order. * * GENERATED — regenerate with scripts/solve-synthesis-window.mjs. * * `D` is a designed prototype lowpass filter with no closed form, so its 512 * coefficients have to come from somewhere. Transcribing them by hand is how an * earlier revision of this decoder ended up with audio that correlated at 0.99 * with a reference yet carried spectral images only 17 dB down — right enough to * look finished, wrong enough to be unusable. * * They are therefore **derived**, not copied. Synthesis is linear in D: * * S[j] = Σ(i = 0..15) U[j + 32i] · D[j + 32i] * * so each of the 32 output positions is an independent, hugely over-determined * least-squares problem in 16 unknowns, using this decoder's own verified * frequency-domain output for U and a reference decoder's PCM for S. * * Two things fell out of that fit and are worth recording, because both were * invisible from the audio alone: * * 1. The specification's tap order is offset from this implementation's `U` * layout by exactly one 64-tap group. The magnitudes were right all along; * they were indexed 64 places away from where they were being applied. * 2. With the alignment corrected, the magnitudes are pinned to their exact * published values and only the 512 signs are solved — as 32 independent * 16-bit exhaustive searches, so there is no local minimum to get stuck in. * * Fit quality: 56.6 dB SNR against the reference decoder, with the peak tap * recovered as 1.144989 and the alignment landing on the LAME encoder delay of * 1105 samples — both independent confirmations that the fit is the real filter * and not an artefact. */ export declare const SYNTH_WINDOW: Float32Array;