Hello again Rui,
Wow! You rock! I was able to map my transport controls to the transport menu items and things work. It looks like the mods are permanent (not per session), which is what I want. Funny thing: I was going to suggest that MIDI controls be mappable to any UI element as a general purpose idea, but was afraid to suggest it because I thought it would take too much time to put into the existing code AND YOU DID IT ALREADY!
Now for the bad news: Button releases on the Launchkey still cause the mapped action to turn off. I hacked together a mididings script that swallows CC events with an event value of 0, which results in the action I want:
from mididings import * from mididings.event import * buttonState = [0] * 128; #################################################################################################### # buttonCtrl: Toggle outgoing CC event value when the incoming value is non-zero #################################################################################################### # # Convert the momentary on/off buttons to mode toggle events when the button press occurs # def buttonCtrl (event): button = event.ctrl; value = event.value; if (value != 0): state = buttonState [button] = value if (buttonState [button] == 0) else 0; event = CtrlEvent (event.port, event.channel, button, state); print (" - Ctrl (%d, %d) => Ctrl (%d, %d)" % (button, value, button, state)); return event; else: print (" - Ctrl (%d, %d) => *IGNORED*" % (button, value)); return None; #################################################################################################### # midiCtrl: Route the incoming MIDI messages to the event filter #################################################################################################### def midiCtrl (event): button = event.ctrl; if (button >= 51 and button <= 59): return (buttonCtrl (event)); elif (button == 104 or button == 105): return (buttonCtrl (event)); elif (button >= 112 and button <= 117): return (buttonCtrl (event)); return event; run ( Filter (CTRL) % Process (midiCtrl) )
But what would be nice is if Qtractor could somehow do this natively. I also looked into the hook function, but I don't think it does what I want. Perhaps I'm being daft.
Hope I'm not being a pain about this.
Bruce
Copyright (C) 2006-2024 rncbc aka Rui Nuno Capela. All rights reserved.
Powered by Drupal
Recent comments
1 day 3 hours ago
1 day 5 hours ago
1 day 5 hours ago
1 day 15 hours ago
2 days 3 hours ago
2 days 11 hours ago
2 days 13 hours ago
3 days 3 hours ago
3 days 4 hours ago
3 days 4 hours ago