ableton live: dedicated instant automap macro (in progress)

fanboi

2008-11-17 03:50:06

right. so ive just spent a bunch of hours trying to figure out how to make a dedicated instant automap macro for my 3 band eq´s ive got set up per channel. my guitarrist basicly forced me to do this so he could eq stuff aswell, since he knows nothing about live, but everything about analog mixer consoles heh.

so, i made this macro that work as follows: press your map button (in my case its number pad 1 for track 1), and the macro runs out a sequence of timers sending out some mouse moves, keyboard shortcuts and midi cc outputs.

what does it do?

well, if you press numberpad 1, it selects track in your sessionview mixer, then maps up the 3 knobs (low, mid, hi) on the eq3 on that track, exits midi map and goes back to sessionview..umm.view (this is so that i can continue controlling scene navigation with my hercules without touching the mouse).

why would i want this over a dedicated custom user script and/or mackie emulation?

because this doesnt lock your controller in any way, and is reuseable anywhere at any time.

now, the rules on the low translator is change a bit different because my current knob there doesnt really work properly so i have to send out some more stuff heh. this is to make 100% sure that it maps, and sometimes it misses it anyways. thinking about replacing it with another knob. aaanyways, should just be as easy as to change them to the same settings as the other rules.

setup:
define your hotkey/midi cc in the "track selection" translator.
map the same button/key to track 1 in ableton live, place an eq3 on the track as the first device (all the way to the left then).

make sure that the X/Y coordinates are correct: i am currently using a 1152x864 resolution running live in fullscreen, so it might not fit for you, but it does for me.

define your midi out cc numbersin the translators cc_low_out, cc_mid_output and cc_hi_output.

it can be used for several track at once, however it doesnt have a demapping function yet.
enjoy.


Todo List:

get someone to clean it up for me :)

add a demapper preset so it can be used for several track (ie: press 1 to map track 1, press 2 to demap track 1 and map track 2 etc, now it only maps track 2 while still having track 1 mapped aswell).

modifier key for finetuning rather the "normal" tweaks, anyone up for it ? :)

faster response time: i had quite a bit of trouble figuring out optimal timer settings so that everything positions itself and maps properly before moving to the next parameter/shutting off midimapping mode. its not the biggest deal but a bit faster response time would be great.
Issues:

sometimes it doesnt map properly (however this could be because of my faulty knob, it probably is hehe).

seems like each "instance" of the mapper needs its own timers, rather then using the same ones, hence the "1_" syntax in the timers. not sure why, but it doesnt work properly when having two instances running with the same timers.

if you press you key while touching/accidently tweaking a controller, chances are it will map this to the sessionview, so hit the key wait those whatever 150 or so milliseconds, then touch your controllers :)

feel free to use/abuse/reuse/re-write this how the hell you want, im just trying to learn this program properly. if anyone knows of a better way of achieving this, please please please do let me know. other then that: have a nice day. ill update when/if i get that demapping thing sorted.

so heres the preset then:
yeah, you can delete the separators and notes etc, its only for me to keep me motivated hehe.


Code: Select all

--------------- Preset INS Mapper

Translator 1: track selection
Options: stop=false
Incoming: Keystroke: NUM 1
Outgoing: One-shot timer "1_mouse_low": 0 ms delay

Translator 2: ____________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 3: ____________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 4: ____MAPPING________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 5: ____________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 6: mouse_low_move
Options: stop=false
Incoming: On timer "1_mouse_low"
Outgoing: Mouse move to X=50 Y=700

Translator 7: enter midi map
Options: stop=false
Incoming: On timer "1_mouse_low"
Outgoing: Keystroke: CTRL(M )

Translator 8: left_click_low
Options: stop=false
Incoming: On timer "1_mouse_low"
Outgoing: Left mouse button click

Translator 9: cc_low_timer
Options: stop=false
Incoming: On timer "1_mouse_low"
Outgoing: One-shot timer "1_cc_low": 1 ms delay

