APC 64-40

APC 64-40 - a custom MIDI remote script for the APC40, featuring a 64 step sequencer.

New! Fabrizio Poce has done us all a big favour by updating the script to be compatible with Live 9. Thanks Fabrizio!

Download APC_64_40_9 from Fabrizio's site - compatible with Live 9

Download APC 64-40 revision 1b  - compatible with Live 8.2

A fair bit of time and effort has gone into developing this script - donations are welcome.


Hanz Petrov

at gmail.com

This set of Python MIDI remote scripts provides added functionality for the APC40, through the use of shifted control mappings. It is compatible with Ableton Live 8, version 8.1.3 & higher, on PC or Mac. To install, simply copy the APC_64_40 folder into Ableton's MIDI Remote Scripts directory:
Mac OS X: /Applications/Live 8.x OS X/Live.app/Contents/App-Resources/MIDI Remote Scripts/APC_64_40
PC: C:\Program Files\Ableton\Live 8.x\Resources\MIDI Remote Scripts\APC_64_40
After installing, turn on the APC40, start Live, and then select APC_64_40 from the MIDI Preferences dialog drop-down menu. Track Input will need to be switched to on in order to use Note Mode (for more information about Note Mode, see below). For the various User Modes, which are designed for manual MIDI mapping, Remote will also need to be switched to on. You may wish to consider switching Takeover Mode to Value Scaling when using faders or knobs in one of the User Modes. The extra functions which these scripts provide are described in the following sections.
1.       STEP SEQUENCER ON/OFF – While holding the SHIFT button, press the MASTER button to turn Step Sequencer Mode on or off.
2.       NOTE GRID – In Step Sequencer mode, the CLIP LAUNCH buttons represent the notes in the currently selected MIDI clip. The rows represent note values (pitch) and the columns represent time (step position). The note grid is 8 steps wide by 5 notes high. The starting note value for the first row is 36 (C1). Notes ascend from bottom to top and step time runs from left to right. To add a note, press an unlit button. To delete a note, press a lit button. Note velocity is represented by button colour:
GREEN – velocity range 0-72
AMBER – velocity range 73-100
RED – velocity range 101-127
          Flashing buttons represent muted notes. To insert a muted note, press an unlit note button while holding down the SHIFT button. To unmute a note, press a lit button while holding down SHIFT.
3.       LANE MUTE – The mute state of an entire row of notes can be inverted by holding down the SHIFT button and pressing the SCENE LAUNCH button adjacent to the row. The mute state for all notes of the selected pitch will be inverted, including notes which may be outside of the grid’s display range.
4.       VELOCITY – The RECORD ARM buttons are used to control the velocity of added notes. Velocity levels increase from left to right in increments of 16. New notes added to the Note Grid will have a colour corresponding to the selected velocity level:
ARM BUTTON 1 – 15 (green)
ARM BUTTON 2 – 31 (green)
ARM BUTTON 3 – 47 (green)
ARM BUTTON 4 – 63 (green)
ARM BUTTON 5 – 79 (amber)
ARM BUTTON 6 – 95 (amber)
ARM BUTTON 7 – 111 (red)
ARM BUTTON 8 – 127 (red)
5.       BANK SELECTION – There are 8 banks of 8 steps, for a total of 64 steps. Use the TRACK SELECTION buttons to select a bank, which will then be displayed on the Note Grid. The button corresponding to the currently selected bank will turn on.
6.       NAVIGATION – To scroll through banks, use the left and right BANK SELECTION buttons. To scroll through notes, use the up and down BANK SELECTION buttons. Press and hold navigation buttons for rapid scrolling.
7.       QUANTIZATION / ZOOM – The length of each individual step is determined by the quantization setting. The default quantization value is 1/4 beat, which is equivalent to one 16th note in 4/4 time. The corresponding zoom level is 1/2 measure per bank, or 4 measures across 8 banks. The SCENE LAUNCH buttons are used to select the note quantization value and corresponding zoom level. From top to bottom, the available quantization values are:
QUANTIZATION LEVEL 1 – 1/4 note; 2 measures per bank; 16 measures total
QUANTIZATION LEVEL 2 – 1/8th note; 1 measure per bank; 8 measures total
QUANTIZATION LEVEL 3 – 1/16th note; 1/2 measure per bank; 4 measures total
QUANTIZATION LEVEL 4 – 1/32nd note; 1/4 measure per bank; 2 measures total
QUANTIZATION LEVEL 5 – 1/64th note; 1/8 measure per bank; 1 measure total
          Note that zoom level and quantization work together, so that when the grid is zoomed out (quantization set to a large value), added notes will be longer; when zoomed in, added notes will be shorter.
          Examples: When fully zoomed out, the 8 banks will cover an area which is 16 measures long, each individual bank will cover 2 measures, and added notes will be 1/2 notes. When fully zoomed in, the 8 banks will cover an area one measure long, each individual bank will cover 1/8 measure, and added notes will be 1/64th notes.
8.       LOOP START / LOOP LENGTH – The Track ACTIVATOR and SOLO/CUE buttons can used to set the loop start position and the loop length, respectively. Press the ACTIVATOR button corresponding to one of the 8 bank positions to set the loop start to the start position of that bank. The loop length can be adjusted by using the SOLO/CUE buttons. Loop length can be increased or decreased in increments corresponding to bank widths, which will vary depending on quantization/zoom level.
          Examples: When fully zoomed out (1/4 note quantization), the maximum loop length is 16 measures long, the minimum loop length is 2 measures long, and loop start can be moved forward or backward 2 measures at a time. When fully zoomed in (1/64th note quantization), the maximum loop length is 1 measure long, the minimum loop length is 1/8th measure long, and loop start can be moved forward or backward 1/8 measure at a time.
          Note that audio clips can be manipulated using the Loop Start and Loop Length buttons, in conjunction with the Quantization/Zoom buttons, however, the Note Grid will only be updated when the currently selected clip is a MIDI clip.
9.       FOLLOW – Press the MASTER button to turn Follow Mode on or off. When Follow Mode is on, the Note Grid will automatically refresh to display the notes in the bank which corresponds to the current play position. The bank buttons will also update automatically to indicate current bank position. In Follow Mode, the entire row of TRACK SELECTION buttons will be turned on, except the current bank button, which will be turned off.

