...and MY SCRIPT IS DONE. I am beside myself with how awesome this is. I feel like a beast!
In case anyone is interested, I pasted the script below.
The only thing I am a little unsure of is that every time I press a button, it loops through all tracks and all devices and updates the list. Originally, I did that one time, when the script loads. But, doing it on each button press means that any devices I add after load will be included, without needing to restart Live. If I notice any performance issues, then I might look for a way to handle it better. Perhaps there is a way I can listen for some kind of "on device added" event or something.
Usual disclaimer: This code is distributed WITHOUT ANY WARRANTY WHATSOEVER. Use at your own risk.
This code does what I was describing earlier in the thread. For any device named "REPEATERMASTER" etc., it changes the dial values based on a Push button press. The awesomist part is that I am using a Drum Rack, which sends the notes out of External Instrument device to an internal MIDI port. No MIDI mapping needed.
Code: Select all
from _Framework.ControlSurface import ControlSurface
from _Framework.ButtonElement import ButtonElement
class MyControlSurface(ControlSurface):
def __init__(self, instance):
super(MyControlSurface, self).__init__(instance, False)
with self.component_guard():
self.show_message("MyControlSurface loaded")
#self.log_message("MyControlSurface loaded")
self._repeaterNames = ["REPEATERMASTER", "REPEATERDRUMS", "REPEATEROTHER"]
buttonRepeaterMasterOff = ButtonElement(False, 0, 0, 36)
buttonRepeaterMaster1_2 = ButtonElement(False, 0, 0, 37)
buttonRepeaterMaster1_4 = ButtonElement(False, 0, 0, 38)
buttonRepeaterMaster1_8 = ButtonElement(False, 0, 0, 39)
buttonRepeaterMaster1_16 = ButtonElement(False, 0, 0, 40)
buttonRepeaterMaster1_32 = ButtonElement(False, 0, 0, 41)
buttonRepeaterMaster1_6 = ButtonElement(False, 0, 0, 42)
buttonRepeaterMaster1_3 = ButtonElement(False, 0, 0, 43)
buttonRepeaterMasterOff.add_value_listener(self.buttonRepeaterMasterOffPressed)
buttonRepeaterMaster1_2.add_value_listener(self.buttonRepeaterMaster1_2Pressed)
buttonRepeaterMaster1_4.add_value_listener(self.buttonRepeaterMaster1_4Pressed)
buttonRepeaterMaster1_8.add_value_listener(self.buttonRepeaterMaster1_8Pressed)
buttonRepeaterMaster1_16.add_value_listener(self.buttonRepeaterMaster1_16Pressed)
buttonRepeaterMaster1_32.add_value_listener(self.buttonRepeaterMaster1_32Pressed)
buttonRepeaterMaster1_6.add_value_listener(self.buttonRepeaterMaster1_6Pressed)
buttonRepeaterMaster1_3.add_value_listener(self.buttonRepeaterMaster1_3Pressed)
buttonRepeaterDrumsOff = ButtonElement(False, 0, 0, 44)
buttonRepeaterDrums1_2 = ButtonElement(False, 0, 0, 45)
buttonRepeaterDrums1_4 = ButtonElement(False, 0, 0, 46)
buttonRepeaterDrums1_8 = ButtonElement(False, 0, 0, 47)
buttonRepeaterDrums1_16 = ButtonElement(False, 0, 0, 48)
buttonRepeaterDrums1_32 = ButtonElement(False, 0, 0, 49)
buttonRepeaterDrums1_6 = ButtonElement(False, 0, 0, 50)
buttonRepeaterDrums1_3 = ButtonElement(False, 0, 0, 51)
buttonRepeaterDrumsOff.add_value_listener(self.buttonRepeaterDrumsOffPressed)
buttonRepeaterDrums1_2.add_value_listener(self.buttonRepeaterDrums1_2Pressed)
buttonRepeaterDrums1_4.add_value_listener(self.buttonRepeaterDrums1_4Pressed)
buttonRepeaterDrums1_8.add_value_listener(self.buttonRepeaterDrums1_8Pressed)
buttonRepeaterDrums1_16.add_value_listener(self.buttonRepeaterDrums1_16Pressed)
buttonRepeaterDrums1_32.add_value_listener(self.buttonRepeaterDrums1_32Pressed)
buttonRepeaterDrums1_6.add_value_listener(self.buttonRepeaterDrums1_6Pressed)
buttonRepeaterDrums1_3.add_value_listener(self.buttonRepeaterDrums1_3Pressed)
buttonRepeaterOtherOff = ButtonElement(False, 0, 0, 52)
buttonRepeaterOther1_2 = ButtonElement(False, 0, 0, 53)
buttonRepeaterOther1_4 = ButtonElement(False, 0, 0, 54)
buttonRepeaterOther1_8 = ButtonElement(False, 0, 0, 55)
buttonRepeaterOther1_16 = ButtonElement(False, 0, 0, 56)
buttonRepeaterOther1_32 = ButtonElement(False, 0, 0, 57)
buttonRepeaterOther1_6 = ButtonElement(False, 0, 0, 58)
buttonRepeaterOther1_3 = ButtonElement(False, 0, 0, 59)
buttonRepeaterOtherOff.add_value_listener(self.buttonRepeaterOtherOffPressed)
buttonRepeaterOther1_2.add_value_listener(self.buttonRepeaterOther1_2Pressed)
buttonRepeaterOther1_4.add_value_listener(self.buttonRepeaterOther1_4Pressed)
buttonRepeaterOther1_8.add_value_listener(self.buttonRepeaterOther1_8Pressed)
buttonRepeaterOther1_16.add_value_listener(self.buttonRepeaterOther1_16Pressed)
buttonRepeaterOther1_32.add_value_listener(self.buttonRepeaterOther1_32Pressed)
buttonRepeaterOther1_6.add_value_listener(self.buttonRepeaterOther1_6Pressed)
buttonRepeaterOther1_3.add_value_listener(self.buttonRepeaterOther1_3Pressed)
def buttonRepeaterMasterOffPressed(self, value):
self.setButtonRepeater("REPEATERMASTER",0,0)
def buttonRepeaterMaster1_2Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,107)
def buttonRepeaterMaster1_4Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,96)
def buttonRepeaterMaster1_8Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,78)
def buttonRepeaterMaster1_16Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,61)
def buttonRepeaterMaster1_32Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,44)
def buttonRepeaterMaster1_6Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,84)
def buttonRepeaterMaster1_3Pressed(self, value):
self.setButtonRepeater("REPEATERMASTER",127,100)
def buttonRepeaterDrumsOffPressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",0,0)
def buttonRepeaterDrums1_2Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,107)
def buttonRepeaterDrums1_4Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,96)
def buttonRepeaterDrums1_8Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,78)
def buttonRepeaterDrums1_16Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,61)
def buttonRepeaterDrums1_32Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,44)
def buttonRepeaterDrums1_6Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,84)
def buttonRepeaterDrums1_3Pressed(self, value):
self.setButtonRepeater("REPEATERDRUMS",127,100)
def buttonRepeaterOtherOffPressed(self, value):
self.setButtonRepeater("REPEATEROTHER",0,0)
def buttonRepeaterOther1_2Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,107)
def buttonRepeaterOther1_4Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,96)
def buttonRepeaterOther1_8Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,78)
def buttonRepeaterOther1_16Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,61)
def buttonRepeaterOther1_32Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,44)
def buttonRepeaterOther1_6Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,84)
def buttonRepeaterOther1_3Pressed(self, value):
self.setButtonRepeater("REPEATEROTHER",127,100)
def setButtonRepeater(self, deviceName, repeatValue, gridValue):
self._repeaters = []
for track in self.song().tracks:
for device in track.devices:
if device.name.upper() in self._repeaterNames:
self._repeaters.append(device)
for device in self._repeaters:
for parameter in device.parameters:
if device.name.upper() == deviceName:
if parameter.name.upper() == "REPEAT":
parameter.value = repeatValue
if parameter.name.upper() == "GRID":
parameter.value = gridValue