MIDI

MIDI is a communications protocol that is used to recall sound presets of synthesizers and guitar pre-amps, change the settings of effect processors and remote control audio mixers.
Song One is able to send outgoing MIDI events to:
  • select a specific sound or effect preset with MIDI 'program change' messages.
  • change the characteristics of a synthesizer sound or control the effects of a guitar processor with MIDI 'control change' messages.
  • control external hardware devices with MIDI 'note on/off' messages.
Song One is able to receive incoming MIDI events to:
  • let you control Song One's virtual keyboard with an external keyboard and auto-generate chord symbols (to be added to your lyrics) with MIDI 'note on/off' messages.
  • let you control Song One's auto-scroll and page-flip modes, as well as the selection of songs with MIDI 'program change', 'control change' or 'note on/off' messages.
  • initiates the playback of a song via an incoming MIDI event from third party DAWs (e.g. Ableton Live, Pro Tools, Logic Audio, Cubase) or MultiTrack apps (e.g. Playback, Prime). (See Song Trigger to learn more.)

Enabling MIDI

When MIDI is enabled Song One monitors all MIDI ports and recognizes connected MIDI devices automatically.
Go to the app settings/preferences and enable Song One's MIDI functions.
MIDI devices may be connected to an iPad via the 'iPad Camera Connection Kit' adapter. Consult the user guide of your MIDI foot/keyboard controller to learn how to:
  • connect your MIDI device to your Mac, iPad or iPhone.
  • program your MIDI device to send/receive specific MIDI messages.
Note: MIDI foot controllers can be connected with Song One via Bluetooth MIDI.

MIDI Ports

Each MIDI device connected to your computer/iOS device is assigned a MIDI port by the operating system. These MIDI ports can then be activated by MIDI capable apps to send and receive MIDI messages. Song One offers three ways to activate MIDI ports:

(1) Wired MIDI Connection

Song One automatically activates all MIDI ports of a device connected to your computer/iOS device via a MIDI/USB cable.
  • All incoming MIDI events are automatically received on all available ports.
  • All outgoing MIDI events are automatically sent to all available ports.

(2) Bluetooth MIDI Connection

Use Song One's Bluetooth MIDI device browser to create a connection with the MIDI ports of Bluetooth devices. (See 'Bluetooth MIDI' to learn more.)

(3) Virtual MIDI Connection

A virtual MIDI port is used to exchange MIDI messages between two separate apps. Song One's virtual MIDI port is automatically activated as soon as MIDI is enabled in the settings/preferences.
Use Song One's virtual MIDI port to manage a large MIDI setup of multiple devices with a third party MIDI routing app. (See 'Optional Third Party Apps' to learn more.)

Disabling MIDI Ports

If you wish to exclude a specific device from exchanging MIDI messages with Song One you may disable its MIDI port.
Tap/Click on the circle arrow icon at the top of the library panel and select 'MIDI Ports'. Access the individual ports of connected MIDI devices in the 'MIDI Sources' and/or 'MIDI Destinations' submenus:
  • 'MIDI Sources' lists the ports of devices that send MIDI events to Song One.
  • 'MIDI Destinations' lists the ports of devices that receive MIDI events from Song One.
All active ports are marked with a checkmark next to the device's name.
Tap/Click on a MIDI port in the menu to remove/add the checkmark and disable/enable the communication with the port.
You may also disable/enable Song One's 'Virtual In' port and 'Virtual Out' port by removing/adding the checkmarks in the 'MIDI Ports' menu.

MIDI Out Port Configuration

Song One allows you to customize the routing of outgoing MIDI events:
Go to the 'Bluetooth & MIDI' section of Song One's settings/preferences and choose on of two options:
  • 'Send Song One's MIDI Events To All Active Ports (Auto-Connect / Broadcast)'
  • 'Send Song One's MIDI Events To Virtual Port (Manage Ports With External App)'.

Bluetooth MIDI