To access the Matrix Modes, press one of the 8 TRACK SELECTION buttons while holding down the SHIFT button. There are 8 Matrix Modes available, which are set up by default as follows, from left to right:
MATRIX MODE 1 – CLIP LAUNCH (default). Select this mode for standard Clip Launch behaviour.
MATRIX MODE 2 – SESSION OVERVIEW. This is the standard Session Overview mode, also directly accessible by holding down the SHIFT button. Selecting this mode will lock the matrix into Session Overview mode. To unlock, simply select another mode.
MATRIX MODE 3 – USER/NOTE MODE 1. This is an 8 x 6 Note Mode grid, which can be used to send MIDI notes to Live tracks on Channel 10. This mode includes a Drum Rack mapping which is represented by a block of green buttons, 4 notes wide by 4 notes high. The Drum Rack selection block is automapped to MIDI notes 36 through 72. Note velocity is fixed at 127 for all Note Modes (hardware limitation).
MATRIX MODE 4 – USER/NOTE MODE 2. This is an 8 x 6 Note Mode grid, which can be used to send MIDI notes to Live tracks on Channel 11. In this mode, notes are laid out from left to right in rows which are 8 notes wide.
MATRIX MODE 5 – USER/NOTE MODE 3. This is an 8 x 6 Note Mode grid, which can be used to send MIDI notes to Live tracks on Channel 12. This mode is similar to the previous mode, however, only the buttons corresponding to the diatonic scale on C (“white notes”) are lit. The sharps are not lit in this mode, however, they will continue to send notes to Live when pressed.
MATRIX MODE 6 – USER/NOTE MODE 4. This is an 8 x 5 Note Mode grid, which can be used to send MIDI notes to Live tracks on Channel 13. In this mode, the grid is arranged in the form of two vertical blocks of notes, each 4 notes wide, to match the typical Drum Rack layout. This mode does not include the CLIP STOP buttons as part of the matrix.
MATRIX MODE 7 – USER/NOTE MODE 5. This is an 8 x 6 Note Mode grid, which can be used to send MIDI notes to Live tracks on Channel 14. In this mode, the notes have been arranged vertically in columns.
MATRIX MODE 8 – USER/NOTE MODE 6. This is an 8 x 6 User Mode grid, which has been mapped to MIDI Channel 15. This mode is intended for use with manual MIDI mappings. In this mode MIDI notes are not sent to Live tracks - they are interpreted by Live as a remote control notes only.
Any of the 6 User/Note Modes (Matrix Modes 3 through 8) can be customized by editing the Matrix_Maps.py file in the MIDI Remote Scripts directory. This file can be edited with any text editor. For each of the User/Note Modes, several options can be customized, including: colour assignment for each button in the matrix; MIDI note assignment for each button in the matrix; channel assignment for the entire matrix; inclusion or exclusion of the CLIP STOP buttons; choice of Note Mode or User Mode. (In Note Mode, the matrix buttons send MIDI notes for use on tracks - except for buttons which have been manually mapped. In User Mode, the matrix buttons do not send MIDI notes for use on tracks.)

The Track Volume Faders can be re-assigned by pressing one of the 8 RECORD ARM buttons while holding down the SHIFT button. There are 8 Fader Modes available, as follows, from left to right:
FADER MODE 1 – VOLUME (default). In this mode the faders control Track Volume. This is the default mode.
FADER MODE 2 – PAN. In this mode the faders control Track Pan.
FADER MODE 3 – SEND A. In this mode the faders control Track Send A amount.
FADER MODE 4 – SEND B. In this mode the faders control Track Send B amount.
FADER MODE 5 – SEND C. In this mode the faders control Track Send C amount.
FADER MODE 6 – USER 1. This is a User Mode, designed for use with manual MID mappings.
FADER MODE 7 – USER 2. This is a User Mode, designed for use with manual MID mappings.
FADER MODE 8 – USER 3. This is a User Mode, designed for use with manual MID mappings.

The TRACK CONTROL knobs and buttons can be assigned to various functions by selecting from among one of the 4 Track Control Modes. These modes are accessed by pressing PAN, SEND A, SEND B, or SEND C while holding down the SHIFT button.
TRACK CONTROL MODE 1 (SHIFT + PAN) – PAN / SEND A / SEND B / SEND C (default). This is the default mode, used for standard Track Control behavior. As an added feature, in this mode you can press and hold the PAN button to switch the 8 knobs from Pan Control to Volume Control and back again.
TRACK CONTROL MODE 2 (SHIFT + SEND A) – ALTERNATE DEVICE MODE. In this mode, the Track knobs function as Device Control knobs for the currently selected device. The track knob LEDs will be refreshed automatically when the current device or device parameters change. In Alternate Device Mode, the Track Control buttons will operate as follows:
          DEVICE LOCK/LOAD – Press the PAN button to lock the Track Control knobs to the currently selected device (the device showing the “Blue Hand”). The knobs will remain assigned to this device even if another track or device is selected. Press the PAN button a second time to unlock from the device. If the current device has changed in the mean time, the Track Control knobs will then be assigned to the new device.
          DEVICE ON/OFF – Press the SEND A button to turn the currently selected device on or off.
          DEVICE BANK LEFT – Press the SEND B button to access the previous bank of parameters for the currently selected device (scroll left). This button will turn on if there are additional banks to the left.
          DEVICE BANK RIGHT – Press the SEND C button to access the next bank of parameters for the currently selected device (scroll right). This button will turn on if there are additional banks to the right.
