Changing Settings


Each of the eight switching ports have multiple parameters that can be configured over MIDI. A simple Java application is available to allow a user-edited configuration file to be loaded on to the board. The new configuration can be stored in EEPROM so it is available as the default configuration each time the board is powered on.

Please note the board needs to be put into a special programming mode (by holding the MODE button for 1-2 seconds) to allow reconfiguration. This is a safety feature to prevent inadvetent change of the configuration. When not in this mode all reconfiguration messages are ignored.

A modified configuration must be saved (by pressing the MODE button again, or via a MIDI message) or it will be lost when power is removed.

Trigger Notes

The MIDI channel/note combinations that trigger each port are configurable.

Ports can be configured so that they are ON for as long as their corresponding MIDI trigger note is held, or for a fixed period of time, even if the MIDI note is released before that time period completes.

The trigger note and channel is set by a MIDI NRPN message. You can use the Java configurator to send the messages.

Velocity Modulation

There are two methods by which “velocity sensitivity” can be achieved:

Velocity modulation is set by a MIDI NRPN message. You can use the Java configurator to send the messages.

CC Modulation

Instead of note velocity, we can use a MIDI “continuous controller” as the modulator (for example the Modulation Wheel) or we can use the Pitch Bend controller. Modulation sources can be set independently per port and separately for pulse duration and duty cycle on each port.

The Java application is described in detail below. Alternatively the MIDI messages that reconfigure the board can be sent from your own application or controller.

CC modulation is set by a MIDI NRPN message. You can use the Java configurator to send the messages.

LED Indications

The activity (ACT) LED indicates the status of the board as follows…


The configuration application is distributed as a runnable JAR file, which requires Java to be installed on your computer.

When the program first loads, you need to select the MIDI output device that you are using to communicate with the MIDI Switcher board.

The program lists all available devices on your system. Locate the correct device and enter (in the input area at the bottom of the screen) the command **dev** (replacing with the appropriate number for your device).

For example to use device 4, enter dev4

Make sure the device is not already in use by other programs.

Having entered the dev command, the device should be displayed with a “>” symbol

Enter porta to access the port configuration screen

The “>” symbol now shows that porta is the selected port, to which entered commands apply. You can change the selection between ports using commands porta, portb etc. As a shortcut you can enter /a or /b instead.

Configure the current port by entering commands like the following:

Specify duration modulation sources as shown below. “Duration modulation” is how we can use the note velocity, or another MIDI controller, to change the output pulse length (good for changing the “hit” velocity of a solenoid)

Similarly we can modulate the duty cycle modulation using

Any of the above commands can be applied to all ports simultaneously by prefixing a command with the asterisk symbol. For example *ch3 sets all eight ports to trigger from MIDI channel 3

Multiple commands can be entered at the same time as long as they are separated by white space (including newlines). This allows the entire configuration to be copied to the clipboard and saved as a text file to be edited/pasted back into the command line at a later time. In this way you can keep entire configuration “patches” as blocks of text.

If a given command is not understood, it will remain on the command line and a beep will sound. If multiple commands are entered, they will be processed until the first unrecognised command. The successful commands will be removed from the command line.

Commands are sent to MIDI as they are entered. If you need to resend (for example the MIDI Switcher board was not connected) you can resend the configuration for a specific channel by entering ! as a command. To resend all channels enter *!

The MIDI-Switcher uses the new parameters as they are received, but does not save them to EEPROM (so they will be lost when powered down). If you wish to save the new set of parameters to EEPROM so they are used as the new power-on defaults you can send the command ^ (caret). Alternatively the MODE button on the board can be pressed to save the new settings.

Note that the initial information shown in the window reflects the default settings for the ports and not neccessarily the current settings that are active on the board. There is no communication back from the board, so the application does not know the current settings. This is why it is useful to copy a finalised configuration to the clipboard and paste it somewhere safe!


MIDI-Switcher is reconfigured over MIDI using Non-Registered Parameter Number (NRPN) Messages, which it receives on MIDI channel 1. This is one of the ways that MIDI allows device-specific data can be exchanged with a MIDI device.

To avoid inadvertant changes to configuration, MIDI-Switcher can only receive these NRPN messages when it is placed in “configuration” mode by holding the MODE button down.

Each parameter is uploaded by means of a set of MIDI messages that first provide the target parameter number, then the data to load into the parameter. Each message is 3 bytes long (shown in hexadecimal notation below)

Message: Set Non-Registered Parameter Number: Most Significant Byte (MSB)

0xB0 0x63 {Param# MSB} (see table below)

Message: Set Non-Registered Parameter Number: Least Significant Byte (LSB)

0xB0 0x62 {Param# LSB} (see table below)

Message: Data Entry: Most Significant Byte (MSB)

0xB0 0x06 {Data / 128}

Message: Data Entry: Least Significant Byte (MSB)

0xB0 0x26 {Data % 128}

Data Entry for a given parameter must occur in the order MSB, then LSB. When the MSB message is received, the LSB is cleared.

</td> </table>
(MSB * 128 + LSB)
Port number
1MIDI Trigger Channel 0-15
"2MIDI Trigger Note 0-127
"31-16384 = Fixed Trigger Duration in milliseconds.
0 = Trigger for as long as trigger note is held
"4Duration modulator
Specifies a modulation source that scales trigger duration
0-127 = MIDI Continuous controller on trigger channel (use 1 for modulation wheel)
128 = No modulation; always apply full duration
129 = Use the trigger note velocity to modulate the trigger duration
130 = use pitchbend to modulate the trigger duration (no bend = 50% of maximum duration)
"50-100 = Trigger duty cycle percentage. The carrier is approx 80Hz.
"6Duty cycle modulator
Specifies a modulation source that scales the duty cycle up to the maximum set
0-127 = MIDI Continuous controller on trigger channel (use 1 for modulation wheel)
128 = No modulation; always apply the maximum duty cycle value
129 = Use the trigger note velocity to modulate the duty cycle
130 = use pitchbend to modulate the duty cycle (no bend = half of maximum value)
"7Invert output
0 = Normal
1 = Switch output off when triggered
1001Write configuration to EEPROM. This can also be performed by pressing the mode button on the board after uploading modifications to the configuration