Superseded on 2026-09-08

Four verdicts on this page were measured against a flat 56.000 bpm grid that drifts up to 6.29 seconds away from the recording. The alignment gate reading UNUSABLE at 0.336, the coda discrimination of 1.15x, the ride per-event figure of 1.46x and the tom pan figure of 0.73x are all properties of that grid.

A metronome-anchored clock built from the Moises click stem reaches a kick and snare match of 0.684 against a guitar control of 0.196, and it locates 81 drum attacks in bars 98 to 104 that this tab leaves silent. Read Why the Watermelon GP is not done before acting on anything below.

Watermelon In Easter Hay, reconciled and shipped

Four parallel sessions had four answers for one drum staff. This is the decision list, the measurement behind each one, and the single revision that went live.

r8970744 LIVE 63 defects removed s6857183 copy tab 2026-09-08

What shipped. Sixty-three notes asked one drum to sound twice at the same instant. Every one of them sat in voice 1 on top of a voice-0 note that the original transcriber wrote as a single plain stroke. They came out. Nothing else on the staff moved.

Songsterr s6857183 revision r8970744, published, data hash v0-3-2-kXpvKWZs5NRnBy84. Verified by reading the published JSON back off Songsterr's own CDN.

63 → 0
Same-instant same-drum stacks
2,833 → 2,770
Drum staff notes
1,889
Voice 0, identical before and after
42
Bars touched
9 of 9
Track names kept
13
Build gates passed

The eight decisions

Each row is settled. A later chat should read this rather than re-derive any of it.

QuestionDecisionWhat settled it
Which build shipsLIVE HEAD, repaired in placeThe v10 to v13 chain and the chart-only build both read from RESTORED-s35881-TEXTSAFE-v2.gp, so shipping either wipes the kit rewrite and the hand-written bar 25 fill
The 63 double-strikesREMOVEDAt all 63 positions the author's r7715683 carries exactly one plain stroke. Unanimous, and it needs no audio
Ride ghost notationLEFT AS SETBrandon's own edit, accent on beat 1 with 2, 3 and 4 plain. Never a defect
202 absent ride notesLEFT ABSENTCymbal stem says the drummer paused. Bars 17, 51, 53 and 87 read 0.30x to 0.50x of the 88 bars that kept their ride
Coda toms, bars 95 to 104WITHHELDBar-level tom presence separates chart-tom bars from chart-empty bars by only 1.15x, under the 1.5x floor
Bar 25 fillLEFT AT 8The tom stem supports 8 to 9 at every threshold. The hand edit already stands
Bar 93, 2 tomsKEPTBoth supported at 5% and again at 0.2% of stem peak
Cymbal lane, 1,573 eventsNO PER-EVENT ACTIONWhole lane confirms at 1.46x against a 1.33 chance floor, so a single event cannot be promoted

The defect nobody had finished counting

A snare cannot be struck loudly and quietly at one instant. A kick cannot be struck twice at one instant either. The live staff carried sixty-three positions that asked for exactly that, each one a voice-1 note landing on the identical bar, position and drum as a voice-0 note.

The earlier pass found forty-nine of them and stopped at the snare. Sweeping every drum instead of one found twelve more on the kick and two on the high mid tom.

DrumKnown beforeFound by the full sweepRemoved
Snare494949
Kick01212
High mid tom022
Total496363

The provenance test

The question is whether the doubled note belongs to the original transcriber or arrived in our own later editing. Revision r7715683 answers it directly. That file holds 2,091 drum notes, every one in voice 0, across 193 distinct snare positions with zero stacked. At all sixty-three of the disputed positions it writes one plain stroke and nothing else.

Unanimous, 63 of 63. No position had a ghost there. No position had two notes there. The duplicate is ours in every single case, so removing it restores the author's staff rather than editing it.

The lineage that would have caused damage

Two finished builds were sitting on disk waiting to be uploaded. Measuring them against the live head is what stopped them.

BuildParentKickSnarePedal hatTomsDistinct tom drumsVerdict
LIVE r8968524the tab itself5043422451686SHIP THIS
EXPERIMENT-v13RESTORED5043422451912REJECTED
CHART-TOMSRESTORED10719361854REJECTED
RESTORED-TEXTSAFE-v2ghost restore107193662parent only

v13 disagrees with itself about which drum is playing. That file stores drum identity twice, as a Midi property and as an InstrumentArticulation index into the track's own kit table, and the two disagree. Stated in both scopes, because GPIF deduplicates note definitions: 2 note ELEMENTS disagree, and those 2 are referenced from 173 note INSTANCES. Read one way its 191 toms are 45×4 and 48×187. Read the other way they are 41×62, 45×4, 47×111 and 48×14. The two readings reconcile exactly: 62 + 111 + 14 = 187, and the 62 and the 111 are the two defective elements. The live head and the shipped file each return zero disagreeing elements, so this is v13's defect and not a reading artifact.

