What happened with the song "Gene"

A song is like a row of footsteps that stay in time with a drum.

Someone made a music file that was supposed to match the song. But the file slowly fell behind the real music, a little more every minute, like a friend walking slower and slower until they are way behind you.

By the middle of the song the file was off by a lot. The first try did not catch this. It only changed a name tag on the music and said it was fine.

So we listened to the real drums, found the true beat, and moved every note back onto that beat. Now the notes land on the music the whole way through, start to end.

We checked it with numbers. The match went from low to good, and it stays good even at the end. The song is fixed.

3 Gene — clock fix

Correctness pass over the June 28 transcription. Source: 3Gene.wav (4:35). 5 tracks, ~90 BPM, A major.

Root cause: the transcription's tempo map drifted out of phase with the recording. Re-anchoring every note to an audio-locked beat grid restored alignment across the whole song and removed the drift. Verified against the six separated stems.
Root cause
Clock drift
not key, not notes
Bass agreement
0.350.63
Drums onset precision
72%93%
Mid-song drift
eliminated

What the prior pass missed

The June 28 report changed only the key signature (0 to 3 sharps) and stated "tempo was left untouched, meter is correct." It measured chroma agreement per bar, aligning each MIDI bar to its audio bar by index. That measurement quietly re-aligns the drift away, so it reported 0.65 and called the transcription "broadly in the right pitch world."

Measured in real playback time instead, the same file scored 0.35 on bass and fell from 0.55 to 0.25 across the song. The per-bar metric hid the one defect that actually breaks playback: the clock.

The drift, before and after (bass vs bass stem)

Window
Before (drifting)
After (clock fix)
0–30s
60–90s
120–150s
150–180s
239–269s

Before: agreement decays steadily, the signature of accumulating timing error. After: flat and healthy end to end. Late windows are now as accurate as the opening.

Per-track verification (corrected file vs stems)

TrackMetricBeforeAfter
Drumsonset precision / recall72% / 65%93% / 78%
Basschroma agreement0.350.63
Lead + Rhythm guitarchroma agreement0.530.66
Vocalsonset precision46%60%

Vocals recall stays near 31%, a metric artifact: spectral flux over-detects breaths and consonants in the vocal stem (496 detected onsets against 199 sung notes), so precision is the trustworthy figure and it rose.

How the fix works

  1. Find the true beat. A dynamic-programming beat tracker (Ellis 2007, numpy only) runs on the drum stem and returns 413 audio-locked beats. Inter-beat jitter is 12 ms, and the grid sits within 13 ms of strong drum hits. It follows the song's real fluctuation, 83 to 96 BPM.
  2. Re-anchor the notes. Each MIDI beat is mapped to the matching audio beat. The note content in beat-space was already correct, so only the tempo map is rebuilt. Best downbeat offset is zero, so the pickup was already right.
  3. Bake the count-in. The first downbeat lands at 0.313 s, so a count-in is written into the file. The corrected MIDI now plays in sync on its own with no external offset.
  4. Clean the meta. Tracks renamed to Bass and Drums, a bogus leading 1/4 time signature replaced with 4/4, key signature A (3 sharps) preserved from the prior pass.

What was NOT changed

The notes themselves were left alone. Once the clock was fixed, agreement rose to healthy levels, which proves the pitch content was substantially correct and only mis-timed. Rewriting notes now would chase a measurement artifact. Any remaining low-agreement spots are isolated and worth an ear check, not a blanket rewrite.

Downloads

Guitar Pro: clock-fixed + solo (complete) Corrected MIDI (clock-fixed) GP: clock-fixed, no solo Prior GP (drifting)

The headline .gp has both fixes. It keeps the original tab notation (frets and beats, already correct in beat-space), rewrites all 102 per-bar tempo automations from the audio beat grid so playback tracks the recording bar for bar, and carries the recovered guitar solo as a sixth track. The two solos (the bar-84 figure and the bars 93 to 100 outro, running 224 to 266 s in the audio) were absent from the original two guitar tracks, which were near-duplicates. They were transcribed from the Demucs stems, so treat them as an approximate guide and check by ear. Validated as a well-formed GP7 zip, six tracks, 102 tempo automations, predicted playback span 269.7 s matching the audio. Not opened in the Guitar Pro app itself, since there is no GP7 reader in this environment.

Method scripts: dp_beats.py, warp_test.py, rebuild2.py, verify_fix.py. Stems: htdemucs_6s (drums, bass, guitar, vocals real; piano and other are dead bleed).