Signal Chain Stages#
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.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.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: list[audio_dsp.design.stage.StageOutput | None] | 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=32768)
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.Mixer(**kwargs)
Mixes the input signals together. The mixer can be used to add signals together, or to attenuate the input signals.
- Attributes:
- dsp_block
audio_dsp.dsp.signal_chain.mixer
The DSP block class; see Mixer for implementation details
- dsp_block
- 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 |
|
The current gain in Q_GAIN format. To convert a value in decibels to this format, the function |
Adder#
- class audio_dsp.stages.Adder(**kwargs)
Add the input signals together. The adder can be used to add signals together.
- Attributes:
- dsp_block
audio_dsp.dsp.signal_chain.adder
The DSP block class; see Adder for implementation details.
- dsp_block
Adder Control#
The Adder Stage has no runtime controllable parameters.
Subtractor#
- class audio_dsp.stages.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_block
audio_dsp.dsp.signal_chain.subtractor
The DSP block class; see Subtractor for implementation details.
- dsp_block
Subtractor Control#
The Subtractor Stage has no runtime controllable parameters.
FixedGain#
- class audio_dsp.stages.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_block
audio_dsp.dsp.signal_chain.fixed_gain
The DSP block class; see Fixed Gain for implementation details.
- dsp_block
- 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 |
|
The gain value in Q_GAIN format. To convert a value in decibels to this format, the function |
VolumeControl#
- class audio_dsp.stages.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_block
audio_dsp.dsp.signal_chain.volume_control
The DSP block class; see Volume Control for implementation details.
- dsp_block
- 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 |
|
The target gain of the volume control in Q_GAIN format. To convert a value in decibels to this format, the function |
|
CMD_VOLUME_CONTROL_GAIN |
|
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 |
|
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 |
|
Sets the mute state. 1 is muted and 0 is unmuted. |
Switch#
- class audio_dsp.stages.Switch(index=0, **kwargs)
Switch the output to one of the inputs. The switch can be used to select between different signals.
- Parameters:
- indexint
The position to which to move the switch. This changes the output signal to the input[index]
- 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 |
|
The current switch position. |
SwitchSlew#
- class audio_dsp.stages.SwitchSlew(index=0, **kwargs)
Switch the output to one of the inputs. The switch can be used to select between different signals. When the switch is move, a cosine slew is used to avoid clicks. This supports up to 16 inputs.
- Parameters:
- indexint
The position to which to move the switch. This changes the output signal to the input[index]
- Attributes:
- dsp_block
audio_dsp.dsp.signal_chain.switch_slew
The DSP block class; see Switch with slew for implementation details.
- dsp_block
- 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]
SwitchSlew Control#
The following runtime command ids are available for the SwitchSlew Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.
Control parameter |
Payload length |
---|---|
CMD_SWITCH_SLEW_POSITION |
|
The current switch position. |
SwitchStereo#
- class audio_dsp.stages.SwitchStereo(index=0, **kwargs)
Switch the input to one of the stereo pairs of outputs. The switch can be used to select between different stereo signal pairs. The inputs should be passed in pairs, e.g.
[0_L, 0_R, 1_L, 1_R, ...]
. Setting the switch position will output the nth pair.- Parameters:
- indexint
The position to which to move the switch. This changes the output signal to the [input[2*index], input[:2*index + 1]]
- 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[2*position], input[:2*position + 1]]
SwitchStereo Control#
The following runtime command ids are available for the SwitchStereo Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.
Control parameter |
Payload length |
---|---|
CMD_SWITCH_STEREO_POSITION |
|
The current switch position. |
Delay#
- class audio_dsp.stages.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_block
audio_dsp.dsp.signal_chain.delay
The DSP block class; see Delay for implementation details.
- dsp_block
- 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 |
|
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 |
|
The current delay value in samples. To convert a value in other units of time to samples, use |
Crossfader#
- class audio_dsp.stages.Crossfader(mix=0.5, **kwargs)
The crossfader mixes between two inputs. The mix control sets the respective levels of each input. When the mix is changed, the gain is updated with a slew.
- Parameters:
- mixfloat
The mix of the crossfader between 0 and 1.
- Attributes:
- dsp_block
audio_dsp.dsp.signal_chain.crossfader
The DSP block class; see Crossfader for implementation details.
- dsp_block
- set_mix(mix)
Set the mix of the crossfader.
When the mix is set to 0, only the first signal will be output. When the mix is set to 0.5, each channel has a gain of -4.5 dB. When the mix is set to 1, only they second signal will be output.
- Parameters:
- mixfloat
The mix of the crossfader between 0 and 1.
Crossfader Control#
The following runtime command ids are available for the Crossfader Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.
Control parameter |
Payload length |
---|---|
CMD_CROSSFADER_GAINS |
|
The gains of each input to the crossfader in Q0.31 format. A mix between 0 and 1 can be converted to gains by using the helper function :c:func`adsp_crossfader_mix` in |
CrossfaderStereo#
- class audio_dsp.stages.CrossfaderStereo(mix=0.5, **kwargs)
The stereo crossfader mixes between two stereo inputs. The mix control sets the respective levels of each input pair. When the mix is changed, the gain is updated with a slew. The inputs should be passed in pairs, e.g.
[0_L, 0_R, 1_L, 1_R]
.- Attributes:
- dsp_block
audio_dsp.dsp.signal_chain.crossfader
The DSP block class; see Crossfader for implementation details.
- dsp_block
- set_mix(mix)
Set the mix of the crossfader.
When the mix is set to 0, only the first signal will be output. When the mix is set to 0.5, each channel has a gain of -4.5 dB. When the mix is set to 1, only they second signal will be output.
- Parameters:
- mixfloat
The mix of the crossfader between 0 and 1.
CrossfaderStereo Control#
The following runtime command ids are available for the CrossfaderStereo Stage. For details on reading and writing these commands, see the Run-Time Control User Guide.
Control parameter |
Payload length |
---|---|
CMD_CROSSFADER_STEREO_GAINS |
|
The gains of each input to the crossfader in Q0.31 format. A mix between 0 and 1 can be converted to gains by using the helper function :c:func`adsp_crossfader_mix` in |