Provisional measurement · Phase 2 not accepted

Kilgore Trout guitar transcription

Independent verification pass run on the MacBook against the iMac's 2026-08-13 bundle. Every number below is reproduced locally from the shipped artifacts. The accuracy result is provisional because a hard gate still fails.

Machine MacBookPro · /Users/brandonchavez Bundle 27 of 27 hashes verified Date 2026-08-13

NewThe clean capo test, isolated

The live audit: "This audit measured that the capo-0 Rhythm staff agrees with the audio far better. It did not isolate the capo as the cause by holding everything else fixed. The clean test is to re-render c-tied.gp's Rhythm staff at capo 0 with no other change and re-measure."

c-tied-RHYTHM-CAPO0.gp is c-tied with exactly one XML property changed, CapoFret on track index 1 from 2 to 0. Every other byte of the archive was copied through unaltered.

BuildRhythm capoRhythm pitch supportedRhythm owner agreesLead, the control
c-tied as shipped2167/677 · 24.7%45.6%64.2% / 54.2%
c-tied, capo 0 only0397/626 · 63.4%71.9%64.2% / 54.2%
s6389251-chain490426/656 · 64.9%71.8%65.5% / 53.9%

The hypothesis is now a verdict. The capo is the cause.

Method note, stated because it matters.
librosa will not install on this Mac: llvmlite fails to build on both python 3.11 and 3.14. It is used in two places only, a 44100 to 22050 resample and a separate onset report.
The resample was substituted with scipy.signal.resample_poly at an exact 1:2 ratio, and the substitute was validated against the iMac's published chain49 numbers before any new measurement was trusted: controls 87.9% / 10.47 dB, 85.7% / 9.21 dB, 75.5% / 9.07 dB, margins 2.29 and 2.93, pitch 65.5% and 64.9%, owner 53.9% and 71.8%. Every figure reproduced exactly.
Onset detection returns an explicit not-computed marker rather than a fabricated number. It feeds none of the pitch results.

Tier 1 / 1bSource fidelity, measured against c-tied

The position gate is the one that separates a repair from a rewrite. It asks whether a note kept the string and fret the source gave it, unless that note was the thing being repaired.

BuildHard profilePitchPositionNotes movedGate verdict
s6389251-chain49.gp IMPOSSIBLE_SPAN ×1 Pass Pass 5 L · 14 R (1–2%) Fail
ALLPARTS-PLAYABLE.gp clean Pass Fail 528 L · 837 R (64% · 100%) Review
s6389251-BEST.gp = iter48 IMPOSSIBLE_SPAN ×1 Pass Fail blanket refret Fail
ALLPARTS-SOURCE-FAITHFUL.gp IMPOSSIBLE_SPAN ×2 Pass Pass — Fail
c-tied.gp stem source SPAN ×19 · TIE ×70 baseline baseline — Fail
songsterr-ai-reference.gp clean n/a n/a — Pass

Corrected: PLAYABLE's movement, measured against the minimal repair

A first pass here reported that PLAYABLE moved 100% of its healthy Rhythm notes. That number is raw position change and it overstates the fault. c-tied's Rhythm frets were written for capo 0 while the file declares capo 2, so any build keeping capo 2 must lower every fret by 2 just to be correct.

Build vs c-tied, RhythmAt the minimal repairBeyond it
ALLPARTS-PLAYABLE keeps capo 2466 of 891 · 52.3%425 of 891 · 47.7%
s6389251-chain49 drops capo to 0842 unmoved · 94.5%48 of 891 · 5.4%

PLAYABLE relocates 47.7% of the Rhythm staff beyond what the repair required. The over-relocations run to a higher string at a much lower fret: (+1 string, -7 fret) ×128, (+1, -11) ×31, (+2, -12) ×26. That is the cost function that likes low frets walking the part toward the nut, and it is the same shape as iter48 wearing a different filename. The corrected figure is smaller than the first one, and it still separates the two builds by an order of magnitude.

FindingThe Rhythm capo mutation, classified

c-tied carries capo 2 on the Rhythm staff and chain49 carries capo 0. The tuning is byte-identical in both. That change had to move either the frets or the sounding pitches, so it needed a verdict before anything downstream could be trusted.

c-tied.gp · Rhythm

