Akai LPD8 controller for Ableton Live 8

UPDATE: The following is a quote from the release notes for Ableton Live 8.2.2:

8.2.2 Release Notes. Improvements and feature changes: Added control surface support for Akai Professional LPD8.

So finally the contents of this article is not relevant anymore 🙂

The original article follows

This is how to set up Ableton Live to use the Akai LPD8 controller.

The Akai LPD8 is an ultra-portable pad controller. It has 8 sensitive trigger pads and 8 assignable knobs. It is plug’n’play for Windows and Mac, so in theory you can just connect it and start using it with your favourite music production software.

AKAI LPD8 MIDI pad controller


When you first connect the LPD8, it will show up in Live as a MIDI note input device enabled for triggering note events. So just load up a drum kit on a MIDI track, arm it, and start hitting those triggers.

There is no native support for the LPD8 knobs in Ableton Live, though. So a lot of the more powerful features of remote controllers, such as instant mapping and device locking, are not enabled by default.

To start using the LPD8 in “Manual Control Surface Setup” mode, you must go to the Preferences, MIDI Ports section, and enable the “Remote” button. Twiddling the knobs will now send MIDI data to Live, but nothing really happens just yet. The last step is to go to MIDI Learn mode, select the parameter you want to change, and move the corresponding knob to link the knob to the software control.

Now, the problem with the Manual Control and MIDI Learn mapping is that the link between the knob and the control is not context sensitive. This is the most interesting feature of natively supported controllers, because then you can use the same knobs to control all different instruments and sound parameters depending on what is currently selected.

So to get to this exalted level of controller support, we need to implement native support for the LPD8.

The official Ableton Live manual has nothing about how to do this, and searching around on the internet may lead you down a severely complicated path with multiple python scripts and internal APIs etc. But I found an easier way in an article called Ableton Live MIDI Remote Scripting How To: Custom Korg nanoSERIES Control. This tutorial was for setting up a similar (but inferiour…) controller, so I tweaked the scripts a little for the LPD8.

The key is to find the User Remote Scripts folder in your Preferences for Ableton Live. Here you will find actual instructions and a template for writing your own script. This script must be placed in a subfolder named after your controller.

So I created the folder Library/Preferences/Ableton/Live 8.1.5/User Remote Scripts/AKAI LPD8/. In this folder I put the following file, called UserConfiguration.txt

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

# The channel that the controller should send on
GlobalChannel: 0
# 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: LPD8
OutputName: LPD8
# 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: 40
Pad10Note: 41
Pad11Note: 42
Pad12Note: 43
Pad13Note: 36
Pad14Note: 37
Pad15Note: 38
Pad16Note: 39
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

# 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: 1
Encoder2: 2
Encoder3: 3
Encoder4: 4
Encoder5: 5
Encoder6: 6
Encoder7: 7
Encoder8: 8
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: 9
Bank2Button: 10
Bank3Button: 11
Bank4Button: 12
Bank5Button: 13
Bank6Button: 14
Bank7Button: 15
Bank8Button: 16
NextBankButton: -1
PrevBankButton: -1
LockButton: -1

# 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

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

With this file in place, the next time you start Ableton Live, you will find AKAI LPD8 as a possible selection in the Preferences MIDI Control Surface drop-down box. Select this, and go back to your musical masterpiece.
If you now try to click on an instrument rack control, you will get the blue hand icon, and your LPD8 will control the parameters. A typical instrument rack has 8 virtual knob controls, neatly mapping into the 8 physical knobs on the LPD8.

For more complex controls, such as the Operator synth, the knobs will control individual detailed parameters. When there are more than 8 parameters, they will be assigned different “banks”. To switch banks using the LPD8, push the “CC” button, and use the trigger pads to select bank 1 (pad 1) through bank 8 (pad 8). The status bar at the bottom of Live’s interface will show you the name of the bank, such as “Operator Bank : Oscillator B” for pad 2, or “Operator Bank : LFO” for pad 5, etc.

Now, you can finally enjoy detailed control of all Live parameters using the Akai LPD8 controller.

PS: Akai also makes the fabulous Akai LPK25 ultra-portable MIDI keyboard, in the same style as the LPD8. They go very well together, and I recommend getting both to have a complete on-the-road MIDI setup for your laptop.

11 thoughts on “Akai LPD8 controller for Ableton Live 8

  1. Hi,

    Thanks for your article.

    I’ve tried that configuration, and it’s doesn’t working for me.
    For example, I opened an “Impulse” device, and the blue hand is there, but my LPD8 doesn’t control the triggers of Impulse sounds.

    Are there any other steps to do?


  2. Hi, Pablo.

    The configuration is mainly for getting the knobs to operate the values. The blue hand indicates you have remote control, and I hope if you turn a knob a value on the device changes.

    Now, to address your problem:

    The Impulse instrument uses notes from C3 to C4 to trigger notes, while the LPD8 by default sends notes from C1 to G1. This is the reason your Impulse does not trigger from the pads. If you use the Drum Racks for instance, they follow the GM “standard” by having the most common drum sounds on these notes. So a quick and easy solution would be to insert a Pitch and Scale device to remap the notes C1-G1 to C3-C4.

    Another solution that worked for me, was to switch the LPD8 to Preset 3, by pushing the red PROGRAM button and hitting pad 3, then switching back to PAD mode. In this mode the notes sent are compatible with Impulse. To play a Drum Rack, switch back to preset 1.

    Unfortunately, initially the knobs stopped working for me when switching, due to preset 3 being mapped to MIDI channel 3. You should change this in the LPD8 Editor back to channel 1. Another thing that stopped working was the bank switching using CC+Pad, because the CC messages sent are different in preset 3 and preset 1. You would probably want to change this in the LPD8 Editor as well, to retain bank switching functionality.

    Hope this helps! 🙂

  3. Your article is one of the very few I’ve found about this controller and remote scripting that is useful. Thanks so much for your help.

    Having loaded your script, it seems the knobs send Live a signal on Prog 1 and 3 but not when I hit Program and either Pad 2 or 4. Did you deliberately “unmap” the knobs on 2 and 4?

  4. I`m new at all this and nothing worked until I landed here. Your script + instructions worked on my first attempt. Thank you very much for this! cheers!

  5. Hey, guys, I just wanted to say that 8.2.2 version of Live implements native support of LPD8 so you may just update instead of messing with userconfiguration file!

  6. Hey, great tutorial! but I still need some help from a live expert.

    I have followed these tutorials many times, I place my remote scripts in the live.app subfolder. I hooked up the midi sync window properly. I can see my lpd8 sending my midi signals, and their values (with midi mapping, which works), but none of my encoders work with instant mapping(remote scripts)(cc1-8 channel 1).

    I dont know what is different with my setup. This is killing me, if anyone can help.

  7. Hello, about LPD-8 and LPK-25 together: you can use a couple LPD-8 knobs for modulation and pitchwheel for the LPK-25. Here’s how: map the first knob to CC1 – that’s modulation. Map the second knob to an unused CC number (9 or 14 works). Install MIDI-Ox and MIDI-Yoke from http://www.midi-ox.com . Use MIDI-Ox data mapping to map CC14 (as an example) to pitch bend. Map the inputs from both the LPK-25 and LPD-8 to a single MIDI Yoke output. Enable said MIDI Yoke input inside the DAW. Voila – tiny keyboard with drum pads, pitch knob and mod knob and 6 controller knobs in a small bag (or backpack).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s