Step sequencer · grid resolution · loss preflight
Why Do Notes Disappear When You Change Sequencer Resolution? A Same-Row Collision Preflight
A denser pattern can contain two hits from the same drum row inside the time span represented by one cell on a coarser grid. FingerDrum remaps every active source cell into the target grid when you change resolution. If two cells from the same row receive the same target address, one target cell cannot store both: the hit count falls and the App shows a merge warning. This guide predicts those collisions before the change, identifies the surviving velocity and length, and proves why switching back cannot reconstruct the missing event.
Scope: the exact mapping and survivor rules below describe the current FingerDrum step-pattern implementation audited on August 22, 2026. The test keeps the same project, beat count, bar count, row assignments, sounds, and loop boundary, and changes only the sequencer resolution. It does not describe quantizing a live MIDI performance, importing notation, altering tempo, or changing a row’s loop length. Other sequencers may retain simultaneous MIDI events, expose microsteps or retriggers, change step duration without remapping stored cells, or use a different rounding rule; verify the named product instead of transferring FingerDrum’s formula. The source-to-target ledger, four C0 gates, and R1 return test are FingerDrum’s original editorial framework.
For a source pattern with O total cells and a target with N, FingerDrum maps zero-based source cell s to floor(s × N ÷ O). Group active events by (row, target cell). A one-event bucket incurs no collision loss, but the event still moves to its target address and its length is scaled and clamped; a bucket containing more than one becomes one target event. Hits on different rows can share a target cell without merging. Preserve a duplicate before changing resolution because returning to a finer grid spaces the survivors out; it does not recreate discarded source events.
A coarser view, MIDI quantization, and cell resampling are different operations
“Set the grid to 1/16” can describe several unrelated actions. Apple documents a Logic Pro region-quantize parameter that changes playback positions non-destructively while retaining the original timing. Ableton separately lets an editor disable grid snapping and provides a Quantize MIDI Tool for selected notes. Steinberg moves selected MIDI-event starts toward grid positions and also documents “double notes”—same-pitch notes at exactly the same position—that can remain as separate events until a dedicated command removes them. Novation documents six microsteps inside one Circuit Tracks step, so one visible coarse step can contain repeated triggers. None of those storage models implies that one cell must equal one stored onset.
FingerDrum’s current step pattern is different: each instrument row and step address contains one StepCell. Changing the resolution computes a new total number of cells for the same beat-and-bar container, resamples every active cell into that new matrix, then commits the result. The UI compares active-cell counts before and after the remap; if the count falls, it displays the warning that dense notes may merge. That warning identifies a loss after calculation, but it does not name the row, source cells, target cell, or winning attributes. The preflight supplies those missing details.
| Operation | Possible data model | Question to answer before editing |
|---|---|---|
| Change only visual snap/grid | Original event times remain independent | Does the control alter display, future edits, playback, or stored data? |
| Quantize MIDI events | Several events may reach one time coordinate | Are exact doubles retained, reordered, shortened, or removed? |
| Use step microtiming/retrigger | One coarse step may encode several onsets | How many substeps or repeats are documented? |
| FingerDrum resolution change | One cell per row and target step | Which source cells map to the same (row, target) key? |
Freeze P0 before touching the resolution picker
Duplicate the FingerDrum project and name the untouched copy P0. Work on a second copy named C0. The project library exposes a Duplicate action; use it before the change, not after the warning. A screenshot is useful for visual comparison, but it is not a substitute for the editable source because it does not preserve velocity or note length.
- Write the container: record beats per bar, number of bars, source resolution, and target resolution. Do not change tempo, loop bars, row order, or sounds during this test.
- Calculate grid sizes: FingerDrum offers
1/4,1/8,1/8T,1/16, and1/16T. Total cells equal steps per beat × beats per bar × bars. - Inventory active cells: open Instruments and make every existing row visible. Count lit cells from left to right, beginning with 01. On the grid, count each amber note bar from its start through its right edge; that actual source-cell span is
oldLength. Tap the lit cell to open Edit Note and record its displayed velocity percentage. Treat any highlighted note-value chip only as a cross-check: a dragged length may match no chip, while rounding or end-of-pattern limiting can make more than one chip match. Count active cells per row and overall. - Choose one direction: this example audits
1/16 → 1/8in one 4/4 bar, soO=16andN=8. Do not combine a straight-to-triplet change with a second edit. - Do not switch yet: finish the address ledger first. The predicted count is the acceptance criterion for C0.
A total of 12 becoming 11 proves that one cell was lost, but not whether it was a kick, snare, hat, or another instrument. The row count localizes the loss. It also prevents a correct kick-plus-snare unison from being mislabeled as a collision merely because both land on the same time step.
Map every source address before listening
FingerDrum iterates each row independently. In zero-based coordinates, source cell s maps to:
target = floor(source × targetTotal ÷ sourceTotal)
For 16 → 8, target zero-cell is floor(s ÷ 2). The worksheet uses one-based labels; the App grid itself has no column numbers, so count from the leftmost cell as 01. Source cells 01 and 02 both map to target 01, source 03 and 04 map to target 02, and so on. The formula is pinned to the current FingerDrum source; do not substitute “nearest” or “round” from another editor.
| One-based source cell | Zero-based calculation | One-based target cell | Same target bucket |
|---|---|---|---|
01 | floor(0 × 8 ÷ 16)=0 | 01 | T01 |
02 | floor(1 × 8 ÷ 16)=0 | 01 | |
03 | floor(2 × 8 ÷ 16)=1 | 02 | T02 |
04 | floor(3 × 8 ÷ 16)=1 | 02 | |
05 | floor(4 × 8 ÷ 16)=2 | 03 | T03 |
06 | floor(5 × 8 ÷ 16)=2 | 03 | |
07 | floor(6 × 8 ÷ 16)=3 | 04 | T04 |
08 | floor(7 × 8 ÷ 16)=3 | 04 |
16 → 8 check
On each row, inspect the pairs 01+02, 03+04, 05+06, 07+08, 09+10, 11+12, 13+14, and 15+16. If both cells in any one pair are lit on the same row, that pair maps to one target cell and merges.
Repeat the arithmetic through the full pattern; do not restart the mapping at a screen page unless the stored pattern itself restarts there. A triplet-to-straight conversion needs its actual full-pattern totals. For example, a one-bar 1/16T → 1/16 change uses 24 → 16, not a guessed rule that simply deletes “every third triplet.”
Only groups with the same row and target address collide
Give each active source cell a key (row, target), then group identical keys. In this controlled 16 → 8 example, the hat row contains adjacent source cells 01 and 02. Both map to hat target 01, so that bucket is many-to-one. A snare at source 02 also maps to target 01, but its row is different; it remains a separate event and can sound simultaneously with the surviving hat.
| Row | Source | Velocity | Length | Target key | Preflight result |
|---|---|---|---|---|---|
| Hat | 01 | 0.42 | 1 | (Hat,01) | Collides with Hat 02 |
| Hat | 02 | 0.78 | 1 | (Hat,01) | Collides with Hat 01 |
| Hat | 03 | 0.56 | 1 | (Hat,02) | One-to-one |
| Snare | 02 | 0.90 | 1 | (Snare,01) | One-to-one; different row |
The four source cells produce three unique target keys, so the expected active-cell count is three. This is a structural calculation, not an audio judgment. Choke groups, sample tails, and effects may make two surviving rows sound like one gesture; conversely, a long sample may hide the missing retrigger. Compare the matrix first and audio second.
Predict the surviving velocity and note length—not just the count
When a FingerDrum target bucket is empty, the first mapped source cell fills it. A later source cell replaces the existing one only if its velocity is higher. Therefore the (Hat,01) bucket above keeps source 02 at velocity 0.78. If velocities are equal, the earlier source cell remains because later equal values do not replace it. This is a deterministic implementation rule, not a recommendation that “louder is musically better.”
The surviving source length is then scaled in proportion to the grid-size change:
newLength = round(oldLength × N ÷ O), clamped to the available target cells
The scaled length is clamped to at least one cell, and a note near the pattern end cannot extend beyond the final cell. If two colliding sources have different lengths, only the chosen velocity survivor contributes its length. A count-only audit can therefore pass while articulation still differs from the intended source.
| Observed after switching | Interpretation | Next check |
|---|---|---|
| Count falls exactly as predicted | Known same-row many-to-one merge | Verify winning velocity and scaled length |
| Kick and snare remain on one target step | Expected cross-row simultaneity | Do not “fix” a non-collision |
| Count is stable but timing feels different | Addresses or durations moved without a merge | Audit straight/triplet mapping and every target address |
| A row loses a cell that the ledger did not predict | P0 inventory or source/target totals are wrong | Return to the duplicate and recount hidden or quiet cells |
| A different sequencer retains both hits | Its storage or collision policy differs | Check exact doubles, microsteps, retriggers, and export behavior |
Run P0 → C0 → R1 and prove that finer resolution is not an undo
With the ledger complete, change only C0 from the source resolution to the target. The on-screen warning is expected only when at least one active cell is lost. Do not treat the warning itself as a pass: inspect every target key and attribute.
- Count gate: C0 overall count must equal the number of unique
(row, target)keys. Each row count must match its own unique-target count. - Address gate: every active C0 cell must appear in the source-to-target map; no source may be assigned with a nearest-grid rule or a page-local restart.
- Attribute gate: every collision bucket must keep the predicted velocity survivor and its proportionally scaled, clamped length.
- Boundary gate: play through the loop return. Confirm the last target cell and next downbeat without changing tempo, bar count, sounds, or effects.
- Return test: duplicate C0 as
R1and switch R1 back to the original finer resolution. Compare R1 with P0 cell by cell.
R1 should not equal P0 after a collision. Upsampling maps each surviving coarse cell into a finer address, but it has no record that one coarse cell previously came from two source cells. In the example, the single surviving Hat target 01 can move back into a fine-grid position; the discarded neighboring hat does not reappear. This is why the pre-change duplicate is evidence, not housekeeping.
What should I do when the preflight finds a collision?
Choose deliberately before switching. Keep the finer grid when both onsets are required; choose one source event and document the approximation when only one coarse cell is allowed; or use a target whose manual confirms an appropriate microstep, retrigger, or multi-event representation. Stop the conversion if the target cannot state the intended rhythm. Do not call a one-hit substitute lossless.
Is this the same as quantizing a finger-drummed MIDI take?
No. The earlier FingerDrum quantization guide compares timing correction, amount, anchors, groove, and protected ornaments in a performance. This audit begins with an already valid step pattern and tests the App’s resolution-resampling function. It does not decide whether the source performance should sound more precise or more human.
Will simultaneous kick and snare merge?
Not in this FingerDrum operation merely because they share time. Rows are resampled separately, so (Kick,05) and (Snare,05) are different keys. A collision requires two or more active source cells from the same row to receive the same target cell.
Does switching from straight to triplet resolution only change density?
No. It also changes the coordinate partition. With one 4/4 bar, 1/16T → 1/16 maps 24 cells to 16; some adjacent triplet cells share a target while others do not. Calculate all 24 addresses. Do not describe the result as “remove every third hit,” and do not infer a universal tie-breaking rule from another DAW.
Keep P0, the source/target totals, per-row event inventory, complete address map, collision groups, survivor predictions, C0 checks, and R1 comparison. The result tells you exactly which notes will merge before you touch the picker—and distinguishes an intentional coarse-grid approximation from an unexplained missing hit.
Sources and access date
The exact FingerDrum mapping, warning condition, survivor policy, length scaling, and project-duplication facts were audited directly against repository source and deterministic tests at origin/main commit bab44af1f35271dd04d4bf70b30ea7733533de62 on August 22, 2026. The public sources below support the visible sequencer feature and the comparison models; they do not define FingerDrum’s private implementation.
- FingerDrum official website — Step sequencer (accessed August 22, 2026)
- Apple — Overview of Step Sequencer in Logic Pro for Mac (accessed August 22, 2026)
- Apple — Logic Pro for Mac Quantize parameter values (accessed August 22, 2026)
- Steinberg — Quantizing MIDI Event Starts in Cubase Pro 15 (accessed August 22, 2026)
- Steinberg — Deleting Double Notes in Cubase Pro 15 (accessed August 22, 2026)
- Novation — Circuit Tracks User Guide, Version 3 (accessed August 22, 2026)
- Ableton — Editing MIDI, Live 12 Reference Manual (accessed August 22, 2026)