Modify DSP registers on-the-fly


Modify DSP registers on-the-fly

If you created you own DSP program for the Beocreate amplifier, you can just upload it to the DSP and use it. However, in some cases it makes sense to control the DSP program on-the-fly. The major use case for this is a volume control. But you might even want to change filter settings, switch between different inputs or many other things.
While you could write your own tools that accesses the DSP via SPI, we provide a command line tool that communicates with the DSP TCP server. This makes it very easy to control the DSP.

To change register value, you first have to identify the correct register address. To to this, use SigmaStudio. Open your DSP program, write it  to the DSP. Then open the Capture window and look at the captures while changing a control in the schematic view.

In the example in this screenshot, the “Single 1” volume control was changed. You see that the “HWGainADAU145XAlg7Target” is modified via this control – with the register address 0x0076.

Now you can directly write values into this register. In this example, you can see that the value was between 0.07 and 0.09. With volume controls, make sure you change it only slightly – especially when increasing the volume. Increasing the volume dramatically might not only damage your speakers, but – even worse – your ears!

If you run the “beocreate-client” tool without any arguments, it will show the available options:

Read: SigmaClientTool [target IP] [read_int|read_dec|read_reg] [address] [length] (for read_reg only)
Write value: SigmaClientTool [target IP] [write_val] [address] [value] (single int or decimal value)
Write register: SigmaClientTool [target IP] [write_reg] [address] [length] [value1 value2 value3 ...] (each value is 1 bytes in hex format 0xXX)
Write EEPROM: SigmaClientTool [target IP] [write_eeprom] [path to XML file]

We recommend to first read the value from the register:

/usr/local/bin/beocreate-client read_dec 0x0076 4
Initializing connection to
Reading value from 0x0076

Now, write a different value into this register:

/usr/local/bin/beocreate-client write_val 0x0076 0
Initializing connection to

If you wrote into the correct register, this should completely mute the channel. Now try to increase the volume by writing values larger than zero:

/usr/local/bin/beocreate-client write_val 0x0076 0.003
Initializing connection to

Note that for most controls the scale is logarithmic. This means doubling the value will increase the volume by 3dB.