| 1 |
Protocol details for MOTU "mark 3" devices, obtained in the first instance |
|---|
| 2 |
using an 828 Mk 3. |
|---|
| 3 |
|
|---|
| 4 |
Version: 20100517-1 |
|---|
| 5 |
Author: Jonathan Woithe |
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
Audio data streaming packets |
|---|
| 9 |
---------------------------- |
|---|
| 10 |
|
|---|
| 11 |
It appears the streaming packets in the "mark 3" devices use a very similar |
|---|
| 12 |
protocol to the earlier interfaces. Each iso packet begins with a 64-bit |
|---|
| 13 |
CIP header. Following this are N data blocks, where N varies according to |
|---|
| 14 |
the sample rate selected (8 for 1x, 16 for 2x, 32 for 4x). Each data block |
|---|
| 15 |
comprises a 32-bit SPH field (consisting of a standard SPH timestamp), 48 |
|---|
| 16 |
bits of control/MIDI data and then the audio data itself. The audio data is |
|---|
| 17 |
sent as packed big-endian signed integer data, as for the earlier |
|---|
| 18 |
interfaces. |
|---|
| 19 |
|
|---|
| 20 |
At 1x rates, the maximum packet size sent to the MOTU is 0x328 (808) bytes: |
|---|
| 21 |
8 bytes CIP header |
|---|
| 22 |
8 data blocks |
|---|
| 23 |
Each data block contains: |
|---|
| 24 |
4 bytes SPH timestamp |
|---|
| 25 |
6 bytes control/MIDI data |
|---|
| 26 |
90 bytes of audio data (30 channels) |
|---|
| 27 |
The audio data is ordered as follows: phones, analog 1-8, main out, SPDIF, |
|---|
| 28 |
ADAT1 1-8, ADAT2 1-8. |
|---|
| 29 |
|
|---|
| 30 |
At 1x rates the MOTU sends 0x388 (904) bytes per packet, providing space |
|---|
| 31 |
for 34 audio channels (order to be investigated): mic/guitar 1-2, analog |
|---|
| 32 |
1-8, return 1-2, reverb 1-2, SPDIF, Unknown 1-2, ADAT1 1-8, ADAT2 1-8. |
|---|
| 33 |
|
|---|
| 34 |
At 2x rates, packets sent to the MOTU have a maximum size of 0x4c8 (1224) |
|---|
| 35 |
bytes while those sent by the MOTU are 0x0588 (1416) bytes. 16 blocks are |
|---|
| 36 |
send in each packet. 22 channels sent to the MOTU (order to be confirmed): |
|---|
| 37 |
phones, analog 1-8, main out, SPDIF, ADAT1 1-4, ADAT2 1-4. There is space |
|---|
| 38 |
for 26 channels sent from the MOTU (order to be investigated): analog 1-8, |
|---|
| 39 |
mic/guitar 1-2, SPDIF, return 1-2, reverb 1-2?, ADAT1 1-4, ADAT2 1-4, |
|---|
| 40 |
unknown 1-2. |
|---|
| 41 |
|
|---|
| 42 |
At 4x rates 0x0508 (1288) bytes are sent to the MOTU and 0x0688 (1672) are |
|---|
| 43 |
sent from the MOTU. For sending to the MOTU there are 32 blocks with room |
|---|
| 44 |
for 10 audio channels: unknown 1-2, analog 1-8. The MOTU sends 14 audio |
|---|
| 45 |
channels (order to be investigated): analog 1-8, mic/guitar 1-2, return 1-2, |
|---|
| 46 |
unknown 1-2. |
|---|
| 47 |
|
|---|
| 48 |
The following matrix represents the current best guess as to the layout of |
|---|
| 49 |
the audio channels in the iso data. Offset refers to the number of bytes |
|---|
| 50 |
from the start of the data block. "?" signifies that the channel assignment |
|---|
| 51 |
is yet to be confirmed and/or is positioned as a result of educated |
|---|
| 52 |
guesswork. |
|---|
| 53 |
|
|---|
| 54 |
Offset 1x Rates 2x Rates 4x Rates |
|---|
| 55 |
Playback Capture Playback Capture Playback Capture |
|---|
| 56 |
------------------------------------------------------------------------- |
|---|
| 57 |
10 Phones-L Mic-1? Phones-L Mic-1? Unknown-1 Mic-1? |
|---|
| 58 |
13 Phones-R Mic-2? Phones-R Mic-2? Unknown-2 Mic-2? |
|---|
| 59 |
16 Analog 1 Analog 1 Analog 1 Analog 1 Analog 1 Analog 1 |
|---|
| 60 |
19 Analog 2 Analog 2 Analog 2 Analog 2 Analog 2 Analog 2 |
|---|
| 61 |
22 Analog 3 Analog 3 Analog 3 Analog 3 Analog 3 Analog 3 |
|---|
| 62 |
25 Analog 4 Analog 4 Analog 4 Analog 4 Analog 4 Analog 4 |
|---|
| 63 |
28 Analog 5 Analog 5 Analog 5 Analog 5 Analog 5 Analog 5 |
|---|
| 64 |
31 Analog 6 Analog 6 Analog 6 Analog 6 Analog 6 Analog 6 |
|---|
| 65 |
34 Analog 7 Analog 7 Analog 7 Analog 7 Analog 7 Analog 7 |
|---|
| 66 |
37 Analog 8 Analog 8 Analog 8 Analog 8 Analog 8 Analog 8 |
|---|
| 67 |
40 MainOut-L Return-1? MainOut-L Return-1? Return-1? |
|---|
| 68 |
43 MainOut-R Return-2? MainOut-R Return-2? Return-2? |
|---|
| 69 |
46 SPDIF-1 SPDIF-1? SPDIF-1? SPDIF-1? Unknown-1 |
|---|
| 70 |
49 SPDIF-2 SPDIF-2? SPDIF-2? SPDIF-2? Unknown-2 |
|---|
| 71 |
52 ADAT1-1 Reverb-1? ADAT1-1? Reverb-1? |
|---|
| 72 |
55 ADAT1-2 Reverb-2? ADAT1-2? Reverb-2? |
|---|
| 73 |
58 ADAT1-3 Unknown-1? ADAT1-3? ADAT1-1? |
|---|
| 74 |
61 ADAT1-4 Unknown-2? ADAT1-4? ADAT1-2? |
|---|
| 75 |
64 ADAT1-5 ADAT1-1? ADAT2-1? ADAT1-3? |
|---|
| 76 |
67 ADAT1-6 ADAT1-2? ADAT2-2? ADAT1-4? |
|---|
| 77 |
70 ADAT1-7 ADAT1-3? ADAT2-3? ADAT2-1? |
|---|
| 78 |
73 ADAT1-8 ADAT1-4? ADAT2-4? ADAT2-2? |
|---|
| 79 |
76 ADAT2-1 ADAT1-5? ADAT2-3? |
|---|
| 80 |
79 ADAT2-2 ADAT1-6? ADAT2-4? |
|---|
| 81 |
82 ADAT2-3 ADAT1-7? Unknown-1? |
|---|
| 82 |
85 ADAT2-4 ADAT1-8? Unknown-2? |
|---|
| 83 |
88 ADAT2-5 ADAT2-1? |
|---|
| 84 |
91 ADAT2-6 ADAT2-2? |
|---|
| 85 |
94 ADAT2-7 ADAT2-3? |
|---|
| 86 |
97 ADAT2-8 ADAT2-4? |
|---|
| 87 |
100 ADAT2-5? |
|---|
| 88 |
103 ADAT2-6? |
|---|
| 89 |
106 ADAT2-7? |
|---|
| 90 |
109 ADAT2-8? |
|---|
| 91 |
------------------------------------------------------------------------ |
|---|
| 92 |
#ch 30 34 22 26 10 14 |
|---|
| 93 |
|
|---|
| 94 |
When an optical port is configured in Toslink mode, the two Toslink channels |
|---|
| 95 |
take the place of that port's 8 ADAT channels in the data stream. That is, |
|---|
| 96 |
ADAT-x 1-8 are removed and in their place Toslink-A 1-2 are added. So in |
|---|
| 97 |
the case of 1x playback, the Toslink channels appear at offset 52, with |
|---|
| 98 |
ADAT-B's channels commencing at offset 58 (the total packet size in this |
|---|
| 99 |
case being 0x02c8 bytes). |
|---|
| 100 |
|
|---|
| 101 |
Unlike previous MOTU generations, the Toslink outputs in the Mark 3 devices |
|---|
| 102 |
are present as channels in their own right - they do not mirror the SPDIF |
|---|
| 103 |
channel. |
|---|
| 104 |
|
|---|
| 105 |
|
|---|
| 106 |
Device control |
|---|
| 107 |
-------------- |
|---|
| 108 |
|
|---|
| 109 |
Optical port modes |
|---|
| 110 |
|
|---|
| 111 |
The modes of the two optical ports can be controlled independently. The |
|---|
| 112 |
primary mechanism for this is via a quadlet write to register |
|---|
| 113 |
0xfffff0000c94. |
|---|
| 114 |
|
|---|
| 115 |
Bit 22: optical port B output mode (0=ADAT, 1=Toslink) |
|---|
| 116 |
Bit 20: optical port B input mode (0=ADAT, 1=Toslink) |
|---|
| 117 |
Bit 18: optical port A output mode (0=ADAT, 1=Toslink) |
|---|
| 118 |
Bit 16: optical port A input mode (0=ADAT, 1=Toslink) |
|---|
| 119 |
Bit 9: optical port B output enabled (0=disabled, 1=enabled) |
|---|
| 120 |
Bit 8: optical port A output enabled (0=disabled, 1=enabled) |
|---|
| 121 |
Bit 1: optical port B input enabled (0=disabled, 1=enabled) |
|---|
| 122 |
Bit 0: optical port A input enabled (0=disabled, 1=enabled) |
|---|
| 123 |
|
|---|
| 124 |
Other areas of the driver also appear to refresh the device status with |
|---|
| 125 |
writes to other registers at the time the optical mode is updated: |
|---|
| 126 |
0xfffff0000c04 |
|---|
| 127 |
0xfffff0000c60 - 0xfffff0000c6c (ASCII name of clock source) |
|---|
| 128 |
0xfffff0000c94 |
|---|
| 129 |
0xfffff0000b14 |
|---|
| 130 |
0xfffff0000b38 |
|---|
| 131 |
0xfffff0000b3c |
|---|
| 132 |
0xfffff0000b04 |
|---|
| 133 |
0xfffff0000b08 |
|---|
| 134 |
0xfffff0000b38 |
|---|
| 135 |
0xfffff0000b3c |
|---|
| 136 |
0xfffff0000b1c |
|---|
| 137 |
It is not known whether these additional writes are necessary. |
|---|
| 138 |
|
|---|
| 139 |
|
|---|
| 140 |
Clock source control and sample rate |
|---|
| 141 |
|
|---|
| 142 |
The clock source is set with a quadlet write to bits 0, 1, 3 and 4 of |
|---|
| 143 |
register 0xfffff0000b14. Values for bits 4-3-1-0: |
|---|
| 144 |
0-0-0-0 = internal |
|---|
| 145 |
0-0-1-0 = SMTPE |
|---|
| 146 |
0-0-0-1 = Word clock |
|---|
| 147 |
1-0-0-0 = SPDIF |
|---|
| 148 |
1-1-0-0 = ADAT port A / Toslink-A (depending on current optical port mode) |
|---|
| 149 |
1-1-0-1 = ADAT port B / Toslink-B (depending on current optical port mode) |
|---|
| 150 |
|
|---|
| 151 |
The sample rate is selected using bits 10-8 of register 0xfffff0000b14: |
|---|
| 152 |
0x0 = 44.1 kHz |
|---|
| 153 |
0x1 = 48 kHz |
|---|
| 154 |
0x2 = 88.2 kHz |
|---|
| 155 |
0x3 = 96 kHz |
|---|
| 156 |
0x4 = 176.4 kHz |
|---|
| 157 |
0x5 = 192 kHz |
|---|
| 158 |
|
|---|
| 159 |
Bits 25 and 24 of register 0xfffff0000b14 are used in connection with |
|---|
| 160 |
streaming control (see separate section). All other bits not mentioned |
|---|
| 161 |
are set to zero. |
|---|
| 162 |
|
|---|
| 163 |
Writes to other registers (as for ADAT modes) accompany the setting of |
|---|
| 164 |
register 0xfffff0000b14. |
|---|
| 165 |
|
|---|
| 166 |
|
|---|
| 167 |
MainOut/Phones assign |
|---|
| 168 |
|
|---|
| 169 |
Register 0xfffff0000c04 controls the MainOut assign via bits 7-4: |
|---|
| 170 |
0x0 = MainOut |
|---|
| 171 |
0x1 = Ana 1-2 |
|---|
| 172 |
0x2 = Ana 3-4 |
|---|
| 173 |
0x3 = Ana 5-6 |
|---|
| 174 |
0x4 = Ana 7-8 |
|---|
| 175 |
0x5 = SPDIF |
|---|
| 176 |
0x6 = Phones |
|---|
| 177 |
0x7 = ADAT-A 1-2 (or Toslink if ADAT-A optical out mode is Toslink) |
|---|
| 178 |
0x8 = ADAT-A 3-4 |
|---|
| 179 |
0x9 = ADAT-A 5-6 |
|---|
| 180 |
0xa = ADAT-A 7-8 |
|---|
| 181 |
0xb = ADAT-B 1-2 (or Toslink if ADAT-B optical out mode is Toslink) |
|---|
| 182 |
0xc = ADAT-B 3-4 |
|---|
| 183 |
0xd = ADAT-B 5-6 |
|---|
| 184 |
0xe = ADAT-B 7-8 |
|---|
| 185 |
|
|---|
| 186 |
Bits 3-0 of register 0xfffff0000c04 control the Phones assign. The meaning |
|---|
| 187 |
of the bit combinations is as per the MainOut assign case. |
|---|
| 188 |
|
|---|
| 189 |
Bits 11-8 of register 0xfffff0000c04 control the "Return" assign. Again, |
|---|
| 190 |
the meaning of the bit combinations is as per the MainOut assign case. |
|---|
| 191 |
|
|---|
| 192 |
All other bits in register 0xfffff0000c04 appear to be zero at present. |
|---|
| 193 |
|
|---|
| 194 |
|
|---|
| 195 |
Streaming control |
|---|
| 196 |
|
|---|
| 197 |
Bits 31 to 16 of register 0xfffff0000b00 control the streaming channels |
|---|
| 198 |
in the same way as for earlier MOTU devices. |
|---|
| 199 |
|
|---|
| 200 |
To start streaming: |
|---|
| 201 |
- a value of 0x00000002 is written to register 0xfffff0000b10. |
|---|
| 202 |
- bit 24 of register 0xfffff0000b14 is set to 1 (other bits are set to |
|---|
| 203 |
their current values) |
|---|
| 204 |
- a bunch of other registers are written to which, given experience with |
|---|
| 205 |
earlier MOTU interfaces, are not strictly required |
|---|
| 206 |
- register 0xfffff0000c04 is polled. A result of 0x00000111 requires |
|---|
| 207 |
another poll. Polling stops when the value is 0x00000303. |
|---|
| 208 |
- register 0xfffff0000b14 is read. |
|---|
| 209 |
- bits 24 and 25 in register 0xfffff0000b14 are set (other bits remain |
|---|
| 210 |
unchanged) |
|---|
| 211 |
- another bunch of (possibly inconsequential) registers is written to. |
|---|
| 212 |
- register 0xfffff0000b14 is read again. |
|---|
| 213 |
- writes to the same collection of registers again. |
|---|
| 214 |
|
|---|
| 215 |
To stop streaming: |
|---|
| 216 |
- bit 25 of register 0xfffff0000b14 is cleared (other bits remain |
|---|
| 217 |
unchanged; this includes leaving bit 24 set to 1) |
|---|
| 218 |
- register 0xfffff0000b00 is used to stop streaming in the same way as for |
|---|
| 219 |
earlier MOTU interfaces |
|---|
| 220 |
- write to other registers of potentially little value |
|---|
| 221 |
- register 0xfffff0000b14 has bit 24 cleared (all other bits remain |
|---|
| 222 |
unchanged, so bits 25 and 24 are both zero) |
|---|
| 223 |
- immediately, register 0xfffff0000b14 has bit 24 set (all other bits |
|---|
| 224 |
remain unchanged). |
|---|
| 225 |
- other registers are read again. |
|---|
| 226 |
|
|---|
| 227 |
It appears based on this that the streaming control of the Mark3 MOTU |
|---|
| 228 |
devices is the same as for previous generations. |
|---|
| 229 |
|
|---|
| 230 |
|
|---|
| 231 |
CuemixFX control |
|---|
| 232 |
---------------- |
|---|
| 233 |
|
|---|
| 234 |
Control of the CuemixFX system is via writes starting at register |
|---|
| 235 |
0xffff00010000. Either 1, 2 or 3 quadlets are written depending on what is |
|---|
| 236 |
being done. Each packet includes a serial number which is incremented after |
|---|
| 237 |
sending each control packet. The same serial number counter is used |
|---|
| 238 |
regardless of the type of control packet being sent. |
|---|
| 239 |
|
|---|
| 240 |
|
|---|
| 241 |
CuemixFX heartbeats |
|---|
| 242 |
------------------- |
|---|
| 243 |
|
|---|
| 244 |
The MOTU periodically sends a heartbeat packet back to the PC. This is sent |
|---|
| 245 |
to address 0x000300000000 and consists of a single quadlet length write |
|---|
| 246 |
block request of the following form: |
|---|
| 247 |
|
|---|
| 248 |
00 aa 00 00 |
|---|
| 249 |
|
|---|
| 250 |
"aa" is the serial number ranging from 0x00 to 0xff. |
|---|
| 251 |
|
|---|
| 252 |
It appears that heartbeat packets are sometimes sent to the MOTU. These take |
|---|
| 253 |
the form of single-quadlet writes to the CuemixFX address. The quadlet |
|---|
| 254 |
takes the following form: |
|---|
| 255 |
|
|---|
| 256 |
02 aa 00 00 |
|---|
| 257 |
|
|---|
| 258 |
"aa" is the serial number of the packet ranging from 0x00 to 0xff. |
|---|
| 259 |
|
|---|
| 260 |
It's not yet certain what purpose these packets serve and whether they are |
|---|
| 261 |
in fact necessary. It is also not yet known whether the MOTU or the PC |
|---|
| 262 |
initiates the process (that is, which one sends a packet with a given serial |
|---|
| 263 |
number first). |
|---|
| 264 |
|
|---|
| 265 |
|
|---|
| 266 |
Pedal events |
|---|
| 267 |
------------ |
|---|
| 268 |
|
|---|
| 269 |
When a pedal event occurs the MOTU sends a quadlet write request to address |
|---|
| 270 |
0x000300000000 on the PC. The format of the quadlet is as follows. |
|---|
| 271 |
|
|---|
| 272 |
bb 00 00 c2 |
|---|
| 273 |
|
|---|
| 274 |
"bb" is 0 for a "pedal up" event and 1 for a "pedal down" event. The pedal |
|---|
| 275 |
is "down" when the pedal switch is closed. |
|---|
| 276 |
|
|---|
| 277 |
|
|---|
| 278 |
CuemixFX variable controls |
|---|
| 279 |
-------------------------- |
|---|
| 280 |
|
|---|
| 281 |
The control of continuously variable controls (for example, faders, pan |
|---|
| 282 |
controls) is by way of 3-quadlet writes to the CuemixFX register. The |
|---|
| 283 |
format of these writes is as follows: |
|---|
| 284 |
|
|---|
| 285 |
02 aa 66 bb - cc dd ee v1 - v2 v3 v4 00 |
|---|
| 286 |
|
|---|
| 287 |
where: |
|---|
| 288 |
aa = packet serial number as previously described |
|---|
| 289 |
bb = the bus/channel number (0x00 = mix bus 1, mic 1) |
|---|
| 290 |
cc-dd-ee = the key of the control being changed |
|---|
| 291 |
v1-v4 = the value being written. v1 is the most-significant byte. The |
|---|
| 292 |
value appears to be a 32-bit float. That is, v1..v4 is a big |
|---|
| 293 |
endian 32-bit float. |
|---|
| 294 |
|
|---|
| 295 |
Keys presently identified are as follows. |
|---|
| 296 |
|
|---|
| 297 |
00-01-02 = Bus reverb send (0-0x3f800000) |
|---|
| 298 |
00-0c-01 = Input reverb send (0 ("-inf") to 0x3f800000 ("0 dB")). bb is |
|---|
| 299 |
the zero-based input channel index for this key. |
|---|
| 300 |
01-01-02 = Bus reverb return (0-0x3f800000) |
|---|
| 301 |
02-00-01 = Input trim control (mic inputs: 0 ("+0 dB") - 0x42540000 ("+53 |
|---|
| 302 |
dB"); line inputs: 0xc2c00000 ("-96") - 0x41b00000 ("+22")). |
|---|
| 303 |
For this key, bb is the zero-based channel index. |
|---|
| 304 |
02-00-02 = Bus master fader |
|---|
| 305 |
02-mm-02 = Channel pan. mm is the standard channel index. Values range |
|---|
| 306 |
from 0xbf800000 (L) to 0x3f800000 (R). |
|---|
| 307 |
03-mm-02 = Channel fader. mm is the channel index starting at 0x02 for |
|---|
| 308 |
the first channel (on the 828-mk3 this is mic 1). Values range |
|---|
| 309 |
from 0 (-inf) to 0x3f800000 (0 dB). |
|---|
| 310 |
05-mm-02 = Channel balance (active only for stereo paired channels). |
|---|
| 311 |
Values are from 0xbf800000 ("-1") to 0x3f800000 ("1"). |
|---|
| 312 |
06-mm-02 = Channel width (active only for MS-paired channels). Values are |
|---|
| 313 |
from 0 ("0") to 0x3f800000 ("1"). |
|---|
| 314 |
07-00-00 = Focus select. v4 = 0x01 for channel select, 0x03 for bus |
|---|
| 315 |
select. For channel select one is focusing the actual input, |
|---|
| 316 |
not the channel in the current bus. Therefore the bus select |
|---|
| 317 |
byte (bb) is always zero for this key. v1 = 0x00 (mic 1 or 2), |
|---|
| 318 |
0x01 (ana 1 or 2) and so forth for channel pairs. Bus focus |
|---|
| 319 |
focuses the output assigned to the bus, not the bus itself. v1 |
|---|
| 320 |
in this case is 0x00 for Main, 0x01 for Analog 1-2 and so |
|---|
| 321 |
forth. Again the bus select byte is always zero. |
|---|
| 322 |
v2 and v3 are always zero. |
|---|
| 323 |
|
|---|
| 324 |
Channel EQ controls: |
|---|
| 325 |
02-yy-01 = Input EQ frequency. Value range 0x41a00001 (20 Hz) to |
|---|
| 326 |
0x469c4004 (20 kHz) |
|---|
| 327 |
03-yy-01 = Input EQ gain. Value range 0xc1a00000 (-20 dB) to 0x41a00000 |
|---|
| 328 |
(+20 dB) |
|---|
| 329 |
04-yy-01 = Input EQ Q. Value range 0x3c23d70a (0.01) to 0x40400000 (3.00) |
|---|
| 330 |
02-yy-03 = Output EQ frequency. Value range 0x41a00001 (20 Hz) to |
|---|
| 331 |
0x469c4004 (20 kHz) |
|---|
| 332 |
03-yy-03 = Output EQ gain. Value range 0xc1a00000 (-20 dB) to 0x41a00000 |
|---|
| 333 |
(+20 dB) |
|---|
| 334 |
04-yy-03 = Output EQ Q. Value range 0x3c23d70a (0.01) to 0x40400000 (3.00) |
|---|
| 335 |
The EQ number ("yy" in this table) is as follows: |
|---|
| 336 |
02 = EQ F |
|---|
| 337 |
03 = EQ A |
|---|
| 338 |
04 = EQ C |
|---|
| 339 |
05 = EQ D |
|---|
| 340 |
06 = EQ E |
|---|
| 341 |
07 = EQ B |
|---|
| 342 |
80 = EQ G |
|---|
| 343 |
|
|---|
| 344 |
Input channel dynamics controls: |
|---|
| 345 |
01-0a-01 = compressor threshold. Value range 0xc2400000 (-48 dB) to |
|---|
| 346 |
0x00000000 (0 dB). |
|---|
| 347 |
02-0a-01 = compressor ratio. Value range 0x3f800000 (1.0:1) to |
|---|
| 348 |
0x41200000 (10.0:1). |
|---|
| 349 |
03-0a-01 = compressor attack. Value range 0x41200000 (10 ms) to |
|---|
| 350 |
0x42c80000 (100 ms) |
|---|
| 351 |
04-0a-01 = compressor release. Value range 0x41200000 (10 ms) to |
|---|
| 352 |
0x44fa0000 (2 s) |
|---|
| 353 |
05-0a-01 = compressor trim. Value range 0xc0c00000 (-6 dB) to |
|---|
| 354 |
0x00000000 (0 dB) |
|---|
| 355 |
02-0b-01 = leveler makeup gain. Value range 0x00000000 to 0x42c80000. |
|---|
| 356 |
03-0b-01 = leveler gain reduction. Value range 0x00000000 to 0x42c80000. |
|---|
| 357 |
|
|---|
| 358 |
Output channel dynamics controls: |
|---|
| 359 |
01-09-03 = compressor threshold. Value range 0xc2400000 (-48 dB) to |
|---|
| 360 |
0x00000000 (0 dB). |
|---|
| 361 |
02-09-03 = compressor ratio. Value range 0x3f800000 (1.0:1) to |
|---|
| 362 |
0x41200000 (10.0:1). |
|---|
| 363 |
03-09-03 = compressor attack. Value range 0x41200000 (10 ms) to |
|---|
| 364 |
0x42c80000 (100 ms) |
|---|
| 365 |
04-09-03 = compressor release. Value range 0x41200000 (10 ms) to |
|---|
| 366 |
0x44fa0000 (2 s) |
|---|
| 367 |
05-09-03 = compressor trim. Value range 0xc0c00000 (-6 dB) to |
|---|
| 368 |
0x00000000 (0 dB) |
|---|
| 369 |
02-0a-03 = leveler makeup gain. Value range 0x00000000 to 0x42c80000. |
|---|
| 370 |
03-0a-03 = leveler gain reduction. Value range 0x00000000 to 0x42c80000. |
|---|
| 371 |
|
|---|
| 372 |
Channel index values (mm in the above tables) are as follows on the 828 Mk3. |
|---|
| 373 |
|
|---|
| 374 |
0x02 = mic 1 |
|---|
| 375 |
0x03 = mic 2 |
|---|
| 376 |
0x04 - 0x0b = analog 1-8 |
|---|
| 377 |
0x0c - 0x0d = SPDIF 1 and 2 |
|---|
| 378 |
0x0e - 0x15 = ADAT A 1-8 |
|---|
| 379 |
0x16 - 0x1c = ADAT B 1-8 |
|---|
| 380 |
|
|---|
| 381 |
If a channel pair is flagged as a stereo pair then only the first control |
|---|
| 382 |
register is written to. |
|---|
| 383 |
|
|---|
| 384 |
Reverb parameters: |
|---|
| 385 |
02-00-04 = predelay. 0x00000000 (0 ms) to 0x42c80000 (100 ms). |
|---|
| 386 |
03-00-04 = shelf filter frequency. 0x447a0000 (1 kHz) to 0x469c4000 (20 |
|---|
| 387 |
kHz). |
|---|
| 388 |
04-00-04 = shelf filter cut. 0xc2200000 (-40 dB) to 0x00000000 (0 dB). |
|---|
| 389 |
05-00-04 = reverb time. 0x42c80000 (100 ms) to 0x476a6000 (60 sec). |
|---|
| 390 |
06-00-04 = reverb design: low time. 0x00000000 (0%) to 0x42c80000 (100%). |
|---|
| 391 |
07-00-04 = reverb design: mid time. 0x00000000 (0%) to 0x42c80000 (100%). |
|---|
| 392 |
08-00-04 = reverb design: high time. 0x00000000 (0%) to 0x42c80000 |
|---|
| 393 |
(100%). |
|---|
| 394 |
09-00-04 = reverb design: crossover low. 0x42c80000 (100 Hz) to |
|---|
| 395 |
0x469c4004 (20 kHz). |
|---|
| 396 |
0a-00-04 = reverb design: crossover high. 0x447a0000 (1 kHz) to |
|---|
| 397 |
0x469c4004 (20 kHz). |
|---|
| 398 |
0b-00-04 = reverb design: width. 0xbf800000 (-100%) to 0x3f800000 |
|---|
| 399 |
(+100%). |
|---|
| 400 |
0d-00-04 = early reflections size. 0x42480000 (50%) to 0x43c64000 (400%). |
|---|
| 401 |
0e-00-04 = early reflections level. 0x00000000 (-inf) to 0x3f800000 (0 |
|---|
| 402 |
dB). |
|---|
| 403 |
|
|---|
| 404 |
|
|---|
| 405 |
CuemixFX switches |
|---|
| 406 |
----------------- |
|---|
| 407 |
|
|---|
| 408 |
Switches and discrete controls in CuemixFX are controlled through a |
|---|
| 409 |
2-quadlet write to the CuemixFX register. The format of this is |
|---|
| 410 |
|
|---|
| 411 |
02 aa 69 v1 - bb k1 k2 k3 |
|---|
| 412 |
|
|---|
| 413 |
where: |
|---|
| 414 |
aa = packet serial number |
|---|
| 415 |
bb = bus/channel index (0x00 = mix bus 1 or mic 1, depending on the control) |
|---|
| 416 |
v1 = the value of the switch / discrete control |
|---|
| 417 |
k1-k2-k3 = the key of the control being set |
|---|
| 418 |
|
|---|
| 419 |
Depending on the control, the channel number being set is communicated |
|---|
| 420 |
either as part of the key (for controls which operate on a per-mixbus basis) |
|---|
| 421 |
or in the "bb" field of the packet (for controls which operate on a |
|---|
| 422 |
per-input/output basis. |
|---|
| 423 |
|
|---|
| 424 |
The keys appear to be rather structured. The value of k3 appears to |
|---|
| 425 |
indicate what kind of object the key applies to: |
|---|
| 426 |
|
|---|
| 427 |
00 = global resource (eg: talkback) |
|---|
| 428 |
01 = input channel (corresponding to a physical device input) |
|---|
| 429 |
02 = a channel in a bus mix |
|---|
| 430 |
03 = output channel (corresponding to a physical device output) |
|---|
| 431 |
04 = global configuration |
|---|
| 432 |
|
|---|
| 433 |
Keys presently identified: |
|---|
| 434 |
00-00-01 = Input channel phase. Value is 0x00 (normal), 0x01 (invert) |
|---|
| 435 |
bb is the input channel index (0 is mic 1). When two adjacent |
|---|
| 436 |
channels are paired the phase of each can still be independently |
|---|
| 437 |
controlled. FIXME: also under the 00-cc-01 entry. |
|---|
| 438 |
00-00-02 = bus output assignment. Values are: |
|---|
| 439 |
0xff = disabled |
|---|
| 440 |
0x00 = main L-R |
|---|
| 441 |
0x01-0x04 = Analog 1-2 though 7-8 |
|---|
| 442 |
0x05 = SPDIF 1-2 |
|---|
| 443 |
0x06 = Phones L-R |
|---|
| 444 |
0x07-0x0a = ADAT A 1-2 through 7-8 |
|---|
| 445 |
0x0b-0x0e = ADAT B 1-2 through 7-8 |
|---|
| 446 |
00-03-00 = talkback channel select. The value is the 0-based channel index |
|---|
| 447 |
of the talkback channel. |
|---|
| 448 |
00-cc-01 = input channel EQ/dynamics switches. Value is 0x00 (off) or 0x01 |
|---|
| 449 |
(on). cc values identified to date: |
|---|
| 450 |
00 = phase (0x00 normal, 0x01 invert) |
|---|
| 451 |
02 = EQ F enable |
|---|
| 452 |
03 = EQ A enable |
|---|
| 453 |
04 = EQ C enable |
|---|
| 454 |
05 = EQ D enable |
|---|
| 455 |
06 = EQ E enable |
|---|
| 456 |
07 = EQ B enable |
|---|
| 457 |
08 = EQ G enable |
|---|
| 458 |
0a = Compressor enable |
|---|
| 459 |
0b = Leveler enable |
|---|
| 460 |
FIXME: work out some way to identify the EQs. |
|---|
| 461 |
00-cc-03 = output channel EQ/dynamics switches. Value is 0x00 (off) or |
|---|
| 462 |
0x01 (on). cc values identified to date: |
|---|
| 463 |
01 = EQ F enable |
|---|
| 464 |
02 = EQ A enable |
|---|
| 465 |
03 = EQ C enable |
|---|
| 466 |
04 = EQ D enable |
|---|
| 467 |
05 = EQ E enable |
|---|
| 468 |
06 = EQ B enable |
|---|
| 469 |
07 = EQ G enable |
|---|
| 470 |
09 = Compressor enable |
|---|
| 471 |
0a = Leveler enable |
|---|
| 472 |
00-04-00 = talkback listen channel select. The value is the 0-based |
|---|
| 473 |
channel index of the talkback listen channel. |
|---|
| 474 |
00-mm-02 = mix channel mute. mm is the channel index as for other keys. |
|---|
| 475 |
Value is 0x00 (off) or 0x01 (on). |
|---|
| 476 |
00-01-02 = bus mute. Values are 0x00 (off), 0x01 (on). |
|---|
| 477 |
00-0c-03 = output channel monitor enable (0x00=off, 0x01=on) |
|---|
| 478 |
01-00-01 = input channel mono/stereo mode. Value is 0x00 (mono), 0x01 |
|---|
| 479 |
(stereo). bb (bus select byte) is always zero for this key |
|---|
| 480 |
since this acts globally on the input. |
|---|
| 481 |
01-00-04 = Reverb split point. Value is 0x00 for "mixes", 0x01 for |
|---|
| 482 |
"outputs". |
|---|
| 483 |
01-mm-02 = mix channel solo. mm is as for the mute control. Value is |
|---|
| 484 |
0x00 (off) or 0x01 (on). |
|---|
| 485 |
01-0a-03 = output channel leveler mode (0x00=compress, 0x01=limit) |
|---|
| 486 |
01-0c-03 = output channel talkback talk (0x00=off, 0x01=on) |
|---|
| 487 |
02-0c-03 = output channel talkback listen (0x00=off, 0x01=on) |
|---|
| 488 |
03-00-01 = input channel swap L and R. Value is 0x00 (no swap), 0x01 |
|---|
| 489 |
(swap). bb is the input channel index. |
|---|
| 490 |
04-00-01 = input channel stereo mode. Value is 0x00 for normal stereo, |
|---|
| 491 |
0x01 for MS. Relevant only if input channel is in stereo mode |
|---|
| 492 |
(and thus part of a stereo pair). |
|---|
| 493 |
06-00-01 = input channel Vlimit on (mic channels only). Values are 0x00 |
|---|
| 494 |
(off), 0x01 (on). |
|---|
| 495 |
06-0a-01 = input channel compressor mode (0x00=peak, 0x01=RMS) |
|---|
| 496 |
06-0b-01 = input channel leveler mode (0x00=compress, 0x01=limit) |
|---|
| 497 |
06-09-03 = output channel compressor mode (0x00=peak, 0x01=RMS) |
|---|
| 498 |
07-00-01 = input channel Vlimit lookahead (mic channels only). Values are |
|---|
| 499 |
0x00 (off), 0x01 (on). |
|---|
| 500 |
08-00-01 = input channel soft clip (mic channels only). Values are 0x00 |
|---|
| 501 |
(off), 0x01 (on). |
|---|
| 502 |
0c-00-04 = Reverb early reflections model. Value is 0x00-0x04 for "Room |
|---|
| 503 |
A" through to "Room E". bb is zero. |
|---|