Song One is able to send and receive MIDI messages transmitted via Bluetooth when MIDI devices are paired with the built-in device browser.
To connect a powered-on Bluetooth MIDI device tap/click on the circle arrow icon at the top of the library panel. Then select 'Bluetooth MIDI' from the pop-up menu.
Song One displays a list of your devices that can be connected via Bluetooth.
Tap/Click on the 'Not Connected' label to establish a connection with an active Bluetooth device.
Close the device browser by:
  • either tapping/clicking on the chevron in the upper left corner of the list. (macOS/iPad)
  • or swiping the list downwards. (iPhone)
If a signal is not received from your MIDI device enable MIDI in Song One.
A Bluetooth MIDI device can only be paired with one computer at a time. To disconnect a paired keyboard or foot controller from the computer running Song One tap/click on the 'Connected' label of the device browser. This will allow the MIDI device to be paired with a new host.
Note: macOS/iOS automatically disconnects paired MIDI Bluetooth devices when either the MIDI device is powered off or the app (e.g. Song One) is being closed.
Bluetooth MIDI is designed to quickly establish a connection with a single MIDI keyboard or foot controller. See 'Optional Third Party Apps' to learn how to integrate Song One into more elaborate MIDI setups.

Receiving MIDI Events

The MIDI note events of an external MIDI keyboard can trigger Song One's virtual keyboard. This allows you to auto-generate chord symbols to be added to your lyrics.
Song One's auto-scroll and page-flip mode are also controllable with MIDI foot controllers via 'program change' or 'control change' (CC) messages.
When MIDI is enabled Song One will monitor all 16 MIDI channels for incoming MIDI messages. You may use MIDI foot controllers on a dedicated MIDI channel by making the appropriate selection in Song One's settings/preferences.

External MIDI Keyboards

The notes played on an external MIDI Keyboard may be monitored when Song One's virtual keyboard is active. To do so:
Enable 'Display MIDI Notes & Chord Symbols' in Song One's settings/preferences.
Then activate Song One's virtual keyboard by tapping on the keyboard icon of the docked toolbar (see Virtual Keyboard to learn more).
If a MIDI connection was unsucessfull try one of the following options:
  • Disconnect and reconnect the external MIDI keyboard and wait a few seconds.
  • Connect the MIDI keyboard to your computer device before launching Song One.
  • Make sure that the MIDI keyboard works in other apps that support MIDI.
Note: Song One only processes MIDI notes within the pitch range of the virtual keyboard. You may customize the pitch range in the 'Instruments' settings.
When an external keyboard fails to send a MIDI note-off event it can cause a note to play repeatedly on Song One's virtual keyboard.
To fix this it is necessary to purge all notes. Generate an 'All Notes Off' MIDI command by performing a long tap / right click / two finger tap on the sustain icon in the left corner of Song One's virtual keyboard.

MIDI Foot Controllers

MIDI foot controllers can be connected wirelessly with Song One via Bluetooth MIDI. (See Bluetooth MIDI to learn more.)
Once you have connected your foot controller select its MIDI channel in the 'Trigger Arrow Keys Via MIDI' drop-down menu (app settings/preferences). Then select a desired MIDI message for each of Song One's arrow key commands.
Song One reacts to arrow key commands received via MIDI in the same way as to arrow key commands received via Bluetooth page turner pedals. (See Bluetooth Page Turners to learn more.)

Sending MIDI Events

​An outgoing MIDI event is added to the selected song in Song One. All outgoing MIDI events are managed in the song's MIDI event list.
Gain access to the MIDI event list in the side panel.
If the side panel is not visible tap/click on the vertical mark at the left side of the screen:
Tap/Click on the icon in the upper right corner of the side panel and select 'MIDI' from the drop-down menu to access the MIDI event list.

Adding MIDI Events To The List

To add a MIDI event to the list tap/click on the plus sign above and make a selection from the drop-down menu.

Adding Note Events

