NeuralDSP plugins and MIDI

Back to All Articles
This article documents how I control my Neural DSP plugins with my Nektar Pacer MIDI controller, both in standalone mode and within Ableton Live.

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:

Nektar Pacer:

Plugin's MIDI:

UsagePlugin MIDI message typePacer message type
Effect pedal On/OffCC AbsoluteCC Toggle, data1=CC#, data2=127, data2=0
Preset selectionNote PresetMIDI Note, data1=note, data2=127, data3=0
Wah pedal positionCC AbsoluteCC, data1=7, data2=0, data3=127
Wah pedal activationCC 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 setupAbleton Live MIDI setup

Ableton Live MIDI and audio tracks, effect rack and MIDI mappings

Ableton Live tracks setup

Ableton Live MIDI mappings

The effect rack's chain selector is mapped to the "Amp selector" macro.

NeuralDSP plugin MIDI mappings

Cory plugin MIDI config

MIDI messages and mappings

MIDI messages:

UsageMIDI channelMIDI message and valueAbleton LiveNektar PacerPlugin
Plugin (de)activation16CC #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 selectionspecific to pluginNOTE
The note value must be the plugin's preset MIDI mapping.
This message is not used by Ableton Live.MIDI NOTENote Preset
Plugin's effect pedal on/offspecific to pluginCC #nn
Value 0 for pedal OFF, value 127 for pedal ON.
This message is not used by Ableton Live.CC ToggleCC Absolute
Plugin's wah pedal positionspecific to pluginCC #7
The value 0-127 is the pedal position.
This message is not used by Ableton Live.CCCC Absolute
Plugin's wah pedal activationspecific to pluginCC #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.CCCC Gate

MIDI channel:

MIDI channelusage
1Cory plugin
2Plini plugin
3Gojira plugin
4Omage plugin
16Ableton 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.

Chain SelectorChain Selector

Macro #1 "Amp selector"Macro #1 "Amp selector"

Amp Selector (macro #1) mappingAmp 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.

Device ActivatorDevice Activator

Device Activator mappingDevice Activator mapping

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:

  1. MIDI Note 1 : this will select the plugin's preset defined for this note.
  2. MIDI CC#100 with value 16 : this will position the Chain Selector and select and activate the corresponding plugin (in this example, Cory Wong).

Example of Pacer Preset MIDI, for preset A1Example of Pacer Preset MIDI, for preset A1

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#.

Example of Pacer Preset MIDI, for preset C3Example of Pacer Preset MIDI, for preset C3

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 MIDIPlugin Note PresetUsage
NOTE 1 (C#)C#0select the plugin's preset mapped to note MIDI note number 1
NOTE 2 (D)D0select the plugin's preset mapped to note MIDI note number 2
NOTE 4 (D#)D#0select 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)
D1D2D3D4D5D6 Tests

And the Pacer footswitches are used like this:

Pacer footswitchPacerPlugin CC AbsoluteCoryPliniGojiraOmega
122FilterCompressorOctaver
223TubeOverdrive settings 1OD
324DistorsionOverdrive settings 2DRT
425ChorusDelay Ping-PongPhaser
526DelayDelayChorus
627Reverb ShimmerReverbDelay
A
B
CPrevious preset
DNext preset
EXP 17Wah pedalPitch-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:

typevaluerules
CC GateN > 0 = ON, N == 0 = OFF
CC AbsoluteN > 63 = ON, N < 64 = OFF
CC Relative?
CC ToggleN > 63 toggles the switch, N < 64 is ignored.
CC ValueactiveN > 63 = ON, N < 64 is ignored (stays ON)
CC ValueinactiveN > 63 = OFF, N < 64 is ignored (stays OFF)
CC PresetSelect a preset, CC value is ignored

Nektar Pacer MIDI controller:

typepressreleasepressrelease
CC Toggle127no message sent0no message sent
CC Trigger12701270
Program BankN 0 0no message sentN 0 0no message sent

NeuralDSP plugin used with Nektar Pacer:

PacerPluginUsage
CC Toggle 127, 0CC AbsoluteOn/Off
NoteMIDI NoteSingle 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

Communities:

Utilities

Plugin files on Mac:

Setup screenshots

Cory Wong plugin

Click image for full-size.

Plugin MIDI input devicesPlugin MIDI input devices

Plugin MIDI mappingsPlugin MIDI mappings

Plugin Save MIDI mappingsPlugin Save MIDI mappings

Plugin MIDI mappings folderPlugin MIDI mappings folder

Plugin Presets folderPlugin Presets folder

Plugin MIDI mappingsPlugin MIDI mappings

Plugin MIDI mappingsPlugin MIDI mappings

Pacer controller

We use the Pacer Editor https://studiocode.dev/pacer-editor/

Preset configuration example :

Preset MIDI example :

© StudioCode.dev - Made with 11ty and tailwindcss.