Out of the box, Akai’s APC40 has some lovely features for plug-and-play control of Ableton Live, with clip triggering, track control, device control, and dedicated buttons for command shortcuts. It also sends and receives standard MIDI messages for every last button and encoder. But what if you still want more? What if you need more controls to do multiple duties, or get bored with simple clip triggering and decide you want additional interaction? Enter the hackers. Already, using MIDI, clever APC40 users are squeezing more function out of this box. And while it isn’t solved yet, there are some clues to the infamous hardware handshake – a System Exclusive string exchanged between the APC and Live that locks certain Live software features to the APC and not to other hardware you might like to use.

Manual MIDI

Before we get too fancy, for power tricks, your first stop should be Akai’s own site:
Tips and Tricks June – APC40

Live allows you to manually override the APC’s dynamic control assignments using the standard MIDI Map. Let’s say you don’t use headphones for cueing. You can select the MIDI Map, pick a control to which you want the Cue Level encoder to be assigned, and you’ll manually assign just that control – the rest of the dynamic template remains in place. Akai has some tips for scrolling through scenes, selecting scenes with one of the two footswitch jacks on the back of the unit, scrubbing and nudging clips, fine-tuning tempo control, and more.

monome Emulation for APC40 and Korg padKONTROL

Our friend Michael Hatsis of trackteamaudio has been hard at work in Max/MSP patching an emulator for the creative patches for the open-source monome hardware. (Thanks on Twitter to ruaridhTVO, too.) By translating from the (and, cough, superior) OpenSoundControl messages the monome supports natively to MIDI, the emulator supports not only the APC but Korg’s padKONTROL, as well. This opens up the use of the APC for creative microsampling and other tasks.

Video demo at top (updated late Sunday night, so if you saw this over the weekend, here’s a tighter version).

Direct download:

Forum discussion:

And be sure to check out the Java- and Python-powered open-source library for the monome on which Michael’s work is based:

You’ll find plenty of documentation in Michael’s download, and the hope is that this is just the beginning — you Max patchers out there (and Pd, if we can port this) can keep hacking on it and try out some new ideas. One reason you might want to keep hacking on the padKONTROL is that you could find uses for velocity – unlike the monome and APC, Korg’s 4×4 drum pads are velocity sensitive.

APC40 Customization, Performance Tweaks

This is the best video I’ve seen yet with the APC40. The APC itself is strikingly limited for a MIDI device, without even basic abilities like preset switching or the ability to change default MIDI assignments. But because it’s connected to a computer, if you’ve got some MIDI programming skills and time on your hands, you don’t have to stop there. Stray411, the creator of the brilliant nativeKONTROL software for the padKONTROL, Korg nano series, and Akai MPD32 has turned his MIDI hacking superpowers to the APC.

First, he demos the manual remapping technique. But from 1:38 onward, he remaps and reroutes messages via Bome’s MIDI Translator, commercial Windows (and now Mac) software for more sophisticated mapping of MIDI messages. This allows him to create his own dynamic template for control that applies more functionality to the onboard hardware controls on the APC.

I’m not even sure you’ll want to do this – it can make for a more complex control scheme – but it’s impressive just seeing the ideas out there.

Note that this sort of thing should also be possible via any software that does MIDI input and output, including the free Pure Data (Pd) patching environment and Max for Live when it ships in the fall. (I’m not entirely sure how intercepting MIDI with Max for Live will work, though, especially with the hardware handshake to contend with… more on that in a moment.)

Korg fans (and Akai MPD owners), be sure to check out:
And see the nativeKONTROL videos:
nativeKONTROL YouTube Playlist

…and really, that deserves a separate post.

MIDI for Lights

Akai left out the MIDI Implementation that’s traditionally included with MIDI hardware (cough), but it does use standard MIDI messages both for outgoing control data (when you move an encoder or press a button) and incoming messages (like Live switching a light from off to amber to green).

I’m going to publish the Missing MIDI Implementation later this week here on CDM, but to get you started, Danny P on the Cycling ’74 forum has deciphered the toughest part – the messages that light up the clips:

