LMMS
Loading...
Searching...
No Matches
juce_DryWetMixer.h
Go to the documentation of this file.
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
26namespace juce
27{
28namespace dsp
29{
30
32{
33 linear, // dry volume is equal to 1 - wet volume
34 balanced, // both dry and wet are 1 when mix is 0.5, with dry decreasing to 0
35 // above this value and wet decreasing to 0 below it
36 sin3dB, // alternate dry/wet mixing rule using the 3 dB sine panning rule
37 sin4p5dB, // alternate dry/wet mixing rule using the 4.5 dB sine panning rule
38 sin6dB, // alternate dry/wet mixing rule using the 6 dB sine panning rule
39 squareRoot3dB, // alternate dry/wet mixing rule using the regular 3 dB panning rule
40 squareRoot4p5dB // alternate dry/wet mixing rule using the regular 4.5 dB panning rule
41};
42
52template <typename SampleType>
54{
55public:
56 //==============================================================================
58
59 //==============================================================================
62
65
66 //==============================================================================
68 void setMixingRule (MixingRule newRule);
69
73 void setWetMixProportion (SampleType newWetMixProportion);
74
79 void setWetLatency (SampleType wetLatencyInSamples);
80
81 //==============================================================================
83 void prepare (const ProcessSpec& spec);
84
86 void reset();
87
88 //==============================================================================
90 void pushDrySamples (const AudioBlock<const SampleType> drySamples);
91
101 void mixWetSamples (AudioBlock<SampleType> wetSamples);
102
103private:
104 //==============================================================================
105 void update();
106
107 //==============================================================================
111
113 SampleType mix = 1.0;
114 MixingRule currentMixingRule = MixingRule::linear;
115 double sampleRate = 44100.0;
117};
118
119} // namespace dsp
120} // namespace juce
Definition juce_AudioSampleBuffer.h:34
Definition juce_SingleThreadedAbstractFifo.h:64
Definition juce_SmoothedValue.h:227
Definition juce_AudioBlock.h:70
Definition juce_DelayLine.h:95
void pushDrySamples(const AudioBlock< const SampleType > drySamples)
Definition juce_DryWetMixer.cpp:102
SmoothedValue< SampleType, ValueSmoothingTypes::Linear > wetVolume
Definition juce_DryWetMixer.h:108
int maximumWetLatencyInSamples
Definition juce_DryWetMixer.h:116
void setWetMixProportion(SampleType newWetMixProportion)
Definition juce_DryWetMixer.cpp:58
void reset()
Definition juce_DryWetMixer.cpp:89
double sampleRate
Definition juce_DryWetMixer.h:115
AudioBuffer< SampleType > bufferDry
Definition juce_DryWetMixer.h:110
DelayLine< SampleType, DelayLineInterpolationTypes::Thiran > dryDelayLine
Definition juce_DryWetMixer.h:109
MixingRule currentMixingRule
Definition juce_DryWetMixer.h:114
SampleType mix
Definition juce_DryWetMixer.h:113
SingleThreadedAbstractFifo fifo
Definition juce_DryWetMixer.h:112
void setMixingRule(MixingRule newRule)
Definition juce_DryWetMixer.cpp:51
void setWetLatency(SampleType wetLatencyInSamples)
Definition juce_DryWetMixer.cpp:67
void prepare(const ProcessSpec &spec)
Definition juce_DryWetMixer.cpp:74
DryWetMixingRule MixingRule
Definition juce_DryWetMixer.h:57
SmoothedValue< SampleType, ValueSmoothingTypes::Linear > dryVolume
Definition juce_DryWetMixer.h:108
void update()
Definition juce_DryWetMixer.cpp:153
void mixWetSamples(AudioBlock< SampleType > wetSamples)
Definition juce_DryWetMixer.cpp:129
DryWetMixer()
Definition juce_DryWetMixer.cpp:33
Definition juce_AudioBlock.h:29
DryWetMixingRule
Definition juce_DryWetMixer.h:32
@ squareRoot4p5dB
Definition juce_DryWetMixer.h:40
@ squareRoot3dB
Definition juce_DryWetMixer.h:39
@ sin3dB
Definition juce_DryWetMixer.h:36
@ sin6dB
Definition juce_DryWetMixer.h:38
@ linear
Definition juce_DryWetMixer.h:33
@ sin4p5dB
Definition juce_DryWetMixer.h:37
@ balanced
Definition juce_DryWetMixer.h:34
Definition carla_juce.cpp:31
Definition juce_ProcessContext.h:38