OpenShot Audio Library | OpenShotAudio 0.3.2

Loading...
Searching...
No Matches
juce_audio_basics/utilities/juce_IIRFilter.h
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2017 - ROLI Ltd.
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23 namespace juce
24{
25
26 class IIRFilter;
27
28//==============================================================================
36 class JUCE_API IIRCoefficients
37{
38 public:
39 //==============================================================================
41 IIRCoefficients() noexcept;
42
48 IIRCoefficients (double c1, double c2, double c3,
49 double c4, double c5, double c6) noexcept;
50
52 IIRCoefficients (const IIRCoefficients&) noexcept;
54 IIRCoefficients& operator= (const IIRCoefficients&) noexcept;
56 ~IIRCoefficients() noexcept;
57
58 //==============================================================================
60 static IIRCoefficients makeLowPass (double sampleRate,
61 double frequency) noexcept;
62
64 static IIRCoefficients makeLowPass (double sampleRate,
65 double frequency,
66 double Q) noexcept;
67
68 //==============================================================================
70 static IIRCoefficients makeHighPass (double sampleRate,
71 double frequency) noexcept;
72
74 static IIRCoefficients makeHighPass (double sampleRate,
75 double frequency,
76 double Q) noexcept;
77
78 //==============================================================================
80 static IIRCoefficients makeBandPass (double sampleRate, double frequency) noexcept;
81
83 static IIRCoefficients makeBandPass (double sampleRate,
84 double frequency,
85 double Q) noexcept;
86
87 //==============================================================================
89 static IIRCoefficients makeNotchFilter (double sampleRate, double frequency) noexcept;
90
92 static IIRCoefficients makeNotchFilter (double sampleRate,
93 double frequency,
94 double Q) noexcept;
95
96 //==============================================================================
98 static IIRCoefficients makeAllPass (double sampleRate, double frequency) noexcept;
99
101 static IIRCoefficients makeAllPass (double sampleRate,
102 double frequency,
103 double Q) noexcept;
104
105 //==============================================================================
112 static IIRCoefficients makeLowShelf (double sampleRate,
113 double cutOffFrequency,
114 double Q,
115 float gainFactor) noexcept;
116
123 static IIRCoefficients makeHighShelf (double sampleRate,
124 double cutOffFrequency,
125 double Q,
126 float gainFactor) noexcept;
127
135 static IIRCoefficients makePeakFilter (double sampleRate,
136 double centreFrequency,
137 double Q,
138 float gainFactor) noexcept;
139
140 //==============================================================================
144 float coefficients[5];
145};
146
147//==============================================================================
156 class JUCE_API IIRFilter
157{
158 public:
159 //==============================================================================
166 IIRFilter() noexcept;
167
169 IIRFilter (const IIRFilter&) noexcept;
170
172 ~IIRFilter() noexcept;
173
174 //==============================================================================
176 void makeInactive() noexcept;
177
179 void setCoefficients (const IIRCoefficients& newCoefficients) noexcept;
180
182 IIRCoefficients getCoefficients() const noexcept { return coefficients; }
183
184 //==============================================================================
191 void reset() noexcept;
192
194 void processSamples (float* samples, int numSamples) noexcept;
195
201 float processSingleSampleRaw (float sample) noexcept;
202
203protected:
204 //==============================================================================
205 SpinLock processLock;
206 IIRCoefficients coefficients;
207 float v1 = 0, v2 = 0;
208 bool active = false;
209
210 // The exact meaning of an assignment operator would be ambiguous since the filters are
211 // stateful. If you want to copy the coefficients, then just use setCoefficients().
212 IIRFilter& operator= (const IIRFilter&) = delete;
213
214 JUCE_LEAK_DETECTOR (IIRFilter)
215};
216
217} // namespace juce
juce::IIRCoefficients
Definition: juce_audio_basics/utilities/juce_IIRFilter.h:37
juce::IIRFilter
Definition: juce_audio_basics/utilities/juce_IIRFilter.h:157
juce::IIRFilter::getCoefficients
IIRCoefficients getCoefficients() const noexcept
Definition: juce_audio_basics/utilities/juce_IIRFilter.h:182
juce::SpinLock
Definition: juce_SpinLock.h:42