NAP
fftaudionodecomponent.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 "fftnode.h"
9 
10 // Nap includes
11 #include <component.h>
12 #include <audio/utility/safeptr.h>
13 
14 // Audio includes
15 #include <audio/component/audiocomponentbase.h>
16 #include <audio/node/filternode.h>
17 
18 namespace nap
19 {
20  class FFTAudioNodeComponentInstance;
21 
25  class NAPAPI FFTAudioNodeComponent : public Component
26  {
27  RTTI_ENABLE(Component)
29  public:
31  Component() {}
32 
35  int mChannel = 0;
36  };
37 
38 
44  {
45  RTTI_ENABLE(ComponentInstance)
46  public:
48  ComponentInstance(entity, resource) {}
49 
50  // Initialize the component
51  virtual bool init(utility::ErrorState& errorState) override;
52 
56  void setInput(audio::AudioComponentBaseInstance& input);
57 
61  virtual const FFTBuffer& getFFTBuffer() const { assert(mFFTBuffer != nullptr); return *mFFTBuffer; }
62 
66  virtual FFTBuffer& getFFTBuffer() { assert(mFFTBuffer != nullptr); return *mFFTBuffer; }
67 
68  private:
69  ComponentInstancePtr<audio::AudioComponentBase> mInput = { this, &FFTAudioNodeComponent::mInput }; // Pointer to component that outputs this components audio input
70 
71  FFTAudioNodeComponent* mResource = nullptr;
72  audio::SafeOwner<FFTNode> mFFTNode = nullptr; // Node that computes the FFT
73  audio::AudioService* mAudioService = nullptr;
74  FFTBuffer* mFFTBuffer = nullptr;
75  };
76 }
nap::FFTAudioNodeComponent
Definition: fftaudionodecomponent.h:25
nap::FFTAudioNodeComponentInstance
Definition: fftaudionodecomponent.h:43
nap::FFTAudioNodeComponentInstance::getFFTBuffer
virtual FFTBuffer & getFFTBuffer()
Definition: fftaudionodecomponent.h:66
nap::FFTBuffer
Definition: fftbuffer.h:19
nap::FFTAudioNodeComponent::mInput
nap::ComponentPtr< audio::AudioComponentBase > mInput
Property: 'Input' The component whose audio output will be measured.
Definition: fftaudionodecomponent.h:33
nap::utility::ErrorState
Definition: errorstate.h:19
nap::audio::AudioComponentBaseInstance
Definition: audiocomponentbase.h:47
nap::FFTAudioNodeComponent::FFTAudioNodeComponent
FFTAudioNodeComponent()
Definition: fftaudionodecomponent.h:30
nap::EntityInstance
Definition: entity.h:34
nap::ComponentInstancePtr
Definition: component.h:28
nap::ComponentInstance
Definition: component.h:43
nap::Component
Definition: component.h:151
nap::FFTAudioNodeComponentInstance::getFFTBuffer
virtual const FFTBuffer & getFFTBuffer() const
Definition: fftaudionodecomponent.h:61
nap::FFTAudioNodeComponentInstance::FFTAudioNodeComponentInstance
FFTAudioNodeComponentInstance(EntityInstance &entity, Component &resource)
Definition: fftaudionodecomponent.h:47
nap
Definition: templateapp.h:17
nap::FFTBuffer::EOverlap::One
@ One
nap::FFTBuffer::EOverlap
EOverlap
Definition: fftbuffer.h:29
nap::ComponentPtr
Definition: component.h:31