Songsterr s35881, drum track "Vinnie Colaiuta", tab PRESWEEP-r7715683.gp.
An earlier pass reported that ghost-marked ride positions matched a cymbal-flux criterion
1.45 times as often as a randomised baseline. This page rebuilds that measurement from the
hashed inputs with a saved script set, and reports what survives.
Revised 2026-09-06, later the same day. The detector is now reconciled exactly. An earlier version of this page attributed the published threshold 4.41 to a 2000–5000 Hz band. That was wrong. The documented 2000–12000 Hz band was right, and the difference was the flux operator. That version's shared-excursion section is withdrawn. The headline ratio is unchanged.
The short version
REPRODUCED The tab counts, the alignment constants, the
published threshold 4.41 at percentile 80.01, and the finding that no
supra-threshold excursion serves more than one scored position.
NOT REPRODUCED The 1.45× result. Three ranges appear on this page and each names a different subset:
RESTATED The 1,316 ghost notations come from one AntiAccent element on one shared note definition, so the file records one labelling decision rather than 1,316 per-stroke judgements.
Every earlier test compared ghost positions against OTHER GRID positions
The scramble preserves position within the bar, so it always landed on the same sixteenth lattice. That design could never ask whether the lattice itself carries strokes. This one does.
Design. From each on-beat plain ride at t0 with a log-linear decay fitted over t0+30 ms to t0+250 ms, score the three notated offbeat slots at t0 + 271.1, 542.2 and 813.3 ms against off-lattice controls at t0 + 135.6, 406.7 and 677.8 ms, halfway between them, where the score notates nothing. One detector scores both and it never receives ghost status: sparse log-compressed subband novelty, k=8, 1,322 peaks at 2.42/s, 30 ms tolerance. Controls are matched to slots by nearest predicted decay level, median absolute log-level gap 0.0085, so decay depth is held fixed.
| set | matched | rotation-null recall | gain | z | verdict |
|---|---|---|---|---|---|
| notated offbeat slots | 31.2% | 14.4% ± 4.2% | +16.8 pts | 4.02 | UNDETERMINED |
| decay-matched off-lattice | 4.6% | 14.6% ± 4.2% | -10.0 pts | -2.40 | UNDETERMINED |
The asymmetry is the finding. Notated positions sit 16.8 points above their rotation null while decay-matched off-lattice points sit 10.0 points below theirs, a 26.8-point separation between two sets scored by one detector under one null model. For the controls, 99.8 percent of null draws matched as well or better.
Across 563 decay-matched pairs: notated 171 of 563 = 30.4%, control 31 of 563 = 5.5%, difference 24.9 points, paired permutation over the label with 5,000 draws one-sided p = 0.0002.
| slot | decay age | notated | control | ratio |
|---|---|---|---|---|
| 1 | 271 ms | 26.1% | 5.8% | 4.50× |
| 2 | 542 ms | 34.9% | 6.2% | 5.63× |
| 3 | 813 ms | 30.5% | 4.3% | 7.09× |
The ratio does not fall as the preceding strike decays, which is the opposite of what residual decay predicts. Five of eleven sections favour the notated position at Benjamini-Hochberg q < 0.05, strongest section 3 at 55.1% against 4.3% with 35 of 35 discordant pairs favouring the notated position.
The gate still returns UNDETERMINED, and that is not a negative
z = 4.02 sits under the 5.0 confirm floor, and under this gate UNDETERMINED is never evidence against a tab. Collapse diagnostics are clean: 1.00 attacks per used onset, busiest onset 1 of 681, residual bias +5.4 ms, median absolute residual 16.8 ms, density CV 0.37 against a 0.6 bar.
Supported: an attack is present at the notated offbeat positions that decay-matched off-lattice points do not carry. Not supported: the identity of the striking instrument. This is evidence of an event, not of a Ride (middle) stroke.
GPIF deduplicates <Note> definitions, so a ghost flag lives on a definition
and one element can produce many notated occurrences. Reading the definition table directly:
| definition | occurrences | AntiAccent | distinct Beat defs | bars |
|---|---|---|---|---|
id 431 | 1,316 | Normal | 9 | 1 to 102 |
id 432 | 408 | absent | 9 | 1 to 104 |
id 432 is the property-identical plain counterpart
Every stored property matches id 431 apart from the AntiAccent element: InstrumentArticulation
15, Midi 51, Fret 51, String 5, ConcertPitch and TransposedPitch C-1, and beat Dynamic
F on 100 percent of occurrences in both. Definition identity introduces no
confounding property.
| position in the beat | id 432 (plain) | id 431 (ghost) |
|---|---|---|
| on the quarter-note beat | 407 | 2 |
| offbeat sixteenth, slot 1 | 0 | 405 |
| offbeat sixteenth, slot 2 | 1 | 456 |
| offbeat sixteenth, slot 3 | 0 | 453 |
Ride plain on the beat, ride ghosted on the three offbeat sixteenths. Two events out of 1,724 break the rule. Only 2 ghosted ride notes sit on a beat, so a metric-position control is impossible in this tab.
| ride definitions | ride occurrences | drum ghost occurrences | |
|---|---|---|---|
pre-sweep r7715683 | 2 (431 ghost, 432 plain) | 1,724 | 1,317 |
post-sweep r8768414 | 1 (id 418, no flag) | 1,724 | 0 |
Definition 431 did not survive with its flag stripped
It does not exist in the post-sweep file at all. The two ride definitions were merged into a
single id 418 carrying all 1,724 occurrences and 18 Beat definitions against 9 and 9
before. The note table was renumbered wholesale, which is the signature of an export and import
round trip rather than an attribute edit. The one extra Crash high ghost came from
id 428.
Restoration consequence. Writing AntiAccent onto id 418 would ghost all 1,724 occurrences, including the 408 that were never ghosted. Copy-on-write is mandatory: the repair splits id 418 back into two definitions by occurrence position, and the ledger records definition changes and expanded occurrence changes separately.
Three figures circulate. All three are correct at different scopes.
| scope | pre-sweep | post-sweep live |
|---|---|---|
| whole file, all 9 tracks | 1,333 | 16 |
| track 0 "Frank Zappa", guitar | 16 | 16 |
| track 8 "Vinnie Colaiuta", drums | 1,317 | 0 |
| track 8, Ride (middle) only | 1,316 | 0 |
| track 8, Crash high only | 1 | 0 |
| tracks 1 to 7 | 0 | 0 |
1,333 = 1,317 + 16. The sweep removed the drum-track flags and left the guitar flags untouched.
PRESWEEP-r7715683.gp | AI transcription | |
|---|---|---|
| tracks | 9, drum track 8 "Vinnie Colaiuta" | 3, drum track 1 "Drums" |
| bars | 105 | 279 |
| meters | 53× 4/4, 52× 5/4 | 230× 4/4, 48× 2/4, 1× 6/4 |
| tempo | 56 BPM, one automation | 135 then 110 BPM |
| total quarter notes | 472 | 1,022 |
| notation span | 3.75 to 500.36 s | 40.89 to 545.71 s |
| Ride (middle) | 1,724 | 596 |
| snare lane | Electric Snare MIDI 40, 193 | Snare MIDI 38, 11 |
| Hi-Hat closed | 0 | 125 |
| Pedal Hi-Hat | 6 | 0 |
| Kick | 107 | 475 |
The snare lane changes MIDI number and drops from 193 to 11. Closed hat goes from 0 to 125. Kick rises from 107 to 475. The bar grid more than doubles. Removing AntiAccent preserves note instances and cannot do any of that. Two independent transcriptions of two different renderings. Deletion, rebar and flag stripping are all excluded.
| element | definition |
|---|---|
| audio | one channel, arithmetic mean of the two stem channels, float in [-1, 1] |
| window | np.hanning(1024), applied unnormalised |
| hop | 256 samples at 44,100 Hz = 5.805 ms |
| magnitude | abs(rfft(frame * window)), no scaling by NFFT or window sum |
| flux | frame difference, negatives set to zero, then summed (L1) over band bins |
| frame 0 | previous frame taken as zeros, so flux[0] = 0 |
| threshold | a percentile of the strictly positive flux values |
| match | presence: any single frame inside ±45 ms whose flux exceeds the threshold |
The match rule is presence, and it is neither a local maximum nor a separately identified onset. Consecutive frames from one excursion can support a match, and one broad excursion can serve more than one window. The correct description of a positive is "matched the flux criterion".
The 3.51× threshold gap was an operator difference. The band in the written spec was correct.
| operator | definition | 80th pct of positive flux, MP3, 2000-12000 Hz |
|---|---|---|
| B, the published one | sum the band first, then take the positive first difference | 4.407 |
| A, used in the first version of this page | difference each bin, rectify, then sum | 14.303 |
Operator B puts 4.41 at percentile 80.01
Stereo MP3 read float32, unweighted channel mean to mono, no amplitude scaling,
np.hanning(1024), 256-sample hop, frame-start timestamps, summed rFFT magnitude
over bins 2000 to 12000 Hz inclusive, positive first difference, threshold at the 80th
percentile of strictly positive flux. Operator A rectifies before summing, so nothing cancels
and it runs about 3.2 times larger. Every result carrying threshold 15.487 came from
operator A and is withdrawn.
A match means the maximum positive flux inside a ±45 ms window exceeds 4.41. It identifies no instrument and no discrete onset, so the wording throughout is "matched the flux criterion".
The scoring clock is piecewise-linear through the accepted snare anchors. The global line seeds anchor matching and supplies the pruning residual. No ride event is scored against the global line.
| quantity | this reconstruction | published |
|---|---|---|
| offset | 37.590 s | 37.60 s |
| scale | 1.0122 | 1.012 |
| effective tempo | 55.33 BPM | 55.34 BPM |
| snare onsets detected | 616 (1.13/s) | 615 (1.13/s) |
| anchors | 97 | 137 (not reproducible) |
"Anchor gap" means distance to the nearer bracketing anchor. Withholding every third anchor from a dense set never creates a large gap, so error at 10 to 20 s needs deliberate thinning.
| anchor gap | n | median | 90th pct | max | over 45 ms |
|---|---|---|---|---|---|
| 2 to 5 s | 1,592 | 22.7 ms | 52.0 ms | 113.5 ms | 15.6% |
| 5 to 10 s | 1,582 | 27.6 ms | 60.7 ms | 101.6 ms | 25.5% |
| 10 to 20 s | 1,337 | 29.8 ms | 75.5 ms | 132.6 ms | 31.0% |
| 20 to 40 s | 740 | 27.0 ms | 70.9 ms | 152.0 ms | 27.7% |
| over 40 s | 218 | 40.5 ms | 87.1 ms | 150.2 ms | 45.9% |
Degradation is gradual. No band keeps its 90th percentile inside the 45 ms detector half-window, so alignment error contributes misses everywhere. The distance filter stays exploratory and a 10 s cutoff does not establish reliable performance across the region it keeps.
| quantity | this reconstruction | reported |
|---|---|---|
| observed ghost | 61.2% | 71.3% |
| observed plain | 65.9% | 75.3% |
| per-note eligible-only null | 62.2% (sd 0.012, 95% 0.597-0.643) | 49.0% (sd 0.013, 95% 0.465-0.517) |
| ratio | 0.98× (95% 0.95-1.02) | 1.45× (95% 1.38-1.53) |
Alignment cannot account for the gap
A rigid offset sweep from -150 to +150 ms under the reconciled detector peaks at exactly 0 ms with 61.2 percent. So 61.2 percent is the maximum obtained under the tested rigid global offsets, and the 71.3 percent discrepancy cannot be explained by a global timing shift. It does not rule out local alignment differences, a different anchor selection, or the unresolved 97 against 137 anchor discrepancy.
Two numbers reproduce exactly and two do not. The threshold and the no-double-counting result reproduce. The observed rate and the null mean do not, and the residual difference is not yet located.
Contiguous runs displaced together with within-block spacing preserved, alongside the per-note procedure. All under the reconciled detector at threshold 4.41.
| null procedure | eligible | null mean | sd | 95% interval | ratio ghost |
|---|---|---|---|---|---|
| per-note eligible-only | 100.0% | 0.622 | 0.012 | 0.597-0.643 | 0.98× |
| block of 4 | 98.3% | 0.623 | 0.019 | 0.586-0.660 | 0.98× |
| block of 8 | 94.4% | 0.627 | 0.026 | 0.576-0.674 | 0.98× |
| block of 16 | 94.1% | 0.623 | 0.031 | 0.566-0.678 | 0.98× |
The measured association is stable across the tested per-note and block-preserving randomisations. That is a narrow statement about the procedures tested, and it is not a claim of independence from every possible dependence structure.
Meter eligibility, and what the interval means
A position at or beyond 4.0 quarter notes exists only in 5/4 bars. 200 of 1,724 ride notes (11.6 percent) sit there and are ineligible for every 4/4 destination. Eligibility checks meter and the anchored span together. Instrumentation, arrangement and local cymbal activity stay uncontrolled.
The 95 percent interval is the 2.5th to 97.5th percentile of the null hit rate across randomisation draws. It describes variability under the randomisation only, and carries no uncertainty from alignment, detector validity, extraction quality or recording identity.
Under the reconciled detector, supra-threshold excursions run median 6 ms, 90th percentile 17 ms, max 81 ms, and none exceeds 181 ms, so none can span two windows spaced 271 ms apart.
| quantity | value |
|---|---|
| scored positions, all occupying distinct (bar, position) slots | 1,724 |
| excursions satisfying at least one scored position | 1,479 |
| excursions satisfying more than one | 1 |
Withdrawn from the first version of this page
That version reported 24.7 percent of ghost hits sharing an excursion against 71.0 percent scrambled, and a 1.47× distinct-excursion ratio which it attributed to scramble clustering by inference. The cause is now demonstrated rather than inferred.
Two candidates could produce the 1.47×: the collision structure of the per-note null, or the operator whose long excursions let one run serve several notes. Crossing both settles it.
| operator | null | collided | ratio, hit rate | ratio, distinct excursions |
|---|---|---|---|---|
| A per-bin | RIGID | 9.2% | 0.98× | 0.97× |
| A per-bin | PER-NOTE | 42.3% | 0.98× | 1.50× |
| A per-bin | PER-NOTE collision-free | 11.9% | 0.98× | 1.01× |
| B band-sum | RIGID | 9.2% | 0.98× | 0.97× |
| B band-sum | PER-NOTE | 42.3% | 0.98× | 1.54× |
| B band-sum | PER-NOTE collision-free | 11.9% | 0.98× | 1.01× |
The collision structure causes it, and the operator does not
The distinct-excursion ratio reaches 1.50 to 1.54× only under the colliding per-note null, and it collapses to 0.97 to 1.01× under both the rigid and the collision-free nulls, in both operators. The hit-rate ratio stays at 0.98× in all six cells.
Reference exemplars are plain ride positions that matched the flux criterion with the nearest anchor inside 3 s, giving 171. The disputed set is ghost positions at the same anchor quality, giving 770. Features measured on the mono MP3 from 30 ms before to 180 ms after each position.
| feature | plain median | ghost median | ghost / plain |
|---|---|---|---|
| transient peak | 0.0254 | 0.0102 | 0.403 |
| attack-to-floor ratio | 4.227 | 1.480 | 0.350 |
| post-peak RMS, 30 ms | 0.0209 | 0.0072 | 0.346 |
| decay ratio, 100-180 ms over 0-30 ms | 0.494 | 0.656 | 1.327 |
| pre-window RMS | 0.0052 | 0.0055 | 1.049 |
| attack time | 11.5 ms | 11.1 ms | 0.969 |
| spectral centroid | 9,009 Hz | 8,138 Hz | 0.903 |
| share 9 to 16 kHz | 0.389 | 0.345 | 0.886 |
| share 5 to 9 kHz | 0.374 | 0.424 | 1.134 |
Section-matched over 12 equal sections, 9 of which carry at least 5 of each: transient peak lower at ghost positions in 9 of 9 sections, attack-to-floor lower in 9 of 9, decay ratio higher in 7 of 9.
Reading it descriptively
At ghost positions the cymbal band shows a much lower transient peak, a far weaker attack relative to the local floor, a flatter decay profile and a darker spectrum with less 9 to 16 kHz content. Those four together are what residual decay from a preceding strike looks like, since cymbal highs shed fastest.
The design cannot separate decay from a genuinely soft stroke. Ghost positions are always the offbeats immediately after a plain strike, so decay sits there whether or not a soft stroke was also played. No classifier accuracy is claimed and no individual position is adjudicated.
An offset sweep from -200 to +200 ms. The snare control uses the snare stem with the same band-sum operator over 200 to 4000 Hz at its own 80th percentile.
| set | peak | floor | peak / floor |
|---|---|---|---|
| notated snare in the snare stem | 66.8% at -60 ms | 20.7% | 3.23× |
| plain ride in the cymbals stem | 65.9% at 0 ms | 30.4% | 2.17× |
| ghost ride in the cymbals stem | 61.2% at 0 ms | 38.8% | 1.58× |
The control recovers real temporal structure, so the method works. Both ride sets peak at 0 ms, which the first version of this page did not show because it used the wrong operator. The ghost set has the shallowest peak-to-floor contrast of the three, consistent with sitting inside a continuously active cymbal texture.
The sharpest question this data can be asked: does a disputed ghost slot carry energy beyond the predicted tail of the preceding verified plain ride strike?
For each strong plain on-beat exemplar at time T, a log-linear decay is fitted to the smoothed envelope over T+30 ms to T+250 ms. That window is clean, because the next notated ride sits at T+271 ms and nothing else is notated inside it. The fit is extrapolated to the notated ghost slot at T+271 ms and to an off-grid control at T+135 ms where the score notates nothing at all.
188 usable exemplars from 224 candidates. Median fitted decay time constant 304 ms.
| quantity | median | mean | share above 1 |
|---|---|---|---|
| excess at the notated ghost slot | 1.153 | 1.484 | 76.1% |
| excess at the off-grid control slot | 1.093 | 1.144 | 85.1% |
| paired difference, ghost minus control | 0.059 | 0.340 | 56.4% |
Sign test on the paired difference: 106 of 188 positive, one-sided p = 0.047, two-sided p = 0.093. Both slots exceed the fitted tail, because real cymbal decay is not a single exponential. The notated slot exceeds it only marginally more than the off-grid control does.
What the flux comparison adds, and how it reconciles the 0.98×
Flux at the notated ghost slot runs 3.11× the flux at the off-grid control (median 9.878 against 3.179). Grid positions carry substantially more transient activity than off-grid positions.
That resolves an apparent tension. The scramble preserves position within the bar, so scrambled positions land on sixteenth-grid slots in other bars. The 0.98× therefore says a ghost slot is no different from other grid slots, and it never tested grid against off-grid. The grid itself is acoustically real. What the null cannot test is whether this particular slot carries a stroke, because every grid slot carries activity.
Spectral centroid is not usable here as stated: the control at 135 ms sits earlier in the decay than the slot at 271 ms, so it retains more high frequency for reasons of elapsed time rather than of a new strike. Plain strike 8,219 Hz, ghost slot 8,486 Hz, control slot 9,016 Hz.
Verdict of the decay test
In the envelope domain the notated ghost slot carries only marginally more excess over the predicted tail than an off-grid control does, at two-sided p = 0.093. That is weak and not significant. It does not demonstrate added strokes, and it does not exclude them.
/notation-evidence-gate and its verdict_gate.py were run before any
done-claim. Both are the authority here, and they reject the rates on density grounds rather
than on the cross-window finding.
| claim | observed | baseline | ratio | verdict |
|---|---|---|---|---|
| ghost ride vs grid-preserving null, 45 ms | 61.9% | 63.3% | 0.98× | UNUSABLE, baseline over the 35% ceiling |
| plain ride vs grid-preserving null, 45 ms | 67.2% | 68.6% | 0.98× | UNUSABLE |
| ghost ride, 65 ms window | 69.9% | 70.9% | 0.99× | UNUSABLE |
| ghost ride vs the TIME-SHIFT null, the historical construction | 61.9% | 49.0% | 1.26× | UNUSABLE, baseline over the ceiling |
The historical 1.45× was unusable on density before any window question
Above a 35 percent chance baseline a small excess goes significant while meaning nothing. The historical 49.0 percent null sits well above that ceiling.
FMP 6.1.2, a sparser onset representation: log compression Y = log(1 + 100|X|),
positive first difference per subband across 2-4, 4-6, 6-9 and 9-12 kHz, summed, local average
over 300 ms subtracted, peak-picked with a 50 ms refractory gap.
| claim | observed | baseline | ratio | binomial p | verdict |
|---|---|---|---|---|---|
| ghost ride, k=8, 30 ms | 27.7% | 24.2% | 1.15× | 0.00174 | UNDETERMINED |
| ghost ride, k=6, 30 ms | 29.7% | 26.4% | 1.13× | 0.00385 | UNDETERMINED |
| plain ride, k=8, 30 ms | 27.7% | 24.2% | 1.14× | 0.0574 | UNDETERMINED |
UNDETERMINED is the endpoint, and it is never evidence against a tab
Ghost at 1.15× and plain at 1.14× are indistinguishable, which is what the 99.9 percent metric confound predicts. Both sit below the 1.5× floor, so neither is carried as support.
Settled, symbol semantics and lane convention only. Weinberg makes a parenthesised notehead a ghost stroke and extends it to cymbals, so the 1,316 marks on the Ride (middle) lane are well-formed notation. Refused. He does not establish that Vinnie played 1,316 quiet ride strokes on this take. That is performance evidence, and the audio returns UNDETERMINED.
The gated claim set, HARD 0 under the gate, is at claims.md.
Chart tempo, global fit, kick-anchored and crash-anchored maps, across 240 configurations of source stem, band, operator, window and threshold percentile.
A clamping artefact was caught before publication
np.interp clamps any event outside the anchor span onto the endpoints. The kick
map spans 4.3 to 384.6 notation seconds, leaving 390 of 1,724 ride events outside, piling
onto two timestamps. Those 390 lifted the rate to 71.7 percent at the documented 45 ms window and
briefly looked like a reconstruction at spec. Restricted to the 1,334 genuinely inside, the same
configuration gives ghost 63.4 percent against a 64.7 percent null, ratio 0.98×.
With span restriction enforced, every configuration reproducing both reported rates uses a 65 ms window. No 45 ms configuration survives.
| null procedure | 16th phase kept | meter kept | section kept | collision | null | ratio |
|---|---|---|---|---|---|---|
| shift by whole sixteenths | 100.0% | 0.0% | 77.9% | 37.6% | 63.7% | 0.97× |
| shift by whole beats | 100.0% | 0.0% | 24.4% | 38.3% | 62.2% | 0.99× |
| bar index, position-in-bar kept | 100.0% | 56.6% | 0.2% | 39.0% | 63.1% | 0.98× |
| bar index, meter must match | 100.0% | 100.0% | 0.3% | 39.8% | 62.4% | 0.99× |
| bar index, same section | 100.0% | 100.0% | 100.0% | 0.0% | 57.4% | 1.08× |
| one offset per source bar | 100.0% | 54.5% | 0.2% | 26.5% | 63.1% | 0.98× |
| shift by k × mean bar duration in TIME | 2.8% | 0.0% | 0.2% | 0.0% | 49.1% | 1.26× |
| uniform random notation time | 3.9% | 0.0% | 8.4% | 0.0% | 51.5% | 1.20× |
The historical 49.0 percent is reproduced to 0.1 points by a displacement measured in time, with an unambiguous signature: sixteenth-phase preservation falls from 100 percent to 2.8 percent. Every phase-preserving procedure lands between 62.2 and 63.7 percent. Seed spread 0.38 points across three seeds, so it is stable rather than tuned.
| window | ghost observed | plain observed | time-shift null | ratio |
|---|---|---|---|---|
| 45 ms, the spec | 61.9% | 67.2% | 49.0% | 1.26× |
| 65 ms | 69.9% | 74.0% | 59.9% | 1.17× |
| historical | 71.3% | 75.3% | 49.0% | 1.45× |
The historical 1.45× is a cross-window combination on a phase-destroying null
The numerator matches at 65 ms, the denominator at 45 ms. Taking the numerator from the 65 ms row and the denominator from the 45 ms row gives 1.43× against the historical 1.45×. Measured consistently at one window the ratio is 1.26× or 1.17×, never 1.45×. Both halves are now accounted for and neither survives a single consistent procedure.
Correction 1: the refined map is NOT independently validated
What I wrote: that the 123-anchor map "agrees with the 97-anchor version at a median difference of 0.0 ms", offered as evidence the refinement is sound.
Why that was wrong: the refinement searched a ±120 to 150 ms window centred on predictions from that same 97-anchor map. Agreement with the map that defined every search neighbourhood is circular. What it does show is stability under denser anchoring, a weaker claim.
Correction 2: the observed-rate gap was called unlocated
What I wrote: "the residual difference is not yet located". Why that was wrong: it is the match window. A 65 ms half-window gives 69.9 and 74.0 percent against the reported 71.3 and 75.3. The documented window is 45 ms.
Correction 3: "not reproducible at any threshold" was too broad
What I wrote: that the 1.45× is "not reproducible at any of 20 threshold and band settings". Why that was wrong: the detector reproduces exactly once the operator is right, and each reported figure is individually reachable. What does not reproduce is the two together.
The 14 unexplained anchors
137 reported minus 123 reached leaves 14 anchors unaccounted for. They are not noise. They could indicate another articulation category used as an anchor, a second stem, a looser tolerance rule, or manual intervention, and any of those would change how the historical map was built.
| quantity | historical | reproduced | status |
|---|---|---|---|
| observed ghost rate | 71.3% | 61.9% at the 45 ms spec window | mechanism identified as window width; 65 ms gives 69.9%. Exact historical implementation unresolved. |
| null rate | 49.0% | 63.3% grid-preserving | mechanism demonstrated as rhythmic phase destruction; off-grid gives 52.0%. Exact historical implementation unresolved. |
| ratio | 1.45× | 0.98× | not recovered. The two figures need different window widths, so no single procedure yields both. |
The 1.45× enrichment is not treated as recovered. Numerator and denominator are tracked as separate forensic problems, because they may come from two separate implementation choices.
DTW was tried first. Over a sparse impulse reference the cost is near zero wherever both signals are quiet, so the warp slides: unconstrained it disagreed with the validated map by a median of 7.7 s, and inside a ±4 s Sakoe-Chiba band still by 2.1 s. The map was right and the method was wrong.
Local-window onset refinement works. Keeping the validated map and resetting each notated snare inside a ±120 to 150 ms window reaches 123 anchors from 97. All 122 local slopes fall inside 0.918 to 1.103, median residual against the global line is -9 ms, and it agrees with the 97-anchor map at a median difference of 0.0 ms.
| alignment | anchors | ghost observed | plain observed | null | ratio |
|---|---|---|---|---|---|
| 97 peak-picked | 97 | 61.2% | 65.9% | 62.3% | 0.98× |
| 123 window-refined | 123 | 61.9% | 67.2% | 63.3% | 0.98× |
| reported | 137 | 71.3% | 75.3% | 49.0% | 1.45× |
Raising anchor density lifted the observed rate 0.7 points and the null 1.0 point. Alignment quality cannot produce the reported ratio, because it moves both terms.
The score alternates 4/4 bars of 4,286 ms and 5/4 bars of 5,357 ms, and the ride sits on a 268 ms sixteenth grid. A displacement preserving position within the bar keeps destinations on that grid. A displacement measured in time cannot, since no fixed interval is a whole number of bars in both meters.
| displacement procedure | destinations | null | ratio |
|---|---|---|---|
| by bar index, position-in-bar preserved | on grid | 63.3% | 0.98× |
| by k × 4 quarter notes | off grid in 5/4 | 59.5% | 1.04× |
| by k × mean bar duration in time | off grid | 52.0% | 1.19× |
| reported | unstated | 49.0% | 1.45× |
Off-grid destinations depress the null and inflate the ratio
In the right direction and close to the right size. The measured cause is section 11c: flux at an off-grid point runs 3.11× lower than at a notated grid slot, so a null landing between grid positions samples quieter audio.
What this accounts for. The null gap is largely explained, 63.3 to 52.0 against a reported 49.0. What it does not. The observed-rate gap, 61.9 against a reported 71.3, with alignment now ruled out as the cause.
Detector frozen at 2000-12000 Hz, sum before differencing, threshold 4.407, 123-anchor map. Only the rule turning a mapped position into a scored sample varies, applied identically to observed and null.
| sampling rule | ghost observed | plain observed | null | ratio |
|---|---|---|---|---|
| exact mapped timestamp, nearest frame | 8.0% | 10.0% | 8.1% | 0.99× |
| local max within 1 frame, 5.8 ms | 13.1% | 13.7% | 13.3% | 0.98× |
| local max within 2 frames, 11.6 ms | 22.3% | 24.8% | 23.2% | 0.96× |
| local max within 10 ms | 19.7% | 19.6% | 20.3% | 0.97× |
| local max within 45 ms, the spec | 61.9% | 67.2% | 63.3% | 0.98× |
| local max within 65 ms | 69.9% | 74.0% | 70.9% | 0.99× |
| local max within half a sixteenth, 135.6 ms | 91.7% | 94.4% | 91.4% | 1.00× |
| local max within one sixteenth, 271.1 ms | 97.6% | 97.5% | 97.5% | 1.00× |
A 65 ms half-window reproduces both reported observed rates
69.9 against 71.3 and 74.0 against 75.3, each inside 1.4 points. The observed-rate gap is window width, and the documented window is 45 ms. The ratio stays 0.96× to 1.01× at every window, because widening it lifts the null as much as the observed rate.
| window | null construction | ghost observed | null | ratio |
|---|---|---|---|---|
| 45 ms, spec | on grid | 61.9% | 63.3% | 0.98× |
| 45 ms, spec | off grid | 61.9% | 52.0% | 1.19× |
| 65 ms | on grid | 69.9% | 70.9% | 0.99× |
| 65 ms | off grid | 69.9% | 62.5% | 1.12× |
| reported | unstated | 71.3% | 49.0% | 1.45× |
They do not compound, and that is the settled statement
The wider window that reproduces the reported observed rate also lifts the off-grid null from 52.0 to 62.5 percent, so the ratio falls from 1.19× to 1.12×. The best reconstruction reached is 1.19×.
Each reported figure is individually reachable: the observed rate under a 65 ms window, the null under an off-grid displacement at 45 ms. No single consistent parameter set produces both at once, because the window that lifts one lifts the other.
The reported pair is 71.3 percent observed and 49.0 percent null. The observed figure needs a 65 ms half-window, so the question is what null reaches 49.0 percent at that same window. At 65 ms the observed ghost rate is 69.9 percent, so 1.45× requires a null of 48.2 percent.
| null procedure | null at 65 ms | ratio | null at 45 ms | ratio |
|---|---|---|---|---|
| shift by mean bar duration in time | 62.1% | 1.13× | 51.7% | 1.20× |
| mean-bar shift plus ±135 ms jitter | 62.6% | 1.12× | 51.8% | 1.19× |
| uniform random time in the span | 62.6% | 1.12× | 51.6% | 1.20× |
| required for 1.45× | 48.2% | 1.45× | 47.9% | 1.45× |
The published pair requires two different window widths at once
Even a uniform random null, the most extreme grid-breaking possible, reaches only 62.6 percent at a 65 ms window. Nothing gets near 48.2 percent there. The reported observed rate is reachable only near 65 ms and the reported null only near 45 ms, so the two figures cannot both come from one consistent procedure. That is the whole residual, stated as a measurement.
Read from Watermelon-In-Easter-Hay_p1.jpg as a native-resolution crop of a
595×842 scan, upscaled only for viewing. BartoRomeo, drumnet.ru, "Watermelon In a
Easter Hay", From Joe's Garage Act III Record, for Solo Guitar & Drums, section marker
(1:20) A.
| the chart shows | this reconstruction measured | agreement |
|---|---|---|
| tempo mark quarter = 55.47 | snare-anchored effective 55.33 BPM | 0.25% |
| alternating 4/4 and 5/4 within each system | 53× 4/4 and 52× 5/4 | exact |
| ride as a continuous beamed sixteenth stream of X noteheads | 1,724 ride filling ~94% of eighth positions | exact |
| dynamic hierarchy written with > accents | Dibden writes it with parentheses on offbeats | same content, two conventions |
Two independent human transcriptions agree the ride runs continuous sixteenths
They differ only in how the dynamic hierarchy is marked. The detector says ghost positions match at the same rate as other grid positions, and the eye says every grid position is played, so those two statements agree rather than conflict. The eye governs, and the detector does not overturn either transcriber.
Norman Weinberg, "Guidelines for Drumset Notation", Percussive Notes, June 1994, page 20, section Ghost Strokes, plate Ex. 11 "Parenthetical Notes for Ghost Strokes". Read at 400 DPI from the image-only scan, which carries no text layer.
"It is recommended that parenthetical note heads be used to indicate ghost strokes... Ghost strokes written as parenthetical notes allow the use of this performance technique on any type of instrument (drums, cymbals, cowbells, etc.)"
Ex. 11 draws three parenthesised noteheads and the third is a parenthesised X notehead above the top staff line, a ghosted cymbal. The 1,316 ride ghosts are standard-sanctioned notation, so the sweep removed a convention rather than a defect.
The Montana repair converted ghosts into staccato dots, a substitution a count check cannot see. Tested here with the same predicate applied to both flags in all three files.
| file | AntiAccent | Staccato | both on one note |
|---|---|---|---|
PRESWEEP-r7715683.gp | 1,317 | 0 | 0 |
r8768414-LIVE-EXPORT.gp | 0 | 0 | 0 |
RESTORED-s35881.gp | 1,317 | 0 | 0 |
No dot substitution happened on s35881. The sweep deleted flags cleanly, so the restore is a flag restoration plus the definition split, with no dots to remove.
| claim | source | why it falls |
|---|---|---|
| 1.70×, null 42.0% | superseded first pass | fallback contamination, 17.2% of destinations reverted |
| 1.45×, null 49.3% | evidence package s3 | not reproducible at any of 20 settings or under any of 3 procedures; every result lands at 0.95× to 0.99× |
| filtered 1.55× at 10 s | evidence package s4 | filtered reruns give 1.00× to 1.05× |
| on-beat 297 ghost, 93 plain | evidence package s5 | the tab holds 2 on-beat ghost notes |
| sign test 5 of 6 on-beat sections | evidence package s6 | rests on that impossible partition |
| sign test 12 of 12 sections | evidence package s6 | recomputed as 9 of 12, one-sided p = 0.073, two-sided p = 0.146 |
| slot table, 257 plain on the beat | ghost audit s2 | notation gives 407 plain and 2 ghost |
| threshold 15.487 and every ratio resting on it | this page, first version | wrong flux operator, per-bin instead of band-sum |
| "4.41 comes from a 2000-5000 Hz band" | this page, first version | the documented 2000-12000 Hz band was right; the operator differed |
| "24.7% of ghost hits share an excursion" | this page, first version | operator A artefact; under the published operator, 1 of 1,479 |
| 174 duplicate ride timestamps | this page, first version | rounding artefact; all 1,724 slots are distinct |
| "1,316 separate editorial judgments" | carried in the brief | one AntiAccent element on definition 431 |
Kept separate because no script on disk regenerates them: 137 anchors split 91 fit and 46 withheld, where the reconstruction reaches 97 and saturates near 116 even at a 250 ms acceptance window; band medians 18.1, 16.9 and 70.4 ms, where 1,337 thinning tests give 29.8 ms for the 10 to 20 s band; max withheld error 107.7 ms across 46 anchors, where the reconstruction gives 32 withheld points with a 55.6 ms max; and 1,626 scored with 98 outside the span, where all 1,724 map inside 59.33 to 506.08 stem seconds.
| role | bytes | sha256 |
|---|---|---|
PRESWEEP-r7715683.gp | 51,234 | 687445e3371131fd87070055eb01b43984684d2b02140d0c060510799043a016 |
r8768414-LIVE-EXPORT.gp | 51,028 | 5a8de7ebb7577ec8deb6db4397e302614b1df397f2c69e308202a882788abde4 |
RESTORED-s35881.gp | 74,935 | 89ebaa33cf652320a0da36b7fd3827c6abda842f31d5ce25834ac03e52018ef1 |
cymbals stem .wav | 96,185,118 | 84fd9fd648630c0d65945f7abe6e24994562ddf8d88960ad7dbc90722bade21b |
snare stem .wav | 96,185,118 | d07d4cf6a91f1a30f0411bfe74df3d8bf52d4372a3f3378d09cd2aab99425062 |
AI transcription .gp | 36,190 | b5a69749c67fbcb5fa49bc78f94b9b0710a1db0efc0f92b0ae662bc3adf42b88 |
Earlier drafts printed 48 of the 64 hex characters. These are the complete digests. Scripts
live at ~/Projects/_outputs/zappa-watermelon-ride-analysis/tools/:
gpif_events.py, definition_census.py, onsets.py,
align.py, anchor_sensitivity.py, threshold_sweep.py,
scramble_variants.py, excursion_taxonomy.py,
corrected_null.py, final_measures.py.
The old Ride (middle) transcription is extraordinarily dense, filling about 94 percent of available eighth-note positions. Its 1,316 ghost occurrences originate from one shared AntiAccent note definition rather than 1,316 independent editorial decisions.
Under the reconciled detector on this audio with this alignment, ghost positions matched the flux criterion at 0.98× the rate of the tested null procedures, holding across per-note and block-preserving randomisations. The residual gap against the reported 71.3 percent observed and 49.0 percent null is not located, and it is not the threshold and not a global alignment offset.
Section-matched spectral measurement shows lower transient peak and weaker attack-to-floor at ghost positions in 9 of 9 sections, with a flatter decay profile. That is consistent with residual decay and does not exclude a soft stroke.
Individual Ride (middle) strike validity remains unresolved. No deletion revision follows. Failing this detector does not prove Ben Dibden1's transcription wrong, and nothing measured here overturns a transcriber's reading of the record.