Source documents: 6 theory analyses (Shiner × 3, Hooray for Earth, Phish, plus a riff tab sheet) · Worked example: Shiner, “The Truth About Cows”, The Egg, 2001 · 201 s of audio · 8 of 10 written claims confirmed straight from the mix
These documents share one habit that makes them work: they read the stereo field as structure. “Gtr 1 (right ear), Gtr 2 (left ear)” is the analytical premise the rest of the page rests on. That habit is also the one thing the existing stem pipeline throws away, because Demucs returns a single mono guitar stem and the two parts are gone before the analysis starts.
Teal line is windowed left/right correlation. A centre-panned or mono-summed mix rides above 0.95. This track sits at a median of 0.65 and touches -0.045, which is two independently tracked parts, one per side. Red dots are the moments the two parts genuinely diverge. Shaded bands are the sections below.
Each block is a low-register root held 0.6 s or longer. A F B G D. The A-to-F alternation and the two B-centred sections are visible without reading a single number.
Tempo marking is 98
Two distinct guitar parts: Gtr 1 in the right ear, Gtr 2 in the left ear
The underlying harmony is A to F
A and F are two major chords a major 3rd apart
Over A it sounds A mixolydian b6; over F it sounds F lydian (the two modes differ by exactly one note: C# vs C natural)
When Gtr 1 lands on F, the parts spell out an F chord (F, A, C)
The B section gives root, 2nd and flat 3rd (B, C#, D): a minor mode with B as the new tonic; not phrygian, because phrygian needs a flat 2nd and this has a major 2nd
Across the last three sections the centre drops B minor -> A minor -> G minor, a whole step each time
The two guitar parts are largely double-tracked, with occasional differences
Guitar is in drop-D tuning
The staves in these PDFs are vector drawings and the fret numbers are outlined paths, so a text extraction returns the annotation prose and none of the music. Rendering the pages and reading the tab against the exact staff-line coordinates recovers the notes, and they line up with the audio measurement note for note.
Tablature only, no standard staff. Two systems stacked, Gtr 1 (right ear) above Gtr 2 (left ear), rhythm slashes under each, bar numbers in the left margin, tempo and tuning declared once at the head. A handwriting face throughout. The stereo assignment is printed as part of the instrument label, which is what makes it structural rather than incidental.
| Bar | What the tab says | Sounds |
|---|---|---|
| 1the A chord | Gtr 1: open 5th string, and 7th fret on the 4th string. Gtr 2: 7th fret on the 4th string, and 6th fret on the 3rd. |
A majorA2 and A3 in octaves, against A3 and C♯4. Root and major 3rd, no 5th. |
| 2the F chord | Gtr 1: 6th, 5th then 3rd fret on the low string, a chromatic walk down. Gtr 2: 7th fret on the 4th string, and 5th fret on the 3rd. |
F majorG♯2 to G2 to F2, landing under A3 and C4. F, A and C, exactly as the annotation says. |
Gtr 2 holds the 4th string and shifts the 3rd string from fret 6 to fret 5, which is C♯ down to C natural. That single semitone is the entire difference between A mixolydian ♭6 and F lydian, and it is the exact quantity the audio test measured at +0.253 without any access to the tab. The written analysis, the transcription and the measurement all land on the same note.
The analyst marks G♯ and G as chromatic passing tones that resolve to F. The root tracker keeps only pitches held 0.6 s or longer, so those two were filtered out of the histogram and the structural roots came through clean at A 48, F 15. A human judgement about which notes carry the harmony and a duration threshold agreed, on the same bars, for the same reason.
| What the analysis does | How to get it from audio | Status |
|---|---|---|
| Stereo-field part separationGtr 1 (right ear), Gtr 2 (left ear) | Split L and R, and take the side channel (L−R). Windowed L/R correlation says whether there are two parts at all. | computableDemucs returns ONE mono guitar stem and destroys this. |
| Double-tracking detection“a cool double-tracked effect, with some nice occasional differences” | Correlation in the 0.4 to 0.8 band is the fingerprint of two takes of one part. Dips mark the bars where they actually diverge. | computableGives you the timestamps to go listen to. |
| Root motion“the underlying harmony as A to F” | Low-register CQT, argmax per frame, then keep only runs that HOLD. Persistence, not averaging. | computableAveraging chroma over a section gets this wrong; it did in my first pass. |
| Mode identification by one distinguishing noteA mixolydian ♭6 over A, F lydian over F | Name the single pitch class that separates the two candidate modes, then measure only that one, chord-window against chord-window. | computableThe strongest test in the whole battery. |
| Chord spelling from combined parts“lands on F, then spells out an F chord (F, A, C)” | Chroma restricted to the guitar register over the chord window, ranked. | computableReads what the parts sum to, rather than what a chart says. |
| Missing-third resolution“this chord doesn’t have a 3rd, but the melody has a C natural” | Compare the chord window against the vocal line and let the melody supply the quality. | needs a vocal stemThe full mix cannot separate the voice from the guitars. |
| Rhythmic displacement between verses“starts on the ‘and’ of beat 1 instead of the ‘and’ of beat 4” | Beat-track, then cross-correlate the onset envelope of verse 1 against verse 2 and read the lag in beats. | computableNot built in this pass. The measurement is straightforward. |
| Meter changes“sounded like a meter change to 5/4, but not totally sure” | Downbeat spacing from the onset envelope, reported with its confidence. | partly computableThe written analysis flags its own uncertainty here. So should the tool. |
| Alternate-tonic readings“could also be an E♭/G, or its relative minor, C min7/G” | Enumerate every name for the measured pitch-class set and rank by which tonic the bass supports. | computableOne sonority, several honest names. |
| Tuning“Drop-D tuning” | Not isolable from a full mix: bass guitar occupies the same register. | needs a guitar stemReported untested rather than dressed up as support. |
| Cross-song reference“like the verse chords of ‘Blow Up the Outside World’” | Human. A measured interval pattern can suggest candidates, and the judgement is yours. | humanThe part worth keeping human. |
| Practice exercise from a transcribed lick“fleshing out this pattern over the entire scale” | Human, once the lick is transcribed. | humanThe Tweezer document’s whole payoff. |
guitar.wav. Every observation
in these documents about two parts, about double-tracking, about one guitar playing G lydian
against the other’s G aeolian, is unrecoverable after that step. The stereo pass has to run on
the mix first, and it costs nothing: no torch, no model download, no separation time.1. Stereo field on the raw mix: L, R, mid, side, windowed correlation. This is what tells
you how many parts there are and where they split.
2. Root motion by persistence on the mid channel. Sections fall out of this.
3. Mode tests per chord window, one distinguishing pitch class at a time.
4. Then stem-separate, for the things that genuinely need an isolated part:
vocal melody, tuning, per-part transcription.
Tuning. Drop-D cannot be read off a full mix. The bass guitar lives in the same register, so the low band cannot attribute a note to an instrument. This needs a guitar-only stem.
The G section. The written descent B minor → A minor → G minor reads the guitar parts. The B and A centres are unambiguous in the low register. The bass never settles on G, exactly as the document implies when it describes the two guitars pulling against each other there, so a full-mix test corroborates two of the three and should say so.
Anything about the vocal. The missing-third move, where the melody supplies a quality the chord omits, is the sharpest idea in the Shiner “Pills” analysis, and it needs the voice on its own.
python3 stereo_field.py <song.wav> --out field.json
python3 claim_test.py <song.wav> claims.json
Both scripts need only librosa, numpy and
soundfile. No torch, no model weights, no network.
Shiner, The Egg (2001), the full album is on the Black drive, so all three Shiner analyses have their real album audio: “The Truth About Cows” is track 01, “Bells and Whistles” track 07, “Pills” track 10.
Hooray for Earth, “Say Enough”, six stems already separated.
Phish, Tweezer, six stems, on the T7 Shield, which is not currently mounted.