Band Practice 9-11 Runbook

The steps and skills that produced the 8-28 deliverable, mapped onto the new 9.11.26 tapes · assembled 2026-09-13

The new project is five microphone tapes of one 4-hour practice, and 8-28 was four. Same shape, same chain, one new variable. The pipeline is three skills in a fixed order, and the 8-28 run added seventeen local scripts plus four retuned gates on top of them.

SOURCEWhat is on the Black drive

All five files measured directly with soundfile.info. Durations agree within 1.5 s across the set, which is what makes them simultaneous mic captures of one take rather than five separate recordings.

File in /Volumes/Black/Downloads/DurationLengthRateChFormatSize
9.11.26 - 9_11_26, 10.42 PM-005.wav14728.5 s4h 05m441002PCM_243.90 GB
9.11.26 - 9_11_26, 11.02 PM-002.wav14728.5 s4h 05m441002PCM_243.90 GB
9.11.26 - 9_11_26, 11.06 PM-004.wav14727.0 s4h 05m441002PCM_243.90 GB
9.11.26 - 9_11_26, 11.14 PM-001.wav14727.0 s4h 05m441002PCM_243.90 GB
9.11.26 - 9_11_26, 11.17 PM-003.wav14728.5 s4h 05m441002PCM_243.90 GB
 8-28 run9-11 runConsequence
Mic tapes45Every best-mic-per-lane test has five candidates
Tape length18,745.374 s (5h 12m)14,727 to 14,728.5 s (4h 05m)Shorter map, likely fewer songs than twelve
Rate / depth44100, 2ch, PCM_2444100, 2ch, PCM_24Identical, cut settings carry over
Per-file size4.96 GB3.90 GB19.5 GB total input
Master location/Volumes/Black/Downloads//Volumes/Black/Downloads/Same drive, already found

The 8-28 master is 8.28.26 - 9_1_26, 4.53 PM.wav, 4,960,025,948 bytes, 18745.374 s, in that same folder. Its provenance record reads 13 of 13 bit-exact across all four mics.

SKILLSThe three-skill chain, in order

/jam-stem-rebuild
One long tape becomes verified, synchronized, provenance-tracked stem packages. Source verify, drum-aware song map, lossless cuts, Demucs, DrumSep.
→
/composite-stem-alignment
Several mics of the same take become one composite. Per-mic delay, polarity, best mic per lane, the drum lane reality gate, keep-or-drop tie-breaks.
→
/multimic-stem-fix
The five corrections that burned whole sessions. Zero-offset lock, cut aborted takes, best mic by content, restore cymbal air, boundary fades.

Two further skills are in reach for the tail end: /stems-to-guitar-pro-drums if the drums are going to notation, and /five-stem-song-analyst for per-song analysis. Neither ran on 8-28.

STEPSThe seven, hard-ordered, from jam-stem-rebuild

The skill states these are not to be reordered. Quoted from its own SKILL.md.

1

Pull and verify the source master first

No Demucs, DrumSep, or enhancement until verification passes. Record all 13 manifest fields. On 8-28 this step is exactly where the session broke down: the mic3 master was called "not obtainable" after searching Drive, the T7, and the boot volume, never /Volumes/Black. Brandon supplied the path. All five 9-11 tapes are already located and measured above.

2

New production root, separate from any prior run

Prior outputs get labelled PRIOR_RUN_REFERENCE with symlinks and a note. Never deleted, never used as inputs. Suggested root: ~/Projects/_outputs/band-practice-9-11/.

3

Drum-aware song map of the whole recording

Never trust an old map. A volume-drop cull of a near-continuous jam misses the drum-driven performances, because there are almost no silences to split on. Map the kick-band periodic pulse directly.

4

Lossless cuts at source rate and channels

Boundaries snapped to quiet valleys. Keep count-ins, lead-in, and decay. Never clip a transient.

5

Demucs serially

htdemucs_6s, producing bass, guitar, drums, other, vocals, piano.

6

DrumSep serially on each Demucs drums.wav

MDX23C, producing kick, snare, toms, hh, cymbals. Demucs first is the rule, since DrumSep partitions 100% of its input into six drum classes and has no not-a-drum output.

