Why the guitar tracks slipped

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.

3 Gene, stem sync fix

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.

Root cause of the drift: the stems were MP3, which bakes a 25 ms encoder-delay into the front of every file, and two of them were half-rate (22.05 kHz) so their delay was 50 ms. Different front-delays plus mixed sample rates plus Ableton auto-warp = the parts slid apart. Rebuilt as one 44.1 kHz / 24-bit WAV set, every file 12,134,016 samples starting at sample 0. Verified 0.00 ms lag across the whole guitar family.
All 10 stems
Mono
so "left/right" is not a clean split
MP3 front-delay
25 / 50 ms
44.1k stems vs 22.05k pair
guitar =
0.71·L + 0.71·R
stereo channels, 3.5% residual
Rebuilt WAV set
0.00 ms
lag, identical length, 44.1k/24-bit

How the stems were actually made

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).

FileRateChFront-delayWhat it really is
bass drums vocals other piano guitar44.1kmono25 msDemucs 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-right44.1kmono25 msThe 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-other22.05kmono50 msA 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.

Why guitar and guitar-left both hold two guitars

Two separate reasons, and neither is a bug in the file:

The real split (done): the two guitars are not panned to separate positions (the pan histogram is one broad hump, not two peaks), so a channel or azimuth split cannot isolate them. Instead the guitar stem is separated by score-informed Wiener masking: the clock-fixed transcription's Lead and Rhythm note-harmonics build a soft time-frequency mask over the guitar spectrogram, and each part is resynthesized. Result: 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.

Why they would not sync in Ableton

  1. MP3 encoder-delay. Every MP3 glues ~1105 samples of silence to the front (the LAME/Xing delay). At 44.1 kHz that is 25 ms; the two 22.05 kHz files carry the same 1105-sample delay, which at half rate is 50 ms. So guitar-lead and guitar-other start a full 25 ms behind the rest, an audible flam.
  2. Mixed sample rates. Eight files at 44.1k and two at 22.05k in one session forces Ableton to resample on the fly, another place drift creeps in.
  3. Auto-Warp. The .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.

The fix, a rebuilt, sample-locked WAV set

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 fileKeep?Use
drums bass vocals other guitar piano .wavKEEPThe real stem set. Drop all six as your session.
3gene_mix_reconstructed.wavKEEPSum of the six base stems, drop this first as your alignment anchor / reference mix.
guitar-LEAD-split.wav / guitar-RHYTHM-split.wavKEEPThe 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.wavOPTIONALThe panned difference (L−R). A spatial width lever. For the part split use the LEAD/RHYTHM files above.
guitar-left.wav / guitar-right.wavOPTIONALThe stereo channels, now aligned. Good for stereo width. They will not isolate one guitar.
guitar-lead.wav / guitar-other.wavSKIPThe half-rate experiment. Upsampled here for compatibility, but no real detail, use guitar.wav instead.

Drop into Ableton without drift

  1. Set the Live set sample rate to 44.1 kHz (Preferences → Audio).
  2. Drag the WAVs in and place each clip start at 1.1.1.
  3. Select every clip, open the Clip view, and turn Warp OFF. This is the important one, it stops Ableton stretching each stem on its own.
  4. They are now sample-locked start to end. If you want them warped to the grid later, warp them all to the same beat map (the drum stem is the cleanest anchor).

Where the files are

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.