audio-core | Normalize pydub samples before converting to floats | Fallback returns PCM-scale values (e.g. 32767) instead of [-1, 1] when librosa fails to decode, making normalization unreachable |
audio-core | Handle nonpositive tempos before octave folding | adjust_bpm_octave guards only bpm_min/bpm_max, never tempo, so a zero tempo makes while tempo < bpm_min: tempo *= 2 spin forever — a hang detect_bpm’s try/except cannot catch, not a raised math error. Observed live 2026-08-20: librosa.beat.beat_track returns tempo 0.0 for the pure 440 Hz sine fixture, so tests/test_audio_core.py::TestFeatures::test_detect_bpm never terminates and any pytest run that selects slow hangs on it; the other six TestFeatures tests pass in about 8 s each |
hitscan | Pass an onset-strength envelope to beat tracking | librosa.beat.beat_track should receive an explicitly computed onset-strength envelope |
hitscan | Construct cached report results with the declared field | Cached report results are currently built from mismatched fields |
hitscan | Ship and resolve the HTML report template | compile_report fails to resolve or ship the template |
hitvid | Read metadata from the relocated upload path | The job moves the file, then reads audio metadata from the old path |
hitvid | Pass the generated placeholder artwork to the encoder | Placeholder art is generated when album artwork is missing but never reaches the video encoder |
dj-engine | Align delay configuration fields with the delay callable | Config-model delay fields do not map to the arguments the delay effect callable expects |
dj-engine | Read the delayed sample instead of the current sample | Delay logic processes the current sample rather than fetching from the delay buffer |
dj-engine | Forward parametric EQ arguments by name | The AudioSegment branch calls parametric_eq(y, bands, sr) positionally, binding bands into the sample_rate slot and sr into center_freq; the fabricated zero-gain band is then skipped, so the branch is a silent no-op that discards every configured band — a genuine mismatch, not merely brittle style |
dj-engine | Reject zero tempo in the octave candidate loop | _adjust_bpm_octave guards only the range bounds, so a tempo of 0 makes the while t < bpm_max * 4: t *= 2 candidate loop spin forever — an uncatchable hang rather than a caught beat-matching failure |