Translator 10: cc_low_output
Options: stop=false
Incoming: On timer "1_cc_low"
Rules: 
  gb=gb+2
  if gb<127 then skip next 2 rules
  ga=ga+1
  gb=0
  if ga<=0 then ga=10
  gc=ga+10
Outgoing: MIDI B1 0D ga B1 0D gc 

Translator 11: mid_trigger
Options: stop=false
Incoming: On timer "1_cc_low"
Outgoing: One-shot timer "1_mouse_mid": 50 ms delay

Translator 12: mouse_mid_move
Options: stop=false
Incoming: On timer "1_mouse_mid"
Outgoing: Mouse move to X=90 Y=700

Translator 13: left_click_mid
Options: stop=false
Incoming: On timer "1_mouse_mid"
Outgoing: Left mouse button click

Translator 14: cc_mid_timer
Options: stop=false
Incoming: On timer "1_mouse_mid"
Outgoing: One-shot timer "1_cc_mid": 15 ms delay

Translator 15: cc_mid_output
Options: stop=false
Incoming: On timer "1_cc_mid"
Rules: 
  gb=gb+2
  if gb<127 then skip next 2 rules
  ga=ga+1
  gb=0
  if ga<=0 then ga=0
Outgoing: MIDI B1 09 ga 

Translator 16: hi_trigger
Options: stop=false
Incoming: On timer "1_cc_mid"
Outgoing: One-shot timer "1_mouse_hi": 90 ms delay

Translator 17: mouse_mid_move
Options: stop=false
Incoming: On timer "1_mouse_hi"
Outgoing: Mouse move to X=120 Y=700

Translator 18: left_click_hi
Options: stop=false
Incoming: On timer "1_mouse_hi"
Outgoing: Left mouse button click

Translator 19: cc_hi_timer
Options: stop=false
Incoming: On timer "1_mouse_hi"
Outgoing: One-shot timer "1_cc_hi": 4 ms delay

Translator 20: cc_hi_output
Options: stop=false
Incoming: On timer "1_cc_hi"
Rules: 
  gb=gb+2
  if gb<127 then skip next 2 rules
  ga=ga+1
  gb=0
  if ga<=0 then ga=0
Outgoing: MIDI B1 0A ga 

Translator 21: exit_map_timer
Options: stop=false
Incoming: On timer "1_cc_hi"
Rules: 
  gb=gb+2
  if gb<127 then skip next 2 rules
  ga=ga+1
  gb=0
  if ga<=0 then ga=0
Outgoing: One-shot timer "1_exit_map": 4 ms delay

Translator 22: exit map mode
Options: stop=false
Incoming: On timer "1_exit_map"
Outgoing: Keystroke: CTRL(M )

Translator 23: timer for back to session
Options: stop=false
Incoming: On timer "1_exit_map"
Outgoing: One-shot timer "1_back_to_session": 100 ms delay

Translator 24: back to session
Options: stop=false
Incoming: On timer "1_back_to_session"
Outgoing: Keystroke: ALT(UPPIL )

Translator 25: ____________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 26: ____TODO LIST:______
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 27: _Demapper (for track selection)
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 28: _Modifier_for_finetuning_
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 29: ___Faster response time__
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 30: __________________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 31: ____Known Bugs:__________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 32: _Sometimes (rare) it doesnt map
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 33: all cc´s properly
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 34: _______________________
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 35: seems like each channel map needs 
Options: stop=false
Incoming: (none)
Outgoing: (none)

Translator 36: its own set of timers (hence the 1_mouse syntax)
Options: stop=false
Incoming: (none)
Outgoing: (none)

fanboi

2008-11-17 03:51:08

for those lazy people, heres the bmtp file, just copy and paste then save it as mapper.bmtp and load up with your translator. edit the settings and away you go:
[Project]
Version=1

