Topic: oscmix: mixer/control software for UCX II
Over the past few months, I've been working on software to control my UCX II in CC-mode from Linux, and while there is still lots left to do, I think I'm at a point where it might be useful for others.
https://github.com/michaelforney/oscmix
See the README for more details. The main component is the oscmix program, which communicates using SysEx messages through the UCX II's MIDI Port 2 (same as the iPad app), and provides an OSC API exposing the full functionality of the device. Note that this has no relation to the OSC API provided by TotalMix FX. It works on Linux and BSDs, as well as any other POSIX OS as long as you can supply it with file descriptors for reading and writing to the MIDI port.
I didn't originally set out to make a UI, but I started mocking up one in GTK, and it's gotten to the point where it's fairly usable, but is still missing some functionality.
I also experimented with a web UI (though I'm no web developer). It can connect to oscmix through a WebSocket-to-UDP bridge (provided). I had the crazy idea of compiling oscmix to WebAssembly and hooking it up to WebMIDI, which turned out to be fairly straightforward. So you can also connect directly to your device from the browser without installing any software locally. This should technically work on any operating system with a browser that supports these two APIs. It seems to work on Android and macOS (in CC-mode).
I've set it up so builds are automatically deployed at https://michaelforney.github.io/oscmix/, so feel free to check it out! One important note is that the maximum length of MIDI port names on Linux is 31 characters, and combining the card name "Fireface UCX II (XXXXXXXX)" with the port name "Port 2" exceeds that limit. So you'll see two input ports and two output ports with the exact same name. You need to select the second port.
If you're interested in the technical side, I've documented the SysEx protocol as I understand it at doc/protocol.md, as well as the technique I used to capture packets with a Raspberry Pi in between an iPad and the UCX II. There is also a wireshark dissector in the tools directory. Thanks RME for help with a few bits I couldn't figure out myself.
Only the UCX II is supported, since that's the only device I have. I'm not sure how similar the protocol for other devices is, but maybe there is potential for adding other devices. I'm happy to help out anyone interested in this.
You can report any issues you encounter to the issue tracker, but please keep in mind that this is just a hobby project I'm working on for fun in my free time.