TRACK CONTROL MODE 3 (SHIFT + SEND B) – EQ/FILTER/SEND MODE. This mode is used to control track EQ and Filter parameters and Send amounts. In this mode, Track Control knobs 1 & 5 will automatically map to the current track's Device Filter & Cutoff controls if the track contains one of the following devices: AutoFilter, Operator, OriginalSimpler, MultiSampler, UltraAnalog, or StringStudio. Track Control knobs 1 & 5 can also be used with Audio Effects Rack controls 1 & 5, if this device is the last device in the Track’s chain. Track Control knobs 2, 3 & 4 will automatically map to the current track's Send A, Send B & Send C amounts respectively. Track Control knobs 6, 7 & 8 will automatically map to the current track's first three EQ controls, if the track contains an EQ3 or EQ8 device. If the last device in the track’s device chain is an Audio Effects Rack, Track Controls 6, 7 & 8 will automatically map to Audio Effects Rack controls 2, 3 & 4 and the SEND A, B & C buttons will be mapped to Audio Effects Rack controls 6, 7 & 8 respectively. In EQ/Filter/Send Mode, the Track Control buttons will operate as follows:
          EQ LOCK/LOAD – Press the PAN button to lock to the Track Control knobs and buttons to the current track's EQ, Filter and Send parameters. The knobs and buttons will remain assigned to the current track and to these parameters, even if another track is selected. Press the PAN button a second time to unlock from this track and these parameters. If the current track has changed in the mean time, the Track Control knobs and buttons will be assigned to the new track’s EQ, Filter and Send parameters.
          EQ 1 CUT (Low Cut) – Press the SEND A button to turn EQ band 1 on or off, or to toggle between values of 0 and 127 for Audio Effect Rack control 6. This button will turn on when EQ cut is active or when the mapped parameter is non-zero.
          EQ 2 CUT (Mid Cut) – Press the SEND B button to turn EQ band 2 on or off, or to toggle between values of 0 and 127 for Audio Effect Rack control 7. This button will turn on when EQ cut is active or when the mapped parameter is non-zero.
          EQ 3 CUT (High Cut) – Press the SEND C button to turn EQ band 3 on or off, or to toggle between values of 0 and 127 for Audio Effect Rack control 8. This button will turn on when EQ cut is active or when the mapped parameter is non-zero.
TRACK CONTROL MODE 4 – USER MODE. This is a User Mode, designed for use with manual MID mappings on Channel 13. Each of the 8 Track Control knobs and 4 Track Control buttons can be mapped separately in this mode.

DEVICE LOCK – Press the TAP TEMPO button once while holding down the SHIFT button to turn Device Lock on or off. This will lock the DEVICE CONTROL knobs and buttons to the currently selected device.
UNDO – Press the NUDGE- button while holding down the SHIFT button to perform an Undo operation.
REDO – Press the NUDGE+ button while holding down the SHIFT button to perform a Redo operation.
TEMPO CONTROL – Turn the CUE LEVEL knob while holding down the SHIFT button to adjust song tempo.

2010-10-16 – APC 64-40 revision 1. Added support for Audio Effects Racks in Track Control Mode 3. Added support for audio clip loop start/length control in Step Sequencer Mode.
Visit http://remotescripts.blogspot.com for the latest updates and more information, or if you find these scripts useful and would like to make a donation.

Ableton and Ableton Live are trademarks of Ableton AG. The APC40 is an Akai Professional product. This software is no way endorsed by Ableton AG or Akai Professional. Please do not contact Ableton or Akai Professional with questions or problems relating to this software.


Anonymous said...

Thank you very much again for this new great improvement for APC 40 !

flippo said...

awesome :)

Anonymous said...

The Step Sequencer is truly amazing and well thought out. I couldn't be happier with it. Thanks SO MUCH!

I still wish Track Control Mode3 would support custom AudioFX Racks. For example, I have an Audio FX Rack I use for Filter and EQing. Macro 1 is my Cutoff, but it works like a DJ filter would turn>>> Hi Pass, turn <<< Lo Pass. The Macro is actually mapped to an AutoFilter for the HighPass and an EQ8 for the Low pass and these are split on a chain. It a modification to some of Terakith's FX. Macros 6 7 & 8 are my EQ8's Hi Mid and Lo.

I wish I could use your script for with my Macros on the Filter/EQ mode, because I like your layout which incorporates the Send A B & C. But I dont like the limitation of using the Filter in this manner that you have it.

NEVERTHELESS, your scripts have saved my APC40 from being sold, and have made it a serious musical weapon.



Anonymous said...

Initíally i wrote in the Ableton forum about how to disable the track control features, and you asked me why I would need this.
I anwsering here course I not at home and can't remenber my password :)

The only reasen why I asked is because i'm guessing that this feature is the reason the controls (also the default Pan/send a-c) behaves inaccurately when adjusted.
When I ex. adjust the send a track 3 encoder, the control on the screen follow my encodermovement with alot of small "jumps"

It's not a biggie because I'm not using the extra track control feature so I could just custom map the track native controls the avoid the behavior.

I- curious thoug if I'm the only one experiencing this.

I use Bomes but none of the track controls are mapped/selected thru Bomes.
I also have a Launchpad connected but thats not tru Bomes and not custom mapped.

Kind regards


midihendrix said...

I love this script! Great work!

Anonymous said...

Hi there,

I would like to say that my girlfriend hates your script because all my time goes in making awsome music. Great powerfull script. Thanx a million times.

Anonymous said...


It's me again with the jumping encoders 3 post above.
It's also happening with the device control encoders, but now i've found the reason.

When using my saffire pro 24 audio card (firewire) i get this strange behavior!

Strange I don't have problem when i use the Saffire Pro 24 with the former version "APC40_21".

- next

Mr. Meoff said...

KILLER! Step sequencer!

Anonymous said...

Posting again :)

It's the Focusrite Saffire Pro driver thats conflivting with this script.

If I use the saffire Pro thrugh Asio4all there is no encoder troubles.
If I tick the box in Asio4all config using the hardware buffer (whatever that is) then the encoder studdering begins again.

I don't really notice a difference using this hardware buffer or not. The cpu strain seems the same regardless.

Strange though why this "hardware buffer behaviour/ conflict/ saffire Pro" only began after version "APC40_21" of this script.

- next

juan segovia said...

Howdy peeps... I've created some device chains which are intended to use with this script. A sequencer aid which allows you to switch the pitch of each of the sequences, and a music theory tool with chords to be used with matrix mode 7.

you can download it free at: http://juanlittledevil.com/JLD/?p=491


beatnick said...

This is awesome! Thanks for the effort!

Two issues I've found with 8.1.3:
– the knobs do not work; no lights and no affect;
– changing devices within a MIDI track will cause the controller to loose its mappings until it's reset from the Preferences panel (select other controller then select APC 64);

Sorry for being a newbie – I am one.

Thanks, any help is very appreciated!

midihendrix said...

I've also noticed some buggy behavior when also having my microkontrol connected (no control surface script for the microkontrol)

The APC40 loses its control surface mapping occasionally....locking from send knobs will stop working, etc....I have to disconnect/reconnect the apc40 (mac) and reset the control surface in preferences to get things working again but then soon will break again.....

Anonymous said...

@juan segovia

I tried to go to the link you posted and it is password protected

just letting you know

joseph said...

