This guide explains how to setup your system in order to control the Jamulus Mixerboard using a MIDI Control Surface device (or similar) using JACK. In this article Windows is used as an example, however it will be possible to perform this on other platforms as well. For Linux, the process will be very similar as this platform also uses JACK. You will need to install an extra component (like a2jmidid) to allow the midi device to connect to JACK. For macOS you can use MIDI Studio to ensure the midi connection is linked properly to Jamulus.
What do you need?
- Jamulus with JACK support (not the standard ASIO version if you are using Windows), you can download the Jamulus JACK version for Windows here).
- You need an audio device with ASIO support or you can use a universal ASIO driver like ASIO4ALL.
- You need a MIDI Control Surface. Many different models are available. I am using a Worlde EasyControl 9.
- JACK for Windows get it from the JACK audio page.
What do you need to know?
You need to know the MIDI Control Change numbers which are assigned to the buttons/faders/knobs of your MIDI Control Surface device. For the device I use, the setup is:
When your device has buttons which you want to use to control the Mute or Solo option, then you should configure these with the Toggle option (instead of Momentary). In Toggle mode the signal will only be send once when you press the button and not when you let the button go. In Momentary mode the “ON” signal will be send when pressed and when let go the “OFF” signal will be send.
What to install?
- Install JACK for Windows, accepting the default options should be sufficient.
- Install Jamulus with JACK for Windows, accepting the default options but don’t run Jamulus at the end.
- Install an ASIO Driver (if one is not provided with your audio device/soundcard, then you can use a generic driver like ASIO4ALL).
Setting everything up
Plug in your MIDI Control Surface into your computer. This needs to be done before you start QjackCtl and Jamulus.
Now let’s setup JACK:
You will mostly control the Audio flow in JACK (or QjackCtl, the software you can see in the screenshot which you can find in the Start Menu).
Click the Setup button in the QjackCtl software to select your Audio interface or ASIO4ALL. You should use/select an ASIO driver:
Ensure the driver is set to portaudio, the Sample Rate is set to 48000, Frames/Period is set to something low like 64 or 128. You can now close this window by clicking OK.
Next, click on the Start button in Qjackctl.
After this is started, click the Graph button to show the Graph dialog:
NOTE: In this dialog you should see the System MIDI connection. If you do not see that option, then your MIDI device is not recognized or you may have connected the device after you started JACK.
Now let’s update the Jamulus shortcut:
The Jamulus installation has created a Desktop Shortcut, which we need to modify. We need to tell Jamulus that we want to use the MIDI Control Surface. Locate the icon on the desktop, right click on the icon and select “Properties”
We need to add an option to the Target field.
The information you need to provide will depend on the MIDI Control Surface device configuration. The mixing section of my device contains 9 faders, 9 knobs and 9 buttons. As my controller has only 1 button row, I need to decide to use the Mute or Solo option.
- The fader section starts with CC# 3 and ends with CC# 11.
- The knobs section starts with CC# 14 and ends with CC# 22.
- The button section starts with CC# 23 and ends with CC# 31.
We need to tell Jamulus that these Control Change numbers are being used. When the Control Change is send, it will also send a value for the CC. The value will be in the range from 0 till 127. The fader at the zero position will send value 0 and at the max. position it will send value 127. The knob will send 0 when turned fully to the left, 64 when in top centre and 127 when turned fully to the right. The button will send OFF (0 value) or ON (127 value).
The option we need to use for Jamulus is: –ctrlmidich
We need to add the information described above in the following format:
The first number indicates the MIDI channel Jamulus needs to listen to. A zero can be used if you want Jamulus to listen to all midi channels. The channel used will depend on your device and can be configurable as well. After the first number we enter a ;
Next we start with the letter f (for fader), enter the first CC# number for the faders (in this case 3), how many faders the device contains (in this case 9), and we add a ;
Next we start with the letter p (for pan), enter the first CC# number for the knobs (in this case 14), how many knobs the device contains (in this case 9), and we add a ;
Next we start with the letter m (for mute), enter the first CC# number for the buttons (in this case 23), and how many buttons the device contains (in this case 9).
NOTE: if you want to use the Solo option instead of Mute, then you replace the letter m by s (for solo). Or if you have another row with buttons, then you can add the sequence for that button row.
Next we start with the letter o (for own channel mute), enter the CC# number for the button (in this case 2) to control this. As this is a single function, there is no need to indicate how many buttons are used for this.
You also need to make sure to start and end the values with double quotes.
The final command will look like this: –ctrlmidich “1;f3*9;p14*9;m23*9;o2”
Add this in the Target field:
Click OK to save and close that window.
Now you can start Jamulus and the initial dialog should appear (without errors).
Now let’s go back to the JACK Graph dialog window:
In this dialog you should see the Jamulus software which automatically has connected to the System Input (capture) and System Output (playback). You notice that there is an extra connect option available for Jamulus, which indicates MIDI.
NOTE: This is only available when the –ctrlmidich option is used when starting Jamulus.
Use the mouse and click on “System Midi Capture_1” and drag this to the “Jamulus input midi” connector. This will allow the MIDI signals to be send from the MIDI device to Jamulus.
NOTE: Jamulus will not respond to MIDI messages if you have forgotten this step.
Now let’s go and do some testing:
Connect to a server and the Jamulus window should looke something like this:
Your own channel is the first one in the list and your name/alias has been automatically prefixed with a number. 0 for the first fader.
TIP: Starting with Jamulus version 3.8.2, you have an option to always have your own fader first. This can be enabled in the View menu. This will ensure that, regardless of the sorting mode you use for the mixerboard, your own fader is the first one in the mixerboard and can be controlled by the first fader/knob/button.
You can now control your own “channel” using the first fader, knob and button(s). The second person who joins the jam session will get the second fader assigned, and so on.
Enjoy your jam sessions!
Feel free to add/update this KB post as appropiate.