kampfschlaefer / jackmix

Matrix-Mixer for the Jack-Audio-connection-Kit
http://www.arnoldarts.de/jackmix/
GNU General Public License v2.0
44 stars 13 forks source link

Split jackmix into 2 pieces: one for Jack processing and one for the UI... #13

Open alamaral opened 3 years ago

alamaral commented 3 years ago

I was planning on using jackmix for an embedded project I'm working on, but since it's tightly bound to Qt, and I don't have an X display to use, I can't. I've had to basically write a matrix switcher, similar to what jackmix does, but entirely controlled by MIDI.

My suggestion would be to split apart jackmix into the part that does the Jack processing, and a separate UI. Comms could be achieved by MIDI, by coming up with a scheme to map controller ID's to the various volume controls, based on the (maybe maximum) number of inputs and outputs. You could then add a query function using Sysex commands and replies so that you can poll for the state of the knobs, or use a pub/sub model of some sort over MIDI and have jackmix send the updated states of the knobs to a different MIDI output which could be connected to the UI.

You could make it so that if you run the UI it spins up the Jack processor and automatically connects to it, so it would work exactly as it does now, but with the ability to run only the Jack processor if you don't want a UI.

By doing this you could then run jackmix as a standalone embedded app with no UI, maybe with a configuration file to set the initial conditions, and you could also run multiple UI instances, each of which might only control a subset of the inputs/outputs.