Midi confusion with APC40

And even better, CerebralNektar (of the nativeKONTROL) project has already built a full-blown Max/MSP template for the clip grid:

OK, let’s hack the APC

The Hardware Handshake: First Clues

Ableton has worked with Akai to add a specialized MIDI implementation to Ableton Live, using a set of System Exclusive messages to prevent the hacker community from emulating certain APC features in other hardware. Specifically, this includes several abilities:

  • Using bank buttons to trigger different sets of clips in a larger set, without running out of MIDI messages to do so
  • Providing a red rectangle overlay to show which 8×5 (40 clip) array is selected in Live
  • Sending MIDI messages for clip status back to the hardware (thus lighting up the lights)

Now, granted, as implemented this functionality may be of limited to use to hardware that isn’t the APC40 – particularly because it’s hard coded for an 8×5 grid of buttons, which is a non-standard size. But having talked even to some passionate fans of the APC, I know it’s bothering a lot of people. I think there are several reasons why.

In short, it’s the first time I know of that standard MIDI messages were used not for the purpose of interoperability, but to actually prevent you from using your own hardware. The APC itself won’t work properly with Live if this string is interrupted (and you’ll see complaints on the user forum in which people are having related problems). Also, while the functionality here is hard-coded to the 8×5 array on the APC, that raises another question – why not make a generic implementation for other hardware? Why not a rectangle that shows a 4 x 4 grid for hardware like the Akai MPD series, Native Instruments’ Maschine controller, and the popular Korg padKONTROL and M-Audio Trigger Finger?

In the meantime, cracking the handshake could be useful for owners of the monome or upcoming Ohm64, even with their 8×8 grid – you can use the last three rows for shortcuts.

Michael Hatsis writes (consistent with what I saw running MIDI through MIDI-OX):

from what I can see both the APC’s 2nd string and Live’s 3rd string have 24 bytes, both with bytes 8-23 different each time
– There’s your handshake…

I have set up two max patches that parse and output the SYSEX sent by both the APC and Live. the one called handshake only outputs the unique bytes for both the APC and Live to the Max window. There are more details inside.

Have a download, folks – this gives you some of the MIDI to look at even if you don’t have an APC40:

I couldn’t figure out what the algorithm was, but then, I’m not terribly good at that sort of thing. So we’ll be interested to see if anyone else can sort it out.

By the way, this is sent in the clear as MIDI messages. There’s no real reverse engineering here. It’d be like printing the secret password for your speakeasy on a billboard at a rush-hour bottleneck on the 101 highway. Nor is there any kind of theft involved. These are capabilities built into Ableton Live, which Ableton has effectively blocked from use with this System Exclusive communication.

In a matter of days since the hardware shipped, the APC40 user community has already done some incredible work. This to me makes a powerful argument for openness – and it says that the same community could do even more if hardware and software used more intelligent communication schemes like OpenSoundControl instead of being locked to the limitations of MIDI.

A Video to Close us Out