A 'note event' is most commonly used to produce a sound at a specified pitch on a MIDI device. Foot controllers that do not produce sounds can assign functions to received MIDI notes.
Select 'Add Note Event' from the MIDI drop-down menu (see 'Adding MIDI Events To The List').
The MIDI event window appears in the center of the screen:
Specify a MIDI channel (1-16) by tapping on the arrow next to 'Chan' and make a selection from the drop-down menu. (Select 'All' to send the message on all channels.)
The MIDI channel number allows you to specify which of your MIDI devices is to receive the MIDI event.
MIDI devices can identify 128 notes via a MIDI 'Note' number (0 to 127).
Tap/Click on the 'Note' label and select the desired note from the drop-down menu. The corresponding MIDI number will be entered automatically.
A note event includes a 'Velocity' value (0 to 127) which determines the force with which the note is played. (A high velocity produces a louder sound when the note event is received by a keyboard.)
Song One gives you the option to 'Omit' or 'Include' a 'Note Off' command when a note event is sent via MIDI. (When you play the keyboard of a synthesizer a 'Note Off' command is generated every time you release a key.)
Once you have configured the event tap/click on the arrow next to 'Send' and make a selection from the drop-down menu.
  • Select 'Auto (When Opening Song)' to send the MIDI event automatically when a song is selected in the library or in a set.
  • Select 'Queue (Position ...)' to send a MIDI event during the performance of the song. (See MIDI Queue to learn more.)
Tap/Click on the 'Test' button to make certain that the MIDI event works as intended.
Tap/Click on the 'Save' button to add the note event to the MIDI event list of the song.
A note event can be re-selected from the MIDI event list for further editing.

Adding Program Changes

Select 'Add Program Change' from the MIDI drop-down menu (see 'Adding MIDI Events To The List').
The MIDI event window appears in the center of the screen:
A basic program change message consists of a single 'Program' value (0 to 127) which is used to select a certain patch (sound/preset):
Enter the desired program number into the program value field. When using a 'General MIDI' device you may tap/click on the 'Program' label to select a patch from a standardized list of sounds.
Note: General MIDI devices display a program number from 1 to 128. The actual value that is sent/received via MIDI is always a value from 0 to 127. Subtract 1 to determine the number that needs to be entered into Song One's 'Program' field.
Since most MIDI devices offer more than 128 patches a basic program change message can be expanded with up to two 'Bank Select' values (0 to 127).
MIDI devices that support 'Bank Select' MIDI messages divide their patches into banks, each bank containing 128 programs. Consult the user guide of your MIDI device to determine which 'Bank Select' values need to be entered to select the desired program.
Once you have configured the event tap/click on the arrow next to 'Send' and make a selection from the drop-down menu.
  • Select 'Auto (When Opening Song)' to send the MIDI event automatically when a song is selected in the library or in a set.
  • Select 'Queue (Position ...)' to send a MIDI event during the performance of the song. (See MIDI Queue to learn more.)
Tap/Click on the 'Test' button to make certain that the correct patch is selected.
Tap/Click on the 'Save' button to add the program change to the MIDI event list of the song.
A program change can be re-selected from the MIDI event list for further editing.

Adding Control Changes

Select 'Add Control Change' from the MIDI drop-down menu (see 'Adding MIDI Events To The List').
The MIDI event window appears in the center of the screen:
A control change MIDI event, also referred to as a 'CC' message, includes a control change number (0 to 127) which identifies a specific command from the pre-defined MIDI controller list.
Tap/Click on the 'CC №' label and select the desired command in the drop-down menu. The corresponding MIDI number is entered automatically.
Each control change command is accompanied by a 'Value' (0 to 127). Enter a desired value:
Some foot controllers send an 'Off Value' of 0 when the pedal is released. Song One gives you the option to 'Include' or 'Omit' this value.
You can also select 'Toggle' to alternate between 0 and the value you have entered each time the MIDI command is executed by Song One.
Song One keeps track of the 'Toggle' values for each MIDI channel and each of the 128 available CC commands. Selecting another song from the library or a set will reset all 'Toggle' values.
Once you have configured the event tap/click on the arrow next to 'Send' and make a selection from the drop-down menu.
  • Select 'Auto (When Opening Song)' to send the MIDI event automatically when a song is selected in the library or in a set.
  • Select 'Queue (Position ...)' to send a MIDI event during the performance of the song. (See MIDI Queue to learn more.)
