Page 33 of 33

Re: Control selected track \w keyboard shortcuts

Posted: Fri Mar 12, 2021 4:52 pm
by [jur]
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.

Re: Control selected track \w keyboard shortcuts

Posted: Wed Mar 17, 2021 10:32 am
by IMage_Engine
Just reload a prj and it recompiles...you dont need to restart live

Re: Control selected track \w keyboard shortcuts

Posted: Wed Mar 17, 2021 10:38 am
by bxn
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

Re: Control selected track \w keyboard shortcuts

Posted: Wed Apr 21, 2021 6:48 pm
by defex
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)

Re: Control selected track \w keyboard shortcuts

Posted: Tue May 25, 2021 2:33 pm
by cmprvndncr
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?

Re: Control selected track \w keyboard shortcuts

Posted: Tue May 25, 2021 3:33 pm
by [jur]
cmprvndncr wrote:
Tue May 25, 2021 2:33 pm
Anyone got this working with clip volume / tuning?
This

Big sur

Posted: Sun May 30, 2021 9:09 am
by Christian61
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…

Re: Control selected track \w keyboard shortcuts

Posted: Sat Jul 17, 2021 2:53 pm
by threeFatCat
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?

Re: Control selected track \w keyboard shortcuts

Posted: Sat Nov 13, 2021 12:12 pm
by mauronedj
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.

Re: Control selected track \w keyboard shortcuts

Posted: Mon Jan 10, 2022 12:12 pm
by baseinstinct
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
}