[Preset.0]
Name=INS Mapper
Active=1
Name0=track selection
Incoming0=KAM10000KSQ10001061
Outgoing0=Tim0TimS000B1_mouse_low1:0:1000
Options0=Actv01Stop00OutO00
Name1=mouse_low_move
Incoming1=Tim0TimT000B1_mouse_low
Outgoing1=Mse101003202BC
Options1=Actv01Stop00OutO00
Name2=enter midi map
Incoming2=Tim0TimT000B1_mouse_low
Outgoing2=KAM10100KSQ1000401104D24D211
Options2=Actv01Stop00OutO00
Name3=left_click_low
Incoming3=Tim0TimT000B1_mouse_low
Outgoing3=Mse10200
Options3=Actv01Stop00OutO00
Name4=cc_low_timer
Incoming4=Tim0TimT000B1_mouse_low
Outgoing4=Tim0TimS00081_cc_low1:1:1000
Options4=Actv01Stop00OutO00
Name5=cc_low_output
Incoming5=Tim0TimT00081_cc_low
Outgoing5=MID1B10DgaB10Dgc
Options5=Actv01Stop00OutO00StMa00000006gb=gb+2if(gb<127)sk2ipga=ga+1gb=0if(ga<=0)ga=10gc=ga+10
Name6=mid_trigger
Incoming6=Tim0TimT00081_cc_low
Outgoing6=Tim0TimS000B1_mouse_mid1:50:1000
Options6=Actv01Stop00OutO00
Name7=mouse_mid_move
Incoming7=Tim0TimT000B1_mouse_mid
Outgoing7=Mse101005A02BC
Options7=Actv01Stop00OutO00
Name8=left_click_mid
Incoming8=Tim0TimT000B1_mouse_mid
Outgoing8=Mse10200
Options8=Actv01Stop00OutO00
Name9=cc_mid_timer
Incoming9=Tim0TimT000B1_mouse_mid
Outgoing9=Tim0TimS00081_cc_mid1:15:1000
Options9=Actv01Stop00OutO00
Name10=cc_mid_output
Incoming10=Tim0TimT00081_cc_mid
Outgoing10=MID1B109ga
Options10=Actv01Stop00OutO00StMa00000005gb=gb+2if(gb<127)sk2ipga=ga+1gb=0if(ga<=0)ga=0
Name11=hi_trigger
Incoming11=Tim0TimT00081_cc_mid
Outgoing11=Tim0TimS000A1_mouse_hi1:90:1000
Options11=Actv01Stop00OutO00
Name12=mouse_mid_move
Incoming12=Tim0TimT000A1_mouse_hi
Outgoing12=Mse101007802BC
Options12=Actv01Stop00OutO00
Name13=left_click_hi
Incoming13=Tim0TimT000A1_mouse_hi
Outgoing13=Mse10200
Options13=Actv01Stop00OutO00
Name14=cc_hi_timer
Incoming14=Tim0TimT000A1_mouse_hi
Outgoing14=Tim0TimS00071_cc_hi1:4:1000
Options14=Actv01Stop00OutO00
Name15=cc_hi_output
Incoming15=Tim0TimT00071_cc_hi
Outgoing15=MID1B10Aga
Options15=Actv01Stop00OutO00StMa00000005gb=gb+2if(gb<127)sk2ipga=ga+1gb=0if(ga<=0)ga=0
Name16=exit_map_timer
Incoming16=Tim0TimT00071_cc_hi
Outgoing16=Tim0TimS000A1_exit_map1:4:1000
Options16=Actv01Stop00OutO00StMa00000005gb=gb+2if(gb<127)sk2ipga=ga+1gb=0if(ga<=0)ga=0
Name17=exit map mode
Incoming17=Tim0TimT000A1_exit_map
Outgoing17=KAM10100KSQ1000401104D24D211
Options17=Actv01Stop00OutO00
Name18=timer for back to session
Incoming18=Tim0TimT000A1_exit_map
Outgoing18=Tim0TimS00111_back_to_session1:100:1000
Options18=Actv01Stop00OutO00
Name19=back to session
Incoming19=Tim0TimT00111_back_to_session
Outgoing19=KAM10100KSQ10004012126326212
Options19=Actv01Stop00OutO00

feno

2008-11-19 15:33:53

