Input buss for midi-control
muranyia opened this issue · 3 comments
My use case is that I have a control surface (LaunchPad Pro) connected which can act as a grid AND as a keyboard, depending on the mode in use. It sends messages through its separate MIDI ports, again, depending on the mode in use. So you can just consider it a control surface and a separate keyboard.
Right now I cannot use the midi keyboard because the notes are interpreted as pattern change remote control messages. Or I could use the keyboard but have no midi remote control.
I would like to be able to set up in seq64 separate MIDI busses for the control surface input and for the keyboard input.
I think that if the same size/buss/enabled parameters get implemented for [midi-control] that we now have for [midi-control-out], we are done. I imagine that then the GUI setting for MIDI Input will select the keyboard(s) and the buss number in the rc file's [midi-control] section will choose the port for the control surface.
One thing you can try for now (if it works on the LaunchPad) is to use a particular channel in the midi-control section. Anyway, I will look into adding a buss-filter. Been busy with work travel, etc. And I found (in Seq66) a running-status bug reading a drum file, which took me awhile to work out; I have back-ported that fix to the midi_control branch. Stay tuned.
Looking into this issue, I found that the code I wrote is pretty gnarly. And the ALSA and JACK processing is slightly different. I can theoretically look up the input buss for an event in ALSA, but that would be extra overhead that I am afraid of. Based on some other issues, it would be good to refactor the seq_rtmidi library. However that is a big task, and would best need some upfront research and design work. It will be quite awhile before I get to that, unfortunately.
Thanks for the tip. Separating the MIDI channels does it for me now, as particularly on the Launchpad, I won't be changing patterns while using the MIDI keyboard (as the grid and the keyboard are not visible at the same time).
If I wanted to use both simultaneously, pushing the grid would be also interpreted as playing the keys, but the keyboard would not change the patterns any more.