VISR  0.11.1
Versatile Interactive Scene Renderer
core_renderer.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_SIGNALFLOWS_CORE_HPP_INCLUDED
4 #define VISR_SIGNALFLOWS_CORE_HPP_INCLUDED
5 
6 #include "export_symbols.hpp"
7 
10 #include <libvisr/audio_output.hpp>
12 
13 #include <librcl/add.hpp>
15 #include <librcl/delay_vector.hpp>
17 #include <librcl/gain_matrix.hpp>
18 #include <librcl/gain_vector.hpp>
22 #include <librcl/null_source.hpp>
25 
28 #include <libpml/object_vector.hpp>
29 
30 #include <memory>
31 #include <string>
32 
33 namespace visr
34 {
35 
36 // Forward declarations
37 namespace reverbobject
38 {
39 class ReverbObjectRenderer;
40 }
41 
42 namespace signalflows
43 {
44 
49 class VISR_SIGNALFLOWS_LIBRARY_SYMBOL CoreRenderer: public CompositeComponent
50 {
51 public:
74  explicit CoreRenderer( SignalFlowContext const & context,
75  char const * name,
76  CompositeComponent * parent,
77  panning::LoudspeakerArray const & loudspeakerConfiguration,
78  std::size_t numberOfInputs,
79  std::size_t numberOfOutputs,
80  std::size_t interpolationPeriod,
81  efl::BasicMatrix<SampleType> const & diffusionFilters,
82  std::string const & trackingConfiguration,
83  std::size_t numberOfObjectEqSections,
84  std::string const & reverbConfig,
85  bool frequencyDependentPanning );
86 
87  ~CoreRenderer();
88 
89 private:
90  AudioInput mObjectSignalInput;
91 
92  AudioOutput mLoudspeakerOutput;
93 
95 
100  std::unique_ptr<ParameterInput< pml::MessageQueueProtocol, pml::ListenerPosition > > mListenerPositionPort;
101 
102 
103  rcl::ObjectGainEqCalculator mObjectInputGainEqCalculator;
104 
110  rcl::GainVector mObjectGain;
111 
112  rcl::BiquadIirFilter mObjectEq;
113 
114  rcl::DelayVector mOutputAdjustment;
115 
116  rcl::PanningCalculator mGainCalculator;
117 
118  std::unique_ptr< rcl::HoaAllRadGainCalculator > mAllradGainCalculator;
119 
120  rcl::GainMatrix mVbapMatrix;
121 
125  std::unique_ptr<rcl::GainMatrix> mVbipMatrix;
126 
131  std::unique_ptr<rcl::BiquadIirFilter> mPanningFilterbank;
132 
137  rcl::GainMatrix mDiffuseMatrix;
138 
139  rcl::FirFilterMatrix mDecorrelator;
140 
141  rcl::Add mDirectDiffuseMix;
142 
143  rcl::GainMatrix mSubwooferMix;
144 
149  rcl::NullSource mNullSource;
150 
155 
157 
158  std::unique_ptr<TrackingPositionInput> mTrackingPositionInput;
159 
160  std::unique_ptr<rcl::ListenerCompensation> mListenerCompensation;
161 
162  std::unique_ptr<rcl::DelayVector> mListenerGainDelayCompensation;
163 
165 
166  std::unique_ptr<reverbobject::ReverbObjectRenderer> mReverbRenderer;
167 
168  std::unique_ptr<rcl::BiquadIirFilter> mOutputEqualisationFilter;
169 
171 };
172 
173 } // namespace signalflows
174 } // namespace visr
175 
176 #endif // VISR_SIGNALFLOWS_CORE_HPP_INCLUDED
Definition: delay_vector.hpp:42
Definition: add.hpp:27
Definition: null_source.hpp:23
Definition: fir_filter_matrix.hpp:43
Definition: gain_vector.hpp:43
Definition: options.cpp:10
Definition: core_renderer.hpp:49
Definition: parameter_input.hpp:45
Definition: composite_component.hpp:29
Definition: LoudspeakerArray.h:42
Definition: signal_flow_context.hpp:15
Definition: object_gain_eq_calculator.hpp:42
Definition: biquad_iir_filter.hpp:47
Definition: panning_calculator.hpp:51
Definition: gain_matrix.hpp:46