1 (edited by Be.0 2022-04-20 09:11:05)

Topic: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

I am working on reverse engineering TotalMix FX to create a functionally equivalent application for Linux. I was pleased to figure out that the USB control transfer protocol that TotalMix FX uses is identical between PC mode and Class Compliant mode. Previously I thought reverse engineering TotalMix FX in CC mode would require an iPad and a hardware USB sniffer, both of which are expensive and I'd have no other uses for, which is why I didn't try until now. I can simply route the Babyface Pro to a Windows VM from a Linux host and watch the USB traffic on the Linux host in Wireshark.

I was disappointed to find that the parametric EQ and low cut controls make use of USB Bulk Endpoint 10 which is not present in the USB descriptors in class compliant mode. I know TotalMix FX for iPad cannot use the EQs; I suppose it would not be able to make use of that vendor defined class interface if it was available. However, it would be useful for Linux to expose the Bulk endpoint for the EQs in class compliant mode. Could that be added in a firmware update? Is there a technical reason that the EQs are not using USB Control messages like the rest of TotalMix FX?

2

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

Your link goes to Echo/Reverb. EQ is possible in Class Compliant mode.

Regards
Matthias Carstens
RME

3 (edited by Be.0 2022-04-20 11:20:50)

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

Thank you for the fast reply. That is relieving to know. I am still puzzled how the EQs are set in class compliant mode. I repeated manipulating the EQs in TotalMix FX on Windows to make sure I wasn't missing something. Again I saw those outgoing bulk messages to endpoint 10, but that endpoint doesn't exist in class compliant mode's USB descriptors. The filter I used in Wireshark was

usb.endpoint_address.direction == 0 && usb.transfer_type != 0

to see all the outgoing USB traffic except the isochronous audio data. Do you have any hints to point me in the right direction?

Besides the isochronous audio data, I don't see any USB data that is continuously varying with the audio signals. I expected to find that for metering, but I was wrong about that. Does TotalMix FX duplicate the mixing done on the audio interface in software to calculate the meter levels?

I do see USB bulk input data continuously polled on Windows, but the data returned for each bRequest value seems to be constant, or at least I haven't figured out what changes that data.

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

MC wrote:

Your link goes to Echo/Reverb. EQ is possible in Class Compliant mode.

Ah, I see that in Sweetwater's demonstration of TotalMix FX for iPad.

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

At this point I have figured out how to control all the features of the Babyface Pro (mixing matrix, input & output levels, switches) except for the onboard EQs. Any tips pointing in the right direction, or better yet documentation, would be much appreciated.

6 (edited by Be.0 2022-04-21 00:52:59)

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

The guy who previously worked on Babyface Pro support for Linux said that he observed a bunch of MIDI signals going between an iPad and the Babyface Pro. I have only seen MIDI signals when I after configuring the Babyface as a MIDI device in the Misc tab of TotalMix's settings, which from the manual I think is for communicating with an Octamic XTC. Can the Babyface Pro be controlled via MIDI without TotalMix FX running on the host?

7

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

Indeed on iOS TM FX talks to the hardware via MIDI.

Regards
Matthias Carstens
RME

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

Interesting. Does iOS TotalMix FX only use MIDI to talk to the hardware or does it only use MIDI for the EQs and USB control messages for the rest? Are these MIDI messages documented somewhere? Are they system exclusive, regular 3 byte MIDI messages, or both? I tried sending the MIDI commands documented on pages 71-72 of the Babyface Pro manual to both the MIDI ports present in class compliant mode, but these have no effects. I figure that those MIDI commands in the manual are interpreted by TotalMix FX running on Windows or macOS rather than the firmware.

9

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

The internal communication is of no interest for users and therefore not documented. Please understand that we will not actively help you finding all the 'secrets'. We intentionally did not publish all the communication protocols, for various reasons.

Regards
Matthias Carstens
RME

10 (edited by Be.0 2022-04-21 04:47:58)

Re: Babyface Pro USB Bulk endpoint for EQs in class compliant mode

Well, knowing that it uses MIDI on iOS is very helpful. This means that an expensive hardware USB traffic analyzer probably isn't required because there are iOS applications that can intercept MIDI. I could get a cheap old iPad on eBay to do this reverse engineering.

The communication protocol is of interest to Linux users so long as you don't make TotalMix FX work on Linux (which, to be clear, I'm not asking for). I think Linux users would stop bugging you about software support if you documented how to make full use of RME devices in class compliant mode. smile