Control selected track \w keyboard shortcuts

Share your favorite Ableton Live tips, tricks, and techniques.
[jur]
Site Admin
Posts: 5275
Joined: Mon Jun 01, 2015 3:04 pm
Location: Ableton

Re: Control selected track \w keyboard shortcuts

Post by [jur] » Fri Mar 12, 2021 4:52 pm

bxn wrote:
Fri Mar 12, 2021 1:18 pm
I'll try to ask maybe on the center code ..
Please don't, it's not there for this kind of stuff.
Ableton Forum Moderator

IMage_Engine
Posts: 152
Joined: Sat Jun 07, 2008 10:38 pm
Location: Sydney, Australia

Re: Control selected track \w keyboard shortcuts

Post by IMage_Engine » Wed Mar 17, 2021 10:32 am

Just reload a prj and it recompiles...you dont need to restart live

bxn
Posts: 16
Joined: Sun Nov 08, 2020 3:02 pm

Re: Control selected track \w keyboard shortcuts

Post by bxn » Wed Mar 17, 2021 10:38 am

Allright I'll not ask the center code ^^
@IMage_Engine are you talking about Live 11. It is doing this in Live 10 but not in Live 11 (at least for me and a friend also writing scripts)
Thanks

defex
Posts: 6
Joined: Sat Jan 13, 2018 12:39 pm

Re: Control selected track \w keyboard shortcuts

Post by defex » Wed Apr 21, 2021 6:48 pm

ace007 wrote:
Tue Jan 12, 2021 12:05 pm
I made some minor changes to the python scripts of Selected Track Control.
For me it works now with Live 11 and python 3.
https://drive.google.com/file/d/1XpC4qC ... sp=sharing
Thanks a lot!
I didn't test in detail, but worked at first try!
8)

cmprvndncr
Posts: 126
Joined: Wed Mar 01, 2017 2:44 pm

Re: Control selected track \w keyboard shortcuts

Post by cmprvndncr » Tue May 25, 2021 2:33 pm

REALLY love that I can control the track volume with keys now.

Anyone got this working with clip volume / tuning?

Is there any straightforward way to map a keyboard shortcut to transposition? Would I need to hack the python script?

[jur]
Site Admin
Posts: 5275
Joined: Mon Jun 01, 2015 3:04 pm
Location: Ableton

Re: Control selected track \w keyboard shortcuts

Post by [jur] » Tue May 25, 2021 3:33 pm

cmprvndncr wrote:
Tue May 25, 2021 2:33 pm
Anyone got this working with clip volume / tuning?
This
Ableton Forum Moderator

Christian61
Posts: 26
Joined: Sun Apr 05, 2009 5:24 pm

Big sur

Post by Christian61 » Sun May 30, 2021 9:09 am

Hallo,

Great tool…thanks guys.

I have two instances of STC running with Ableton 11 and Big Sur (Intel).

Changed one of the STC folder names (and midi channel in Midi.py) before setup the second remote script in Ableton. This gives me one STC instance for my Keylab controller (custom mapping sending midi on ch=16) and the other for KiMidi Mac Keyboard. Works…
Gear: MBP M1 Max • iMac 27" • Quartet • SSL UF1/UC1/UF8 • Push2 • Virus TI • NI • Arturia / Korg / Roland / SD3 / Omnisphere / Trillian / RMX • Waves / Slate / SSL Plugins • Ableton 12 • Fender Jazz Bass/Strat/Tele • Gibson Les Paul • Kemper profiler

threeFatCat
Posts: 1
Joined: Sat Jul 17, 2021 2:47 pm

Re: Control selected track \w keyboard shortcuts

Post by threeFatCat » Sat Jul 17, 2021 2:53 pm

Hi all, thank you for this great script! I have question though, and it seems I cant find any answer anywhere. I checked the MIDI Implementation chart, under Device Control but it seems I cant find a way how to select/navigate device inside a rack? I read in the first post that it was discussed by the author but I wasnt able to track the progress of it. Is it possible? How?

mauronedj
Posts: 313
Joined: Wed Mar 21, 2012 3:20 pm

Re: Control selected track \w keyboard shortcuts

Post by mauronedj » Sat Nov 13, 2021 12:12 pm