7

Synchronized package per song

bass, guitar, kick, snare, toms, hihat (renamed from hh), cymbals. Frame-matched, time-zero, provenance table written.

CORRECTIONSThe five lessons from multimic-stem-fix

  1. Zero-offset, sample-locked mics. Mics recorded on one interface have a true inter-mic delay of 0 samples. composite-stem-alignment's source_align computed spurious offsets and applied them, pushing guitar 2.24 ms and bass 5.1 ms out of sync with the drums. Measure the real delay first with GCC-PHAT on the raw cuts, 40 to 2000 Hz, at three points. Within about 10 samples of 0 means sample-locked, so use offset 0.
  2. Cut the aborted takes. Band practice is mostly start-stop false starts around one real sustained take. Detect with kick plus snare windowed peak, 1 s windows at -32 dBFS. Keep runs of 5 s or more, merge gaps under 3 s, take the largest.
  3. Best mic per lane by real content, never a fixed default. Drum mic is the loudest kick and snare. Bass is the loudest Demucs bass stem, and it differed between perf08 and perf09, so it must be measured every time. Picking a default is how the bass got lost at -37 dBFS when another mic held it at -21.
  4. Restore cymbal and hihat top-end. MDX23C strips 8 to 11 dB of 6 to 16 kHz air. Blend the highpassed full Demucs drums stem into hihat (HP 6 kHz, gain 1.0) and cymbals (HP 4 kHz, gain 0.7). That adds real signal rather than boosting noise.
  5. Boundary fades kill the pop. A hard cut clicks on sustained lanes. Apply about 8 ms fade in and out on every lane at the keep-window edges.

GATESFour thresholds the 8-28 run had to retune

Each of these started as a number chosen by reasoning and was replaced by one measured from the corpus. Carry the corrected values into 9-11 rather than rediscovering them.

GateWasNowWhat the measurement showed
Reality gate, cymbal presence0.5% fraction arm-66 dBFS absolutemic1 is 83-98% below 250 Hz, so real cymbals are a tiny share of total energy. The fraction arm failed by 3.8x to 50x on all six songs and would have called present cymbals absent. Now an 8th-order Butterworth bandpass on absolute band level, fraction demoted to advisory.
LANE_PERC_MIN0.060.15Measured over 45 lanes: real lanes sit at 0.262 and above, the two bleed lanes at 0.044 and 0.064. A 4x gap, and 0.15 sits inside it. Re-run across all 45 lanes it moves exactly those two.
Drum gate, onsets per secondpercussive fraction2.0 onsets/sSongs that built a kit ran 2.7 to 3.98 onsets/s, songs refused ran 1.33 to 1.93. The 2.0 floor sits in the empty gap. Percussive fraction ranks them backwards, since the two highest inputs were both refusals.
GATE A room-mic guardabsentlevel splitGuitar mics someone played measure -10.1 to -28.7 dBFS, room mics -30.5 to -38.4 dBFS. A 1.8 dB gap, no overlap. Without the guard a room mic scored as high-polyphony, which reads exactly like a rhythm player, and song20 was refused at guitar_corr 0.455 when the played guitar read 0.011.
Built, tested, rejected: bleed cancellation. A Stage 3.5 multichannel Wiener cancel exists in rebuild_kit_demucs_first.py behind --bleed-cancel, default OFF. On song12 it removed 34.3% of the energy and dropped percussive content 0.778 to 0.560 while guitar correlation stayed flat at 0.033 to 0.042. The adopt-guard refused it, as designed. The reason it cannot work: the Demucs stem is already clean at 0.021 to 0.058 guitar, so the contamination is created by the partition, and there is no linear copy of the guitar mic left to subtract. Do not spend the session re-deriving this.
The registration offset, already solved. Cuts land on a rigid grid: start = take_id - 0.0697 - 0.5 = take_id - 0.5697. Proven bit-exact on six takes, and agreeing with the audit page derivation to 0.3 ms. The 0.0697 s component is the phone-clock correction and the 0.5 s component is pre-roll. This applies to the 8-28 tape and should be re-derived, not assumed, for 9-11.