capo2
tuning36 45 50 55 59 64
notes891
MIDI matches fingering0
MIDI differs891 · delta −2

Every note contradicts itself. The frets were written for an uncapoed neck while the capo field claims 2, so the fingering sounds a whole step above the pitch the file declares.

s6389251-chain49.gp · Rhythm

capo0
tuning36 45 50 55 59 64
notes891
MIDI matches fingering891
MIDI differs0

The notation and the fingering agree on all 891 notes. Removing the spurious capo flag reconciled the file with itself and left the frets alone.

Classification: supported correction. The Lead staff carries capo 0 in both files and agrees with its own fingering throughout, so the defect was confined to Rhythm. A player reading c-tied's Rhythm tab with a capo at the second fret would have played the whole part a whole step sharp against the record.

Why the pitch gate passed c-tied anyway.
pitch_census() resolves each note as p = m if m is not None else sounding_pitch(tun, capo, s, f).
The stored MIDI value wins whenever it exists, and c-tied stores a correct MIDI value on every note. The gate therefore compared two identical pitch multisets and reported gone none / new none, while the fingering a guitarist actually reads was wrong on all 891 notes. The audio audit reads the other field, and that is what exposed it.

Phase 2Audio accuracy, same denominators across all four

Each staff is scored against its own stem lane. A note is supported when its measured salience beats all three controls: wrong pitch by one semitone, wrong pitch by six, and wrong time. Notes below 130 Hz are dropped from the numerator and the denominator together, so the unjudgeable low register cannot inflate anyone's score.

Transcription Lead supported Rhythm supported Combined Rhythm owner Staff → stem Control sep.
chain49 391 / 597 · 65.5% 426 / 656 · 64.9% 817 / 1253 · 65.2% 71.8% L 2.29 dB · R 2.93 dB 87.9% @ 10.5 dB
songsterr 118 / 215 · 54.9% 418 / 1018 · 41.1% 536 / 1233 · 43.5% 73.7% L 2.88 dB · R 3.52 dB 74.0% @ 5.2 dB
c-tied stem source 367 / 572 · 64.2% 167 / 677 · 24.7% 534 / 1249 · 42.8% 45.6% both → L · 0.87 dB 70.5% @ 4.8 dB
SYNTH control ceiling 236 / 281 · 84.0% 269 / 347 · 77.5% 505 / 628 · 80.4% 83.7% L 21.8 dB · R 19.3 dB 99.1% @ 25.5 dB

The capo finding and the audio audit corroborate each other from independent directions. The audit scores sounding_pitch(tun, capo, s, f), which is what a player physically produces. c-tied's Rhythm staff scores 24.7% while chain49's scores 64.9% on the same recording, and the whole-step error is a complete mechanical explanation for that gap. Neither measurement was built to test the other.

On stem ownership. The critique's figures of 70.5% separation and 4.8 dB margin belong to the c-tied audit, where both staves map to the left stem and Rhythm holds a 0.87 dB margin. Ownership there is genuinely unresolved. chain49 separates its staves onto distinct lanes at 2.29 dB and 2.93 dB, and the synthetic control reaches 99.1% at 25.5 dB, which establishes that the detector behaves on cleanly separated material. Stem attribution still stays out of any accuracy claim.

BlockerThe single remaining hard failure, located

IMPOSSIBLE_SPAN — bar 62.938, Rhythm Guitar
written   s0f11 s1f4   span 7   ties none
sounding   [47, 49]   attacked   [47, 49]
held span 7 frets against a 4-fret hand at 128 bpm
simplest legal alternative → span 7: s0f11 s1f4

On this tuning the pitch 47 sits at s0f11 or s1f2, and 49 sits at s1f4 or s0f13. Every complete voicing of both notes together spans at least 7 frets, so no refingering closes this. The gate is correct to refuse it, and refingering is the wrong instrument for the job.

Original reading, retained for the record

Both notes were looked up in audit_chain49.json at beat 247.75, where the gate's bar 62.938 lands at 128 bpm under bar = 1 + beat/4.

Notef0MeasurableSalience vs wrong-time controlRead
pitch 47 · s0f11123.47 Hz No under 130 Hz floor not scored Unresolved
pitch 49 · s1f4138.59 Hz Yes sal 31.87 against ctrlT 49.90 Unresolved

