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.
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.
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.
Each row is settled. A later chat should read this rather than re-derive any of it.
| Question | Decision | What settled it |
|---|---|---|
| Which build ships | LIVE HEAD, repaired in place | The 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-strikes | REMOVED | At all 63 positions the author's r7715683 carries exactly one plain stroke. Unanimous, and it needs no audio |
| Ride ghost notation | LEFT AS SET | Brandon's own edit, accent on beat 1 with 2, 3 and 4 plain. Never a defect |
| 202 absent ride notes | LEFT ABSENT | Cymbal 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 104 | WITHHELD | Bar-level tom presence separates chart-tom bars from chart-empty bars by only 1.15x, under the 1.5x floor |
| Bar 25 fill | LEFT AT 8 | The tom stem supports 8 to 9 at every threshold. The hand edit already stands |
| Bar 93, 2 toms | KEPT | Both supported at 5% and again at 0.2% of stem peak |
| Cymbal lane, 1,573 events | NO PER-EVENT ACTION | Whole lane confirms at 1.46x against a 1.33 chance floor, so a single event cannot be promoted |
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.
| Drum | Known before | Found by the full sweep | Removed |
|---|---|---|---|
| Snare | 49 | 49 | 49 |
| Kick | 0 | 12 | 12 |
| High mid tom | 0 | 2 | 2 |
| Total | 49 | 63 | 63 |
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.
Two finished builds were sitting on disk waiting to be uploaded. Measuring them against the live head is what stopped them.
| Build | Parent | Kick | Snare | Pedal hat | Toms | Distinct tom drums | Verdict |
|---|---|---|---|---|---|---|---|
| LIVE r8968524 | the tab itself | 504 | 342 | 245 | 168 | 6 | SHIP THIS |
| EXPERIMENT-v13 | RESTORED | 504 | 342 | 245 | 191 | 2 | REJECTED |
| CHART-TOMS | RESTORED | 107 | 193 | 6 | 185 | 4 | REJECTED |
| RESTORED-TEXTSAFE-v2 | ghost restore | 107 | 193 | 6 | 6 | 2 | parent 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.
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.
| Bar | Author wrote | Live holds | Cymbal energy | Against the null | Verdict |
|---|---|---|---|---|---|
| 87 | 20 | 0 | 14.6 | 0.30x | pause confirmed |
| 53 | 20 | 3 | 20.2 | 0.41x | pause confirmed |
| 51 | 20 | 0 | 23.0 | 0.47x | pause confirmed |
| 17 | 20 | 0 | 24.6 | 0.50x | pause confirmed |
| 2, 4, 98 to 105 | — | — | — | outside anchors | no 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.
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.
| Threshold | Chart-tom bars | Chart-empty control bars | Ratio | Floor |
|---|---|---|---|---|
| 5% of global tom peak | 3.00 | 2.60 | 1.15x | 1.5x |
| 2% | 5.40 | 5.00 | 1.08x | 1.5x |
| 1% | 9.00 | 8.20 | 1.10x | 1.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.
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 say | It may never say |
|---|---|
| Heads are PRESENT at a POSITION | How many heads |
| The engraving prints filled ovals rather than x noteheads | Which 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.
| Gate | Result |
|---|---|
| Drum staff loses exactly 63 | PASS 2,833 to 2,770 |
| Voice 0 completely untouched | PASS 1,889 both sides |
| Other eight tracks identical | PASS 2,765 positions |
| Only kick, snare and high mid tom change | PASS -12, -49, -2 |
| Every bar keeps its duration | PASS 1,038 voice bars |
| Zero same-drum same-instant stacks remain | PASS 0 left |
| CDATA wrappers preserved | PASS 137 of 137 |
| Nine track names survive | PASS NAMEDROP-CLEAR |
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.
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 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.
| Gate | Result | Detail |
|---|---|---|
| Regression, scope track 8 | PASS | 2,765 out-of-scope instances byte-identical, meters unchanged, bar count unchanged, track names unchanged, 63 in-scope changes |
| Alignment, snare stem | UNUSABLE | 115 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 stem | 42 of 63 | An onset within 70 ms in the matching stem, median distance 35.0 ms. By drum: 34 snare, 6 kick, 2 tom |
| Two hands, max 2 | 16 instants over | Identical in the baseline and the shipped file, so inherited and neither caused nor fixed here |
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.
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.
| Bar | Position | Three hand lanes |
|---|---|---|
| 29, 45, 49 | beat 3 | snare, hi mid tom, ride |
| 41, 85, 89 | beat 3 / beat 1 | snare, high floor tom, ride |
| 52, 53, 54, 56, 57 | beats 1 and 3 | snare, hi mid tom, ride |
| 55 | beat 1 | low 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.
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 element | Midi property claims | Articulation renders | Referenced from |
|---|---|---|---|
| 439 | 48, hi mid tom | 47, low mid tom | 111 instances |
| 441 | 48, hi mid tom | 41, low floor tom | 62 instances |
| Two definitions | 173 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.
Between two sessions, every one of these ran without erroring and returned a confident figure.
| Mistake | What it returns | Why it looks fine |
|---|---|---|
| Counting note ELEMENTS as notes | 445 against an expected 191 | GPIF 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 disagreements | it 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 file | note 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.
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.
| Route | Measurement | Floor | Verdict |
|---|---|---|---|
| Pitch, f0 of the attack | The five lane-assigned drums return medians of 90.7 to 95.6 Hz | separable clusters | CLOSED |
| Pan, inter-channel level at the attack | Best 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 it | 1.5x | CLOSED |
Source separation blends the toms in both dimensions. It preserves that a tom was struck and when, and it does not preserve which one.
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.
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.
| Figure | Value | Scope it belongs to |
|---|---|---|
| Snare, plain only | 193 | Author r7715683, and unchanged through every revision |
| Snare, all instances | 342 | r8968524, 193 plain plus 149 restored ghosts |
| Snare, all instances | 293 | r8970744, after 49 duplicate ghosts came out |
| Distinct snare POSITIONS | 293 | Identical in r8968524 and r8970744, since only duplicates were removed |
| Chart snare heads | not reportable | 5.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.
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