Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Chord Beats Sync

From JustChords Wiki
Revision as of 14:37, 27 July 2026 by Marekpalka (talk | contribs)

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's running:

Standalone app (iOS, macOS Catalyst) — reads an external MIDI Clock source. • 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. (Prior to this update the entry was located under Settings → MIDI.)

Standalone — MIDI Clock Source

• Pick a MIDI device or virtual port from the picker. Only ports that can send (sources / source-and-destination) are listed. • Choose None / Off to disable clock following. Off is the default; the feature must be explicitly enabled.

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 both standalone and AUv3 modes.

MIDI Out

Chord Beats Sync can broadcast what's 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 don't 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 don't 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 don't 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 TriggerSection 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. • Changing the clock source to any non-off value immediately re-initialises the sync data — no need to navigate away and back.

MIDI Clock Output (Metronome)

When the built-in metronome is used as the clock source, MIDI clock pulses (24 PPQ) are generated inline by the audio engine's tick scheduler. Each pulse carries a sample-accurate hardware timestamp anchored to the same audio timeline as the metronome clicks, resulting in tighter sync with external instruments compared to earlier software-loop-based scheduling. MIDI Start / Stop messages bracket the session automatically.

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 set beat values per chord in the Song Editor's Chord Beats syntax. • AUv3 in a DAW is the simplest way to test the feature — start playback in the DAW and the song should follow. • Standalone setups typically use an external sequencer, drum machine or MIDI clock app as the source. • Chord Beats Sync is off by default. Open Settings → Chord Beats → Chord Beats Sync and select a source to activate it. • If anticipation makes external instruments fire too early, lower it; if they sound late, raise it. • MIDI Out settings (Song MIDI and Chord data) are only shown when MIDI is enabled under Settings → MIDI.