This is amazing. Highly Recommend this Script!

Anonymous said...

Great stuff!
Does it work with APC20?

Anonymous said...

I was thinking about selling my APC40 when i found Hanz's work. Most helpfull piece of code 2010! Well-thought, well-coded and extremely well-explained thanks!

Thanks also to Ableton/Akai for letting some doors open for customization! Unvaluable for some of us. (not sure to what degree this was intentional but i want to encourage anyway. Thanks guys!)

Anonymous said...

When i switch to a note mode with the matrix, I cant seem to switch to any other modes. Shift+ a track select button just triggers a midi note. Help?

Anon from above said...

Forgot to mention, Initially, no midi is recieved by the target midi track. I switched the input from all channels to channel 13, which didn't help, but when i set it back, all buttons on the apc sent midi notes, including shift, bank select, and so on. Also, All buttons in each row in the matrix send the same midi note, only making available five notes on the matrix.

Dont get me wrong- This script is awesome! I'd very much like it to work though for that reason :)

GG said...

amazing script..thank u 4 your work.

in revision 1, in some opportunities, it loose the midi mappings, I dont know when.

it could be great if one of the user mode could control the arrangement view (zooms, goto markers, etc)


GG said...

for version 2 (suggestion, of course):

maybe integrate this one to sync the position of the redbox with the screen (http://www.gravitysouth.com/2010/11/akai-apc40-remote-script-change-for-ableton/)

and for step sequencer: it could be great some way to return to the C1 of the clip easily


Anonymous said...

Is there any chance the step sequencer from this script could be made into a script to work for the Launchpad?

Unknown said...

thanks a lot for this. i'v spend only a few hours with my new apc40.
It seems the 'drumrack mode' (matrix mode 6) does not seem to include the c3 (kickdrum) note, or am i missing something? i tried reconnecting.

thanks so much i think this has a lot of potential!

Anonymous said...

some feedback: in this video:


yuo can see the guy pressing a row of buttons in one gesture. I noticed that pressing two buttons at once is not possible with apc64_40 script.

Also it would be really cool if it is possible to copy the button settings form the step sequencer to the next bar/patch

i hope this is a bit clear
I second the going back to C1 feature would be really handy, allthough i made a muted full bar in red to indicate it at the note below. a one buttonpress would be suave though....

thanks for the great work really happy with this

Anonymous said...

I cant get the midi script to work I followed the instructions correctly and it just shows up as a read me doc Im using ableton live 8 version 8.2.1 on Mac I coppied it to the ableton midi remote scrips folder and when I run ableton it does not show up in preferences please help...

jimmynitcher said...

I seem to have created a Rack that stops the script from working - just when I thought I had got it how I wanted it! Aaargh!
How is it possible? It just contains, vsts and simplers yet if I load up a set without it it works fine!
Any ideas very much appreciated....I was about to donate and definitely will if I can find a fix.

Anonymous said...

is there an easy fix to get this to work with my new APC20? RIght now it doesnt work. Thanks!

jimmynitcher said...

OK It's not my rack that stops it from working - if I add more than 5 tracks in addition to the midi track for the sequencer it stops and has to be reset in prefs.
Very frustrating, 5 tracks is not enough for me to use this.
Can anybody else recreate this problem just to confirm it for me?

Anonymous said...

i would donate if not
1. i am broke for the moment,
2. i am not sure this is still being develloped

pressing two buttons at the same time is my main wichlist for now, as i expained above)
and the abbility to have the script working together with monomulator

have a nice day

Anonymous said...

can anybody help me? may i´m stupid but i can not find the directory Mac OS X: /Applications/Live 8.x OS X/Live.app/Contents/App-Resources/MIDI Remote Scripts/APC_64_40 on my mac !

Anonymous said...

I had the same problem. The directory is actually under/library/preferences/ableton/user scripts

I still cant get this to work though, nothing shows up in my midi preferences!

Kendall said...

Has anyone figured out how, when using the Step sequencer, to change Midi clips and get the Button Mattrix to refresh? It seems as though it will only "change clips" if manually selected with the mouse.


Clip one:
- Holds a sequence

Clip 2:
- Holds a different sequence

If I'm editing clip 1 in the step sequencer mode, then I go back to Clip Launch mode (Mode 1) and Launch Clip 2, Clip 2 then begins to play like you'd expect.

But when I go back to Step Sequencer mode, it is still focussed on Clip 1, and won't change to Clip 2 unless I select the clip with the mouse.

Anyone else figure this out yet?


audIObox said...

I too can not get this to show in my Midi Preferences dropdown. Any body else have luck? I'm on a Mac PPC running Live 8.2.1

joseph said...

This is the most excellent script ever. Thanks a million. Killer live device script for performance.

Anonymous said...

hey guys,

is there any chances that this could possibly work with the apc20?

keep up the good work!

Anonymous said...

Shift + Master is not working right for me. The Step Sequencer works only 5% of the time. The rest of the time it freezes up my APC an I cannot toggle the Sequencer off and on. All the buttons on my apc begin playing notes and none of the shift commands work. It keeps locking up my APC. Email me mikeygann@gmail.com if you have a solution.

Anonymous said...

Yea something is wrong. When I have APC 64-40 set as my midi device, ableton only recognizes my APC about 35% of the time. When it is finally recognized, none of the step sequencer scripts seem to work. Shift + Master does nothing. I guess i have to give monomulator a try.

Kendall said...

Hi Hanz,

I've made some headway from reading your blog and have been able to modify some of your script for my purposes. Thanks for the annotated code. That helped out a great deal.

One thing I could not decipher on my own however is how to change the way the buttons in the button matrix function. What I would like to do is, for one of the user pages, have the buttons act as Gate Mode. Push for "ON" and release for "OFF" rather than the default toggle mode push on, push again for off.

I have one matrix page with my beat repeats for all 8 channels, with the different subdivisions oriented vertically. I would really like to have the beat repeat engage as a Gate so I can get more creative with beat chopping without accidentally missing the downbeat.

I noticed the instances where the button element was defined as momentary, which I figure is "toggle", but I couldn't find a list of the other functions it could be.

Is this possible to do with the python script? Could you point me in the right direction?

Thanks again. I really can't stress how much I appreciate the work that you've done. I just can't understand why Ableton hasn't offered you a job yet :-/


Kendall Clark

jimmynitcher said...

