VISR  0.11.7
Versatile Interactive Scene Renderer
time_frequency_transform.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRCL_TIME_FREQUENCY_TRANSFORM_HPP_INCLUDED
4 #define VISR_LIBRCL_TIME_FREQUENCY_TRANSFORM_HPP_INCLUDED
5 
6 #include "export_symbols.hpp"
7 
9 #include <libvisr/constants.hpp>
10 #include <libvisr/audio_input.hpp>
12 
13 #include <libefl/basic_vector.hpp>
14 
17 
19 
20 #include <cstddef> // for std::size_t
21 #include <memory>
22 
23 namespace visr
24 {
25 
26 // Forward declarations
27 namespace rbbl
28 {
29 template< typename SampleType >
30 class FftWrapperBase;
31 }
32 
33 namespace rcl
34 {
35 
39 class VISR_RCL_LIBRARY_SYMBOL TimeFrequencyTransform: public AtomicComponent
40 {
41 public:
43 
56  explicit TimeFrequencyTransform( SignalFlowContext const & context,
57  char const * name,
58  CompositeComponent * parent,
59  std::size_t numberOfChannels,
60  std::size_t dftLength,
61  std::size_t windowLength,
62  std::size_t hopSize,
63  char const * fftImplementation = "default" );
64 
77  explicit TimeFrequencyTransform( SignalFlowContext const & context,
78  char const * name,
79  CompositeComponent * parent,
80  std::size_t numberOfChannels,
81  std::size_t dftLength,
82  efl::BasicVector<SampleType> const & window,
83  std::size_t hopSize,
84  char const * fftImplementation = "default" );
85 
89  ~TimeFrequencyTransform() override;
90 
91  void process( ) override;
92 
93 private:
94 
95  std::size_t const mAlignment;
96 
100  std::size_t const mNumberOfChannels;
101 
105  std::size_t const mDftlength;
106 
107  std::size_t const mWindowLength;
108 
109  std::size_t mDftSamplesPerPeriod;
110 
111  std::size_t const mHopSize;
112 
114 
118  std::unique_ptr< rbbl::FftWrapperBase<SampleType> > mFftWrapper;
119 
124 
125  efl::BasicVector<SampleType> mCalcBuffer;
126 
127  AudioInput mInput;
128 
133 };
134 
135 } // namespace rcl
136 } // namespace visr
137 
138 #endif // #ifndef VISR_LIBRCL_TIME_FREQUENCY_TRANSFORM_HPP_INCLUDED
Definition: parameter_output.hpp:45
Definition: time_frequency_transform.hpp:39
visr::SampleType SampleType
Definition: time_frequency_transform.hpp:42
Definition: options.cpp:10
Definition: atomic_component.hpp:21
Definition: composite_component.hpp:29
Definition: signal_flow_context.hpp:15
float SampleType
Definition: constants.hpp:14