- server: collapse leading slashes so //host/x is never proxied off-host
or redirected cross-origin; 1 MB body limit; max 10k anchors; a corrupt
alignment.json no longer 500s /api/songs (song falls back to auto with
a warning); comments on cookie scope and the loopback inner server
- warp (ruling A6): adding/moving a manual anchor removes autos only
within 10 s (MIDI) of the new/old position, never past a manual, plus
any auto that would break audio monotonicity
- page: first anchor clamped at >= 0 s; ruler scrubbing seeks on release;
wording for the new auto-removal rule; removed-count excludes the
dragged anchor; shows server warnings
- manifest: unique tmp name for alignment.json; clear error for a
corrupt file
- resample test: speed asserted as a ratio to the direct path
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2:1 decimation (44.1k -> 22.05k, used to render the warped MIDI for the
alignment page) recomputed 65 windowed-sinc taps per output sample: ~17 s
for a 4.7 min stereo render. Outputs at integer input positions now reuse
one tap table; arithmetic is identical, so results are bit-identical.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Radix-2 FFT and torch-compatible stft/istft (hann, center, reflect,
normalized). HTDemucs-6s ONNX separator mirroring demucs apply_model:
whole-mix normalisation, 343980-sample centred segments, 25% overlap
with triangular weights, _spec/_ispec around the graph, spectral +
time branch sum. Brief's guitar/bass > 3 dB criterion is unmet by the
model on t1b/1 and is kept as test.failing pending a ruling.
Co-Authored-By: Claude Opus 5.5 <[email protected]>