Module firewire_dice_protocols::focusrite::spro24dsp
source · Expand description
Protocol specific to Focusrite Saffire Pro 24 DSP.
The module includes structure, enumeration, and trait and its implementation for protocol defined by Focusrite for Saffire Pro 24 DSP.
Diagram of internal signal flow for Saffire Pro 24 DSP.
I note that optical input interface is available exclusively for ADAT input and S/PDIF input.
XLR input 1 ------+---------+
Phone input 1-----+ |
|
XLR input 2 ------+---------+
Phone input 2 ----+ |
+------------------> analog-input-1/2
Phone input 3/4 -------------------------------> analog-input-3/4
Phone input 5/6 -------------------------------> analog-input-5/6
Coaxial input 1/2 -----------------------------> spdif-input-1/2
Optical input --------------or-----------------> spdif-input-3/4
+------------------> adat-input-1..8
++=============++
analog-input-1/2 ------> || 46 x 46 || ----> analog-output-1/2
analog-input-3/4 ------> || router || ----> analog-output-3/4
analog-input-5/6 ------> || up to || ----> analog-output-5/6
spdif-input-1/2 -------> || 128 entries || ----> spdif-output-1/2
spdif-input-3/4 -------> || ||
adat-input-1/2 --------> || ||
adat-input-3/4 --------> || ||
adat-input-5/6 --------> || ||
adat-input-7/8 --------> || ||
|| ||
stream-input-1/2 ------> || || ----> stream-output-1/2
stream-input-3/4 ------> || || ----> stream-output-3/4
stream-input-5/6 ------> || || ----> stream-output-5/6
stream-input-7/8 ------> || || ----> stream-output-7/8
|| || ----> stream-output-9/10
|| || ----> stream-output-11/12
|| || ----> stream-output-13/14
|| || ----> stream-output-15/16
|| ||
mixer-output-1/2 ------> || || ----> mixer-input-1/2
mixer-output-3/4 ------> || || ----> mixer-input-3/4
mixer-output-5/6 ------> || || ----> mixer-input-5/6
mixer-output-7/8 ------> || || ----> mixer-input-7/8
mixer-output-9/10 -----> || || ----> mixer-input-9/10
mixer-output-11/12 ----> || || ----> mixer-input-11/12
mixer-output-13/14 ----> || || ----> mixer-input-13/14
mixer-output-15/16 ----> || || ----> mixer-input-15/16
|| || ----> mixer-input-17/18
|| ||
ch-strip-output-1/2 ---> || || ----> ch-strip-input-1/2
reverb-output-1/2 -----> || || ----> reverb-input-1/2
++=============++
++=============++
mixer-input-1/2 -------> || || ----> mixer-output-1/2
mixer-input-3/4 -------> || || ----> mixer-output-3/4
mixer-input-5/6 -------> || || ----> mixer-output-5/6
mixer-input-7/8 -------> || mixer || ----> mixer-output-7/8
mixer-input-9/10 ------> || || ----> mixer-output-9/10
mixer-input-11/12 -----> || 18 x 16 || ----> mixer-output-10/12
mixer-input-13/14 -----> || || ----> mixer-output-12/14
mixer-input-15/16 -----> || || ----> mixer-output-14/16
mixer-input-17/18 -----> || ||
++=============++
++=============++
|| || ----> Phone output 1/2
|| ||
analog-output-1/2 -----> || output || --+-> Phone output 3/4
analog-output-3/4 -----> || || +-> Headphone output 1/2
analog-output-5/6 -----> || group ||
|| || --+-> Phone output 5/6
|| || +-> Headphone output 3/4
++=============++
++=============++
|| equalizer ||
ch-strip-input-1/2 ----> || & || ----> ch-strip-output-1/2
|| compressor ||
++=============++
++=============++
reverb-input-1/2 ------> || reverb || ----> reverb-output-1/2
++=============++
Data layout in TCAT application section for DSP effect
The offset of TCAT application section is 0x6dd4. Any change by write transaction is firstly effective when software message is written to 0x5ec.
Data Layout for DSP effect
- 0x000: DSP enable/disable (sw msg: 0x1c)
- 0x008: flags for channel strip effects (sw msg: 0x05)
- 0x00000001: ch 0 equalizer enable
- 0x00010000: ch 1 equalizer enable
- 0x00000002: ch 0 compressor enable
- 0x00020000: ch 1 compressor enable
- 0x00000004: ch 0 equalizer after compressor
- 0x00040000: ch 1 equalizer after compressor
| blk 0 | blk 2 | blk 4 | blk 6 | count | purpose | sw msg |
|---|---|---|---|---|---|---|
| 0x120 | 0x230 | 0x340 | 0x450 | 6 quads | ch 0 comp | 0x06 |
| 0x138 | 0x248 | 0x358 | 0x468 | 2 quads | ch 0/ch 1 eq output | 0z09 |
| 0x140 | 0x250 | 0x360 | 0x470 | 5 quads | ch 0 eq low freq filter | 0x0c |
| 0x154 | 0x264 | 0x374 | 0x484 | 5 quads | ch 0 eq low-middle freq filter | 0x0f |
| 0x168 | 0x278 | 0x388 | 0x498 | 5 quads | ch 0 eq high-middle freq filter | 0x12 |
| 0x17c | 0x28c | 0x39c | 0x4ac | 5 quads | ch 0 eq high freq filter | 0x15 |
| 0x190 | 0x2a0 | 0x3b0 | 0x4c0 | 6 quads | ch 0 reverb | 0x1a |
| blk 1 | blk 3 | blk 5 | blk 7 | count | purpose | sw msg |
|---|---|---|---|---|---|---|
| 0x1a8 | 0x2b8 | 0x3c8 | 0x4d8 | 6 quads | ch 1 comp | 0x07 |
| 0x1c0 | 0x2d0 | 0x3e0 | 0x4f0 | 2 quads | ch 0/ch 1 eq output | 0x0a |
| 0x1c8 | 0x2d8 | 0x3e8 | 0x4f8 | 5 quads | ch 1 eq low freq filter | 0x0d |
| 0x1dc | 0x2ec | 0x3fc | 0x50c | 5 quads | ch 1 eq low-middle freq filter | 0x10 |
| 0x1f0 | 0x300 | 0x410 | 0x520 | 5 quads | ch 1 eq high-middle freq filter | 0x13 |
| 0x204 | 0x314 | 0x424 | 0x534 | 5 quads | ch 1 eq high freq filter | 0x16 |
| 0x218 | 0x328 | 0x438 | 0x548 | 6 quads | ch 1 reverb | 0x1a |
Compressor coefficients (6 quadlets)
Actually change to block 2 is effective.
| quad | purpose | min value | max value | min repr | max repr |
|---|---|---|---|---|---|
| 0 | unknown | 0x3f800000 | 0x3f800000 | - | - |
| 1 | output volume | 0x00000000 | 0x42800000 | -36.0 dB | +36.0 dB |
| 2 | threshold | 0xbfa00000 | 0x00000000 | -80.0 dB | 0.0 dB |
| 3 | ratio | 0x3d000000 | 0x3f000000 | 1.1:1 | inf:1 |
| 4 | attack | 0xbf800000 | 0xbf700000 | 2ms | 100ms |
| 5 | release | 0x3f700000 | 0x3f800000 | 100ms | 3s |
Equalizer output coefficients (2 quadlets)
Actually change to block 2 is effective.
| quad | purpose | min value | max value | min repr | max repr |
|---|---|---|---|---|---|
| 0 | left volume | 0x00000000 | 0x3f800000 | -36.0 dB | +36.0 dB |
| 1 | right volume | 0x00000000 | 0x3f800000 | -36.0 dB | +36.0 dB |
Equalizer coefficients (5 quadlets)
Actually change to block 2 is effective.
| quad | purpose | min value | max value | min repr | max repr |
|---|---|---|---|---|---|
| 0 | unknown | - | - | - | - |
| 1 | unknown | - | - | - | - |
| 2 | unknown | - | - | - | - |
| 3 | unknown | - | - | - | - |
| 4 | unknown | - | - | - | - |
Reverb coefficients (6 quadlets)
Actually change to block 3 is effective.
| quad | purpose | min value | max value | min repr | max repr |
|---|---|---|---|---|---|
| 0 | room size | 0x00000000 | 0x3f800000 | 0 % | 100 % |
| 1 | air | 0x00000000 | 0x3f800000 | 100 % | 0 % |
| 2 | enabled | 0x00000000 | 0x3f800000 | false | true |
| 3 | disabled | 0x00000000 | 0x3f800000 | false | true |
| 4 | pre filter value | 0x00000000 | 0x3f800000 | 5.0 | 0.0 |
| 5 | pre filter sign | 0x00000000 | 0x3f800000 | negative | positive |
Structs
- Protocol implementation specific to Saffire Pro 24 DSP.
- State of compressor effect.
- General parameters of DSP effects.
- Coefficients per frequency band.
- State of equalizer effect.
- State of reverb effect.