Nanook Rubs It: Drum Tab Sync Forensics

Songsterr s35865 · Frank Zappa, Apostrophe (') · measured 5 September 2026
RECORD277.23 s
TAB NOTATES286.96 s
TOO LONG BY9.72 s
GRID ERROR+3.51%
TOLERANCE2.00%
KICKS MATCHED26.1%

Verdict

The notes are right. The grid is wrong. Two separate errors sit in the time signature and tempo layer, and they add up. The tempo is written a beat and a fifth slow, and two bars carry padding that has no audio behind them. Together the tab notates 9.72 seconds more music than the record contains, so it drifts steadily away from the recording and finishes almost ten seconds after the track ends.
Source of errorSizeWhat it does to playback
Tempo written 69, record runs 70.2+1.74% Progressive drift. The gap grows through the song and reaches about 4.8 s at the end.
Bar 1 and bar 109 padded, 5.5 extra quarter beats+1.69% Dead grid. 4 extra eighths at the front displace every note immediately, 7 extra eighths run past the ending.
Combined+3.51% 9.72 s of accumulated error across a 4:37 track.

The file on the drive and the published tab are the same transcription

Before blaming either side I compared them note by note. The Guitar Pro file on the drive and the drum staff currently published on Songsterr carry identical content in every one of the 109 bars, comparing each note by its position in the bar and its drum MIDI number.

CheckGP on the driveSongsterr, publishedAgree
Bars109109yes
Drum notes13091309yes
Bars differing on (position, drum MIDI)none out of 109yes
Bar 1 time signature3/4, silent3/4, silentyes
Bar 109 time signature4/44/4yes
Tempo automations1 event, 69 at bar 0, hidden1 event, 69, type 4, hiddenyes
The published revision 8768967 changed parenthesised noteheads on the drum staff and nothing else. Its predecessor 4719269 carries the same 109 bars, the same 4238 total notes and the same meters, so the sync problem predates that edit and was inherited from the original transcription.

Error 1. The tempo is 69, the record is about 70.2

The tab carries exactly one tempo event: 69 quarter notes per minute at bar 0, marked invisible, holding for all 109 bars. I measured the record four independent ways and none of them returned 69.

MethodSignalQuarter BPM
Autocorrelation of the bar periodfull mix69.93
Autocorrelation of the eighth-note periodfull mix70.58
Normalised cross-correlation of the notated patternDemucs drum stem70.20
Kick and snare onset matching, offset sweptDemucs drum stem70.22
Written in the tab069.00

The record holds that tempo steadily. Measured in twenty-second windows across the track, the bar period stays between 2.543 s and 2.601 s, which is 69.2 to 70.8 quarter BPM. There is no tempo map to reconstruct here, one steady value covers the whole song, and the value in the tab is simply about 1.2 BPM under it.

The 6/8 bar is the clearest ruler. The record's bar measures 2.574 s. The tab notates it at 2.609 s under 69 BPM. Every bar is 35 milliseconds too long, and there are 101 of them.

Error 2. Bar 1 and bar 109 carry padding

Nanook Rubs It also exists inside the Nanook Suite, tab s35878, as bars 38 to 146. I aligned the two by drum content rather than by trusting the tempo marks, sliding the 109-bar staff across all 292 bars of the suite and scoring each position.

alignment score, standalone bar 1 landing on suite bar 38 : 109.0 / 109 next best offset (suite bar 37) : 68.0 / 109 next best offset (suite bar 39) : 67.0 / 109 bars differing on (position, drum MIDI) at the best offset : 0

So the same drummer's part is written twice, and the two writings disagree on exactly two bars.

BarStandalone s35865Suite s35878EighthsDifference
1 (silent pickup)3/42/86 vs 2+4 eighths
2 to 53/46/86 vs 6none
6 to 108identical meters, bar for bar0none
109 (tail)4/41/88 vs 1+7 eighths
Bars 2 to 5 only look longer than the suite writes them. A 3/4 bar and a 6/8 bar both hold six eighth notes, so they occupy the same time. The only real padding is bar 1 and bar 109, and it totals 5.5 quarter beats, 4.78 seconds at 69 BPM.

The mechanism: the bars are under-filled

Neither bar holds extra notes. Both declare more time than they contain, and Guitar Pro plays an incomplete bar for its full declared length with the remainder as implied rest. Bar 1 declares 3/4 and every one of the nine staves fills only a quarter note. Bar 109 declares 4/4 and every stave fills only an eighth. The written content already matches the suite exactly, so correcting the two time signature fields moves no notes at all.

BarDeclared meterDeclared lengthContent actually filledDead grid
13/43 quarter beats1 quarter beat2 beats
1094/44 quarter beats0.5 quarter beat3.5 beats

Where it entered the tab

Songsterr keeps the revision history, so I read the grid out of each historical revision rather than guessing.

RevisionDateAuthorBar 1Bar 109Quarter beatsGrid error
37231952025-11-06femboy.gardevoir6/81/8326.5+2.41%
41819662025-12-09femboy.gardevoir3/44/4330.0+3.51%
41819732025-12-09femboy.gardevoir3/44/4330.0+3.51%
87689672026-08-30Brandon chavez3/44/4330.0+3.51%
Revision 4181966 carries the description "General: changed time signature" with an anacrusis change on every staff. That edit expanded bar 109 from 1/8 to 4/4 and added 3.5 quarter beats, taking the grid from +2.41% to +3.51%. Bar 1 was already over-declared ahead of that edit, holding 3 quarter beats of meter against 1 quarter beat of content, so the two faults carry separate authors and separate dates.

What the padding looks like against the record

1
bars 2 to 108, correct length
109
padded bars   correct bars

The arithmetic closes

Two independent errors, multiplied, should reproduce the measured overrun. They do.

padding 330.0 / 324.5 quarter beats = +1.695 % tempo 70.20 / 69.00 quarter BPM = +1.739 % combined 1.01695 × 1.01739 − 1 = +3.464 % measured 286.96 s notated / 277.23 s record = +3.507 % residual = 0.04 percentage points
A 0.04 point residual means these two errors account for the whole discrepancy. There is no third problem hiding underneath, and there is nothing wrong with the note content.

The fix, and what it buys

I tested candidate grids by matching the tab's kick and snare positions against onsets detected in the Demucs drum stem, with the offset swept freely so each grid got its best possible showing.

GridQuarter beatsKicks matchedSnares matchedDuration error
As published, 69 BPM, no offset330.0 26.1%45.9%+3.51%
Tempo corrected to 70.2 only330.0 45.1%52.3%+1.71%
Tempo 70.2 and suite meters (bar 1 = 2/8, bar 109 = 1/8)324.5 59.5%76.9%+0.04%
Two edits, nothing touched in the notes. Set the single tempo automation from 69 to 70.2, and change bar 1 from 3/4 to 2/8 and bar 109 from 4/4 to 1/8. That takes the grid error from +3.51% to +0.04%, well inside the 2% tolerance that preflight_import.py already enforces, and it more than doubles the share of the record's kick hits the tab lands on.

The corrected file, built and checked

I wrote a corrected copy rather than touching the original. Three fields changed and nothing else in the archive moved.

− <Value>69 2</Value> → + <Value>70.2 2</Value> − <Time>3/4</Time> (bar 1) → + <Time>2/8</Time> − <Time>4/4</Time> (bar 109) → + <Time>1/8</Time> zip entries changed : Content/score.gpif only gpif byte delta : +2 changed lines : 6 (3 removed, 3 added) grid : 330.0 → 324.5 quarter beats notated : 286.96 s → 277.35 s against a 277.23 s record grid error : +3.51 % → +0.04 %

Run through the project's own import gate, the grid check clears: grid 277.4s notated vs 277.2s record, 0.04% off. The gate still refuses the upload on two unrelated policy faults.

STACKED. Revision r8907423 was submitted on 5 September 2026 and is sitting unreviewed on this song, restoring the 168 ghost notes that r8768967 removed. A grid fix sent now would replace a diff a moderator has not read yet.

NAMEDROP. The tab carries seven custom track names and Songsterr's importer clears every one of them on import. That happens inside the importer and no uploaded file can prevent it.

Both are upload-workflow faults rather than problems with the correction. Publishing to Songsterr is outward facing, so the corrected file is built and verified on disk and nothing has been sent.

Method, and what I could not settle

The record used as the ruler is the video Songsterr syncs this tab to, YouTube 8bXSsh3Z-xE, the official FrankZappaVEVO visualizer, running 277.235 seconds. Drums were isolated with Demucs htdemucs ahead of onset detection, since the full mix has vocals, keyboard, marimba and horns firing into the same onset envelope and it made the pattern matching much noisier.

One thing stayed unresolved. The exact bar-level start offset is ambiguous. A 6/8 groove this uniform autocorrelates strongly at the bar, so alignments separated by a whole bar, about 2.56 seconds, score almost equally. Different fitting passes returned offsets that differ by roughly two bars. The duration and tempo results do not depend on that, since both are measured from the record's own period and total length. Anyone re-checking the start point should do it against a structural landmark such as the two 4/4 bars at 6 and 7, rather than by correlation.

The onset detector also over-triggers on the drum stem, returning 551 kick-band onsets where the tab writes 333 kicks. Over-detection makes matching easier, never harder, so the 26.1% figure for the tab as published is a ceiling and the true match rate is lower.

Files and evidence

ItemPath
Our transcription on the drive ~/Projects/_outputs/songsterr-zappa-paren-fix/s35865-Nanook-Rubs-It/ORIGINAL-Frank Zappa-Nanook Rubs It-01-14-2026.gp
sha256 (identical to the iMac baseline copy) d9c36bc393ba62df511d35972f8f48ccaa0b60af2e43852ecd7dac5ba6d943fc
Nanook Suite, same part at bars 38 to 146 ~/Projects/_outputs/songsterr-zappa-paren-fix/s35878-Nanook-Suite/ORIGINAL-Frank Zappa-Nanook Suite-07-09-2026.gp
Measurements, machine readable ~/Projects/_outputs/zappa-nanook-sync-forensics/findings.json
Live tabsongsterr.com/a/wsa/frank-zappa-nanook-rubs-it-drum-tab-s35865
Nanook Suite tabsongsterr.com/a/wsa/frank-zappa-nanook-suite-drum-tab-s35878