VISR  0.11.1
Versatile Interactive Scene Renderer
interpolating_convolver_uniform.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRBBL_INTERPOLATING_CONVOLVER_UNIFORM_HPP_INCLUDED
4 #define VISR_LIBRBBL_INTERPOLATING_CONVOLVER_UNIFORM_HPP_INCLUDED
5 
6 // #include "core_convolver_uniform.hpp"
8 #include "export_symbols.hpp"
9 #include "filter_routing.hpp"
11 
12 #include <libefl/basic_matrix.hpp>
13 #include <libefl/basic_vector.hpp>
14 
15 #include <cassert>
16 #include <complex>
17 #include <initializer_list>
18 #include <map>
19 #include <memory>
20 #include <vector>
21 
22 namespace visr
23 {
24 namespace rbbl
25 {
26 
33 template< typename SampleType >
34 class VISR_RBBL_LIBRARY_SYMBOL InterpolatingConvolverUniform
35 {
36 public:
38 
57  explicit InterpolatingConvolverUniform( std::size_t numberOfInputs,
58  std::size_t numberOfOutputs,
59  std::size_t blockLength,
60  std::size_t maxFilterLength,
61  std::size_t maxRoutingPoints,
62  std::size_t maxFilterEntries,
63  std::size_t numberOfInterpolants,
64  std::size_t transitionSamples,
65  FilterRoutingList const & initialRoutings = FilterRoutingList(),
66  InterpolationParameterSet const & initialInterpolants = InterpolationParameterSet(),
68  std::size_t alignment = 0,
69  char const * fftImplementation = "default" );
70 
75 
76  std::size_t numberOfInputs() const { return mConvolver.numberOfInputs(); }
77 
78  std::size_t numberOfOutputs() const { return mConvolver.numberOfOutputs(); }
79 
80  std::size_t blockLength() const { return mConvolver.blockLength(); }
81 
82  std::size_t maxNumberOfRoutingPoints() const { return mConvolver.maxNumberOfRoutingPoints(); }
83 
84  std::size_t maxNumberOfFilterEntries() const { return mFilters.numberOfRows(); }
85 
86  std::size_t maxFilterLength() const { return mConvolver.maxFilterLength(); }
87 
88  std::size_t numberOfRoutingPoints( ) const { return mConvolver.numberOfRoutingPoints(); }
89 
90  void process( SampleType const * const input, std::size_t inputStride,
91  SampleType * const output, std::size_t outputStride,
92  std::size_t alignment = 0 );
93 
101  void clearRoutingTable( );
102 
110  void initRoutingTable( FilterRoutingList const & routings );
111 
117  void setRoutingEntry( FilterRouting const & routing );
118 
124  void setRoutingEntry( std::size_t inputIdx, std::size_t outputIdx, std::size_t filterIdx, SampleType gain );
125 
129  bool removeRoutingEntry( std::size_t inputIdx, std::size_t outputIdx );
130 
138  void clearFilters( );
139 
149  void initFilters( efl::BasicMatrix<SampleType> const & newFilters );
150 
153  void setImpulseResponse( SampleType const * ir, std::size_t filterLength, std::size_t filterIdx, std::size_t alignment = 0 );
154 
162  std::size_t numberOfInterpolants() const;
163 
167  void setInterpolant( rbbl::InterpolationParameter const & param );
168 
173  void setInterpolants( InterpolationParameterSet const & param );
174 
178  void clearInterpolants();
180 
181 private:
182 
184 
190 
195 
196  std::size_t const mNumberOfInterpolants;
197 
198 };
199 } // namespace rbbl
200 } // namespace visr
201 
202 #endif // #ifndef VISR_LIBRBBL_INTERPOLATING_CONVOLVER_UNIFORM_HPP_INCLUDED
std::size_t maxNumberOfFilterEntries() const
Definition: interpolating_convolver_uniform.hpp:84
std::size_t maxFilterLength() const
Definition: interpolating_convolver_uniform.hpp:86
Definition: filter_routing.hpp:22
Definition: interpolation_parameter.hpp:85
Definition: crossfading_convolver_uniform.hpp:31
Definition: options.cpp:10
Definition: interpolation_parameter.hpp:24
std::size_t maxNumberOfRoutingPoints() const
Definition: interpolating_convolver_uniform.hpp:82
std::size_t blockLength() const
Definition: interpolating_convolver_uniform.hpp:80
std::size_t numberOfRoutingPoints() const
Definition: interpolating_convolver_uniform.hpp:88
std::size_t numberOfInputs() const
Definition: interpolating_convolver_uniform.hpp:76
typename CoreConvolverUniform< SampleType >::FrequencyDomainType FrequencyDomainType
Definition: crossfading_convolver_uniform.hpp:34
Definition: basic_vector.hpp:28
float SampleType
Definition: constants.hpp:14
Definition: interpolating_convolver_uniform.hpp:34
std::size_t numberOfOutputs() const
Definition: interpolating_convolver_uniform.hpp:78
typename CrossfadingConvolverUniform< SampleType >::FrequencyDomainType FrequencyDomainType
Definition: interpolating_convolver_uniform.hpp:37
Definition: filter_routing.hpp:81