VISR  0.11.6
Versatile Interactive Scene Renderer
visr::rcl::FirFilterMatrix Class Reference

#include <fir_filter_matrix.hpp>

Inheritance diagram for visr::rcl::FirFilterMatrix:
visr::AtomicComponent visr::Component

Public Types

enum  ControlPortConfig { ControlPortConfig::None = 0, ControlPortConfig::Filters = 1 << 0, ControlPortConfig::Routings = 1 << 1, ControlPortConfig::All = Filters | Routings }
 

Public Member Functions

 FirFilterMatrix (SignalFlowContext const &context, char const *name, CompositeComponent *parent=nullptr)
 
 FirFilterMatrix (SignalFlowContext const &context, char const *name, CompositeComponent *parent, std::size_t numberOfInputs, std::size_t numberOfOutputs, std::size_t filterLength, std::size_t maxFilters, std::size_t maxRoutings, efl::BasicMatrix< SampleType > const &filters=efl::BasicMatrix< SampleType >(), rbbl::FilterRoutingList const &routings=rbbl::FilterRoutingList(), ControlPortConfig controlInputs=ControlPortConfig::None, char const *fftImplementation="default")
 
 ~FirFilterMatrix ()
 
void setup (std::size_t numberOfInputs, std::size_t numberOfOutputs, std::size_t filterLength, std::size_t maxFilters, std::size_t maxRoutings, efl::BasicMatrix< SampleType > const &filters=efl::BasicMatrix< SampleType >(), rbbl::FilterRoutingList const &routings=rbbl::FilterRoutingList(), ControlPortConfig controlInputs=ControlPortConfig::None, char const *fftImplementation="default")
 
void process ()
 
void clearRoutings ()
 
void addRouting (std::size_t inputIdx, std::size_t outputIdx, std::size_t filterIdx, SampleType const gain=static_cast< SampleType >(1.0))
 
void addRouting (rbbl::FilterRouting const &routing)
 
void addRoutings (rbbl::FilterRoutingList const &routings)
 
void setRoutings (rbbl::FilterRoutingList const &routings)
 
bool removeRouting (std::size_t inputIdx, std::size_t outputIdx)
 
void clearFilters ()
 
void setFilter (std::size_t filterIdx, SampleType const *const impulseResponse, std::size_t filterLength, std::size_t alignment=0)
 
void setFilters (efl::BasicMatrix< SampleType > const &filterSet)
 
- Public Member Functions inherited from visr::AtomicComponent
 AtomicComponent (SignalFlowContext const &context, char const *name, CompositeComponent *parent=nullptr)
 
 AtomicComponent (AtomicComponent const &)=delete
 
 AtomicComponent (AtomicComponent &&)=delete
 
virtual ~AtomicComponent () override
 
- Public Member Functions inherited from visr::Component
 Component (SignalFlowContext const &context, char const *componentName, CompositeComponent *parent)
 
 Component (SignalFlowContext const &context, std::string const &componentName, CompositeComponent *parent)
 
 Component (Component const &)=delete
 
 Component (Component &&)=delete
 
Componentoperator= (Component const &)=delete
 
Componentoperator= (Component &&)=delete
 
virtual ~Component ()
 
std::string const & name () const
 
std::string fullName () const
 
void status (StatusMessage::Kind status, char const *message)
 
template<typename ... MessageArgs>
void status (StatusMessage::Kind status, MessageArgs ... args)
 
bool isComposite () const
 
AudioPortBaseaudioPort (char const *portName)
 
AudioPortBase const & audioPort (char const *portName) const
 
AudioPortBaseaudioPort (std::string const &portName)
 
AudioPortBase const & audioPort (std::string const &portName) const
 
ParameterPortBaseparameterPort (char const *portName)
 
ParameterPortBase const & parameterPort (char const *portName) const
 
ParameterPortBaseparameterPort (std::string const &portName)
 
ParameterPortBase const & parameterPort (std::string const &portName) const
 
SamplingFrequencyType samplingFrequency () const
 
std::size_t period () const
 
bool isTopLevel () const
 
impl::ComponentImplementationimplementation ()
 
impl::ComponentImplementation const & implementation () const
 

Additional Inherited Members

- Static Public Member Functions inherited from visr::Component
static const std::string & nameSeparator ()
 
- Protected Member Functions inherited from visr::Component
 Component (impl::ComponentImplementation *impl)
 

Detailed Description

A multiple input/multiple output FIR filter This class has one input port named "in" and one output port named "out". The widths of the input and the output port are set by the parameters numberOfInputs and numberOfOutputs in the setup() method.

Member Enumeration Documentation

◆ ControlPortConfig

Enumeration to select the instantiated control ports.

Enumerator
None 

No control inputs.

Filters 

Filter control input active.

Routings 

Routing control input active.

All 

All control inputs active.

Constructor & Destructor Documentation

◆ FirFilterMatrix() [1/2]

visr::rcl::FirFilterMatrix::FirFilterMatrix ( SignalFlowContext const &  context,
char const *  name,
CompositeComponent parent = nullptr 
)
explicit

Constructor.

Parameters
contextConfiguration object containing basic execution parameters.
nameThe name of the component. Must be unique within the containing composite component (if there is one).
parentPointer to a containing component if there is one. Specify nullptr in case of a top-level component

◆ FirFilterMatrix() [2/2]

