Firmware Image Availability
XMOS firmware images (FW) for the following are planned:
1) FW #1 - USB Audio, audio mixer, stereo spatialization, and HiRes cabinet simulation
2) FW #2 - USB Audio, audio mixer, stereo spatialization, and stereo guitar multi-effects.
3) FW #3 - #1 and #2 combined with cab-sim limited to LoRes and guitar effects limited to mono.
Firmware can be uploaded via USB/MIDI, serial UART/MIDI, or via the JTAG conntector.
USB audio input allows a mix of guitar input and effects output to be routed to the USB host for monitoring and/or recording. USB output allows for mixing USB host output audio with effects output (for jamming or for re-amping). These signal path variations are supported via three internal mixers. A stereo 15-band graphic EQ is placed at the end of the audio chain.
Configuration via serial/UART
The UART RX/TX signals can be used to upload property configuration data.
Properties are sent via RX five 32-bit values at a time preceeded with the 16-bit property ID.
An acknowledgment is sent via TX back to the host controller.
The CRC is computed as the XOR of all 22 bytes (2 bytes if ID, 20 bytes of data).
The UART settings are 230400 baud, on stop bit, no parity.
Configuration format and example is shown below:
Property ID = 0x1301
Param 1 = 0x11223344
Param 2 = 0x55667788
Param 3 = 0x99aabbcc
Param 4 = 0x01234567
Param 5 = 0x89abcdef
Step 1: RX signal <---- | Property ID | Param 1 | Param 2 | ...| Param 5 | CRC |
| 13, 01 | 11,22,33,44 | 55,66,77,88 |... | 89,ab,cd,ef | ?? |
Step 2: A minimum of a 200 usec delay, host should be ready to RX 200 usec after last TX
Step 3: TX signal ----> | Property ID |
| 13, 01 |
The acknowledgement data is equal to the property ID being updated.
A value of 0x0000 indicates an error (invalid property ID or CRC failure).
Configuration via USB MIDI
The parameter upload format uses the serial/UART format described above encapsulated within MIDI sysex messages.
See the 'configuration via serial/UART' above.
MIDI Sysex messages start with 0xF7, end with 0xF0, and contain 7-bit values (octets with MSB=0).
Therfore the 22-byte property upload byte sequence needs to be split into ~25.14 bytes.
Example using ficticious data for illustration only:
Raw property data: Hex - 0xA1, 0xB2, 0xC3, 0xC4 ...
Binary - 10100001, 10110010, 11000011, 01110100, ...
8-bit to 7-bit for Sysex: Binary - 01010000, 01101100, 01011000, 001101110, 0100, ...
Hex - 0x50, 0x6C, 0x58, 0x3E, 0x4?, ...
MIDI Sysex property data: Hex - 0xF7, 0x50, 0x6C, 0x58, 0x3E, 0x4?, ... 0xF0
Run-time Audio Processing Properties
Each firware supports a set of properties that determines the audio processing behavior.
Properties have a 16-bit identifier formmatted as follows:
0x1ABC where A is the 4-bit property class and BC are the 8-bit property values index.
Property Summary for Firmware #1
=================================================================================================
Property Name ID Param1 Param2 Param3 Param4 Param5 Notes
=================================================================================================
Mixer Control 1100 Volume Mixer1 Mixer2 Mixer3 Reserved
-------------------------------------------------------------------------------------------------
Spatialization 1200 Enable TBD TBD TBD TBD Converts mono to stereo
-------------------------------------------------------------------------------------------------
GraphicEQ Flags 1300 Enable Level Disable is same as bypassed
GraphicEQ Band 1a 1301 B0 B1 B2 A1 A2 Biquad coefficients
GraphicEQ Band 1b 1302 B0 B1 B2 A1 A2 Biquad coefficients
GraphicEQ Band 2a 1303 B0 B1 B2 A1 A2 Biquad coefficients
GraphicEQ Band 2b 1304 B0 B1 B2 A1 A2 Biquad coefficients
...
GraphicEQ Band 15a 132d B0 B1 B2 A1 A2 Biquad coefficients
GraphicEQ Band 15b 132e B0 B1 B2 A1 A2 Biquad coefficients
-------------------------------------------------------------------------------------------------
CabSim Data Flags 1400 Enable Disable is same as bypassed
CabSim Data, Next 1401 N+0 N+1 N+2 N+3 N+4 Next set of 5 blockA values
CabSim Data, Last 1402 N+0 N+1 N+2 N+3 N+4 Last set of 5 blockA values
...
CabSim Data, Next 1409 N+0 N+1 N+2 N+3 N+4 Next set of 5 blockE values
CabSim Data, Last 140a N+0 N+1 N+2 N+3 N+4 Last set of 5 blockE values
=================================================================================================
Property Summary for Firmware #2
TBD, includes mixer, spatialization and graphic EQ properties plus guitar effects properties.
Property Summary for Firmware #3
TBD, includes mixer, spatialization and graphic EQ properties plus a reduced set of cabinet sim
IR and guitar effects properies.
Mixer Control (Firmwares #1 #2 #3, ID 0x1100)
Volume and level are 32-bit Q1.31 values used to scale the signal from 0 to 0.999...
Mixer values are 32-bit Q1.31 fixed point values with ~0.5 representing a 50/50 mix.
[Guitar]-----+-------------------------[Mixer2]---->[USB In]
| /\
| |
\/ |
[Mixer1]--->[Effects]--->[Spatialization]
/\ |
| |
(Left Ch.) +---------------+
| |
| \/
[USB Out]----+-------->[Mixer3]--->[GraphicEQ]--->[Volume]--->[Line Out]
Stereo Spatilization (Firmwares #1 #2 #3, ID 0x1200 through TBD)
Converts mono to stereo.
Graphic EQ (Firmwares #1 #2 #3, ID 0x1300 through 0x131b)
15 band graphic EQ.
Each band's frequency response is determined by a two-cascade biquad IIR filter.
Each band's 10-value coefficient data (for two biquads) is set via two properties (5 values each).
Biquad coefficients are formatted as 32-bit Q4.28 fixed-point values.
Cabinet Simulation, HiRes (Firmware #1, ID 0x1400 through 0x1402)
Speaker cabinet and/or acoustic response simuation via time-domain convolution.
Up 62 msec (mono HiRes) of impulse response is supported via 3000 IR coefficients.
Up 31 msec (stereo LoRes) of impulse response is supported via 3000 IR coefficients.
Impulse response data is loaded 5 impulse response values at a time (see serial/UART format).
3000 impulse response values are split into blocks (A, B, C, E, and F) of 600 IR values each.
For stereo LoRes the left channel's 1500 values are loaded first, right channel is second.
'Next' is used for all IR data loading with the exception of the last 5 values using 'Last'.
Impulse response values are formatted as 32-bit Q1.31 fixed-point values.
Cabinet Simulation (Firmware #3, ID 0x1400 through 0x1402)
Speaker cabinet and/or acoustic response simuation via time-domain convolution.
Up 31 msec (mono LoRes) of impulse response supported via 1500 IR coefficients.
Impulse response data is loaded 5 impulse response values at a time (see serial/UART format).
1500 impulse response values are split into blocks (A, B, partial C) of 600 IR values each.
'Next' is used for all IR data loading with the exception of the last 5 values using 'Last'.
Impulse response values are formatted as 32-bit Q1.31 fixed-point values.