Signal Chain#

Signal chain stages allow for the control of signal flow through the pipeline. This includes stages for combining and splitting signals, basic gain components, and delays.

Bypass#

class audio_dsp.stages.signal_chain.Bypass(**kwargs)

Stage which does not modify its inputs. Useful if data needs to flow through a thread which is not being processed on to keep pipeline lengths aligned.

process(in_channels)

Return a copy of the inputs.

Bypass Control#

The Bypass Stage has no runtime controllable parameters.

Fork#

class audio_dsp.stages.signal_chain.Fork(count=2, **kwargs)

Fork the signal.

Use if the same data needs to be sent to multiple data paths:

a = t.stage(Example, ...)
f = t.stage(Fork, a, count=2)  # count optional, default is 2
b = t.stage(Example, f.forks[0])
c = t.stage(Example, f.forks[1])
Attributes:
forkslist[list[StageOutput]]

For convenience, each forked output will be available in this list each entry contains a set of outputs which will contain the same data as the input.

class ForkOutputList(edges: Optional[list[audio_dsp.design.stage.StageOutput | None]] = None)

Custom StageOutputList that is created by Fork.

This allows convenient access to each fork output.

Attributes:
forks: list[StageOutputList]

Fork duplicates its inputs, each entry in the forks list is a single copy of the input edges.

get_frequency_response(nfft=512)

Fork has no sensible frequency response, not implemented.

process(in_channels)

Duplicate the inputs to the outputs based on this fork’s configuration.

Fork Control#

The Fork Stage has no runtime controllable parameters.

Mixer#

class audio_dsp.stages.signal_chain.Mixer(**kwargs)

Mixes the input signals together. The mixer can be used to add signals together, or to attenuate the input signals.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.mixer

The DSP block class; see Mixer for implementation details

set_gain(gain_db)

Set the gain of the mixer in dB.

Parameters:
gain_dbfloat

The gain of the mixer in dB.

Mixer Control#

The following runtime command ids are available for the Mixer Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.

Control parameter

Payload length

CMD_MIXER_GAIN

sizeof(int32_t)

The current gain in Q_GAIN format. To convert a value in decibels to this format, the function adsp_dB_to_gain in control/signal_chain.h can be used.

Adder#

class audio_dsp.stages.signal_chain.Adder(**kwargs)

Add the input signals together. The adder can be used to add signals together.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.adder

The DSP block class; see Adder for implementation details.

Adder Control#

The Adder Stage has no runtime controllable parameters.

Subtractor#

class audio_dsp.stages.signal_chain.Subtractor(**kwargs)

Subtract the second input from the first. The subtractor can be used to subtract signals from each other. It must only have 2 inputs.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.subtractor

The DSP block class; see Subtractor for implementation details.

Subtractor Control#

The Subtractor Stage has no runtime controllable parameters.

FixedGain#

class audio_dsp.stages.signal_chain.FixedGain(gain_db=0, **kwargs)

This stage implements a fixed gain. The input signal is multiplied by a gain. If the gain is changed at runtime, pops and clicks may occur.

If the gain needs to be changed at runtime, use a VolumeControl stage instead.

Parameters:
gain_dbfloat, optional

The gain of the mixer in dB.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.fixed_gain

The DSP block class; see Fixed Gain for implementation details.

set_gain(gain_db)

Set the gain of the fixed gain in dB.

Parameters:
gain_dbfloat

The gain of the fixed gain in dB.

FixedGain Control#

The following runtime command ids are available for the FixedGain Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.

Control parameter

Payload length

CMD_FIXED_GAIN_GAIN

sizeof(int32_t)

The gain value in Q_GAIN format. To convert a value in decibels to this format, the function adsp_dB_to_gain in control/signal_chain.h can be used.

VolumeControl#

class audio_dsp.stages.signal_chain.VolumeControl(gain_dB=0, mute_state=0, **kwargs)

