NeuralDSP plugins and MIDI
In summary
The MIDI controller is a Nektar Pacer. I use it to control the following plugins in Ableton Live: Cory Wong, Plini, Gojira and Omega Granophyre.
My setup allows me to switch presets and automatically activate the corresponding plugin while de-activating the others in order to reduce the CPU load.
Ableton Live setup:
- One MIDI track receives the MIDI messages from the Pacer controller and forward them to the NeuralDSP plugin.
- This tracks sends MIDI out to the Audio track's NeuralDSP plugin.
- In the Audio track, the plugins are grouped in an effect rack and activated/deactivated with the help of chain select zones.
Nektar Pacer:
- One Pacer preset equal one plugin preset. That means the Pacer presets are very similar. It would be very easy to have one single Pacer preset to control several presets of a plugin.
- The footswitches 1-6 are used to activate/deactivate effect pedals in the plugins.
- The A & B footswitches are not used at the moment.
- The C & D footswitches are used to navigate the Pacer's presets. This will automatically activate the corresponding plugin and select the right plugin's preset.
- One external expression pedal input is used to control the plugin's wah pedal if any.
- When a preset it selected, the Pacer automatically sends a MIDI message to activate the corresponding plugin and select to corresponding plugin's preset.
Plugin's MIDI:
Usage | Plugin MIDI message type | Pacer message type |
---|---|---|
Effect pedal On/Off | CC Absolute | CC Toggle, data1=CC#, data2=127, data2=0 |
Preset selection | Note Preset | MIDI Note, data1=note, data2=127, data3=0 |
Wah pedal position | CC Absolute | CC, data1=7, data2=0, data3=127 |
Wah pedal activation | CC Gate |
Important to know:
Ableton Live does not forward a MIDI CC message if the value doesn't change. This means that one can not use CC Preset to select a plugin's preset, because the value will always be the same and Ableton will therefore only forward the message once. The solution is to use a MIDI NOTE message, which will always be sent, regardless of the value. (Note: not repeating CC message when the value doesn't change is kind of a standard setting in the MIDI world.)
Ableton Live will not forward Program Change messages to a plugin. Do not use Program Change messages with the plugin. Only use CC and Note messages.
Setup in details
Click an image to view the full-size version.
Ableton Live MIDI setup
Ableton Live MIDI and audio tracks, effect rack and MIDI mappings
The effect rack's chain selector is mapped to the "Amp selector" macro.
NeuralDSP plugin MIDI mappings
MIDI messages and mappings
MIDI messages:
Usage | MIDI channel | MIDI message and value | Ableton Live | Nektar Pacer | Plugin |
---|---|---|---|---|---|
Plugin (de)activation | 16 | CC #100 The value must be the desired Effect Rack's chain selector position. | Effect Rack's chain selector (via a Macro). This message is not used by the plugin. | MIDI CC | - |
Plugin's preset selection | specific to plugin | NOTE The note value must be the plugin's preset MIDI mapping. | This message is not used by Ableton Live. | MIDI NOTE | Note Preset |
Plugin's effect pedal on/off | specific to plugin | CC #nn Value 0 for pedal OFF, value 127 for pedal ON. | This message is not used by Ableton Live. | CC Toggle | CC Absolute |
Plugin's wah pedal position | specific to plugin | CC #7 The value 0-127 is the pedal position. | This message is not used by Ableton Live. | CC | CC Absolute |
Plugin's wah pedal activation | specific to plugin | CC #7 Any value above 0 will activate the pedal (because of the GATE type mapping we use in the plugin). | This message is not used by Ableton Live. | CC | CC Gate |
MIDI channel:
- One specific channel (ch. 1-4) per plugin to control the plugin's effects.
- One common channel (ch. 16) to control the Ableton Live's effect rack chain selector (plugin selector).
MIDI channel | usage |
---|---|
1 | Cory plugin |
2 | Plini plugin |
3 | Gojira plugin |
4 | Omage plugin |
16 | Ableton effect rack |
MIDI mappings in Ableton Live
1. Selecting the plugin:
The chain selector is mapped to the macro #1. This macro is renamed as "Amp Selector" and mapped to MIDI CC #100.
Amp Selector (macro #1) mapping
2. Activating the desired plugin and deactivating the others:
For each NeuralDSP plugin, the Device Activator is also mapped to MIDI CC #100 with a range of values corresponding to the chain selector position.
So, MIDI CC #100 will select the chain AND activate/deactivate the plugin.
Nektar Pacer configuration
The Pacer can host 24 presets (4 banks of 6). Each preset define the messages sent by the Pacer's footswitches and expression pedals.
Each Pacer preset can also have a set of messages that will be sent when the preset is activated. This feature is used to pilot the Ableton Live Chain Selector and select the corresponding NeuralDSP plugin.
In the first example below, when we select the Pacer preset A1, the Pacer will automatically send the following two messages:
- MIDI Note 1 : this will select the plugin's preset defined for this note.
- MIDI CC#100 with value 16 : this will position the Chain Selector and select and activate the corresponding plugin (in this example, Cory Wong).
The second example below shows the setup for the preset C3 that will activate the Gojira plugin and select its preset mapped to the Note D#.
Note: the Pacer configuration screenshots show the Pacer Editor https://studiocode.dev/pacer-editor/.
Caution about the MIDI Note messages:
The number after the note name is the octave. There is no fixed standard for the octave number. The plugin's note C0 is MIDI note number 0 (the very first one). In my setup I prefer to use note 1 and up (because I prefer to count from 1).
Pacer Preset MIDI | Plugin Note Preset | Usage |
---|---|---|
NOTE 1 (C#) | C#0 | select the plugin's preset mapped to note MIDI note number 1 |
NOTE 2 (D) | D0 | select the plugin's preset mapped to note MIDI note number 2 |
NOTE 4 (D#) | D#0 | select the plugin's preset mapped to note MIDI note number 3 |
... | ... | ... |
Pacer presets organization
The preset are organized as follows in my Pacer:
A1 Cory Clean (102) | A2 Cory Crunch (103) | A3 Cory Overdrive (104) | A4 Cory (105) | A5 Cory (106) | A6 Cory (107) |
B1 Plini Clean (108) | B2 Plini Crunch (109) | B3 Plini Overdrive (110) | B4 Plini (111) | B5 Plini (112) | B6 Plini (113) |
C1 Gojira (114) | C2 Gojira (115) | C3 Gojira (116) | C4 Omega (117) | C5 Omega (118) | C6 Omega (119) |
D1 | D2 | D3 | D4 | D5 | D6 Tests |
And the Pacer footswitches are used like this:
Pacer footswitch | Pacer | Plugin CC Absolute | Cory | Plini | Gojira | Omega |
---|---|---|---|---|---|---|
1 | 22 | Filter | Compressor | Octaver | ||
2 | 23 | Tube | Overdrive settings 1 | OD | ||
3 | 24 | Distorsion | Overdrive settings 2 | DRT | ||
4 | 25 | Chorus | Delay Ping-Pong | Phaser | ||
5 | 26 | Delay | Delay | Chorus | ||
6 | 27 | Reverb Shimmer | Reverb | Delay | ||
A | ||||||
B | ||||||
C | Previous preset | |||||
D | Next preset | |||||
EXP 1 | 7 | Wah pedal | Pitch-shifting pedal | |||
EXP 2 |
Details of the different MIDI messages and mappings available in the NeuralDSP plugins in and the Pacer controller
NeuralDSP plugin MIDI CC:
type | value | rules |
---|---|---|
CC Gate | N > 0 = ON, N == 0 = OFF | |
CC Absolute | N > 63 = ON, N < 64 = OFF | |
CC Relative | ? | |
CC Toggle | N > 63 toggles the switch, N < 64 is ignored. | |
CC Value | active | N > 63 = ON, N < 64 is ignored (stays ON) |
CC Value | inactive | N > 63 = OFF, N < 64 is ignored (stays OFF) |
CC Preset | Select a preset, CC value is ignored |
Nektar Pacer MIDI controller:
type | press | release | press | release |
---|---|---|---|---|
CC Toggle | 127 | no message sent | 0 | no message sent |
CC Trigger | 127 | 0 | 127 | 0 |
Program Bank | N 0 0 | no message sent | N 0 0 | no message sent |
NeuralDSP plugin used with Nektar Pacer:
Pacer | Plugin | Usage |
---|---|---|
CC Toggle 127, 0 | CC Absolute | On/Off |
Note | MIDI Note | Single action e.g. Preset |
Note 1: It's also possible to use CC Toggle in the plugin with CC Trigger in Pacer, but this is not the best solution because it does not allow to sync a LED (on the Pacer) with the state of the effect in the plugin.
Note 2: for single actions, e.g. Preset Previous, Preset Next, it is important to use a MIDI message that send two different values, like, for example, the CC Triger that sends 127 on press and 0 on release. If we use a MIDI message that always sends the same value, e.g. PROG CHANGE, than Ableton Live will only act on the first message it receives. Live will ignore the following messages because the value does not change and Live thinks it can then ignore these messages.
Resources
- https://support.neuraldsp.com/help/plugins
- MIDI on Ableton: https://support.neuraldsp.com/help/midi-on-ableton
- MIDI Mapping (Standalone): https://support.neuraldsp.com/help/midi-mapping-standalone
- NeuralDSP forum MIDI thread: https://unity.neuraldsp.com/t/neural-dsp-midi-thread/233
- Using MIDI CC in Ableton Live : https://help.ableton.com/hc/en-us/articles/360010389480-Using-MIDI-CC-in-Live
- Ableton Live, Program Change recognition - WHY NOT? : https://forum.ableton.com/viewtopic.php?t=93674
Communities:
Utilities
- MIDI Monitor plugin that can be placed in an audio track: https://aixdsp.com/midi-monitor/
Plugin files on Mac:
- Settings Files:
/ Library / Application Support / Neural DSP / - Presets: Macintosh HD / Library / Audio / Presets / Neural DSP /
- MIDI config: Macintosh HD / Library / Audio / Presets / Neural DSP /
- AudioUnits: Macintosh HD / Library / Audio / Plug-ins / Components /
- VST3: Macintosh HD / Library / Audio / Plug-ins / VST3 /
- Standalone App: Macintosh HD / Applications / Neural DSP /
Setup screenshots
Cory Wong plugin
Click image for full-size.
Pacer controller
We use the Pacer Editor https://studiocode.dev/pacer-editor/