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

MIDI: Difference between revisions

From JustChords Wiki
Created page with "= MIDI functionality = JustChords offers comprehensive MIDI support that allows you to send MIDI messages when songs load, sections change, or other events occur. This powerful feature lets you automate and control external MIDI devices such as synthesizers, drum machines, guitar processors, lighting systems and more directly from your setlist. == MIDI in songs == Each song can have its own set of MIDI commands that are triggered when the song is displayed or when spe..."
 
No edit summary
 
Line 2: Line 2:


JustChords offers comprehensive MIDI support that allows you to send MIDI messages when songs load, sections change, or other events occur. This powerful feature lets you automate and control external MIDI devices such as synthesizers, drum machines, guitar processors, lighting systems and more directly from your setlist.
JustChords offers comprehensive MIDI support that allows you to send MIDI messages when songs load, sections change, or other events occur. This powerful feature lets you automate and control external MIDI devices such as synthesizers, drum machines, guitar processors, lighting systems and more directly from your setlist.
== Enabling MIDI ==
MIDI is disabled by default. To enable it:
# Open the main menu (tap the menu icon).
# Tap '''MIDI'''.
# Toggle '''Enable MIDI''' on.
Once enabled, JustChords will start listening for connected MIDI devices and Bluetooth MIDI controllers.
== MIDI connections ==
=== Wired and network MIDI devices ===
When MIDI is enabled, JustChords automatically detects all connected MIDI sources and destinations — including USB MIDI interfaces, network MIDI sessions, and virtual ports from other apps. Go to '''Main Menu → MIDI → Connected MIDI Devices''' to see what is detected and configure each device as:
* '''Source + Destination''' — both send and receive MIDI.
* '''Source''' — only receive MIDI from this device.
* '''Destination''' — only send MIDI to this device.
* '''Disconnect''' — ignore this device.
=== Bluetooth MIDI ===
To pair a Bluetooth MIDI controller or device:
# Go to '''Main Menu → MIDI'''.
# Tap '''Add Bluetooth MIDI'''.
# Select your device from the list of available devices.
You can also advertise your iOS device as a Bluetooth MIDI peripheral so other apps or devices can connect to it: toggle '''Advertise this device as BLE MIDI''' in the same section.
=== Virtual MIDI ports ===
JustChords can create virtual MIDI ports so other apps on the same device can exchange MIDI messages with it:
# Go to '''Main Menu → MIDI'''.
# Toggle '''Enable Virtual MIDI In & Out''' on.
This creates two system-wide ports — '''JustChords Out''' (for other apps to receive from JustChords) and '''JustChords In''' (for other apps to send to JustChords).
== MIDI Library ==
The MIDI Library is a collection of reusable, named MIDI action presets. Each preset contains one or more MIDI messages that can be assigned to songs or triggered by events.
To manage the MIDI Library, go to '''Library → MIDI Library''' (accessible from the Library sidebar).
In the MIDI Library you can:
* '''Add''' new presets manually or by capturing messages live from a connected device.
* '''Edit''' existing presets.
* '''Duplicate''' presets.
* '''Test''' a preset by tapping Send to immediately transmit its messages.
* '''Delete''' presets you no longer need.
Each MIDI message in a preset can have an optional '''Send Delay''' (in milliseconds) to stagger the timing of messages in sequence.
Supported MIDI message types include: Note On, Note Off, Control Change, Program Change, Pitch Bend, Aftertouch, Channel Pressure, SysEx, and more.


== MIDI in songs ==
== MIDI in songs ==


Each song can have its own set of MIDI commands that are triggered when the song is displayed or when specific events occur.
MIDI Library presets can be attached to individual songs with specific triggers controlling when they fire.
 
=== Song MIDI triggers ===
 
Each MIDI action in a song's structure can fire on one of four triggers:
 
* '''Song Appear''' — fired automatically when the song loads into the viewer.
* '''Section Select''' — fired when that section becomes the active section (with an optional delay in beats).
* '''Section Deselect''' — fired when navigating away from that section (useful for sending "note off" or cleanup messages).
* '''MIDI Button''' — displayed as a tappable orange button directly in the song viewer, so you can fire the action manually at any time.
 
=== Assigning MIDI actions to a song ===
 
# Open the song in the Song Editor.
# Open '''Structure & MIDI''' (the song arrangement editor).
# Add a MIDI structure item and select a preset from the MIDI Library.
# Choose the trigger type and optional beat delay.
 
MIDI actions assigned to ''Song Appear'' are shown as small labels at the top of the song content in the viewer. ''MIDI Button'' actions are shown as prominent orange buttons inline in the song content.
 
== MIDI controller mappings ==
 
You can map incoming MIDI messages from foot pedals or controllers to JustChords actions.
 
To configure mappings, go to '''Song Settings → MIDI → MIDI Controller'''.
 
Available actions that can be triggered by MIDI input:
 
{| class="wikitable"
! Category !! Action
|-
| Setlist navigation || Next Song, Previous Song, Jump to Song (by index or MIDI Custom ID)
|-
| Section navigation || Next Section, Previous Section, First Section, Last Section, Jump to Section
|-
| Scrolling || Scroll Down, Scroll Up
|-
| Autoscroll || Start/Pause, Toggle, Speed Up, Speed Down
|-
| Transpose || Transpose Up, Transpose Down
|-
| Zoom || Zoom In, Zoom Out
|-
| Audio track || Toggle playback
|-
| Projection || Blackout toggle
|-
| Metronome || Toggle
|-
| Chord Beats Sync || Loop toggle (AUv3)
|}
 
For ''Jump to Song'' and ''Jump to Section'', the MIDI Data 2 byte value selects the target song index or section index respectively. For ''Jump to Song by MIDI ID'', Data 2 matches a custom MIDI ID you set in the Song Editor.
 
You can configure Data 2 as a fixed value, as an On/Off switch (0 = off, 1–127 = on), or as a wildcard that passes the received value directly to the action.
 
== MIDI Clock ==


=== Viewing MIDI messages ===
=== Sending MIDI Clock ===


