MIDI sync · drum machine · position test
Why Does a MIDI Drum Machine Start on the Wrong Beat at the Right BPM? A Clock–Transport–SPP Test
Matching BPM displays prove only a rate setting. A receiver can follow MIDI Timing Clock yet ignore Start, restart instead of Continue, or lack Song Position Pointer support. The result sounds “out of sync” even though the tempo is correct. This guide separates those three layers with one direct route, a four-bar marker pattern, and three pass/fail gates before any delay adjustment.
Scope: a controlled MIDI 1.0 test for one documented clock sender and one hardware or software sequencer, drum machine, or groovebox acting as receiver. The test uses 4/4, a four-bar receiver pattern, and a single sync route. It does not cover audio word clock, MIDI Timecode, MIDI Machine Control, Ableton Link, note mapping, audio-interface latency, or tempo detection from a backing track. Message support and menu behavior vary by product and port; the implementation charts and current manuals for both endpoints are the authority. This article does not claim that FingerDrum currently sends or receives external MIDI Clock. The C–T–P gates and marker pattern are FingerDrum’s original editorial framework for external equipment.
C checks Timing Clock: does the receiver follow the sender’s tempo? T checks transport: do Start, Stop, and—when supported—Continue produce the intended run state? P checks position: can Song Position Pointer (SPP) locate the receiver before playback? Do not turn a delay control until all three contracts required by your workflow pass. A fixed early/late offset is a delay problem; the wrong beat, bar, or restart behavior usually is not.
The same BPM is not the same synchronization state
The MIDI Association lists Timing Clock as a System Real-Time message sent 24 times per quarter note when synchronization is required. Start, Continue, and Stop are separate System Real-Time messages. It lists SPP separately as a 14-bit System Common value that counts “MIDI beats” from song start, with one MIDI beat equal to six clocks. Those definitions describe three different jobs: Clock supplies a tempo-dependent pulse; transport messages change playback state; SPP supplies a location.
Two devices can both display 100 BPM while running from independent timers, starting at different instants, and holding unrelated play positions. They have equal settings, not a shared clock, phase, or origin. Conversely, a receiver can visibly follow a sender’s tempo but restart its own pattern from bar 1 whenever it gets Start. That is successful Clock reception and the wrong transport behavior for a song-location workflow.
| Layer | Messages or state | What a pass proves | What it does not prove |
|---|---|---|---|
| C · Clock | Timing Clock | The receiver follows the sender’s rate | That either device starts, stops, or knows the same bar |
| T · Transport | Start / Stop / Continue | The receiver enters the intended run state | That a mid-song playhead location was transferred |
| P · Position | Song Position Pointer | The receiver can locate a shared musical origin | That sounds, pattern lengths, or meters match |
| D · Delay | Per-port sync delay or equivalent | A stable audio offset can be trimmed | That a wrong bar or unsupported message is repaired |
Prove the exact transmit/receive pair before cabling
Do not reduce an implementation chart to “supports MIDI sync.” Check the transmitting and recognized columns separately for Clock, Start, Continue, Stop, and Song Position. Then check which physical or virtual port carries System Real-Time and System Common messages. Note input, a DAW’s Track switch, and its Sync switch may be different routes.
A current Roland SH-4d Rhythm implementation chart shows why the matrix matters: it marks Clock, Start, and Stop for both transmission and reception; Continue is recognized but not transmitted; Song Position is marked unsupported in both directions. This is one product-specific example, not a rule for Roland or rhythm devices generally. It demonstrates that “Clock works” cannot establish SPP compatibility.
| Capability | Sender TX | Receiver RX | Needed for this test | Your evidence |
|---|---|---|---|---|
| Timing Clock | Yes / No | Yes / No | Gate C | Manual or implementation-chart section |
| Start | Yes / No | Yes / No | T1 cold start | Exact mode and port |
| Stop | Yes / No | Yes / No | T2 stop | Exact mode and port |
| Continue | Yes / No | Yes / No | T3 resume | Exact mode and port |
| Song Position Pointer | Yes / No | Yes / No | Gate P | Song/Pattern setting plus chart |
If either endpoint documents No for a required row, record unsupported and redesign the workflow. Changing sync delay, audio buffer size, or MIDI note channel cannot add a missing transport or position message.
Freeze one route and make every bar identifiable
Use a duplicate project or an empty test project on both endpoints. Connect one sender output directly to one receiver input. Enable the sender’s documented sync output and the receiver’s external-clock mode. Disable any second clock source, MIDI-thru loop, wireless hop, tempo automation, probability, swing, fill, follow action, and automatic pattern change. Keep local audio from both devices audible or record each to a separate track.
Build a four-bar receiver pattern named MARK4. Put a closed hi-hat on beats 1, 2, 3, and 4 of every bar to expose the quarter-note phase. Add one unique marker at the start of each bar:
| Bar | Beat-1 marker | Extra marker | Identity |
|---|---|---|---|
M1 | Kick | None | Pattern/song start |
M2 | Snare | None | Second bar |
M3 | Kick + snare | None | Mid-song locate target |
M4 | Kick | Snare on beat 2 | Loop-end bar |
The exact sounds are not important; choose four identities that remain unmistakable on your receiver. Keep the sender timeline in 4/4 with matching four-bar origin labels. MARK4 is a diagnostic pattern, not a musical recommendation and not a General MIDI mapping assumption.
Gate C: prove Clock rate without interpreting the start position
Run two cold-start passes. The chosen tempos are diagnostic values, not practice targets:
- C100: with both devices stopped, set the sender to
100 BPM, return both to their documented starts, run all four marked bars, and record the result. - C110: stop both devices, change only the sender to
110 BPM, reset to the same starts, and record the same four bars. - Compare rate: use the receiver’s external-sync indicator or BPM display if its manual defines one, and compare the quarter-hat spacing between passes. Do not judge only by matching numbers typed into both devices.
- Pass C: the receiver follows the sender’s changed rate and stays on a stable quarter pulse through each pass. Ignore which marker started for this gate; that belongs to T and P.
If the receiver remains at one speed, stop here. Recheck the sender’s Sync output—not just note/Track output—the receiver’s external mode, the selected ports, and the TX/RX Clock rows. If the speed follows but the receiver is consistently one beat late or starts on M2, mark C as passed and continue. A position error does not invalidate rate following.
Gate T: distinguish a cold Start from a stopped Continue
The sender’s Play button is not evidence of which MIDI message left the port. Read its current mode description or inspect a trusted MIDI monitor. Apple’s current Logic documentation, for example, distinguishes a Pattern mode that sends Start from song modes that can send SPP followed by Continue when playback begins away from song start. Ableton likewise exposes different Song and Pattern clock behavior. Name the actual emitted message in the ledger.
- T1 · cold Start: stop both endpoints, locate the sender at
1.1.1, returnMARK4to its start, then press Play only on the sender. Pass when the receiver starts once onM1. - T2 · Stop: stop from the sender during bar
M2. Pass when the receiver stops once without a second local button press. Record the displayed or audible stop location. - T3 · Continue: without moving either playhead, use the sender operation that its manual says emits Continue. Pass when the receiver resumes the stopped phase instead of returning to
M1. - Control: repeat T1 after T3. A true cold Start should still produce the documented pattern-start behavior; do not “fix” resume by leaving the receiver at a convenient location.
That can be correct for a Pattern/Start workflow. It becomes a failure only when your stated goal is resume-from-stop and both manuals promise a compatible Continue path. Record one of four outcomes: Start sent, Continue sent and received, Continue unsupported, or message unknown. Do not relabel all four as “Clock drift.”
Gate P: use SPP to test a shared location
For this fixed 4/4 test, one quarter note contains 24 clocks and one SPP MIDI beat contains six clocks. One bar therefore spans 4 × 24 ÷ 6 = 16 SPP units. The zero-based starts of M1 through M4 are 0, 16, 32, and 48. These calculations apply to this common origin and meter; do not paste the values into a project with a pickup, a different meter map, or an unmatched receiver song.
| Host location | SPP count from origin | Expected receiver marker | Expected message plan |
|---|---|---|---|
| Bar 1 start | 0 | M1 | Documented cold Start, or the sender’s documented equivalent |
| Bar 2 start | 16 | M2 | SPP locate + the chosen mode’s documented compatible transport |
| Bar 3 start | 32 | M3 | SPP locate + the chosen mode’s documented compatible transport |
| Bar 4 start | 48 | M4 | SPP locate + the chosen mode’s documented compatible transport |
- P3: stop playback, move only the sender to the start of bar 3, confirm a Song/SPP mode, then start from the sender. Pass when the receiver’s first audible marker is
M3. - P4: repeat from bar 4. Pass when the first audible marker is
M4. This catches a coincidental bar-3 success. - Optional cycle gate: loop sender bars 3–4 for two complete cycles only if the receiver recognizes SPP and one of two stronger conditions is documented: the sender issues
Stop → SPP → Continueat the cycle jump, or the receiver applies SPP while already running. Record which case you tested. Then expectM3 → M4 → M3 → M4. - Return control: disable the loop and rerun T1 from the shared origin. This proves that the locate test did not leave a hidden offset.
SPP carries a count from song start; its published message definition does not contain your pattern name, sound assignment, or bar labels. It follows that both endpoints must agree on the content structure and origin for 32 to mean “our M3.” A receiver that correctly locates a different arrangement has not failed the wire protocol; the projects disagree.
Use the first failed gate, not the loudest symptom
| Observed result | First failed gate | Check next | Do not change yet |
|---|---|---|---|
| Receiver tempo never follows C100 → C110 | C · Clock | Clock TX/RX, Sync port, external mode, second clock source or duplicated Clock route | SPP and sync delay |
| Tempo follows, but sender Play/Stop does nothing | T · Transport | Start/Stop support, port filtering, transport option | Tempo and note channel |
| Cold start works; resume returns to M1 | T3 · Continue | Was Start sent? Is Continue transmitted and recognized? | Clock rate and audio buffer |
| T passes; start from bar 3 produces M1 or wrong marker | P · Position | SPP TX/RX, Song vs Pattern mode, common origin and length | Per-port delay |
| M3/M4 identities are right, but every transient is equally early or late | C/T/P pass | Record both clicks and adjust one sync-delay control | Pattern content |
| Bar identities align, but the wrong drum sounds | Outside this test | Note/channel mapping | Clock, Continue, or SPP |
Adjust delay only after the symbolic markers agree
Once the symbolic markers agree, compare both metronomes—or use a simple accented rhythm on hardware without a metronome—before changing MIDI Clock Sync Delay. Apple exposes per-destination MIDI clock delay in Logic, and Ableton exposes a MIDI Clock Sync Delay control. Those controls target a stable time offset. They cannot make an SPP-incompatible receiver understand a bar-3 locate or turn Start into Continue.
- Keep the passed C/T/P configuration and record both devices as separate audio tracks for at least two full
MARK4cycles. - Use the quarter hats and the sharp M1–M4 markers; compare transient order, not sample tails or effect returns.
- Change one documented sync-delay value on one destination. Save the original value and do not change buffer size, plugins, MIDI route, and pattern at the same time.
- Repeat the original value between candidates. Adopt a delay change only when it reduces the same-direction offset in repeated passes without breaking C, T, or P.
There is no universal millisecond value. USB scheduling, interfaces, audio buffers, device processing, and the sounds themselves affect the observed offset. If the first bars settle differently from later bars, label that separately instead of averaging it into one number.
Save the TX/RX evidence, MARK4, C100, C110, T1, T2, T3, P3, P4, the optional cycle result, and the final delay A/B. The first failed gate tells you whether to repair Clock routing, transport behavior, project position, or only the remaining audio offset. That is more actionable than “both say 100 BPM, but they still sound off.”
Sources and access date
MIDI message roles and units come from the MIDI Association; current Song/Pattern behavior and delay controls are attributed to the named DAWs; the Roland chart is used only as a compatibility-matrix example. FingerDrum’s public product scope was checked against origin/main commit 631b74908c02be3a1aead2ba43c7e192f5f285f9. No source defines the editorial C–T–P gates or MARK4 pattern.
- FingerDrum official site — current feature overview (accessed August 23, 2026)
- MIDI Association — Summary of MIDI 1.0 Messages (accessed August 23, 2026)
- Apple — Sync multiple MIDI devices to Logic Pro for Mac (accessed August 23, 2026)
- Ableton — Routing and I/O, Live Reference Manual (accessed August 23, 2026)
- Roland — SH-4d MIDI implementation chart (Rhythm) (accessed August 23, 2026)