Had the same problem all along - the sequencer stops working when more than 6 tracks are present. I can cure it by deleting channels and toggling the script in midi prefs.I don't know whether this is related but with only one channel in Session view there are three detected by the script - they show up in the Pan section. So it stops working when it thinks the total is eight (in reality six).
I would appreciate some feedback as I have donated.

Hanz Petrov said...


I was under the impression that your problem had gone away. Why don't you contact me by email again, and we can look in to possible causes.


Anonymous said...

Nice, really really nice thanks a lot

Unknown said...

hi Hanz , ive been using your script since its inception, love it! Has anyone else reported that it doesnt seem to be functioning under this latest live update(8.22)?

Dj Pad said...

Same here...

Hanz Petrov said...

Thanks for the heads-up guys. I'll install 8.2.2 and have a look.


Anonymous said...

Just tried the APC 64 40 with the new 8.2.2 update. Not working here.

Just wanted to give a report.


Hanz Petrov said...

Quick fix posted above. Should now be working with Live 8.2.2. See at top for link, and let me know if you find any bugs!



Anonymous said...

this template look ace, can't wait to use it!

although...i can't seem to even locate the MIDI remote scripts folder to install this!? what am i doing wrong?

Dj Pad said...

@Hanz Petrov
Seems to work well here now, thanks for you quick fix.:p


Dj Pad

Kin said...

I'd really like to give a try at porting this to the apc20... Do you / anyone think this would require a lot of work? Any tips?

Man I wish I could find the 40 in canada. It's sold out everywhere and only shipping 2-3 every few months or more.. ;p

Looks like an AMAZING addition! I hope I can try it eventually!

Matte said...

I just wanted to say that I love this script on my apc40. I want to port it over to my launchpad (for when I am out and about. I know very little about programming, but would kill for a few pointers on this endeavor. Thanks a bunch and hope to hear a response.


teutonic kaboom said...
This comment has been removed by the author.
Me said...

Just out of curiosity, is there an easy way to port this over to an APC 20? I just hooked one up today, used it, but rather than giving you functionality as a sequencer, it essentially turns all the buttons into a keyboard (kinda). Any suggestions on scripts to change to make the step sequence function on the 20?

Anonymous said...

its exactly what i was lookin for thank you very much!

i just have one small question, how you just thru differend midi or audio tracks?!

Eriatarkan said...

This is really amazing, thanks a lot. Even the manual is super impressive! Haha. Planning to donate.

Unknown said...

Hi every one,

I've got an APC_40 and live 8.0.5

In introduction it is written that this custom MIDI remote script is compatible with Ableton Live 8, version 8.1.3 & higher. But mine is lower...

Will it work? Or do I have to download an older script?

Thx for your help, and thx Hanz Petrov for your amazing work !

Johan said...

thanks this is really great! Good job, will donate when there is money to donate!


Anonymous said...

How would I go about customizing this script for 2 things.

1. Remove having to push shift. Where Track Select 1 was default,
Track Select 2, was bank select (default),
Track Select 3, was mode 3
Track Select 4, was mode 4

And Stop All Clips, was sequencer mode (on/off)

2. When pressing each Track Select button, the Device Knobs control the first Rack on the track, and the Track Control Knobs control the second Rack on the track.

Any help would be greatly appreciated.

aka JuanSOLO

Anonymous said...


I downloaded the script, I have a Mac book Pro with OSX 10.5.8 Lepord and Ableton 8.2.2 . I cant seem to find the scripts folder for Abelton, I looked in the location -> Mac OS X: /Applications/Live 8.x OS X/Live.app/Contents/App-Resources/MIDI Remote Scripts/APC_64_40 and under/library/preferences/ableton/user scripts. I cant seem to find anything I could use a little help please.


Zac Kyoti said...

Control click on the Ableton app, you should see "Open package contents" or something along those lines. Then follow the path to the folder.

Kendall said...

Hello Hanz and the APC 64-40 script community. I just wanted to let you all know about my Ableton tutorial blog AbletonOp.com. On it, I have written a series of articles aptly titled "Hanz for President." These articles are separated by the various APC sections and are dedicated to the promotion, explanation, and utilization of Hanz's APC 64-40 script. Each article also comes complete with large high quality images of the APC40 that I have doctored to include all of the shiftable functions in red (like the APC20)

Big big thanks again to you Hanz for creating such an awesome script. I hope that my blog series will not only spread the word about this script but also lead to more traffic (and donations) on your blog.

I plan on writing some future articles on how to build some racks that I have designed for use with this script.

Kendall Clark

anybody human said...

Hi there. Great work. I just started working with it this morning and it's fantastic. However, I had a crash using revision 1A w/ Live 8.2.2. I can send you the Liveset or crash report if that's of any use to you. Thanks a lot for all the hard work.

Anonymous said...

OK, So I had switched over to using Mark Egloff's sequencer patch, and tried to mod it to get velocity values with no luck. HOWEVER I learned a lot more about M4L and the APC40. I had been wanting to figure out how to get Hanz's script to bypass the "Shift+" so I would not have to use the shift button to get into a Shifted Matrix Mode. This would enable FAST mode switching when pressing a Track Selection Button.

So using a M4L patch, if you use the path to access the Matrix Modes, something like "path control_surfaces 1 components ###" whatever the number is for the Matrix Modes component, I forget the number but you can find it with the LOM Navigator or a few other ways. So you send that path, "path control_surfaces 1 components ###" to a live.path object, and the live.path to a live.object. Now in the left most inlet of the live.object you can send a message "call set_mode 1" being Mode 1, "call set_mode 2" being Mode 2, and so on. This will get you directly to a mode without shift clicking.

HOWEVER, I cant seem to figure out what message to send to "call" default mode, or call sequencer mode. I did figure out how to use some M4L patching to emulate pushing Shift+1 or Shift+Master, but this is a little glitchy sometimes.

If anyone out there knows the calls to send to Hanz's script to directly get into Default Mode or Seq Mode, I'd LOVE to KNOW!


Anonymous said...

Hello and thanks to that great work!

I just played around a bit and that´s what I am missing is to change the octave +-(to switch to more than 5 Instruments in a DrumRack)
would be very nice... or is there a problem to add this ? perhaps to the NUDGE+-

second thing:
It can´t be realised to change more than one note at the same time?
when I press two at the same time just one note is set

Peter Bajzek said...

Your step sequencer is brilliant! But unfortunately I can't use it, as it conflicts with the NativeKontrol scripts I'm using. I don't suppose I'm missing some way around this?

Anonymous said...

I am using this script with ableton 8.2.1 have installed it in the proper location, as it is showing up in the MIDI configuration. I have ti set there to apc64, but when i try to access the different menus with the SHIFT key nothing happens. Is there some way to find out if this script is actually running?

Any help would be greatly appreciated..


Anonymous said...

Ok problem was that I had already re-assigned the pads which are used to toggle the matrix with the shift key, so i had to unassign those so they would work to toggle the matrix.

I was happy to get this working, such an amazing script!

Now the question is, which part to I modify to change which buttons I use to toggle the matirx?

Best regards


Anonymous said...

another thing i am wondering is why in matrix mode the display of buttons jumps back to SESSION OVERVIEW display even though it still responds to whatever matrix mode I am currently using? Is this a bug?



Anonymous said...

Hello Hanz,

Thanks again for this script.
For information, I noticed that sliders doesn't control nothing anymore with latest Live issue 8.2.5.
Sliders worked fine with Live 8.2.5b1.

Best regards,


Anonymous said...

Working with APC 64-40 and APC20a, the volume sliders of the APC40 do nothing... Not even control the volume (which is by default).
All other things are working great!
Running Live 8.2.5

Hanz Petrov said...

Hey all,

Thanks for the heads-up on sliders not working with 8.2.5. Now fixed with 64-40 revision 1b.


p.s. Sorry, never enough time for other changes or improvements...

Anonymous said...

Hello Hanz,

thank you very much for the update.



Rokas said...

does not work with the apc 20 :( can you please please make it work with 20?

Rokas said...

just make the sequencer apear on the note mode button :/ please i think its only 1 line.. atleast the sequencer would work..

estevan said...


Rokas said...

come on atleast an answer if it is possible..

Matte said...

hey rokas...this has been a request by others and as someone who tried thebring the seq into the 20...it is quite complicated. If you have max...there's an excellent step seq option in there.

Rokas said...

the drums you mean? its nice, but not really what im looking for.. and btw i have heard you cant use this script with that max patch :)
im much more interested in the one of hanz :)

