VISR  0.11.8
Versatile Interactive Scene Renderer
visr_renderer.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_MAXMSP_VISR_RENDERER_VISR_RENDERER_HPP_INCLUDED
4 #define VISR_MAXMSP_VISR_RENDERER_VISR_RENDERER_HPP_INCLUDED
5 
6 // these parameters could easily go into a private implementation object.
9 
10 // We have to include these files last because they pull in the Max/MSP headers which do some very nasty
11 // stuff such as defining macros min and max.
14 
15 #include <cstddef>
16 #include <memory>
17 
18 namespace visr
19 {
20 // Forward declarations
21 namespace panning
22 {
23 class LoudspeakerArray;
24 }
25 namespace signalflows
26 {
27 class BaselineRenderer;
28 };
29 namespace maxmsp
30 {
31 namespace visr_renderer
32 {
33 
35 {
36 public:
37 
38  explicit VisrRenderer( t_pxobject & maxProxy, short argc, t_atom *argv );
39 
40  ~VisrRenderer();
41 
42  /*virtual*/ void initDsp( t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags);
43 
44  /*virtual*/ void perform( t_object *dsp64, double **ins,
45  long numins, double **outs, long numouts,
46  long sampleframes, long flags, void *userparam);
47 
48  /*virtual*/ void assist( void *b, long msg, long arg, char *dst );
49 
50 
51  /*virtual*/ void getFloat( double f );
52 
53 private:
59  bool mConfigInitialised;
60 
61 
66  std::unique_ptr<SignalFlowContext> mContext;
67 
68  std::size_t mNumberOfObjects;
69  std::size_t mNumberOfOutputs;
70 
71  std::size_t mNumberOfEqSections;
72 
73  std::unique_ptr<panning::LoudspeakerArray> mArrayConfiguration;
74 
75  std::unique_ptr< efl::BasicMatrix<SampleType> > mDiffusionFilters;
76 
77  std::string mTrackingConfiguration;
78 
79  std::string mReverbConfiguration;
80 
81  std::size_t mSceneReceiverPort;
82 
83  std::unique_ptr<signalflows::BaselineRenderer> mFlow;
84  std::unique_ptr<maxmsp::SignalFlowWrapper<double> > mFlowWrapper;
85 };
86 
87 } // namespace visr_renderer
88 } // namespace maxmsp
89 } // namespace visr
90 
91 #endif // #ifndef VISR_MAXMSP_VISR_RENDERER_VISR_RENDERER_HPP_INCLUDED
Definition: visr_renderer.hpp:34
void perform(t_object *dsp64, double **ins, long numins, double **outs, long numouts, long sampleframes, long flags, void *userparam)
Definition: visr_renderer.cpp:233
Definition: options.cpp:10
~VisrRenderer()
Definition: visr_renderer.cpp:148
void initDsp(t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags)
Definition: visr_renderer.cpp:170
void assist(void *b, long msg, long arg, char *dst)
Definition: visr_renderer.cpp:260
void getFloat(double f)
Definition: visr_renderer.cpp:152
VisrRenderer(t_pxobject &maxProxy, short argc, t_atom *argv)
Definition: visr_renderer.cpp:62
Definition: external_base.hpp:40