Verdict: unresolved on both notes. Pitch 47 sits below the low_hz: 130.0 measurability floor, so it is excluded from both numerator and denominator and stays unresolved until the source mix arrives.

Pitch 49 was first read here as NOT SUPPORTED. That read was wrong and is withdrawn.
It loses to its wrong-time control, and so does the median note in that whole window. Across beats 224 to 256 the median sal - ctrlT margin is -2.53 dB, against +9 to +14 dB everywhere before beat 160.
A note failing where the median note also fails carries no information about that note. The measurement has no discriminating power there.

The actionable consequence: do not refinger this beat, and do not promote past it. The evidence at bar 62.938 is too weak to convict or acquit the chord, and the lower note needs the source mix regardless.

The regional dip, now explained

First hypothesis, refuted. Low register does not explain it. Spearman rho between the share of sub-130 Hz notes and the support rate is -0.236 across 13 windows, which is weak, and the windows at beats 288 to 352 carry 17 to 20 percent sub-130 Hz notes while scoring 68 to 74 percent support.

What it actually is: the guitar signal drops and the controls hold still.

BeatsMedian salMedian ctrlTMarginSupport
0–16040.2 – 45.128.5 – 31.7+9.5 – +14.367 – 89%
160–256 the dip31.0 – 32.129.3 – 34.6+1.7 to −2.541 – 46%
288–38452.4 – 53.727.8 – 31.7+20.7 – +25.468 – 76%

The control median stays flat between 25.8 and 34.6 dB across the entire song. The signal median falls by roughly 10 dB across beats 160 to 256 and then rises by roughly 21 dB after beat 288. The margin, and with it the discriminating power, collapses in the middle.

It is a property of the recording rather than of any transcription. The dip appears in all three at the same beats.

Beatschain49c-tiedsongsterr
128–16073.2%33.8%50.0%
160–19245.9%4.9%51.2%
192–22440.7%12.7%36.5%
224–25641.0%25.0%29.4%

No transcription is being penalised for a defect here. Beats 160 to 256 are a low-signal passage in the right guitar stem, and every candidate loses margin there together. Any verdict drawn from that window should be treated as low-confidence for all three.

FixedThe gate now checks both pitch fields

NOTATION_CONFLICT was added to tools/impossible_gate.py as a hard code. It compares every note's stored MIDI against sounding_pitch(tun, capo, s, f) and hard-fails on disagreement. The original is backed up alongside it.

Build, Rhythm staffcapoConflicts
c-tied.gp2891 of 891
s6389251-chain49.gp00
ALLPARTS-PLAYABLE.gp20
s6389251-iter48.gp and BEST25

Two builds repair the same c-tied defect by opposite routes. chain49 changes the capo to match the frets. PLAYABLE changes every fret to match the capo. Both reach zero conflicts. iter48 and BEST attempted the PLAYABLE route and left 5 notes unrepaired, which nothing had reported before this gate existed.

Regression, run with PYTHONPATH set to tools/
_tests/test_comparison_basis.py — 8 of 8 correct
_tests/test_promotion_rule.py — 38 of 38 correct
No verdict changed anywhere except c-tied and iter48/BEST gaining the new code. songsterr-ai-reference.gp still PASSes, so the check does not fire falsely.

LedgerReceipts present on this machine

Eleven receipts ship in the bundle. Receipt 6f5b0815969eca47, named in the critique, appears in none of them, and it appears in nothing this machine ran. The three runs below marked local are mine.

7d1254e2 · 2d4e5917BEST / iter48  ·  preservation PASS, position FAIL
52942b12 · 4779832fALLPARTS-PLAYABLE  ·  verdict REVIEW, position FAIL
5538dec2 · 13f93f5eALLPARTS-SOURCE-FAITHFUL  ·  position PASS, IMPOSSIBLE_SPAN ×3
b58a3301span88438, the parent chain49 replaced  ·  not shipped in the bundle
145164704462de17  ·  position PASS, SPAN ×1 + TIE ×1
05723529chain49 under the old gate 7a4696cd  ·  position PASS
236e383a · bc363696chain49 under gate ece41376  ·  local, preservation and position NOT_RUN

Preservation and position read NOT_RUN on the two local receipts because those tiers key off --source and --checkpoint, and the parent build s6389251-span88438.gp was left out of the bundle. Supplying that file restores both tiers against the true parent.