Instant control of your plugins and Ableton Live devices. If you’re not familiar with User Remote Scripts, this tutorial is a must-read! Using an inexpensive, basic MIDI keyboard such as…

Ableton Live MIDI Remote Scripts For Beginners

Ableton Live MIDI Remote Scripts For Beginners

Instant control of your plugins and Ableton Live devices.

If you’re not familiar with User Remote Scripts, this tutorial is a must-read! Using an inexpensive, basic MIDI keyboard such as the one pictured below, and some of these scripts (which you can make yourself), you can trick Ableton Live into thinking you have up to 6 hardware devices when you only have one! These virtual (or real) devices are known as control surfaces. You can lock each one to an instrument, effects or rack in Live, and leave one free to roam and control any device you click on.

1. Basic MIDI keyboard which has 5 user-programmable presets. This is the M-Audio Keyrig 25. It cost about £50. Each preset can control a plugin, rack or Live device.

M-Audio Keyrig 25

2. Each knob controls a macro on this instrument rack. The keyboard has 5 programmable presets, so you can use 5 scripts, and lock them to 5 different things. Here Preset 1 is locked to an Instrument Rack containing a plugin, the Minimoog, via User Script 1.

Minimoog Instrument Rack in Ableton Live

3. This is the actual Arturia Minimoog plugin. You never really need see it once you’re set up, assuming you’re happy to tweak the 8 most-used parameters. The rack contains effects devices and plugins as well.

minimoog-2

Instructions

Use an ordinary midi keyboard with 8 knobs. You need one which has several programmable presets (most do). You can make a custom Remote User Script for each. This tricks Live into thinking you have several devices. Then you can lock (right-click and select ‘lock to’) different plugins or racks to these presets.

minimoog rack-2

So, let’s say you have a Minimoog racked up and locked to preset 1. To control the parameters in Minimoog you just hit preset 1 and tweak away! The scripts are shown below and there is a forum thread here.

The other thing you need to do is to configure (refer to the Live manual) which parameters you want to control and Racks are a great way to do it. For instance I racked the Minimoog and mapped the 8 main parameters to macros and saved it. If you want, you can control 16 parameters by configuring them and then mapping the first 8 to macros. You have to use the right/left cursors to swap focus from the rack to the other 8. Personally I think 8 is plenty. You can use a familiar layout and color scheme like this and soon you will just remember which knob does what.

The scripts go in here – Macintosh HD:Users:user1:Library:Preferences:Ableton:Live 9.0.2:User Remote Scripts

Here are my first two scripts:

Assign the Global Channel in the script to the number in your controller LESS ONE.

I have 5 obviously, here is the first. Just change the bits in magenta.

# Config File for User-defined Instant Mappings

# We assume that the controls on your MIDI controller
# send CCs (except for pads). All controls that do not have
# an explicit channel setting are expected to use the
# global channel. CCs & Notes are counted from 0-127
# and channels from 0-15.

[Globals]
# The channel that the controller should send on
GlobalChannel: 13
# If your controller is connected via USB, replace ControllerName

[DeviceControls]

Encoder1: 51
Encoder2: 02
Encoder3: 03
Encoder4: 04
Encoder5: 05
Encoder6: 06
Encoder7: 07
Encoder8: 08

EncoderChannel1: -1
EncoderChannel2: -1
EncoderChannel3: -1
EncoderChannel4: -1
EncoderChannel5: -1
EncoderChannel6: -1
EncoderChannel7: -1
EncoderChannel8: -1
# Enter the respective map mode for the encoders here. The following
# map modes are available:
# – Absolute
# – Absolute14Bit
# – LinearSignedBit
# – LinearSignedBit2
# – LinearTwoCompliment
# – LinearBinaryOffset
# – AccelSignedBit
# – AccelSignedBit2
# – AccelTwoCompliment
# – AccelBinaryOffset
# Consult the controller’s documentation to find out which mode to use.
EncoderMapMode: Absolute
# Buttons used here are expected to not be toggles (i.e., sending
# value 0 every second time you press it).
Bank1Button: -1
Bank2Button: -1
Bank3Button: -1
Bank4Button: -1
Bank5Button: -1
Bank6Button: -1
Bank7Button: -1
Bank8Button: -1
NextBankButton: -1
PrevBankButton: -1
LockButton: -1

[MixerControls]
# Again enter the appropriate CCs for the respective controls.
# If all sliders use the global channel to send their data,
# you can leave the channels at -1. You can, of course, use
# encoders or knobs instead of sliders.
VolumeSlider1: -1
VolumeSlider2: -1
VolumeSlider3: -1
VolumeSlider4: -1
VolumeSlider5: -1
VolumeSlider6: -1
VolumeSlider7: -1
VolumeSlider8: -1
Slider1Channel: -1
Slider2Channel: -1
Slider3Channel: -1
Slider4Channel: -1
Slider5Channel: -1
Slider6Channel: -1
Slider7Channel: -1
Slider8Channel: -1
MasterVolumeSlider: -1
MasterSliderChannel: -1
Send1Knob1: -1
Send1Knob2: -1
Send1Knob3: -1
Send1Knob4: -1
Send1Knob5: -1
Send1Knob6: -1
Send1Knob7: -1
Send1Knob8: -1
Send2Knob1: -1
Send2Knob2: -1
Send2Knob3: -1
Send2Knob4: -1
Send2Knob5: -1
Send2Knob6: -1
Send2Knob7: -1
Send2Knob8: -1
TrackArmButton1: -1
TrackArmButton2: -1
TrackArmButton3: -1
TrackArmButton4: -1
TrackArmButton5: -1
TrackArmButton6: -1
TrackArmButton7: -1
TrackArmButton8: -1
VolumeMapMode: Absolute
SendsMapMode: Absolute