SCRIPTSThe seventeen local scripts, in the order they ran

All in ~/Projects/_outputs/band-practice-8-28-drumsep-redo/. Purposes are each script's own docstring first line.

DateScriptPurpose
Sep 4bleed_probe.pyMeasure guitar bleed inside drumsep output lanes.
Sep 5verify_cut_against_master.pyProve or disprove that a per-song mic cut is a bit-exact slice of the master.
Sep 5build_deliverable.pyBuild the deliverable: labelled lossless WAV, one folder per song.
Sep 7label_guitar_roles.pyDecide which guitar mic is LEAD and which is RHYTHM, per song, from measurement.
Sep 7relabel_10_15.pyRe-label the songs 10-15 guitar files from the reproducible measurement.
Sep 7repair_guitar_labels.pyRe-derive every guitar and room file for songs 10-15 from the T7 verbatim cuts.
Sep 7verify_deliverable.pyVerify every verbatim file against the 4.97 GB master.
Sep 7build_deliverable_17_22.pyFold the takes 17-22 drum lanes and measured guitar roles into the deliverable.
Sep 7complete_deliverable.pyGive every song the same four verbatim microphones.
Sep 7mic_independence.pyIs this microphone carrying a source of its own, or a mixture of the others?
Sep 7all_mic_correlations.pyEnvelope correlation against the drum mic for EVERY mic instance, played or not.
Sep 7mic_band_profile.pyBand-energy profile of every played mic, to ask what INSTRUMENT is on it.
Sep 7onset_lock.pyThird vote on lead vs rhythm: which guitar locks to the drummer?
Sep 7lane_source_test.pyFor a marginal drum lane: does it track the DRUM mic or the GUITAR mic?
Sep 11fix_kick_bleed.pyStrip sustained bleed out of the DrumSep kick lanes.
Sep 11fix_lane_sustain.pyStrip sustained bleed from snare and tom lanes.
Sep 11repoint_als_kicks.pyPoint Live sessions at the FIXED kick lanes.

fix_kick_bleed.py and fix_lane_sustain.py were promoted into ~/.claude/skills/composite-stem-alignment/scripts/, so they are part of the skill now rather than local one-offs.

OUTPUTWhat 8-28 actually produced

Twelve songs resolved, four output generations. The folder tree records the sequence.

FolderDatedWhat it holds
DELIVERABLE-8-28/Sep 11Twelve song folders, songs 10-22. The shipped set.
KICK-FIXED-2026-09-11/Sep 11 14:14Nine songs, first kick de-bleed pass.
KICK-FIXED-V2-2026-09-11/Sep 11 15:50Twelve songs, second kick pass after the HPSS gate revision.
LANE-FIXED-2026-09-11/Sep 11 16:33Snare and tom sustain stripped.

Verdict spread across the twelve: four PASS, five REVIEW_REQUIRED, two STOPPED_AT_GATE_A, one QUIET_KIT. Provenance closed at 38 of 38 verbatim files bit-exact against the master. Full detail in RESULTS-all-songs.md and CLOSED-2026-09-05.md in the same folder.

CARRYWhat changes for 9-11

  1. Five mics, not four. Every best-mic-per-lane test, every correlation matrix, and the room-mic guard all run across five candidates. The 8-28 room-mic level split (-30.5 to -38.4 dBFS room, -10.1 to -28.7 dBFS played) is a starting hypothesis for 9-11, and it has to be re-measured on this roster rather than assumed.
  2. The mic roster is unknown. On 8-28 it was three players on rotating instruments. Run mic_band_profile.py and mic_independence.py before labelling anything, since the 8-28 session lost time to a room mic that read as a rhythm guitarist.
  3. No lead versus rhythm call unless it is earned. All six two-guitar songs on 8-28 shipped as guitar-A and guitar-B, because the scorer never produced a defensible margin. Expect the same outcome and do not force a label.
  4. Verify the master before any separation. This is step 1 and it is the step that cost the 8-28 session the most. All five files are located and measured, so record the 13-field manifest and move.