Last spring I recorded a four-piece improv night at a 120-cap room: 11 songs, 74 minutes, captured as a single 24-bit/48k stereo board feed plus two room mics into a Zoom F6. I wanted per-song stems for the band’s archive, and I wanted the room sound to survive the split. Naive silence detection gave me 11 cuts, but three of them landed inside a cymbal decay and one split the bassist’s looping pedal. Here is what actually worked.
First I rendered a mono-sum analysis file at 44.1k, because the F6 files were 48k and my old laptop choked on resampling 74 minutes on the fly:
ffmpeg -i set_master.wav -ac 1 -ar 44100 -sample_fmt s16 analysis.wav
Then I used aubio to get onset candidates, but I did not trust its threshold. I printed the onsets with timestamps and listened to each one against the waveform in Ardour:
aubio onset -i analysis.wav -O complex -t 0.7 -m 0.05
The -t 0.7 and -m 0.05 values came from a single rehearsal file, so treat them as a starting point, not a recipe. I dropped any candidate that had less than 1.8 seconds of low energy after it; that killed the cymbal false positives. For the loop-pedal song I cut by hand at the downbeat, not at the first transient.
For the actual split I used ffmpeg’s segment muxer on the original 48k file, with the cut points shifted 40ms earlier so the attack stayed in the new file:
ffmpeg -i set_master.wav -f segment -segment_times 212.4,398.1,511.7 -c copy song_%02d.wav
Why this order: onset detection on a mono 44.1k file is fast and cheap, but the cut always happens on the untouched 48k master. The cost is that every timestamp needs manual review; I spent about 25 minutes on 11 songs, and two of those minutes were fixing one bad cymbal cut. If I had used a silence-based tool I would have saved 15 minutes and shipped a broken archive.
Where this fails: songs that start with a held pad or a spoken intro have no clean onset, and aubio will either miss them or fire on the first word. I have also had the segment muxer produce a 0-byte final file when the last segment time was within 100ms of the file end, so I always trim the last segment by hand. And if the board feed and room mics drift, cutting the board feed alone will slide against the room tracks by the end of a long set; I did not hit that here because the F6 clocked both pairs, but I would not assume it on a two-recorder setup.
The part I am still unsure about: I kept the room mics in the same files as the board feed, so every song stem is really a two-track pair. The band liked it, but it makes later remixing awkward. Do you split room and board into separate files per song, or keep them paired and accept the heavier archive?


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