MIDI Clock
The MIDI Clock feature in Now Playing creates a virtual MIDI output port on your computer that sends standard MIDI clock messages synchronised to the currently playing track’s tempo. Other software and hardware — synthesisers, drum machines, lighting desks, broadcast tools — can listen to this port and stay in time with the mix.
What the Port Is Called
Section titled “What the Port Is Called”The port appears in the operating system’s MIDI list as Now Playing Clock. Any MIDI-aware application or MIDI interface on the same computer can select it as a clock source.
What Is Sent
Section titled “What Is Sent”The MIDI Clock output sends standard MIDI real-time messages:
0xF8— Clock tick, 24 ticks per quarter note (24 ppqn), the same resolution all MIDI hardware expects.- Start / Stop / Continue messages when the track is playing or paused, where the BPM source supports play state.
The tick rate is derived from the current BPM: a 128 BPM track sends 128 × 24 / 60 = 51.2 ticks per second.
BPM Source Selection
Section titled “BPM Source Selection”MIDI Clock can pull its BPM from several sources, with a priority fallback:
- Incoming MIDI clock — if another device is already generating a clock (for example, a drum machine or DJ mixer that outputs clock), Now Playing follows that clock instead of generating its own.
- Controller tempo + track BPM — if a tempo fader from a connected controller is available, the tempo fader adjusts the base BPM from the currently loaded track.
- Track BPM — fall back to the BPM field from the current track’s metadata.
- Manual — a BPM value set by the user in the dashboard, used when no track is playing or no BPM is available.
The source mode is user-selectable: Auto, MIDI Clock, Controller, Track, or Manual.
BPM Range
Section titled “BPM Range”The clock will generate ticks for any BPM between 20 and 300. Values outside that range are clamped so that the MIDI timing stays within bounds supported by all receiving devices.
How It’s Implemented
Section titled “How It’s Implemented”The clock generator is a small Go binary bundled with the desktop app. Go was chosen because it provides predictable, low-overhead timing with lightweight goroutines — important for generating clock messages at a steady rate even when the rest of the app is busy.
- The desktop app spawns the clock process.
- It sends the current BPM over stdin as JSON.
- The clock process generates ticks at the corresponding rate and sends them to
the
Now Playing Clockvirtual port. - BPM updates are reflected in under 100 ms.
Use Cases
Section titled “Use Cases”- Sync an external synthesiser to the mix so arpeggiators and effects stay in time.
- Drive lighting effects from a DMX software that accepts MIDI clock.
- Feed broadcast tools that require tempo metadata.
What It Does Not Do
Section titled “What It Does Not Do”MIDI Clock sends timing only — it does not send note data or MIDI mapping signals. If a receiving device expects more than tempo (for example, pitch information), that needs to come from a different source.