OpenShot Audio Library | OpenShotAudio
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
juce_FirstOrderTPTFilter.h
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11
Agreement and JUCE Privacy Policy.
12
13
End User License Agreement: www.juce.com/juce-7-licence
14
Privacy Policy: www.juce.com/juce-privacy-policy
15
16
Or: You may also use this code under the terms of the GPL v3 (see
17
www.gnu.org/licenses).
18
19
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21
DISCLAIMED.
22
23
==============================================================================
24
*/
25
26
namespace
juce::dsp
27
{
28
29
enum class
FirstOrderTPTFilterType
30
{
31
lowpass,
32
highpass,
33
allpass
34
};
35
36
//==============================================================================
52
template
<
typename
SampleType>
53
class
FirstOrderTPTFilter
54
{
55
public
:
56
//==============================================================================
57
using
Type = FirstOrderTPTFilterType;
58
59
//==============================================================================
61
FirstOrderTPTFilter
();
62
63
//==============================================================================
65
void
setType
(Type newType);
66
71
void
setCutoffFrequency
(SampleType newFrequencyHz);
72
73
//==============================================================================
75
Type
getType
() const noexcept {
return
filterType; }
76
78
SampleType
getCutoffFrequency
() const noexcept {
return
cutoffFrequency; }
79
80
//==============================================================================
82
void
prepare
(
const
ProcessSpec
& spec);
83
85
void
reset
();
86
88
void
reset
(SampleType newValue);
89
90
//==============================================================================
92
template
<
typename
ProcessContext>
93
void
process
(
const
ProcessContext& context)
noexcept
94
{
95
const
auto
& inputBlock = context.getInputBlock();
96
auto
& outputBlock = context.getOutputBlock();
97
const
auto
numChannels = outputBlock.getNumChannels();
98
const
auto
numSamples = outputBlock.getNumSamples();
99
100
jassert (inputBlock.getNumChannels() <= s1.size());
101
jassert (inputBlock.getNumChannels() == numChannels);
102
jassert (inputBlock.getNumSamples() == numSamples);
103
104
if
(context.isBypassed)
105
{
106
outputBlock.copyFrom (inputBlock);
107
return
;
108
}
109
110
for
(
size_t
channel = 0; channel < numChannels; ++channel)
111
{
112
auto
* inputSamples = inputBlock .getChannelPointer (channel);
113
auto
* outputSamples = outputBlock.getChannelPointer (channel);
114
115
for
(
size_t
i = 0; i < numSamples; ++i)
116
outputSamples[i] =
processSample
((
int
) channel, inputSamples[i]);
117
}
118
119
#if JUCE_DSP_ENABLE_SNAP_TO_ZERO
120
snapToZero
();
121
#endif
122
}
123
124
//==============================================================================
126
SampleType
processSample
(
int
channel, SampleType inputValue);
127
132
void
snapToZero
() noexcept;
133
134
private:
135
//==============================================================================
136
void
update();
137
138
//==============================================================================
139
SampleType G = 0;
140
std::vector<SampleType> s1 { 2 };
141
double
sampleRate = 44100.0;
142
143
//==============================================================================
144
Type filterType = Type::lowpass;
145
SampleType cutoffFrequency = 1000.0;
146
};
147
148
}
// namespace juce::dsp
juce::dsp::FirstOrderTPTFilter::getType
Type getType() const noexcept
Definition
juce_FirstOrderTPTFilter.h:75
juce::dsp::FirstOrderTPTFilter::getCutoffFrequency
SampleType getCutoffFrequency() const noexcept
Definition
juce_FirstOrderTPTFilter.h:78
juce::dsp::FirstOrderTPTFilter::prepare
void prepare(const ProcessSpec &spec)
Definition
juce_FirstOrderTPTFilter.cpp:54
juce::dsp::FirstOrderTPTFilter::snapToZero
void snapToZero() noexcept
Definition
juce_FirstOrderTPTFilter.cpp:101
juce::dsp::FirstOrderTPTFilter::processSample
SampleType processSample(int channel, SampleType inputValue)
Definition
juce_FirstOrderTPTFilter.cpp:80
juce::dsp::FirstOrderTPTFilter::FirstOrderTPTFilter
FirstOrderTPTFilter()
Definition
juce_FirstOrderTPTFilter.cpp:31
juce::dsp::FirstOrderTPTFilter::process
void process(const ProcessContext &context) noexcept
Definition
juce_FirstOrderTPTFilter.h:93
juce::dsp::FirstOrderTPTFilter::setType
void setType(Type newType)
Definition
juce_FirstOrderTPTFilter.cpp:38
juce::dsp::FirstOrderTPTFilter::setCutoffFrequency
void setCutoffFrequency(SampleType newFrequencyHz)
Definition
juce_FirstOrderTPTFilter.cpp:44
juce::dsp::FirstOrderTPTFilter::reset
void reset()
Definition
juce_FirstOrderTPTFilter.cpp:67
juce::dsp::ProcessSpec
Definition
juce_ProcessContext.h:36
libopenshot-audio
JuceLibraryCode
modules
juce_dsp
processors
juce_FirstOrderTPTFilter.h
Generated by
1.18.0