"if anyone knows of a better way of achieving this, please please please do let me know"

tell your guitarist to buy one of those behringer control things...
damn guitarists!.....you must have the patience of a saint dude!

fanboi

2008-11-19 16:52:44

feno wrote:"if anyone knows of a better way of achieving this, please please please do let me know"

tell your guitarist to buy one of those behringer control things...
damn guitarists!.....you must have the patience of a saint dude!
hehe oh no, i dont. its just that we have a pretty limited budget so wed rather use what we have and use the money to buy other, mroe important stuff, such as a multiple IO soundcard for liveuseage :)

the script is done by the way, undergoing some testing etcetera at the moment. gonna post it soon. also had to make a demapping macro to demap it from the last mapped 3bander, and then remap it to the new one.

its resolution sensitive and requires you to have a template project (in live) aswell as the info view closed but its very easy to modify to how youd want it, so it works pretty good so far. since im a complete noob at MT it was alot of trial and error, copying stuff from here and modifying them to work with the script etc, but im slowly getting the hang of it i guess. ill post the script soon mate. have a nice day heh.

feno

2008-11-19 18:27:58

fair play to ya dude!....it looks like you've learned quite a lot about MT pro..i havent even touched the rules, but i did a fairly cool looping system (similar to the kid beyond) except it has "verse/chorus/pre-chorus/end" functionality

Still not finished it yet, but I'll put it up for ya wen I'm done.

Jamie :)

fanboi

2008-11-19 23:02:27

feno wrote:fair play to ya dude!....it looks like you've learned quite a lot about MT pro..i havent even touched the rules, but i did a fairly cool looping system (similar to the kid beyond) except it has "verse/chorus/pre-chorus/end" functionality

Still not finished it yet, but I'll put it up for ya wen I'm done.

Jamie :)
ah yeah, please do. im upping my instant automapper thingy soon, im in the process of writing a tutorial for idmforums as a continuation of my ableton live tutorial using bomes and whatever, figured this would be a great addition to it. after that ill up it.

feno

2008-11-26 01:52:46

no worries....keep adding to it all the time...its gonna be the bomb!

fanboi

2008-11-26 17:52:27

right. so it is finished. i skipped the rules in there cause they really didnt make any difference anyways.

right now its resolution senstive so you have to figure out where your midi mapping browser is located (if you press ctrl+m you will have an extra button at the far left side of the browser beneath all the usual quick buttons, this is the midi mapping browser) and then you need to have a 3band eq already mapped, because it first unmaps it, then remaps it (this is so that you can switch tracks without affecting all eqs).

i have a live template that i use for this aswell, which is located here:
http://nwrecords.com/storage/tutorials/ ... mplate.als

now, in my case the tracks are selected with the numberpad, and in the translators they are selected with numberpad aswell.

its pretty easy to modify, just raise the timer delay to see what each thing does, figure out the correct X/Y coordinate and away you go.
ofcourse modify the cc outs aswell heh.

my resolution for this particular setup is 1152x864 running live in fullscreen. the bmtp preset is located here:

http://nwrecords.com/storage/tutorials/ ... _test.bmtp

please have a look and please improve it if you can, and ofcourse post the results :) im quite the noob on MT so im pretty sure that alot of these things probably could be done way way easier then this, but it works anyways. have a nice day :)

feno

2008-11-26 21:33:32

looks awsome fanboi...I'm up the walls with work at the moment so I don't think I'll have a chance to try this out...keep us posted all the same tho :)

fanboi

2008-11-27 04:08:30

im currently in the process of writing a kind of remote control vst plugin to do this for me instead (thank god for synthmaker mwuaha!) since this script is quite far from optimal. just the fact that i figured it out and had the oppertunity to try it out though was enough for me to realise its potential in a live situation. damn :)

so now its off to SM programming, and then make a new script to go with my midi tranposor/remapper thing hehe.
ill keep you updated is i finetune this somewhat, although i doubt it since its pretty functional as it is right now. might just expand it to an automapper for the first rack in the track, but thats about it i guess.