Tap/Click on the 'Test' button to make certain that the MIDI event works as intended.
Tap/Click on the 'Save' button to add the control change to the MIDI event list of the song.
A control change can be re-selected from the MIDI event list for further editing.

MIDI Queue

Song One's MIDI queue allows you to send MIDI events during the performance of a song by assigning them to up to 50 queue positions.
Assign a MIDI event to a queue position by tapping/clicking on the arrow next to 'Send'. Then make a selection from the drop-down menu.
Once events have been assigned to the MIDI queue you may step through the queue positions during the performance and execute the MIDI events by:
  • either tapping on the song info/MIDI queue pop-up in the upper right corner of the screen,
  • or by using a MIDI foot controller or the Bluetooth page turner pedals.
After you have tapped/clicked on the MIDI queue pop-up the next queue position in line is displayed to allow you to send its MIDI events (with another tap/click):
When the end of the song's MIDI queue is reached Song One will go back to the beginning of the queue.
The MIDI queue pop-up can be minimized by omitting the event label:
To do so go to Song One's settings/preferences and make the desired selection under 'Song Editor' -> 'Song Info & MIDI Queue Pop-Up'.
To send the MIDI events of a queue position with a foot controller use the UP, LEFT or RIGHT arrow key function in the 'Bluetooth & MIDI' section of Song One's settings/preferences.

Song Trigger

