VISR  0.11.8
Versatile Interactive Scene Renderer
cap_gain_calculator.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRCL_CAP_GAIN_CALCULATOR_HPP_INCLUDED
4 #define VISR_LIBRCL_CAP_GAIN_CALCULATOR_HPP_INCLUDED
5 
6 #include "export_symbols.hpp"
7 
11 
16 #include <libpml/object_vector.hpp>
17 
19 #include <libpanning/CAP.h>
20 #include <libpanning/XYZ.h>
21 
22 #include <vector>
23 
24 namespace visr
25 {
26 // forward declarations
27 namespace objectmodel
28 {
29 class ObjectVector;
30 }
31 namespace efl
32 {
33 template< typename SampleType > class BasicMatrix;
34 }
35 namespace pml
36 {
37 class ListenerPosition;
38 }
39 
40 namespace rcl
41 {
42 
46 class VISR_RCL_LIBRARY_SYMBOL CAPGainCalculator: public AtomicComponent
47 {
48 public:
53 
62  explicit CAPGainCalculator( SignalFlowContext const & context,
63  char const * name,
64  CompositeComponent * parent,
65  std::size_t numberOfObjects,
66  panning::LoudspeakerArray const & arrayConfig );
67 
71  CAPGainCalculator( CAPGainCalculator const & ) = delete;
72 
73 
78 
82  void process() override;
83 
84 private:
91  void process( objectmodel::ObjectVector const & objects,
92  pml::ListenerPosition const & listener,
93  efl::BasicMatrix<CoefficientType> & gainMatrix );
94 
98  std::size_t const mNumberOfObjects;
99 
104  std::size_t const mNumberOfLoudspeakers;
105 
110  std::vector<panning::XYZ> mSourcePositions;
111 
115  panning::CAP mCapCalculator;
116 
120  std::valarray<objectmodel::LevelType> mLevels;
121 
123 
125 
127 };
128 
129 } // namespace rcl
130 } // namespace visr
131 
132 #endif // #ifndef VISR_LIBRCL_CAP_GAIN_CALCULATOR_HPP_INCLUDED
Definition: parameter_output.hpp:45
Definition: options.cpp:10
Definition: atomic_component.hpp:21
Definition: parameter_input.hpp:45
Definition: composite_component.hpp:29
Definition: LoudspeakerArray.h:42
Definition: signal_flow_context.hpp:15
Definition: CAP.h:28
Definition: cap_gain_calculator.hpp:46
Definition: listener_position.hpp:31
Definition: object_vector.hpp:22
float SampleType
Definition: constants.hpp:14
visr::SampleType CoefficientType
Definition: cap_gain_calculator.hpp:52