NAP
fluxmeasurementcomponent.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local includes
8 #include "fftutils.h"
9 
10 // External includes
11 #include <audio/service/audioservice.h>
12 #include <component.h>
13 #include <smoothdamp.h>
14 
15 namespace nap
16 {
17  class FluxMeasurementComponentInstance;
18  class FFTAudioNodeComponentInstance;
19 
27  class NAPAPI FluxMeasurementComponent : public Component
28  {
29  RTTI_ENABLE(Component)
31  public:
32  void getDependentComponents(std::vector<rtti::TypeInfo>& components) const override;
33 
34  float mMinHz = 0.0f;
35  float mMaxHz = 44100.0f;
36 
37  float mScale = 1.0f;
38  float mDecay = 0.95f;
39  };
40 
41 
46  {
47  RTTI_ENABLE(ComponentInstance)
48  public:
49  // Constructor
51  ComponentInstance(entity, resource) {}
52 
53  // Initialize the component
54  bool init(utility::ErrorState& errorState) override;
55 
60  virtual void update(double deltaTime) override;
61 
65  float getFlux() const { return mFlux; }
66 
71  void setDecay(float decay) { mDecay = decay; }
72 
77  void setScale(float scale) { mScale = scale; }
78 
79  private:
80  FluxMeasurementComponent* mResource = nullptr;
81  audio::AudioService* mAudioService = nullptr;
82  FFTAudioNodeComponentInstance* mFFTAudioComponent = nullptr;
83 
84  FFTBuffer::AmplitudeSpectrum mPreviousBuffer;
85 
86  float mMinHz = 0.0f;
87  float mMaxHz = 44100.0f;
88 
89  float mScale = 1.0f;
90  float mDecay = 0.95f;
91  float mFlux = 0.0f;
92  };
93 }
nap::FluxMeasurementComponentInstance
Definition: fluxmeasurementcomponent.h:45
nap::FluxMeasurementComponentInstance::FluxMeasurementComponentInstance
FluxMeasurementComponentInstance(EntityInstance &entity, Component &resource)
Definition: fluxmeasurementcomponent.h:50
nap::FFTAudioNodeComponentInstance
Definition: fftaudionodecomponent.h:43
nap::FluxMeasurementComponentInstance::getFlux
float getFlux() const
Definition: fluxmeasurementcomponent.h:65
nap::utility::ErrorState
Definition: errorstate.h:19
nap::FluxMeasurementComponent
Definition: fluxmeasurementcomponent.h:27
nap::audio::AudioService
Definition: audioservice.h:26
nap::FluxMeasurementComponentInstance::setDecay
void setDecay(float decay)
Definition: fluxmeasurementcomponent.h:71
nap::EntityInstance
Definition: entity.h:34
nap::ComponentInstance
Definition: component.h:43
nap::Component
Definition: component.h:151
nap::FFTBuffer::AmplitudeSpectrum
std::vector< float > AmplitudeSpectrum
Definition: fftbuffer.h:23
nap
Definition: templateapp.h:17
nap::FluxMeasurementComponentInstance::setScale
void setScale(float scale)
Definition: fluxmeasurementcomponent.h:77