MaFire said...

PLEASE do it for apc20! i will donate ;)

Alec Troniq said...

Bug report: I installed the revision 1b (Live 8.2.5) and had then a problem during playing my liveset: Live didn't react on anymore until I shifted off my APC40 (but kept playing).
My System (Win7 64) is really clean and working well. Phython 2.7.1 (64bit) was installed.
I hope you can find the bug or maybe just give me a hint. Thanks in advance!

Anyway thanks so much for this most useable APC40 script at all!!!

Alec Troniq said...

Oh I just saw, that you changed the file endings from pyc to py, so my update (copying them to the APC_64_40 folder) didn't overwrite the files but put them to the folder next to the files.

I fixed it now and hope, the problem is solved :)

Anonymous said...

Hello hanz,

For information, Device control part of APC40 doesn't work with LIve 8.2.7b1.

Thanks again for all this stuff.

Best regards,


M4M said...

first, great thanks for this incredible work
second i have a couple of questions on modding the scripts to allow moving the red square with the cue knob (only vertical moves as left to right is not an issue(only 48 tracks) but i have 1000 scenes and moving from 1 to 995 is a real pain using the shift+arrow

either cue knob or having shift arrow held moving instead of clicking 199 times on it

is there a way i can mod the script to allow it to do that (cue knob or master fader, tho cue knob would be better as it's infinite)

Anonymous said...

hello to all!!

i search the step sequencer for apc20 without max for live,this script work to the apc20?thanks for the answers...


know1name said...

Hi there

Many thanks for putting together this script. I'm a novice but wanted to try out using a step sequencer and this really does do the trick.

I wanted to ask all those who use it about note selection. Keeping track of how far up or down the drum rack you are is quite tricky as, other than the pads lighting up, there isn't any visual indicator.

I'm currently loading 20 beat samples onto the drum rack which probably isn't helping. I was wondering how people orientated themselves? Do you use less beats? Or does orientation get easier with practice?

Thanks again Hanz.


Unknown said...

This script is great! I had been wasting time using the notemode through Max. Is there any way I can change the button to enter note mode? I wanted to make it the 3rd Scene button.


Anonymous said...

Thank you for this amasing script :) you have made the apc-40 an unbelievable tool for music. Just wondering if its possible to get an octave shift added to one of the note modes or all if possible maybe through use of the shifted play, stop, rec buttons ?

thanks again

Unknown said...

Once again, amazing script. My only complaints are that it's not compatible with Mark's FX Sequencer, and in Matrix Mode 8, it seems that some of the buttons have the same midi note? So I can assign all of them to different things. Any tips?

Anonymous said...

It´s possible to have this working with APC20?

akaido said...

1000thx for this.

and with your explanation for the matriy-mode its very easy to unify this.
plz could you give the same infos for the fader%encoder modes?

is there any way to use the same chanal, but different CCs for the fader/encoder?

i dont know witch asocial thumb from akai came of this grandios idea to more than half of midichanels.

thx again.

Anonymous said...


Is there a way to program an Apc40 type shift key into a remote script to use on another controller?

The Hedonist said...


I've installed the script. I'm able to select the APC 64 40 option in Ableton in the Preferences/midi Sync/control surface. However, when I insert a midi clip and press shift+master track selectin the step sequencer is not actived. I have ableton 8.2.8 - the free version that came with the APC 40. Is there something else that I should do to solve the problem?

Many thanks!!

M4M said...

hi hanz, is there a way to mod the script to move the box by 5 without shift and 20 with shift, or does the box only move by 1 (unshifted) and "boxheight" (shifted)?

Anonymous said...

this thread really needs a FORUM, where users can help each other out, star threads and what not. Anyone know where we could start one free?

Anonymous said...

Greetings from Vancouver. I have a question about the way this script behaves with custom midi mappings.

I have discovered that if I already have certain buttons custom mapped (buttons like the solo/cue buttons or stop clips buttons which I use used to trigger sends), then certain features of the script will not work.

Another example would be if I have my clip stop buttons mapped to something other than the native mappings, the step sequencer will not show me its steps illuminating as it progresses through the sequence on those buttons.

This brings me to ask this: Is there a solution to this besides leaving all the native mappings intact, like somehow modifying the script?

Thanks for all your hard work Hanz.
Best Regards


Anonymous said...

I MUST leave a comment. Thank you! It's great for two APCs (;

CutterJ the Absurdist said...

Thank you so, so, SO much for this. Your work is nothing short of revolutionary. The added functionality of the APC40 has inspired me with a huge wave of motivation! THANK YOU!

Albert said...


Anonymous said...

Serious improvement to my APC, this is exactly what I wanted and more!

jimmynitcher said...

I have been using this for a while now - I am on 8.2.8 and it works really well - I am effectively writing tracks from scratch using the custom racks I have built for it. It is the best way I have ever used a DAW. I wonder if Live 9 comes out it will still work? I would sacrifice the upgrade if it didn't.

Anonymous said...

i can seem to find the dir. that you say i have to put in to.


what can i do now?
could some one help me please?

jimmynitcher said...

Right Click the Ableton icon choose show package contents then midi scripts.

Hey Hanz I hear you might have played a part in Push - if so congratulations to you!

Tomboli said...

Hi Hanz! You are my hero- great job with this and thank you for sharing. =) One question: can you recommend a way such that when I'm using the step sequencer how I can quickly determine which row corresponds to which sound (most likely in a drum rack)? Maybe a way to audition the sound in realtime w/o committing it to the sequence? Thanks again!!