Corrected twice on 2026-09-08. The first version reported the single-lane figure as if it were the whole story. It was one of the two stored fields. A peer session reading the articulation index got the other, and the file is what is inconsistent. The second gave 173 without saying 173 of what. The articulation is the field the notation renders, so its numbers are the ones to quote, and every count here now names its scope. On a percussion staff the Midi property carries a pitched value and the kit index lives in InstrumentArticulation, which tr_ledger.py:189 states in its own source.

The chart build never carried the kit rewrite at all, so uploading it would have taken the kick from 504 back to 107.

The ride, settled on the stem

202 ride notes present in the original are absent from the live tab. Brandon's reading was that the original transcription wrote a continuous ride through bars where Colaiuta actually paused. The cymbal stem agrees with him.

The null is the 88 bars that kept their ride, median band energy 49.2. Four of the removal bars fall inside the alignment anchors and can be tested.

BarAuthor wroteLive holdsCymbal energyAgainst the nullVerdict
8720014.60.30xpause confirmed
5320320.20.41xpause confirmed
5120023.00.47xpause confirmed
1720024.60.50xpause confirmed
2, 4, 98 to 105———outside anchorsno verdict, left alone

The anchor span runs from stem 59.3 s to 506.1 s, so bars before it and the coda after it cannot be tested on this clock. They were left exactly as they stand.

Why the coda stays empty

The printed chart marks tom heads as PRESENT in bars 95 to 104. No count appears here and none should, since that scan is 5.0 px per staff space and a notehead count needs 15. Nothing was written into the tab there, and the reason is a measurement rather than a preference.

ThresholdChart-tom barsChart-empty control barsRatioFloor
5% of global tom peak3.002.601.15x1.5x
2%5.405.001.08x1.5x
1%9.008.201.10x1.5x

The bars the chart marks empty score the same as the bars it fills. A detector that cannot tell those apart cannot license adding a note, so the heads stay out until a rescan or a coda-local clock exists.

The resolution ceiling, applied to every chart reading here

One scan underlies every chart observation in this lineage, at 5.0 px per staff space. Per-head identity needs 6 and a notehead count needs 15, and magnifying to 8x or 16x adds nothing, because the information is not in the pixels.

A chart reading may sayIt may never say
Heads are PRESENT at a POSITIONHow many heads
The engraving prints filled ovals rather than x noteheadsWhich drum they name

Two observations were withdrawn on these grounds rather than defended. A stacked-notehead reading at chart bar 20 is gone entirely. The chart bar 86 check survives only as filled noteheads are present there, never as four of them and never on a named drum.

The three-hands finding does not depend on any of it. That the 16 instants are identical in the baseline and the shipped file is a comparison between two Guitar Pro files, so it needs no chart reading and survives the ceiling untouched.

Gates the build had to clear

GateResult
Drum staff loses exactly 63PASS 2,833 to 2,770
Voice 0 completely untouchedPASS 1,889 both sides
Other eight tracks identicalPASS 2,765 positions
Only kick, snare and high mid tom changePASS -12, -49, -2
Every bar keeps its durationPASS 1,038 voice bars
Zero same-drum same-instant stacks remainPASS 0 left
CDATA wrappers preservedPASS 137 of 137
Nine track names survivePASS NAMEDROP-CLEAR

The CDATA gate earned its place

The first build went through ElementTree and came out with zero CDATA wrappers. That is the exact state measured to blank every track name on import: RESTORED-s35881.gp carried 0 CDATA and lost 9 of 9 names on the original tab. The build was redone as text surgery on the raw GPIF so all 137 wrappers survive untouched.

The set difference, not a count

Both sides read from Songsterr's CDN. The change is a pure subtraction: 63 positions present in r8968524 and absent from r8970744, and zero positions present in r8970744 and absent from r8968524. Every removed position sits in voice 1.

The full list is published beside this page as setdiff.json, keyed by bar, voice, position in quarters and drum. The bars it touches are 6, 7, 8, 10, 11, 12, 13, 16, 17, 22, 23, 24, 26, 27, 28, 30, 31, 32, 35, 36, 38, 39, 42, 44, 45, 47, 54, 55, 56, 58, 59, 60, 62, 63, 64, 78, 80, 84, 85, 90, 92 and 97.

The same gates, run against the real stems

The transcription-repair machinery had passed its synthesized fixtures without ever meeting a real stem. Here it is, run against the actual 15-stem Watermelon set and the exact shipped artifact sha256 bc5ce3de02153f39.

GateResultDetail
Regression, scope track 8PASS2,765 out-of-scope instances byte-identical, meters unchanged, bar count unchanged, track names unchanged, 63 in-scope changes
Alignment, snare stemUNUSABLE115 of 342 matched at 50 ms. The gate refuses on a stated structural ground: the notated snare series is near-periodic, so a rotation of it is nearly itself and the null has no power. It routes to a landmark test, which was run separately and returned 2 of 4 at p 0.20
Removed positions vs their own stem42 of 63An onset within 70 ms in the matching stem, median distance 35.0 ms. By drum: 34 snare, 6 kick, 2 tom
Two hands, max 216 instants overIdentical in the baseline and the shipped file, so inherited and neither caused nor fixed here

What that ceiling actually means

