michaelforney / oscmix

Mixer for RME Fireface UCX II
Other
20 stars 4 forks source link

Fireface 802 support #4

Open michaelforney opened 7 months ago

michaelforney commented 7 months ago

@huddx01 and sjzstudio on the RME forum have kindly provided CC-mode USB descriptors for the 802. It seems to be consistent with the UCX II, so hopefully shouldn't be too difficult to support.

My only concern is the vendor-specific interface with bulk endpoints.

sjzstudio also noted that when dumping from the second MIDI port, they saw

16:1 System exclusive F0 00 20 0D 10 00 00 12 00 78 0B F7

This seems to follow the same SysEx packet format: manufacturer ID 00 20 0Dh, device ID 10h, sub ID 00h indicating register change, and then a 5 byte payload 00 12 00 78 0B, which is 0x3f000900 after decoding. This means "register 0x3f00 set to 0x0900". On the UCX II, register 3F00 is only written from the host to the device and is used to get the device to tell us about any registers that changed, I didn't ever see it sent from the device to the host. So something is a bit different here.

My next question is does the 802 ever send any different messages, or is it always the same exact bytes F0 00 20 0D 10 00 00 12 00 78 0B F7?

huddx01 commented 4 months ago

alsarawio: command not found

make sure you are inside the path where the built files are located in terminal and try a "./" before alsarawio and oscmix.

example in my case:

meg33@debvm:~/Projekte/oscmix-dev-generic$ amidi -l
Dir Device    Name
IO  hw:1,0,0  Fireface 802 (xxxxxxxx) Port 1
IO  hw:1,0,1  Fireface 802 (xxxxxxxx) Port 2
meg33@debvm:~/Projekte/oscmix-dev-generic$ ./alsarawio 1,0,1 ./oscmix

in second terminal, open the gtk ui:

meg33@debvm:~/Projekte/oscmix-dev-generic$ GSETTINGS_SCHEMA_DIR=$PWD/gtk ./gtk/oscmix-gtk

Sojuzstudio commented 4 months ago

It somehow works. Gui opens and signals are displayed. But the controls do not work, i.e. the device cannot be controlled

sojuzstudio@sojuzstudio-System-Product-Name:~/oscmix-dev-generic$ GSETTINGS_SCHEMA_DIR=$PWD/gtk ./gtk/oscmix-gtk

(oscmix-gtk:28611): Gtk-WARNING **: 23:57:31.478: Theme directory places/128 of theme ubuntustudio-dark has no size field

(oscmix-gtk:28611): Gtk-WARNING **: 23:57:31.478: Theme directory places/scalable of theme ubuntustudio-dark has no size field

(oscmix-gtk:28611): dconf-WARNING **: 23:57:31.520: unable to open file '/etc/dconf/db/site': Tiedoston “/etc/dconf/db/site” avaaminen epäonnistui: open() epäonnistui: Tiedostoa tai hakemistoa ei ole; expect degraded performance

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.336: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.375: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.415: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.455: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.495: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.534: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.574: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.614: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.654: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:32.694: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.559: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.600: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.642: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.684: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.725: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.767: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.809: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.850: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.892: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:33.934: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.732: value "21" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.769: value "22" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.807: value "23" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.844: value "24" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.881: value "25" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.919: value "26" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.956: value "27" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:34.994: value "28" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:35.032: value "29" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

(oscmix-gtk:28611): GLib-GObject-CRITICAL **: 23:57:35.069: value "30" of type 'gint' is invalid or out of range for property 'id' of type 'gint'

huddx01 commented 4 months ago

mic/inst on off should work... but yes... as i told, its in WIP state ;-)

Sojuzstudio commented 4 months ago

You have done an amazing job. Let's see where this goes in the future.

huddx01 commented 3 months ago

I just fiddled some code, so the channel FX and global FX will work as soon as i clean up my code a little and pull it to the branch. What does not work atm is the feedback regarding the controls to gtk. I mean the state from the device -> whatever OSC gui... But this should not be soooo hard, i think i have an idea weher too look in the code for this.

@Sojuzstudio What would be interesting, to verify that really all 30 Channels work (although its in CC-Mode) - mcf mentioned this above. And as i remember, you asked too in the RME Forum... I do not have any ADAT Receivers atm, where i could test if a real signal is coming out from channels greater than 22...

If you have the possibility - could you please check/verify, if there is a real signal coming out on ADAT 15/16?

Keep in mind, that you have to assign/move/click the (Mute) buttons/sliders first, as - as mentioned - the unit only reacts on on the controls atm...

If you set it up, like in my pic - the Phones 11/12 the Mute button works. So, does the ADAT 13/14 and 15/16 work, too? 30chCheck

Sojuzstudio commented 3 months ago

I currently do not have any ADAT receiving devices in use. I only have ADAT transmitting microphone preamps. I don't know if you could connect the 802 ADAT output to the UFX+ ADAT input if they are both connected to the same computer. It requires a certain amount of connections, which is not possible at the moment. I'll see if I have time at some point, but I can't say when.

huddx01 commented 3 months ago

I don't know if you could connect the 802 ADAT output to the UFX+ ADAT input if they are both connected to the same computer.

If you connect ADAT 2 OUT Port from the 802 to an ADAT IN Port to your UFX+ via an optical cable, it should work, even when connected to same computer. On UFX+ you could route the ADAT IN to a headphone or sth...

huddx01 commented 3 months ago

(oscmix-gtk:28611): Gtk-WARNING **: 23:57:31.478: Theme directory places/128 of theme ubuntustudio-dark has no size field

These warnings and some more details should be fixed...

Sojuzstudio commented 3 months ago

I'll look into these things later. I will get back to.

huddx01 commented 3 months ago

@Sojuzstudio

Current wip state regarding FF802 can be checked now via the web UI here: https://huddx01.github.io/oscmix/

So, no need to compile anything...

Easiest way: Use a current Chrome browser and use the MIDI Connection Type.

(for Websocket option: you would need to setup a websocket bridge...)

Sojuzstudio commented 3 months ago

I tried the Web UI. It Mostly worked. I can adjust the levels, connect the phantom. Of course, it's still experimental.