Marcelo Grebois said...

By far you are the greatest remote script writer out there, this is really awesome, I pretty much only use the APC with your script. Thanks a lot for sharing. I bought a Xone K2, would it be possible for you to make something similar? Thanks again. You are the best.

Lee Scott said...

Great script! Works nicely on this side, thanks :)

I use Bome's midi translator to do to do two operations:
-limit the mixer faders from 0 to 110 and
-set the track activator to spring push buttons (a push on the button turns it on or off, but if I keep my finger on it for over 300 ms, releasing the button returns to it's original state).

Where and how could I alter the scripts in order to do this? If I keep using the Bome's, than my faders won't operate properly on the different faders mode, and I believe these operations should be quite trivial on the python scripts.

Thanks again!

behr said...

Hi Guys

I just got my hands on live 9 and I have built a mammoth personal template in live 8 with the use of Hanz' APC 64 40 Midi Remote Script for the past two years. To my horror I have found out that remote scripts in live 8 are not compatible with live 9. Please please please could someone shed some light on the subject. Can the script be converted to become compatible with live 9?, if so, how would I go about doing this?

Thanks in advance

Rislo said...

I've downloaded APC_64_40_9 version
I'm on osx 10.8.2 and Live 9.0.1
Not working...

june74 said...

@Rislo (and others)

The reason for the script not to work may be very silly: if uncompress the ZIP file and copy this ZIP expanded folder in the MIDI remote script folder, it won't work.

Look "inside" this directory created by the unzip file after uncompressing: you find another directory named "APC_64_40__9".

THAT ONE is the directory to copy in the MIDI remote script folder.

This happens only on Mac OS, as unzip creates an additional folder.

To avoid this "mistake" I have changed the download file now, renaming the zip file to have this more straight forward. I also added a readme text file for the installation.

It should be plug'n'play now.

Cheers / Fabrizio

Anonymous said...

I don't know if I was thanking you already. But here I do it again. Very nice script.

Swede said...

Does it work on an APC20 or are the effort going to Push now?

Please let us know.

Unknown said...

Does it work with apc 20? I've been trying without success..
I see the apc 64_40_9 as remote surface but nothing really happens.
Any tips are welcome

shIxx said...

Wery nice !!!
But is there any possibility to get it run with Mark Eloff´s sequencer ?? Any tips are welcome.

Unknown said...

hello! I'm a long time user of this script, thanks a lot!!!

I upgrade from 8 to 9.05 yesterday, download new 64_40_9 and installed, everything works good just one really really bother me :

when I switch to MATRIX MODE 2-8, the first button of SCENE LAUNCH keep lighting, and scene launch function never works(just in matrix mode2-8, in mode1 is OK).

anyone ?

RC said...

Love that you made this functionality available on the APC. Awesome stuff!

I have a question that I hope someone might know. I think it's simple and I'm just missing it....

When in one of the Matrix modes and playing Midi notes, how to you raise or lower the octave of the visible grid notes?

Dante said...

hey , great work !!!

how do I set the sequencer matrix to ignore what I set as midi notes triggers in session view?

Dante said...

do I modify the sequencer py file to ignore the midi mapping in other matrixes (e.g. the ones in standard view)?

Anonymous said...

Hey so I downloaded this script and copy and pasted the folder into the MIDI Remote Scripts folder and it looks fine, but when I try to change the MIDI control surface inside Ableton, it doesn't show up. Just the default APC40 surface.

Any reason why you think this would happen?
The script looks great though, I'd really love to put it to use.

Dante said...

You should have a folder name APC64_40 inside MIDI Remote Scripts folder (path depends on your os)

e.g. Mac OS X: /Applications/Live 8.x OS X/Live.app/Contents/App-Resources/MIDI Remote Scripts/APC_64_40
PC: C:\Program Files (Program Data)\Ableton\Live 8.x\Resources\MIDI Remote Scripts\APC_64_40

Unknown said...

The script doesn't work ta all here with live 9.1.2.
When i replace the apc40 script with yours, all lights switch off !
I was using it before with live 8 and it worked like a charme.
My preferences are:
Remote Apc 64 40 9 with akai apc40 in input and output
In th midi port,in switch on track input to use note mode. Try various way for thaïs part but nothing.
Hâve you a idea?

Unknown said...


I'm running into the same issue as stephane above, and starting on the exact same day. I was using the apc 64 40 9 script just last night (and every day for months!) but this morning it's not functioning. the standard script works fine. Any idea what could've changed? Very strange! Ableton 9.1.2 on OSX Mavericks

Anonymous said...

Same problem here, script has error this is what we can see in 'log.txt'

402276 ms. RemoteScriptMessage: (APC40_MkII) Initialising...
406528 ms. RemoteScriptMessage: (APC_64_40_9) Initialising...
406579 ms. RemoteScriptError: Traceback (most recent call last):

406580 ms. RemoteScriptError: File "MIDI Remote Scripts/APC_64_40_9/__init__.py", line 26, in create_instance

406582 ms. RemoteScriptError:
406585 ms. RemoteScriptError: return APC_64_40_9(c_instance)

406590 ms. RemoteScriptError: File "MIDI Remote Scripts/APC_64_40_9/APC_64_40_9.py", line 62, in __init__

406592 ms. RemoteScriptError:
406595 ms. RemoteScriptError: APC.__init__(self, c_instance)

406602 ms. RemoteScriptError: File "MIDI Remote Scripts/APC_64_40_9/APC.py", line 45, in __init__

406602 ms. RemoteScriptError:
406603 ms. RemoteScriptError: component.set_enabled(False)

406609 ms. RemoteScriptError: File "/Users/versonator/Jenkins/live/Projects/AppWebConnector/Resources/third_party/lib/contextlib.py", line 33, in __exit__

406616 ms. RemoteScriptError: File "MIDI Remote Scripts/_Framework/ControlSurface.py", line 631, in component_guard

406627 ms. RemoteScriptError: File "MIDI Remote Scripts/APC_64_40_9/APC.py", line 38, in __init__

406633 ms. RemoteScriptError:
406633 ms. RemoteScriptError: self._setup_session_control()

406633 ms. RemoteScriptError: File "MIDI Remote Scripts/APC_64_40_9/APC_64_40_9.py", line 99, in _setup_session_control

406640 ms. RemoteScriptError:
406645 ms. RemoteScriptError: self._session.set_stop_track_clip_value(2)

406646 ms. RemoteScriptError: AttributeError
406646 ms. RemoteScriptError: :
406650 ms. RemoteScriptError: 'PedaledSessionComponent' object has no attribute 'set_stop_track_clip_value'
406654 ms. RemoteScriptError:

406660 ms. Exception: Script could not be loaded.
406660 ms. Exception: === Begin stack trace (pc:fn) ===
406665 ms. Exception: 0x000000010078b3ef:0x0000000000000000
406672 ms. Exception: 0x00000001008bd944:0x0000000000000000
406678 ms. Exception: 0x0000000100835c72:0x0000000000000000
406678 ms. Exception: 0x0000000100835d58:0x0000000000000000
406678 ms. Exception: 0x000000010139d126:0x0000000000000000
406678 ms. Exception: 0x000000010139d4b3:0x0000000000000000
406681 ms. Exception: 0x000000010139c419:0x0000000000000000
406688 ms. Exception: 0x00000001013a1422:0x0000000000000000
406688 ms. Exception: 0x00000001013a16d3:0x0000000000000000
406692 ms. Exception: 0x00000001013a1140:0x0000000000000000
406692 ms. Exception: 0x000000010098ef72:0x0000000000000000
406697 ms. Exception: 0x00000001010eb8b7:0x0000000000000000
406697 ms. Exception: 0x00000001014b13ae:0x0000000000000000
406706 ms. Exception: 0x0000000101103ffd:0x0000000000000000
406706 ms. Exception: 0x000000010099e448:0x0000000000000000
406706 ms. Exception: 0x0000000100995942:0x0000000000000000
406715 ms. Exception: 0x0000000100c23cc8:0x0000000000000000
406721 ms. Exception: 0x0000000100c21c31:0x0000000000000000
406721 ms. Exception: 0x0000000100c3b54c:0x0000000000000000
406722 ms. Exception: 0x0000000100b06805:0x0000000000000000
406725 ms. Exception: 0x0000000100b0c362:0x0000000000000000
406727 ms. Exception: 0x0000000100b3b9f4:0x0000000000000000
406733 ms. Exception: 0x00007fff87cbeb48:0x0000000000000000
406736 ms. Exception: 0x00007fff87c5d6e4:0x0000000000000000
406743 ms. Exception: 0x0000000100b28685:0x0000000000000000
406744 ms. Exception: 0x00007fff87aadb89:0x0000000000000000
406751 ms. Exception: 0x0000000100b35644:0x0000000000000000
406752 ms. Exception: 0x0000000100001b74:0x0000000000000000
406754 ms. Exception: === End stack trace ===

Anonymous said...

Nevermind, the script got updated:


Version for Live 9.1.2 or later is in there!

Ala ud din Jutt said...

Best for share. This is a good thinking.

Unknown said...

Very cool script, thank you so much!
work fine here (9.1.2)

Anonymous said...

I can't find the download at fabrizio's page anymore... Does anyone have the updated version?

alex said...

Hi all, i m trying to find Fabricios Script, but i can't find it in his page..Any repo somewhere?

Anonymous said...

script is gone, what happened?

Anonymous said...


just found this but no support anymore! link worked for me but didn't try the script, so no guarantee!

dired said...

Any guidance on the ableton "api" to program ableton with python?
I'd really like to continue this

Anonymous said...

@dired, Julien Bayle has decompiled the API and remote scripts. I know nothing of Python, otherwise I would do it myself. By the time I did, they would already have another update.


Lampimampi said...

WOW, this is such a great script!!! =)