A song trigger initiates the playback of a song via an incoming MIDI event from a keyboard/controller, a DAW (e.g. Ableton Live, Pro Tools, Logic Audio, Cubase) or a MultiTrack app (e.g. Playback, Prime).
Note: Song triggers are only executed when a setlist is currently NOT selected and/or being played. (When a set is played back its songs are exclusively controlled via the MIDI commands specified in Song One's settings.)
Open the MIDI event list to assign a trigger to the currently selected song:
Tap/Click on the plus sign above the MIDI event list and select 'Set Song Trigger' from the drop-down menu.
The midi event window appears in the center of the screen:
Set the incoming MIDI event (from the third party app) to be used to trigger the playback of a song by:
...tapping/clicking on the downward pointing arrow next to 'Event' and making a selection in the drop-down menu.
...adding the desired value of the MIDI event.
A song trigger is only executed when it is received on the MIDI channel that has been specified in the top left corner of the midi event window:
Changing the MIDI channel (1...16) allows you to assign the same MIDI event (i.e. a program change with a value of 12) to up to 16 different songs.
Note: Song One would be unable to determine which song to launch if the same MIDI event and channel are assigned to more than one song. If identical song triggers exist Song One will automatically disable all but one of them.
A disabled song trigger is indicated by an outlined play icon in the MIDI event list and in the library panel:
An enabled song trigger is indicated by a filled out play icon in the MIDI event list and in the library panel:
Enable or disable a song trigger by tapping/clicking on the downward pointing arrow next to 'Enabled' in the midi event window.
Song One allows you to create over 36.000 unique song triggers by changing the MIDI channel, the event type and event value.
  • Make each of your band members use a different MIDI channels and/or event types when assigning song triggers to their songs. This allows songs to be easily shared via AiDrop without inadvertently disabling the triggers of newly added songs.
Tap/Click on the 'Save' button to add the song trigger to the MIDI event list of the song.
Tap/Click on the 'List' button to export a list (in plain text format) of all song triggers that you have added to the song catalog.
A song trigger can be re-selected from the MIDI event list for further editing.

MIDI System Events

MIDI system events are sent on all MIDI channels to all connected devices on the MIDI network. Song One sends MIDI system events when a song is selected and/or during the performance of a song via a MIDI queue.
MIDI system events are added to the MIDI event list of the selected song:
Tap/Click on the plus sign above the MIDI event list and make a selection in the 'Add System Event' submenu.
The 'Song Select' MIDI event is used to recall a specific song in a sequencer or drum machine. A 'Song Select' event includes a user specified value (0..127) to identify the desired song:
The 'Start', 'Continue', and 'Stop' MIDI events are used to control the playback of the song in the sequencer or drum machine.

SysEx Messages

SysEx messages are used by manufacturers to transmit data that cannot be transmitted via standard MIDI events.
A SysEx message may be of any length and carries information that is only understood by specific hardware devices:
  • Please consult the user guide of your hardware device to learn more about what can be controlled via SysEx messages.
SysEx messages are added to the MIDI event list of the selected song:
Tap/Click on the plus sign above the MIDI event list and select 'SysEx' in the 'Add System Event' submenu.
The MIDI event window with a text field (SysEx editor) will appear:
Enter the SysEx message in the hexadecimal format.
Tap/Click on the 'Test' button to make certain that the SysEx message is executed.
Tap/Click on the 'Save' button to add the SysEx message to the MIDI event list of the song.
MIDI system events can be re-selected from the MIDI event list for further editing.

MIDI Syntax

You may add MIDI commands to a song by typing (or pasting) them into the song editor in the MIDI syntax format. Typed-in MIDI commands are added to the MIDI event list when you select ‘Auto-Format Text’ in Song One's import menu. Song One uses the same MIDI Syntax format as OnSong and SongBook ChordPro.
Type ‘midi:’ into the song editor followed by one or more comma-separated MIDI events as described below:

Note Events (Syntax)

To add a note event type in...
  • the prefix 'N' to identify the note event,
  • the note number with a value of 0...127 (e.g. 50),
  • a colon followed by the note's velocity value between 0...127 (e.g. 82),
  • an '@' sign followed by the channel number between 0...15 (e.g. 2):
Example:
Example of multiple MIDI events including a note event:

Program Changes (Syntax)

To add a basic program change type in...
  • the prefix 'PC' to identify the program change,
  • the program number with a value of 0...127 (e.g. 27),
  • an '@' sign followed by the channel number between 0...15 (e.g. 3):
Example:
Example of multiple MIDI events including a program change:
To add a program change with MSB/LSB values type in...
  • the prefix 'PC' to identify a program change,
  • the MSB value between 0...127 (e.g. 6),
  • [optional: a period followed by the LSB value between 0...127 (e.g. 11)],
  • a colon followed by the program number with a value of 0...127 (e.g. 33),
  • an '@' sign followed by the channel number between 0...15 (e.g. 4):
Example:
midi: PC6.11:[email protected]
Example of multiple MIDI events including a program change with MSB/LSB values:

Control Changes (Syntax)

To add a control change type in...
  • the prefix 'CC' to identify the control change event,
  • the CC number between 0...127 (e.g. 117),
  • a colon followed by the CC value between 0...127 (e.g. 45),
  • an '@' sign followed by the channel number between 0...15 (e.g. 8):
Example:
midi: CC117:[email protected]
Example of multiple MIDI events including a control change:

System Events (Syntax)

To add a 'Song Select' system event type in 'SS' followed by an number between 0...127.
To add a 'SysEx' system event type in 'F0' followed by the SysEx message in the hexadecimal format.
To add a 'Start' system event type in 'START'.
To add a 'Stop' system event type in 'STOP'.
To add a 'Continue' system event type in 'CONTINUE'.

Optional Third Party Apps

Audio MIDI Setup App (macOS)

The macOS operating system inlcudes the 'Audio MIDI Setup' app which may be used to connect Bluetooth MIDI devices to your Mac computer.
Navigate to the 'Utilities' folder of macOS and double-click on the 'Audio MIDI Setup' app.
Set up your MIDI devices as decribed in Apple's user guide:

midimittr App (macOS & iOS)

The free app midimittr may be used to connect Bluetooth MIDI devices with Song One and enable/disable specific MIDI ports. Using the midimittr app increases the latency of MIDI signals, which is the time it takes for the MIDI message to arrive at its destination.
Use the midimittr app to manage outgoing MIDI events that are generated by Song One (e.g. program and control changes) when you have numerous external MIDI devices.