Zappa drum tabs: what the paren pass actually did

20 Songsterr revisions measured against their exact prework baseline · 2026-08-31
0notes deleted, all 20 tabs, vs true baseline
4,565ghost noteheads stripped
349staccato dots added back
633beats pushed to pp (velocity 31)
18 of 20tabs left with no replacement marking

The three defects

1. The house rule was applied half way

The rule is that a ghost takes a staccato dot at velocity 31 and never a parenthesis. fix_parens.py contains only the deletion half. It strips <AntiAccent> and has no code path that writes an <Accent>. Montana and Zomby Woof got their dots from separate one-off builds (build_v2, build_dots). The other 18 tabs shipped with the parenthesis removed and nothing put in its place, so 4,216 quiet hits are now written as ordinary hits. That is notation destroyed, and it is the literal sense in which hits disappeared.

2. 633 beats were silenced to pp

When --no-redynamic is not passed, any beat whose notes are all ghosts is rewritten to <Dynamic>PP</Dynamic>. Keep It Greasey took 347 of these, Inca Roads 83, Montana 79. Those hits still exist in the file and play back at velocity 31, which is why they read as missing by ear while every note count stays intact.

3. Non-drum staves were altered, so "articulation flags only" is not accurate

The Guitar Pro round trip changed six tabs beyond the drums. Carolina Hard-Core Ecstasy has 480 guitar fret rewrites on the Frank Zappa staff, where the baseline carried fret 0 and ours carries real frets. Uncle Meat has 73 velocity changes on Piste 10, 50 of them losing fff. Zoot Allures and What's New In Baltimore had null frets written to 0. Alien Orifice, Inca Roads and Watermelon In Easter Hay gained rest beats from rest respelling. Bars, voices and note counts are unchanged in every case.

Settled: the sparse tabs were already sparse

Oh No reads 1,669 notes before and 1,669 after, with an identical event stream and no lane changes, measured against revision 7494834, the exact revision that existed before the edit. Its missing crashes were absent from the Songsterr source we downloaded. The same holds for all 20. No repair should be built on the theory that this pass deleted them.

Per-song evidence

Songnotes
base → ours
ghost
stripped
dots
added
beats
→ pp
result
Watermelon In Easter Hay
off both albums
4,856
→ 4,856
13170 — marking deleted, nothing added
Keep It Greasey
off both albums
14,442
→ 14,442
6290 347 marking deleted, nothing added
Muffin Man
off both albums
3,904
→ 3,904
5780 33 marking deleted, nothing added
Drowning Witch
off both albums
16,297
→ 16,297
4190 — marking deleted, nothing added
Montana
Over-Nite Sensation
7,966
→ 7,966
317317 79 converted to dots
The Black Page
off both albums
1,321
→ 1,321
1730 12 marking deleted, nothing added
Nanook Rubs It
off both albums
4,238
→ 4,238
1680 1 marking deleted, nothing added
Nanook Suite
off both albums
12,896
→ 12,896
1680 1 marking deleted, nothing added
Inca Roads
off both albums
7,636
→ 7,636
1650 83 marking deleted, nothing added
Carolina Hard-Core Ecstasy
off both albums
8,006
→ 8,006
1440 — marking deleted, nothing added
Oh No
off both albums
1,669
→ 1,669
1410 — marking deleted, nothing added
Alien Orifice
off both albums
4,496
→ 4,496
860 — marking deleted, nothing added
Whats New In Baltimore
off both albums
4,190
→ 4,190
590 — marking deleted, nothing added
Fembot LIVE TO PUBLIC
off both albums
3,713
→ 3,713
570 28 marking deleted, nothing added
Zoot Allures
off both albums
621
→ 621
530 — marking deleted, nothing added
Zomby Woof
Over-Nite Sensation
7,479
→ 7,479
3232 20 converted to dots
Uncle Meat
off both albums
6,142
→ 6,142
240 12 marking deleted, nothing added
Catholic Girls
off both albums
6,380
→ 6,380
160 10 marking deleted, nothing added
Zomby Woof AI LIVE TO PUBLIC
Over-Nite Sensation
411
→ 411
100 4 marking deleted, nothing added
Trouble Every Day Live
Roxy & Elsewhere
2,539
→ 2,539
90 3 marking deleted, nothing added

The tom stack, measured

On Zomby Woof, 66 beats carry Tom Low (MIDI 45) at staff position 2.5 and Tom Low-Mid (MIDI 47) at staff position 2. Those are a line and the space immediately below it, two adjacent noteheads, which is the cluster no one writes for toms. In all 66 beats the two toms are the only notes present, with no kick and no cymbal underneath.

Zomby Woof s412162, tom lane to staff position
  FloorHi    midi 43   position 3     x13
  TomLow     midi 45   position 2.5   x99     <-- adjacent pair
  TomLowMid  midi 47   position 2     x209    <-- adjacent pair
  TomHiMid   midi 48   position 1     x49
  TomHi      midi 50   position 0.5   x2

  66 beats: [(47, 2.0), (45, 2.5)]  and nothing else in the beat

The earlier session tested whether the two attacks were flam-separated in the drum stem, found almost no 10–35 ms gaps, and concluded the pairs were two-hand hits and correctly notated. That test cannot separate one tom written onto two voices from two toms genuinely struck, and it cannot say which drums they were. The question was never answered.

Scope

The ask named Over-Nite Sensation and Roxy & Elsewhere. Selection ran on a catalog-wide parenthesis sweep of 105 Zappa tabs, so the filter became "has parentheses" rather than "is on these two records". Only 4 of 20 edited tabs sit on either album. Of the 16 Over-Nite Sensation tabs on Songsterr, 3 were touched; of the 24 Roxy tabs, 1 was touched. The untouched ones are almost all AI transcriptions, which write no parentheses and therefore never entered the defect list, even though those are the ones most in need of repair.

Status of the 20 revisions

Repair method for the next pass

  1. Take the exact prework Songsterr revision as an immutable baseline. It is identified per song in baselines.json.
  2. Align that baseline to the correct album performance before any note is touched.
  3. Map every published transcription passage onto that same timeline.
  4. Use the sources and the recording to find missing hits, extra hits, wrong drum identities, questionable rolls, cymbal choices and suspicious tom stacks.
  5. For a tom stack, settle how many physical attacks occurred, then their kit identities, then notate those identities normally. Presentation comes last.

The rule. No drum event is removed because an algorithm found a simpler pattern. No revision is called corrected because it matches its predecessor. Every deleted event needs affirmative evidence it was wrong, every added event needs audio or published notation support, every changed drum voice needs evidence for the new identity. Published transcription has priority where it covers the exact performance, the recording settles what the transcription does not show, and the original GP holds everything neither source disproves.

Measured from api/meta/{songId}/{revisionId} and the CloudFront track JSON, rests excluded, walking master bars so shared objects count once per occurrence. Baselines are the newest revision by another editor preceding our first edit. Data: baseline_diff.json, baselines.json, live_diff_report.json.