I started playing with it a couple of days ago, and i noticed that It would be useful for me to be able to control send D.
How would one go about making this?
I thought maybe using the "Track Control Mpde 4" (Shift + Send C).

I can, of course, map them manually, but this will make each knob "locked" to the track, so if i use the navigation arrows the knobs don't "update" which track they are affecting. It would be great to have it working as the other 3 sends...

Hmmm, any ideas?

Unknown said...

I would love to have note mode on the APCmini. Since there are two unused buttons to assign with a shiftkey combination it should be possible. Dumbest thing I don't know any Python :(

Jacques said...

Hello Mr. Petrov

I have already used one of your FCB1020 script for my project and it allowed me to better understand the programing scripts.

thank you very much !

My Question is :

I have an APC40 and APC20, I saw that I can use APC_60-40 and APC20a script in combination.

I was wondering if I could add this,

def _combine_active_instances ():
track_offset = 0
scene_offset = 0

in the APC20a script.

because I would like to have the APC20a session highlight, anywhere but in combination with the APC_60-40.

cordially thank you!

Anonymous said...

Resolu - Found it !

Unknown said...

thanks for sharing !

Anonymous said...

for Live 10 comming soon...

Anonymous said...

Yes for Ableton Live 10... Push StepSeq we need...

Anonymous said...

is there a chance that someone who knows about this framebuffer API things, can take care of this nice little instrument? get the Send B Function running on 9.1.9?

Gaa.Pimenta said...


ludo said...

Many thanks!

Hellem said...

i can pay for updating script up to ableton 10.1.14