The v15 review asked for three things: leave the timing frame alone, turn the quiet snares into real ghost notes, and reshape the cymbals so they track the recording. This is what each one measured out to. Every number here comes from the score file and from atlantis_drums.wav, at the settled +76 ms score-to-audio offset.
All bar numbers on this page are 1-based and read from Sean_song_MULTIMIC_v19.gp5 (85 measures, 4/4 with 3/4 at bar 53), measured against atlantis_drums.wav at +76 ms.
The headline
Across every lane, agreement between the notated dynamic and the measured attack strength went from 0.06 on the ride and −0.03 on the crash to 0.89 and 0.98. The crash went from three dynamic values to seven. The ride's longest run of identical velocities dropped from 21 notes to 10. Not one note moved position, and not one physical conflict came back.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
A sibling chat had already moved the file from v15 to v18 before this one opened, so the first job was measuring what was actually left rather than re-fixing what was already done.
| What the review asked | State when I measured it | v19 |
|---|---|---|
| Preserve 127 BPM, bar lengths, onset positions, 3/4 at bar 53, the bar 5 grace note | already correct in v18 | held, and gated |
| Remove 9 simultaneous closed + open hi-hat pairs | already 0 in v18 | still 0 |
| Remove the snare + side-stick pairs in bars 79–83, and the crash + ride stacks | already 0 in v18 | still 0 |
| Use a pedal hi-hat where the recording has a closing chick | not attempted | evidence too weak, see §7 |
| Use a grace note where bars 79–83 hold a true flam | not attempted | detector fails its controls, see §7 |
| Turn the quiet snares into real ghost notes, keep backbeats accented | 72 marked with the parenthesis flag, 22 with the dot | 78 dots, 0 parentheses, 126 accents |
| Reshape the cymbal dynamics from the recorded attack strength | crash correlated −0.03, ride 0.06, bell flat at one value | 0.98, 0.89, 0.84 |
| Give each bell an accent above the surrounding rides | all 12 at one velocity | 4 levels, every bell clears its bar |
| Export to Ableton with velocity layers and small timing variation | not done | two MIDI files, §9 |
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
Every measurement depends on knowing where the score lines up with the audio. My first estimate came back 60 ms, against an established 76 ms in the existing filenames. That gap came from my own method.
A 2048-sample analysis window is 46 ms wide, so band energy starts rising when the transient enters the window rather than when it reaches the centre. The estimate reads early by roughly half a window. A second method, nearest-detected-onset matching, was worse: it found one onset every 39 ms, dense enough to match anything at any offset.
Correlating the notated hits against a time-domain envelope, on three lanes that share no frequency content, settles it:
| lane | notated hits | best offset |
|---|---|---|
| kick, 35–110 Hz | 486 | +77 ms |
| snare, 150–600 Hz | 269 | +74 ms |
| cymbals, above 6 kHz | 528 | +72 ms |
Three independent lanes inside 5 ms of each other. The established +76 ms is right and every measurement below uses it.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
The obvious worry with a full-kit stem is that a loud snare bleeds into the hi-hat band and the hat inherits the snare's dynamics. Measured on the first metric, that worry was real: a closed hat struck at the same instant as a snare read 3.3× louder than one struck alone, and 14% of notated hats read as silent.
Changing the measurement fixed it, with no correction factor applied. Peak-minus-noise-floor fails in dense passages, because at 127 BPM the "quiet" window before an eighth-note hit is still inside the previous hit's decay, so the floor rises to meet the peak. Taking the rise of a time-domain envelope instead:
| lane | band chosen | snare bleed, old metric | snare bleed, rise metric | notes reading silent |
|---|---|---|---|---|
| closed hat | 7–14 kHz | 3.30× | 1.19× | 14% → 0% |
| open hat | 9–16 kHz | 18.3× | 0.88× | 11% → 0% |
| crash | 8–16 kHz | 4.86× | 1.20× | 8% → 0% |
| ride | 3–7 kHz | 1.26× | 0.81× | 22% → 0% |
Bleed near 1.0 across every cymbal lane means a coincident snare no longer decides the hat's velocity. It also retires a claim I was one step from making: those "notated but silent" notes were an artifact of the raised floor. Under the rise metric every one of them has a measurable attack.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
The review scored the file as holding zero ghost notes. It held 94 snares at the softest dynamic, marked two different ways at once:
v19 uses the dot on all of them and the parenthesis flag on none. Which notes get it is decided by measured attack strength ranked locally, against the same lane within four bars, not against the whole song. A song-wide threshold ghosted ordinary backbeats inside quiet sections and missed real inner taps inside loud ones; the local ranking put ghosts across bars 16–22 and 57–75, the spans the review listed.
78 dot-ghosts, 126 accents, 1 grace note in bar 5, 0 parentheses.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
Spearman correlation between the notated velocity and the measured attack strength of that same hit. 1.00 would mean the notation ranks every hit exactly as the recording does.
| lane | notes | before | after | distinct values | longest identical run | |
|---|---|---|---|---|---|---|
| crash | 93 | −0.031 | 0.984 | 3 → 7 | 4 → 3 | |
| ride | 194 | 0.055 | 0.894 | 2 → 7 | 21 → 10 | |
| ride bell | 12 | flat, one value | 0.838 | 1 → 4 | 12 → 4 | |
| closed hat | 201 | 0.285 | 0.983 | 6 → 7 | 5 → 5 | |
| open hat | 46 | 0.373 | 0.984 | 5 → 7 | 3 → 5 | |
| snare | 269 | 0.399 | 0.899 | 6 → 7 | 7 → 7 | |
| kick | 486 | 0.316 | 0.970 | 6 → 6 | 6 → 6 | |
| side stick | 39 | 0.221 | 0.982 | 5 → 7 | 3 → 4 | |
| floor tom | 42 | 0.117 | 0.982 | 4 → 7 | 4 → 3 | |
| low-mid tom | 34 | −0.096 | 0.982 | 6 → 7 | 2 → 4 | |
| hi-mid tom | 20 | −0.364 | 0.982 | 4 → 7 | 4 → 5 |
Two lanes the review did not flag were inverted: the hi-mid and low-mid toms correlated negatively, meaning the softest recorded strokes were notated loudest. That is worse than random. It is fixed here, outside what was asked for.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
Every bell position the review listed is intact: bars 6, 7, 8, 22, 25, 26, 27, 57, 60, 78, 81, 85. In v18 all twelve sat at one velocity. In v19 each takes its own measured level, floored so a bell is always at accent level, and every one clears the rides in its own bar.
| bar | 6 | 7 | 8 | 22 | 25 | 26 | 27 | 57 | 60 | 78 | 81 | 85 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| v18 | 111 for all twelve | |||||||||||
| v19 | 79 | 79 | 79 | 79 | 95 | 95 | 79 | 79 | 111 | 127 | 79 | 79 |
Keeping ordinary rides under the bell needed care. Capping every ride within two bars of a bell reached 58 of 194 rides and knocked the ride's agreement with the recording from 0.98 down to 0.42, trading one kind of flatness for another. Restricting the rule to rides in the same bar as the bell touches 18 notes, holds 0.89, and still clears all twelve bells.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
Both need an isolated lane, and this stem is the full kit
The pedal hi-hat question. The review asked for a pedal hat wherever the recording holds a closing chick. Decay time in the 7–14 kHz band does separate the hats already notated open from those notated closed, but only at 70.6% accuracy (p = 0.017). Converting nine positions on a 70% classifier means expecting to get one wrong, which is not good enough to overwrite a notation choice.
The flam question. Bars 79–83 might hold true flams rather than single strokes. Two detectors both failed their controls. Narrowband peak-picking reported six strokes at a regular 10–17 ms spacing at a single hit, which is the envelope's own ripple. A broadband spectral-flux detector scored a plain backbeat in bar 9 as a flam and found zero strokes at a real hit in bar 13. In a dense outro with crash, ride and hats all sounding, every 55 ms window holds another drum's transient.
So neither conversion was made. The review permits one articulation at those positions as its first option, which is what the file does.
A DrumSep 5-piece split of this stem was separated and re-tested. It does not rescue either test. On the isolated hi-hat lane, open against closed separates at 73.9% (p = 0.0026), barely up from 70.6% on the full kit and still short of usable. On the isolated snare lane the flam detector scores 10 of 10 plain backbeats as flams. Both positions keep the single articulation the review allows as its first option.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
Re-parsing my own output with the same library proves the bytes parse, never that Guitar Pro or Songsterr will draw them. In these formats an out-of-range value raises no parse error at all. The element is silently dropped. So every scalar field is asserted against the set observed in a file known to open, and element counts are diffed against the source.
| group | check | result |
|---|---|---|
| structure held | tempo 127 | pass |
| 85 bars | pass | |
| 3/4 at bar 53, back to 4/4 at bar 54 | pass | |
| bar 5 grace note kept | pass | |
| note count unchanged: 1436 in, 1436 out | pass | |
| per-drum counts identical to v18 | pass | |
| no physical conflicts | zero closed + open hat pairs | pass |
| zero snare + side-stick pairs | pass | |
| zero crash + ride stacks | pass | |
| zero moments needing three hands | pass | |
| will render | every velocity on the 16-step ladder | pass |
| one fixed string slot per drum family | pass | |
| kick and side stick never share a slot | pass | |
| ride is GM 51, never GM 59 | pass | |
| note durations unchanged | pass | |
| articulation | zero parenthesis ghosts | pass |
| ghosts carry the staccato dot | pass | |
| backbeats still accented | pass | |
| cymbals | bell positions preserved | pass |
| every bell above the rides in its bar | pass |
20 passed, 0 failed. The one check nobody here can run is whether Guitar Pro and Songsterr draw it correctly on screen.
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
The 16-step ladder is a notation constraint. A sampler wants the real gradient, so the exported MIDI carries continuous velocity from the same measured attack strength:
| lane | kick | snare | closed hat | open hat | ride | crash | side stick | toms | bell |
|---|---|---|---|---|---|---|---|---|---|
| distinct velocity levels | 101 | 93 | 99 | 45 | 101 | 93 | 31 | 42 / 30 / 20 | 4 |
Timing carries each hit's measured deviation from the grid rather than a random humanize, mean-centred per lane so the average performance stays locked to 127 BPM: mean +1.66 ms, standard deviation 14.8 ms, clamped to ±40 ms.
Two files, because the mapping differs:
Source for every bar number in this section: Sean_song_MULTIMIC_v19.gp5 and Sean_drums_v19_ABLETON_GM.mid, 1-based measures, as imported to Songsterr.
All under ~/Projects/_outputs/songsterr-sean-bass/v19-dynamics/. Nothing the sibling chat is holding was overwritten; v18 is untouched.
| file | what it is |
|---|---|
| Sean_song_MULTIMIC_v19.gp5 | the score, for Guitar Pro and Songsterr import |
| Sean_drums_v19_ABLETON_GM.mid | GM percussion, continuous velocity, measured micro-timing |
| Sean_drums_v19_ABLETON_DRUMRACK_C1.mid | white-keys-from-C1 rack layout |
| drumsep/ | DrumSep 5-piece separation, finished. kick / snare / toms / hh / cymbals, 57 MB each. |