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 0blk 2blk 4blk 6countpurposesw msg
0x1200x2300x3400x4506 quadsch 0 comp0x06
0x1380x2480x3580x4682 quadsch 0/ch 1 eq output0z09
0x1400x2500x3600x4705 quadsch 0 eq low freq filter0x0c
0x1540x2640x3740x4845 quadsch 0 eq low-middle freq filter0x0f
0x1680x2780x3880x4985 quadsch 0 eq high-middle freq filter0x12
0x17c0x28c0x39c0x4ac5 quadsch 0 eq high freq filter0x15
0x1900x2a00x3b00x4c06 quadsch 0 reverb0x1a
blk 1blk 3blk 5blk 7countpurposesw msg
0x1a80x2b80x3c80x4d86 quadsch 1 comp0x07
0x1c00x2d00x3e00x4f02 quadsch 0/ch 1 eq output0x0a
0x1c80x2d80x3e80x4f85 quadsch 1 eq low freq filter0x0d
0x1dc0x2ec0x3fc0x50c5 quadsch 1 eq low-middle freq filter0x10
0x1f00x3000x4100x5205 quadsch 1 eq high-middle freq filter0x13
0x2040x3140x4240x5345 quadsch 1 eq high freq filter0x16
0x2180x3280x4380x5486 quadsch 1 reverb0x1a

Compressor coefficients (6 quadlets)

Actually change to block 2 is effective.

quadpurposemin valuemax valuemin reprmax repr
0unknown0x3f8000000x3f800000--
1output volume0x000000000x42800000-36.0 dB+36.0 dB
2threshold0xbfa000000x00000000-80.0 dB0.0 dB
3ratio0x3d0000000x3f0000001.1:1inf:1
4attack0xbf8000000xbf7000002ms100ms
5release0x3f7000000x3f800000100ms3s

Equalizer output coefficients (2 quadlets)

Actually change to block 2 is effective.

quadpurposemin valuemax valuemin reprmax repr
0left volume0x000000000x3f800000-36.0 dB+36.0 dB
1right volume0x000000000x3f800000-36.0 dB+36.0 dB

Equalizer coefficients (5 quadlets)

Actually change to block 2 is effective.

quadpurposemin valuemax valuemin reprmax repr
0unknown----
1unknown----
2unknown----
3unknown----
4unknown----

Reverb coefficients (6 quadlets)

Actually change to block 3 is effective.

quadpurposemin valuemax valuemin reprmax repr
0room size0x000000000x3f8000000 %100 %
1air0x000000000x3f800000100 %0 %
2enabled0x000000000x3f800000falsetrue
3disabled0x000000000x3f800000falsetrue
4pre filter value0x000000000x3f8000005.00.0
5pre filter sign0x000000000x3f800000negativepositive

Structs