Topic: OSC control of TotalMix volume - rounding bug/error
Hello, I'm doing some experiments with OSC on TotalMix FX with my Fireface UCX.
However it appears that TotalMix FX is rounding some of the floats it sends/receives via OSC incorrectly.
For example the "/1/mastervolume" message from TotalMix has a 32-bit float representing the control value.
But sending these exact same bytes back as a "/1/mastervolume" message results in the volume value being slightly higher than it ought to be and another "/1/mastervolume" message with a slightly larger value (0.1% error).
More precisely:
With Master Out set to Headphones (7/8) on Fireface UCX
If you send:
/1/mastervolume X
Response from TotalMix:
/1/mastervolume X + E
where the error E = 0.0009765 * X - 8.679E-09 [ for 0 < X < 1 ]
(for max/min values of 0.0 and 1.0 there is no error)
For example:
1. Double-click master volume in TotalMix to reset volume to 0db
2. TotalMix sends a "/1/mastervolume" message with the float 0x3F51344D = 0.8172043...
3. Send this exact float 0x3F51344D back to TotalMix in "/1/mastervolume" message
4. TotalMix sends a "/1/mastervolume" message with the float 0x3F5168A6 = 0.8180031...
The test program I have written is simply echoing back the exact same byte values and I have verified this by sniffing the OSC messages with Wireshark.
If you continue this process the volume slider slowly goes up!
We can actually send the float value X - E instead and TotalMix sets and responds with the correct value X (to 6 decimal places).
So this is not just rounding inaccuracy but a systematic error that can be fixed! Thanks
Setup:
Fireface UCX rev 46
TotalMix FX 1.12 (DSP-SW 24)
USB Driver version: 1.0089
Windows 10 x64