-
Notifications
You must be signed in to change notification settings - Fork 0
/
BlockAtone.h
56 lines (46 loc) · 1.35 KB
/
BlockAtone.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#pragma once
#ifndef DSY_SN_BLOCKATONE_H
#define DSY_SN_BLOCKATONE_H
#include <stdint.h>
#include "daisysp.h"
#ifdef __cplusplus
namespace daisysp
{
/** A first-order recursive high-pass filter with variable frequency response.
Original Author(s): Barry Vercoe, John FFitch, Gabriel Maldonado
Year: 1991
Original Location: Csound -- OOps/ugens5.c
Ported from soundpipe by Ben Sergentanis, May 2020
*/
class BlockATone
{
public:
BlockATone() {}
~BlockATone() {}
/** Initializes the ATone module.
\param sample_rate - The sample rate of the audio engine being run.
*/
void Init(float sample_rate);
/** Processes one sample through the filter and returns one sample.
\param in - input signal
*/
void Process( float *buf, size_t size );
/** Sets the cutoff frequency or half-way point of the filter.
\param freq - frequency value in Hz. Range: Any positive value.
*/
inline void SetFreq(float &freq)
{
freq_ = freq;
CalculateCoefficients();
}
/** get current frequency
\return the current value for the cutoff frequency or half-way point of the filter.
*/
inline float GetFreq() { return freq_; }
private:
void CalculateCoefficients();
float out_, prevout_, in_, freq_, c2_, sample_rate_;
};
} // namespace daisysp
#endif
#endif