16 parameters in ableton + Akai Mpk49

Using more than 8 device controls in ableton- Control Script

Jul 28 2014

After buying an Akai Mpk49 I wanted to see if there was anyway to use all 16 knobs and faders to control ableton devices. After going down the rabbit hole of ableton python scripts I was successful in creating a control script for the AKAI that allowed 16 parameters to be controlled at once.

This required alteration of the Generic ableton control scripts folder as this defines what parameters are the first 8 to be controlled. I altered this to have 16 parameters and different banks and managed to make it work.

See the video for a demo.

Functions

Installation steps

1. Intall CLYPHX = download from here:

http://beatwise.proboards.com/index.cgi?board=clyphx&action=display&thread=992


2. Replace "UserSettings.txt" with my downloaded one.

optionally you can read the instructions in there and create you own- its really not very hard!

3. AKAI MPK49 DEVICE CONTROL

IF you haven't already make a backup of your "MIDI REMOTE SCRIPS" folder (See disclaimer at start!)

drag "MPK49DEVICE_CONTROL" into "MIDI Remote Scripts" (same folder where you put ClyphX)

DONT CHANGE THE NAME


4. (to allow you to change more than 8 parameters at once)

in "MIDI Remote Scripts" open folder "_Generic"


drag "Devices.py" and "Devices.pyc" into folder "_Generic" and REPLACE (

(AGAIN MAKE A BACKUP JUST IN CASE)


5. upload akai mpK midi map "MPK49Device_Control.SQS"

open vyzex mpk49 editor app, file open "MPK49Device_Control.SQS"

this should load the midi mapping and you mph should now say "DevCntrl"

to permanently save this (be careful as can totally overwrite other mappings)

press the right button next to the cancel button and preset selector encoder

it will now say "Save to 01" - press enter if you want to overwrite that slot ,


notes - remember you can't take it back if you save over a preset.

that being said the "DevCntrl" mapping for MPK49Device_Control script in ableton will also work with the normal MPK49 ableton script selection…


see akai documentation for clarification



MAPPING EXPLANATION- see also AKAI MPK49 DEVICE CONTROL DOCUMENTATION

COntrol bank A = all encoders & faders auto map to device controls.

COntrol bank B = faders = track volume

Control Bank c = faders- send A. encoders - sendB

DEVICES.PY text examples (shows knobs and faders 2x8 = 16 in total)

# ANALOG BANK PARAS

ALG_BANK1 = ('OSC1 Shape', 'OSC1 Octave', 'OSC1 Semi', 'OSC1 Detune', 'PEG1 Amount', 'O1 Sub/Sync', 'OSC1 Balance', 'OSC1 Level', 'OSC2 Shape', 'OSC2 Octave', 'OSC2 Semi', 'OSC2 Detune', 'PEG2 Amount', 'PEG2 Time', 'OSC2 Balance', 'OSC2 On/Off')

#para 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

ALG_BANK2 = ('F1 Freq', 'F1 Resonance', 'F1 Type', 'F1 Freq < Env', 'F1 Res < Env','F1 Freq < LFO', 'F1 Res < LFO', 'F1 On/Off', 'FEG1 Attack', 'FEG1 Decay', 'FEG1 Sustain', 'FEG1 Rel', 'F1 To F2', 'FEG1 Loop')

# 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

ALG_BANK3 = ('F2 Freq', 'F2 Resonance', 'F2 Type', 'F2 Freq < Env', 'F2 Res < Env','F2 Freq < LFO', 'F2 Res < LFO', 'F2 On/Off', 'FEG2 Attack', 'FEG2 Decay', 'FEG2 Sustain', 'FEG2 Rel', 'F2 Slave', 'FEG2 Loop')

ALG_BANK4 = ('AEG1 Attack', 'AEG1 Decay', 'AEG1 Sustain', 'AEG1 Rel', 'AEG2 Attack', 'AEG2 Decay', 'AEG2 Sustain', 'AEG2 Rel', 'AMP1 Level', 'AMP1 Pan', 'AEG1 A < Vel', 'AMP1 < LFO', 'AMP2 Level', 'AMP2 Pan', 'AEG2 A < Vel', 'AMP2 < LFO')

# 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

ALG_BANK5 = ('LFO1 On/Off', 'LFO1 Shape','LFO1 Retrig', 'LFO1 Delay', 'LFO1 Fade In', 'LFO1 SncRate', 'LFO1 Phase', 'LFO1 Speed', 'LFO2 On/Off', 'LFO2 Shape','LFO2 Retrig', 'LFO2 Delay', 'LFO2 Fade In', 'LFO2 SncRate', 'LFO2 Phase', 'LFO2 Speed')

# 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

ALG_BANK6 = ('Vib On/Off', 'Vib Amount', 'Vib Speed', 'Vib Delay', 'Unison On/Off', 'Unison Detune', 'Voices', 'Volume', 'Noise On/Off', 'Noise Level', 'Noise Color', 'Glide On/Off', 'Glide Time', 'Glide Legato')

# para 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3



# OPERATOR BANK PARAS

OPR_BANK1 = ('Ae Attack', 'Ae Decay', 'Ae Sustain', 'Ae Release', 'A Coarse', 'A Fine', 'Osc-A Wave', 'Osc-A Level', 'Osc-A On', 'Osc-A Lev < Vel', 'Ae Mode', 'Ae Retrig', 'A Fix On')

# 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

OPR_BANK2 = ('Be Attack', 'Be Decay', 'Be Sustain', 'Be Release', 'B Coarse', 'B Fine', 'Osc-B Wave', 'Osc-B Level', 'Osc-B On', 'Osc-B Lev < Vel', 'Be Mode', 'Be Retrig', 'B Fix On')

OPR_BANK3 = ('Ce Attack', 'Ce Decay', 'Ce Sustain', 'Ce Release', 'C Coarse', 'C Fine', 'Osc-C Wave', 'Osc-C Level', 'Osc-C On', 'Osc-C Lev < Vel', 'Ce Mode', 'Ce Retrig', 'C Fix On')

OPR_BANK4 = ('De Attack', 'De Decay', 'De Sustain', 'De Release', 'D Coarse', 'D Fine', 'Osc-D Wave', 'Osc-D Level', 'Osc-D On', 'Osc-D Lev < Vel', 'De Mode', 'De Retrig', 'D Fix On')

OPR_BANK5 = ('Le Attack', 'Le Decay', 'Le Sustain', 'Le Release', 'LFO Rate', 'LFO Amt', 'LFO Type', 'LFO R < K', 'LFO On', 'Osc-A < LFO', 'Osc-B < LFO', 'Osc-C < LFO', 'Osc-D < LFO', 'Fil < LFO')

OPR_BANK6 = ('Filter Freq', 'Filter Res', 'Fe R < Vel', 'Fe Amount', 'Fe Attack', 'Fe Decay', 'Fe Sustain', 'Fe Release', 'Filter On', 'Filter Type', 'Filt < Vel', 'Shaper Type', 'Shaper Amt', 'Shaper Dry/Wet', )

# filters 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3

OPR_BANK7 = ('Pe Attack', 'Pe Decay', 'Pe Sustain', 'Pe Release', 'Pe Init', 'Spread', 'Transpose', 'Pe Amount', 'Pe On', 'Glide Time', 'Glide On', 'Pe Amt A', 'Pe Dst B', 'Pe R < Vel', )

# Pitch 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3zZ

OPR_BANK8 = ('Time < Key', 'Panorama', 'Pan < Key', 'Pan < Rnd', 'Algorithm', 'Time', 'Tone', 'Volume', 'PB Range',)

OPR_BOB = ('Filter Freq', 'Filter Res', 'A Coarse', 'A Fine', 'B Coarse', 'B Fine', 'Osc-B Level', 'Volume')

OPR_BANKS = (OPR_BANK1,

OPR_BANK2,

OPR_BANK3,

OPR_BANK4,

OPR_BANK5,

OPR_BANK6,

OPR_BANK7,

OPR_BANK8)

OPR_BOBS = (OPR_BOB,)

OPR_BNK_NAMES = ('Oscillator A', 'Oscillator B', 'Oscillator C', 'Oscillator D', 'LFO', 'Filter', 'Pitch', 'Routing')