The default component library

Note

The component documentation is extracted from the Python classes (or Python bindings in case of C++ classes). For the exact C++ interfaces, see the VISR API documentation or the header documentation in the C++ code.

This information is also avalaible through Python’s interactive documentation, e.g., through

>>> import rcl
>>> help( rcl.Add )

Module rcl overview

The rcl library is the default library for atomic components. It is contained in the default distribution of the VISR.

Note

The separation into a library for atomic components (rcl) and composite components (Module signalflows overview) is largely for historical reasons. In the future, the component library/libraries will be restructured into topical units.

VISR default component library.

At the moment, this module contains atomic components (whereas the composite ones are in signalflows) for historic reasons. In the future, however, this will change do a topical orgainisation.

Component rcl.Add

class rcl.Add(self: rcl.Add, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, width: int, numInputs: int) → None

Component for adding multichannel multichannel audio signals.

input_<i>”
Audio input signals to be added, numbered from 0..`numInputs`-1. The width is determined by the constructor parameter width.”
output
Multichannel audio output signal, width determined by paramter width.

Constructor, creates an instance of Add.

Parameters:
  • context (visr.SignalFlowContext) – Common audio processing parameters (e.g., sampling rate and block size)
  • name (string) – Name of the component.
  • parent (visr.CompositeComponent or None) – The composite component that contains the present object, or None for a top-level component.
  • numInputs (int) – The number of input ports (addends)
process(self: rcl.Add) → None

Component rcl.BiquadIirFilter

class rcl.BiquadIirFilter(*args, **kwargs)

Multichannel IIR filtering component based on second-order IIR sections (biquads).

Audio ports:
input: Multichannel audio signal, the witdth is determined by the constructor parameter numberOfChannels. output: Multichannel output signal, width is determined by the constructor parameter numberOfChannels.
Parameter ports:
eqInput: Optional parameter input port for receiving updated EQ settings of type pml.BiquadMatrixParameterFloat.
This port is activated by the constructor parameter controlInputs (default: True)

Overloaded function.

  1. __init__(self: rcl.BiquadIirFilter, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, numberOfBiquads: int, controlInput: bool=True) -> None

Constructor that initialises all biquad IIR sections the default value (flat EQ).

Parameters:
  • context – (visr.SignalFlowContext) Common audio processing parameters (e.g., sampling rate and block size)
  • name – (string) Name of the component.
  • parent – (visr.CompositeComponent or None) The composite component that contains the present object, or None in case of a top-level component.
  • numberOfChannels – (int) The number of individual audio channels processed.
  • numberOfBiquads – (int) The number of second-order sections processed per channels.
  1. __init__(self: rcl.BiquadIirFilter, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, numberOfBiquads: int, initialBiquad: rbbl.BiquadCoefficientFloat, controlInput: bool=True) -> None

Constructor initialising all biquad IIR sections to the same given value.

  1. __init__(self: rcl.BiquadIirFilter, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, numberOfBiquads: int, initialBiquads: rbbl.BiquadCoefficientListFloat, controlInput: bool=True) -> None

Constructor initialising all channels to the same sequence of biquad IIR sections

  1. __init__(self: rcl.BiquadIirFilter, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, numberOfBiquads: int, initialBiquads: rbbl.BiquadCoefficientMatrixFloat, controlInput: bool=True) -> None

Constructor initialising the biquad IIR sections to individual values.

Component rcl.CAPGainCalculator

class rcl.CAPGainCalculator(self: rcl.CAPGainCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfObjects: int, arrayConfig: panning.LoudspeakerArray) → None

Component rcl.ChannelObjectRoutingCalculator

class rcl.ChannelObjectRoutingCalculator(self: rcl.ChannelObjectRoutingCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfObjectChannels: int, arrayConfig: panning.LoudspeakerArray) → None

Component rcl.CrossfadingFirFilterMatrix