visr::rcl::FirFilterMatrix::FirFilterMatrix ( SignalFlowContext const &  context,
char const *  name,
CompositeComponent parent,
std::size_t  numberOfInputs,
std::size_t  numberOfOutputs,
std::size_t  filterLength,
std::size_t  maxFilters,
std::size_t  maxRoutings,
efl::BasicMatrix< SampleType > const &  filters = efl::BasicMatrix<SampleType>(),
rbbl::FilterRoutingList const &  routings = rbbl::FilterRoutingList(),
ControlPortConfig  controlInputs = ControlPortConfig::None,
char const *  fftImplementation = "default" 
)
explicit

Constructor to create a fully initialised component (no need to call setup() ).

Parameters
contextConfiguration object containing basic execution parameters.
nameThe name of the component. Must be unique within the containing composite component (if there is one).
parentPointer to a containing component if there is one. Specify nullptr in case of a top-level component
numberOfInputsThe number of input signals.
numberOfOutputsThe number of output signals.
filterLengthThe maximum admissible FIR filter length.
maxFiltersThe maximum number of filter specifications (single FIR filters) that can be stored within the component.
maxRoutingsThe maximum number of routings (i.e., the maximum number of simultaneously convolved signal/filter combinations supported by this filter.
filtersThe initial FIR filters stored as matrix rows. The filters 0...filters.numberOfRows() are initialised to these FIR filters, the remaining filter specifications are set to zero. Default: empty matrix, i.e., all filters are zero-initialised.
routingsInitial set of filter routings. Default value: empty routing list, i.e., no signal routings are active initially.
controlInputsEnumeration to select which parameter update ports are instantiated. Default: ControlPortConfig::None
fftImplementationname of the FFt library to be used. See rbbl::FftWrapperFactory for available names. Optional parameter, default is "default", i.e., the default FFt library for the platform.

◆ ~FirFilterMatrix()

visr::rcl::FirFilterMatrix::~FirFilterMatrix ( )

Desctructor

Member Function Documentation

◆ addRouting() [1/2]

void visr::rcl::FirFilterMatrix::addRouting ( std::size_t  inputIdx,
std::size_t  outputIdx,
std::size_t  filterIdx,
SampleType const  gain = static_cast<SampleType>(1.0) 
)

Add a routing point in the filter matrix. If there is already an entry for the combination (inputIdx, outputIdx ), the existing rntry is replaced.

Parameters
inputIdxThe input signal index for the routing.
outputIdxThe output signal index for this routing.
filterIdxThe filter index for this routing (pointing to an entry to the filter container of this component)
gainAn optional, frequency-independent gain for this routing. Optional argument, defaults to 1.0.
Exceptions
std::invalid_argumentIf inputIdx, outputIdx, or filterIdx exceed their respective admissible ranges

◆ addRouting() [2/2]

void visr::rcl::FirFilterMatrix::addRouting ( rbbl::FilterRouting const &  routing)

◆ addRoutings()

void visr::rcl::FirFilterMatrix::addRoutings ( rbbl::FilterRoutingList const &  routings)

◆ clearFilters()

void visr::rcl::FirFilterMatrix::clearFilters ( )

◆ clearRoutings()

void visr::rcl::FirFilterMatrix::clearRoutings ( )

Clear all routings points. The filters remain initialised.

◆ process()

void visr::rcl::FirFilterMatrix::process ( )
virtual

The process method performs the multichannel convolution.

Implements visr::AtomicComponent.

◆ removeRouting()

bool visr::rcl::FirFilterMatrix::removeRouting ( std::size_t  inputIdx,
std::size_t  outputIdx 
)

◆ setFilter()

void visr::rcl::FirFilterMatrix::setFilter ( std::size_t  filterIdx,
SampleType const *const  impulseResponse,
std::size_t  filterLength,
std::size_t  alignment = 0 
)

◆ setFilters()

void visr::rcl::FirFilterMatrix::setFilters ( efl::BasicMatrix< SampleType > const &  filterSet)

◆ setRoutings()

void visr::rcl::FirFilterMatrix::setRoutings ( rbbl::FilterRoutingList const &  routings)

◆ setup()

void visr::rcl::FirFilterMatrix::setup ( std::size_t  numberOfInputs,
std::size_t  numberOfOutputs,
std::size_t  filterLength,
std::size_t  maxFilters,
std::size_t  maxRoutings,
efl::BasicMatrix< SampleType > const &  filters = efl::BasicMatrix<SampleType>(),
rbbl::FilterRoutingList const &  routings = rbbl::FilterRoutingList(),
ControlPortConfig  controlInputs = ControlPortConfig::None,
char const *  fftImplementation = "default" 
)

Setup method to initialise the object and set the parameters.

Parameters
numberOfInputsThe number of input signals.
numberOfOutputsThe number of output signals.
filterLengthThe maximum admissible FIR filter length.
maxFiltersThe maximum number of filter specifications (single FIR filters) that can be stored within the component.
maxRoutingsThe maximum number of routings (i.e., the maximum number of simultaneously convolved signal/filter combinations supported by this filter.
filtersThe initial FIR filters stored as matrix rows. The filters 0...filters.numberOfRows() are initialised to these FIR filters, the remaining filter specifications are set to zero. Default: empty matrix, i.e., all filters are zero-initialised.
routingsInitial set of filter routings. Default value: empty routing list, i.e., no signal routings are active initially.
controlInputsEnumeration to select which parameter update ports are instantiated. Default: ControlPortConfig::None
fftImplementationname of the FFt library to be used. See rbbl::FftWrapperFactory for available names. Optional parameter, default is "default", i.e., the default FFt library for the platform.

The documentation for this class was generated from the following files: