ahlstromcj / sequencer64

A major reboot of Seq24. Current release 0.97.0 (2021-05-13), native JACK MIDI, Song recording, playlists, and a Windows/Qt version. For fresher code, see the Seq66 project. Note that trigger and mute-group-in-MIDI-file formats have evolved! Back up your work!
GNU Affero General Public License v3.0
235 stars 29 forks source link

Input buss for midi-control #184

Open muranyia opened 4 years ago

muranyia commented 4 years ago

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.

ahlstromcj commented 4 years ago

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.

ahlstromcj commented 4 years ago

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.

muranyia commented 4 years ago

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.