VISR  0.11.1
Versatile Interactive Scene Renderer
matrix_convolver.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_MAXMSP_MATRIX_CONVOLVER_MATRIX_CONVOLVER_HPP_INCLUDED
4 #define VISR_MAXMSP_MATRIX_CONVOLVER_MATRIX_CONVOLVER_HPP_INCLUDED
5 
6 
7 // these parameters could easily go into a private implementation object.
9 
12 
14 
15 // We have to include these files last because they pull in the Max/MSP headers which do some very nasty
16 // stuff such as defining macros min and max.
19 
20 #include <cstddef>
21 #include <memory>
22 
23 namespace visr
24 {
25 namespace maxmsp
26 {
27 namespace matrix_convolver
28 {
29 
31 {
32 public:
33 
34  explicit MatrixConvolver( t_pxobject & maxProxy, short argc, t_atom *argv );
35 
37 
38  /*virtual*/ void initDsp( t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) override;
39 
40  /*virtual*/ void perform( t_object *dsp64, double **ins,
41  long numins, double **outs, long numouts,
42  long sampleframes, long flags, void *userparam) override;
43 
44  /*virtual*/ void assist( void *b, long msg, long arg, char *dst ) override;
45 
46 
47  /*virtual*/ void getFloat( double f ) override;
48 
49 private:
53  std::unique_ptr<SignalFlowContext> mContext;
54 
55  std::size_t mNumberOfInputs;
56  std::size_t mNumberOfOutputs;
57 
58  std::size_t mMaxFilterLength;
59  std::size_t mNumMaxFilters;
60 
61  rbbl::FilterRoutingList mRoutings;
62 
63  std::string mFilterList;
64  rbbl::IndexSequence mIndexOffsets;
65 
66  std::string mFftLibrary;
67 
68  std::unique_ptr<rcl::FirFilterMatrix> mFlow;
69  std::unique_ptr<SignalFlowWrapper<double> > mFlowWrapper;
70 
72 };
73 
74 } // namespace matrix_convolver
75 } // namespace maxmsp
76 } // namespace visr
77 
78 #endif // #ifndef VISR_MAXMSP_MATRIX_CONVOLVER_MATRIX_CONVOLVER_HPP_INCLUDED
void assist(void *b, long msg, long arg, char *dst) override
Definition: matrix_convolver.cpp:222
~MatrixConvolver()
Definition: matrix_convolver.cpp:121
Definition: index_sequence.hpp:22
void initDsp(t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) override
Definition: matrix_convolver.cpp:143
Definition: options.cpp:10
void getFloat(double f) override
Definition: matrix_convolver.cpp:125
void perform(t_object *dsp64, double **ins, long numins, double **outs, long numouts, long sampleframes, long flags, void *userparam) override
Definition: matrix_convolver.cpp:189
Definition: matrix_convolver.hpp:30
Definition: external_base.hpp:40
MatrixConvolver(t_pxobject &maxProxy, short argc, t_atom *argv)
Definition: matrix_convolver.cpp:57
Definition: filter_routing.hpp:81