This stage implements a volume control. The input signal is multiplied by a gain. The gain can be changed at runtime. To avoid pops and clicks during gain changes, a slew is applied to the gain update. The stage can be muted and unmuted at runtime.

Parameters:
gain_dbfloat, optional

The gain of the mixer in dB.

mute_stateint, optional

The mute state of the Volume Control: 0: unmuted, 1: muted.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.volume_control

The DSP block class; see Volume Control for implementation details.

make_volume_control(gain_dB, slew_shift, mute_state, Q_sig=27)

Update the settings of this volume control.

Parameters:
gain_dB

Target gain of this volume control.

slew_shift

The shift value used in the exponential slew.

mute_state

The mute state of the Volume Control: 0: unmuted, 1: muted.

set_gain(gain_dB)

Set the gain of the volume control in dB.

Parameters:
gain_dbfloat

The gain of the volume control in dB.

set_mute_state(mute_state)

Set the mute state of the volume control.

Parameters:
mute_statebool

The mute state of the volume control.

VolumeControl Control#

The following runtime command ids are available for the VolumeControl Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.

Control parameter

Payload length

CMD_VOLUME_CONTROL_TARGET_GAIN

sizeof(int32_t)

The target gain of the volume control in Q_GAIN format. To convert a value in decibels to this format, the function adsp_dB_to_gain in control/signal_chain.h can be used.


CMD_VOLUME_CONTROL_GAIN

sizeof(int32_t)

The current applied gain of the volume control in Q_GAIN format. The volume control will slew the applied gain towards the target gain. This command is read only. When sending a write control command, it will be ignored.


CMD_VOLUME_CONTROL_SLEW_SHIFT

sizeof(int32_t)

The shift value used to set the slew rate. See the volume control documentation for conversions between slew_shift and time constant.


CMD_VOLUME_CONTROL_MUTE_STATE

sizeof(uint8_t)

Sets the mute state. 1 is muted and 0 is unmuted.

Switch#

class audio_dsp.stages.signal_chain.Switch(index=0, **kwargs)

Switch the input to one of the outputs. The switch can be used to select between different signals.

move_switch(position)

Move the switch to the specified position.

Parameters:
positionint

The position to which to move the switch. This changes the output signal to the input[position]

Switch Control#

The following runtime command ids are available for the Switch Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.

Control parameter

Payload length

CMD_SWITCH_POSITION

sizeof(int32_t)

The current switch position.

Delay#

class audio_dsp.stages.signal_chain.Delay(max_delay, starting_delay, units='samples', **kwargs)

Delay the input signal by a specified amount.

The maximum delay is set at compile time, and the runtime delay can be set between 0 and max_delay.

Parameters:
max_delayfloat

The maximum delay in specified units. This can only be set at compile time.

starting_delayfloat

The starting delay in specified units.

unitsstr, optional

The units of the delay, can be ‘samples’, ‘ms’ or ‘s’. Default is ‘samples’.

Attributes:
dsp_blockaudio_dsp.dsp.signal_chain.delay

The DSP block class; see Delay for implementation details.

set_delay(delay, units='samples')

Set the length of the delay line, will saturate at max_delay.

Parameters:
delayfloat

The delay in specified units.

unitsstr

The units of the delay, can be ‘samples’, ‘ms’ or ‘s’. Default is ‘samples’.

Delay Control#

The following runtime command ids are available for the Delay Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.

Control parameter

Payload length

CMD_DELAY_MAX_DELAY

sizeof(uint32_t)

The maximum delay value in samples. This is only configurable at compile time. This command is read only. When sending a write control command, it will be ignored.


CMD_DELAY_DELAY

sizeof(uint32_t)

The current delay value in samples. To convert a value in other units of time to samples, use time_to_samples in control/signal_chain.h. Note the minimum delay provided by this stage is 1 sample. Setting the delay to 0 will still yield a 1 sample delay.