To close, here’s a reminder that part of why we expend this much energy on controllers is to make them personal instruments for ourselves. Here’s a YouTube demo that shows people can make the APC, well … shake.

  • digi

    I came across this on Twitter the other night, and thought it would end up here – GREAT article, great overview.

    And the APC suddenly seems like a viable alternative for those of us who has given up on the monome (it's too hard to get hold of) …

  • Well, if it's a monome you want, you should check out the arduinome:

    Quite easy to get a hold of, and could be a fun build.

    I don't see the monome and APC as equivalent. The monome is compact, open, handcrafted, bus-powered, and minimalist. If you really want knobs and faders, you won't even *like* the monome — whether you can get it or not — and you should look at the APC or Ohm64 for your lots-of-buttons fix.

  • I'm working with arduino and I will create a faderbox to complement arduinome.

    I accept donations of course (old hardware for canibalizate parts)


  • @Mudo: That's a really great idea. Keep us posted.

  • ST8

    I'd be really interested to see whats going on inside the APC40 midi remote script. There must be some interesting functions to allow it to communicate with the upcoming M4L and to enable those rectangles and custom controls in ableton. Cant see anything specific from inspecting the Live modules in python.


    Im working on something similar, i'm incorporating both an lcd display and faders/rotary encoders into an extra module for an arduinome for full control in ableton.


    Firmware is very much a work in progress, trying to sort out an enclosure at the moment.

  • dstroud

    The color of the pads is set by MIDI not messages with the velocity choosing the color/flashing state. I use a MidiPipe patch (on the Mac) to change the default colors so that it's easier on my colorblindness. Amber is now Red and the pads flash continuously while recording.

  • @ST8: Actually, I don't think that the APC40 interfaces in any way with Max for Live, nor does any hardware. Both work via the Python Live API — the one that's built into the program. (The "Live API" released previously is basically just a hack into that interface.)

    That actually means that, aside from whatever these particular functions are that look for the handshake, you can do anything with the Live API itself with or without Max for Live. (M4L should just make it easier — or easier if you're a fan of Max, at least.)

    At the same time, I'm interested in what can be done with really building software around hardware and not having to do any of this hacking about. πŸ˜‰ So I expect some people may find they're more productive just building their own little performance instrument — whether with Max, Pd, Reaktor, SuperCollider, AudioMulch, whatever — and performing with that. And some may have that running inside Live as a host, just for access to the occasional clip / instrument / effect etc.

    Your controller looks fantastic, by the way!

  • neu

    hi peter can the monomulator can be used on a lemur?

  • digi

    @peter That is of course true – the APC40 (or the Korg padKONTROL) is not a replacement for a monome, but it's something that can be used to at least some extent as a substitute … or even something exceeding the monome (faders, rotary controls etc.).

    We'll see.

  • I'm just wondering about these controller because I have too many projects in working progress but if I could advice or work altogether…

    Check this:

    here the code:

    I'm a electronic luthier apprentice and this is one of my next projects (for continue learning)


  • neu

    thanks Bjorn Vayner but i would like to see another alternative the monoluator could be another one

  • Pingback: Akai APC40 Hacking Guide » Synthtopia()

  • Well, generally speaking it should be easier for the Lemur to emulate the monome using OSC than MIDI, because they both share that as their native protocol.

  • @ neu
    the source patch is included with the monomulator download so you could modify it if you were max savy.
    Or – this is a funny thought( but it will work :-> ), make a lemur template that sends out the MIDI that an apc40 does. all of that info is available via Peter's super thorough article.

    @ ST8-
    Ive been following your work with the LiveAPI stuff for Lemur. Super impressive. I believe with the LiveAPI hacks all of the stuff an APC can do has been figured out – except the "ring around the clips". unfortunately, i believe max for live won't give us this "RATC" functionality either. Is there any way someone could decompile the APC python script? I know some of the other MIDI remote scripts were decompiled. actually, now i think i read something saying that ableton is using a newer version of python with v8, and won't decompile…

  • Pingback: AaronRutledge.com » CDM’s APC40 Hacking Superguide()

  • Pingback: APC40 Hacking Guide(s) | Ask A Sound Guy()

  • Pingback: Create Digital Music Β» APC40 Hacking Superguide: Monome Emulator … | musicjackbox.com()

  • "Your video is in line waiting to be converted, but we can't provide an accurate guess when it will start. You can leave this page and we will email you when this video is ready for watching.

    Vimeo Plus members are moved to the front of this line and never have to wait."

    ….uhhhh, wtf?

  • I think Michael must have made some edit to his video and replaced it.

  • griotspeak

    @ !include

    sigh, i thought i saw the module for the RATC… when iirc it was sessioncomponents but i will check when i get home from work

  • @ newmiracle
    yeah, I swithced the video. Last time it was swapped out in minutes. this time its going on 8 hours or so.:-(
    my apologies to CDM and it's readers. hopefully it will be up there soon.

    @ griotspeak

    that would be great if it was in there. were you able to decompile the apc script? if so the handshake algorithm would probably be in there as well. Please keep us posted…


  • set_show_highlight from _Framework.SessionComponent.SessionComponent-class.html found in http://www.assembla.com/spaces/live-api/documents

    Its a decompile from 7.0.14 and the APC isn't included. But it does list the messages for the highlight (if that is the RATC), banks and offsets.

  • Thats from the API pages, forgot to add a link to those: http://www.assembla.com/spaces/live-api/documents

  • Oh, that I can deal with. I thought that there was some sort of premium account for VIEWING, which would suck.

    Can't wait to see!

  • ST8

    @Include, Bjorn
    Python was upgraded to 2.5.1 in Live8 and decompyle doesnt work with python > 2.3 so no way to decompyle the APC script i dont think

    Ok, maybe there aren't functions that directly interact with M4L, but there must be functions that control that red grid, and there must be a fast update function (>100ms polling interval) to allow a step sequencer to work.

    I've not seen any mention of these functions when dumping the function list within python:

  • griotspeak


    Thank you, that is what iw as talking about. In my last fit of determination regarding Live API, i found it… but didnt have it in me to figure out how to implement

  • This seems like a decent map to work from. Haven't tried it out yet, but it looks like a mackie clone to me.


  • gio

    From my understanding some of the buttons on the APC (like activator, solo, arm) behave like toggle buttons. This means 1) transmit only noteon or noteoff and 2) transmit something only when the button is pushed, transmit nothing when the button is released. I'm sorry to bother you all (and to lower so much the level…) but… How does Stray411 make them behave like momentary buttons (instead of toggle buttons) if there is no release information received from the button? Thank you all in advance and Sorry again but I'm quite a newbie and one of the best way to learn (beside obviously studying and making practice putting together patches and other stuff) is to ask to people that have clearly more experience.

    Thank you again.

    From the few things that I know about Mackie Protocol it seems that the CC numbers for the device control encoders and the Bank Select Arrows come directly from it. The clip matrix seems to use Mackie Control unused notes (that I used to map to Clip View Controls…). Some others controls/notes used for Arrangement Control in Mackie are here used differently… Many controls are similar and the range of notes/controllers to use is not infinite so I guess there will be always some overlapping…

  • Just wanna say (if I'd not already did) that MIDI suck hard on a message intensive device like APC, I've got some serious lag win value when using three faders at once…

  • @gio-
    everything on there that trnsmits notes sends out momentary messages. check the jpg that bjorn linked a few messages up.

    yeah I have experienced this too. kinda not too fun for slamming multiple faders…boo!

  • gio

    @ !INCLUDE
    not entirely true in my personal experience.
    I've found that Track Control Buttons, first Row of Device Control Buttons and Activator/Solo/RecArm perTrack buttons behave differently in two different moments:
    1) when the APC it's first switched on after having connected it to the usb port
    2) after you quit Ableton Live

    In the (1) case those buttons act like toggle buttons, this means that when they are pressed one time they light up and send a noteon message, the other time they send a noteoff and the led switches off.
    In the (2) case those buttons act like normal buttons and send noteon message onPress, noteoff on release… so they can be used as momentary buttons. Oh, and also the LEDs don't react (are always switched off).

    In the (2) state, being a 'dumb' state, it's possible to control almost everything and to decide how buttons and light must behave.
    In the (1) state you've no control over some things, for example you can try to manage the lights of the track selection but you're only managing the lights, the track internally selected remains selected. Monitoring the messages that come out when you press a track selection button it seems that it sends the 8 Device Control Encoders Values for the selected track.

    Anyone can confirm or add their findings?
    Don't know if comments to a post it's the best place to discuss these things but these post it's surely the most comprehensive source of info on the APC that I know of.
    Maybe if we shares what we know or find out this post can only get better…

  • manuaudio

    @all – (Working on a Mac) I have no need of the PAN section on the APC and the knobs on my Mopho synth suck.
    So my idea is to use the Pan section as a controller section for the Mopho.
    I tried Bomes Midi Translator and other tools, but:
    1. The panning section of APC does not emit Midi Messages as a standard, but controls panning in Live.
    2. Live always needs a target to remap knobs to, which is not existent for the mopho.
    Any suggestions?

  • ridiculous

    ok that's great and everything but where can we actually buy the damn thing! i pre-ordered at musicians friend about 4 weeks ago and still no apc40. now i am told will have to wait possibly till july2ish!!! any one know if any are in stock anywhere in the 5 boroughs?

  • Esol Esek

    How a professional company like Akai can pre-announce a product like this for half a year, and then have absolutely non available at the release date makes me think that either the product has immense quality-control issues, or the dealers are reselling them all on Ebay at a premium. Either way, f Akai for equipment that other people can duplicate and should ASAP.
    I've never seen so many people want a product that was so impossible to find, out the gate. I only saw 2 that were available for a few minutes at the start of June, Since then Nada. Now we gotta wait until late July? FORGET IT AKAI…NEXT….

    This is such a money-making opportunity for a cheapo company like Behringer or m-audio…

  • Ours was ordered in February… still nothing. I'm told the end of this month, but we'll see.

  • Actually…
    a) it's quite common to have challenges ramping up production of mass-manufactured products, partly *because* they're typically done in blocks of larger runs

    b) we're in the middle of a credit crunch

    And even without (b), this isn't all that unusual. That said, I'll try to find out what I can about when availability will improve. And you're right — part of why production is a big issue is that people may go elsewhere!

  • Pingback: Create Digital Music » Ableton Live Lounge Saturday Night in NYC; Live Controller History in Progress()

  • Mike

    At Esol…. Who says they are all that hard to find? I decided I wanted one today after having thought about it since the original announcement. Called one GC.. out of stock. Called another GC and had it in my hands an hour later. Brand new. Still sealed. Granted it was the last one though….

    It frees up my Lemur for so much more now!!!

  • @Gio
    yeah, Ive experieced some of what you have mentioned. I didn't get as far as you in pinpointing exactly what is causing the buttons to switch messages but I would set the apc back to momentary messages by disabling and re-enabling the apc as a control surface. worked fine after that. I usually have live open so it's not really a problem for me. I have done a bunch more hacks to it than just the monome emulator. they all seem to work fine and the hacks expect momentary note on note off messages.

  • gio

    just figured out that…
    Of the five sysex strings that APC and Live exchange whenever you enable the APC as a control surface or open a new Live Set, the third string is the one that actually changes the state of the buttons. So if you monitor/record the APC/Live sysex communication and take the third string exchanged, you can put it as first action in front of any patch/preset to have the APC initialized. to have it in a full clean status you'll still have to set the encoder values and all the leds to whatever state you want as starting state.

    But The third string seems to be the one that matters for APC buttons initialization.

    Now if only we can figure out how to change, if even possible, the type of data sent by the encoders (0/127 in track-device encoders against +/- acceleration in Cue Encoder), things will be perfect for whatever preset/patch we could have in mind.

    Sure this last one can be dealt with inside Max or similar software, but it's surely better to have data from the hardware directly in the right format…


  • apc41

    hi y'all, i just figured out the sysex string that switches the apc into the desired mode:

    240 71 0 115 96 0 4 65 7 0 16 247

    thats it, just send this string to the apc (f.e. by using the midiout object in max) and you have the 'dumb' state gio mentioned before

    thank god the apc is finally free πŸ™‚

  • Esol Esek

    yeah, actually I got my hands one at a suburban GC too. Guess money talks, and boutique shops walk..anyway, its pretty fun, and fires you up, since being lazy on this thing is anathema to it.

    The aux sends seem arranged ass-backwards, depending on what you're trying to do, but tweaking multiple sends on one track at a time is not the way they're set up. I'd like to see someone show remapping for that. Then again, since the per-track effects on the bottom (the blue hand) move laterally, maybe those upper knobs could do something else entirely.

    I dont do any sequencing in Reason anymore (a stodgy mouse-demanding nightmare), but its got all those fun dials that would be nice to tweak with the APC in Rewire. Oh well, guess that's what a second controller is for, right? I got Reason to see the controller and the buttons in the keymap, but it doesn't seem to register changes, just turn off the few dials that are there. Still, seems like it's halfway there for a template for this use. Any news on this front?

    Otherwise, its slick. The hack to make the redbox scroll looks downright mandatory…

  • gio


    actually the third sysex string of Live-APC dialogue changes with ableton version…
    last three bytes of the sysex string (the ones before the closing byte 247) actually inform the APC40 of Live version.
    we can see in your string you're using Live 7.0.16
    I think that actually the APC doesn't bother which version of Live do you have… but just to add to the infos around…


  • Jim

    You can do that squarepushin on the apc without any hacking, just gotta set up you're set right.

  • Changinable

    @dstroud or other pros:

    I would like to change the color of the "not playing clips" to white or something similar. Which MIDI note messages do I have to transform – and which velocity value should it be?

    Is it possible to do this in some kind of config file or do I have to use Midi Pipe or Bome's?

    Thanks for your help

  • Kai O'Connell

    Also looking for a way to change the color on the clip matrix (I'm color blind and can't tell the bloody orange and amber apart). I was actually thinking of changing out the leds but I wanted to know if anyone had opened it up and seen if it's possible to do so.

    Thanks much.

  • Richie Rich

    I am also color blind and think the current LED colors are difficult to distinguish.

    Has anyone got any pics and suggestions of what's underneath the case / how easy it will be to replace the LEDs with more distinguishable colors?


  • Color blind folks may want to check out discussion on the Ableton forums or http://idisk.mac.com/dstroud-Public/LiveAPC40?vie

  • Pingback: mustakl » The awesomeness of the APC – Executive summary()

  • Pingback: Ableton Live Lounge w/ Create Digital Music & DubSpot « Dubspot Blog()

  • Pingback: Create Digital Music » Novation Launchpad: Impressions Video, Questions and Answers()

  • Pingback: Enigmafon Records » Novation Launchpad vs. Monome()

  • Jericho

    This guide sounds delicious. Don't have an APC yet, but will ordered already and already thinking of hacking it this way :))

  • thebuttonfreak

    I have an apc an am using it to control Serato scratch. Any chance of controlling the lights to stay lit in SSL? I'm a noob to this type of thing so be gentle.

  • groovelastig

    this thread inspired me to get an APC 20 and start checking it out with PureData.

    contrary to what the APC 40 MIDI-mapping jpeg shared in the comments suggests, you can read out the NAVIGATION / TRACK SELECTION row (7th row from the top), at least on the APC 20.

    it's CC 23 on channels #1-9, sumbmitting a value of 0 when triggered.

    I managed to grab all the events and light all the LEDs with the exception of the SHIFT (Stop all clips) button (it's just not backlit, is it?), and I can't figure out how to light the MASTER button (7×9, right above the rotary encoder)

    definitely fun gear, thanks for gathering all the cool stuff here

  • The monome is compact, open, handcrafted, bus-powered, and minimalist. If you really want knobs and faders, you won’t even *like* the monome — whether you can get it or not — and you should look at the APC or Ohm64 for your lots-of-buttons fix.

  • Hey – I would like to start work on an APC40 emulator for the computer keyboard.
    I already have a pc keyboard mackie emulator working. (see site)
    I need the sys_ex handshake that tells live the controller attached is an APC40.
    Recent developments at the autohotkey forum http://www.autohotkey.com/forum/viewtopic.php?t=5
    Allow for input and output of sys_ex.
    So as along as we have the handshake – the computer keyboard could become the grid 8×5.
    Someone contact me from either site.

  • audiohufter


    the monomulator (for apc40) has been taken offline, and is Nowhere available at the moment. If anyone know where to find this essential piece of software Please let us know…


  • Apc 64-40. Google that.  Best python hack.  Turns apc into 9 pages and an 808 style step sequencer. You have to look at hanz framework site. Suprised you did not mention this in the article Peter.

  • Joe

    no links working and the last video is dead.

  • Joe

    no links working and the last video is dead.

  • Joe

    no links working and the last video is dead.

  • EK

    can you provide a mirror for monomulator? link is dead…

  • EK

    can you provide a mirror for monomulator? link is dead…

  • EK

    can you provide a mirror for monomulator? link is dead…