The promotion gate is built to bless edits that rest on stem timing, and it requires a CONFIRMED alignment before any stem evidence may support an edit. This alignment is not CONFIRMED, so that gate would refuse, and it should.

The 63 removals do not rest on stem timing. They rest on provenance: the author's own revision r7715683 writes exactly one plain stroke at all 63 positions, unanimously, which is a document fact that needs no clock. The stem result above is corroboration for two thirds of them and it is not the basis. Nothing here is promoted as stem-validated.

Sixteen instants still ask for three hands

Present in the live tab before this edit and after it, unchanged. Each is a tom written under an untouched ride ostinato with the snare on the same instant.

BarPositionThree hand lanes
29, 45, 49beat 3snare, hi mid tom, ride
41, 85, 89beat 3 / beat 1snare, high floor tom, ride
52, 53, 54, 56, 57beats 1 and 3snare, hi mid tom, ride
55beat 1low tom, hi mid tom, ride

Resolving these means dropping one of the three lanes, and the ride lane cannot be adjudicated per event at 1.46x. Recorded rather than guessed.

The two bad note definitions, named

Counting the defect is weaker than naming it. Two note elements on track 8 of v13 claim one drum in their Midi property while their articulation renders another. Reproduced independently by two sessions from the same file.

Note elementMidi property claimsArticulation rendersReferenced from
43948, hi mid tom47, low mid tom111 instances
44148, hi mid tom41, low floor tom62 instances
Two definitions173 instances

The arithmetic closes both ways: 111 + 62 = 173, and 62 + 111 + 14 = 187, which is the whole hi-mid-tom count the Midi property reports. CHART-TOMS is the control at 14 elements and zero disagreements, both fields reading 43×46, 45×4, 48×100, 50×35 identically.

Four ways to read this file and get a clean wrong number

Between two sessions, every one of these ran without erroring and returned a confident figure.

MistakeWhat it returnsWhy it looks fine
Counting note ELEMENTS as notes445 against an expected 191GPIF deduplicates; elements are definitions, not events
Joining on a reader that exposes no note id"2834 disagree"every row compares against None and None never matches
Looking for <Property name="InstrumentArticulation">0 disagreementsit is a DIRECT CHILD of <Note>. The Properties list holds only ConcertPitch, Fret, String, TransposedPitch, Midi and the bend fields, so the search finds nothing on every note and reports a silent zero
Applying one track's kit table to every track~416 disagreements in every filenote elements are shared across tracks, so a drum kit table gets applied to guitar pitches

Verified here: searching the Properties list for InstrumentArticulation finds it on 0 of 15 reachable notes, which is exactly the silent zero.

The rule: a dual-field checker must test for DISAGREEMENT between the fields, never for a sentinel value. The missing-value case and the disagreeing-value case do not overlap in these files, so a sentinel test cannot see this defect at all.

A checker keyed on Midi == -1 would pass this file. tr_ledger.py:189 warns that reading only the Property returns −1 for every drum note. Measured here, 0 of 15 notes read −1 in v13 and 0 of 14 in the chart build; their Midi properties carry real values that agree with the articulation everywhere except those two definitions. The missing-value case and the disagreeing-value case are separate failure modes.

Per-head tom identity: both routes run, both closed

Naming which physical tom was struck stayed open all session. Two independent routes existed and neither had been run to a verdict. Both are now measured on the isolated tom stem, and both fail.

RouteMeasurementFloorVerdict
Pitch, f0 of the attackThe five lane-assigned drums return medians of 90.7 to 95.6 Hzseparable clustersCLOSED
Pan, inter-channel level at the attackBest pair 0.73x. Medians do fall in a sensible order, 48 at +0.34, 43 at +0.08, 50 at −0.27, and the IQRs of 0.70 to 0.85 swamp it1.5xCLOSED

Source separation blends the toms in both dimensions. It preserves that a tom was struck and when, and it does not preserve which one.

The source layer, checked rather than assumed

So per-head identity is not pending work. It is closed at a named layer, and the tab's tom lane assignments stay as the chart and the transcriber wrote them.

Counts reconciled under one scope

Most of the apparent disagreement between sessions is scope rather than substance. Every figure below is a Guitar Pro note INSTANCE on track 8, never a raw stem detection.

FigureValueScope it belongs to
Snare, plain only193Author r7715683, and unchanged through every revision
Snare, all instances342r8968524, 193 plain plus 149 restored ghosts
Snare, all instances293r8970744, after 49 duplicate ghosts came out
Distinct snare POSITIONS293Identical in r8968524 and r8970744, since only duplicates were removed
Chart snare headsnot reportable5.0 px per staff space, below the 15 px floor

The 342 against 293 gap is entirely the 49 stacked positions. Counting instances and counting positions answers two different questions, and naming which one is in play removes the disagreement.

Proof

Tab https://www.songsterr.com/a/wsa/frank-zappa-watermelon-in-easter-hay-brandon-edit-drum-tab-s6857183

Revision r8970744, published true, on moderation false

Read back from the CDN 2,770 drum notes, 63 positions gone, 0 stacks, voice 0 identical at 1,889

Other tracks 1061, 55, 334, 64, 360, 459, 324, 108, all unchanged