Chord Beats Sync
More actions
Chord Beats Sync
Chord Beats Sync drives JustChords from an external clock so the app follows the music in real time. As the clock advances, JustChords highlights the active chord and section, auto-scrolls the song, and sends MIDI out to other instruments / apps based on the chord under the playhead.
This feature builds on Chord Beats — every chord must have a beat duration set, otherwise there is nothing to follow.
Clock Source
JustChords gets its timing in two different ways depending on how it is running:
- Standalone app (iOS, macOS Catalyst) — reads an external MIDI Clock source or follows the built-in Metronome.
- AUv3 plug-in — locks to the host's transport (DAW play/stop, position, tempo).
Open Settings → Chord Beats → Chord Beats Sync to configure the source.
Chord Beats Sync is off by default. Select a source to activate it. Changing the source to any non-off value immediately re-initialises the sync data for the current song — no need to navigate away and back.
- Beats Source picker (standalone only)
Choose one of:
- Off — sync disabled (default).
- Metronome — the built-in JustChords metronome drives chord sync. Start the metronome and it will advance the song together with the click track.
- MIDI Clock — an external MIDI Clock source drives the sync. A device picker appears below the source picker when this option is selected. Only ports that can send (sources / source-and-destination) are listed.
- AUv3
- No clock picker — the host transport drives the sync automatically.
- Loop Song
- When the song ends, sync restarts from the beginning of the first section so the song loops indefinitely. Works in all modes.
Metronome as Clock Source
Setting Beats Source → Metronome uses the JustChords built-in metronome to advance Chord Beats Sync — no external MIDI device or DAW required.
How it works:
- Start the metronome from the Metronome tool panel. Chord sync begins at the same instant as the first audio click.
- The metronome's Count-In beats are respected: the song does not advance during the count-in bars, so the first section fires together with beat 1 of the actual pattern.
- Beat timing is anchored to the audio engine's hardware clock (mach_absolute_time), so the chord highlight and the click land on the same sample — there is no software loop drift.
- Stopping the metronome stops chord sync and clears the section selection.
- Metronome → Send MIDI Clock (independent setting)
The metronome also has a separate toggle — Settings → Metronome → Send MIDI Clock — that broadcasts 24 PPQ MIDI Clock pulses to connected MIDI ports. This is independent of whether Chord Beats Sync is on or off:
- Send MIDI Clock ON, Beats Source = Metronome — the metronome clicks advance both Chord Beats Sync in the app AND drives external gear with a MIDI clock signal.
- Send MIDI Clock ON, Beats Source = MIDI Clock (or Off) — the metronome sends MIDI clock to external gear only; chord sync is driven by the external MIDI clock (or disabled).
- Send MIDI Clock OFF, Beats Source = Metronome — chord sync advances with the metronome, but no MIDI clock is broadcast.
In all cases where Send MIDI Clock is on, pulses are scheduled inline by the audio engine's tick scheduler (sample-accurate timestamps referenced to the same audio timeline as the metronome clicks), replacing the earlier software-loop approach. This makes the outgoing MIDI clock more stable at high tempos and long sessions.
MIDI Clock Source
When Beats Source → MIDI Clock is selected, JustChords listens to an incoming MIDI Clock signal (24 PPQ) from any connected device or app. The device picker lists only ports that transmit MIDI (sources and source-and-destination ports). Choose None to leave the MIDI clock source unset while keeping sync in MIDI Clock mode.
MIDI Out
Chord Beats Sync can broadcast what is happening in the song over MIDI. The MIDI Out settings are only visible when MIDI is enabled (Settings → MIDI → Enable MIDI). The standalone app has MIDI Out (one channel); the AUv3 plug-in has both MIDI Out 1 and MIDI Out 2, each configured independently.
- User MIDI Messages (always on for Out 1)
JustChords always emits these on the primary output:
- Song is displayed
- Section selection
- Section deselection
- MIDI Button events
These are the "user-driven" messages that do not depend on the playhead.
- Chords (per output)
Choose how chord data is sent:
- Off — no chord messages.
- Chords (Note On/Off) — sends each chord as standard MIDI Note On / Note Off events, so any synth or sampler can play along.
- Tone Packet Protocol — sends chord information as TonePacket messages, useful for receivers that understand chord identity rather than raw notes.
- Anticipation (per output)
How early chord-change messages should be sent before the beat the chord actually starts on:
- Off — fire exactly on the beat.
- 1/4 beat, 1/8 beat, 1/16 beat — send the chord change slightly ahead, useful so external instruments have time to react and do not sound late. Anticipation is ignored for the very first beat of a section (no pre-roll).
- Send first chord on song display / section select
- When enabled, opening a song or selecting a section immediately emits its first chord — handy for hearing the starting chord before the transport begins.
Shifting Section MIDI Messages (Delay / Anticipation)
The Section selection and Section deselection MIDI messages can be shifted in beats so they do not fire exactly on the section boundary. The offset is set per MIDI action in the song's Arrangement / Song Structure and only takes effect in Chord Beats Sync mode.
- How to Set It
- Edit the song's Song Structure and open a MIDI action item.
- Pick a Trigger — Section selection or Section deselection.
- A stepper (0–100 beats) appears, labelled Delay or Anticipation depending on the trigger.
- Behavior
- Section selection → Delay — sends the message N beats after the section starts.
- Section deselection → Anticipation — sends the message N beats before the section ends.
- 0 (default) — fires exactly on the boundary.
The offset is measured in whole beats on the Chord Beats timeline and is applied per MIDI action, so several actions on the same section can use different shifts.
What Sync Does in the UI
When the clock is running:
- The chord currently sounding is highlighted in the song view.
- The active section is highlighted, and JustChords auto-scrolls to keep it on screen.
- When the section ends, JustChords advances to the next section automatically; if Loop Song is on it wraps back to the start.
- When the transport stops, all sounding notes are released and the section selection clears.
Section Navigation Over MIDI
While sync is active you can pre-queue a different section:
- Tap a section header in the song view to set it as the "next section". When the current section ends, JustChords switches to it and emits the corresponding Section Selection MIDI message.
- Looping a single section keeps repeating it until you queue a different one or stop the transport.
Tips
- Set Chord Beats first. Without beat counts there is nothing for the clock to follow. Enable Chord Beats in Song View settings and assign beat values per chord in the Song Editor's Chord Beats syntax.
- Metronome source is the quickest way to try the feature without any external gear — tap the metronome to start, and the song follows.
- AUv3 in a DAW is the simplest way to lock to a project timeline — start playback in the DAW and the song will follow.
- Standalone with external gear (drum machine, sequencer, MIDI clock app) — use Beats Source → MIDI Clock and select the device.
- Chord Beats Sync is off by default. Open Settings → Chord Beats → Chord Beats Sync and select a source to activate it.
- Send MIDI Clock (metronome setting) and Beats Source (chord sync setting) are independent. You can broadcast a MIDI clock to outboard gear regardless of which source is driving chord sync, and vice versa.
- If anticipation makes external instruments fire too early, lower it; if they sound late, raise it.
- MIDI Out settings (Song MIDI and Chord data) only appear when MIDI is enabled under Settings → MIDI.