UPDATE (7/12/19): New version 2.0.5 Beta has been released!
MPE or MIDI Polyphonic Expression controllers have become quite popular in music production and sound designing. They add expressiveness when playing virtual instruments by sending MIDI messages like pitch bend or control change per note, instead of global like standard MIDI controllers do.
Since I’ve been working on a new update for AudioSwift, I thought maybe I could implement this feature inside the Trigger Mode. I read the MPE specifications, followed the instructions, wrote the code, and here is the first attempt to make the trackpad a MPE controller!
Download the latest beta version from here. It’s still in beta, but so far, so good. Before we go into MPE details, first, let’s see some changes in this version.
What’s new in the Trigger Mode?
The GUI for the Trigger Mode has changed. The user can now type a label to each pad in the Console window. Use it to know which drum samples are triggered or if you want to change articulations in your virtual instruments by key switching, using Logic Pro’s Articulation Sets or Cubase’s Expression Maps.
The trackpad can now be divided into 8, 15, 16 and 20 pads and depending on what you choose, between 48 and 60 pads can be set in banks per Type, for a total of 180 pads. Change the banks at the bottom of the Console or press the key shortcuts period and comma, or keys Z and X.
You’ll see that there are also three Types: Drums, Keys (with MPE support), and Chords. For the moment, Chords just plays single notes. I still need to develop this option. Use key shortcut B to switch between them.
AudioSwift with MPE Mode
In order to send MIDI messages per note, a MPE controller separates the data between MIDI channels. Then the synth or virtual instrument should be MPE compatible in order to reproduce the sounds correctly or otherwise it will work like regular MIDI. Roger Linn Design website, makers of the popular LinnStrument MPE controller has a list of recommended sounds and DAWs that are compatible and could work with AudioSwift.
AudioSwift uses MIDI channels 2, 3, and 4 to send the MIDI messages of each note, and channel 1 for global messages. Only three notes can be played in the trackpad at the same time. Although the MPE specification allows Channel Pressure per note, with the trackpad it’s impossible because the Force Touch mechanism is one through all the surface. AudioSwift will only send global Channel Pressure on channel 1.
To enable MPE mode in AudioSwift, select the Trigger Mode and select Keys as the type in the Console window. Choose a number of pads for your trackpad. Then go to Preferences > Trigger Tab and click Use MPE Mode. By default, the X-axis sends Pitch Bend and the Y-axis sends CC#74 Expression, which is the standard control change number according to the MPE specification. You can change it to CC#1 instead and set a default value where the controller will return after the finger is lifted from the trackpad. In this case is 64.
I still need to add the option to let the user set the notes in a particular scale. The notes should be set manually in the meantime. However, you can transpose one octave the current bank of notes in the Console window, by using shortcuts C and V, or N and M. Press the ⇧ key with these letters to transpose them one semitone.
Logic Pro Plugins & U-He Repro-5
I only have Logic Pro’s stock plugins and U-He Repro-5 to test AudioSwift in MPE mode. With U-He Repro-5, it doesn’t require a special setup. With Logic Pro synths and samplers however, you need to go to the bottom of the plugin, click the triangle and select MIDI Mono Mode: On (with common base channel 1). Choose the Pitch Bend range for your instrument.
There are two issues that I need to figure out if they‘re caused by these plugins or by AudioSwift. With Logic Pro’s plugins, when I tried to play a note that previously had CC info on its MIDI channel, the plugins try to readjust quickly to the new CC value, causing a swooping noise. You can hear this in the first video around 0:11 when I tried to play D3. This doesn’t happen with U-He Repro-5.
However, with Repro-5 the global Channel Pressure in MIDI channel 1 doesn’t work. I don’t know if it’s because in Repro-5 the Channel Pressure and the Note On messages should be in the same MIDI channel to play the sound correctly.
Ableton Live Setup
Live doesn’t support MPE but there is a workaround to make it work with MPE plugins. First, we make sure the AudioSwift 3 input is enabled at Live > Preferences > Link MIDI > MIDI Ports. Then, we are going to create five MIDI tracks in our project.
Track 1 will be the host for the MPE plugin. In my case, it’s U-He Repro-5. It will only play the sounds and won’t receive any MIDI input directly from the trackpad, so select No Input under MIDI From.
Track 2 will be the global master channel and will use MIDI channel 1. Tracks 3 to 5 will use MIDI channels 2 to 4 for each note. Under MIDI From, select AudioSwift 3 for all four tracks and then set each track to MIDI channels 1 to 4. See image above.
Now under MIDI To for each track, select your plugin (Repro-5 in my case.) Below set each track to a channel of the plugin (1-Repro-5, 2-Repro-5, etc.) Arm tracks 2 to 5, press record and start playing with the trackpad. The sound should come out from track 1 and the notes will be spread out over the rest of the MIDI tracks.
Play with it. Let me know how it works for you. Your feedback is really appreciated.
My contact info as always: