- Notifications
You must be signed in to change notification settings - Fork6
Mixer for RME Fireface UCX II
License
michaelforney/oscmix
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
oscmix implements an OSC API for RME's Fireface UCX II running inclass-compliant mode, allowing full control of the device'sfunctionality through OSC on POSIX operating systems supporting USBMIDI.
Most things work, but still needs a lot more testing, polish,cleanup. Some things still need to be hooked up in the UI orimplemented in oscmix.
- RME Fireface UCX II
oscmix [-dl] [-r recvaddr] [-s sendaddr]
oscmix reads and writes MIDI SysEx messages from/to file descriptors6 and 7 respectively, which are expected to be opened.
By default, oscmix will listen for OSC messages onudp!127.0.0.1!7222
and send toudp!127.0.0.1!8222
.
See the manual,oscmix.1, for more information.
On Linux systems, you can use bundledalsarawio
program open andconfigure a given raw MIDI subdevice and set up these file descriptorsappropriately.
To determine your MIDI device, look for it in the output ofamidi -l
(the one ending in,1
with the nameFireface UCX II
).
For example:
alsarawio 2,0,1 oscmix
There is also a toolalsaseqio
that requires alsa-lib and usesthe sequencer API.
To determine the client and port for your device, find it (port 1of the Fireface UCX II) in the output ofaconnect -l
.
For example:
alsaseqio 24:1 oscmix
On BSD systems, you can launch oscmix with file descriptors 6 and7 redirected to the appropriate MIDI device.
For example:
oscmix6<>/dev/rmidi17>&6
Thegtk directory contains oscmix-gtk, a GTK frontend thatcommunicates with oscmix using OSC.
To run oscmix-gtk without installing, set theGSETTINGS_SCHEMA_DIR
environment variable.
GSETTINGS_SCHEMA_DIR=$PWD/gtk ./gtk/oscmix-gtk
Theweb directory contains a web frontend that can communicatewith oscmix through OSC over a WebSocket, or by directly to aninstance of oscmix compiled as WebAssembly running directly in the browser.
The web UI is automatically deployed athttps://michaelforney.github.io/oscmix.
It is tested primarily against the chromium stable channel, butpatches to support other/older browsers are welcome (if it doesn'tcomplicate things too much).
Also included is a UDP-to-WebSocket bridge,wsdgram
. It expectsfile descriptors 0 and 1 to be an open connection to a WebSocketclient. It forwards incoming messages to a UDP address and writesoutgoing messages for any UDP packet received. Use it in combinationwith software likes6-tcpserver ors6-tlsserver.
s6-tcpserver 127.0.0.1 8222 wsdgram
To buildoscmix.wasm
, you needclang
supporting wasm32,wasm-ld
,andwasi-libc
.
The OSC API is not yet final and may change without notice.
Method | Arguments | Description |
---|---|---|
/input/{1..20}/mute | i enabled | Inputn muted |
/input/{1..20}/fxsend | f db (-65-0) | Inputn FX send level |
/input/{1..20}/stereo | i enabled | Inputn is stereo |
/input/{1..20}/record | i enabled | Inputn record enabled |
/input/{1..20}/planchan | i 0=off 1-60 | Inputn play channel |
/input/{1..20}/msproc | i enabled | Inputn M/S processing enabled |
/input/{1..20}/phase | i enabled | Inputn phase invert enabled |
/input/{1..4}/gain | f 0-75 (n=1,2) 0-24 (n=3,4) | Inputn gain |
/input/{1..2}/48v | i enabled | Inputn phantom power enabled |
/input/{3..8}/reflevel | i 0=+4dBu 1=+13dBu 2=+19dBu | Inputn reference level |
/durec/status | i | DURec status |
/refresh | none | W Refresh device registers |
/register | ii... register, value | W Set device register explicitly |
TODO Document rest of API. For now, see the OSC tree inoscmix.c
.
There is an IRC channel #oscmix on irc.libera.chat.