Think of the song as a line of kids marching in step. Each instrument is one kid, and they all have to start on the same footstep or the march looks messy.
The guitar files were saved in a squished format called MP3. When you squish sound that way, it quietly glues a tiny bit of silence to the front, like the kid tying his shoe before he starts. So the guitar started a hair late and never caught up.
Two of the guitar files were squished even smaller, so their silence at the front was twice as long. Those two started even later than the rest.
We also found that "guitar left" was just the left speaker side of the guitars. Both guitars were playing on both sides, so you still heard two.
The fix: we un-squished every track back to full quality, cut off the glued-on silence, and made every file the exact same length. Now all the kids start on the same footstep. Drop them into the music program lined up at the start with stretching turned off, and they march together the whole way.
Why guitar and guitar-left hold two guitars and drift in Ableton, how the stems were actually made, and a rebuilt sample-locked WAV set.
Forensics from the file headers and from least-squares fitting one stem against the others. The six base stems were made together on Jun 28; the four guitar variants are two undocumented later passes on Jun 29 (not mentioned in the original report.md).
| File | Rate | Ch | Front-delay | What it really is |
|---|---|---|---|---|
bass drums vocals other piano guitar | 44.1k | mono | 25 ms | Demucs htdemucs_6s, one pass. The 6s model has a single guitar model, so guitar = every guitar mixed together. (piano/other are dead bleed per the prior report.) |
guitar-left / guitar-right | 44.1k | mono | 25 ms | The left and right channels of the stereo guitar stem, saved as two mono files. Proof: guitar ≈ 0.706·left + 0.707·right (residual 3.5%); 0.71 is 1/√2, the power-preserving downmix. So guitar.mp3 is just their mono sum. |
guitar-lead / guitar-other | 22.05k | mono | 50 ms | A rougher second 2-way split of the guitar stem, dumped at half sample rate. guitar ≈ 0.68·lead + 0.66·other (residual 8.9%), and lead correlates 0.92 with the whole guitar, so "lead" is basically the entire guitar over again, only downsampled. |
guitar and guitar-left both hold two guitarsTwo separate reasons, and neither is a bug in the file:
guitar: htdemucs_6s only ever produces one guitar stem, so both the rhythm and lead parts end up inside it by design. No 6-stem model separates guitar 1 from guitar 2.guitar-left is the left stereo channel, and both guitar parts play into it. The two channels correlate 0.70, which means the two guitar parts are not hard-panned, so both are present in both channels. Splitting by channel only separates performances that are panned hard apart, and these are not, so you still hear two.guitar-LEAD-split.wav and guitar-RHYTHM-split.wav. The LEAD output's loudness tracks the Lead part at r=0.68 and anti-tracks Rhythm; the two outputs correlate 0.30, where the old left/right labels were 0.70. Same-timbre guitars overlap, so expect some bleed, but energy is assigned by which part is playing rather than by channel. Playable on the tab player. A cleaner isolation would need the original multitrack, which is not on disk.guitar-lead and guitar-other start a full 25 ms behind the rest, an audible flam..asd analysis files next to each MP3 prove Ableton warp-analyzed them on import. With Warp on, Ableton time-stretches each stem independently from its own transients, so guitar and drums drift apart even when the files are the same length.Every stem re-decoded to 44.1 kHz / 24-bit mono WAV, encoder-delay stripped, all padded to the exact same length. Measured after rebuild: all twelve files are 12,134,016 samples (275.148 s) and the guitar family cross-correlates at +0 samples / 0.00 ms.
| WAV file | Keep? | Use |
|---|---|---|
drums bass vocals other guitar piano .wav | KEEP | The real stem set. Drop all six as your session. |
3gene_mix_reconstructed.wav | KEEP | Sum of the six base stems, drop this first as your alignment anchor / reference mix. |
guitar-LEAD-split.wav / guitar-RHYTHM-split.wav | KEEP | The real two-guitar split (score-informed Wiener mask from the transcription). LEAD tracks its part r=0.68; the pair correlates 0.30, where left/right were 0.70. |
guitar-side.wav | OPTIONAL | The panned difference (L−R). A spatial width lever. For the part split use the LEAD/RHYTHM files above. |
guitar-left.wav / guitar-right.wav | OPTIONAL | The stereo channels, now aligned. Good for stereo width. They will not isolate one guitar. |
guitar-lead.wav / guitar-other.wav | SKIP | The half-rate experiment. Upsampled here for compatibility, but no real detail, use guitar.wav instead. |
The WAV set is ~347 MB, so it lives locally (not on the web page). Copy from here straight into Ableton:
/Users/drwu/Projects/_outputs/3gene-fix/stems-wav/Reveal in Finder: open -R "/Users/drwu/Projects/_outputs/3gene-fix/stems-wav/guitar.wav" · open folder: open "/Users/drwu/Projects/_outputs/3gene-fix/stems-wav". The original MP3 stems are untouched under 3gene-fix/stems/.
Companion to the 3 Gene clock fix. Analysis: ffprobe headers + FFT cross-correlation + least-squares stem fitting, all at 44.1 kHz.