OpenWareLaboratory
EnvelopeFollower.h
Go to the documentation of this file.
1 #ifndef __EnvelopeFollower_h__
2 #define __EnvelopeFollower_h__
3 
4 #include "SignalProcessor.h"
5 
11 private:
12  const float lambda;
13  float y;
14 public:
15  EnvelopeFollower(float lambda = 0.995): lambda(lambda), y(0) {}
16  float process(float x){
17  y = y*lambda + abs(x)*(1.0f - lambda);
18  return y;
19  }
20  void process(FloatArray in, FloatArray out){
21  float* input = in.getData();
22  float* output = out.getData();
23  size_t len = in.getSize();
24  while(len--){
25  y = y*lambda + abs(*input++)*(1.0f - lambda);
26  *output++ = y;
27  }
28  }
29  static EnvelopeFollower* create(float lambda){
30  return new EnvelopeFollower(lambda);
31  }
32  static void destroy(EnvelopeFollower* obj){
33  delete obj;
34  }
35 };
36 
37 #endif // __EnvelopeFollower_h__
#define abs(x)
Definition: basicmaths.h:44
Envelope follower.
static void destroy(EnvelopeFollower *obj)
static EnvelopeFollower * create(float lambda)
float process(float x)
EnvelopeFollower(float lambda=0.995)
void process(FloatArray in, FloatArray out)
This class contains useful methods for manipulating arrays of floats.
Definition: FloatArray.h:12
Base class for signal processors such as Filters.
size_t getSize() const
Definition: SimpleArray.h:31
T * getData()
Get the data stored in the Array.
Definition: SimpleArray.h:27