Appleseed Cast, Blind Man’s Arrow and Kilgore Trout. Measured 2026‑09‑07 on the Dr Wu iMac.
A staff count is a factual claim about the recording
Every tab that ships keeps BASS, DRUMS and VOCALS, plus ONE OR TWO guitars matching the number of guitarists the recording actually has. Never more guitar staves than players. detector_controls.py, standing upload rule
The governing rule in the impossible-guitar-parts skill is that a valid transcription
must explain what each guitarist could physically have played. Two staves assert two players. If
the recording holds one guitarist, the second staff is a claim with nothing behind it, and the
fretboard solver then contorts one hand to reach notes it thinks two hands played.
So the staff count is not a formatting preference. It is a measurable statement about the audio, and it is measurable before a single note is re-transcribed.
Two separators, one song each, plus the notation itself
| Source | Song | Lanes used | Duration |
|---|---|---|---|
Demucs htdemucs_6s | Blind Man’s Arrow | guitar.wav, other.wav, drums.wav | 218.69 s |
| Moises, role split | Kilgore Trout | Lead Guitars, Rhythm Guitars | 172.48 s |
| Songsterr live tab | Blind Man’s Arrow s6389274 | r8953534, 5 tracks | 82 bars |
| Songsterr live tab | Kilgore Trout s6389251 | r8954002, 5 tracks | 101 bars |
The eleven Moises lanes were checked first for the obvious failure, which is an exporter writing the same audio eleven times. All eleven md5 hashes differ and all eleven run 172.477823 s, matching the demucs source at 172.46 s.
The skill’s hard gate is that a detector is not believed until a control has run, because in one session six audio detectors were built and five were wrong in a way only a control caught. So each measurement here is repeated on the same audio shifted in time by 17, 41, 73 and 101 seconds. A real relationship beats its own shifted copy. One that does not beat it was chance.
guitar.wav against other.wav on Blind Man’s Arrow
The 2026‑08‑22 Kilgore proof established this pair as the two‑guitar candidate, and left one
question open for the ear: demucs other is a catch‑all lane, so being independent of the
guitar lane does not make it a guitar. On Blind Man’s Arrow it is not even independent in the
useful direction.
| Measure | Measured | Rotation null | Separation | Reading |
|---|---|---|---|---|
Guitar attacks near an other attack | 9.4% | 9.6% | −0.2 pts | CHANCE |
| Onset‑envelope correlation | −0.019 | +0.038 | −0.057 | BELOW CHANCE |
| Activity overlap ratio | 1.00× | 1.00× | 0.00 | INDEPENDENT |
other silent below −60 dB | 59.0% | — | — | MOSTLY ABSENT |
other level while guitar plays | −66.2 dB | — | — | own active median −30.0 dB |
There is a trap here that the skill already records, and it is the reason this result cannot be read
as “there is only one guitarist.” Demucs separates by instrument class, so two
guitarists playing at once both land inside guitar.wav. The honest conclusion is narrower:
other is not the second guitar, and this pair cannot answer the ownership question at all.
Lead Guitars against Rhythm Guitars on Kilgore Trout
Moises splits by role rather than by instrument class, which is exactly what the 2026‑08‑22 findings asked for. The lanes it returned do not hold two performances.
Lead is active in 16.9% of frames, and every one of those frames sits inside Rhythm’s own activity. The lane never holds the stage by itself for a single frame in 172 seconds. Its activity overlap with Rhythm is 1.06× the independence expectation, which is chance, so the two lanes are not taking turns either.
Onset coincidence between the two Moises lanes reads 0.0% in both directions against an 18.9% null, and my first reading of that was that Moises had partitioned one performance into alternating halves. The activity test refutes it. Ratios of 1.06× and 1.00× are chance, and chance is not alternation. The correct description is narrower and it is the one above: Lead is a low‑level residue lifted from inside the Rhythm performance.
This agrees with something the skill had already written down. audio_accuracy_audit.py
refuses to print an ownership number at all, because ownership_audit.py measured the
lead‑versus‑rhythm split separating by register rather than by player, at +0.2651
against a shifted‑time control of +0.2766. Two independent routes, the same refusal.
What the two staves contain, before any audio is consulted
On Kilgore the 2026‑08‑22 pass found the two staves overlapping in 8 bars and identical in 8 of 8, a per‑bar Jaccard of 1.000. Blind Man’s Arrow fails differently.
| Measure | Blind Man’s Arrow | Reading |
|---|---|---|
| Bars with notes, staff 0 / staff 1 | 82 / 82 | both play the entire song |
| Notes, staff 0 / staff 1 | 1051 / 1056 | near‑equal density |
| Bars note‑for‑note identical | 0 of 82 | not a duplicated staff |
| Mean per‑bar Jaccard | 0.230 | interleaved, not doubled |
| Pitch‑multiset Jaccard, whole song | 0.851 | same note vocabulary |
| Pitch range, staff 0 / staff 1 | 39–82 / 39–82 | identical range |
Two staves drawing from the same note vocabulary across the same range for all 82 bars, agreeing in no bar completely and in 23% of content on average, is one body of material dealt out into two hands. That shape is consistent with two guitarists doubling each other. It is equally consistent with one transcription split down the middle, so the notation alone cannot close the question.
An added staff must cover onsets nobody was covering
An added or “upgraded” staff must COVER ONSETS NOBODY WAS COVERING. yield = new_coverage / added_attacks. Below 0.05 is filler. detector_controls.py, control 14
This is the test that does not care which separator failed, because it never uses the second lane. It asks the recording directly whether the second staff earns its place, and it was run in both orders so neither staff got the easier job by accident.
| Base staff | Staff added | New onsets | Attacks added | Yield | Rotation null | Separation |
|---|---|---|---|---|---|---|
| Distortion Guitar | Overdriven Guitar | +43 | 686 | 0.0627 | 0.0911 | −0.0284 |
| Overdriven Guitar | Distortion Guitar | +56 | 716 | 0.0782 | 0.0957 | −0.0175 |
measured yield the same staff rotated to a random time position
Bars scaled to a 0.10 yield. In both orders the null bar is longer than the measured bar.
Adding the second guitar staff covers fewer new onsets than that same staff covers when it is slid to a random position in the song. The second staff is not reaching material the first one missed. Combined, the two staves account for 226 of 478 detected onsets, which is 47.3%, and the second staff carries none of that gain beyond chance.
Including the control that shows the method works when the answer is yes
A skeptic’s objection belongs here. An onset detector on a dense distorted guitar is far weaker than on drums, so a low guitar score could be the detector rather than the tab. The drum track answers that objection, and the symmetry of the two guitar staves answers what is left of it.
| Staff | Stem | Recall | Null | Sep | Precision | Null | Sep |
|---|---|---|---|---|---|---|---|
| Drums | drums.wav | 60.4% | 30.9% | +29.4 | 63.6% | 32.6% | +31.0 |
| Distortion Guitar | guitar.wav | 25.6% | 21.1% | +4.5 | 38.3% | 31.5% | +6.7 |
| Overdriven Guitar | guitar.wav | 24.8% | 20.5% | +4.3 | 35.6% | 29.4% | +6.1 |
| Overdriven Guitar | other.wav | 8.9% | 9.5% | −0.7 | 32.3% | 34.6% | −2.3 |
Same script, same tolerance, same null construction, and the drum staff clears its control by +29.4 and +31.0 points. The method detects a real alignment when one exists. Whoever built that drum track built it against this recording.
The two guitar staves then score +4.5 / +6.7 and +4.3 / +6.1. They are
statistically interchangeable. Same stem, same detector, same difficulty, and no measurement separates
one from the other. Two staves that the recording cannot tell apart are not two distinguishable players.
And staff 1 against other.wav lands below chance in both directions, so the second staff has
no home in the second lane.
What is supported, and what is refused
Blind Man’s Arrow drums clear their control by roughly +30 points on both recall and precision.
82 bars at 90 bpm in 4/4 is 218.67 s against a recording of 218.69 s. The notation lines up with the record to within 20 milliseconds over three and a half minutes.
It fails control 14 against its own rotation null in both orders, it is statistically interchangeable with the first staff against the same stem, and it has no independent lane in either separator. Nothing measured here supports the claim that the recording holds two distinguishable guitarists.
This is the limit worth stating plainly. Demucs separates by instrument class, so two guitarists both land in one lane, and the Moises lead lane is a residue rather than a player. Absence of separable evidence is not evidence of one player. What is established is that no available separation supports splitting this song across two staves, which is the decision actually on the table.
Measured from the reconstructed live files, not from a prior session’s notes
| Tab | Live revision | Hard failures | Gate verdict |
|---|---|---|---|
| Blind Man’s Arrow s6389274 | r8953534 | 0 | REVIEW hand skip only, a diagnostic |
| Kilgore Trout s6389251 | r8954002 | 2 | FAIL IMPOSSIBLE_SPAN ×1, TIE_INCONSISTENT ×1 |
Revision r8954002 was published at 23:17 UTC on 2026‑09‑07 and its description addresses the bar‑34
span only. The gate still reports a hard failure on staff 0, and it now includes a
TIE_INCONSISTENT the description does not mention. Queued as q‑2026‑09‑07‑e1ea9b.
The fix needs phrase lookahead across the tie chain rather than another local patch, which is what the
skill prescribes and what an earlier local patch already proved by turning 0 hard failures into 40.
No browser and no login, the live tab is fetchable from the public API
# pull the live revision and rebuild it as a gradeable file
python3 fetch_live.py 6389274 s6389274_LIVE.gp5
python3 ~/.claude/skills/impossible-guitar-parts/gp5_to_gpif.py \
s6389274_LIVE.gp5 s6389274_LIVE_gpif
python3 ~/.claude/skills/impossible-guitar-parts/impossible_gate.py s6389274_LIVE_gpif
# the two-guitar battery, every number against a rotation null
python3 independence.py "…/03 - Blind Man's Arrow/guitar.wav" \
"…/03 - Blind Man's Arrow/other.wav"
python3 partition_test.py "…/guitar.wav" "…/other.wav"
python3 tab_twin_test.py s6389274_LIVE.gp5
# control 14, run in both staff orders
python3 marginal_value.py s6389274_LIVE.gp5 "…/guitar.wav" 90
# each staff against its stem, drums included as the known-good control
python3 staff_vs_stem.py s6389274_LIVE.gp5 "…/drums.wav" 3 90
The live‑tab fetch uses the vendored s2gp module at
~/.claude/skills/songsterr-upload/vendor/s2gp/, which derives the CloudFront path from the
public meta API. The scripts above are kept beside this page in the session scratchpad.
htdemucs_6s lanes for
Blind Man’s Arrow, Moises role split for Kilgore Trout, and Songsterr revisions r8953534 and
r8954002 reconstructed from the public API. Governing skill:
impossible-guitar-parts. Controls: detector_controls.py.