Hey man, thank you for your work,
I noticed that overdub now toggles session record, and overdub off just does nothing (in Ableton Live 11).
Can you please take a look into that? it might be an easy fit for you but I tried forever without any luck to make it work (I'm not really good at programming).

Also, is it possible to add Capture Midi?
Thanks,
Mauro.

baseinstinct
Posts: 924
Joined: Sun Feb 24, 2008 3:45 am

Re: Control selected track \w keyboard shortcuts

Post by baseinstinct » Mon Jan 10, 2022 12:12 pm

Great job wiffbi !!! Thanks a lot.


In case anyone needs the pc key to midi stuff, here is the code for autohotkey (https://www.autohotkey.com/download/?).

Key combinations are other than in the mac version, but once you find out what means what, you can create a system that suits you in no time.

Code: Select all


hModule := DllCall("kernel32\LoadLibrary", "Str","winmm", "Ptr")

vDeviceID := 1, hMIDIOutputDevice := 0 ; vdeviceid is the choice of midi channel
if DllCall("winmm\midiOutOpen", "Ptr*",hMIDIOutputDevice, "UInt",vDeviceID, "UPtr",0, "UPtr",0, "UInt",0, "UInt")
	return

hDev := hMIDIOutputDevice
vChan := 0 

;==============================

AW:= A_IsUnicode? "W": "A", A_CharSize:= A_IsUnicode? 2: 1
hWinMM:= DllCall("kernel32\LoadLibrary" AW, "Str", "Winmm.dll", "Ptr")
NumDevs:= DllCall("Winmm\midiOutGetNumDevs"), sz:= 20+32*A_CharSize
Loop, % NumDevs	{
    VarSetCapacity(DevCaps, sz, 0)
    DllCall("Winmm\midiOutGetDevCaps" AW, "UInt", id:=A_Index-1,   "Ptr", &DevCaps,   "UInt", sz)
    Name:= StrGet(&DevCaps+8)
    DevName%A_Index%:= Name
    DevNames.= id ": " Name "`n"
}
StringTrimRight, DevNames, DevNames, 1
MsgBox % DevNames


#^`:: 
send, ^s    
reload    
return 



#InstallKeybdHook

#if (WinActive("ahk_class AbletonVstPlugClass") or WinActive("ahk_class Ableton Live Window Class") or WinActive("ahk_class Ableton Live 10 Suite.exe")) 
{


alt & esc:: space
^s:: return




;  -------------------------------------------------------  selected track control
f3:: 
note = 0   ; 								track arm exclusive
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^f3:: 
note = 3   ; 								track arm 
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return


/:: 
note = 1   ; 								track solo exclusive
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^/:: 
note = 4   ; 								track solo
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return


#/::  MidiNotePlay(hDev, vChan, 7, 127, 1)  ; 								kill all track solo

.:: 
note = 2   ; 								track mute 
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^.:: 
note = 5   ; 								track mute exclusive
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

#.:: 
note = 5   ; 								kill all track mute 
MidiNotePlay(hDev, vChan, 8, 127, 1)
return

[:: 
note = 84   ; 								navigate prev/next track
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^[:: 
note = 84   ; 								navigate prev/next track
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

]:: 
note = 85  
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^]:: 
note = 85  
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

{:: 
note = 82   ; 								navigate prev/next scene
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

}:: 
note = 83  
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

lalt & {:: 
note = 67   ; 								navigate prev/next device
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

lalt & }:: 
note = 68  
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

lalt & /:: 
note = 69   ; 								navigate prev/next device
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return


^#!f12:: 
note = 51   ; 								auto-select playing clip-slot when selecting a track (toggle, project independent)
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

lalt & m:: 
note = 12   ; 								metronome
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return




\:: 
note = 43   ; 								trigger clip/scene
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

Lshift & Enter:: 
note = 38  
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

`:: 
note = 49   ; 								stop all clips
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

lwin & `:: 
note = 48   ; 								stop track
MidiNoteOn(hDev, vChan, note, 127)
MidiNoteOff(hDev, vChan, note, 127)
return

^`::  MidiNotePlay(hDev, vChan, 13, 127, 1) ;      back to arrangement

pgup:: MidiNotePlay(hDev, vChan, 36, 127, 1) ; 								fire previous/next scene
pgdn:: MidiNotePlay(hDev, vChan, 40, 127, 1) ; 								

#pgup:: MidiNotePlay(hDev, vChan, 41, 127, 1) ; 								fire previous/next clip
#pgdn:: MidiNotePlay(hDev, vChan, 45, 127, 1) ; 								

f5:: MidiControlChange(hDev, vChan, 22, 113) ; 							track volume up/down by 3db
f6:: MidiControlChange(hDev, vChan, 22, 15)

#f5:: MidiControlChange(hDev, vChan, 7, 0) ; 							track volume up/down by 3db
#f6:: 
MidiControlChange(hDev, vChan, 5, 0)
Loop, 14
{
MidiControlChange(hDev, vChan, 22, 15)
}
MidiControlChange(hDev, vChan, 22, 113)
MidiControlChange(hDev, vChan, 22, 113)
return

; ----------------------------------------------------------- end 


mbutton:: 
Click, 1316 725  ;
Click, 1316 725  ;
return

insert:: Click, 500 88  ; switch to matrix
delete:: Click, 1316 700  ; switch to gear panel


}
#Ifwinactive

;==============================

;==============================

DllCall("winmm\midiOutClose", "Ptr",hMIDIOutputDevice, "UInt")
DllCall("kernel32\FreeLibrary", "Ptr",hModule)

;==================================================

MidiNotePlay(hMIDIOutputDevice, vChannel, vNote, vVelocity, vDuration)
{
	MidiNoteOn(hMIDIOutputDevice, vChannel, vNote, vVelocity)
	Sleep, % vDuration
	MidiNoteOff(hMIDIOutputDevice, vChannel, vNote, 0)
}

MidiNoteOn(hMIDIOutputDevice, vChannel, vNote, vVelocity)
{
	DllCall("winmm\midiOutShortMsg", "Ptr",hMIDIOutputDevice, "UInt",0x90 | vChannel | (vNote << 8) | (vVelocity << 16), "UInt")
}

MidiNoteOff(hMIDIOutputDevice, vChannel, vNote, vVelocity)
{
	DllCall("winmm\midiOutShortMsg", "Ptr",hMIDIOutputDevice, "UInt",0x80 | vChannel | (vNote << 8) | (vVelocity << 16), "UInt")
}

;==================================================

MidiControlChange(hMIDIOutputDevice, Channel, ControlNo, Value)
{
    DllCall("winmm\midiOutShortMsg", "UInt", hMIDIOutputDevice, "UInt", 0xB0 | Channel
                                                          | (ControlNo << 8) | (Value << 16)) ;"Control Change" event
}




Post Reply