Which songs carry a recoverable second guitarist, measured from the stereo guitar stem. 26 songs, 2026-09-08.
Margin is the whole verdict. It is the share of one channel's attacks that land on an attack in the other channel, minus the identical test with that channel pushed +5 seconds. A raw coverage percentage with no control is what produced the earlier “not separable” reading on a song that separates at 79.6.
| Song | Album | Verdict | Margin | Control % | L/R corr | Solo attacks | Reading |
|---|---|---|---|---|---|---|---|
| 05-With-Twilight-as-My-Guide | Octahedron | SEPARABLE | 85.4 | 3.3 | 0.0559 | 79 | 79 attacks played by only one channel |
| 02-Since-We’ve-Been-Wrong | Octahedron | SEPARABLE | 84.8 | 4.7 | 0.4528 | 58 | 58 attacks played by only one channel |
| 02 Fishing the Sky | Mare Vitalis | SEPARABLE | 82.8 | 6.4 | 0.0337 | 269 | 269 attacks played by only one channel |
| 09 Kilgore Trout | Mare Vitalis | SEPARABLE | 79.6 | 12.1 | 0.0054 | 316 | 316 attacks played by only one channel |
| 08. North Star Ordination | Illumination Ritual | SEPARABLE | 76.1 | 12.6 | 0.7199 | 136 | 136 attacks played by only one channel |
| 02. Great Lake Derelict | Illumination Ritual | SEPARABLE | 75.4 | 14.0 | 0.7936 | 79 | 79 attacks played by only one channel |
| 01 The Immortal Soul of Mundo Cani | Mare Vitalis | SEPARABLE | 70.8 | 2.1 | 0.0124 | 102 | 102 attacks played by only one channel |
| 06 Secret | Mare Vitalis | SEPARABLE | 61.1 | 20.9 | 0.1441 | 129 | 129 attacks played by only one channel |
| 07. Barrier Islands (Do We Remain) | Illumination Ritual | SEPARABLE | 60.9 | 5.0 | 0.543 | 105 | 105 attacks played by only one channel |
| 07 ...And Nothing Less | Mare Vitalis | SEPARABLE | 60.4 | 18.3 | -0.0228 | 181 | 181 attacks played by only one channel |
| 08 Poseidon | Mare Vitalis | SEPARABLE | 58.5 | 27.9 | 0.5089 | 79 | 79 attacks played by only one channel |
| 03 Forever Longing the Golden Sunsets | Mare Vitalis | SEPARABLE | 54.5 | 25.5 | 0.0563 | 119 | 119 attacks played by only one channel |
| 06-Cotopaxi | Octahedron | SEPARABLE | 49.2 | 21.8 | -0.0898 | 229 | 229 attacks played by only one channel |
| 10 Storms | Mare Vitalis | SEPARABLE | 48.7 | 25.2 | 0.2355 | 197 | 197 attacks played by only one channel |
| 04 Mare Mortis | Mare Vitalis | SEPARABLE | 46.6 | 36.1 | 0.1491 | 273 | 273 attacks played by only one channel |
| 05 Santa Maria | Mare Vitalis | SEPARABLE | 45.9 | 41.2 | 0.1303 | 88 | 88 attacks played by only one channel |
| 09-Luciforms | Octahedron | SEPARABLE | 43.9 | 17.2 | -0.078 | 69 | 69 attacks played by only one channel |
| 07-Desperate-Graves | Octahedron | SEPARABLE | 39.0 | 20.3 | 0.172 | 195 | 195 attacks played by only one channel |
| 03-Teflon | Octahedron | SEPARABLE | 36.8 | 31.3 | -0.0014 | 228 | 228 attacks played by only one channel |
| 04-Halo-of-Nembutals | Octahedron | SEPARABLE | 36.3 | 31.7 | 0.1865 | 124 | 124 attacks played by only one channel |
| 08-Copernicus | Octahedron | UNISON | 84.3 | 9.0 | 0.6708 | - | both channels play the same attacks; no second part to lift |
| 01-Credits | Octahedron | UNISON | 54.4 | 30.0 | 0.8052 | - | both channels play the same attacks; no second part to lift |
| 03. Simple Forms | Illumination Ritual | UNUSABLE | 22.2 | 68.1 | 0.6115 | - | margin 22.2 is too small; the control nearly matches |
| 01. Adriatic to Black Sea | Illumination Ritual | MONO | 81.0 | 5.5 | 0.8514 | - | L and R correlate 0.8514, effectively one channel |
| 06. Branches on the Arrow Peak Revelation | Illumination Ritual | MONO | 70.6 | 23.9 | 0.9023 | - | L and R correlate 0.9023, effectively one channel |
| 05. 30 Degrees 3 Am | Illumination Ritual | MONO | 68.1 | 27.0 | 0.8956 | - | L and R correlate 0.8956, effectively one channel |
The obvious move is to take the tab we already have and hand each written note to whichever channel played it. That was tried and it does not survive its own control. Every position on Kilgore Trout's 449-position rhythm staff was scored, with the offset searched over ±3 seconds at 10 ms steps:
| Window (ms) | Best offset (s) | Matched % | Shifted control % | Margin |
|---|---|---|---|---|
| 30 | -2.26 | 29.6 | 22.7 | 6.9 |
| 50 | -2.28 | 43.9 | 36.1 | 7.8 |
| 80 | -2.89 | 61.0 | 57.5 | 3.5 |
| 120 | -2.39 | 75.9 | 71.0 | 4.9 |
| 200 | -2.25 | 90.0 | 86.6 | 3.4 |
Loosening the window raises the real score and the control together. A 90% match at 200 ms is density, not alignment. There is no tolerance at which this tab's attack times can say who played what, so the tool refuses instead of writing a confident two-staff file out of noise.
python3 ~/.claude/skills/two-guitar-split/split_stem_channels.py \
--stem "<song>/guitar.mp3" --out-dir <work>/split
The gate runs first and refuses anything that is not SEPARABLE. Verified both ways: Kilgore Trout writes its two channels, Adriatic to Black Sea is refused as mono.
The Immortal Soul of Mundo Cani, margin 70.8. Stem split, each channel transcribed on its own, both written onto two staves against the existing tab as the template.
| Stage | Left / Gtr 1 | Right / Gtr 2 | Reading |
|---|---|---|---|
| Separability gate | margin 70.8 | 102 attacks on one channel only | |
| Transcribed notes | 610 | 691 | basic_pitch, ONNX, per channel |
| Attacks unique to that channel | 358 | 446 | the two parts are genuinely different |
| Pitch-class agreement where they coincide | 52.0% vs 25.4% control | margin +26.6, two correlated parts | |
| Written to staff | 529 | 633 | 0 unvoiceable, 18 and 4 out of range dropped |
| Playability gate | REVIEW, 0 hard failures | 0 collisions, 0 tie breaks, 0 wide spans, 0 octave artifacts, 0 rapid shifts | |
| Drums and Vocals | 352 | 22 | preserved exactly from the template |
For scale, the inherited AI tab carried 128 and 237 guitar note positions. This one carries 529 and 633, and every one of them came from the recording.
Playability is the second question. The first is whether the notes are right,
so the artifact went through audio_accuracy_audit.py and through a
per-staff channel-ownership measure with wrong-song stems as controls.
| Measure | Result | Reading |
|---|---|---|
| DTW map | 26.7% vs 8.1% random, gain +18.6 | map ACCEPTED |
| Attack recall | 24.4% (284 of 1162) | low |
| Attack precision | 91.7% (122 of 133 onsets) | 1162 attacks against 133 onsets is 8.7 to 1, so this is density |
| Timing, pre-warp | median 104.8 ms, p90 220.6 ms | post-warp median is 0.0 ms and circular |
| Pitch agreement | 50.9% vs 47.0% control | NO DISCRIMINATING POWER, the control nearly matches |
| Ownership, canonical tool | +0.2651 vs +0.2766 | INVALID: that tool's corpus is Shiner's The Ship, so these are another song's numbers |
Chance-normalised, because the wrong-stem controls differ wildly in onset density (1012 against this song's 96). The normalisation is validated by the +5 s shift control landing at −0.1 and +0.3 gain, which is zero.
| Number | This artifact | Human Songsterr tab, same song |
|---|---|---|
| Gtr1 separation over best wrong stem | +0.4 | +0.4 |
| Gtr2 separation over best wrong stem | −3.2 | −16.3 |
| Gtr1 own channel minus other channel | −2.8 | −5.4 |
| Gtr2 own channel minus other channel | +2.0 | −1.2 |
Every alignment-based pitch measure on this catalogue fails its own control, because a tab whose attacks sit 105 ms off cannot be scored note against note. Pitch-CLASS content needs no alignment at all. What a staff plays across the whole song either matches what that channel plays across the whole song, or it does not. Reported as cosine similarity between the staff's pitch-class histogram and the channel's mean chroma.
| Scored against | Gtr 1 cosine | Gtr 2 cosine |
|---|---|---|
| its OWN channel | 0.9139 | 0.9047 |
| WRONG: Kilgore Trout (same album, same tuning) | 0.6514 | 0.6491 |
| WRONG: The Mars Volta, Octahedron | 0.6904 | 0.6549 |
| WRONG: Simple Forms | 0.5615 | 0.6197 |
| WRONG: Branches on the Arrow Peak | 0.4525 | 0.4608 |
| SEPARATION over best wrong stem | +0.2235 | +0.2498 |
| Number | This artifact | Human tab |
|---|---|---|
| Gtr1 cosine to its own channel | 0.9139 | 0.6703 |
| Gtr2 cosine to its own channel | 0.9047 | 0.8009 |
| Gtr1 separation over best wrong stem | +0.2235 | +0.2130 |
| Gtr2 separation over best wrong stem | +0.2498 | +0.0416 |
Zero note ids and zero beat ids in either guitar staff exist in the Songsterr AI tab. Of 529 and 633 written events, 25 and 13 happen to coincide with the AI tab on bar, position, fret, string and pitch, which is 4.7% and 2.1%, and they share no elements. No note content is inherited.
Timing was the open question, so it was diagnosed rather than restated. Every written attack was paired with the nearest onset in the stem, and the residual regressed against position to separate a wrong tempo from a coarse grid.
| Build | Median residual | p90 | Paired | Notation span | Drift R² |
|---|---|---|---|---|---|
| This artifact, 16th grid | 118.9 ms | 289.0 ms | 244 / 461 | 123.2 s | 0.002 |
| 32nd grid, REJECTED | 112.3 ms | 289.0 ms | 374 / 675 | 123.3 s | 0.012 |
| Human Songsterr tab, same song | 95.1 ms | 262.1 ms | 100 / 197 | 116.6 s | 0.001 |
It is scatter, not drift. The slope is +0.0002 s per second at R² 0.002, and a full 5% tempo search buys 6 ms. So the tempo is right and no re-tempo can fix this.
The first build wrote every note as one 16th slot, so it asserted no duration
at all and duration agreement had nothing to compare. The writer now carries the
audio-derived length of each note and ties it across the note values needed to
express it. The result is the promoted artifact,
s6285808-TWOGTR-WITH-TIES.gp, hash
a5a4847130f540f9cf54ac782f79b826.
| Measure | No ties | With ties |
|---|---|---|
| Ties written | 0 | 84 |
| Attacks | 1162 | 1162 |
| DTW map gain | +18.6 | +21.2 |
| Attack recall | 24.4% | 30.8% |
| Attack precision | 91.7% (122/133) | 98.5% (131/133) |
| Chroma separation, Gtr1 / Gtr2 | +0.2235 / +0.2498 | +0.2311 / +0.2536 |
| Duration error vs shuffled control | 76 vs 76 ms, gain +0 | 73 vs 117 and 68 vs 88 ms, gain +44 / +20 |
| Notes within 25% of the source length | 35.3% / 38.0% | 43.5% / 46.8% |
| Hard failures | 0 | 0 |
| Axis | Gtr 1 | Gtr 2 |
|---|---|---|
| Capo, and capo vs Midi mismatch | 0 / 0 | 0 / 0 |
| Ties written | 56 | 28 |
| Tie collision / inconsistent / unmatched / gap / dropped | 0 / 0 / 0 / 0 / 0 | 0 / 0 / 0 / 0 / 0 |
| Same-string collisions | 0 | 0 |
| Worst hand span | 4 | 4 |
| Rapid fret position changes | 0 | 0 |
| Open strings, and share | 141 (24.1%) | 194 (29.3%) |
| Interior string gaps, hand-skip share | 46 (27.4%) | 51 (30.9%) |
| Octave shapes, recurring vs isolated | 17: 13 / 4 | 22: 22 / 0 |
| Repeated voicing inconsistency | 0 | 0 |
| Hard failures | 0 | 0 |
audio_accuracy_audit.py reports OWNERSHIP REFUSED at +0.2651 against
+0.2766, and its own JSON names the file it scored:
10 Trapped in Wonderland.gp, a Shiner song, with 152 and 689 notes
that belong to neither staff here. Its corpus holds no Appleseed material, so
that line has never measured any tab on this record. Channel ownership stays
unestablished, and it is the tool that is missing, not the evidence.The validator raises two findings that ask a question rather than assert a
fault. INTERIOR_GAP is the chord-contiguity check and says "N
attacked notes with M unexplained interior string(s); needs positive audio
evidence". OWNERSHIP_SUSPECT is the pseudo-fingerpicking check and
says "outer-string pseudo-chord across strings A and B; test whether one note
belongs to the other guitar". Both were tested at their own instant against the
two channels, with the same lookup at +5 s as the control.
| Finding | Count | Both channels fire | +5 s control | Gain |
|---|---|---|---|---|
| INTERIOR_GAP (chord contiguity) | 49 | 13 (26.5%) | 5 (10.2%) | +16.3 |
| OWNERSHIP_SUSPECT (pseudo-chord) | 11 | 0 (0.0%) | 2 (18.2%) | −18.2 |
The canonical tool cannot do this, so it was measured directly: every attacked note on each staff matched by pitch and onset against BOTH channel transcriptions, within 60 ms.
| Staff | Notes | Own channel | Other channel | Gap | +5 s control |
|---|---|---|---|---|---|
| Gtr 1 (from LEFT) | 529 | 62.6% | 33.5% | +29.1 | 11.2% |
| Gtr 2 (from RIGHT) | 633 | 61.8% | 29.5% | +32.2 | 12.0% |
| Staff | Exclusive to its own channel | Present in both channels | Matched neither within 60 ms |
|---|---|---|---|
| Gtr 1 | 196 (37.1%) | 135 (25.5%) | 198 (37.4%) |
| Gtr 2 | 249 (39.3%) | 142 (22.4%) | 242 (38.2%) |
Same chain, no changes. Artifact s6388915-TWOGTR-WITH-TIES.gp,
hash 26a826fe6f686139. 95 bars, standard E, 75 bpm, 274 s.
| Axis | Gtr 1 | Gtr 2 | Human tab, same song |
|---|---|---|---|
| Separability margin | 61.1 | 129 attacks on one channel only | |
| Transcribed / written | 2052 / 1884 | 2998 / 2494 | 0 unvoiceable |
| Timing, median residual | 106.8 ms | 117.2 ms | |
| Notation span vs record | 1.39% short | Mundo Cani was 4.73% | |
| Pitch, chroma separation | +0.0438 | +0.0550 | +0.0553 / +0.0725 |
| Ownership gap | +38.1 | +45.4 | Mundo Cani +29.1 / +32.2 |
| Notes exclusive to their own channel | 847 (45.3%) | 1229 (49.9%) | Mundo Cani 37.1% / 39.3% |
| Duration gain over shuffled control | +5 ms | +9 ms | within 25%: 57.3% / 51.3% |
| Hard failures | 0 | 0 | hand-skip 45% and 19% |
Two guitars, never four. A third staff is never the answer, and the split is decided by who played the note, never by panning or by stem loudness.