Someone wrote down the bass notes for the song "3 Gene" by ear. A computer then tried to check them by listening to just the bass track.
The computer and the written notes did not always match. But the bass track is muddy, so the computer often hears the wrong note, always a note that still fits the chord.
So a computer cannot settle this. Your ears can. Each row has a play button for the real bass, and two little speaker buttons that beep the two guesses. Listen, then decide which guess matches the real bass.
The adjudicator. A machine cannot settle the disputed bass notes, so this page hands them to your ear.
Two independent pitch trackers were run on the separated bass stem: librosa.pyin (July 7) and a harmonic-product-spectrum fundamental tracker (this pass). They agree with each other only 56% of the time, and when they do agree the tab already matches them 80% of the time.
Rewriting the notes to match the trackers would push the score to look perfect while making the file wrong. So the notes stand, and the call goes to your ear.
Each row: hear the real bass at that spot, then beep the two candidate pitches. Green is what the tab says, red is what both trackers say.
| Where | Time | Real bass | Tab says | Trackers say |
|---|---|---|---|---|
| bar 9 ยท beat 0 | 0:23 | tab A | trackers C# | |
| bar 12 ยท beat 0 | 0:31 | tab E | trackers F# | |
| bar 16 ยท beat 0 | 0:42 | tab F# | trackers C# | |
| bar 32 ยท beat 0 | 1:25 | tab A | trackers E | |
| bar 32 ยท beat 1 | 1:25 | tab A | trackers D | |
| bar 32 ยท beat 3 | 1:27 | tab F# | trackers D | |
| bar 33 ยท beat 3 | 1:29 | tab A | trackers C# | |
| bar 35 ยท beat 3 | 1:35 | tab A | trackers C# | |
| bar 36 ยท beat 1 | 1:36 | tab C# | trackers D | |
| bar 36 ยท beat 3 | 1:37 | tab F# | trackers D | |
| bar 37 ยท beat 3 June-28 flagged | 1:40 | tab A | trackers C# | |
| bar 38 ยท beat 3 June-28 flagged | 1:43 | tab F# | trackers D | |
| bar 39 ยท beat 3 June-28 flagged | 1:45 | tab A | trackers C# | |
| bar 42 ยท beat 1 | 1:52 | tab D | trackers C# | |
| bar 48 ยท beat 0 | 2:07 | tab F# | trackers C# | |
| bar 48 ยท beat 1 | 2:08 | tab D | trackers D# | |
| bar 56 ยท beat 0 | 2:29 | tab A | trackers E | |
| bar 56 ยท beat 1 | 2:29 | tab A | trackers D | |
| bar 56 ยท beat 3 | 2:31 | tab F# | trackers D | |
| bar 57 ยท beat 3 | 2:33 | tab A | trackers C# | |
| bar 58 ยท beat 1 | 2:35 | tab C# | trackers D | |
| bar 59 ยท beat 3 | 2:39 | tab A | trackers C# | |
| bar 60 ยท beat 1 June-28 flagged | 2:40 | tab C# | trackers D | |
| bar 60 ยท beat 3 June-28 flagged | 2:41 | tab F# | trackers D | |
| bar 61 ยท beat 3 June-28 flagged | 2:44 | tab A | trackers C# | |
| bar 62 ยท beat 3 June-28 flagged | 2:47 | tab F# | trackers D | |
| bar 63 ยท beat 3 June-28 flagged | 2:49 | tab A | trackers C# | |
| bar 64 ยท beat 3 June-28 flagged | 2:52 | tab F# | trackers D | |
| bar 65 ยท beat 3 June-28 flagged | 2:55 | tab A | trackers C# | |
| bar 66 ยท beat 3 June-28 flagged | 2:57 | tab F# | trackers D | |
| bar 69 ยท beat 2 | 3:05 | tab D | trackers F | |
| bar 74 ยท beat 1 | 3:17 | tab B | trackers D# | |
| bar 78 ยท beat 0 | 3:27 | tab F# | trackers A | |
| bar 78 ยท beat 2 | 3:29 | tab B | trackers E | |
| bar 82 ยท beat 0 | 3:38 | tab F# | trackers A | |
| bar 84 ยท beat 1 June-28 flagged | 3:44 | tab F# | trackers E | |
| bar 89 ยท beat 0 | 3:57 | tab D | trackers D# | |
| bar 92 ยท beat 0 June-28 flagged | 4:05 | tab E | trackers F# | |
| bar 95 ยท beat 1 June-28 flagged | 4:13 | tab A | trackers D | |
| bar 97 ยท beat 1 June-28 flagged | 4:19 | tab A | trackers D | |
| bar 99 ยท beat 1 June-28 flagged | 4:24 | tab A | trackers D |
The tab viewer plays every part with a moving cursor. Solo the Bass track there and play it against this stem: 3 Gene — tab + solo viewer. The clock-fix report with the full method is at 3 Gene — clock fix. Prior static report: report-static.html.
If your ear says a beat is genuinely wrong, tell me the bar and the note you hear, and I patch exactly those beats into a forward copy of the MIDI and GP. No blanket rewrite.