NAP
gainnode.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 // Std includes
8 #include <atomic>
9 
10 // Audio includes
11 #include <audio/core/audionode.h>
12 #include <audio/core/audionodemanager.h>
13 #include <audio/utility/linearsmoothedvalue.h>
14 
15 namespace nap
16 {
17  namespace audio
18  {
19 
23  class NAPAPI GainNode : public Node
24  {
25  RTTI_ENABLE(Node)
26 
27  public:
28  GainNode(NodeManager& manager, ControllerValue initValue = 1, unsigned int stepCount = 64) : Node(manager), mGain(initValue, stepCount) { }
29 
33  InputPin audioInput = {this};
34 
38  OutputPin audioOutput = {this};
39 
45  void setGain(ControllerValue gain, TimeValue smoothTime);
46 
50  ControllerValue getGain() const { return mGain.getValue(); }
51 
52  private:
56  void process() override;
57 
58  LinearSmoothedValue<ControllerValue> mGain; // Current multiplication factor of the output signal.
59  };
60 
61  }
62 }
nap::audio::TimeValue
float TimeValue
Definition: audiotypes.h:119
nap::audio::GainNode
Definition: gainnode.h:23
nap::audio::GainNode::GainNode
GainNode(NodeManager &manager, ControllerValue initValue=1, unsigned int stepCount=64)
Definition: gainnode.h:28
nap::audio::NodeManager
Definition: audionodemanager.h:33
nap::audio::ControllerValue
float ControllerValue
Definition: audiotypes.h:113
nap::audio::OutputPin
Definition: audiopin.h:204
nap::audio::Node
Definition: audionode.h:33
nap::audio::InputPin
Definition: audiopin.h:87
nap
Definition: templateapp.h:17
nap::audio::LinearSmoothedValue< ControllerValue >
nap::audio::GainNode::getGain
ControllerValue getGain() const
Definition: gainnode.h:50