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.

Short answer: rate, run state, and location are separate contracts

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.

LayerMessages or stateWhat a pass provesWhat it does not prove
C · ClockTiming ClockThe receiver follows the sender’s rateThat either device starts, stops, or knows the same bar
T · TransportStart / Stop / ContinueThe receiver enters the intended run stateThat a mid-song playhead location was transferred
P · PositionSong Position PointerThe receiver can locate a shared musical originThat sounds, pattern lengths, or meters match
D · DelayPer-port sync delay or equivalentA stable audio offset can be trimmedThat 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.

CapabilitySender TXReceiver RXNeeded for this testYour evidence
Timing ClockYes / NoYes / NoGate CManual or implementation-chart section
StartYes / NoYes / NoT1 cold startExact mode and port
StopYes / NoYes / NoT2 stopExact mode and port
ContinueYes / NoYes / NoT3 resumeExact mode and port
Song Position PointerYes / NoYes / NoGate PSong/Pattern setting plus chart
Stop rule

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:

BarBeat-1 markerExtra markerIdentity
M1KickNonePattern/song start
M2SnareNoneSecond bar
M3Kick + snareNoneMid-song locate target
M4KickSnare on beat 2Loop-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:

  1. 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.
  2. C110: stop both devices, change only the sender to 110 BPM, reset to the same starts, and record the same four bars.
  3. 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.
  4. 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.

  1. T1 · cold Start: stop both endpoints, locate the sender at 1.1.1, return MARK4 to its start, then press Play only on the sender. Pass when the receiver starts once on M1.
  2. 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.
  3. 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.
  4. 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.
If Play always restarts M1

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 locationSPP count from originExpected receiver markerExpected message plan
Bar 1 start0M1Documented cold Start, or the sender’s documented equivalent
Bar 2 start16M2SPP locate + the chosen mode’s documented compatible transport
Bar 3 start32M3SPP locate + the chosen mode’s documented compatible transport
Bar 4 start48M4SPP locate + the chosen mode’s documented compatible transport
  1. 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.
  2. P4: repeat from bar 4. Pass when the first audible marker is M4. This catches a coincidental bar-3 success.
  3. 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 → Continue at the cycle jump, or the receiver applies SPP while already running. Record which case you tested. Then expect M3 → M4 → M3 → M4.
  4. 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 resultFirst failed gateCheck nextDo not change yet
Receiver tempo never follows C100 → C110C · ClockClock TX/RX, Sync port, external mode, second clock source or duplicated Clock routeSPP and sync delay
Tempo follows, but sender Play/Stop does nothingT · TransportStart/Stop support, port filtering, transport optionTempo and note channel
Cold start works; resume returns to M1T3 · ContinueWas Start sent? Is Continue transmitted and recognized?Clock rate and audio buffer
T passes; start from bar 3 produces M1 or wrong markerP · PositionSPP TX/RX, Song vs Pattern mode, common origin and lengthPer-port delay
M3/M4 identities are right, but every transient is equally early or lateC/T/P passRecord both clicks and adjust one sync-delay controlPattern content
Bar identities align, but the wrong drum soundsOutside this testNote/channel mappingClock, 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.

  1. Keep the passed C/T/P configuration and record both devices as separate audio tracks for at least two full MARK4 cycles.
  2. Use the quarter hats and the sharp M1–M4 markers; compare transient order, not sample tails or effect returns.
  3. 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.
  4. 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.

Final deliverable: one compatibility matrix and seven named passes

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.

  1. FingerDrum official site — current feature overview (accessed August 23, 2026)
  2. MIDI Association — Summary of MIDI 1.0 Messages (accessed August 23, 2026)
  3. Apple — Sync multiple MIDI devices to Logic Pro for Mac (accessed August 23, 2026)
  4. Ableton — Routing and I/O, Live Reference Manual (accessed August 23, 2026)
  5. Roland — SH-4d MIDI implementation chart (Rhythm) (accessed August 23, 2026)