class rcl.CrossfadingFirFilterMatrix(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.CrossfadingFirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, transitionSamples: int, filters: efl.BasicMatrixFloat=<pml.MatrixParameterFloat object at 0x113a21a40>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.CrossfadingFirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None
  2. __init__(self: rcl.CrossfadingFirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, transitionSamples: int, filters: array=<pml.MatrixParameterFloat object at 0x113a21b58>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.CrossfadingFirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None

Component rcl.DelayMatrix

class rcl.DelayMatrix(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.DelayMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) -> None
  2. __init__(self: rcl.DelayMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayMatrix.ControlPortConfig=ControlPortConfig.No, initialDelay: float=0.0, initialGain: float=1.0) -> None
  3. __init__(self: rcl.DelayMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayMatrix.ControlPortConfig=ControlPortConfig.No, initialDelay: efl.BasicMatrixFloat=0.0, initialGain: efl.BasicMatrixFloat=1.0) -> None
setup(*args, **kwargs)

Overloaded function.

  1. setup(self: rcl.DelayMatrix, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayMatrix.ControlPortConfig=ControlPortConfig.No, initialDelay: float=0.0, initialGain: float=1.0) -> None
  2. setup(self: rcl.DelayMatrix, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayMatrix.ControlPortConfig=ControlPortConfig.No, initialDelays: efl.BasicMatrixFloat, initialGains: efl.BasicMatrixFloat) -> None

Component rcl.DelayVector

class rcl.DelayVector(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.DelayVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) -> None
  2. __init__(self: rcl.DelayVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayVector.ControlPortConfig=ControlPortConfig.No, initialDelay: float=0.0, initialGain: float=1.0) -> None
  3. __init__(self: rcl.DelayVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str=’lagrangeOrder3’, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayVector.ControlPortConfig=ControlPortConfig.No, initialDelay: efl.BasicVectorFloat=<pml.VectorParameterFloat object at 0x11396e570>, initialGain: efl.BasicVectorFloat=<pml.VectorParameterFloat object at 0x11396e5a8>) -> None
  4. __init__(self: rcl.DelayVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str=’lagrangeOrder3’, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayVector.ControlPortConfig=ControlPortConfig.No, initialDelay: numpy.ndarray[float32], initialGain: numpy.ndarray[float32]) -> None

Constructor taking Python lists or NumPy arrays as initial gain and delay values.

  1. __init__(self: rcl.DelayVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfChannels: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str=’lagrangeOrder3’, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayVector.ControlPortConfig=ControlPortConfig.No, initialDelay: List[float], initialGain: List[float]) -> None

Constructor taking Python lists or NumPy arrays as initial gain and delay values.

setup(self: rcl.DelayVector, numberOfChannels: int, interpolationSteps: int=1024, maxDelay: float=3.0, interpolationType: str, methodDelayPolicy: rcl.DelayMatrix.MethodDelayPolicy=MethodDelayPolicy.Add, controlInputs: rcl.DelayVector.ControlPortConfig=ControlPortConfig.No, initialDelay: float=0.0, initialGain: float=1.0) → None

Component rcl.DiffusionGainCalculator

class rcl.DiffusionGainCalculator(self: rcl.DiffusionGainCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfObjectChannels: int) → None

Component rcl.FirFilterMatrix

class rcl.FirFilterMatrix(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.FirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) -> None
  2. __init__(self: rcl.FirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, filters: efl.BasicMatrixFloat=<pml.MatrixParameterFloat object at 0x11396e998>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.FirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None
  3. __init__(self: rcl.FirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, filters: array, routings: rbbl.FilterRoutingList=, controlInputs: rcl.FirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None
setup(self: rcl.FirFilterMatrix, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, filters: efl.BasicMatrixFloat=<pml.MatrixParameterFloat object at 0x11396e880>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.FirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str='default') → None

Component rcl.GainMatrix

class rcl.GainMatrix(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.GainMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int=0, initialGains: float=1.0, controlInput: bool=True) -> None
  2. __init__(self: rcl.GainMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int, initialGains: efl.BasicMatrixFloat, controlInput: bool=True) -> None
  3. __init__(self: rcl.GainMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int, initialGains: numpy.ndarray[float32], controlInput: bool=True) -> None

Component rcl.GainVector

class rcl.GainVector(self: rcl.GainVector, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) → None
setup(*args, **kwargs)

Overloaded function.

  1. setup(self: rcl.GainVector, numberOfChannels: int, interpolationSteps: int=1024, controlInputs: bool=False, initialGain: float=1.0) -> None
  2. setup(self: rcl.GainVector, numberOfChannels: int, interpolationSteps: int=1024, controlInputs: bool=False, initialGainsLinear: efl.BasicVectorFloat) -> None

Component rcl.HoaAllradGainCalculator

class rcl.HoaAllradGainCalculator(self: rcl.HoaAllradGainCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfObjectChannels: int, regularArrayConfig: panning.LoudspeakerArray, realArrayConfig: panning.LoudspeakerArray, decodeMatrix: efl.BasicMatrixFloat, listenerPosition: pml.ListenerPosition=<pml.ListenerPosition object at 0x11396eb90>, adaptiveListenerPosition: bool=False) → None

Component rcl.InterpolatingFirFilterMatrix

class rcl.InterpolatingFirFilterMatrix(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.InterpolatingFirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, numberOfInterpolants: int, transitionSamples: int, filters: efl.BasicMatrixFloat=<pml.MatrixParameterFloat object at 0x11396edc0>, interpolants: rbbl.InterpolationParameterSet=<rbbl.InterpolationParameterSet object at 0x11396edf8>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.InterpolatingFirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None
  2. __init__(self: rcl.InterpolatingFirFilterMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, filterLength: int, maxFilters: int, maxRoutings: int, numberOfInterpolants: int, transitionSamples: int, filters: array, interpolants: rbbl.InterpolationParameterSet=<rbbl.InterpolationParameterSet object at 0x11396ef10>, routings: rbbl.FilterRoutingList=, controlInputs: rcl.InterpolatingFirFilterMatrix.ControlPortConfig=ControlPortConfig.NoInputs, fftImplementation: str=’default’) -> None

Component rcl.ListenerCompensation

class rcl.ListenerCompensation(self: rcl.ListenerCompensation, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, arrayConfiguration: panning.LoudspeakerArray) → None

Component rcl.Nullsource

class rcl.NullSource(self: rcl.NullSource, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, width: int=1) → None

Component rcl.ObjectGainEqCalculator

class rcl.ObjectGainEqCalculator(self: rcl.ObjectGainEqCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfObjectChannels: int, numberOfBiquadSections: int) → None

Component rcl.PanningCalculator

class rcl.PanningCalculator(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.PanningCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfObjects: int, arrayConfig: panning.LoudspeakerArray, adaptiveListener: bool=False, separateLowpassPanning: bool=False) -> None
  2. __init__(self: rcl.PanningCalculator, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfObjects: int, arrayConfig: panning.LoudspeakerArray, adaptiveListener: bool=False, panningMode: rcl.PanningCalculator.PanningMode=PanningMode.LF, lfNormalisation: rcl.PanningCalculator.Normalisation=Normalisation.Default, hfNormalisation: rcl.PanningCalculator.Normalisation=Normalisation.Default, diffuseNormalisation: rcl.PanningCalculator.Normalisation=Normalisation.Default, listenerPosition: pml.ListenerPosition=<pml.ListenerPosition object at 0x113972618>) -> None

Component rcl.PositionDecoder

class rcl.PositionDecoder(self: rcl.PositionDecoder, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, offset: panning.XYZ, qw: float=0.0, qx: float=0.0, qy: float=0.0, qz: float=0.0) → None

Component rcl.ScalarOscDecoder

class rcl.ScalarOscDecoder(self: rcl.ScalarOscDecoder, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) → None
setup(self: rcl.ScalarOscDecoder, dataType: str) → None

Component rcl.SceneDecoder

class rcl.SceneDecoder(self: rcl.SceneDecoder, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) → None

Component rcl.SceneEncoder

class rcl.SceneEncoder(self: rcl.SceneEncoder, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None) → None

Component rcl.SignalRouting

class rcl.SignalRouting(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.SignalRouting, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, inputWidth: int, outputWidth: int, controlInput: bool=True) -> None

Constructor with an empty initial routing.

  1. __init__(self: rcl.SignalRouting, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, inputWidth: int, outputWidth: int, initialRouting: pml.SignalRoutingParameter, controlInput: bool=True) -> None

Constructor with an initial routing list.

Component rcl.SparseGainMatrix

class rcl.SparseGainMatrix(self: rcl.SparseGainMatrix, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, numberOfInputs: int, numberOfOutputs: int, interpolationSteps: int, maxRoutingPoints: int, initialRoutings: rbbl.SparseGainRoutingList=[], controlInputs: rcl.SparseGainMatrix.ControlPortConfig=ControlPortConfig.No) → None

Component rcl.TimeFrequencyTransform

class rcl.TimeFrequencyTransform(*args, **kwargs)

Overloaded function.

  1. __init__(self: rcl.TimeFrequencyTransform, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfChannels: int, dftLength: int, windowLength: int, hopSize: int, fftImplementation: str=’default’) -> None
  2. __init__(self: rcl.TimeFrequencyTransform, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfChannels: int, dftLength: int, window: efl.BasicVectorFloat, hopSize: int, fftImplementation: str=’default’) -> None
  3. __init__(self: rcl.TimeFrequencyTransform, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfChannels: int, dftLength: int, window: List[float], hopSize: int, fftImplementation: str=’default’) -> None

Component rcl.TimeFrequencyInverseTransform

class rcl.TimeFrequencyInverseTransform(self: rcl.TimeFrequencyInverseTransform, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, numberOfChannels: int, dftLength: int, hopSize: int, fftImplementation: str='default') → None

Component rcl.UdpReceiver

class rcl.UdpReceiver(self: rcl.UdpReceiver, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, port: int, mode: rcl.UdpReceiver.Mode=Mode.Asynchronous) → None

Component rcl.UdpSender

class rcl.UdpSender(self: rcl.UdpSender, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, sendPort: int=0, receiverAddress: str, receiverPort: int, mode: rcl.UdpSender.Mode=Mode.Asynchronous) → None

Module signalflows overview

The signalflows contains composite components that are part of the standard distribution of the VISR.

Component signalflows.CoreRenderer

class signalflows.CoreRenderer(self: signalflows.CoreRenderer, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent=None, loudspeakerConfiguration: panning.LoudspeakerArray, numberOfInputs: int, numberOfOutputs: int, interpolationPeriod: int, diffusionFilters: efl.BasicMatrixFloat, trackingConfiguration: str='', numberEqSections: int=0, reverbConfig: str='', frequencyDependentPanning: bool=False) → None

Component signalflows.BaselineRenderer

class signalflows.BaselineRenderer(self: signalflows.BaselineRenderer, context: visr.SignalFlowContext, name: str, parent: visr.CompositeComponent, loudspeakerConfig: panning.LoudspeakerArray, numberOfInputs: int, numberOfOutputs: int, interpolationPeriod: int, diffusionFilters: pml.MatrixParameterFloat, trackingConfiguration: str='', sceneReceiverPort: int=4242, numberEqSections: int=0, reverbConfig: str='', frequencyDependentPanning: bool=False) → None