[TransportControls]
# The transport buttons are also expected not to be toggles.
StopButton: -1
PlayButton: -1
RecButton: -1
LoopButton: -1
RwdButton: -1
FfwdButton: -1

Here’s the second script

# Config File for User-defined Instant Mappings

# We assume that the controls on your MIDI controller
# send CCs (except for pads). All controls that do not have
# an explicit channel setting are expected to use the
# global channel. CCs & Notes are counted from 0-127
# and channels from 0-15.

[Globals]
# The channel that the controller should send on
GlobalChannel: 13
# If your controller is connected via USB, replace ControllerName
# with the name of the respective port. Live will then try to
# recognize the ports for you when you select your Instant-Mappings
InputName: ControllerName
OutputName: ControllerName
# If your controller has pads that send notes, you can use them to
# play the visible pads in your DrumRacks. Just replace the -1 for
# the note (and channel) of the respective pad. The arrangement of
# the pads in the DrumRacks is as follows:
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# 13 14 15 16
# (If you leave the channel of a pad at -1, Live will assume that
# the pad uses the global channel)
Pad1Note: -1
Pad2Note: -1
Pad3Note: -1
Pad4Note: -1
Pad5Note: -1
Pad6Note: -1
Pad7Note: -1
Pad8Note: -1
Pad9Note: -1
Pad10Note: -1
Pad11Note: -1
Pad12Note: -1
Pad13Note: -1
Pad14Note: -1
Pad15Note: -1
Pad16Note: -1
Pad1Channel: -1
Pad2Channel: -1
Pad3Channel: -1
Pad4Channel: -1
Pad5Channel: -1
Pad6Channel: -1
Pad7Channel: -1
Pad8Channel: -1
Pad9Channel: -1
Pad10Channel: -1
Pad11Channel: -1
Pad12Channel: -1
Pad13Channel: -1
Pad14Channel: -1
Pad15Channel: -1
Pad16Channel: -1

[DeviceControls]
# The Encoders will control the device parameters (you can also
# use knobs or sliders). Replace the -1’s with the CCs sent by
# the respective controls on your controller. You can also set
# the channel for each controller if it differs from the global
# channel (if you leave the channel of an encoder at -1, Live
# will assume that the encoder uses the global channel).
Encoder1: 11
Encoder2: 12
Encoder3: 13
Encoder4: 14
Encoder5: 15
Encoder6: 16
Encoder7: 17
Encoder8: 18

EncoderChannel1: -1
EncoderChannel2: -1
EncoderChannel3: -1
EncoderChannel4: -1
EncoderChannel5: -1
EncoderChannel6: -1
EncoderChannel7: -1
EncoderChannel8: -1
# Enter the respective map mode for the encoders here. The following
# map modes are available:
# – Absolute
# – Absolute14Bit
# – LinearSignedBit
# – LinearSignedBit2
# – LinearTwoCompliment
# – LinearBinaryOffset
# – AccelSignedBit
# – AccelSignedBit2
# – AccelTwoCompliment
# – AccelBinaryOffset
# Consult the controller’s documentation to find out which mode to use.
EncoderMapMode: Absolute
# Buttons used here are expected to not be toggles (i.e., sending
# value 0 every second time you press it).
Bank1Button: -1
Bank2Button: -1
Bank3Button: -1
Bank4Button: -1
Bank5Button: -1
Bank6Button: -1
Bank7Button: -1
Bank8Button: -1
NextBankButton: -1
PrevBankButton: -1
LockButton: -1

[MixerControls]
# Again enter the appropriate CCs for the respective controls.
# If all sliders use the global channel to send their data,
# you can leave the channels at -1. You can, of course, use
# encoders or knobs instead of sliders.
VolumeSlider1: -1
VolumeSlider2: -1
VolumeSlider3: -1
VolumeSlider4: -1
VolumeSlider5: -1
VolumeSlider6: -1
VolumeSlider7: -1
VolumeSlider8: -1
Slider1Channel: -1
Slider2Channel: -1
Slider3Channel: -1
Slider4Channel: -1
Slider5Channel: -1
Slider6Channel: -1
Slider7Channel: -1
Slider8Channel: -1
MasterVolumeSlider: -1
MasterSliderChannel: -1
Send1Knob1: -1
Send1Knob2: -1
Send1Knob3: -1
Send1Knob4: -1
Send1Knob5: -1
Send1Knob6: -1
Send1Knob7: -1
Send1Knob8: -1
Send2Knob1: -1
Send2Knob2: -1
Send2Knob3: -1
Send2Knob4: -1
Send2Knob5: -1
Send2Knob6: -1
Send2Knob7: -1
Send2Knob8: -1
TrackArmButton1: -1
TrackArmButton2: -1
TrackArmButton3: -1
TrackArmButton4: -1
TrackArmButton5: -1
TrackArmButton6: -1
TrackArmButton7: -1
TrackArmButton8: -1
VolumeMapMode: Absolute
SendsMapMode: Absolute

[TransportControls]
# The transport buttons are also expected not to be toggles.
StopButton: -1
PlayButton: -1
RecButton: -1
LoopButton: -1
RwdButton: -1
FfwdButton: -1

As you can see it’s just a question of changing the channel numbers. Then you assign each preset to those numbers, so preset 1 is the first lot and preset 2 is the second lot. Then when you select a device right click and lock to a preset (or just control it instantly on a roaming channel). The hardest bit was setting up the channels in Keyrig, but I got there in the end, I used the Enigma software. Shown here are the preferences settings.

Live Midi preferences-2

Founder of MacAbleton.com

Leave a Reply