To see what MIDI messages are assigned to a song:
JustChords can send MIDI Clock to synchronize external devices to a song's tempo. Go to '''Song Settings → MIDI → MIDI Tempo''' and enable '''Send on song appear''' under the MIDI Clock section.


# Open the song in the Song Viewer.
You can configure how many seconds the clock runs after the song appears (1–30 seconds).
# Tap '''MIDI''' (when the song is displayed).
# Tap '''Message''' to view the current MIDI messages assigned to this song.


This shows you all the MIDI commands that will be sent when the song loads or during playback.
=== Receiving MIDI Clock ===


=== Managing MIDI messages ===
JustChords can receive MIDI Clock from an external source (such as a DAW or drum machine) to drive ''Chord Beats Sync'' — the feature that highlights chords in sync with playback. Go to '''Song Settings → Control → Chord Beats Sync''' and set the ''Beats Source'' to '''MIDI Clock''', then select your clock source device.


To add, edit or remove MIDI messages:
JustChords handles Start, Stop, Continue, and Song Position Pointer (SPP) messages automatically.


# Open the song in the Song Viewer.
== MIDI Tempo message ==
# Tap '''MIDI'''.
# Tap '''Manage''' to access the MIDI editor.


In the MIDI editor you can:
When a song appears, JustChords can send a custom MIDI message carrying the song's BPM value, so external devices can follow the song's tempo automatically.


* Add new MIDI messages manually or by capturing them from a connected device.
Go to '''Song Settings → MIDI → MIDI Tempo''' and enable '''Send on song appear''' under the MIDI Message section.
* Edit existing MIDI commands.
* Remove MIDI messages you no longer need.
* Save your configuration so the song automatically sends these commands when loaded.


== Connecting Bluetooth MIDI devices ==
Options:
* '''Status''' — choose the message type (e.g. Control Change).
* '''Channel''' — MIDI channel 1–16.
* '''Data 1''' — the controller number or parameter.
* '''Data 2''' — automatically set to the song's BPM (with optional offset and divider).
* '''BPM Offset''' — subtract a fixed value from the BPM before sending.
* '''BPM Divider''' — divide the BPM (e.g. divide by 2 for half-tempo).


JustChords supports Bluetooth MIDI devices for both input (receiving MIDI messages from controllers) and output (sending MIDI commands to devices).
== Chord Beats Sync and MIDI output ==


To add a Bluetooth MIDI device:
The Chord Beats Sync feature highlights chords in the song viewer in time with the beat. It can also output the current chord as MIDI data so external instruments follow along.


# Go to '''Settings → MIDI/Bluetooth/Triggers'''.
Go to '''Song Settings → Control → Chord Beats Sync''' to configure:
# Select '''MIDI pedal/controller'''.
# Add your Bluetooth MIDI device from the list of available devices.


Once connected, you can capture MIDI messages directly from your device and assign them to songs or use them as triggers for actions within JustChords.
* '''Beats Source''' — Off, Metronome, or MIDI Clock.
* '''MIDI Out → Song MIDI''' — controls when section-change MIDI messages are sent: Always, Only when transport is running, or Only when transport is not running.
* '''MIDI Out → Chords''' — sends the current chord as MIDI data. Options: Off, Chords (Note On/Off), or Tone Packet Protocol.
* '''Chord Anticipation''' — send chord MIDI slightly early (1/4, 1/8, or 1/16 beat) to compensate for device latency.
* '''Send first chord on song display / section select''' — immediately outputs the first chord when a song loads or a section is navigated to.
* '''Loop Song''' — loops the song's chord timeline continuously.


== MIDI use cases ==
== MIDI use cases ==
Line 53: Line 169:
* '''Multi-device synchronization''' – Control bass players, synths, and other MIDI-enabled gear from one central setlist.
* '''Multi-device synchronization''' – Control bass players, synths, and other MIDI-enabled gear from one central setlist.
* '''Foot controller input''' – Use MIDI foot pedals to navigate songs, transpose or trigger projection sections.
* '''Foot controller input''' – Use MIDI foot pedals to navigate songs, transpose or trigger projection sections.
* '''Tempo sync''' – Broadcast the song's BPM as a MIDI Clock or custom MIDI message so every device stays in time.
* '''Chord output''' – Feed chord data in real time to synthesizers or backing-track apps via MIDI Note On/Off or Tone Packet Protocol.


For a real-world example, see how Greg from Seattle uses MIDI messages to control his entire band setup from JustChords: [https://www.justchords.app/stories-crossroad/ Greg's MIDI story]
For a real-world example, see how Greg from Seattle uses MIDI messages to control his entire band setup from JustChords: [https://www.justchords.app/stories-crossroad/ Greg's MIDI story]
== Advanced MIDI settings ==
For a detailed list of existing MIDI commands and configuration options:
# Go to '''Settings → MIDI/Bluetooth/Triggers'''.
# Select '''MIDI pedal/controller'''.
Here you can:
* View all configured MIDI devices.
* See the full list of MIDI commands available in JustChords.
* Configure triggers and actions based on incoming MIDI messages.
* Fine-tune MIDI message timing and behavior.
This deep MIDI integration makes JustChords not just a chord sheet viewer, but a complete control hub for your live performance rig.

Latest revision as of 16:47, 31 August 2026

MIDI functionality

JustChords offers comprehensive MIDI support that allows you to send MIDI messages when songs load, sections change, or other events occur. This powerful feature lets you automate and control external MIDI devices such as synthesizers, drum machines, guitar processors, lighting systems and more directly from your setlist.

Enabling MIDI

MIDI is disabled by default. To enable it:

  1. Open the main menu (tap the menu icon).
  2. Tap MIDI.
  3. Toggle Enable MIDI on.

Once enabled, JustChords will start listening for connected MIDI devices and Bluetooth MIDI controllers.

MIDI connections

Wired and network MIDI devices

When MIDI is enabled, JustChords automatically detects all connected MIDI sources and destinations — including USB MIDI interfaces, network MIDI sessions, and virtual ports from other apps. Go to Main Menu → MIDI → Connected MIDI Devices to see what is detected and configure each device as:

  • Source + Destination — both send and receive MIDI.
  • Source — only receive MIDI from this device.
  • Destination — only send MIDI to this device.
  • Disconnect — ignore this device.

Bluetooth MIDI

To pair a Bluetooth MIDI controller or device:

  1. Go to Main Menu → MIDI.
  2. Tap Add Bluetooth MIDI.
  3. Select your device from the list of available devices.

You can also advertise your iOS device as a Bluetooth MIDI peripheral so other apps or devices can connect to it: toggle Advertise this device as BLE MIDI in the same section.

Virtual MIDI ports

JustChords can create virtual MIDI ports so other apps on the same device can exchange MIDI messages with it:

  1. Go to Main Menu → MIDI.
  2. Toggle Enable Virtual MIDI In & Out on.

This creates two system-wide ports — JustChords Out (for other apps to receive from JustChords) and JustChords In (for other apps to send to JustChords).

MIDI Library

The MIDI Library is a collection of reusable, named MIDI action presets. Each preset contains one or more MIDI messages that can be assigned to songs or triggered by events.

To manage the MIDI Library, go to Library → MIDI Library (accessible from the Library sidebar).

In the MIDI Library you can:

  • Add new presets manually or by capturing messages live from a connected device.
  • Edit existing presets.
  • Duplicate presets.
  • Test a preset by tapping Send to immediately transmit its messages.
  • Delete presets you no longer need.

Each MIDI message in a preset can have an optional Send Delay (in milliseconds) to stagger the timing of messages in sequence.

Supported MIDI message types include: Note On, Note Off, Control Change, Program Change, Pitch Bend, Aftertouch, Channel Pressure, SysEx, and more.

MIDI in songs

MIDI Library presets can be attached to individual songs with specific triggers controlling when they fire.

Song MIDI triggers

Each MIDI action in a song's structure can fire on one of four triggers:

  • Song Appear — fired automatically when the song loads into the viewer.
  • Section Select — fired when that section becomes the active section (with an optional delay in beats).
  • Section Deselect — fired when navigating away from that section (useful for sending "note off" or cleanup messages).
  • MIDI Button — displayed as a tappable orange button directly in the song viewer, so you can fire the action manually at any time.

Assigning MIDI actions to a song

  1. Open the song in the Song Editor.
  2. Open Structure & MIDI (the song arrangement editor).
  3. Add a MIDI structure item and select a preset from the MIDI Library.
  4. Choose the trigger type and optional beat delay.

MIDI actions assigned to Song Appear are shown as small labels at the top of the song content in the viewer. MIDI Button actions are shown as prominent orange buttons inline in the song content.

MIDI controller mappings

You can map incoming MIDI messages from foot pedals or controllers to JustChords actions.

To configure mappings, go to Song Settings → MIDI → MIDI Controller.

Available actions that can be triggered by MIDI input:

Category Action
Setlist navigation Next Song, Previous Song, Jump to Song (by index or MIDI Custom ID)
Section navigation Next Section, Previous Section, First Section, Last Section, Jump to Section
Scrolling Scroll Down, Scroll Up
Autoscroll Start/Pause, Toggle, Speed Up, Speed Down
Transpose Transpose Up, Transpose Down
Zoom Zoom In, Zoom Out
Audio track Toggle playback
Projection Blackout toggle
Metronome Toggle
Chord Beats Sync Loop toggle (AUv3)

For Jump to Song and Jump to Section, the MIDI Data 2 byte value selects the target song index or section index respectively. For Jump to Song by MIDI ID, Data 2 matches a custom MIDI ID you set in the Song Editor.

You can configure Data 2 as a fixed value, as an On/Off switch (0 = off, 1–127 = on), or as a wildcard that passes the received value directly to the action.

MIDI Clock

Sending MIDI Clock

JustChords can send MIDI Clock to synchronize external devices to a song's tempo. Go to Song Settings → MIDI → MIDI Tempo and enable Send on song appear under the MIDI Clock section.

You can configure how many seconds the clock runs after the song appears (1–30 seconds).

Receiving MIDI Clock

JustChords can receive MIDI Clock from an external source (such as a DAW or drum machine) to drive Chord Beats Sync — the feature that highlights chords in sync with playback. Go to Song Settings → Control → Chord Beats Sync and set the Beats Source to MIDI Clock, then select your clock source device.

JustChords handles Start, Stop, Continue, and Song Position Pointer (SPP) messages automatically.

MIDI Tempo message

When a song appears, JustChords can send a custom MIDI message carrying the song's BPM value, so external devices can follow the song's tempo automatically.

Go to Song Settings → MIDI → MIDI Tempo and enable Send on song appear under the MIDI Message section.

Options:

  • Status — choose the message type (e.g. Control Change).
  • Channel — MIDI channel 1–16.
  • Data 1 — the controller number or parameter.
  • Data 2 — automatically set to the song's BPM (with optional offset and divider).
  • BPM Offset — subtract a fixed value from the BPM before sending.
  • BPM Divider — divide the BPM (e.g. divide by 2 for half-tempo).

Chord Beats Sync and MIDI output

The Chord Beats Sync feature highlights chords in the song viewer in time with the beat. It can also output the current chord as MIDI data so external instruments follow along.

Go to Song Settings → Control → Chord Beats Sync to configure:

  • Beats Source — Off, Metronome, or MIDI Clock.
  • MIDI Out → Song MIDI — controls when section-change MIDI messages are sent: Always, Only when transport is running, or Only when transport is not running.
  • MIDI Out → Chords — sends the current chord as MIDI data. Options: Off, Chords (Note On/Off), or Tone Packet Protocol.
  • Chord Anticipation — send chord MIDI slightly early (1/4, 1/8, or 1/16 beat) to compensate for device latency.
  • Send first chord on song display / section select — immediately outputs the first chord when a song loads or a section is navigated to.
  • Loop Song — loops the song's chord timeline continuously.

MIDI use cases

MIDI integration in JustChords enables many creative and professional workflows:

  • Automated patch changes – Switch sounds on synthesizers and guitar processors when a song loads.
  • Drum machine control – Start backing tracks or change patterns automatically.
  • Lighting control – Trigger lighting cues synchronized with your setlist.
  • Multi-device synchronization – Control bass players, synths, and other MIDI-enabled gear from one central setlist.
  • Foot controller input – Use MIDI foot pedals to navigate songs, transpose or trigger projection sections.
  • Tempo sync – Broadcast the song's BPM as a MIDI Clock or custom MIDI message so every device stays in time.
  • Chord output – Feed chord data in real time to synthesizers or backing-track apps via MIDI Note On/Off or Tone Packet Protocol.

For a real-world example, see how Greg from Seattle uses MIDI messages to control his entire band setup from JustChords: Greg's MIDI story