mok
Converser

Posts: 7
|
Post by mok on Aug 25, 2015 23:16:59 GMT
Hello! I'm a new MIDI Bridge user, trying to get oriented, and I think I've got a foothold. Very impressed with the support you've given here on the forum. Reading through it has been helpful as I try to work up a setup for the stage. Really cool of you to be so involved. But I've got an issue I'd love to have help tackling: How to generate MIDI instructions automatically, and independently. This probably sounds vague. I've just bought a Novation Launchkey mkII, which I chose because I wanted customizable, backlit pads. MIDI information sent to the Launchkey (on port 2, channel 16) controls those lights, such that a particular MIDI note chooses the pad, and then the velocity chooses the color. The problem I'm finding, however, is that the pads are only lit after note-on was received, and then turned off once the note-off occurs(I think). And since I don't know how to generate independent midi data, I find that I can't keep the lights lit, as I don't know how to avoid sending a note-off command. I'm wondering if this can be accomplished in MIDI Bridge? Since I'm using it for other things, too. Is there a way I can generate a series of note-on's to light my keyboard, without the subsequent note-off? And perhaps generate other custom MIDI info to control pulsing and color changes on button-press, etc. Or should I look elsewhere? In case you're curious, here's the manual, which is thankfully pretty short and straightforward, relevant topic on page 6. d19ulaff0trnck.cloudfront.net/sites/default/files/novation/downloads/10535/launchkey-mk2-programmers-reference-guide.pdfApologies if I'm barking up the wrong tree - I'm still fuzzy with all this.
|
|
mok
Converser

Posts: 7
|
Post by mok on Aug 26, 2015 4:41:47 GMT
Alright, I've had an idea for an approach toward a solution, but I'm still so novice with this that it's quite half-baked. Maybe you can confirm if I'm on the right track:
In MIDI Bridge, I loop a route back from the MIDIBridge virtual source to the Launchkey destination. I'll reserve one button/MIDI CC on the keyboard. Use StreamByter to convert it to a Note-On that the light controls understand, And to Block the note-off from that note. (possible?) Clone the note enough times to cover all the backlit pads, and then assign their velocity in the same line in order to choose the color.
This way, I hit a button once, and the lights will be on. Could that work? I'd be trying this myself right now, except that I'm still struggling with interpreting and transforming MIDI hex commands.
Hm. In leaving a lingering Note-On, could this lead to trouble? Now that I've formed up the idea and written it out, maybe I'll get farther with experimenting...
*edited to clarify threat tittle
|
|
mok
Converser

Posts: 7
|
Post by mok on Aug 26, 2015 9:55:08 GMT
I hate to turn this into some sort of blog, but as I get oriented and progress, I am hitting a new set of larger questions.
Having successfully tried a version of the above method, I'm now seeing that a more cohesive control set for the lights looks to be a rather large instruction set. I can get lights turned on initially, but I now see that keeping them on while using the pads is another matter entirely. Let alone changing the lights to coincide with the software they control, such as highlighting the last pad pressed.
My question first is whether or not a larger instruction set to drive the above goal is outside the scope of MIDI Bridge, or if there's a practical limit to how large the Stream Byter instructions can be.
Besides that main question, related to the above, I'm finding some behavior whose logic I don't understand. It may be specific to what I've done, but understanding it will probably prove important if I go farther with this. I wrote up some instructions that takes one MIDI CC press, and mirrors it into 16 different note presses with a different velocity each. No note-off seems to be occurring, which was unexpected, but exactly what I was looking for. With the 16 persisting note-on, My keyboard lights up the way I want it to look, at least initially. Press one of the lit buttons, and it un-lights the pad, as I expected. But then, if I hit my 'Lights On' button again, it usually won't re-light. I appear to have to press/de-activate most(but not all) of the pads before "Lights On" can do the job again. Pattern unknown.
If I were to attempt to have them re-light mostly automatically, or otherwise change state when interacted with, I suspect I probably will need to understand this behavior. Here is the instruction set at present. A pre-selected series of Note-On's pointed at the Launchkey's MIDI port 2 chooses the pad, while the note's velocity chooses the color. Velocity 0 or note-off apparently turns off the LED.
#LaunchKey Turn On The Lights
#One Button Activates Lights #Reserved CC to Ch.16 for RGB pad mirroring BX 69 XX = BF 69 47
#Note-On Mirrored with tailored velocity for color #Bottom Row BX 69 = 9F 24 06 +C BX 69 = 9F 25 7E +C BX 69 = 9F 26 0D +C BX 69 = 9F 27 40 +C BX 69 = 9F 2C 24 +C BX 69 = 9F 2D 2B +C BX 69 = 9F 2E 37 +C BX 69 = 9F 2F 47 +C #Top Row BX 69 = 9F 28 06 +C BX 69 = 9F 29 7E +C BX 69 = 9F 2A 0D +C BX 69 = 9F 2B 40 +C BX 69 = 9F 30 24 +C BX 69 = 9F 31 2B +C BX 69 = 9F 32 37 +C BX 69 = 9F 33 47 +C
#END
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 26, 2015 10:44:04 GMT
Hi mok, To try and answer your questions posed so far! As you've discovered you need to send the note on/offs directly to the launchpad to control the lights. For basic CC to a series of note ons you seem to have that sorted. Pulsing is a bit more ambitious and probably out of scope for what MidiBridge can do, although you could clone some events with a delay so that when you press the CC then you can run a sequence of note ons to the LP (see below). I would recommend you apply the Stream Byter to the RHS Launchkey port and route your kbd directly to it. I would not worry about lingering note ons since your events are going only to the launchkey and nowhere else so it is up to you to issue notes events as you see fit. You can indeed block off note offs inside the Stream Byter with rules like: # block note offs 9X 00 = XX +B 8X = XX +B
However, since you're mapping a CC to cloned note ons, as you say, the launchkey is never receiving note offs. The launchkey behaviour with pad lighting I think will relate to the internal state of the pad and the externally controlled state. Sounds like they may be independent so if you light up via note on and then press a pad then the pad light goes to the expected state of pad press - or something like that. Yes, you will need to understand this behaviour I guess. On to your ruleset. For a laugh you could sequence the light display with delays like: BX 69 = 9F 24 06 +C BX 69 = 9F 25 7E +C +D100 BX 69 = 9F 26 0D +C +D200 BX 69 = 9F 27 40 +C +D300 BX 69 = 9F 2C 24 +C +D400 BX 69 = 9F 2D 2B +C +D500 BX 69 = 9F 2E 37 +C +D600 BX 69 = 9F 2F 47 +C +D700
I think the crux will be to work out the external vs internal lights behaviour and once we understand how that operates hopefully we can adjust/create some rules to suit. Regards, Nic.
|
|
nic
Soapbox Supremo  
Troublemaker
Press any key to continue
Posts: 2,011
|
Post by nic on Aug 27, 2015 14:29:14 GMT
Hi mok, Forgot to answer your question about the practical limit of the Stream Byter. Essentially Stream Byter rulesets have a limit of about 4k of text (including comments). Regards, Nic.
|
|
mok
Converser

Posts: 7
|
Post by mok on Sept 10, 2015 23:08:30 GMT
As an update, to any other curious Launchkey owners....
After spending a whole lot of time on this, I've dropped the endeavor, being unable to get the right behavior out of the Launchkey via MIDI Bridge's Streambyter. Streambyter is superb, and went a long ways toward getting lights available for the Launchkey's "basic MIDI mode," making it possible to light up the buttons with the desired color. However, implementing the other features(like blinking/pulsing lights on the button you'd just pressed) in a practical manner seems unlikely. The amount of logic required to get it to a basic, usable state would strain at the 4k character limit. More importantly, I think that'd require referencing back to prior rules in a way that exceeds the scope of Streambyter. Pardon if this doesn't entirely make sense, as I'm no programmer.
That being said, at least you can turn on the custom lights, and keep them on - something otherwise impossible for non-Ableton Live users. As for me, I'm returning the Launchkey. Novation's decision to cut it's features off at the knees for non-Ableton users is just too much for me to tolerate. Too bad, I really liked the lights.
The following is the simple rule set I ended at, where you press one button to turn on the lights, and keep them on. I hope it's useful to someone out there.
#LaunchKey Turn On The Lights
#One Button Activates Lights #Reserved CC to Ch.16 for RGB pad mirroring BX 69 XX = BF 69 47
#Note-On Mirrored with tailored velocity for color #Bottom Row BX 69 = 9F 24 06 +C BX 69 = 9F 25 7E +C BX 69 = 9F 26 0D +C BX 69 = 9F 27 40 +C BX 69 = 9F 2C 24 +C BX 69 = 9F 2D 2B +C BX 69 = 9F 2E 37 +C BX 69 = 9F 2F 47 +C #Top Row BX 69 = 9F 28 06 +C BX 69 = 9F 29 7E +C BX 69 = 9F 2A 0D +C BX 69 = 9F 2B 40 +C BX 69 = 9F 30 24 +C BX 69 = 9F 31 2B +C BX 69 = 9F 32 37 +C BX 69 = 9F 33 47 +C
#Lights Persistence #Pressing Pad Re-Asserts Lighting
#Bottom Row N9 24 = 9F 24 06 +C N9 25 = 9F 25 7E +C N9 26 = 9F 26 0D +C N9 27 = 9F 27 40 +C N9 2C = 9F 2C 24 +C N9 2D = 9F 2D 2B +C N9 2E = 9F 2E 37 +C N9 2F = 9F 2F 47 +C #Top Row N9 28 = 9F 28 06 +C N9 29 = 9F 29 7E +C N9 2A = 9F 2A 0D +C N9 2B = 9F 2B 40 +C N9 30 = 9F 30 24 +C N9 31 = 9F 31 2B +C N9 32 = 9F 32 37 +C N9 33 = 9F 33 47 +C
#END
|
|