Cutting a 3-hour set into tracks where the crowd never stopped

这篇内容暂时只有 English 版本,以下是原文。

Last spring I recorded a three-hour warehouse set off a Soundcraft mixer’s USB out: 48 kHz, 24-bit, one unbroken 2.1 GB WAV. The DJ played mostly vinyl with long blends, so there were maybe six obvious gaps in the whole file, and every one of them sat under a wall of room noise. I wanted per-track files for a private archive, not for release, so a few seconds of overlap was fine — I just did not want to hand-cut 40 tracks.

The approach that worked: let the room noise be the detector. In a stationary crowd, the noise floor is roughly constant; when a track ends and the next has not fully arrived, the low-mid band (I used 150-400 Hz, where room rumble and crowd sit) relaxes toward that floor for a second or two. I ran a Python pass over 10-second windows, computed RMS in that band with ffmpeg’s astats, and marked any window more than 3 dB below a 60-second running median as a candidate gap.

ffmpeg -i set.wav -af "highpass=f=150,lowpass=f=400,astats=metadata=1:reset=600,ametadata=print:key=lavfi.astats.Overall.RMS_level:file=rms.txt" -f null -

That gave me 71 candidate windows. I then collapsed adjacent candidates within 12 seconds of each other, which cut it to 44, and manually listened to the 44 boundaries at -12 LUFS monitoring level. About 30 were real transitions; the rest were the DJ leaning into a filter sweep or a vocal drop-out. The 14 false positives cost me roughly 40 minutes of listening, which is still less than the four hours it would have taken to scrub the whole thing.

Why this instead of a beat tracker or a source separator? A beat tracker gives you tempo continuity, and in a set that never stops, tempo is continuous even across tracks — it tells you nothing about where one record ends. Separation gives you stems, but the crowd is baked into every stem. The noise-floor dip is a physical signature of the room, not a musical one, which is exactly why it survives across genres and why it fails in the same places a human ear would: if the DJ crossfades with zero gap, there is no dip to find. I had two of those, both into a locked groove, and I found them only by checking the tracklist against elapsed time.

Where it breaks: a crowd that cheers louder during the transition (a big intro) pushes the band up, not down, and you get a missed cut rather than a false one. Quieter sets — ambient, a listening bar — have less room noise to measure against, and the 3 dB threshold becomes noise. I also would not trust this on anything recorded from a phone in a pocket; the AGC alone will erase the dip.

The part I am still unsure about: my 3 dB threshold was tuned on one room, one night. If you have cut live sets this way, what band and threshold did you land on, and did you ever find a gap in a mix that genuinely had none?

0
赞同度 100% · 0 条评论 · 5 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。