mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
DSP: Revamp DSP module
This commit is contained in:
parent
c419bc516d
commit
c138bf91b4
93 changed files with 17992 additions and 1828 deletions
|
|
@ -312,8 +312,8 @@ struct DSPDemo : public AudioSource,
|
||||||
|
|
||||||
inputSource->getNextAudioBlock (bufferToFill);
|
inputSource->getNextAudioBlock (bufferToFill);
|
||||||
|
|
||||||
dsp::AudioBlock<float> block (*bufferToFill.buffer,
|
AudioBlock<float> block (*bufferToFill.buffer,
|
||||||
(size_t) bufferToFill.startSample);
|
(size_t) bufferToFill.startSample);
|
||||||
|
|
||||||
ScopedLock audioLock (audioCallbackLock);
|
ScopedLock audioLock (audioCallbackLock);
|
||||||
this->process (ProcessContextReplacing<float> (block));
|
this->process (ProcessContextReplacing<float> (block));
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
BIN
examples/Assets/reverb_ir.wav
Normal file
BIN
examples/Assets/reverb_ir.wav
Normal file
Binary file not shown.
|
|
@ -59,8 +59,6 @@ struct StateVariableFilterDemoDSP
|
||||||
void prepare (const ProcessSpec& spec)
|
void prepare (const ProcessSpec& spec)
|
||||||
{
|
{
|
||||||
sampleRate = spec.sampleRate;
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
filter.state = new StateVariableFilter::Parameters<float>;
|
|
||||||
filter.prepare (spec);
|
filter.prepare (spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,18 +76,21 @@ struct StateVariableFilterDemoDSP
|
||||||
{
|
{
|
||||||
if (sampleRate != 0.0)
|
if (sampleRate != 0.0)
|
||||||
{
|
{
|
||||||
auto cutoff = static_cast<float> (cutoffParam.getCurrentValue());
|
filter.setCutoffFrequency (static_cast<float> (cutoffParam.getCurrentValue()));
|
||||||
auto resonance = static_cast<float> (qParam.getCurrentValue());
|
filter.setResonance (static_cast<float> (qParam.getCurrentValue()));
|
||||||
auto type = static_cast<StateVariableFilter::Parameters<float>::Type> (typeParam.getCurrentSelectedID() - 1);
|
|
||||||
|
|
||||||
filter.state->type = type;
|
switch (typeParam.getCurrentSelectedID() - 1)
|
||||||
filter.state->setCutOffFrequency (sampleRate, cutoff, resonance);
|
{
|
||||||
|
case 0: filter.setType (StateVariableTPTFilterType::lowpass); break;
|
||||||
|
case 1: filter.setType (StateVariableTPTFilterType::bandpass); break;
|
||||||
|
case 2: filter.setType (StateVariableTPTFilterType::highpass); break;
|
||||||
|
default: jassertfalse; break;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
ProcessorDuplicator<StateVariableFilter::Filter<float>,
|
StateVariableTPTFilter<float> filter;
|
||||||
StateVariableFilter::Parameters<float>> filter;
|
|
||||||
|
|
||||||
ChoiceParameter typeParam {{ "Low-pass", "Band-pass", "High-pass" }, 1, "Type" };
|
ChoiceParameter typeParam {{ "Low-pass", "Band-pass", "High-pass" }, 1, "Type" };
|
||||||
SliderParameter cutoffParam {{ 20.0, 20000.0 }, 0.5, 440.0f, "Cutoff", "Hz" };
|
SliderParameter cutoffParam {{ 20.0, 20000.0 }, 0.5, 440.0f, "Cutoff", "Hz" };
|
||||||
|
|
|
||||||
|
|
@ -117,16 +117,17 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
||||||
|
|
@ -1078,27 +1079,51 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h"
|
"../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h"
|
||||||
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp"
|
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp"
|
||||||
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h"
|
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Bias.h"
|
"../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DelayLine.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DelayLine.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DryWetMixer.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DryWetMixer.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Gain.h"
|
"../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_LadderFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oscillator.h"
|
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oversampling.h"
|
"../../../../../modules/juce_dsp/processors/juce_Oversampling.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_Panner.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_Panner.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessContext.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessContext.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Reverb.h"
|
|
||||||
"../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_WaveShaper.h"
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Bias.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Chorus.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Chorus.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Compressor.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Compressor.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Gain.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_LadderFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_LadderFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Limiter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Limiter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_NoiseGate.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_NoiseGate.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Oscillator.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Phaser.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Phaser.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Reverb.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_WaveShaper.h"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.cpp"
|
"../../../../../modules/juce_dsp/juce_dsp.cpp"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.mm"
|
"../../../../../modules/juce_dsp/juce_dsp.mm"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.h"
|
"../../../../../modules/juce_dsp/juce_dsp.h"
|
||||||
|
|
@ -1841,16 +1866,17 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/sources/ju
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2802,27 +2828,51 @@ set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SI
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Bias.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DelayLine.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DelayLine.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DryWetMixer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DryWetMixer.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Gain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oscillator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Panner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Panner.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_WaveShaper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Bias.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Chorus.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Chorus.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Compressor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Compressor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Gain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_LadderFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_LadderFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Limiter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Limiter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_NoiseGate.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_NoiseGate.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Oscillator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Phaser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Phaser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_WaveShaper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -242,10 +242,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -254,6 +254,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1427,24 +1430,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2453,10 +2492,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2983,21 +3022,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -374,6 +374,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -676,10 +679,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -688,6 +691,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1915,24 +1921,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3141,16 +3183,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4731,13 +4773,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4746,15 +4794,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4767,15 +4815,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -242,10 +242,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -254,6 +254,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1427,24 +1430,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2453,10 +2492,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2983,21 +3022,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -374,6 +374,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -676,10 +679,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -688,6 +691,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1915,24 +1921,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3141,16 +3183,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4731,13 +4773,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4746,15 +4794,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4767,15 +4815,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -242,10 +242,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -254,6 +254,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1427,24 +1430,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2453,10 +2492,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2983,21 +3022,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -374,6 +374,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -676,10 +679,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -688,6 +691,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1915,24 +1921,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -3141,16 +3183,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4731,13 +4773,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4746,15 +4794,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4767,15 +4815,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -235,7 +235,7 @@ public:
|
||||||
bool hasEditor() const override { return true; }
|
bool hasEditor() const override { return true; }
|
||||||
AudioProcessorEditor* createEditor() override { return new Editor (*this); }
|
AudioProcessorEditor* createEditor() override { return new Editor (*this); }
|
||||||
|
|
||||||
const String getName() const override { return "MIDILogger"; }
|
const String getName() const override { return "MIDI Logger"; }
|
||||||
bool acceptsMidi() const override { return true; }
|
bool acceptsMidi() const override { return true; }
|
||||||
bool producesMidi() const override { return true; }
|
bool producesMidi() const override { return true; }
|
||||||
double getTailLengthSeconds() const override { return 0.0; }
|
double getTailLengthSeconds() const override { return 0.0; }
|
||||||
|
|
|
||||||
|
|
@ -98,16 +98,17 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
||||||
|
|
@ -1506,16 +1507,17 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/sources/ju
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -223,10 +223,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -235,6 +235,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2047,10 +2050,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
|
||||||
|
|
@ -508,10 +508,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -520,6 +520,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2535,16 +2538,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
|
||||||
|
|
@ -115,16 +115,17 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
||||||
|
|
@ -934,27 +935,51 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h"
|
"../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h"
|
||||||
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp"
|
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp"
|
||||||
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h"
|
"../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Bias.h"
|
"../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DelayLine.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DelayLine.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DryWetMixer.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_DryWetMixer.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Gain.h"
|
"../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h"
|
"../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_LadderFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oscillator.h"
|
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Oversampling.h"
|
"../../../../../modules/juce_dsp/processors/juce_Oversampling.h"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_Panner.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_Panner.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessContext.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessContext.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h"
|
"../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_Reverb.h"
|
|
||||||
"../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h"
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h"
|
||||||
"../../../../../modules/juce_dsp/processors/juce_WaveShaper.h"
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Bias.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Chorus.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Chorus.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Compressor.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Compressor.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Gain.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_LadderFilter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_LadderFilter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Limiter.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Limiter.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_NoiseGate.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_NoiseGate.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Oscillator.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Phaser.cpp"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Phaser.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_Reverb.h"
|
||||||
|
"../../../../../modules/juce_dsp/widgets/juce_WaveShaper.h"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.cpp"
|
"../../../../../modules/juce_dsp/juce_dsp.cpp"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.mm"
|
"../../../../../modules/juce_dsp/juce_dsp.mm"
|
||||||
"../../../../../modules/juce_dsp/juce_dsp.h"
|
"../../../../../modules/juce_dsp/juce_dsp.h"
|
||||||
|
|
@ -1654,16 +1679,17 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/sources/ju
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
@ -2473,27 +2499,51 @@ set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SI
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_neon_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/native/juce_sse_SIMDNativeOps.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Bias.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_BallisticsFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DelayLine.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DelayLine.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DryWetMixer.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_DryWetMixer.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FIRFilter_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Gain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_IIRFilter_Impl.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LadderFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oscillator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Oversampling.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Panner.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Panner.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessContext.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorChain_test.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorDuplicator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_ProcessorWrapper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_WaveShaper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/processors/juce_StateVariableTPTFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Bias.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Chorus.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Chorus.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Compressor.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Compressor.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Gain.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_LadderFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_LadderFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Limiter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Limiter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_NoiseGate.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_NoiseGate.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Oscillator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Phaser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Phaser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_dsp/widgets/juce_WaveShaper.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_dsp/juce_dsp.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -242,6 +242,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1220,24 +1223,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2190,10 +2229,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2647,21 +2686,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -586,10 +589,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -598,6 +601,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1630,24 +1636,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2781,16 +2823,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4152,13 +4194,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4167,15 +4215,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4188,15 +4236,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -242,6 +242,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1220,24 +1223,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2190,10 +2229,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2647,21 +2686,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -586,10 +589,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -598,6 +601,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1630,24 +1636,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2781,16 +2823,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4152,13 +4194,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4167,15 +4215,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4188,15 +4236,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -230,10 +230,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -242,6 +242,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1220,24 +1223,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2190,10 +2229,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2647,21 +2686,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -314,6 +314,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -586,10 +589,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -598,6 +601,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1630,24 +1636,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2781,16 +2823,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4152,13 +4194,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4167,15 +4215,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4188,15 +4236,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -52,3 +52,7 @@ target_link_libraries(AudioPluginHost PRIVATE
|
||||||
juce::juce_dsp
|
juce::juce_dsp
|
||||||
juce::juce_opengl
|
juce::juce_opengl
|
||||||
juce::juce_video)
|
juce::juce_video)
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
|
||||||
|
juce_add_bundle_resources_directory(AudioPluginHost ../../examples/Assets)
|
||||||
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
#
|
#
|
||||||
# This file is part of the JUCE library.
|
# This file is part of the JUCE library.
|
||||||
# Copyright (c) 2017 - ROLI Ltd.
|
# Copyright (c) 2020 - Raw Material Software Limited
|
||||||
#
|
#
|
||||||
# JUCE is an open source library subject to commercial or open-source
|
# JUCE is an open source library subject to commercial or open-source
|
||||||
# licensing.
|
# licensing.
|
||||||
|
|
|
||||||
|
|
@ -102,16 +102,17 @@ add_library( ${BINARY_NAME}
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
"../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h"
|
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
"../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h"
|
||||||
|
"../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.cpp"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.mm"
|
||||||
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
"../../../../../modules/juce_audio_basics/juce_audio_basics.h"
|
||||||
|
|
@ -1585,16 +1586,17 @@ set_source_files_properties("../../../../../modules/juce_audio_basics/sources/ju
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_ADSR.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_CatmullRomInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Decibels.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_GenericInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_IIRFilter.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Interpolators.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_LagrangeInterpolator.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_Reverb.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_SmoothedValue.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
set_source_files_properties("../../../../../modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.cpp" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.mm" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
set_source_files_properties("../../../../../modules/juce_audio_basics/juce_audio_basics.h" PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||||
|
|
|
||||||
|
|
@ -223,10 +223,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -235,6 +235,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2132,10 +2135,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
|
||||||
|
|
@ -538,10 +538,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -550,6 +550,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2670,16 +2673,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
|
||||||
|
|
@ -239,10 +239,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -251,6 +251,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1283,24 +1286,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2303,10 +2342,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2785,21 +2824,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -625,10 +628,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -637,6 +640,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1723,24 +1729,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2931,16 +2973,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4377,13 +4419,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4392,15 +4440,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4413,15 +4461,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -239,10 +239,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -251,6 +251,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1283,24 +1286,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2303,10 +2342,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
@ -2785,21 +2824,33 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_fallback_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_neon_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorDuplicator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionBroadcaster.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_events\broadcasters\juce_ActionListener.h"/>
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,9 @@
|
||||||
<Filter Include="JUCE Modules\juce_dsp\processors">
|
<Filter Include="JUCE Modules\juce_dsp\processors">
|
||||||
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
<UniqueIdentifier>{DDF4BA73-8578-406D-21F8-06B9BC70BFEA}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="JUCE Modules\juce_dsp\widgets">
|
||||||
|
<UniqueIdentifier>{73374573-0194-9A6E-461A-A81EEB511C26}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
<Filter Include="JUCE Modules\juce_dsp">
|
<Filter Include="JUCE Modules\juce_dsp">
|
||||||
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
<UniqueIdentifier>{5DD60D0E-B16A-0BED-EDC4-C56E6960CA9E}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -625,10 +628,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -637,6 +640,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -1723,24 +1729,60 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorChain_test.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_dsp\juce_dsp.cpp">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2931,16 +2973,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
@ -4377,13 +4419,19 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\native\juce_sse_SIMDNativeOps.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
<Filter>JUCE Modules\juce_dsp\native</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Bias.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_BallisticsFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DelayLine.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_DryWetMixer.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Gain.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_FirstOrderTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter.h">
|
||||||
|
|
@ -4392,15 +4440,15 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_IIRFilter_Impl.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LadderFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oversampling.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -4413,15 +4461,45 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessorWrapper.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Reverb.h">
|
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_WaveShaper.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_StateVariableTPTFilter.h">
|
||||||
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
<Filter>JUCE Modules\juce_dsp\processors</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Bias.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Chorus.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Compressor.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Gain.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_LadderFilter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Limiter.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_NoiseGate.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Oscillator.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Phaser.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_Reverb.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\widgets\juce_WaveShaper.h">
|
||||||
|
<Filter>JUCE Modules\juce_dsp\widgets</Filter>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
<ClInclude Include="..\..\..\..\modules\juce_dsp\juce_dsp.h">
|
||||||
<Filter>JUCE Modules\juce_dsp</Filter>
|
<Filter>JUCE Modules\juce_dsp</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -222,10 +222,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -234,6 +234,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2108,10 +2111,10 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\sources\juce_ToneGeneratorAudioSource.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h"/>
|
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h"/>
|
||||||
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.h"/>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.h"/>
|
||||||
|
|
|
||||||
|
|
@ -535,10 +535,10 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\synthesisers\juce_Synthesiser.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\synthesisers</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.cpp">
|
||||||
|
|
@ -547,6 +547,9 @@
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_SmoothedValue.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_WindowedSincInterpolator.cpp">
|
||||||
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\juce_audio_basics.cpp">
|
||||||
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
<Filter>JUCE Modules\juce_audio_basics</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -2637,16 +2640,16 @@
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_ADSR.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_CatmullRomInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Decibels.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_GenericInterpolator.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_IIRFilter.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_LagrangeInterpolator.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Interpolators.h">
|
||||||
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
<Filter>JUCE Modules\juce_audio_basics\utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\utilities\juce_Reverb.h">
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,8 @@
|
||||||
#include "buffers/juce_AudioProcessLoadMeasurer.cpp"
|
#include "buffers/juce_AudioProcessLoadMeasurer.cpp"
|
||||||
#include "utilities/juce_IIRFilter.cpp"
|
#include "utilities/juce_IIRFilter.cpp"
|
||||||
#include "utilities/juce_LagrangeInterpolator.cpp"
|
#include "utilities/juce_LagrangeInterpolator.cpp"
|
||||||
#include "utilities/juce_CatmullRomInterpolator.cpp"
|
#include "utilities/juce_WindowedSincInterpolator.cpp"
|
||||||
|
#include "utilities/juce_Interpolators.cpp"
|
||||||
#include "utilities/juce_SmoothedValue.cpp"
|
#include "utilities/juce_SmoothedValue.cpp"
|
||||||
#include "midi/juce_MidiBuffer.cpp"
|
#include "midi/juce_MidiBuffer.cpp"
|
||||||
#include "midi/juce_MidiFile.cpp"
|
#include "midi/juce_MidiFile.cpp"
|
||||||
|
|
|
||||||
|
|
@ -88,8 +88,8 @@
|
||||||
#include "buffers/juce_AudioProcessLoadMeasurer.h"
|
#include "buffers/juce_AudioProcessLoadMeasurer.h"
|
||||||
#include "utilities/juce_Decibels.h"
|
#include "utilities/juce_Decibels.h"
|
||||||
#include "utilities/juce_IIRFilter.h"
|
#include "utilities/juce_IIRFilter.h"
|
||||||
#include "utilities/juce_LagrangeInterpolator.h"
|
#include "utilities/juce_GenericInterpolator.h"
|
||||||
#include "utilities/juce_CatmullRomInterpolator.h"
|
#include "utilities/juce_Interpolators.h"
|
||||||
#include "utilities/juce_SmoothedValue.h"
|
#include "utilities/juce_SmoothedValue.h"
|
||||||
#include "utilities/juce_Reverb.h"
|
#include "utilities/juce_Reverb.h"
|
||||||
#include "utilities/juce_ADSR.h"
|
#include "utilities/juce_ADSR.h"
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ namespace juce
|
||||||
{
|
{
|
||||||
|
|
||||||
MemoryAudioSource::MemoryAudioSource (AudioBuffer<float>& bufferToUse, bool copyMemory, bool shouldLoop)
|
MemoryAudioSource::MemoryAudioSource (AudioBuffer<float>& bufferToUse, bool copyMemory, bool shouldLoop)
|
||||||
: isLooping (shouldLoop)
|
: isCurrentlyLooping (shouldLoop)
|
||||||
{
|
{
|
||||||
if (copyMemory)
|
if (copyMemory)
|
||||||
buffer.makeCopyOf (bufferToUse);
|
buffer.makeCopyOf (bufferToUse);
|
||||||
|
|
@ -50,7 +50,7 @@ void MemoryAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& bufferT
|
||||||
auto n = buffer.getNumSamples(), m = bufferToFill.numSamples;
|
auto n = buffer.getNumSamples(), m = bufferToFill.numSamples;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
for (i = position; (i < n || isLooping) && (pos < m); i += max)
|
for (i = position; (i < n || isCurrentlyLooping) && (pos < m); i += max)
|
||||||
{
|
{
|
||||||
max = jmin (m - pos, n - (i % n));
|
max = jmin (m - pos, n - (i % n));
|
||||||
|
|
||||||
|
|
@ -70,4 +70,31 @@ void MemoryAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& bufferT
|
||||||
position = (i % n);
|
position = (i % n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
void MemoryAudioSource::setNextReadPosition (int64 newPosition)
|
||||||
|
{
|
||||||
|
position = (int) newPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64 MemoryAudioSource::getNextReadPosition() const
|
||||||
|
{
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64 MemoryAudioSource::getTotalLength() const
|
||||||
|
{
|
||||||
|
return buffer.getNumSamples();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
bool MemoryAudioSource::isLooping() const
|
||||||
|
{
|
||||||
|
return isCurrentlyLooping;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MemoryAudioSource::setLooping (bool shouldLoop)
|
||||||
|
{
|
||||||
|
isCurrentlyLooping = shouldLoop;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace juce
|
} // namespace juce
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ namespace juce
|
||||||
|
|
||||||
@tags{Audio}
|
@tags{Audio}
|
||||||
*/
|
*/
|
||||||
class JUCE_API MemoryAudioSource : public AudioSource
|
class JUCE_API MemoryAudioSource : public PositionableAudioSource
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
@ -52,11 +52,28 @@ public:
|
||||||
/** Implementation of the AudioSource method. */
|
/** Implementation of the AudioSource method. */
|
||||||
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override;
|
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Implementation of the PositionableAudioSource method. */
|
||||||
|
void setNextReadPosition (int64 newPosition) override;
|
||||||
|
|
||||||
|
/** Implementation of the PositionableAudioSource method. */
|
||||||
|
int64 getNextReadPosition() const override;
|
||||||
|
|
||||||
|
/** Implementation of the PositionableAudioSource method. */
|
||||||
|
int64 getTotalLength() const override;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Implementation of the PositionableAudioSource method. */
|
||||||
|
bool isLooping() const override;
|
||||||
|
|
||||||
|
/** Implementation of the PositionableAudioSource method. */
|
||||||
|
void setLooping (bool shouldLoop) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
AudioBuffer<float> buffer;
|
AudioBuffer<float> buffer;
|
||||||
int position = 0;
|
int position = 0;
|
||||||
bool isLooping;
|
bool isCurrentlyLooping;
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryAudioSource)
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MemoryAudioSource)
|
||||||
|
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
/*
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
This file is part of the JUCE library.
|
|
||||||
Copyright (c) 2020 - Raw Material Software Limited
|
|
||||||
|
|
||||||
JUCE is an open source library subject to commercial or open-source
|
|
||||||
licensing.
|
|
||||||
|
|
||||||
The code included in this file is provided under the terms of the ISC license
|
|
||||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
|
||||||
To use, copy, modify, and/or distribute this software for any purpose with or
|
|
||||||
without fee is hereby granted provided that the above copyright notice and
|
|
||||||
this permission notice appear in all copies.
|
|
||||||
|
|
||||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
||||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
||||||
DISCLAIMED.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace juce
|
|
||||||
{
|
|
||||||
|
|
||||||
struct CatmullRomAlgorithm
|
|
||||||
{
|
|
||||||
static forcedinline float valueAtOffset (const float* const inputs, const float offset) noexcept
|
|
||||||
{
|
|
||||||
auto y0 = inputs[3];
|
|
||||||
auto y1 = inputs[2];
|
|
||||||
auto y2 = inputs[1];
|
|
||||||
auto y3 = inputs[0];
|
|
||||||
|
|
||||||
auto halfY0 = 0.5f * y0;
|
|
||||||
auto halfY3 = 0.5f * y3;
|
|
||||||
|
|
||||||
return y1 + offset * ((0.5f * y2 - halfY0)
|
|
||||||
+ (offset * (((y0 + 2.0f * y2) - (halfY3 + 2.5f * y1))
|
|
||||||
+ (offset * ((halfY3 + 1.5f * y1) - (halfY0 + 1.5f * y2))))));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
CatmullRomInterpolator::CatmullRomInterpolator() noexcept { reset(); }
|
|
||||||
CatmullRomInterpolator::~CatmullRomInterpolator() noexcept {}
|
|
||||||
|
|
||||||
void CatmullRomInterpolator::reset() noexcept
|
|
||||||
{
|
|
||||||
subSamplePos = 1.0;
|
|
||||||
|
|
||||||
for (auto& s : lastInputSamples)
|
|
||||||
s = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CatmullRomInterpolator::process (double actualRatio, const float* in, float* out, int numOut, int available, int wrap) noexcept
|
|
||||||
{
|
|
||||||
return interpolate<CatmullRomAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap);
|
|
||||||
}
|
|
||||||
|
|
||||||
int CatmullRomInterpolator::process (double actualRatio, const float* in, float* out, int numOut) noexcept
|
|
||||||
{
|
|
||||||
return interpolate<CatmullRomAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
int CatmullRomInterpolator::processAdding (double actualRatio, const float* in, float* out, int numOut, int available, int wrap, float gain) noexcept
|
|
||||||
{
|
|
||||||
return interpolateAdding<CatmullRomAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap, gain);
|
|
||||||
}
|
|
||||||
|
|
||||||
int CatmullRomInterpolator::processAdding (double actualRatio, const float* in, float* out, int numOut, float gain) noexcept
|
|
||||||
{
|
|
||||||
return interpolateAdding<CatmullRomAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, gain);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace juce
|
|
||||||
|
|
@ -1,146 +0,0 @@
|
||||||
/*
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
This file is part of the JUCE library.
|
|
||||||
Copyright (c) 2020 - Raw Material Software Limited
|
|
||||||
|
|
||||||
JUCE is an open source library subject to commercial or open-source
|
|
||||||
licensing.
|
|
||||||
|
|
||||||
The code included in this file is provided under the terms of the ISC license
|
|
||||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
|
||||||
To use, copy, modify, and/or distribute this software for any purpose with or
|
|
||||||
without fee is hereby granted provided that the above copyright notice and
|
|
||||||
this permission notice appear in all copies.
|
|
||||||
|
|
||||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
||||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
||||||
DISCLAIMED.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace juce
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
Interpolator for resampling a stream of floats using Catmull-Rom interpolation.
|
|
||||||
|
|
||||||
Note that the resampler is stateful, so when there's a break in the continuity
|
|
||||||
of the input stream you're feeding it, you should call reset() before feeding
|
|
||||||
it any new data. And like with any other stateful filter, if you're resampling
|
|
||||||
multiple channels, make sure each one uses its own CatmullRomInterpolator
|
|
||||||
object.
|
|
||||||
|
|
||||||
@see LagrangeInterpolator
|
|
||||||
|
|
||||||
@tags{Audio}
|
|
||||||
*/
|
|
||||||
class JUCE_API CatmullRomInterpolator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CatmullRomInterpolator() noexcept;
|
|
||||||
~CatmullRomInterpolator() noexcept;
|
|
||||||
|
|
||||||
CatmullRomInterpolator (CatmullRomInterpolator&&) noexcept = default;
|
|
||||||
CatmullRomInterpolator& operator= (CatmullRomInterpolator&&) noexcept = default;
|
|
||||||
|
|
||||||
/** Resets the state of the interpolator.
|
|
||||||
Call this when there's a break in the continuity of the input data stream.
|
|
||||||
*/
|
|
||||||
void reset() noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results into
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int process (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results into
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param available the number of available input samples. If it needs more samples
|
|
||||||
than available, it either wraps back for wrapAround samples, or
|
|
||||||
it feeds zeroes
|
|
||||||
@param wrapAround if the stream exceeds available samples, it wraps back for
|
|
||||||
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int process (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
int available,
|
|
||||||
int wrapAround) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples, adding the results to the output data
|
|
||||||
with a gain.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results to - the result values will be added
|
|
||||||
to any pre-existing data in this buffer after being multiplied by
|
|
||||||
the gain factor
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param gain a gain factor to multiply the resulting samples by before
|
|
||||||
adding them to the destination buffer
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int processAdding (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
float gain) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples, adding the results to the output data
|
|
||||||
with a gain.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results to - the result values will be added
|
|
||||||
to any pre-existing data in this buffer after being multiplied by
|
|
||||||
the gain factor
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param available the number of available input samples. If it needs more samples
|
|
||||||
than available, it either wraps back for wrapAround samples, or
|
|
||||||
it feeds zeroes
|
|
||||||
@param wrapAround if the stream exceeds available samples, it wraps back for
|
|
||||||
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
|
||||||
@param gain a gain factor to multiply the resulting samples by before
|
|
||||||
adding them to the destination buffer
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int processAdding (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
int available,
|
|
||||||
int wrapAround,
|
|
||||||
float gain) noexcept;
|
|
||||||
|
|
||||||
private:
|
|
||||||
float lastInputSamples[5];
|
|
||||||
double subSamplePos;
|
|
||||||
|
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CatmullRomInterpolator)
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace juce
|
|
||||||
493
modules/juce_audio_basics/utilities/juce_GenericInterpolator.h
Normal file
493
modules/juce_audio_basics/utilities/juce_GenericInterpolator.h
Normal file
|
|
@ -0,0 +1,493 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
An interpolator base class for resampling streams of floats.
|
||||||
|
|
||||||
|
Note that the resamplers are stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own interpolator object.
|
||||||
|
|
||||||
|
@see LagrangeInterpolator, CatmullRomInterpolator, WindowedSincInterpolator,
|
||||||
|
LinearInterpolator, ZeroOrderHoldInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
template <class InterpolatorTraits, int memorySize>
|
||||||
|
class JUCE_API GenericInterpolator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GenericInterpolator() noexcept { reset(); }
|
||||||
|
|
||||||
|
GenericInterpolator (GenericInterpolator&&) noexcept = default;
|
||||||
|
GenericInterpolator& operator= (GenericInterpolator&&) noexcept = default;
|
||||||
|
|
||||||
|
/** Returns the latency of the interpolation algorithm in isolation.
|
||||||
|
|
||||||
|
In the context of resampling the total latency of a process using
|
||||||
|
the interpolator is the base latency divided by the speed ratio.
|
||||||
|
*/
|
||||||
|
static constexpr float getBaseLatency() noexcept
|
||||||
|
{
|
||||||
|
return InterpolatorTraits::algorithmicLatency;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Resets the state of the interpolator.
|
||||||
|
|
||||||
|
Call this when there's a break in the continuity of the input data stream.
|
||||||
|
*/
|
||||||
|
void reset() noexcept
|
||||||
|
{
|
||||||
|
indexBuffer = 0;
|
||||||
|
subSamplePos = 1.0;
|
||||||
|
std::fill (std::begin (lastInputSamples), std::end (lastInputSamples), 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Resamples a stream of samples.
|
||||||
|
|
||||||
|
@param speedRatio the number of input samples to use for each output sample
|
||||||
|
@param inputSamples the source data to read from. This must contain at
|
||||||
|
least (speedRatio * numOutputSamplesToProduce) samples.
|
||||||
|
@param outputSamples the buffer to write the results into
|
||||||
|
@param numOutputSamplesToProduce the number of output samples that should be created
|
||||||
|
|
||||||
|
@returns the actual number of input samples that were used
|
||||||
|
*/
|
||||||
|
int process (double speedRatio,
|
||||||
|
const float* inputSamples,
|
||||||
|
float* outputSamples,
|
||||||
|
int numOutputSamplesToProduce) noexcept
|
||||||
|
{
|
||||||
|
return interpolate (speedRatio, inputSamples, outputSamples, numOutputSamplesToProduce);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Resamples a stream of samples.
|
||||||
|
|
||||||
|
@param speedRatio the number of input samples to use for each output sample
|
||||||
|
@param inputSamples the source data to read from. This must contain at
|
||||||
|
least (speedRatio * numOutputSamplesToProduce) samples.
|
||||||
|
@param outputSamples the buffer to write the results into
|
||||||
|
@param numOutputSamplesToProduce the number of output samples that should be created
|
||||||
|
@param numInputSamplesAvailable the number of available input samples. If it needs more samples
|
||||||
|
than available, it either wraps back for wrapAround samples, or
|
||||||
|
it feeds zeroes
|
||||||
|
@param wrapAround if the stream exceeds available samples, it wraps back for
|
||||||
|
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
||||||
|
|
||||||
|
@returns the actual number of input samples that were used
|
||||||
|
*/
|
||||||
|
int process (double speedRatio,
|
||||||
|
const float* inputSamples,
|
||||||
|
float* outputSamples,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
int numInputSamplesAvailable,
|
||||||
|
int wrapAround) noexcept
|
||||||
|
{
|
||||||
|
return interpolate (speedRatio, inputSamples, outputSamples,
|
||||||
|
numOutputSamplesToProduce, numInputSamplesAvailable, wrapAround);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Resamples a stream of samples, adding the results to the output data
|
||||||
|
with a gain.
|
||||||
|
|
||||||
|
@param speedRatio the number of input samples to use for each output sample
|
||||||
|
@param inputSamples the source data to read from. This must contain at
|
||||||
|
least (speedRatio * numOutputSamplesToProduce) samples.
|
||||||
|
@param outputSamples the buffer to write the results to - the result values will be added
|
||||||
|
to any pre-existing data in this buffer after being multiplied by
|
||||||
|
the gain factor
|
||||||
|
@param numOutputSamplesToProduce the number of output samples that should be created
|
||||||
|
@param gain a gain factor to multiply the resulting samples by before
|
||||||
|
adding them to the destination buffer
|
||||||
|
|
||||||
|
@returns the actual number of input samples that were used
|
||||||
|
*/
|
||||||
|
int processAdding (double speedRatio,
|
||||||
|
const float* inputSamples,
|
||||||
|
float* outputSamples,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
float gain) noexcept
|
||||||
|
{
|
||||||
|
return interpolateAdding (speedRatio, inputSamples, outputSamples, numOutputSamplesToProduce, gain);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Resamples a stream of samples, adding the results to the output data
|
||||||
|
with a gain.
|
||||||
|
|
||||||
|
@param speedRatio the number of input samples to use for each output sample
|
||||||
|
@param inputSamples the source data to read from. This must contain at
|
||||||
|
least (speedRatio * numOutputSamplesToProduce) samples.
|
||||||
|
@param outputSamples the buffer to write the results to - the result values will be added
|
||||||
|
to any pre-existing data in this buffer after being multiplied by
|
||||||
|
the gain factor
|
||||||
|
@param numOutputSamplesToProduce the number of output samples that should be created
|
||||||
|
@param numInputSamplesAvailable the number of available input samples. If it needs more samples
|
||||||
|
than available, it either wraps back for wrapAround samples, or
|
||||||
|
it feeds zeroes
|
||||||
|
@param wrapAround if the stream exceeds available samples, it wraps back for
|
||||||
|
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
||||||
|
@param gain a gain factor to multiply the resulting samples by before
|
||||||
|
adding them to the destination buffer
|
||||||
|
|
||||||
|
@returns the actual number of input samples that were used
|
||||||
|
*/
|
||||||
|
int processAdding (double speedRatio,
|
||||||
|
const float* inputSamples,
|
||||||
|
float* outputSamples,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
int numInputSamplesAvailable,
|
||||||
|
int wrapAround,
|
||||||
|
float gain) noexcept
|
||||||
|
{
|
||||||
|
return interpolateAdding (speedRatio, inputSamples, outputSamples,
|
||||||
|
numOutputSamplesToProduce, numInputSamplesAvailable, wrapAround, gain);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
forcedinline void pushInterpolationSample (float newValue) noexcept
|
||||||
|
{
|
||||||
|
lastInputSamples[indexBuffer] = newValue;
|
||||||
|
|
||||||
|
if (++indexBuffer == memorySize)
|
||||||
|
indexBuffer = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
forcedinline void pushInterpolationSamples (const float* input,
|
||||||
|
int numOutputSamplesToProduce) noexcept
|
||||||
|
{
|
||||||
|
if (numOutputSamplesToProduce >= memorySize)
|
||||||
|
{
|
||||||
|
const auto* const offsetInput = input + (numOutputSamplesToProduce - memorySize);
|
||||||
|
|
||||||
|
for (int i = 0; i < memorySize; ++i)
|
||||||
|
pushInterpolationSample (offsetInput[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < numOutputSamplesToProduce; ++i)
|
||||||
|
pushInterpolationSample (input[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
forcedinline void pushInterpolationSamples (const float* input,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
int numInputSamplesAvailable,
|
||||||
|
int wrapAround) noexcept
|
||||||
|
{
|
||||||
|
if (numOutputSamplesToProduce >= memorySize)
|
||||||
|
{
|
||||||
|
if (numInputSamplesAvailable >= memorySize)
|
||||||
|
{
|
||||||
|
pushInterpolationSamples (input,
|
||||||
|
numOutputSamplesToProduce);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pushInterpolationSamples (input + ((numOutputSamplesToProduce - numInputSamplesAvailable) - 1),
|
||||||
|
numInputSamplesAvailable);
|
||||||
|
|
||||||
|
if (wrapAround > 0)
|
||||||
|
{
|
||||||
|
numOutputSamplesToProduce -= wrapAround;
|
||||||
|
|
||||||
|
pushInterpolationSamples (input + ((numOutputSamplesToProduce - (memorySize - numInputSamplesAvailable)) - 1),
|
||||||
|
memorySize - numInputSamplesAvailable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = numInputSamplesAvailable; i < memorySize; ++i)
|
||||||
|
pushInterpolationSample (0.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (numOutputSamplesToProduce > numInputSamplesAvailable)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < numInputSamplesAvailable; ++i)
|
||||||
|
pushInterpolationSample (input[i]);
|
||||||
|
|
||||||
|
const auto extraSamples = numOutputSamplesToProduce - numInputSamplesAvailable;
|
||||||
|
|
||||||
|
if (wrapAround > 0)
|
||||||
|
{
|
||||||
|
const auto* const offsetInput = input + (numInputSamplesAvailable - wrapAround);
|
||||||
|
|
||||||
|
for (int i = 0; i < extraSamples; ++i)
|
||||||
|
pushInterpolationSample (offsetInput[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < extraSamples; ++i)
|
||||||
|
pushInterpolationSample (0.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < numOutputSamplesToProduce; ++i)
|
||||||
|
pushInterpolationSample (input[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
int interpolate (double speedRatio,
|
||||||
|
const float* input,
|
||||||
|
float* output,
|
||||||
|
int numOutputSamplesToProduce) noexcept
|
||||||
|
{
|
||||||
|
auto pos = subSamplePos;
|
||||||
|
int numUsed = 0;
|
||||||
|
|
||||||
|
while (numOutputSamplesToProduce > 0)
|
||||||
|
{
|
||||||
|
while (pos >= 1.0)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (input[numUsed++]);
|
||||||
|
pos -= 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*output++ = InterpolatorTraits::valueAtOffset (lastInputSamples, (float) pos, indexBuffer);
|
||||||
|
pos += speedRatio;
|
||||||
|
--numOutputSamplesToProduce;
|
||||||
|
}
|
||||||
|
|
||||||
|
subSamplePos = pos;
|
||||||
|
return numUsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
int interpolate (double speedRatio,
|
||||||
|
const float* input, float* output,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
int numInputSamplesAvailable,
|
||||||
|
int wrap) noexcept
|
||||||
|
{
|
||||||
|
auto originalIn = input;
|
||||||
|
auto pos = subSamplePos;
|
||||||
|
bool exceeded = false;
|
||||||
|
|
||||||
|
if (speedRatio < 1.0)
|
||||||
|
{
|
||||||
|
for (int i = numOutputSamplesToProduce; --i >= 0;)
|
||||||
|
{
|
||||||
|
if (pos >= 1.0)
|
||||||
|
{
|
||||||
|
if (exceeded)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (0.0f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pushInterpolationSample (*input++);
|
||||||
|
|
||||||
|
if (--numInputSamplesAvailable <= 0)
|
||||||
|
{
|
||||||
|
if (wrap > 0)
|
||||||
|
{
|
||||||
|
input -= wrap;
|
||||||
|
numInputSamplesAvailable += wrap;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
exceeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pos -= 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*output++ = InterpolatorTraits::valueAtOffset (lastInputSamples, (float) pos, indexBuffer);
|
||||||
|
pos += speedRatio;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = numOutputSamplesToProduce; --i >= 0;)
|
||||||
|
{
|
||||||
|
while (pos < speedRatio)
|
||||||
|
{
|
||||||
|
if (exceeded)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pushInterpolationSample (*input++);
|
||||||
|
|
||||||
|
if (--numInputSamplesAvailable <= 0)
|
||||||
|
{
|
||||||
|
if (wrap > 0)
|
||||||
|
{
|
||||||
|
input -= wrap;
|
||||||
|
numInputSamplesAvailable += wrap;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
exceeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pos += 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pos -= speedRatio;
|
||||||
|
*output++ = InterpolatorTraits::valueAtOffset (lastInputSamples, jmax (0.0f, 1.0f - (float) pos), indexBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
subSamplePos = pos;
|
||||||
|
|
||||||
|
if (wrap == 0)
|
||||||
|
return (int) (input - originalIn);
|
||||||
|
|
||||||
|
return ((int) (input - originalIn) + wrap) % wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
int interpolateAdding (double speedRatio,
|
||||||
|
const float* input,
|
||||||
|
float* output,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
int numInputSamplesAvailable,
|
||||||
|
int wrap,
|
||||||
|
float gain) noexcept
|
||||||
|
{
|
||||||
|
auto originalIn = input;
|
||||||
|
auto pos = subSamplePos;
|
||||||
|
bool exceeded = false;
|
||||||
|
|
||||||
|
if (speedRatio < 1.0)
|
||||||
|
{
|
||||||
|
for (int i = numOutputSamplesToProduce; --i >= 0;)
|
||||||
|
{
|
||||||
|
if (pos >= 1.0)
|
||||||
|
{
|
||||||
|
if (exceeded)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (0.0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pushInterpolationSample (*input++);
|
||||||
|
|
||||||
|
if (--numInputSamplesAvailable <= 0)
|
||||||
|
{
|
||||||
|
if (wrap > 0)
|
||||||
|
{
|
||||||
|
input -= wrap;
|
||||||
|
numInputSamplesAvailable += wrap;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
numInputSamplesAvailable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pos -= 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*output++ += gain * InterpolatorTraits::valueAtOffset ((float) pos);
|
||||||
|
pos += speedRatio;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = numOutputSamplesToProduce; --i >= 0;)
|
||||||
|
{
|
||||||
|
while (pos < speedRatio)
|
||||||
|
{
|
||||||
|
if (exceeded)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (0.0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pushInterpolationSample (*input++);
|
||||||
|
|
||||||
|
if (--numInputSamplesAvailable <= 0)
|
||||||
|
{
|
||||||
|
if (wrap > 0)
|
||||||
|
{
|
||||||
|
input -= wrap;
|
||||||
|
numInputSamplesAvailable += wrap;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
exceeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pos += 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pos -= speedRatio;
|
||||||
|
*output++ += gain * InterpolatorTraits::valueAtOffset (lastInputSamples, jmax (0.0f, 1.0f - (float) pos), indexBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
subSamplePos = pos;
|
||||||
|
|
||||||
|
if (wrap == 0)
|
||||||
|
return (int) (input - originalIn);
|
||||||
|
|
||||||
|
return ((int) (input - originalIn) + wrap) % wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
int interpolateAdding (double speedRatio,
|
||||||
|
const float* input,
|
||||||
|
float* output,
|
||||||
|
int numOutputSamplesToProduce,
|
||||||
|
float gain) noexcept
|
||||||
|
{
|
||||||
|
auto pos = subSamplePos;
|
||||||
|
int numUsed = 0;
|
||||||
|
|
||||||
|
while (numOutputSamplesToProduce > 0)
|
||||||
|
{
|
||||||
|
while (pos >= 1.0)
|
||||||
|
{
|
||||||
|
pushInterpolationSample (input[numUsed++]);
|
||||||
|
pos -= 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*output++ += gain * InterpolatorTraits::valueAtOffset (lastInputSamples, (float) pos, indexBuffer);
|
||||||
|
pos += speedRatio;
|
||||||
|
--numOutputSamplesToProduce;
|
||||||
|
}
|
||||||
|
|
||||||
|
subSamplePos = pos;
|
||||||
|
return numUsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
float lastInputSamples[(size_t) memorySize];
|
||||||
|
double subSamplePos = 1.0;
|
||||||
|
int indexBuffer = 0;
|
||||||
|
|
||||||
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (GenericInterpolator)
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace juce
|
||||||
184
modules/juce_audio_basics/utilities/juce_Interpolators.cpp
Normal file
184
modules/juce_audio_basics/utilities/juce_Interpolators.cpp
Normal file
|
|
@ -0,0 +1,184 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
#if JUCE_UNIT_TESTS
|
||||||
|
|
||||||
|
class InterpolatorTests : public UnitTest
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
InterpolatorTests()
|
||||||
|
: UnitTest ("InterpolatorTests", UnitTestCategories::audio)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
template<typename InterpolatorType>
|
||||||
|
void runInterplatorTests (const String& interpolatorName)
|
||||||
|
{
|
||||||
|
auto createGaussian = [](std::vector<float>& destination, float scale, float centreInSamples, float width)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < destination.size(); ++i)
|
||||||
|
{
|
||||||
|
auto x = (((float) i) - centreInSamples) * width;
|
||||||
|
destination[i] = std::exp (-(x * x));
|
||||||
|
}
|
||||||
|
|
||||||
|
FloatVectorOperations::multiply (destination.data(), scale, (int) destination.size());
|
||||||
|
};
|
||||||
|
|
||||||
|
auto findGaussianPeak = [](const std::vector<float>& input) -> float
|
||||||
|
{
|
||||||
|
auto max = std::max_element (std::begin (input), std::end (input));
|
||||||
|
auto maxPrev = max - 1;
|
||||||
|
jassert (maxPrev >= std::begin (input));
|
||||||
|
auto maxNext = max + 1;
|
||||||
|
jassert (maxNext < std::end (input));
|
||||||
|
auto quadraticMaxLoc = (*maxPrev - *maxNext) / (2.0f * ((*maxNext + *maxPrev) - (2.0f * *max)));
|
||||||
|
return quadraticMaxLoc + (float) std::distance (std::begin (input), max);
|
||||||
|
};
|
||||||
|
|
||||||
|
auto expectAllElementsWithin = [this](const std::vector<float>& v1, const std::vector<float>& v2, float tolerance)
|
||||||
|
{
|
||||||
|
expectEquals ((int) v1.size(), (int) v2.size());
|
||||||
|
|
||||||
|
for (size_t i = 0; i < v1.size(); ++i)
|
||||||
|
expectWithinAbsoluteError (v1[i], v2[i], tolerance);
|
||||||
|
};
|
||||||
|
|
||||||
|
InterpolatorType interpolator;
|
||||||
|
|
||||||
|
constexpr size_t inputSize = 1001;
|
||||||
|
static_assert (inputSize > 800 + InterpolatorType::getBaseLatency(),
|
||||||
|
"The test InterpolatorTests input buffer is too small");
|
||||||
|
|
||||||
|
std::vector<float> input (inputSize);
|
||||||
|
constexpr auto inputGaussianMidpoint = (float) (inputSize - 1) / 2.0f;
|
||||||
|
constexpr auto inputGaussianValueAtEnds = 0.000001f;
|
||||||
|
const auto inputGaussianWidth = std::sqrt (-std::log (inputGaussianValueAtEnds)) / inputGaussianMidpoint;
|
||||||
|
|
||||||
|
createGaussian (input, 1.0f, inputGaussianMidpoint, inputGaussianWidth);
|
||||||
|
|
||||||
|
for (auto speedRatio : { 0.4, 0.8263, 1.0, 1.05, 1.2384, 1.6 })
|
||||||
|
{
|
||||||
|
const auto expectedGaussianMidpoint = (inputGaussianMidpoint + InterpolatorType::getBaseLatency()) / (float) speedRatio;
|
||||||
|
const auto expectedGaussianWidth = inputGaussianWidth * (float) speedRatio;
|
||||||
|
|
||||||
|
const auto outputBufferSize = (size_t) std::floor ((float) input.size() / speedRatio);
|
||||||
|
|
||||||
|
for (int numBlocks : { 1, 5 })
|
||||||
|
{
|
||||||
|
const auto inputBlockSize = (float) input.size() / (float) numBlocks;
|
||||||
|
const auto outputBlockSize = (int) std::floor (inputBlockSize / speedRatio);
|
||||||
|
|
||||||
|
std::vector<float> output (outputBufferSize, std::numeric_limits<float>::min());
|
||||||
|
|
||||||
|
beginTest (interpolatorName + " process " + String (numBlocks) + " blocks ratio " + String (speedRatio));
|
||||||
|
|
||||||
|
interpolator.reset();
|
||||||
|
|
||||||
|
{
|
||||||
|
auto* inputPtr = input.data();
|
||||||
|
auto* outputPtr = output.data();
|
||||||
|
|
||||||
|
for (int i = 0; i < numBlocks; ++i)
|
||||||
|
{
|
||||||
|
auto numInputSamplesRead = interpolator.process (speedRatio, inputPtr, outputPtr, outputBlockSize);
|
||||||
|
inputPtr += numInputSamplesRead;
|
||||||
|
outputPtr += outputBlockSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expectWithinAbsoluteError (findGaussianPeak (output), expectedGaussianMidpoint, 0.1f);
|
||||||
|
|
||||||
|
std::vector<float> expectedOutput (output.size());
|
||||||
|
createGaussian (expectedOutput, 1.0f, expectedGaussianMidpoint, expectedGaussianWidth);
|
||||||
|
|
||||||
|
expectAllElementsWithin (output, expectedOutput, 0.02f);
|
||||||
|
|
||||||
|
beginTest (interpolatorName + " process adding " + String (numBlocks) + " blocks ratio " + String (speedRatio));
|
||||||
|
|
||||||
|
interpolator.reset();
|
||||||
|
|
||||||
|
constexpr float addingGain = 0.7384f;
|
||||||
|
|
||||||
|
{
|
||||||
|
auto* inputPtr = input.data();
|
||||||
|
auto* outputPtr = output.data();
|
||||||
|
|
||||||
|
for (int i = 0; i < numBlocks; ++i)
|
||||||
|
{
|
||||||
|
auto numInputSamplesRead = interpolator.processAdding (speedRatio, inputPtr, outputPtr, outputBlockSize, addingGain);
|
||||||
|
inputPtr += numInputSamplesRead;
|
||||||
|
outputPtr += outputBlockSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expectWithinAbsoluteError (findGaussianPeak (output), expectedGaussianMidpoint, 0.1f);
|
||||||
|
|
||||||
|
std::vector<float> additionalOutput (output.size());
|
||||||
|
createGaussian (additionalOutput, addingGain, expectedGaussianMidpoint, expectedGaussianWidth);
|
||||||
|
FloatVectorOperations::add (expectedOutput.data(), additionalOutput.data(), (int) additionalOutput.size());
|
||||||
|
|
||||||
|
expectAllElementsWithin (output, expectedOutput, 0.02f);
|
||||||
|
}
|
||||||
|
|
||||||
|
beginTest (interpolatorName + " process wrap 0 ratio " + String (speedRatio));
|
||||||
|
|
||||||
|
std::vector<float> doubleLengthOutput (2 * outputBufferSize, std::numeric_limits<float>::min());
|
||||||
|
|
||||||
|
interpolator.reset();
|
||||||
|
interpolator.process (speedRatio, input.data(), doubleLengthOutput.data(), (int) doubleLengthOutput.size(),
|
||||||
|
(int) input.size(), 0);
|
||||||
|
|
||||||
|
std::vector<float> expectedDoubleLengthOutput (doubleLengthOutput.size());
|
||||||
|
createGaussian (expectedDoubleLengthOutput, 1.0f, expectedGaussianMidpoint, expectedGaussianWidth);
|
||||||
|
|
||||||
|
expectAllElementsWithin (doubleLengthOutput, expectedDoubleLengthOutput, 0.02f);
|
||||||
|
|
||||||
|
beginTest (interpolatorName + " process wrap double ratio " + String (speedRatio));
|
||||||
|
|
||||||
|
interpolator.reset();
|
||||||
|
interpolator.process (speedRatio, input.data(), doubleLengthOutput.data(), (int) doubleLengthOutput.size(),
|
||||||
|
(int) input.size(), (int) input.size());
|
||||||
|
|
||||||
|
std::vector<float> secondGaussian (doubleLengthOutput.size());
|
||||||
|
createGaussian (secondGaussian, 1.0f, expectedGaussianMidpoint + outputBufferSize, expectedGaussianWidth);
|
||||||
|
FloatVectorOperations::add (expectedDoubleLengthOutput.data(), secondGaussian.data(), (int) expectedDoubleLengthOutput.size());
|
||||||
|
|
||||||
|
expectAllElementsWithin (doubleLengthOutput, expectedDoubleLengthOutput, 0.02f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
void runTest() override
|
||||||
|
{
|
||||||
|
runInterplatorTests<WindowedSincInterpolator> ("WindowedSincInterpolator");
|
||||||
|
runInterplatorTests<LagrangeInterpolator> ("LagrangeInterpolator");
|
||||||
|
runInterplatorTests<CatmullRomInterpolator> ("CatmullRomInterpolator");
|
||||||
|
runInterplatorTests<LinearInterpolator> ("LinearInterpolator");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static InterpolatorTests interpolatorTests;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace juce
|
||||||
228
modules/juce_audio_basics/utilities/juce_Interpolators.h
Normal file
228
modules/juce_audio_basics/utilities/juce_Interpolators.h
Normal file
|
|
@ -0,0 +1,228 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
|
||||||
|
class Interpolators
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
struct WindowedSincTraits
|
||||||
|
{
|
||||||
|
static constexpr float algorithmicLatency = 100.0f;
|
||||||
|
|
||||||
|
static forcedinline float windowedSinc (float firstFrac, int index) noexcept
|
||||||
|
{
|
||||||
|
auto index2 = index + 1;
|
||||||
|
auto frac = firstFrac;
|
||||||
|
|
||||||
|
auto value1 = lookupTable[index];
|
||||||
|
auto value2 = lookupTable[index2];
|
||||||
|
|
||||||
|
return value1 + (frac * (value2 - value1));
|
||||||
|
}
|
||||||
|
|
||||||
|
static forcedinline float valueAtOffset (const float* const inputs, const float offset, int indexBuffer) noexcept
|
||||||
|
{
|
||||||
|
int numCrossings = 100;
|
||||||
|
float result = 0.0f;
|
||||||
|
|
||||||
|
auto samplePosition = indexBuffer;
|
||||||
|
float firstFrac = 0.0f;
|
||||||
|
float lastSincPosition = -1.0f;
|
||||||
|
int index = 0, sign = -1;
|
||||||
|
|
||||||
|
for (int i = -numCrossings; i <= numCrossings; ++i)
|
||||||
|
{
|
||||||
|
auto sincPosition = (1.0f - offset) + (float) i;
|
||||||
|
|
||||||
|
if (i == -numCrossings || (sincPosition >= 0 && lastSincPosition < 0))
|
||||||
|
{
|
||||||
|
auto indexFloat = (sincPosition >= 0.f ? sincPosition : -sincPosition) * 100.0f;
|
||||||
|
index = (int) std::floor (indexFloat);
|
||||||
|
firstFrac = indexFloat - index;
|
||||||
|
sign = (sincPosition < 0 ? -1 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sincPosition == 0.0f)
|
||||||
|
result += inputs[samplePosition];
|
||||||
|
else if (sincPosition < numCrossings && sincPosition > -numCrossings)
|
||||||
|
result += inputs[samplePosition] * windowedSinc (firstFrac, index);
|
||||||
|
|
||||||
|
if (++samplePosition == numCrossings * 2)
|
||||||
|
samplePosition = 0;
|
||||||
|
|
||||||
|
lastSincPosition = sincPosition;
|
||||||
|
index += 100 * sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const float lookupTable[10001];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LagrangeTraits
|
||||||
|
{
|
||||||
|
static constexpr float algorithmicLatency = 2.0f;
|
||||||
|
|
||||||
|
static float valueAtOffset (const float*, float, int) noexcept;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CatmullRomTraits
|
||||||
|
{
|
||||||
|
//==============================================================================
|
||||||
|
static constexpr float algorithmicLatency = 2.0f;
|
||||||
|
|
||||||
|
static forcedinline float valueAtOffset (const float* const inputs, const float offset, int index) noexcept
|
||||||
|
{
|
||||||
|
auto y0 = inputs[index]; if (++index == 4) index = 0;
|
||||||
|
auto y1 = inputs[index]; if (++index == 4) index = 0;
|
||||||
|
auto y2 = inputs[index]; if (++index == 4) index = 0;
|
||||||
|
auto y3 = inputs[index];
|
||||||
|
|
||||||
|
auto halfY0 = 0.5f * y0;
|
||||||
|
auto halfY3 = 0.5f * y3;
|
||||||
|
|
||||||
|
return y1 + offset * ((0.5f * y2 - halfY0)
|
||||||
|
+ (offset * (((y0 + 2.0f * y2) - (halfY3 + 2.5f * y1))
|
||||||
|
+ (offset * ((halfY3 + 1.5f * y1) - (halfY0 + 1.5f * y2))))));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LinearTraits
|
||||||
|
{
|
||||||
|
static constexpr float algorithmicLatency = 1.0f;
|
||||||
|
|
||||||
|
static forcedinline float valueAtOffset (const float* const inputs, const float offset, int index) noexcept
|
||||||
|
{
|
||||||
|
auto y0 = inputs[index];
|
||||||
|
auto y1 = inputs[index == 0 ? 1 : 0];
|
||||||
|
|
||||||
|
return y1 * offset + y0 * (1.0f - offset);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ZeroOrderHoldTraits
|
||||||
|
{
|
||||||
|
static constexpr float algorithmicLatency = 0.0f;
|
||||||
|
|
||||||
|
static forcedinline float valueAtOffset (const float* const inputs, const float, int) noexcept
|
||||||
|
{
|
||||||
|
return inputs[0];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
using WindowedSinc = GenericInterpolator<WindowedSincTraits, 200>;
|
||||||
|
using Lagrange = GenericInterpolator<LagrangeTraits, 5>;
|
||||||
|
using CatmullRom = GenericInterpolator<CatmullRomTraits, 4>;
|
||||||
|
using Linear = GenericInterpolator<LinearTraits, 2>;
|
||||||
|
using ZeroOrderHold = GenericInterpolator<ZeroOrderHoldTraits, 1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/**
|
||||||
|
An interpolator for resampling a stream of floats using high order windowed
|
||||||
|
(hann) sinc interpolation, recommended for high quality resampling.
|
||||||
|
|
||||||
|
Note that the resampler is stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own LinearInterpolator object.
|
||||||
|
|
||||||
|
@see GenericInterpolator
|
||||||
|
|
||||||
|
@see LagrangeInterpolator, CatmullRomInterpolator, LinearInterpolator,
|
||||||
|
ZeroOrderHoldInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
using WindowedSincInterpolator = Interpolators::WindowedSinc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
An interpolator for resampling a stream of floats using 4-point lagrange interpolation.
|
||||||
|
|
||||||
|
Note that the resampler is stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own LagrangeInterpolator object.
|
||||||
|
|
||||||
|
@see GenericInterpolator
|
||||||
|
|
||||||
|
@see CatmullRomInterpolator, WindowedSincInterpolator, LinearInterpolator,
|
||||||
|
ZeroOrderHoldInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
using LagrangeInterpolator = Interpolators::Lagrange;
|
||||||
|
|
||||||
|
/**
|
||||||
|
An interpolator for resampling a stream of floats using Catmull-Rom interpolation.
|
||||||
|
|
||||||
|
Note that the resampler is stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own CatmullRomInterpolator object.
|
||||||
|
|
||||||
|
@see GenericInterpolator
|
||||||
|
|
||||||
|
@see LagrangeInterpolator, WindowedSincInterpolator, LinearInterpolator,
|
||||||
|
ZeroOrderHoldInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
using CatmullRomInterpolator = Interpolators::CatmullRom;
|
||||||
|
|
||||||
|
/**
|
||||||
|
An interpolator for resampling a stream of floats using linear interpolation.
|
||||||
|
|
||||||
|
Note that the resampler is stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own LinearInterpolator object.
|
||||||
|
|
||||||
|
@see GenericInterpolator
|
||||||
|
|
||||||
|
@see LagrangeInterpolator, CatmullRomInterpolator, WindowedSincInterpolator,
|
||||||
|
ZeroOrderHoldInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
using LinearInterpolator = Interpolators::Linear;
|
||||||
|
|
||||||
|
/**
|
||||||
|
An interpolator for resampling a stream of floats using zero order hold
|
||||||
|
interpolation.
|
||||||
|
|
||||||
|
Note that the resampler is stateful, so when there's a break in the continuity
|
||||||
|
of the input stream you're feeding it, you should call reset() before feeding
|
||||||
|
it any new data. And like with any other stateful filter, if you're resampling
|
||||||
|
multiple channels, make sure each one uses its own ZeroOrderHoldInterpolator
|
||||||
|
object.
|
||||||
|
|
||||||
|
@see GenericInterpolator
|
||||||
|
|
||||||
|
@see LagrangeInterpolator, CatmullRomInterpolator, WindowedSincInterpolator,
|
||||||
|
LinearInterpolator
|
||||||
|
|
||||||
|
@tags{Audio}
|
||||||
|
*/
|
||||||
|
using ZeroOrderHoldInterpolator = Interpolators::ZeroOrderHold;
|
||||||
|
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -23,381 +23,6 @@
|
||||||
namespace juce
|
namespace juce
|
||||||
{
|
{
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
static forcedinline void pushInterpolationSample (float* lastInputSamples, float newValue) noexcept
|
|
||||||
{
|
|
||||||
lastInputSamples[4] = lastInputSamples[3];
|
|
||||||
lastInputSamples[3] = lastInputSamples[2];
|
|
||||||
lastInputSamples[2] = lastInputSamples[1];
|
|
||||||
lastInputSamples[1] = lastInputSamples[0];
|
|
||||||
lastInputSamples[0] = newValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
static forcedinline void pushInterpolationSamples (float* lastInputSamples, const float* input, int numOut) noexcept
|
|
||||||
{
|
|
||||||
if (numOut >= 5)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 5; ++i)
|
|
||||||
lastInputSamples[i] = input[--numOut];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, input[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static forcedinline void pushInterpolationSamples (float* lastInputSamples, const float* input,
|
|
||||||
int numOut, int available, int wrapAround) noexcept
|
|
||||||
{
|
|
||||||
if (numOut >= 5)
|
|
||||||
{
|
|
||||||
if (available >= 5)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 5; ++i)
|
|
||||||
lastInputSamples[i] = input[--numOut];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < available; ++i)
|
|
||||||
lastInputSamples[i] = input[--numOut];
|
|
||||||
|
|
||||||
if (wrapAround > 0)
|
|
||||||
{
|
|
||||||
numOut -= wrapAround;
|
|
||||||
|
|
||||||
for (int i = available; i < 5; ++i)
|
|
||||||
lastInputSamples[i] = input[--numOut];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = available; i < 5; ++i)
|
|
||||||
lastInputSamples[i] = 0.0f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (numOut > available)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < available; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, input[i]);
|
|
||||||
|
|
||||||
if (wrapAround > 0)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut - available; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, input[i + available - wrapAround]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut - available; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, input[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename InterpolatorType>
|
|
||||||
static int interpolate (float* lastInputSamples, double& subSamplePos, double actualRatio,
|
|
||||||
const float* in, float* out, int numOut) noexcept
|
|
||||||
{
|
|
||||||
auto pos = subSamplePos;
|
|
||||||
|
|
||||||
if (actualRatio == 1.0 && pos == 1.0)
|
|
||||||
{
|
|
||||||
memcpy (out, in, (size_t) numOut * sizeof (float));
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut);
|
|
||||||
return numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
int numUsed = 0;
|
|
||||||
|
|
||||||
while (numOut > 0)
|
|
||||||
{
|
|
||||||
while (pos >= 1.0)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, in[numUsed++]);
|
|
||||||
pos -= 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*out++ = InterpolatorType::valueAtOffset (lastInputSamples, (float) pos);
|
|
||||||
pos += actualRatio;
|
|
||||||
--numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
subSamplePos = pos;
|
|
||||||
return numUsed;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename InterpolatorType>
|
|
||||||
static int interpolate (float* lastInputSamples, double& subSamplePos, double actualRatio,
|
|
||||||
const float* in, float* out, int numOut, int available, int wrap) noexcept
|
|
||||||
{
|
|
||||||
if (actualRatio == 1.0)
|
|
||||||
{
|
|
||||||
if (available >= numOut)
|
|
||||||
{
|
|
||||||
memcpy (out, in, (size_t) numOut * sizeof (float));
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut, available, wrap);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memcpy (out, in, (size_t) available * sizeof (float));
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut, available, wrap);
|
|
||||||
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
memcpy (out + available, in + available - wrap, (size_t) (numOut - available) * sizeof (float));
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut, available, wrap);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut - available; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto originalIn = in;
|
|
||||||
auto pos = subSamplePos;
|
|
||||||
bool exceeded = false;
|
|
||||||
|
|
||||||
if (actualRatio < 1.0)
|
|
||||||
{
|
|
||||||
for (int i = numOut; --i >= 0;)
|
|
||||||
{
|
|
||||||
if (pos >= 1.0)
|
|
||||||
{
|
|
||||||
if (exceeded)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, *in++);
|
|
||||||
|
|
||||||
if (--available <= 0)
|
|
||||||
{
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
in -= wrap;
|
|
||||||
available += wrap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
exceeded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pos -= 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*out++ = InterpolatorType::valueAtOffset (lastInputSamples, (float) pos);
|
|
||||||
pos += actualRatio;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = numOut; --i >= 0;)
|
|
||||||
{
|
|
||||||
while (pos < actualRatio)
|
|
||||||
{
|
|
||||||
if (exceeded)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, *in++);
|
|
||||||
|
|
||||||
if (--available <= 0)
|
|
||||||
{
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
in -= wrap;
|
|
||||||
available += wrap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
exceeded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pos += 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos -= actualRatio;
|
|
||||||
*out++ = InterpolatorType::valueAtOffset (lastInputSamples, jmax (0.0f, 1.0f - (float) pos));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
subSamplePos = pos;
|
|
||||||
|
|
||||||
if (wrap == 0)
|
|
||||||
return (int) (in - originalIn);
|
|
||||||
|
|
||||||
return ((int) (in - originalIn) + wrap) % wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename InterpolatorType>
|
|
||||||
static int interpolateAdding (float* lastInputSamples, double& subSamplePos, double actualRatio,
|
|
||||||
const float* in, float* out, int numOut,
|
|
||||||
int available, int wrap, float gain) noexcept
|
|
||||||
{
|
|
||||||
if (actualRatio == 1.0)
|
|
||||||
{
|
|
||||||
if (available >= numOut)
|
|
||||||
{
|
|
||||||
FloatVectorOperations::addWithMultiply (out, in, gain, numOut);
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut, available, wrap);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FloatVectorOperations::addWithMultiply (out, in, gain, available);
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, available, available, wrap);
|
|
||||||
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
FloatVectorOperations::addWithMultiply (out, in - wrap, gain, numOut - available);
|
|
||||||
pushInterpolationSamples (lastInputSamples, in - wrap, numOut - available, available, wrap);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = 0; i < numOut-available; ++i)
|
|
||||||
pushInterpolationSample (lastInputSamples, 0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto originalIn = in;
|
|
||||||
auto pos = subSamplePos;
|
|
||||||
bool exceeded = false;
|
|
||||||
|
|
||||||
if (actualRatio < 1.0)
|
|
||||||
{
|
|
||||||
for (int i = numOut; --i >= 0;)
|
|
||||||
{
|
|
||||||
if (pos >= 1.0)
|
|
||||||
{
|
|
||||||
if (exceeded)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, 0.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, *in++);
|
|
||||||
|
|
||||||
if (--available <= 0)
|
|
||||||
{
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
in -= wrap;
|
|
||||||
available += wrap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
exceeded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pos -= 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*out++ += gain * InterpolatorType::valueAtOffset (lastInputSamples, (float) pos);
|
|
||||||
pos += actualRatio;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = numOut; --i >= 0;)
|
|
||||||
{
|
|
||||||
while (pos < actualRatio)
|
|
||||||
{
|
|
||||||
if (exceeded)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, 0.0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, *in++);
|
|
||||||
|
|
||||||
if (--available <= 0)
|
|
||||||
{
|
|
||||||
if (wrap > 0)
|
|
||||||
{
|
|
||||||
in -= wrap;
|
|
||||||
available += wrap;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
exceeded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pos += 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
pos -= actualRatio;
|
|
||||||
*out++ += gain * InterpolatorType::valueAtOffset (lastInputSamples, jmax (0.0f, 1.0f - (float) pos));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
subSamplePos = pos;
|
|
||||||
|
|
||||||
if (wrap == 0)
|
|
||||||
return (int) (in - originalIn);
|
|
||||||
|
|
||||||
return ((int) (in - originalIn) + wrap) % wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename InterpolatorType>
|
|
||||||
static int interpolateAdding (float* lastInputSamples, double& subSamplePos, double actualRatio,
|
|
||||||
const float* in, float* out, int numOut, float gain) noexcept
|
|
||||||
{
|
|
||||||
auto pos = subSamplePos;
|
|
||||||
|
|
||||||
if (actualRatio == 1.0 && pos == 1.0)
|
|
||||||
{
|
|
||||||
FloatVectorOperations::addWithMultiply (out, in, gain, numOut);
|
|
||||||
pushInterpolationSamples (lastInputSamples, in, numOut);
|
|
||||||
return numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
int numUsed = 0;
|
|
||||||
|
|
||||||
while (numOut > 0)
|
|
||||||
{
|
|
||||||
while (pos >= 1.0)
|
|
||||||
{
|
|
||||||
pushInterpolationSample (lastInputSamples, in[numUsed++]);
|
|
||||||
pos -= 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
*out++ += gain * InterpolatorType::valueAtOffset (lastInputSamples, (float) pos);
|
|
||||||
pos += actualRatio;
|
|
||||||
--numOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
subSamplePos = pos;
|
|
||||||
return numUsed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <int k>
|
template <int k>
|
||||||
struct LagrangeResampleHelper
|
struct LagrangeResampleHelper
|
||||||
{
|
{
|
||||||
|
|
@ -410,58 +35,28 @@ struct LagrangeResampleHelper<0>
|
||||||
static forcedinline void calc (float&, float) noexcept {}
|
static forcedinline void calc (float&, float) noexcept {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LagrangeAlgorithm
|
template <int k>
|
||||||
|
static float calcCoefficient (float input, float offset) noexcept
|
||||||
{
|
{
|
||||||
static forcedinline float valueAtOffset (const float* inputs, float offset) noexcept
|
LagrangeResampleHelper<0 - k>::calc (input, -2.0f - offset);
|
||||||
{
|
LagrangeResampleHelper<1 - k>::calc (input, -1.0f - offset);
|
||||||
return calcCoefficient<0> (inputs[4], offset)
|
LagrangeResampleHelper<2 - k>::calc (input, 0.0f - offset);
|
||||||
+ calcCoefficient<1> (inputs[3], offset)
|
LagrangeResampleHelper<3 - k>::calc (input, 1.0f - offset);
|
||||||
+ calcCoefficient<2> (inputs[2], offset)
|
LagrangeResampleHelper<4 - k>::calc (input, 2.0f - offset);
|
||||||
+ calcCoefficient<3> (inputs[1], offset)
|
return input;
|
||||||
+ calcCoefficient<4> (inputs[0], offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <int k>
|
|
||||||
static forcedinline float calcCoefficient (float input, float offset) noexcept
|
|
||||||
{
|
|
||||||
LagrangeResampleHelper<0 - k>::calc (input, -2.0f - offset);
|
|
||||||
LagrangeResampleHelper<1 - k>::calc (input, -1.0f - offset);
|
|
||||||
LagrangeResampleHelper<2 - k>::calc (input, 0.0f - offset);
|
|
||||||
LagrangeResampleHelper<3 - k>::calc (input, 1.0f - offset);
|
|
||||||
LagrangeResampleHelper<4 - k>::calc (input, 2.0f - offset);
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
LagrangeInterpolator::LagrangeInterpolator() noexcept { reset(); }
|
|
||||||
LagrangeInterpolator::~LagrangeInterpolator() noexcept {}
|
|
||||||
|
|
||||||
void LagrangeInterpolator::reset() noexcept
|
|
||||||
{
|
|
||||||
subSamplePos = 1.0;
|
|
||||||
|
|
||||||
for (auto& s : lastInputSamples)
|
|
||||||
s = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int LagrangeInterpolator::process (double actualRatio, const float* in, float* out, int numOut, int available, int wrap) noexcept
|
float Interpolators::LagrangeTraits::valueAtOffset (const float* inputs, float offset, int index) noexcept
|
||||||
{
|
{
|
||||||
return interpolate<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap);
|
float result = 0.0f;
|
||||||
}
|
|
||||||
|
|
||||||
int LagrangeInterpolator::process (double actualRatio, const float* in, float* out, int numOut) noexcept
|
result += calcCoefficient<0> (inputs[index], offset); if (++index == 5) index = 0;
|
||||||
{
|
result += calcCoefficient<1> (inputs[index], offset); if (++index == 5) index = 0;
|
||||||
return interpolate<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut);
|
result += calcCoefficient<2> (inputs[index], offset); if (++index == 5) index = 0;
|
||||||
}
|
result += calcCoefficient<3> (inputs[index], offset); if (++index == 5) index = 0;
|
||||||
|
result += calcCoefficient<4> (inputs[index], offset);
|
||||||
|
|
||||||
int LagrangeInterpolator::processAdding (double actualRatio, const float* in, float* out, int numOut, int available, int wrap, float gain) noexcept
|
return result;
|
||||||
{
|
|
||||||
return interpolateAdding<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap, gain);
|
|
||||||
}
|
|
||||||
|
|
||||||
int LagrangeInterpolator::processAdding (double actualRatio, const float* in, float* out, int numOut, float gain) noexcept
|
|
||||||
{
|
|
||||||
return interpolateAdding<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, gain);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace juce
|
} // namespace juce
|
||||||
|
|
|
||||||
|
|
@ -1,146 +0,0 @@
|
||||||
/*
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
This file is part of the JUCE library.
|
|
||||||
Copyright (c) 2020 - Raw Material Software Limited
|
|
||||||
|
|
||||||
JUCE is an open source library subject to commercial or open-source
|
|
||||||
licensing.
|
|
||||||
|
|
||||||
The code included in this file is provided under the terms of the ISC license
|
|
||||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
|
||||||
To use, copy, modify, and/or distribute this software for any purpose with or
|
|
||||||
without fee is hereby granted provided that the above copyright notice and
|
|
||||||
this permission notice appear in all copies.
|
|
||||||
|
|
||||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
||||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
||||||
DISCLAIMED.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace juce
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
Interpolator for resampling a stream of floats using 4-point lagrange interpolation.
|
|
||||||
|
|
||||||
Note that the resampler is stateful, so when there's a break in the continuity
|
|
||||||
of the input stream you're feeding it, you should call reset() before feeding
|
|
||||||
it any new data. And like with any other stateful filter, if you're resampling
|
|
||||||
multiple channels, make sure each one uses its own LagrangeInterpolator
|
|
||||||
object.
|
|
||||||
|
|
||||||
@see CatmullRomInterpolator
|
|
||||||
|
|
||||||
@tags{Audio}
|
|
||||||
*/
|
|
||||||
class JUCE_API LagrangeInterpolator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
LagrangeInterpolator() noexcept;
|
|
||||||
~LagrangeInterpolator() noexcept;
|
|
||||||
|
|
||||||
LagrangeInterpolator (LagrangeInterpolator&&) noexcept = default;
|
|
||||||
LagrangeInterpolator& operator= (LagrangeInterpolator&&) noexcept = default;
|
|
||||||
|
|
||||||
/** Resets the state of the interpolator.
|
|
||||||
Call this when there's a break in the continuity of the input data stream.
|
|
||||||
*/
|
|
||||||
void reset() noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results into
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int process (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results into
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param available the number of available input samples. If it needs more samples
|
|
||||||
than available, it either wraps back for wrapAround samples, or
|
|
||||||
it feeds zeroes
|
|
||||||
@param wrapAround if the stream exceeds available samples, it wraps back for
|
|
||||||
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int process (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
int available,
|
|
||||||
int wrapAround) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples, adding the results to the output data
|
|
||||||
with a gain.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results to - the result values will be added
|
|
||||||
to any pre-existing data in this buffer after being multiplied by
|
|
||||||
the gain factor
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param gain a gain factor to multiply the resulting samples by before
|
|
||||||
adding them to the destination buffer
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int processAdding (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
float gain) noexcept;
|
|
||||||
|
|
||||||
/** Resamples a stream of samples, adding the results to the output data
|
|
||||||
with a gain.
|
|
||||||
|
|
||||||
@param speedRatio the number of input samples to use for each output sample
|
|
||||||
@param inputSamples the source data to read from. This must contain at
|
|
||||||
least (speedRatio * numOutputSamplesToProduce) samples.
|
|
||||||
@param outputSamples the buffer to write the results to - the result values will be added
|
|
||||||
to any pre-existing data in this buffer after being multiplied by
|
|
||||||
the gain factor
|
|
||||||
@param numOutputSamplesToProduce the number of output samples that should be created
|
|
||||||
@param available the number of available input samples. If it needs more samples
|
|
||||||
than available, it either wraps back for wrapAround samples, or
|
|
||||||
it feeds zeroes
|
|
||||||
@param wrapAround if the stream exceeds available samples, it wraps back for
|
|
||||||
wrapAround samples. If wrapAround is set to 0, it will feed zeroes.
|
|
||||||
@param gain a gain factor to multiply the resulting samples by before
|
|
||||||
adding them to the destination buffer
|
|
||||||
|
|
||||||
@returns the actual number of input samples that were used
|
|
||||||
*/
|
|
||||||
int processAdding (double speedRatio,
|
|
||||||
const float* inputSamples,
|
|
||||||
float* outputSamples,
|
|
||||||
int numOutputSamplesToProduce,
|
|
||||||
int available,
|
|
||||||
int wrapAround,
|
|
||||||
float gain) noexcept;
|
|
||||||
|
|
||||||
private:
|
|
||||||
float lastInputSamples[5];
|
|
||||||
double subSamplePos;
|
|
||||||
|
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LagrangeInterpolator)
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace juce
|
|
||||||
10026
modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp
Normal file
10026
modules/juce_audio_basics/utilities/juce_WindowedSincInterpolator.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -130,6 +130,50 @@ Type jmap (Type sourceValue, Type sourceRangeMin, Type sourceRangeMax, Type targ
|
||||||
return targetRangeMin + ((targetRangeMax - targetRangeMin) * (sourceValue - sourceRangeMin)) / (sourceRangeMax - sourceRangeMin);
|
return targetRangeMin + ((targetRangeMax - targetRangeMin) * (sourceValue - sourceRangeMin)) / (sourceRangeMax - sourceRangeMin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Remaps a normalised value (between 0 and 1) to a logarithmic target range.
|
||||||
|
|
||||||
|
The entire target range must be greater than zero.
|
||||||
|
|
||||||
|
@see mapFromLog10
|
||||||
|
|
||||||
|
@code
|
||||||
|
mapToLog10 (0.5, 0.4, 40.0) == 4.0
|
||||||
|
@endcode
|
||||||
|
*/
|
||||||
|
template <typename Type>
|
||||||
|
Type mapToLog10 (Type value0To1, Type logRangeMin, Type logRangeMax)
|
||||||
|
{
|
||||||
|
jassert (logRangeMin > 0);
|
||||||
|
jassert (logRangeMax > 0);
|
||||||
|
|
||||||
|
auto logMin = std::log10 (logRangeMin);
|
||||||
|
auto logMax = std::log10 (logRangeMax);
|
||||||
|
|
||||||
|
return std::pow ((Type) 10.0, value0To1 * (logMax - logMin) + logMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Remaps a logarithmic value in a target range to a normalised value (between 0 and 1).
|
||||||
|
|
||||||
|
The entire target range must be greater than zero.
|
||||||
|
|
||||||
|
@see mapToLog10
|
||||||
|
|
||||||
|
@code
|
||||||
|
mapFromLog10 (4.0, 0.4, 40.0) == 0.5
|
||||||
|
@endcode
|
||||||
|
*/
|
||||||
|
template <typename Type>
|
||||||
|
Type mapFromLog10 (Type valueInLogRange, Type logRangeMin, Type logRangeMax)
|
||||||
|
{
|
||||||
|
jassert (logRangeMin > 0);
|
||||||
|
jassert (logRangeMax > 0);
|
||||||
|
|
||||||
|
auto logMin = std::log10 (logRangeMin);
|
||||||
|
auto logMax = std::log10 (logRangeMax);
|
||||||
|
|
||||||
|
return (std::log10 (valueInLogRange) - logMin) / (logMax - logMin);
|
||||||
|
}
|
||||||
|
|
||||||
/** Scans an array of values, returning the minimum value that it contains. */
|
/** Scans an array of values, returning the minimum value that it contains. */
|
||||||
template <typename Type>
|
template <typename Type>
|
||||||
Type findMinimum (const Type* data, int numValues)
|
Type findMinimum (const Type* data, int numValues)
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,9 @@ public:
|
||||||
/** Provides the type of scoped unlocker to use with a SpinLock. */
|
/** Provides the type of scoped unlocker to use with a SpinLock. */
|
||||||
using ScopedUnlockType = GenericScopedUnlock<SpinLock>;
|
using ScopedUnlockType = GenericScopedUnlock<SpinLock>;
|
||||||
|
|
||||||
|
/** Provides the type of scoped try-lock to use for locking a SpinLock. */
|
||||||
|
using ScopedTryLockType = GenericScopedTryLock<SpinLock>;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
mutable Atomic<int> lock;
|
mutable Atomic<int> lock;
|
||||||
|
|
|
||||||
|
|
@ -545,7 +545,7 @@ ReferenceCountedArray<IIR::Coefficients<FloatType>>
|
||||||
{
|
{
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeFirstOrderLowPass (sampleRate, frequency));
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeFirstOrderLowPass (sampleRate, frequency));
|
||||||
|
|
||||||
for (auto i = 0; i < order / 2; ++i)
|
for (int i = 0; i < order / 2; ++i)
|
||||||
{
|
{
|
||||||
auto Q = 1.0 / (2.0 * std::cos ((i + 1.0) * MathConstants<double>::pi / order));
|
auto Q = 1.0 / (2.0 * std::cos ((i + 1.0) * MathConstants<double>::pi / order));
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeLowPass (sampleRate, frequency,
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeLowPass (sampleRate, frequency,
|
||||||
|
|
@ -554,7 +554,7 @@ ReferenceCountedArray<IIR::Coefficients<FloatType>>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (auto i = 0; i < order / 2; ++i)
|
for (int i = 0; i < order / 2; ++i)
|
||||||
{
|
{
|
||||||
auto Q = 1.0 / (2.0 * std::cos ((2.0 * i + 1.0) * MathConstants<double>::pi / (order * 2.0)));
|
auto Q = 1.0 / (2.0 * std::cos ((2.0 * i + 1.0) * MathConstants<double>::pi / (order * 2.0)));
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeLowPass (sampleRate, frequency,
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeLowPass (sampleRate, frequency,
|
||||||
|
|
@ -580,7 +580,7 @@ ReferenceCountedArray<IIR::Coefficients<FloatType>>
|
||||||
{
|
{
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeFirstOrderHighPass (sampleRate, frequency));
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeFirstOrderHighPass (sampleRate, frequency));
|
||||||
|
|
||||||
for (auto i = 0; i < order / 2; ++i)
|
for (int i = 0; i < order / 2; ++i)
|
||||||
{
|
{
|
||||||
auto Q = 1.0 / (2.0 * std::cos ((i + 1.0) * MathConstants<double>::pi / order));
|
auto Q = 1.0 / (2.0 * std::cos ((i + 1.0) * MathConstants<double>::pi / order));
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeHighPass (sampleRate, frequency,
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeHighPass (sampleRate, frequency,
|
||||||
|
|
@ -589,7 +589,7 @@ ReferenceCountedArray<IIR::Coefficients<FloatType>>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (auto i = 0; i < order / 2; ++i)
|
for (int i = 0; i < order / 2; ++i)
|
||||||
{
|
{
|
||||||
auto Q = 1.0 / (2.0 * std::cos ((2.0 * i + 1.0) * MathConstants<double>::pi / (order * 2.0)));
|
auto Q = 1.0 / (2.0 * std::cos ((2.0 * i + 1.0) * MathConstants<double>::pi / (order * 2.0)));
|
||||||
arrayFilters.add (*IIR::Coefficients<FloatType>::makeHighPass (sampleRate, frequency,
|
arrayFilters.add (*IIR::Coefficients<FloatType>::makeHighPass (sampleRate, frequency,
|
||||||
|
|
|
||||||
|
|
@ -685,7 +685,7 @@ struct Convolution::Pimpl : private Thread
|
||||||
/** This function copies a buffer to a temporary location, so that any external
|
/** This function copies a buffer to a temporary location, so that any external
|
||||||
audio source can be processed then in the dedicated thread.
|
audio source can be processed then in the dedicated thread.
|
||||||
*/
|
*/
|
||||||
void copyBufferToTemporaryLocation (dsp::AudioBlock<float> block)
|
void copyBufferToTemporaryLocation (AudioBlock<float> block)
|
||||||
{
|
{
|
||||||
const SpinLock::ScopedLockType sl (processLock);
|
const SpinLock::ScopedLockType sl (processLock);
|
||||||
|
|
||||||
|
|
@ -725,7 +725,7 @@ struct Convolution::Pimpl : private Thread
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto interpolated = dsp::AudioBlock<float> (interpolationBuffer).getSubBlock (0, numSamples);
|
auto interpolated = AudioBlock<float> (interpolationBuffer).getSubBlock (0, numSamples);
|
||||||
|
|
||||||
for (size_t channel = 0; channel < numChannels; ++channel)
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ struct FFTFallback : public FFT::Instance
|
||||||
{
|
{
|
||||||
auto* input = reinterpret_cast<Complex<float>*> (d);
|
auto* input = reinterpret_cast<Complex<float>*> (d);
|
||||||
|
|
||||||
for (auto i = size >> 1; i < size; ++i)
|
for (int i = size >> 1; i < size; ++i)
|
||||||
input[i] = std::conj (input[size - i]);
|
input[i] = std::conj (input[size - i]);
|
||||||
|
|
||||||
perform (input, scratch, true);
|
perform (input, scratch, true);
|
||||||
|
|
@ -681,7 +681,7 @@ struct FFTWImpl : public FFT::Instance
|
||||||
auto size = (1 << order);
|
auto size = (1 << order);
|
||||||
|
|
||||||
if (! ignoreNegativeFreqs)
|
if (! ignoreNegativeFreqs)
|
||||||
for (auto i = size >> 1; i < size; ++i)
|
for (int i = size >> 1; i < size; ++i)
|
||||||
out[i] = std::conj (out[size - i]);
|
out[i] = std::conj (out[size - i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -780,7 +780,7 @@ struct IntelFFT : public FFT::Instance
|
||||||
auto size = (1 << order);
|
auto size = (1 << order);
|
||||||
|
|
||||||
if (! ignoreNegativeFreqs)
|
if (! ignoreNegativeFreqs)
|
||||||
for (auto i = size >> 1; i < size; ++i)
|
for (int i = size >> 1; i < size; ++i)
|
||||||
out[i] = std::conj (out[size - i]);
|
out[i] = std::conj (out[size - i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -971,7 +971,7 @@ void FFT::performFrequencyOnlyForwardTransform (float* inputOutputData) const no
|
||||||
performRealOnlyForwardTransform (inputOutputData);
|
performRealOnlyForwardTransform (inputOutputData);
|
||||||
auto* out = reinterpret_cast<Complex<float>*> (inputOutputData);
|
auto* out = reinterpret_cast<Complex<float>*> (inputOutputData);
|
||||||
|
|
||||||
for (auto i = 0; i < size; ++i)
|
for (int i = 0; i < size; ++i)
|
||||||
inputOutputData[i] = std::abs (out[i]);
|
inputOutputData[i] = std::abs (out[i]);
|
||||||
|
|
||||||
zeromem (&inputOutputData[size], static_cast<size_t> (size) * sizeof (float));
|
zeromem (&inputOutputData[size], static_cast<size_t> (size) * sizeof (float));
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,14 @@
|
||||||
|
|
||||||
#include "processors/juce_FIRFilter.cpp"
|
#include "processors/juce_FIRFilter.cpp"
|
||||||
#include "processors/juce_IIRFilter.cpp"
|
#include "processors/juce_IIRFilter.cpp"
|
||||||
#include "processors/juce_LadderFilter.cpp"
|
#include "processors/juce_FirstOrderTPTFilter.cpp"
|
||||||
|
#include "processors/juce_Panner.cpp"
|
||||||
#include "processors/juce_Oversampling.cpp"
|
#include "processors/juce_Oversampling.cpp"
|
||||||
|
#include "processors/juce_BallisticsFilter.cpp"
|
||||||
|
#include "processors/juce_LinkwitzRileyFilter.cpp"
|
||||||
|
#include "processors/juce_DelayLine.cpp"
|
||||||
|
#include "processors/juce_DryWetMixer.cpp"
|
||||||
|
#include "processors/juce_StateVariableTPTFilter.cpp"
|
||||||
#include "maths/juce_SpecialFunctions.cpp"
|
#include "maths/juce_SpecialFunctions.cpp"
|
||||||
#include "maths/juce_Matrix.cpp"
|
#include "maths/juce_Matrix.cpp"
|
||||||
#include "maths/juce_LookupTable.cpp"
|
#include "maths/juce_LookupTable.cpp"
|
||||||
|
|
@ -58,6 +64,12 @@
|
||||||
#include "frequency/juce_Convolution.cpp"
|
#include "frequency/juce_Convolution.cpp"
|
||||||
#include "frequency/juce_Windowing.cpp"
|
#include "frequency/juce_Windowing.cpp"
|
||||||
#include "filter_design/juce_FilterDesign.cpp"
|
#include "filter_design/juce_FilterDesign.cpp"
|
||||||
|
#include "widgets/juce_LadderFilter.cpp"
|
||||||
|
#include "widgets/juce_Compressor.cpp"
|
||||||
|
#include "widgets/juce_NoiseGate.cpp"
|
||||||
|
#include "widgets/juce_Limiter.cpp"
|
||||||
|
#include "widgets/juce_Phaser.cpp"
|
||||||
|
#include "widgets/juce_Chorus.cpp"
|
||||||
|
|
||||||
#if JUCE_USE_SIMD
|
#if JUCE_USE_SIMD
|
||||||
#if defined(__i386__) || defined(__amd64__) || defined(_M_X64) || defined(_X86_) || defined(_M_IX86)
|
#if defined(__i386__) || defined(__amd64__) || defined(_M_X64) || defined(_X86_) || defined(_M_IX86)
|
||||||
|
|
|
||||||
|
|
@ -243,17 +243,29 @@ namespace juce
|
||||||
#include "processors/juce_ProcessorWrapper.h"
|
#include "processors/juce_ProcessorWrapper.h"
|
||||||
#include "processors/juce_ProcessorChain.h"
|
#include "processors/juce_ProcessorChain.h"
|
||||||
#include "processors/juce_ProcessorDuplicator.h"
|
#include "processors/juce_ProcessorDuplicator.h"
|
||||||
#include "processors/juce_Bias.h"
|
|
||||||
#include "processors/juce_Gain.h"
|
|
||||||
#include "processors/juce_WaveShaper.h"
|
|
||||||
#include "processors/juce_IIRFilter.h"
|
#include "processors/juce_IIRFilter.h"
|
||||||
#include "processors/juce_FIRFilter.h"
|
#include "processors/juce_FIRFilter.h"
|
||||||
#include "processors/juce_Oscillator.h"
|
|
||||||
#include "processors/juce_LadderFilter.h"
|
|
||||||
#include "processors/juce_StateVariableFilter.h"
|
#include "processors/juce_StateVariableFilter.h"
|
||||||
|
#include "processors/juce_FirstOrderTPTFilter.h"
|
||||||
|
#include "processors/juce_Panner.h"
|
||||||
|
#include "processors/juce_DelayLine.h"
|
||||||
#include "processors/juce_Oversampling.h"
|
#include "processors/juce_Oversampling.h"
|
||||||
#include "processors/juce_Reverb.h"
|
#include "processors/juce_BallisticsFilter.h"
|
||||||
|
#include "processors/juce_LinkwitzRileyFilter.h"
|
||||||
|
#include "processors/juce_DryWetMixer.h"
|
||||||
|
#include "processors/juce_StateVariableTPTFilter.h"
|
||||||
#include "frequency/juce_FFT.h"
|
#include "frequency/juce_FFT.h"
|
||||||
#include "frequency/juce_Convolution.h"
|
#include "frequency/juce_Convolution.h"
|
||||||
#include "frequency/juce_Windowing.h"
|
#include "frequency/juce_Windowing.h"
|
||||||
#include "filter_design/juce_FilterDesign.h"
|
#include "filter_design/juce_FilterDesign.h"
|
||||||
|
#include "widgets/juce_Reverb.h"
|
||||||
|
#include "widgets/juce_Bias.h"
|
||||||
|
#include "widgets/juce_Gain.h"
|
||||||
|
#include "widgets/juce_WaveShaper.h"
|
||||||
|
#include "widgets/juce_Oscillator.h"
|
||||||
|
#include "widgets/juce_LadderFilter.h"
|
||||||
|
#include "widgets/juce_Compressor.h"
|
||||||
|
#include "widgets/juce_NoiseGate.h"
|
||||||
|
#include "widgets/juce_Limiter.h"
|
||||||
|
#include "widgets/juce_Phaser.h"
|
||||||
|
#include "widgets/juce_Chorus.h"
|
||||||
|
|
|
||||||
121
modules/juce_dsp/processors/juce_BallisticsFilter.cpp
Normal file
121
modules/juce_dsp/processors/juce_BallisticsFilter.cpp
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
BallisticsFilter<SampleType>::BallisticsFilter()
|
||||||
|
{
|
||||||
|
setAttackTime (attackTime);
|
||||||
|
setReleaseTime (releaseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::setAttackTime (SampleType attackTimeMs)
|
||||||
|
{
|
||||||
|
attackTime = attackTimeMs;
|
||||||
|
cteAT = calculateLimitedCte (static_cast<SampleType> (attackTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::setReleaseTime (SampleType releaseTimeMs)
|
||||||
|
{
|
||||||
|
releaseTime = releaseTimeMs;
|
||||||
|
cteRL = calculateLimitedCte (static_cast<SampleType> (releaseTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::setLevelCalculationType (LevelCalculationType newLevelType)
|
||||||
|
{
|
||||||
|
levelType = newLevelType;
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
expFactor = -2.0 * MathConstants<double>::pi * 1000.0 / sampleRate;
|
||||||
|
|
||||||
|
setAttackTime (attackTime);
|
||||||
|
setReleaseTime (releaseTime);
|
||||||
|
|
||||||
|
yold.resize (spec.numChannels);
|
||||||
|
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::reset()
|
||||||
|
{
|
||||||
|
reset (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::reset (SampleType initialValue)
|
||||||
|
{
|
||||||
|
for (auto& old : yold)
|
||||||
|
old = initialValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType BallisticsFilter<SampleType>::processSample (int channel, SampleType inputValue)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (channel, yold.size()));
|
||||||
|
|
||||||
|
SampleType cte = (inputValue > yold[(size_t) channel] ? cteAT : cteRL);
|
||||||
|
|
||||||
|
if (levelType == LevelCalculationType::RMS)
|
||||||
|
inputValue *= inputValue;
|
||||||
|
|
||||||
|
SampleType result = inputValue + cte * (yold[(size_t) channel] - inputValue);
|
||||||
|
yold[(size_t) channel] = result;
|
||||||
|
|
||||||
|
if (levelType == LevelCalculationType::RMS)
|
||||||
|
return std::sqrt (result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void BallisticsFilter<SampleType>::snapToZero() noexcept
|
||||||
|
{
|
||||||
|
for (auto& old : yold)
|
||||||
|
util::snapToZero (old);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType BallisticsFilter<SampleType>::calculateLimitedCte (SampleType timeMs) const noexcept
|
||||||
|
{
|
||||||
|
return timeMs < static_cast<SampleType> (1.0e-3) ? 0
|
||||||
|
: static_cast<SampleType> (std::exp (expFactor / timeMs));
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class BallisticsFilter<float>;
|
||||||
|
template class BallisticsFilter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
142
modules/juce_dsp/processors/juce_BallisticsFilter.h
Normal file
142
modules/juce_dsp/processors/juce_BallisticsFilter.h
Normal file
|
|
@ -0,0 +1,142 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class BallisticsFilterLevelCalculationType
|
||||||
|
{
|
||||||
|
peak,
|
||||||
|
RMS
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
A processor to apply standard attack / release ballistics to an input signal.
|
||||||
|
This is useful in dynamics processors, envelope followers, modulated audio
|
||||||
|
effects and for smoothing animation in data visualisation.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class BallisticsFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using LevelCalculationType = BallisticsFilterLevelCalculationType;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
BallisticsFilter();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the attack time in ms.
|
||||||
|
|
||||||
|
Attack times less that 0.001 will be snapped to zero and very long attack
|
||||||
|
times will eventually saturate depending on the numerical precision used.
|
||||||
|
*/
|
||||||
|
void setAttackTime (SampleType attackTimeMs);
|
||||||
|
|
||||||
|
/** Sets the release time in ms.
|
||||||
|
|
||||||
|
Release times less that 0.001 will be snapped to zero and very long release
|
||||||
|
times will eventually saturate depending on the numerical precision used.
|
||||||
|
*/
|
||||||
|
void setReleaseTime (SampleType releaseTimeMs);
|
||||||
|
|
||||||
|
/** Sets how the filter levels are calculated.
|
||||||
|
|
||||||
|
Level calculation in digital envelope followers is usually performed using
|
||||||
|
peak detection with a rectifier function (like std::abs) and filtering,
|
||||||
|
which returns an envelope dependant on the peak or maximum values of the
|
||||||
|
signal amplitude.
|
||||||
|
|
||||||
|
To perform an estimation of the average value of the signal you can use
|
||||||
|
an RMS (root mean squared) implementation of the ballistics filter instead.
|
||||||
|
This is useful in some compressor and noise-gate designs, or in specific
|
||||||
|
types of volume meters.
|
||||||
|
*/
|
||||||
|
void setLevelCalculationType (LevelCalculationType newCalculationType);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the filter. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter to the given initial value. */
|
||||||
|
void reset (SampleType initialValue);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() <= yold.size());
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample (inputSamples[i], (int) channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
|
snapToZero();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Processes one sample at a time on a given channel. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
/** Ensure that the state variables are rounded to zero if the state
|
||||||
|
variables are denormals. This is only needed if you are doing
|
||||||
|
sample by sample processing.
|
||||||
|
*/
|
||||||
|
void snapToZero() noexcept;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
SampleType calculateLimitedCte (SampleType) const noexcept;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
std::vector<SampleType> yold;
|
||||||
|
double sampleRate = 44100.0, expFactor = -0.142;
|
||||||
|
SampleType attackTime = 1.0, releaseTime = 100.0, cteAT = 0.0, cteRL = 0.0;
|
||||||
|
LevelCalculationType levelType = LevelCalculationType::peak;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
121
modules/juce_dsp/processors/juce_DelayLine.cpp
Normal file
121
modules/juce_dsp/processors/juce_DelayLine.cpp
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
DelayLine<SampleType, InterpolationType>::DelayLine()
|
||||||
|
: DelayLine (0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
DelayLine<SampleType, InterpolationType>::DelayLine (int maximumDelayInSamples)
|
||||||
|
{
|
||||||
|
jassert (maximumDelayInSamples >= 0);
|
||||||
|
|
||||||
|
totalSize = jmax (4, maximumDelayInSamples + 1);
|
||||||
|
sampleRate = 44100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
void DelayLine<SampleType, InterpolationType>::setDelay (SampleType newDelayInSamples)
|
||||||
|
{
|
||||||
|
auto upperLimit = (SampleType) (totalSize - 1);
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newDelayInSamples, upperLimit));
|
||||||
|
|
||||||
|
delay = jlimit ((SampleType) 0, upperLimit, newDelayInSamples);
|
||||||
|
delayInt = static_cast<int> (std::floor (delay));
|
||||||
|
delayFrac = delay - (SampleType) delayInt;
|
||||||
|
|
||||||
|
updateInternalVariables();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
SampleType DelayLine<SampleType, InterpolationType>::getDelay() const
|
||||||
|
{
|
||||||
|
return delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
void DelayLine<SampleType, InterpolationType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
bufferData.setSize ((int) spec.numChannels, totalSize, false, false, true);
|
||||||
|
|
||||||
|
writePos.resize (spec.numChannels);
|
||||||
|
readPos.resize (spec.numChannels);
|
||||||
|
|
||||||
|
v.resize (spec.numChannels);
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
void DelayLine<SampleType, InterpolationType>::reset()
|
||||||
|
{
|
||||||
|
for (auto vec : { &writePos, &readPos })
|
||||||
|
std::fill (vec->begin(), vec->end(), 0);
|
||||||
|
|
||||||
|
std::fill (v.begin(), v.end(), static_cast<SampleType> (0));
|
||||||
|
|
||||||
|
bufferData.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
void DelayLine<SampleType, InterpolationType>::pushSample (int channel, SampleType sample)
|
||||||
|
{
|
||||||
|
bufferData.setSample (channel, writePos[(size_t) channel], sample);
|
||||||
|
writePos[(size_t) channel] = (writePos[(size_t) channel] + totalSize - 1) % totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType, typename InterpolationType>
|
||||||
|
SampleType DelayLine<SampleType, InterpolationType>::popSample (int channel, SampleType delayInSamples, bool updateReadPointer)
|
||||||
|
{
|
||||||
|
if (delayInSamples >= 0)
|
||||||
|
setDelay(delayInSamples);
|
||||||
|
|
||||||
|
auto result = interpolateSample (channel);
|
||||||
|
|
||||||
|
if (updateReadPointer)
|
||||||
|
readPos[(size_t) channel] = (readPos[(size_t) channel] + totalSize - 1) % totalSize;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class DelayLine<float, DelayLineInterpolationTypes::None>;
|
||||||
|
template class DelayLine<double, DelayLineInterpolationTypes::None>;
|
||||||
|
template class DelayLine<float, DelayLineInterpolationTypes::Linear>;
|
||||||
|
template class DelayLine<double, DelayLineInterpolationTypes::Linear>;
|
||||||
|
template class DelayLine<float, DelayLineInterpolationTypes::Lagrange3rd>;
|
||||||
|
template class DelayLine<double, DelayLineInterpolationTypes::Lagrange3rd>;
|
||||||
|
template class DelayLine<float, DelayLineInterpolationTypes::Thiran>;
|
||||||
|
template class DelayLine<double, DelayLineInterpolationTypes::Thiran>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
309
modules/juce_dsp/processors/juce_DelayLine.h
Normal file
309
modules/juce_dsp/processors/juce_DelayLine.h
Normal file
|
|
@ -0,0 +1,309 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/**
|
||||||
|
A collection of structs to pass as the template argument when setting the
|
||||||
|
interpolation type for the DelayLine class.
|
||||||
|
*/
|
||||||
|
namespace DelayLineInterpolationTypes
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
No interpolation between successive samples in the delay line will be
|
||||||
|
performed. This is useful when the delay is a constant integer or to
|
||||||
|
create lo-fi audio effects.
|
||||||
|
*/
|
||||||
|
struct None {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Successive samples in the delay line will be linearly interpolated. This
|
||||||
|
type of interpolation has a low compuational cost where the delay can be
|
||||||
|
modulated in real time, but it also introduces a low-pass filtering effect
|
||||||
|
into your audio signal.
|
||||||
|
*/
|
||||||
|
struct Linear {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Successive samples in the delay line will be interpolated using a 3rd order
|
||||||
|
Lagrange interpolator. This method incurs more computational overhead than
|
||||||
|
linear interpolation but reduces the low-pass filtering effect whilst
|
||||||
|
remaining amenable to real time delay modulation.
|
||||||
|
*/
|
||||||
|
struct Lagrange3rd {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Successive samples in the delay line will be interpolated using 1st order
|
||||||
|
Thiran interpolation. This method is very efficient, and features a flat
|
||||||
|
amplitude frequency response in exchange for less accuracy in the phase
|
||||||
|
response. This interpolation method is stateful so is unsuitable for
|
||||||
|
applications requiring fast delay modulation.
|
||||||
|
*/
|
||||||
|
struct Thiran {};
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/**
|
||||||
|
A delay line processor featuring several algorithms for the fractional delay
|
||||||
|
calculation, block processing, and sample-by-sample processing useful when
|
||||||
|
modulating the delay in real time or creating a standard delay effect with
|
||||||
|
feedback.
|
||||||
|
|
||||||
|
Note: If you intend to change the delay in real time, you may want to smooth
|
||||||
|
changes to the delay systematically using either a ramp or a low-pass filter.
|
||||||
|
|
||||||
|
@see SmoothedValue, FirstOrderTPTFilter
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType, typename InterpolationType = DelayLineInterpolationTypes::Linear>
|
||||||
|
class DelayLine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Default constructor. */
|
||||||
|
DelayLine();
|
||||||
|
|
||||||
|
/** Constructor. */
|
||||||
|
explicit DelayLine (int maximumDelayInSamples);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the delay in samples. */
|
||||||
|
void setDelay (SampleType newDelayInSamples);
|
||||||
|
|
||||||
|
/** Returns the current delay in samples. */
|
||||||
|
SampleType getDelay() const;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Pushes a single sample into one channel of the delay line.
|
||||||
|
|
||||||
|
Use this function and popSample instead of process if you need to modulate
|
||||||
|
the delay in real time instead of using a fixed delay value, or if you want
|
||||||
|
to code a delay effect with a feedback loop.
|
||||||
|
|
||||||
|
@see setDelay, popSample, process
|
||||||
|
*/
|
||||||
|
void pushSample (int channel, SampleType sample);
|
||||||
|
|
||||||
|
/** Pops a single sample from one channel of the delay line.
|
||||||
|
|
||||||
|
Use this function to modulate the delay in real time or implement standard
|
||||||
|
delay effects with feedback.
|
||||||
|
|
||||||
|
@param channel the target channel for the delay line.
|
||||||
|
|
||||||
|
@param delayInSamples sets the wanted fractional delay in samples, or -1
|
||||||
|
to use the value being used before or set with
|
||||||
|
setDelay function.
|
||||||
|
|
||||||
|
@param updateReadPointer should be set to true if you use the function
|
||||||
|
once for each sample, or false if you need
|
||||||
|
multi-tap delay capabilities.
|
||||||
|
|
||||||
|
@see setDelay, pushSample, process
|
||||||
|
*/
|
||||||
|
SampleType popSample (int channel, SampleType delayInSamples = -1, bool updateReadPointer = true);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context.
|
||||||
|
|
||||||
|
Can be used for block processing when the delay is not going to change
|
||||||
|
during processing. The delay must first be set by calling setDelay.
|
||||||
|
|
||||||
|
@see setDelay
|
||||||
|
*/
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumChannels() == writePos.size());
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock.getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
{
|
||||||
|
pushSample ((int) channel, inputSamples[i]);
|
||||||
|
outputSamples[i] = popSample ((int) channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::None>::value, SampleType>::type
|
||||||
|
interpolateSample (int channel) const
|
||||||
|
{
|
||||||
|
auto index = (readPos[(size_t) channel] + delayInt) % totalSize;
|
||||||
|
return bufferData.getSample (channel, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Linear>::value, SampleType>::type
|
||||||
|
interpolateSample (int channel) const
|
||||||
|
{
|
||||||
|
auto index1 = readPos[(size_t) channel] + delayInt;
|
||||||
|
auto index2 = index1 + 1;
|
||||||
|
|
||||||
|
if (index2 >= totalSize)
|
||||||
|
{
|
||||||
|
index1 %= totalSize;
|
||||||
|
index2 %= totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto value1 = bufferData.getSample (channel, index1);
|
||||||
|
auto value2 = bufferData.getSample (channel, index2);
|
||||||
|
|
||||||
|
return value1 + delayFrac * (value2 - value1);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Lagrange3rd>::value, SampleType>::type
|
||||||
|
interpolateSample (int channel) const
|
||||||
|
{
|
||||||
|
auto index1 = readPos[(size_t) channel] + delayInt;
|
||||||
|
auto index2 = index1 + 1;
|
||||||
|
auto index3 = index2 + 1;
|
||||||
|
auto index4 = index3 + 1;
|
||||||
|
|
||||||
|
if (index4 >= totalSize)
|
||||||
|
{
|
||||||
|
index1 %= totalSize;
|
||||||
|
index2 %= totalSize;
|
||||||
|
index3 %= totalSize;
|
||||||
|
index4 %= totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto* samples = bufferData.getReadPointer (channel);
|
||||||
|
|
||||||
|
auto value1 = samples[index1];
|
||||||
|
auto value2 = samples[index2];
|
||||||
|
auto value3 = samples[index3];
|
||||||
|
auto value4 = samples[index4];
|
||||||
|
|
||||||
|
auto d1 = delayFrac - 1.f;
|
||||||
|
auto d2 = delayFrac - 2.f;
|
||||||
|
auto d3 = delayFrac - 3.f;
|
||||||
|
|
||||||
|
auto c1 = -d1 * d2 * d3 / 6.f;
|
||||||
|
auto c2 = d2 * d3 * 0.5f;
|
||||||
|
auto c3 = -d1 * d3 * 0.5f;
|
||||||
|
auto c4 = d1 * d2 / 6.f;
|
||||||
|
|
||||||
|
return value1 * c1 + delayFrac * (value2 * c2 + value3 * c3 + value4 * c4);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Thiran>::value, SampleType>::type
|
||||||
|
interpolateSample (int channel)
|
||||||
|
{
|
||||||
|
auto index1 = readPos[(size_t) channel] + delayInt;
|
||||||
|
auto index2 = index1 + 1;
|
||||||
|
|
||||||
|
if (index2 >= totalSize)
|
||||||
|
{
|
||||||
|
index1 %= totalSize;
|
||||||
|
index2 %= totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto value1 = bufferData.getSample (channel, index1);
|
||||||
|
auto value2 = bufferData.getSample (channel, index2);
|
||||||
|
|
||||||
|
auto output = delayFrac == 0 ? value1 : value2 + alpha * (value1 - v[(size_t) channel]);
|
||||||
|
v[(size_t) channel] = output;
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::None>::value, void>::type
|
||||||
|
updateInternalVariables()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Linear>::value, void>::type
|
||||||
|
updateInternalVariables()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Lagrange3rd>::value, void>::type
|
||||||
|
updateInternalVariables()
|
||||||
|
{
|
||||||
|
if (delayInt >= 1)
|
||||||
|
{
|
||||||
|
delayFrac++;
|
||||||
|
delayInt--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T = InterpolationType>
|
||||||
|
typename std::enable_if <std::is_same <T, DelayLineInterpolationTypes::Thiran>::value, void>::type
|
||||||
|
updateInternalVariables()
|
||||||
|
{
|
||||||
|
if (delayFrac < (SampleType) 0.618 && delayInt >= 1)
|
||||||
|
{
|
||||||
|
delayFrac++;
|
||||||
|
delayInt--;
|
||||||
|
}
|
||||||
|
|
||||||
|
alpha = (1 - delayFrac) / (1 + delayFrac);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
double sampleRate;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
AudioBuffer<SampleType> bufferData;
|
||||||
|
std::vector<SampleType> v;
|
||||||
|
std::vector<int> writePos, readPos;
|
||||||
|
SampleType delay = 0.0, delayFrac = 0.0;
|
||||||
|
int delayInt = 0, totalSize = 4;
|
||||||
|
SampleType alpha = 0.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
172
modules/juce_dsp/processors/juce_DryWetMixer.cpp
Normal file
172
modules/juce_dsp/processors/juce_DryWetMixer.cpp
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
DryWetMixer<SampleType>::DryWetMixer()
|
||||||
|
: DryWetMixer (0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
DryWetMixer<SampleType>::DryWetMixer (int maximumWetLatencyInSamples)
|
||||||
|
: dryDelayLine (maximumWetLatencyInSamples)
|
||||||
|
{
|
||||||
|
dryDelayLine.setDelay (0);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::setMixingRule (MixingRule newRule)
|
||||||
|
{
|
||||||
|
currentMixingRule = newRule;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::setWetMixProportion (SampleType newWetMixProportion)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newWetMixProportion, 1.0));
|
||||||
|
|
||||||
|
mix = jlimit (static_cast<SampleType> (0.0), static_cast<SampleType> (1.0), newWetMixProportion);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::setWetLatency (SampleType wetLatencySamples)
|
||||||
|
{
|
||||||
|
dryDelayLine.setDelay (wetLatencySamples);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
dryDelayLine.prepare (spec);
|
||||||
|
bufferDry.setSize ((int) spec.numChannels, (int) spec.maximumBlockSize, false, false, true);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::reset()
|
||||||
|
{
|
||||||
|
dryVolume.reset (sampleRate, 0.05);
|
||||||
|
wetVolume.reset (sampleRate, 0.05);
|
||||||
|
|
||||||
|
dryDelayLine.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::pushDrySamples (const AudioBlock<const SampleType> drySamples)
|
||||||
|
{
|
||||||
|
jassert (drySamples.getNumChannels() <= (size_t) bufferDry.getNumChannels());
|
||||||
|
|
||||||
|
auto dryBlock = AudioBlock<SampleType> (bufferDry);
|
||||||
|
dryBlock = dryBlock.getSubsetChannelBlock (0, drySamples.getNumChannels()).getSubBlock (0, drySamples.getNumSamples());
|
||||||
|
|
||||||
|
auto context = ProcessContextNonReplacing<SampleType>(drySamples, dryBlock);
|
||||||
|
dryDelayLine.process (context);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::mixWetSamples (AudioBlock<SampleType> inOutBlock)
|
||||||
|
{
|
||||||
|
auto dryBlock = AudioBlock<SampleType> (bufferDry);
|
||||||
|
dryBlock = dryBlock.getSubsetChannelBlock (0, inOutBlock.getNumChannels()).getSubBlock (0, inOutBlock.getNumSamples());
|
||||||
|
|
||||||
|
dryBlock.multiplyBy (dryVolume);
|
||||||
|
inOutBlock.multiplyBy (wetVolume);
|
||||||
|
|
||||||
|
inOutBlock.add (dryBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void DryWetMixer<SampleType>::update()
|
||||||
|
{
|
||||||
|
SampleType dryValue, wetValue;
|
||||||
|
|
||||||
|
switch (currentMixingRule)
|
||||||
|
{
|
||||||
|
case MixingRule::balanced:
|
||||||
|
dryValue = static_cast<SampleType> (2.0) * jmin (static_cast<SampleType> (0.5), static_cast<SampleType> (1.0) - mix);
|
||||||
|
wetValue = static_cast<SampleType> (2.0) * jmin (static_cast<SampleType> (0.5), mix);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::linear:
|
||||||
|
dryValue = static_cast<SampleType> (1.0) - mix;
|
||||||
|
wetValue = mix;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::sin3dB:
|
||||||
|
dryValue = static_cast<SampleType> (std::sin (0.5 * MathConstants<double>::pi * (1.0 - mix)));
|
||||||
|
wetValue = static_cast<SampleType> (std::sin (0.5 * MathConstants<double>::pi * mix));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::sin4p5dB:
|
||||||
|
dryValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * (1.0 - mix)), 1.5));
|
||||||
|
wetValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * mix), 1.5));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::sin6dB:
|
||||||
|
dryValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * (1.0 - mix)), 2.0));
|
||||||
|
wetValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * mix), 2.0));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::squareRoot3dB:
|
||||||
|
dryValue = std::sqrt (static_cast<SampleType> (1.0) - mix);
|
||||||
|
wetValue = std::sqrt (mix);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MixingRule::squareRoot4p5dB:
|
||||||
|
dryValue = static_cast<SampleType> (std::pow (std::sqrt (1.0 - mix), 1.5));
|
||||||
|
wetValue = static_cast<SampleType> (std::pow (std::sqrt (mix), 1.5));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dryValue = jmin (static_cast<SampleType> (0.5), static_cast<SampleType> (1.0) - mix);
|
||||||
|
wetValue = jmin (static_cast<SampleType> (0.5), mix);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dryVolume.setTargetValue (dryValue);
|
||||||
|
wetVolume.setTargetValue (wetValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class DryWetMixer<float>;
|
||||||
|
template class DryWetMixer<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
110
modules/juce_dsp/processors/juce_DryWetMixer.h
Normal file
110
modules/juce_dsp/processors/juce_DryWetMixer.h
Normal file
|
|
@ -0,0 +1,110 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class DryWetMixingRule
|
||||||
|
{
|
||||||
|
linear,
|
||||||
|
balanced,
|
||||||
|
sin3dB,
|
||||||
|
sin4p5dB,
|
||||||
|
sin6dB,
|
||||||
|
squareRoot3dB,
|
||||||
|
squareRoot4p5dB
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
A processor to handle dry/wet mixing of two audio signals, where the wet signal
|
||||||
|
may have additional latency.
|
||||||
|
|
||||||
|
Once a DryWetMixer object is configured, push the dry samples using pushDrySamples
|
||||||
|
and mix into the fully wet samples using mixWetSamples.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class DryWetMixer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using MixingRule = DryWetMixingRule;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Default constructor. */
|
||||||
|
DryWetMixer();
|
||||||
|
|
||||||
|
/** Constructor. */
|
||||||
|
explicit DryWetMixer (int maximumWetLatencyInSamples);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the mix rule. */
|
||||||
|
void setMixingRule (MixingRule newRule);
|
||||||
|
|
||||||
|
/** Sets the current dry/wet mix proportion, with 0.0 being full dry and 1.0
|
||||||
|
being fully wet.
|
||||||
|
*/
|
||||||
|
void setWetMixProportion (SampleType newWetMixProportion);
|
||||||
|
|
||||||
|
/** Sets the relative latency of the wet signal path compared to the dry signal
|
||||||
|
path, and thus the amount of latency compensation that will be added to the
|
||||||
|
dry samples in this processor.
|
||||||
|
*/
|
||||||
|
void setWetLatency (SampleType wetLatencyInSamples);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Copies the dry path samples into an internal delay line. */
|
||||||
|
void pushDrySamples (const AudioBlock<const SampleType> drySamples);
|
||||||
|
|
||||||
|
/** Mixes the supplied wet samples with the latency-compensated dry samples from
|
||||||
|
pushDrySamples.
|
||||||
|
|
||||||
|
@param wetSamples Input: The AudioBlock references fully wet samples.
|
||||||
|
Output: The AudioBlock references the wet samples mixed
|
||||||
|
with the latency compensated dry samples.
|
||||||
|
|
||||||
|
@see pushDrySamples
|
||||||
|
*/
|
||||||
|
void mixWetSamples (AudioBlock<SampleType> wetSamples);
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SmoothedValue<SampleType, ValueSmoothingTypes::Linear> dryVolume, wetVolume;
|
||||||
|
DelayLine<SampleType, DelayLineInterpolationTypes::Thiran> dryDelayLine;
|
||||||
|
AudioBuffer<SampleType> bufferDry;
|
||||||
|
|
||||||
|
SampleType mix = 1.0;
|
||||||
|
MixingRule currentMixingRule = MixingRule::linear;
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
114
modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp
Normal file
114
modules/juce_dsp/processors/juce_FirstOrderTPTFilter.cpp
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
FirstOrderTPTFilter<SampleType>::FirstOrderTPTFilter()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::setType (Type newValue)
|
||||||
|
{
|
||||||
|
filterType = newValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::setCutoffFrequency (SampleType newValue)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newValue, static_cast<SampleType> (sampleRate * 0.5)));
|
||||||
|
|
||||||
|
cutoffFrequency = newValue;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
s1.resize (spec.numChannels);
|
||||||
|
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::reset()
|
||||||
|
{
|
||||||
|
reset (static_cast<SampleType> (0));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::reset (SampleType newValue)
|
||||||
|
{
|
||||||
|
std::fill (s1.begin(), s1.end(), newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType FirstOrderTPTFilter<SampleType>::processSample (int channel, SampleType inputValue)
|
||||||
|
{
|
||||||
|
auto& s = s1[(size_t) channel];
|
||||||
|
|
||||||
|
auto v = G * (inputValue - s);
|
||||||
|
auto y = v + s;
|
||||||
|
s = y + v;
|
||||||
|
|
||||||
|
switch (filterType)
|
||||||
|
{
|
||||||
|
case Type::lowpass: return y;
|
||||||
|
case Type::highpass: return inputValue - y;
|
||||||
|
case Type::allpass: return 2 * y - inputValue;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
jassertfalse;
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::snapToZero() noexcept
|
||||||
|
{
|
||||||
|
for (auto& s : s1)
|
||||||
|
util::snapToZero (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void FirstOrderTPTFilter<SampleType>::update()
|
||||||
|
{
|
||||||
|
auto g = SampleType (std::tan (juce::MathConstants<double>::pi * cutoffFrequency / sampleRate));
|
||||||
|
G = g / (1 + g);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class FirstOrderTPTFilter<float>;
|
||||||
|
template class FirstOrderTPTFilter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
144
modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h
Normal file
144
modules/juce_dsp/processors/juce_FirstOrderTPTFilter.h
Normal file
|
|
@ -0,0 +1,144 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class FirstOrderTPTFilterType
|
||||||
|
{
|
||||||
|
lowpass,
|
||||||
|
highpass,
|
||||||
|
allpass
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/**
|
||||||
|
A first order filter class using the TPT (Topology-Preserving Transform) structure.
|
||||||
|
|
||||||
|
This filter can be modulated at high rates without producing audio artefacts. See
|
||||||
|
Vadim Zavalishin's documentation about TPT structures for more information.
|
||||||
|
|
||||||
|
Note: Using this class prevents some loud audio artefacts commonly encountered when
|
||||||
|
changing the cutoff frequency using of other filter simulation structures and IIR
|
||||||
|
filter classes. However, this class may still require additional smoothing for
|
||||||
|
cutoff frequency changes.
|
||||||
|
|
||||||
|
see StateVariableFilter, IIRFilter, SmoothedValue
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class FirstOrderTPTFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using Type = FirstOrderTPTFilterType;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
FirstOrderTPTFilter();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the filter type. */
|
||||||
|
void setType (Type newType);
|
||||||
|
|
||||||
|
/** Sets the cutoff frequency of the filter.
|
||||||
|
|
||||||
|
@param newFrequencyHz cutoff frequency in Hz.
|
||||||
|
*/
|
||||||
|
void setCutoffFrequency (SampleType newFrequencyHz);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Returns the type of the filter. */
|
||||||
|
Type getType() const noexcept { return filterType; }
|
||||||
|
|
||||||
|
/** Returns the cutoff frequency of the filter. */
|
||||||
|
SampleType getCutoffFrequency() const noexcept { return cutoffFrequency; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the filter. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter to a given value. */
|
||||||
|
void reset (SampleType newValue);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() <= s1.size());
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample ((int) channel, inputSamples[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
|
snapToZero();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes one sample at a time on a given channel. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
/** Ensure that the state variables are rounded to zero if the state
|
||||||
|
variables are denormals. This is only needed if you are doing
|
||||||
|
sample by sample processing.
|
||||||
|
*/
|
||||||
|
void snapToZero() noexcept;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType G = 0;
|
||||||
|
std::vector<SampleType> s1 { 2 };
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Type filterType = Type::lowpass;
|
||||||
|
SampleType cutoffFrequency = 1000.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -86,7 +86,7 @@ namespace IIR
|
||||||
Note that this clears the processing state, but the type of filter and
|
Note that this clears the processing state, but the type of filter and
|
||||||
its coefficients aren't changed.
|
its coefficients aren't changed.
|
||||||
*/
|
*/
|
||||||
void reset() { reset (SampleType {0}); }
|
void reset() { reset (SampleType {0}); }
|
||||||
|
|
||||||
/** Resets the filter's processing pipeline to a specific value.
|
/** Resets the filter's processing pipeline to a specific value.
|
||||||
@see reset
|
@see reset
|
||||||
|
|
@ -105,6 +105,10 @@ namespace IIR
|
||||||
processInternal<ProcessContext, true> (context);
|
processInternal<ProcessContext, true> (context);
|
||||||
else
|
else
|
||||||
processInternal<ProcessContext, false> (context);
|
processInternal<ProcessContext, false> (context);
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
|
snapToZero();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Processes a single sample, without any locking.
|
/** Processes a single sample, without any locking.
|
||||||
|
|
|
||||||
|
|
@ -1,162 +0,0 @@
|
||||||
/*
|
|
||||||
==============================================================================
|
|
||||||
|
|
||||||
This file is part of the JUCE 6 technical preview.
|
|
||||||
Copyright (c) 2020 - Raw Material Software Limited
|
|
||||||
|
|
||||||
You may use this code under the terms of the GPL v3
|
|
||||||
(see www.gnu.org/licenses).
|
|
||||||
|
|
||||||
For this technical preview, this file is not subject to commercial licensing.
|
|
||||||
|
|
||||||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
||||||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
||||||
DISCLAIMED.
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace juce
|
|
||||||
{
|
|
||||||
namespace dsp
|
|
||||||
{
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
LadderFilter<Type>::LadderFilter() : state (2)
|
|
||||||
{
|
|
||||||
setSampleRate (Type (1000)); // intentionally setting unrealistic default
|
|
||||||
// sample rate to catch missing initialisation bugs
|
|
||||||
setResonance (Type (0));
|
|
||||||
setDrive (Type (1.2));
|
|
||||||
setMode (Mode::LPF12);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::setMode (Mode newValue) noexcept
|
|
||||||
{
|
|
||||||
switch (newValue)
|
|
||||||
{
|
|
||||||
case Mode::LPF12: A = {{ Type (0), Type (0), Type (1), Type (0), Type (0) }}; comp = Type (0.5); break;
|
|
||||||
case Mode::HPF12: A = {{ Type (1), Type (-2), Type (1), Type (0), Type (0) }}; comp = Type (0); break;
|
|
||||||
case Mode::LPF24: A = {{ Type (0), Type (0), Type (0), Type (0), Type (1) }}; comp = Type (0.5); break;
|
|
||||||
case Mode::HPF24: A = {{ Type (1), Type (-4), Type (6), Type (-4), Type (1) }}; comp = Type (0); break;
|
|
||||||
default: jassertfalse; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
static constexpr auto outputGain = Type (1.2);
|
|
||||||
|
|
||||||
for (auto& a : A)
|
|
||||||
a *= outputGain;
|
|
||||||
|
|
||||||
mode = newValue;
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::prepare (const juce::dsp::ProcessSpec& spec)
|
|
||||||
{
|
|
||||||
setSampleRate (Type (spec.sampleRate));
|
|
||||||
setNumChannels (spec.numChannels);
|
|
||||||
reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::reset() noexcept
|
|
||||||
{
|
|
||||||
for (auto& s : state)
|
|
||||||
s.fill (Type (0));
|
|
||||||
|
|
||||||
cutoffTransformSmoother.setCurrentAndTargetValue (cutoffTransformSmoother.getTargetValue());
|
|
||||||
scaledResonanceSmoother.setCurrentAndTargetValue (scaledResonanceSmoother.getTargetValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::setCutoffFrequencyHz (Type newValue) noexcept
|
|
||||||
{
|
|
||||||
jassert (newValue > Type (0));
|
|
||||||
cutoffFreqHz = newValue;
|
|
||||||
updateCutoffFreq();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::setResonance (Type newValue) noexcept
|
|
||||||
{
|
|
||||||
jassert (newValue >= Type (0) && newValue <= Type (1));
|
|
||||||
resonance = newValue;
|
|
||||||
updateResonance();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::setDrive (Type newValue) noexcept
|
|
||||||
{
|
|
||||||
jassert (newValue >= Type (1));
|
|
||||||
|
|
||||||
drive = newValue;
|
|
||||||
gain = std::pow (drive, Type (-2.642)) * Type (0.6103) + Type (0.3903);
|
|
||||||
drive2 = drive * Type (0.04) + Type (0.96);
|
|
||||||
gain2 = std::pow (drive2, Type (-2.642)) * Type (0.6103) + Type (0.3903);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
Type LadderFilter<Type>::processSample (Type inputValue, size_t channelToUse) noexcept
|
|
||||||
{
|
|
||||||
auto& s = state[channelToUse];
|
|
||||||
|
|
||||||
const auto a1 = cutoffTransformValue;
|
|
||||||
const auto g = a1 * Type (-1) + Type (1);
|
|
||||||
const auto b0 = g * Type (0.76923076923);
|
|
||||||
const auto b1 = g * Type (0.23076923076);
|
|
||||||
|
|
||||||
const auto dx = gain * saturationLUT (drive * inputValue);
|
|
||||||
const auto a = dx + scaledResonanceValue * Type (-4) * (gain2 * saturationLUT (drive2 * s[4]) - dx * comp);
|
|
||||||
|
|
||||||
const auto b = b1 * s[0] + a1 * s[1] + b0 * a;
|
|
||||||
const auto c = b1 * s[1] + a1 * s[2] + b0 * b;
|
|
||||||
const auto d = b1 * s[2] + a1 * s[3] + b0 * c;
|
|
||||||
const auto e = b1 * s[3] + a1 * s[4] + b0 * d;
|
|
||||||
|
|
||||||
s[0] = a;
|
|
||||||
s[1] = b;
|
|
||||||
s[2] = c;
|
|
||||||
s[3] = d;
|
|
||||||
s[4] = e;
|
|
||||||
|
|
||||||
return a * A[0] + b * A[1] + c * A[2] + d * A[3] + e * A[4];
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::updateSmoothers() noexcept
|
|
||||||
{
|
|
||||||
cutoffTransformValue = cutoffTransformSmoother.getNextValue();
|
|
||||||
scaledResonanceValue = scaledResonanceSmoother.getNextValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template <typename Type>
|
|
||||||
void LadderFilter<Type>::setSampleRate (Type newValue) noexcept
|
|
||||||
{
|
|
||||||
jassert (newValue > Type (0));
|
|
||||||
cutoffFreqScaler = Type (-2.0 * juce::MathConstants<double>::pi) / newValue;
|
|
||||||
|
|
||||||
static constexpr Type smootherRampTimeSec = Type (0.05);
|
|
||||||
cutoffTransformSmoother.reset (newValue, smootherRampTimeSec);
|
|
||||||
scaledResonanceSmoother.reset (newValue, smootherRampTimeSec);
|
|
||||||
|
|
||||||
updateCutoffFreq();
|
|
||||||
}
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
template class LadderFilter<float>;
|
|
||||||
template class LadderFilter<double>;
|
|
||||||
|
|
||||||
} // namespace dsp
|
|
||||||
} // namespace juce
|
|
||||||
142
modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp
Normal file
142
modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp
Normal file
|
|
@ -0,0 +1,142 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
LinkwitzRileyFilter<SampleType>::LinkwitzRileyFilter()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::setType (Type newType)
|
||||||
|
{
|
||||||
|
filterType = newType;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::setCutoffFrequency (SampleType newCutoffFrequencyHz)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newCutoffFrequencyHz, static_cast<SampleType> (sampleRate * 0.5)));
|
||||||
|
|
||||||
|
cutoffFrequency = newCutoffFrequencyHz;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
update();
|
||||||
|
|
||||||
|
s1.resize (spec.numChannels);
|
||||||
|
s2.resize (spec.numChannels);
|
||||||
|
s3.resize (spec.numChannels);
|
||||||
|
s4.resize (spec.numChannels);
|
||||||
|
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::reset()
|
||||||
|
{
|
||||||
|
for (auto s : { &s1, &s2, &s3, &s4 })
|
||||||
|
std::fill (s->begin(), s->end(), static_cast<SampleType> (0));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::snapToZero() noexcept
|
||||||
|
{
|
||||||
|
for (auto s : { &s1, &s2, &s3, &s4 })
|
||||||
|
for (auto& element : *s)
|
||||||
|
util::snapToZero (element);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType LinkwitzRileyFilter<SampleType>::processSample (int channel, SampleType inputValue)
|
||||||
|
{
|
||||||
|
auto yH = (inputValue - (R2 + g) * s1[(size_t) channel] - s2[(size_t) channel]) * h;
|
||||||
|
|
||||||
|
auto yB = g * yH + s1[(size_t) channel];
|
||||||
|
s1[(size_t) channel] = g * yH + yB;
|
||||||
|
|
||||||
|
auto yL = g * yB + s2[(size_t) channel];
|
||||||
|
s2[(size_t) channel] = g * yB + yL;
|
||||||
|
|
||||||
|
if (filterType == Type::allpass)
|
||||||
|
return yL - R2 * yB + yH;
|
||||||
|
|
||||||
|
auto yH2 = ((filterType == Type::lowpass ? yL : yH) - (R2 + g) * s3[(size_t) channel] - s4[(size_t) channel]) * h;
|
||||||
|
|
||||||
|
auto yB2 = g * yH2 + s3[(size_t) channel];
|
||||||
|
s3[(size_t) channel] = g * yH2 + yB2;
|
||||||
|
|
||||||
|
auto yL2 = g * yB2 + s4[(size_t) channel];
|
||||||
|
s4[(size_t) channel] = g * yB2 + yL2;
|
||||||
|
|
||||||
|
return filterType == Type::lowpass ? yL2 : yH2;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::processSample (int channel, SampleType inputValue, SampleType &outputLow, SampleType &outputHigh)
|
||||||
|
{
|
||||||
|
auto yH = (inputValue - (R2 + g) * s1[(size_t) channel] - s2[(size_t) channel]) * h;
|
||||||
|
|
||||||
|
auto yB = g * yH + s1[(size_t) channel];
|
||||||
|
s1[(size_t) channel] = g * yH + yB;
|
||||||
|
|
||||||
|
auto yL = g * yB + s2[(size_t) channel];
|
||||||
|
s2[(size_t) channel] = g * yB + yL;
|
||||||
|
|
||||||
|
auto yH2 = (yL - (R2 + g) * s3[(size_t) channel] - s4[(size_t) channel]) * h;
|
||||||
|
|
||||||
|
auto yB2 = g * yH2 + s3[(size_t) channel];
|
||||||
|
s3[(size_t) channel] = g * yH2 + yB2;
|
||||||
|
|
||||||
|
auto yL2 = g * yB2 + s4[(size_t) channel];
|
||||||
|
s4[(size_t) channel] = g * yB2 + yL2;
|
||||||
|
|
||||||
|
outputLow = yL2;
|
||||||
|
outputHigh = yL - R2 * yB + yH - yL2;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void LinkwitzRileyFilter<SampleType>::update()
|
||||||
|
{
|
||||||
|
g = (SampleType) std::tan (MathConstants<double>::pi * cutoffFrequency / sampleRate);
|
||||||
|
R2 = (SampleType) std::sqrt (2.0);
|
||||||
|
h = (SampleType) (1.0 / (1.0 + R2 * g + g * g));
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class LinkwitzRileyFilter<float>;
|
||||||
|
template class LinkwitzRileyFilter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
136
modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h
Normal file
136
modules/juce_dsp/processors/juce_LinkwitzRileyFilter.h
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class LinkwitzRileyFilterType
|
||||||
|
{
|
||||||
|
lowpass,
|
||||||
|
highpass,
|
||||||
|
allpass
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
A filter class designed to perform multi-band separation using the TPT
|
||||||
|
(Topology-Preserving Transform) structure.
|
||||||
|
|
||||||
|
Linkwitz-Riley filters are widely used in audio crossovers that have two outputs,
|
||||||
|
a low-pass and a high-pass, such that their sum is equivalent to an all-pass filter
|
||||||
|
with a flat magnitude frequency response. The Linkwitz-Riley filters available in
|
||||||
|
this class are designed to have a -24 dB/octave slope (LR 4th order).
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class LinkwitzRileyFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using Type = LinkwitzRileyFilterType;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
LinkwitzRileyFilter();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the filter type. */
|
||||||
|
void setType (Type newType);
|
||||||
|
|
||||||
|
/** Sets the cutoff frequency of the filter in Hz. */
|
||||||
|
void setCutoffFrequency (SampleType newCutoffFrequencyHz);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Returns the type of the filter. */
|
||||||
|
Type getType() const noexcept { return filterType; }
|
||||||
|
|
||||||
|
/** Returns the cutoff frequency of the filter. */
|
||||||
|
SampleType getCutoffFrequency() const noexcept { return cutoffFrequency; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the filter. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() <= s1.size());
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock.getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample ((int) channel, inputSamples[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
|
snapToZero();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Performs the filter operation on a single sample at a time. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
/** Performs the filter operation on a single sample at a time, and returns both
|
||||||
|
the low-pass and the high-pass outputs of the TPT structure.
|
||||||
|
*/
|
||||||
|
void processSample (int channel, SampleType inputValue, SampleType &outputLow, SampleType &outputHigh);
|
||||||
|
|
||||||
|
/** Ensure that the state variables are rounded to zero if the state
|
||||||
|
variables are denormals. This is only needed if you are doing
|
||||||
|
sample by sample processing.
|
||||||
|
*/
|
||||||
|
void snapToZero() noexcept;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType g, R2, h;
|
||||||
|
std::vector<SampleType> s1, s2, s3, s4;
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
SampleType cutoffFrequency = 2000.0;
|
||||||
|
Type filterType = Type::lowpass;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -356,8 +356,9 @@ struct Oversampling2TimesPolyphaseIIR : public Oversampling<SampleType>::Oversa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Snap To Zero
|
#if JUCE_SNAP_TO_ZERO
|
||||||
snapToZero (true);
|
snapToZero (true);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void processSamplesDown (AudioBlock<SampleType>& outputBlock) override
|
void processSamplesDown (AudioBlock<SampleType>& outputBlock) override
|
||||||
|
|
@ -414,8 +415,9 @@ struct Oversampling2TimesPolyphaseIIR : public Oversampling<SampleType>::Oversa
|
||||||
delayDown.setUnchecked (static_cast<int> (channel), delay);
|
delayDown.setUnchecked (static_cast<int> (channel), delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Snap To Zero
|
#if JUCE_SNAP_TO_ZERO
|
||||||
snapToZero (false);
|
snapToZero (false);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void snapToZero (bool snapUpProcessing)
|
void snapToZero (bool snapUpProcessing)
|
||||||
|
|
@ -498,10 +500,10 @@ private:
|
||||||
coeffs.coefficients.clear();
|
coeffs.coefficients.clear();
|
||||||
auto inversion = one / denominator[0];
|
auto inversion = one / denominator[0];
|
||||||
|
|
||||||
for (auto i = 0; i <= numerator.getOrder(); ++i)
|
for (int i = 0; i <= numerator.getOrder(); ++i)
|
||||||
coeffs.coefficients.add (numerator[i] * inversion);
|
coeffs.coefficients.add (numerator[i] * inversion);
|
||||||
|
|
||||||
for (auto i = 1; i <= denominator.getOrder(); ++i)
|
for (int i = 1; i <= denominator.getOrder(); ++i)
|
||||||
coeffs.coefficients.add (denominator[i] * inversion);
|
coeffs.coefficients.add (denominator[i] * inversion);
|
||||||
|
|
||||||
return coeffs;
|
return coeffs;
|
||||||
|
|
@ -531,8 +533,9 @@ Oversampling<SampleType>::Oversampling (size_t newNumChannels)
|
||||||
|
|
||||||
template <typename SampleType>
|
template <typename SampleType>
|
||||||
Oversampling<SampleType>::Oversampling (size_t newNumChannels, size_t newFactor,
|
Oversampling<SampleType>::Oversampling (size_t newNumChannels, size_t newFactor,
|
||||||
FilterType newType, bool isMaximumQuality)
|
FilterType newType, bool isMaximumQuality,
|
||||||
: numChannels (newNumChannels)
|
bool useIntegerLatency)
|
||||||
|
: numChannels (newNumChannels), shouldUseIntegerLatency (useIntegerLatency)
|
||||||
{
|
{
|
||||||
jassert (isPositiveAndBelow (newFactor, 5) && numChannels > 0);
|
jassert (isPositiveAndBelow (newFactor, 5) && numChannels > 0);
|
||||||
|
|
||||||
|
|
@ -620,8 +623,21 @@ void Oversampling<SampleType>::clearOversamplingStages()
|
||||||
}
|
}
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Oversampling<SampleType>::setUsingIntegerLatency (bool useIntegerLatency) noexcept
|
||||||
|
{
|
||||||
|
shouldUseIntegerLatency = useIntegerLatency;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename SampleType>
|
template <typename SampleType>
|
||||||
SampleType Oversampling<SampleType>::getLatencyInSamples() const noexcept
|
SampleType Oversampling<SampleType>::getLatencyInSamples() const noexcept
|
||||||
|
{
|
||||||
|
auto latency = getUncompensatedLatency();
|
||||||
|
return shouldUseIntegerLatency ? latency + fractionalDelay : latency;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType Oversampling<SampleType>::getUncompensatedLatency() const noexcept
|
||||||
{
|
{
|
||||||
auto latency = static_cast<SampleType> (0);
|
auto latency = static_cast<SampleType> (0);
|
||||||
size_t order = 1;
|
size_t order = 1;
|
||||||
|
|
@ -654,6 +670,10 @@ void Oversampling<SampleType>::initProcessing (size_t maximumNumberOfSamplesBefo
|
||||||
currentNumSamples *= stage->factor;
|
currentNumSamples *= stage->factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProcessSpec spec = { 0.0, (uint32) maximumNumberOfSamplesBeforeOversampling, (uint32) numChannels };
|
||||||
|
delay.prepare (spec);
|
||||||
|
updateDelayLine();
|
||||||
|
|
||||||
isReady = true;
|
isReady = true;
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
@ -666,6 +686,8 @@ void Oversampling<SampleType>::reset() noexcept
|
||||||
if (isReady)
|
if (isReady)
|
||||||
for (auto* stage : stages)
|
for (auto* stage : stages)
|
||||||
stage->reset();
|
stage->reset();
|
||||||
|
|
||||||
|
delay.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename SampleType>
|
template <typename SampleType>
|
||||||
|
|
@ -712,6 +734,26 @@ void Oversampling<SampleType>::processSamplesDown (AudioBlock<SampleType>& outpu
|
||||||
}
|
}
|
||||||
|
|
||||||
stages.getFirst()->processSamplesDown (outputBlock);
|
stages.getFirst()->processSamplesDown (outputBlock);
|
||||||
|
|
||||||
|
if (shouldUseIntegerLatency && fractionalDelay > static_cast<SampleType> (0.0))
|
||||||
|
{
|
||||||
|
auto context = ProcessContextReplacing<SampleType> (outputBlock);
|
||||||
|
delay.process (context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Oversampling<SampleType>::updateDelayLine()
|
||||||
|
{
|
||||||
|
auto latency = getUncompensatedLatency();
|
||||||
|
fractionalDelay = static_cast<SampleType> (1.0) - (latency - std::floor (latency));
|
||||||
|
|
||||||
|
if (fractionalDelay == static_cast<SampleType> (1.0))
|
||||||
|
fractionalDelay = static_cast<SampleType> (0.0);
|
||||||
|
else if (fractionalDelay < static_cast<SampleType> (0.618))
|
||||||
|
fractionalDelay += static_cast<SampleType> (1.0);
|
||||||
|
|
||||||
|
delay.setDelay (fractionalDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
template class Oversampling<float>;
|
template class Oversampling<float>;
|
||||||
|
|
|
||||||
|
|
@ -21,24 +21,23 @@ namespace juce
|
||||||
namespace dsp
|
namespace dsp
|
||||||
{
|
{
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
/**
|
/**
|
||||||
A processing class performing multi-channel oversampling.
|
A processor that performs multi-channel oversampling.
|
||||||
|
|
||||||
It can be configured to do 2 times, 4 times, 8 times or 16 times oversampling
|
This class can be configured to do a factor of 2, 4, 8 or 16 times
|
||||||
using a multi-stage approach, either polyphase allpass IIR filters or FIR
|
oversampling, using multiple stages, with polyphase allpass IIR filters or FIR
|
||||||
filters for the filtering, and reports successfully the latency added by the
|
filters, and latency compensation.
|
||||||
filter stages.
|
|
||||||
|
|
||||||
The principle of oversampling is to increase the sample rate of a given
|
The principle of oversampling is to increase the sample rate of a given
|
||||||
non-linear process, to prevent it from creating aliasing. Oversampling works
|
non-linear process to prevent it from creating aliasing. Oversampling works
|
||||||
by upsampling N times the input signal, processing the upsampled signal
|
by upsampling the input signal N times, processing the upsampled signal
|
||||||
with the increased internal sample rate, and downsampling the result to get
|
with the increased internal sample rate, then downsampling the result to get
|
||||||
back the original processing sample rate.
|
back to the original sample rate.
|
||||||
|
|
||||||
Choose between FIR or IIR filtering depending on your needs in term of
|
Choose between FIR or IIR filtering depending on your needs in terms of
|
||||||
latency and phase distortion. With FIR filters, the phase is linear but the
|
latency and phase distortion. With FIR filters the phase is linear but the
|
||||||
latency is maximised. With IIR filtering, the phase is compromised around the
|
latency is maximised. With IIR filtering the phase is compromised around the
|
||||||
Nyquist frequency but the latency is minimised.
|
Nyquist frequency but the latency is minimised.
|
||||||
|
|
||||||
@see FilterDesign.
|
@see FilterDesign.
|
||||||
|
|
@ -57,52 +56,62 @@ public:
|
||||||
numFilterTypes
|
numFilterTypes
|
||||||
};
|
};
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
/**
|
/** The default constructor.
|
||||||
Constructor of the oversampling class. All the processing parameters must be
|
|
||||||
provided at the creation of the oversampling object.
|
|
||||||
|
|
||||||
@param numChannels the number of channels to process with this object
|
Note: This creates a "dummy" oversampling stage, which needs to be removed
|
||||||
@param factor the processing will perform 2 ^ factor times oversampling
|
|
||||||
@param type the type of filter design employed for filtering during
|
|
||||||
oversampling
|
|
||||||
@param isMaxQuality if the oversampling is done using the maximum quality,
|
|
||||||
the filters will be more efficient, but the CPU load will
|
|
||||||
increase as well
|
|
||||||
*/
|
|
||||||
Oversampling (size_t numChannels,
|
|
||||||
size_t factor,
|
|
||||||
FilterType type,
|
|
||||||
bool isMaxQuality = true);
|
|
||||||
|
|
||||||
/** The default constructor of the oversampling class, which can be used to create an
|
|
||||||
empty object and then add the appropriate stages.
|
|
||||||
|
|
||||||
Note: This creates a "dummy" oversampling stage, which needs to be removed first
|
|
||||||
before adding proper oversampling stages.
|
before adding proper oversampling stages.
|
||||||
|
|
||||||
|
@param numChannels the number of channels to process with this object
|
||||||
|
|
||||||
@see clearOversamplingStages, addOversamplingStage
|
@see clearOversamplingStages, addOversamplingStage
|
||||||
*/
|
*/
|
||||||
explicit Oversampling (size_t numChannels = 1);
|
explicit Oversampling (size_t numChannels = 1);
|
||||||
|
|
||||||
|
/** Constructor.
|
||||||
|
|
||||||
|
@param numChannels the number of channels to process with this object
|
||||||
|
@param factor the processing will perform 2 ^ factor times oversampling
|
||||||
|
@param type the type of filter design employed for filtering during
|
||||||
|
oversampling
|
||||||
|
@param isMaxQuality if the oversampling is done using the maximum quality, where
|
||||||
|
the filters will be more efficient but the CPU load will
|
||||||
|
increase as well
|
||||||
|
@param useIntegerLatency if true this processor will add some fractional delay at the
|
||||||
|
end of the signal path to ensure that the overall latency of
|
||||||
|
the oversampling is an integer
|
||||||
|
*/
|
||||||
|
Oversampling (size_t numChannels,
|
||||||
|
size_t factor,
|
||||||
|
FilterType type,
|
||||||
|
bool isMaxQuality = true,
|
||||||
|
bool useIntegerLatency = false);
|
||||||
|
|
||||||
/** Destructor. */
|
/** Destructor. */
|
||||||
~Oversampling();
|
~Oversampling();
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
/** Returns the latency in samples of the whole processing. Use this information
|
/* Sets if this processor should add some fractional delay at the end of the signal
|
||||||
in your main processor to compensate the additional latency involved with
|
path to ensure that the overall latency of the oversampling is an integer.
|
||||||
the oversampling, for example with a dry / wet functionality, and to report
|
*/
|
||||||
the latency to the DAW.
|
void setUsingIntegerLatency (bool shouldUseIntegerLatency) noexcept;
|
||||||
|
|
||||||
Note: The latency might not be integer, so you might need to round its value
|
/** Returns the latency in samples of the overall processing. You can use this
|
||||||
or to compensate it properly in your processing code.
|
information in your main processor to compensate the additional latency
|
||||||
|
involved with the oversampling, for example with a dry / wet mixer, and to
|
||||||
|
report the latency to the DAW.
|
||||||
|
|
||||||
|
Note: If you have not opted to use an integer latency then the latency may not be
|
||||||
|
integer, so you might need to round its value or to compensate it properly in
|
||||||
|
your processing code since plug-ins can only report integer latency values in
|
||||||
|
samples to the DAW.
|
||||||
*/
|
*/
|
||||||
SampleType getLatencyInSamples() const noexcept;
|
SampleType getLatencyInSamples() const noexcept;
|
||||||
|
|
||||||
/** Returns the current oversampling factor. */
|
/** Returns the current oversampling factor. */
|
||||||
size_t getOversamplingFactor() const noexcept;
|
size_t getOversamplingFactor() const noexcept;
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
/** Must be called before any processing, to set the buffer sizes of the internal
|
/** Must be called before any processing, to set the buffer sizes of the internal
|
||||||
buffers of the oversampling processing.
|
buffers of the oversampling processing.
|
||||||
*/
|
*/
|
||||||
|
|
@ -127,7 +136,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void processSamplesDown (AudioBlock<SampleType>& outputBlock) noexcept;
|
void processSamplesDown (AudioBlock<SampleType>& outputBlock) noexcept;
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
/** Adds a new oversampling stage to the Oversampling class, multiplying the
|
/** Adds a new oversampling stage to the Oversampling class, multiplying the
|
||||||
current oversampling factor by two. This is used with the default constructor
|
current oversampling factor by two. This is used with the default constructor
|
||||||
to create custom oversampling chains, requiring a call to the
|
to create custom oversampling chains, requiring a call to the
|
||||||
|
|
@ -171,7 +180,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void clearOversamplingStages();
|
void clearOversamplingStages();
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
size_t factorOversampling = 1;
|
size_t factorOversampling = 1;
|
||||||
size_t numChannels = 1;
|
size_t numChannels = 1;
|
||||||
|
|
||||||
|
|
@ -180,11 +189,17 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
OwnedArray<OversamplingStage> stages;
|
void updateDelayLine();
|
||||||
bool isReady = false;
|
SampleType getUncompensatedLatency() const noexcept;
|
||||||
|
|
||||||
//==============================================================================
|
//===============================================================================
|
||||||
|
OwnedArray<OversamplingStage> stages;
|
||||||
|
bool isReady = false, shouldUseIntegerLatency = false;
|
||||||
|
DelayLine<SampleType, DelayLineInterpolationTypes::Thiran> delay { 8 };
|
||||||
|
SampleType fractionalDelay = 0;
|
||||||
|
|
||||||
|
//===============================================================================
|
||||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Oversampling)
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Oversampling)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
136
modules/juce_dsp/processors/juce_Panner.cpp
Normal file
136
modules/juce_dsp/processors/juce_Panner.cpp
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
Panner<SampleType>::Panner()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Panner<SampleType>::setRule (Rule newRule)
|
||||||
|
{
|
||||||
|
currentRule = newRule;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Panner<SampleType>::setPan (SampleType newPan)
|
||||||
|
{
|
||||||
|
jassert (newPan >= -1.0 && newPan <= 1.0);
|
||||||
|
|
||||||
|
pan = jlimit (static_cast<SampleType> (-1.0), static_cast<SampleType> (1.0), newPan);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Panner<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Panner<SampleType>::reset()
|
||||||
|
{
|
||||||
|
leftVolume .reset (sampleRate, 0.05);
|
||||||
|
rightVolume.reset (sampleRate, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Panner<SampleType>::update()
|
||||||
|
{
|
||||||
|
SampleType leftValue, rightValue, boostValue;
|
||||||
|
|
||||||
|
auto normalisedPan = static_cast<SampleType> (0.5) * (pan + static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
switch (currentRule)
|
||||||
|
{
|
||||||
|
case Rule::balanced:
|
||||||
|
leftValue = jmin (static_cast<SampleType> (0.5), static_cast<SampleType> (1.0) - normalisedPan);
|
||||||
|
rightValue = jmin (static_cast<SampleType> (0.5), normalisedPan);
|
||||||
|
boostValue = static_cast<SampleType> (2.0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::linear:
|
||||||
|
leftValue = static_cast<SampleType> (1.0) - normalisedPan;
|
||||||
|
rightValue = normalisedPan;
|
||||||
|
boostValue = static_cast<SampleType> (2.0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::sin3dB:
|
||||||
|
leftValue = static_cast<SampleType> (std::sin (0.5 * MathConstants<double>::pi * (1.0 - normalisedPan)));
|
||||||
|
rightValue = static_cast<SampleType> (std::sin (0.5 * MathConstants<double>::pi * normalisedPan));
|
||||||
|
boostValue = std::sqrt (static_cast<SampleType> (2.0));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::sin4p5dB:
|
||||||
|
leftValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * (1.0 - normalisedPan)), 1.5));
|
||||||
|
rightValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * normalisedPan), 1.5));
|
||||||
|
boostValue = static_cast<SampleType> (std::pow (2.0, 3.0 / 4.0));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::sin6dB:
|
||||||
|
leftValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * (1.0 - normalisedPan)), 2.0));
|
||||||
|
rightValue = static_cast<SampleType> (std::pow (std::sin (0.5 * MathConstants<double>::pi * normalisedPan), 2.0));
|
||||||
|
boostValue = static_cast<SampleType> (2.0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::squareRoot3dB:
|
||||||
|
leftValue = std::sqrt (static_cast<SampleType> (1.0) - normalisedPan);
|
||||||
|
rightValue = std::sqrt (normalisedPan);
|
||||||
|
boostValue = std::sqrt (static_cast<SampleType> (2.0));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Rule::squareRoot4p5dB:
|
||||||
|
leftValue = static_cast<SampleType> (std::pow (std::sqrt (1.0 - normalisedPan), 1.5));
|
||||||
|
rightValue = static_cast<SampleType> (std::pow (std::sqrt (normalisedPan), 1.5));
|
||||||
|
boostValue = static_cast<SampleType> (std::pow (2.0, 3.0 / 4.0));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
leftValue = jmin (static_cast<SampleType> (0.5), static_cast<SampleType> (1.0) - normalisedPan);
|
||||||
|
rightValue = jmin (static_cast<SampleType> (0.5), normalisedPan);
|
||||||
|
boostValue = static_cast<SampleType> (2.0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
leftVolume .setTargetValue (leftValue * boostValue);
|
||||||
|
rightVolume.setTargetValue (rightValue * boostValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class Panner<float>;
|
||||||
|
template class Panner<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
112
modules/juce_dsp/processors/juce_Panner.h
Normal file
112
modules/juce_dsp/processors/juce_Panner.h
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class PannerRule
|
||||||
|
{
|
||||||
|
linear,
|
||||||
|
balanced,
|
||||||
|
sin3dB,
|
||||||
|
sin4p5dB,
|
||||||
|
sin6dB,
|
||||||
|
squareRoot3dB,
|
||||||
|
squareRoot4p5dB
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
A processor to perform panning operations on stereo buffers.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class Panner
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using Rule = PannerRule;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
Panner();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the panning rule. */
|
||||||
|
void setRule (Rule newRule);
|
||||||
|
|
||||||
|
/** Sets the current panning value, between -1 (full left) and 1 (full right). */
|
||||||
|
void setPan (SampleType newPan);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
|
||||||
|
const auto numInputChannels = inputBlock.getNumChannels();
|
||||||
|
const auto numOutputChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
ignoreUnused (numSamples);
|
||||||
|
|
||||||
|
if (numOutputChannels != 2 || numInputChannels == 0 || numInputChannels > 2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (numInputChannels == 2)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBlock.getSingleChannelBlock (0).copyFrom (inputBlock);
|
||||||
|
outputBlock.getSingleChannelBlock (1).copyFrom (inputBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
return;
|
||||||
|
|
||||||
|
outputBlock.getSingleChannelBlock (0).multiplyBy (leftVolume);
|
||||||
|
outputBlock.getSingleChannelBlock (1).multiplyBy (rightVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Rule currentRule = Rule::balanced;
|
||||||
|
SampleType pan = 0.0;
|
||||||
|
SmoothedValue<SampleType> leftVolume, rightVolume;
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -31,14 +31,21 @@ namespace StateVariableFilter
|
||||||
|
|
||||||
/**
|
/**
|
||||||
An IIR filter that can perform low, band and high-pass filtering on an audio
|
An IIR filter that can perform low, band and high-pass filtering on an audio
|
||||||
signal, with 12 dB of attenuation / octave, using a TPT structure, designed
|
signal, with 12 dB of attenuation per octave, using a TPT structure, designed
|
||||||
for fast modulation (see Vadim Zavalishin's documentation about TPT
|
for fast modulation (see Vadim Zavalishin's documentation about TPT
|
||||||
structures for more information). Its behaviour is based on the analog
|
structures for more information). Its behaviour is based on the analog
|
||||||
state variable filter circuit.
|
state variable filter circuit.
|
||||||
|
|
||||||
Note: The bandpass here is not the one in the RBJ CookBook, its gain can be
|
Note: The bandpass here is not the one in the RBJ CookBook as its gain can be
|
||||||
higher than 0 dB. For the classic 0 dB bandpass, we need to multiply the
|
higher than 0 dB. For the classic 0 dB bandpass, we need to multiply the
|
||||||
result with R2
|
result by R2.
|
||||||
|
|
||||||
|
Note 2: Using this class prevents some loud audio artefacts commonly encountered when
|
||||||
|
changing the cutoff frequency using other filter simulation structures and IIR
|
||||||
|
filter classes. However, this class may still require additional smoothing for
|
||||||
|
cutoff frequency changes.
|
||||||
|
|
||||||
|
see IIRFilter, SmoothedValue
|
||||||
|
|
||||||
@tags{DSP}
|
@tags{DSP}
|
||||||
*/
|
*/
|
||||||
|
|
@ -56,10 +63,19 @@ namespace StateVariableFilter
|
||||||
using ParametersPtr = typename Parameters<NumericType>::Ptr;
|
using ParametersPtr = typename Parameters<NumericType>::Ptr;
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Creates a filter with default parameters. */
|
/** Creates a filter with default parameters.
|
||||||
Filter() : parameters (new Parameters<NumericType>) { reset(); }
|
|
||||||
|
|
||||||
Filter (ParametersPtr parametersToUse) : parameters (std::move (parametersToUse)) { reset(); }
|
The classes in the StateVariableFilter namespace are deprecated. you should
|
||||||
|
use the equivalent functionality in the StateVariableTPTFilter class.
|
||||||
|
*/
|
||||||
|
JUCE_DEPRECATED_WITH_BODY (Filter(), : parameters (new Parameters<NumericType>) { reset(); })
|
||||||
|
|
||||||
|
/** Creates a filter using some parameters.
|
||||||
|
|
||||||
|
The classes in the StateVariableFilter namespace are deprecated. you should
|
||||||
|
use the equivalent functionality in the StateVariableTPTFilter class.
|
||||||
|
*/
|
||||||
|
JUCE_DEPRECATED_WITH_BODY (Filter (ParametersPtr parametersToUse), : parameters (std::move (parametersToUse)) { reset(); })
|
||||||
|
|
||||||
/** Creates a copy of another filter. */
|
/** Creates a copy of another filter. */
|
||||||
Filter (const Filter&) = default;
|
Filter (const Filter&) = default;
|
||||||
|
|
@ -137,7 +153,10 @@ namespace StateVariableFilter
|
||||||
for (size_t i = 0 ; i < n; ++i)
|
for (size_t i = 0 ; i < n; ++i)
|
||||||
output[i] = processLoop<isBypassed, type> (input[i], state);
|
output[i] = processLoop<isBypassed, type> (input[i], state);
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
snapToZero();
|
snapToZero();
|
||||||
|
#endif
|
||||||
|
|
||||||
*parameters = state;
|
*parameters = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -173,6 +192,13 @@ namespace StateVariableFilter
|
||||||
JUCE_LEAK_DETECTOR (Filter)
|
JUCE_LEAK_DETECTOR (Filter)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class StateVariableFilterType
|
||||||
|
{
|
||||||
|
lowPass,
|
||||||
|
bandPass,
|
||||||
|
highPass
|
||||||
|
};
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/**
|
/**
|
||||||
Structure used for the state variable filter parameters.
|
Structure used for the state variable filter parameters.
|
||||||
|
|
@ -183,12 +209,7 @@ namespace StateVariableFilter
|
||||||
struct Parameters : public ProcessorState
|
struct Parameters : public ProcessorState
|
||||||
{
|
{
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
enum class Type
|
using Type = StateVariableFilterType;
|
||||||
{
|
|
||||||
lowPass,
|
|
||||||
bandPass,
|
|
||||||
highPass
|
|
||||||
};
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** The type of the IIR filter */
|
/** The type of the IIR filter */
|
||||||
|
|
|
||||||
130
modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp
Normal file
130
modules/juce_dsp/processors/juce_StateVariableTPTFilter.cpp
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
StateVariableTPTFilter<SampleType>::StateVariableTPTFilter()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::setType (Type newValue)
|
||||||
|
{
|
||||||
|
filterType = newValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::setCutoffFrequency (SampleType newCutoffFrequencyHz)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newCutoffFrequencyHz, static_cast<SampleType> (sampleRate * 0.5)));
|
||||||
|
|
||||||
|
cutoffFrequency = newCutoffFrequencyHz;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::setResonance (SampleType newResonance)
|
||||||
|
{
|
||||||
|
jassert (newResonance > static_cast<SampleType> (0));
|
||||||
|
|
||||||
|
resonance = newResonance;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
s1.resize (spec.numChannels);
|
||||||
|
s2.resize (spec.numChannels);
|
||||||
|
|
||||||
|
reset();
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::reset()
|
||||||
|
{
|
||||||
|
reset (static_cast<SampleType> (0));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::reset (SampleType newValue)
|
||||||
|
{
|
||||||
|
for (auto v : { &s1, &s2 })
|
||||||
|
std::fill (v->begin(), v->end(), newValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::snapToZero() noexcept
|
||||||
|
{
|
||||||
|
for (auto v : { &s1, &s2 })
|
||||||
|
for (auto& element : *v)
|
||||||
|
util::snapToZero (element);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType StateVariableTPTFilter<SampleType>::processSample (int channel, SampleType inputValue)
|
||||||
|
{
|
||||||
|
auto& ls1 = s1[(size_t) channel];
|
||||||
|
auto& ls2 = s2[(size_t) channel];
|
||||||
|
|
||||||
|
auto yHP = h * (inputValue - ls1 * (g + R2) - ls2);
|
||||||
|
|
||||||
|
auto yBP = yHP * g + ls1;
|
||||||
|
ls1 = yHP * g + yBP;
|
||||||
|
|
||||||
|
auto yLP = yBP * g + ls2;
|
||||||
|
ls2 = yBP * g + yLP;
|
||||||
|
|
||||||
|
switch (filterType)
|
||||||
|
{
|
||||||
|
case Type::lowpass: return yLP;
|
||||||
|
case Type::bandpass: return yBP;
|
||||||
|
case Type::highpass: return yHP;
|
||||||
|
default: return yLP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void StateVariableTPTFilter<SampleType>::update()
|
||||||
|
{
|
||||||
|
g = static_cast<SampleType> (std::tan (juce::MathConstants<double>::pi * cutoffFrequency / sampleRate));
|
||||||
|
R2 = static_cast<SampleType> (1.0 / resonance);
|
||||||
|
h = static_cast<SampleType> (1.0 / (1.0 + R2 * g + g * g));
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class StateVariableTPTFilter<float>;
|
||||||
|
template class StateVariableTPTFilter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
159
modules/juce_dsp/processors/juce_StateVariableTPTFilter.h
Normal file
159
modules/juce_dsp/processors/juce_StateVariableTPTFilter.h
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
enum class StateVariableTPTFilterType
|
||||||
|
{
|
||||||
|
lowpass,
|
||||||
|
bandpass,
|
||||||
|
highpass
|
||||||
|
};
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** An IIR filter that can perform low, band and high-pass filtering on an audio
|
||||||
|
signal, with 12 dB of attenuation per octave, using a TPT structure, designed
|
||||||
|
for fast modulation (see Vadim Zavalishin's documentation about TPT
|
||||||
|
structures for more information). Its behaviour is based on the analog
|
||||||
|
state variable filter circuit.
|
||||||
|
|
||||||
|
Note: The bandpass here is not the one in the RBJ CookBook as its gain can be
|
||||||
|
higher than 0 dB. For the classic 0 dB bandpass, we need to multiply the
|
||||||
|
result by R2.
|
||||||
|
|
||||||
|
Note 2: Using this class prevents some loud audio artefacts commonly encountered when
|
||||||
|
changing the cutoff frequency using other filter simulation structures and IIR
|
||||||
|
filter classes. However, this class may still require additional smoothing for
|
||||||
|
cutoff frequency changes.
|
||||||
|
|
||||||
|
see IIRFilter, SmoothedValue
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class StateVariableTPTFilter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
using Type = StateVariableTPTFilterType;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
StateVariableTPTFilter();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the filter type. */
|
||||||
|
void setType (Type newType);
|
||||||
|
|
||||||
|
/** Sets the cutoff frequency of the filter.
|
||||||
|
|
||||||
|
@param newFrequencyHz the new cutoff frequency in Hz.
|
||||||
|
*/
|
||||||
|
void setCutoffFrequency (SampleType newFrequencyHz);
|
||||||
|
|
||||||
|
/** Sets the resonance of the filter.
|
||||||
|
|
||||||
|
Note: The bandwidth of the resonance increases with the value of the
|
||||||
|
parameter. To have a standard 12 dB / octave filter, the value must be set
|
||||||
|
at 1 / sqrt(2).
|
||||||
|
*/
|
||||||
|
void setResonance (SampleType newResonance);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Returns the type of the filter. */
|
||||||
|
Type getType() const noexcept { return filterType; }
|
||||||
|
|
||||||
|
/** Returns the cutoff frequency of the filter. */
|
||||||
|
SampleType getCutoffFrequency() const noexcept { return cutoffFrequency; }
|
||||||
|
|
||||||
|
/** Returns the resonance of the filter. */
|
||||||
|
SampleType getResonance() const noexcept { return resonance; }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the filter. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the filter to a given value. */
|
||||||
|
void reset (SampleType newValue);
|
||||||
|
|
||||||
|
/** Ensure that the state variables are rounded to zero if the state
|
||||||
|
variables are denormals. This is only needed if you are doing
|
||||||
|
sample by sample processing.
|
||||||
|
*/
|
||||||
|
void snapToZero() noexcept;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() <= s1.size());
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample ((int) channel, inputSamples[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if JUCE_SNAP_TO_ZERO
|
||||||
|
snapToZero();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes one sample at a time on a given channel. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType g, h, R2;
|
||||||
|
std::vector<SampleType> s1 { 2 }, s2 { 2 };
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
Type filterType = Type::lowpass;
|
||||||
|
SampleType cutoffFrequency = static_cast<SampleType> (1000.0),
|
||||||
|
resonance = static_cast<SampleType> (1.0 / std::sqrt (2.0));
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -96,7 +96,7 @@ public:
|
||||||
auto&& outBlock = context.getOutputBlock();
|
auto&& outBlock = context.getOutputBlock();
|
||||||
|
|
||||||
jassert (inBlock.getNumChannels() == outBlock.getNumChannels());
|
jassert (inBlock.getNumChannels() == outBlock.getNumChannels());
|
||||||
jassert (inBlock.getNumSamples() == outBlock.getNumSamples());
|
jassert (inBlock.getNumSamples() == outBlock.getNumSamples());
|
||||||
|
|
||||||
auto len = inBlock.getNumSamples();
|
auto len = inBlock.getNumSamples();
|
||||||
auto numChannels = inBlock.getNumChannels();
|
auto numChannels = inBlock.getNumChannels();
|
||||||
131
modules/juce_dsp/widgets/juce_Chorus.cpp
Normal file
131
modules/juce_dsp/widgets/juce_Chorus.cpp
Normal file
|
|
@ -0,0 +1,131 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
Chorus<SampleType>::Chorus()
|
||||||
|
{
|
||||||
|
auto oscFunction = [] (SampleType x) { return std::sin (x); };
|
||||||
|
osc.initialise (oscFunction);
|
||||||
|
|
||||||
|
dryWet.setMixingRule (DryWetMixingRule::linear);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::setRate (SampleType newRateHz)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newRateHz, static_cast<SampleType> (100.0)));
|
||||||
|
|
||||||
|
rate = newRateHz;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::setDepth (SampleType newDepth)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newDepth, static_cast<SampleType> (1.0)));
|
||||||
|
|
||||||
|
depth = newDepth;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::setCentreDelay (SampleType newDelayMs)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newDelayMs, static_cast<SampleType> (100.0)));
|
||||||
|
|
||||||
|
centreDelay = jlimit (static_cast<SampleType> (1.0), static_cast<SampleType> (100.0), newDelayMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::setFeedback (SampleType newFeedback)
|
||||||
|
{
|
||||||
|
jassert (newFeedback >= static_cast<SampleType> (-1.0) && newFeedback <= static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
feedback = newFeedback;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::setMix (SampleType newMix)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newMix, static_cast<SampleType> (1.0)));
|
||||||
|
|
||||||
|
mix = newMix;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
delay.prepare (spec);
|
||||||
|
|
||||||
|
dryWet.prepare (spec);
|
||||||
|
feedbackVolume.resize (spec.numChannels);
|
||||||
|
lastOutput.resize (spec.numChannels);
|
||||||
|
|
||||||
|
osc.prepare (spec);
|
||||||
|
bufferDelayTimes.setSize (1, (int) spec.maximumBlockSize, false, false, true);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::reset()
|
||||||
|
{
|
||||||
|
std::fill (lastOutput.begin(), lastOutput.end(), static_cast<SampleType> (0));
|
||||||
|
|
||||||
|
delay.reset();
|
||||||
|
osc.reset();
|
||||||
|
dryWet.reset();
|
||||||
|
|
||||||
|
oscVolume.reset (sampleRate, 0.05);
|
||||||
|
|
||||||
|
for (auto& vol : feedbackVolume)
|
||||||
|
vol.reset (sampleRate, 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Chorus<SampleType>::update()
|
||||||
|
{
|
||||||
|
osc.setFrequency (rate);
|
||||||
|
oscVolume.setTargetValue (depth * (SampleType) 0.5);
|
||||||
|
dryWet.setWetMixProportion (mix);
|
||||||
|
|
||||||
|
for (auto& vol : feedbackVolume)
|
||||||
|
vol.setTargetValue (feedback);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class Chorus<float>;
|
||||||
|
template class Chorus<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
157
modules/juce_dsp/widgets/juce_Chorus.h
Normal file
157
modules/juce_dsp/widgets/juce_Chorus.h
Normal file
|
|
@ -0,0 +1,157 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
A simple chorus DSP widget that modulates the delay of a delay line in order to
|
||||||
|
create sweeping notches in the magnitude frequency response.
|
||||||
|
|
||||||
|
This audio effect can be controlled via the speed and depth of the LFO controlling
|
||||||
|
the frequency response, a mix control, a feedback control, and the centre delay
|
||||||
|
of the modulation.
|
||||||
|
|
||||||
|
Note: To get classic chorus sounds try to use a centre delay time around 7-8 ms
|
||||||
|
with a low feeback volume and a low depth. This effect can also be used as a
|
||||||
|
flanger with a lower centre delay time and a lot of feedback, and as a vibrato
|
||||||
|
effect if the mix value is 1.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class Chorus
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
Chorus();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the rate (in Hz) of the LFO modulating the chorus delay line. This rate
|
||||||
|
must be lower than 100 Hz.
|
||||||
|
*/
|
||||||
|
void setRate (SampleType newRateHz);
|
||||||
|
|
||||||
|
/** Sets the volume of the LFO modulating the chorus delay line (between 0 and 1).
|
||||||
|
*/
|
||||||
|
void setDepth (SampleType newDepth);
|
||||||
|
|
||||||
|
/** Sets the centre delay in milliseconds of the chorus delay line modulation.
|
||||||
|
This delay must be between 1 and 100 ms.
|
||||||
|
*/
|
||||||
|
void setCentreDelay (SampleType newDelayMs);
|
||||||
|
|
||||||
|
/** Sets the feedback volume (between -1 and 1) of the chorus delay line.
|
||||||
|
Negative values can be used to get specific chorus sounds.
|
||||||
|
*/
|
||||||
|
void setFeedback (SampleType newFeedback);
|
||||||
|
|
||||||
|
/** Sets the amount of dry and wet signal in the output of the chorus (between 0
|
||||||
|
for full dry and 1 for full wet).
|
||||||
|
*/
|
||||||
|
void setMix (SampleType newMix);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumChannels() == lastOutput.size());
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto delayValuesBlock = AudioBlock<SampleType>(bufferDelayTimes).getSubBlock (0, numSamples);
|
||||||
|
auto contextDelay = ProcessContextReplacing<SampleType> (delayValuesBlock);
|
||||||
|
delayValuesBlock.clear();
|
||||||
|
|
||||||
|
osc.process (contextDelay);
|
||||||
|
delayValuesBlock.multiplyBy (oscVolume);
|
||||||
|
|
||||||
|
auto* delaySamples = bufferDelayTimes.getWritePointer (0);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
{
|
||||||
|
auto lfo = jmax (static_cast<SampleType> (1.0), maximumDelayModulation * delaySamples[i] + centreDelay);
|
||||||
|
delaySamples[i] = static_cast<SampleType> (lfo * sampleRate / 1000.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
dryWet.pushDrySamples (inputBlock);
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
{
|
||||||
|
auto input = inputSamples[i];
|
||||||
|
auto output = input - lastOutput[channel];
|
||||||
|
|
||||||
|
delay.pushSample ((int) channel, input);
|
||||||
|
delay.setDelay (delaySamples[i]);
|
||||||
|
output = delay.popSample ((int) channel);
|
||||||
|
|
||||||
|
outputSamples[i] = output;
|
||||||
|
lastOutput[channel] = output * feedbackVolume[channel].getNextValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dryWet.mixWetSamples (outputBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Oscillator<SampleType> osc;
|
||||||
|
DelayLine<SampleType, DelayLineInterpolationTypes::Linear> delay { 5000 };
|
||||||
|
SmoothedValue<SampleType, ValueSmoothingTypes::Linear> oscVolume;
|
||||||
|
std::vector<SmoothedValue<SampleType, ValueSmoothingTypes::Linear>> feedbackVolume { 2 };
|
||||||
|
DryWetMixer<SampleType> dryWet;
|
||||||
|
std::vector<SampleType> lastOutput { 2 };
|
||||||
|
AudioBuffer<SampleType> bufferDelayTimes;
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
SampleType rate = 1.0, depth = 0.25, feedback = 0.0, mix = 0.5,
|
||||||
|
centreDelay = 7.0, maximumDelayModulation = 20.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
117
modules/juce_dsp/widgets/juce_Compressor.cpp
Normal file
117
modules/juce_dsp/widgets/juce_Compressor.cpp
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
Compressor<SampleType>::Compressor()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::setThreshold (SampleType newThreshold)
|
||||||
|
{
|
||||||
|
thresholddB = newThreshold;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::setRatio (SampleType newRatio)
|
||||||
|
{
|
||||||
|
jassert (newRatio >= static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
ratio = newRatio;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::setAttack (SampleType newAttack)
|
||||||
|
{
|
||||||
|
attackTime = newAttack;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::setRelease (SampleType newRelease)
|
||||||
|
{
|
||||||
|
releaseTime = newRelease;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
envelopeFilter.prepare (spec);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::reset()
|
||||||
|
{
|
||||||
|
envelopeFilter.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType Compressor<SampleType>::processSample (int channel, SampleType inputValue)
|
||||||
|
{
|
||||||
|
// Rectifier
|
||||||
|
auto env = jmax ((SampleType) 0.0, inputValue);
|
||||||
|
|
||||||
|
// Ballistics filter
|
||||||
|
env = envelopeFilter.processSample (channel, env);
|
||||||
|
|
||||||
|
// VCA
|
||||||
|
auto gain = (env < threshold) ? static_cast<SampleType> (1.0)
|
||||||
|
: std::pow (env * thresholdInverse, ratioInverse - static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
// Output
|
||||||
|
return gain * inputValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Compressor<SampleType>::update()
|
||||||
|
{
|
||||||
|
threshold = Decibels::decibelsToGain (thresholddB, static_cast<SampleType> (-200.0));
|
||||||
|
thresholdInverse = static_cast<SampleType> (1.0) / threshold;
|
||||||
|
ratioInverse = static_cast<SampleType> (1.0) / ratio;
|
||||||
|
|
||||||
|
envelopeFilter.setAttackTime (attackTime);
|
||||||
|
envelopeFilter.setReleaseTime (releaseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class Compressor<float>;
|
||||||
|
template class Compressor<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
103
modules/juce_dsp/widgets/juce_Compressor.h
Normal file
103
modules/juce_dsp/widgets/juce_Compressor.h
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
A simple compressor with standard threshold, ratio, attack time and release time
|
||||||
|
controls.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class Compressor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
Compressor();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the threshold in dB of the compressor.*/
|
||||||
|
void setThreshold (SampleType newThreshold);
|
||||||
|
|
||||||
|
/** Sets the ratio of the compressor (must be higher or equal to 1).*/
|
||||||
|
void setRatio (SampleType newRatio);
|
||||||
|
|
||||||
|
/** Sets the attack time in milliseconds of the compressor.*/
|
||||||
|
void setAttack (SampleType newAttack);
|
||||||
|
|
||||||
|
/** Sets the release time in milliseconds of the compressor.*/
|
||||||
|
void setRelease (SampleType newRelease);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample ((int) channel, inputSamples[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Performs the processing operation on a single sample at a time. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType threshold, thresholdInverse, ratioInverse;
|
||||||
|
BallisticsFilter<SampleType> envelopeFilter;
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
SampleType thresholddB = 0.0, ratio = 1.0, attackTime = 1.0, releaseTime = 100.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
169
modules/juce_dsp/widgets/juce_LadderFilter.cpp
Normal file
169
modules/juce_dsp/widgets/juce_LadderFilter.cpp
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
LadderFilter<SampleType>::LadderFilter() : state (2)
|
||||||
|
{
|
||||||
|
setSampleRate (SampleType (1000)); // intentionally setting unrealistic default
|
||||||
|
// sample rate to catch missing initialisation bugs
|
||||||
|
setResonance (SampleType (0));
|
||||||
|
setDrive (SampleType (1.2));
|
||||||
|
|
||||||
|
mode = Mode::LPF24;
|
||||||
|
setMode (Mode::LPF12);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::setMode (Mode newMode) noexcept
|
||||||
|
{
|
||||||
|
if (newMode == mode)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (newMode)
|
||||||
|
{
|
||||||
|
case Mode::LPF12: A = {{ SampleType (0), SampleType (0), SampleType (1), SampleType (0), SampleType (0) }}; comp = SampleType (0.5); break;
|
||||||
|
case Mode::HPF12: A = {{ SampleType (1), SampleType (-2), SampleType (1), SampleType (0), SampleType (0) }}; comp = SampleType (0); break;
|
||||||
|
case Mode::BPF12: A = {{ SampleType (0), SampleType (0), SampleType (-1), SampleType (1), SampleType (0) }}; comp = SampleType (0.5); break;
|
||||||
|
case Mode::LPF24: A = {{ SampleType (0), SampleType (0), SampleType (0), SampleType (0), SampleType (1) }}; comp = SampleType (0.5); break;
|
||||||
|
case Mode::HPF24: A = {{ SampleType (1), SampleType (-4), SampleType (6), SampleType (-4), SampleType (1) }}; comp = SampleType (0); break;
|
||||||
|
case Mode::BPF24: A = {{ SampleType (0), SampleType (0), SampleType (1), SampleType (-2), SampleType (1) }}; comp = SampleType (0.5); break;
|
||||||
|
default: jassertfalse; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr auto outputGain = SampleType (1.2);
|
||||||
|
|
||||||
|
for (auto& a : A)
|
||||||
|
a *= outputGain;
|
||||||
|
|
||||||
|
mode = newMode;
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
setSampleRate (SampleType (spec.sampleRate));
|
||||||
|
setNumChannels (spec.numChannels);
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::reset() noexcept
|
||||||
|
{
|
||||||
|
for (auto& s : state)
|
||||||
|
s.fill (SampleType (0));
|
||||||
|
|
||||||
|
cutoffTransformSmoother.setCurrentAndTargetValue (cutoffTransformSmoother.getTargetValue());
|
||||||
|
scaledResonanceSmoother.setCurrentAndTargetValue (scaledResonanceSmoother.getTargetValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::setCutoffFrequencyHz (SampleType newCutoff) noexcept
|
||||||
|
{
|
||||||
|
jassert (newCutoff > SampleType (0));
|
||||||
|
cutoffFreqHz = newCutoff;
|
||||||
|
updateCutoffFreq();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::setResonance (SampleType newResonance) noexcept
|
||||||
|
{
|
||||||
|
jassert (newResonance >= SampleType (0) && newResonance <= SampleType (1));
|
||||||
|
resonance = newResonance;
|
||||||
|
updateResonance();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::setDrive (SampleType newDrive) noexcept
|
||||||
|
{
|
||||||
|
jassert (newDrive >= SampleType (1));
|
||||||
|
|
||||||
|
drive = newDrive;
|
||||||
|
gain = std::pow (drive, SampleType (-2.642)) * SampleType (0.6103) + SampleType (0.3903);
|
||||||
|
drive2 = drive * SampleType (0.04) + SampleType (0.96);
|
||||||
|
gain2 = std::pow (drive2, SampleType (-2.642)) * SampleType (0.6103) + SampleType (0.3903);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType LadderFilter<SampleType>::processSample (SampleType inputValue, size_t channelToUse) noexcept
|
||||||
|
{
|
||||||
|
auto& s = state[channelToUse];
|
||||||
|
|
||||||
|
const auto a1 = cutoffTransformValue;
|
||||||
|
const auto g = a1 * SampleType (-1) + SampleType (1);
|
||||||
|
const auto b0 = g * SampleType (0.76923076923);
|
||||||
|
const auto b1 = g * SampleType (0.23076923076);
|
||||||
|
|
||||||
|
const auto dx = gain * saturationLUT (drive * inputValue);
|
||||||
|
const auto a = dx + scaledResonanceValue * SampleType (-4) * (gain2 * saturationLUT (drive2 * s[4]) - dx * comp);
|
||||||
|
|
||||||
|
const auto b = b1 * s[0] + a1 * s[1] + b0 * a;
|
||||||
|
const auto c = b1 * s[1] + a1 * s[2] + b0 * b;
|
||||||
|
const auto d = b1 * s[2] + a1 * s[3] + b0 * c;
|
||||||
|
const auto e = b1 * s[3] + a1 * s[4] + b0 * d;
|
||||||
|
|
||||||
|
s[0] = a;
|
||||||
|
s[1] = b;
|
||||||
|
s[2] = c;
|
||||||
|
s[3] = d;
|
||||||
|
s[4] = e;
|
||||||
|
|
||||||
|
return a * A[0] + b * A[1] + c * A[2] + d * A[3] + e * A[4];
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::updateSmoothers() noexcept
|
||||||
|
{
|
||||||
|
cutoffTransformValue = cutoffTransformSmoother.getNextValue();
|
||||||
|
scaledResonanceValue = scaledResonanceSmoother.getNextValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void LadderFilter<SampleType>::setSampleRate (SampleType newValue) noexcept
|
||||||
|
{
|
||||||
|
jassert (newValue > SampleType (0));
|
||||||
|
cutoffFreqScaler = SampleType (-2.0 * juce::MathConstants<double>::pi) / newValue;
|
||||||
|
|
||||||
|
static constexpr SampleType smootherRampTimeSec = SampleType (0.05);
|
||||||
|
cutoffTransformSmoother.reset (newValue, smootherRampTimeSec);
|
||||||
|
scaledResonanceSmoother.reset (newValue, smootherRampTimeSec);
|
||||||
|
|
||||||
|
updateCutoffFreq();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class LadderFilter<float>;
|
||||||
|
template class LadderFilter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -21,62 +21,67 @@ namespace juce
|
||||||
namespace dsp
|
namespace dsp
|
||||||
{
|
{
|
||||||
|
|
||||||
|
enum class LadderFilterMode
|
||||||
|
{
|
||||||
|
LPF12, // low-pass 12 dB/octave
|
||||||
|
HPF12, // high-pass 12 dB/octave
|
||||||
|
BPF12, // band-pass 12 dB/octave
|
||||||
|
LPF24, // low-pass 24 dB/octave
|
||||||
|
HPF24, // high-pass 24 dB/octave
|
||||||
|
BPF24 // band-pass 24 dB/octave
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Multi-mode filter based on the Moog ladder filter.
|
Multi-mode filter based on the Moog ladder filter.
|
||||||
|
|
||||||
@tags{DSP}
|
@tags{DSP}
|
||||||
*/
|
*/
|
||||||
template <typename Type>
|
template <typename SampleType>
|
||||||
class LadderFilter
|
class LadderFilter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class Mode
|
//==============================================================================
|
||||||
{
|
using Mode = LadderFilterMode;
|
||||||
LPF12, // low-pass 12 dB/octave
|
|
||||||
HPF12, // high-pass 12 dB/octave
|
|
||||||
LPF24, // low-pass 24 dB/octave
|
|
||||||
HPF24 // high-pass 24 dB/octave
|
|
||||||
};
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Creates an uninitialised filter. Call prepare() before first use. */
|
/** Creates an uninitialised filter. Call prepare() before first use. */
|
||||||
LadderFilter();
|
LadderFilter();
|
||||||
|
|
||||||
/** Enables or disables the filter. If disabled it will simply pass through the input signal. */
|
/** Enables or disables the filter. If disabled it will simply pass through the input signal. */
|
||||||
void setEnabled (bool newValue) noexcept { enabled = newValue; }
|
void setEnabled (bool isEnabled) noexcept { enabled = isEnabled; }
|
||||||
|
|
||||||
/** Sets filter mode. */
|
/** Sets filter mode. */
|
||||||
void setMode (Mode newValue) noexcept;
|
void setMode (Mode newMode) noexcept;
|
||||||
|
|
||||||
/** Initialises the filter. */
|
/** Initialises the filter. */
|
||||||
void prepare (const juce::dsp::ProcessSpec& spec);
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
/** Returns the current number of channels. */
|
/** Returns the current number of channels. */
|
||||||
size_t getNumChannels() const noexcept { return state.size(); }
|
size_t getNumChannels() const noexcept { return state.size(); }
|
||||||
|
|
||||||
/** Resets the internal state variables of the filter. */
|
/** Resets the internal state variables of the filter. */
|
||||||
void reset() noexcept;
|
void reset() noexcept;
|
||||||
|
|
||||||
/** Sets the cutoff frequency of the filter.
|
/** Sets the cutoff frequency of the filter.
|
||||||
@param newValue cutoff frequency in Hz */
|
@param newValue cutoff frequency in Hz */
|
||||||
void setCutoffFrequencyHz (Type newValue) noexcept;
|
void setCutoffFrequencyHz (SampleType newCutoff) noexcept;
|
||||||
|
|
||||||
/** Sets the resonance of the filter.
|
/** Sets the resonance of the filter.
|
||||||
@param newValue a value between 0 and 1; higher values increase the resonance and can result in self oscillation! */
|
@param newValue a value between 0 and 1; higher values increase the resonance and can result in self oscillation! */
|
||||||
void setResonance (Type newValue) noexcept;
|
void setResonance (SampleType newResonance) noexcept;
|
||||||
|
|
||||||
/** Sets the amount of saturation in the filter.
|
/** Sets the amount of saturation in the filter.
|
||||||
@param newValue saturation amount; it can be any number greater than or equal to one. Higher values result in more distortion.*/
|
@param newValue saturation amount; it can be any number greater than or equal to one. Higher values result in more distortion.*/
|
||||||
void setDrive (Type newValue) noexcept;
|
void setDrive (SampleType newDrive) noexcept;
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
template <typename ProcessContext>
|
template <typename ProcessContext>
|
||||||
void process (const ProcessContext& context) noexcept
|
void process (const ProcessContext& context) noexcept
|
||||||
{
|
{
|
||||||
const auto& inputBlock = context.getInputBlock();
|
const auto& inputBlock = context.getInputBlock();
|
||||||
auto& outputBlock = context.getOutputBlock();
|
auto& outputBlock = context.getOutputBlock();
|
||||||
const auto numChannels = outputBlock.getNumChannels();
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
const auto numSamples = outputBlock.getNumSamples();
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
jassert (inputBlock.getNumChannels() <= getNumChannels());
|
jassert (inputBlock.getNumChannels() <= getNumChannels());
|
||||||
jassert (inputBlock.getNumChannels() == numChannels);
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
|
@ -99,35 +104,36 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
Type processSample (Type inputValue, size_t channelToUse) noexcept;
|
SampleType processSample (SampleType inputValue, size_t channelToUse) noexcept;
|
||||||
void updateSmoothers() noexcept;
|
void updateSmoothers() noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
Type drive, drive2, gain, gain2, comp;
|
void setSampleRate (SampleType newValue) noexcept;
|
||||||
|
void setNumChannels (size_t newValue) { state.resize (newValue); }
|
||||||
|
void updateCutoffFreq() noexcept { cutoffTransformSmoother.setTargetValue (std::exp (cutoffFreqHz * cutoffFreqScaler)); }
|
||||||
|
void updateResonance() noexcept { scaledResonanceSmoother.setTargetValue (jmap (resonance, SampleType (0.1), SampleType (1.0))); }
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType drive, drive2, gain, gain2, comp;
|
||||||
|
|
||||||
static constexpr size_t numStates = 5;
|
static constexpr size_t numStates = 5;
|
||||||
std::vector<std::array<Type, numStates>> state;
|
std::vector<std::array<SampleType, numStates>> state;
|
||||||
std::array<Type, numStates> A;
|
std::array<SampleType, numStates> A;
|
||||||
|
|
||||||
SmoothedValue<Type> cutoffTransformSmoother, scaledResonanceSmoother;
|
SmoothedValue<SampleType> cutoffTransformSmoother, scaledResonanceSmoother;
|
||||||
Type cutoffTransformValue, scaledResonanceValue;
|
SampleType cutoffTransformValue, scaledResonanceValue;
|
||||||
|
|
||||||
LookupTableTransform<Type> saturationLUT { [] (Type x) { return std::tanh (x); }, Type (-5), Type (5), 128 };
|
LookupTableTransform<SampleType> saturationLUT { [] (SampleType x) { return std::tanh (x); },
|
||||||
|
SampleType (-5), SampleType (5), 128 };
|
||||||
|
|
||||||
Type cutoffFreqHz { Type (200) };
|
SampleType cutoffFreqHz { SampleType (200) };
|
||||||
Type resonance;
|
SampleType resonance;
|
||||||
|
|
||||||
Type cutoffFreqScaler;
|
SampleType cutoffFreqScaler;
|
||||||
|
|
||||||
Mode mode;
|
Mode mode;
|
||||||
bool enabled = true;
|
bool enabled = true;
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
void setSampleRate (Type newValue) noexcept;
|
|
||||||
void setNumChannels (size_t newValue) { state.resize (newValue); }
|
|
||||||
void updateCutoffFreq() noexcept { cutoffTransformSmoother.setTargetValue (std::exp (cutoffFreqHz * cutoffFreqScaler)); }
|
|
||||||
void updateResonance() noexcept { scaledResonanceSmoother.setTargetValue (jmap (resonance, Type (0.1), Type (1.0))); }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace dsp
|
} // namespace dsp
|
||||||
91
modules/juce_dsp/widgets/juce_Limiter.cpp
Normal file
91
modules/juce_dsp/widgets/juce_Limiter.cpp
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Limiter<SampleType>::setThreshold (SampleType newThreshold)
|
||||||
|
{
|
||||||
|
thresholddB = newThreshold;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Limiter<SampleType>::setRelease (SampleType newRelease)
|
||||||
|
{
|
||||||
|
releaseTime = newRelease;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Limiter<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
firstStageCompressor.prepare (spec);
|
||||||
|
secondStageCompressor.prepare (spec);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Limiter<SampleType>::reset()
|
||||||
|
{
|
||||||
|
firstStageCompressor.reset();
|
||||||
|
secondStageCompressor.reset();
|
||||||
|
|
||||||
|
outputVolume.reset (sampleRate, 0.001);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Limiter<SampleType>::update()
|
||||||
|
{
|
||||||
|
firstStageCompressor.setThreshold ((SampleType) -10.0);
|
||||||
|
firstStageCompressor.setRatio ((SampleType) 4.0);
|
||||||
|
firstStageCompressor.setAttack ((SampleType) 2.0);
|
||||||
|
firstStageCompressor.setRelease ((SampleType) 200.0);
|
||||||
|
|
||||||
|
secondStageCompressor.setThreshold (thresholddB);
|
||||||
|
secondStageCompressor.setRatio ((SampleType) 1000.0);
|
||||||
|
secondStageCompressor.setAttack ((SampleType) 0.001);
|
||||||
|
secondStageCompressor.setRelease (releaseTime);
|
||||||
|
|
||||||
|
auto ratioInverse = (SampleType) (1.0 / 4.0);
|
||||||
|
|
||||||
|
auto gain = (SampleType) std::pow (10.0, 10.0 * (1.0 - ratioInverse) / 40.0);
|
||||||
|
gain *= Decibels::decibelsToGain (-thresholddB, (SampleType) -100.0);
|
||||||
|
|
||||||
|
outputVolume.setTargetValue (gain);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class Limiter<float>;
|
||||||
|
template class Limiter<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
98
modules/juce_dsp/widgets/juce_Limiter.h
Normal file
98
modules/juce_dsp/widgets/juce_Limiter.h
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
A simple limiter with standard threshold and release time controls, featuring
|
||||||
|
two compressors and a hard clipper at 0 dB.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class Limiter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
Limiter() = default;
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the threshold in dB of the limiter.*/
|
||||||
|
void setThreshold (SampleType newThreshold);
|
||||||
|
|
||||||
|
/** Sets the release time in milliseconds of the limiter.*/
|
||||||
|
void setRelease (SampleType newRelease);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
firstStageCompressor.process (context);
|
||||||
|
|
||||||
|
auto secondContext = ProcessContextReplacing<SampleType> (outputBlock);
|
||||||
|
secondStageCompressor.process (secondContext);
|
||||||
|
|
||||||
|
outputBlock.multiplyBy (outputVolume);
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
FloatVectorOperations::clip (outputBlock.getChannelPointer (channel), outputBlock.getChannelPointer (channel),
|
||||||
|
(SampleType) -1.0, (SampleType) 1.0, (int) numSamples);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Compressor<SampleType> firstStageCompressor, secondStageCompressor;
|
||||||
|
SmoothedValue<SampleType, ValueSmoothingTypes::Linear> outputVolume;
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
SampleType thresholddB = -10.0, releaseTime = 100.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
122
modules/juce_dsp/widgets/juce_NoiseGate.cpp
Normal file
122
modules/juce_dsp/widgets/juce_NoiseGate.cpp
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
NoiseGate<SampleType>::NoiseGate()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
|
||||||
|
RMSFilter.setLevelCalculationType (BallisticsFilterLevelCalculationType::RMS);
|
||||||
|
RMSFilter.setAttackTime (static_cast<SampleType> (0.0));
|
||||||
|
RMSFilter.setReleaseTime (static_cast<SampleType> (50.0));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::setThreshold (SampleType newValue)
|
||||||
|
{
|
||||||
|
thresholddB = newValue;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::setRatio (SampleType newRatio)
|
||||||
|
{
|
||||||
|
jassert (newRatio >= static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
ratio = newRatio;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::setAttack (SampleType newAttack)
|
||||||
|
{
|
||||||
|
attackTime = newAttack;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::setRelease (SampleType newRelease)
|
||||||
|
{
|
||||||
|
releaseTime = newRelease;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
RMSFilter.prepare (spec);
|
||||||
|
envelopeFilter.prepare (spec);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::reset()
|
||||||
|
{
|
||||||
|
RMSFilter.reset();
|
||||||
|
envelopeFilter.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
SampleType NoiseGate<SampleType>::processSample (int channel, SampleType sample)
|
||||||
|
{
|
||||||
|
// RMS ballistics filter
|
||||||
|
auto env = RMSFilter.processSample (channel, sample);
|
||||||
|
|
||||||
|
// Ballistics filter
|
||||||
|
env = envelopeFilter.processSample (channel, env);
|
||||||
|
|
||||||
|
// VCA
|
||||||
|
auto gain = (env > threshold) ? static_cast<SampleType> (1.0)
|
||||||
|
: std::pow (env * thresholdInverse, currentRatio - static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
// Output
|
||||||
|
return gain * sample;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void NoiseGate<SampleType>::update()
|
||||||
|
{
|
||||||
|
threshold = Decibels::decibelsToGain (thresholddB, static_cast<SampleType> (-200.0));
|
||||||
|
thresholdInverse = static_cast<SampleType> (1.0) / threshold;
|
||||||
|
currentRatio = ratio;
|
||||||
|
|
||||||
|
envelopeFilter.setAttackTime (attackTime);
|
||||||
|
envelopeFilter.setReleaseTime (releaseTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class NoiseGate<float>;
|
||||||
|
template class NoiseGate<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
103
modules/juce_dsp/widgets/juce_NoiseGate.h
Normal file
103
modules/juce_dsp/widgets/juce_NoiseGate.h
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
A simple noise gate with standard threshold, ratio, attack time and
|
||||||
|
release time controls. Can be used as an expander if the ratio is low.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class NoiseGate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
NoiseGate();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the threshold in dB of the noise-gate.*/
|
||||||
|
void setThreshold (SampleType newThreshold);
|
||||||
|
|
||||||
|
/** Sets the ratio of the noise-gate (must be higher or equal to 1).*/
|
||||||
|
void setRatio (SampleType newRatio);
|
||||||
|
|
||||||
|
/** Sets the attack time in milliseconds of the noise-gate.*/
|
||||||
|
void setAttack (SampleType newAttack);
|
||||||
|
|
||||||
|
/** Sets the release time in milliseconds of the noise-gate.*/
|
||||||
|
void setRelease (SampleType newRelease);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
outputSamples[i] = processSample ((int) channel, inputSamples[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Performs the processing operation on a single sample at a time. */
|
||||||
|
SampleType processSample (int channel, SampleType inputValue);
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
SampleType threshold, thresholdInverse, currentRatio;
|
||||||
|
BallisticsFilter<SampleType> envelopeFilter, RMSFilter;
|
||||||
|
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
SampleType thresholddB = -100, ratio = 10.0, attackTime = 1.0, releaseTime = 100.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
147
modules/juce_dsp/widgets/juce_Phaser.cpp
Normal file
147
modules/juce_dsp/widgets/juce_Phaser.cpp
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
Phaser<SampleType>::Phaser()
|
||||||
|
{
|
||||||
|
auto oscFunction = [] (SampleType x) { return std::sin (x); };
|
||||||
|
osc.initialise (oscFunction);
|
||||||
|
|
||||||
|
for (auto n = 0; n < numStages; ++n)
|
||||||
|
{
|
||||||
|
filters.add (new FirstOrderTPTFilter<SampleType>());
|
||||||
|
filters[n]->setType (FirstOrderTPTFilterType::allpass);
|
||||||
|
}
|
||||||
|
|
||||||
|
dryWet.setMixingRule (DryWetMixingRule::linear);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::setRate (SampleType newRateHz)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newRateHz, static_cast<SampleType> (100.0)));
|
||||||
|
|
||||||
|
rate = newRateHz;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::setDepth (SampleType newDepth)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newDepth, static_cast<SampleType> (1.0)));
|
||||||
|
|
||||||
|
depth = newDepth;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::setCentreFrequency (SampleType newCentreHz)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndBelow (newCentreHz, static_cast<SampleType> (sampleRate * 0.5)));
|
||||||
|
|
||||||
|
centreFrequency = newCentreHz;
|
||||||
|
normCentreFrequency = mapToLog10 (centreFrequency, static_cast<SampleType> (20.0), static_cast<SampleType> (jmin (20000.0, 0.49 * sampleRate)));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::setFeedback (SampleType newFeedback)
|
||||||
|
{
|
||||||
|
jassert (newFeedback >= static_cast<SampleType> (-1.0) && newFeedback <= static_cast<SampleType> (1.0));
|
||||||
|
|
||||||
|
feedback = newFeedback;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::setMix (SampleType newMix)
|
||||||
|
{
|
||||||
|
jassert (isPositiveAndNotGreaterThan (newMix, static_cast<SampleType> (1.0)));
|
||||||
|
|
||||||
|
mix = newMix;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::prepare (const ProcessSpec& spec)
|
||||||
|
{
|
||||||
|
jassert (spec.sampleRate > 0);
|
||||||
|
jassert (spec.numChannels > 0);
|
||||||
|
|
||||||
|
sampleRate = spec.sampleRate;
|
||||||
|
|
||||||
|
for (auto n = 0; n < numStages; ++n)
|
||||||
|
filters[n]->prepare (spec);
|
||||||
|
|
||||||
|
dryWet.prepare (spec);
|
||||||
|
feedbackVolume.resize (spec.numChannels);
|
||||||
|
lastOutput.resize (spec.numChannels);
|
||||||
|
|
||||||
|
auto specDown = spec;
|
||||||
|
specDown.sampleRate /= (double) maxUpdateCounter;
|
||||||
|
specDown.maximumBlockSize = specDown.maximumBlockSize / (uint32) maxUpdateCounter + 1;
|
||||||
|
|
||||||
|
osc.prepare (specDown);
|
||||||
|
bufferFrequency.setSize (1, (int) specDown.maximumBlockSize, false, false, true);
|
||||||
|
|
||||||
|
update();
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::reset()
|
||||||
|
{
|
||||||
|
std::fill (lastOutput.begin(), lastOutput.end(), static_cast<SampleType> (0));
|
||||||
|
|
||||||
|
for (auto n = 0; n < numStages; ++n)
|
||||||
|
filters[n]->reset();
|
||||||
|
|
||||||
|
osc.reset();
|
||||||
|
dryWet.reset();
|
||||||
|
|
||||||
|
oscVolume.reset (sampleRate / (double) maxUpdateCounter, 0.05);
|
||||||
|
|
||||||
|
for (auto& vol : feedbackVolume)
|
||||||
|
vol.reset (sampleRate, 0.05);
|
||||||
|
|
||||||
|
updateCounter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename SampleType>
|
||||||
|
void Phaser<SampleType>::update()
|
||||||
|
{
|
||||||
|
osc.setFrequency (rate);
|
||||||
|
oscVolume.setTargetValue (depth * (SampleType) 0.5);
|
||||||
|
dryWet.setWetMixProportion (mix);
|
||||||
|
|
||||||
|
for (auto& vol : feedbackVolume)
|
||||||
|
vol.setTargetValue (feedback);
|
||||||
|
}
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
template class Phaser<float>;
|
||||||
|
template class Phaser<double>;
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
199
modules/juce_dsp/widgets/juce_Phaser.h
Normal file
199
modules/juce_dsp/widgets/juce_Phaser.h
Normal file
|
|
@ -0,0 +1,199 @@
|
||||||
|
/*
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
This file is part of the JUCE 6 technical preview.
|
||||||
|
Copyright (c) 2020 - Raw Material Software Limited
|
||||||
|
|
||||||
|
You may use this code under the terms of the GPL v3
|
||||||
|
(see www.gnu.org/licenses).
|
||||||
|
|
||||||
|
For this technical preview, this file is not subject to commercial licensing.
|
||||||
|
|
||||||
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
||||||
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
||||||
|
DISCLAIMED.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace juce
|
||||||
|
{
|
||||||
|
namespace dsp
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
A 6 stage phaser that modulates first order all-pass filters to create sweeping
|
||||||
|
notches in the magnitude frequency response.
|
||||||
|
|
||||||
|
This audio effect can be controlled with standard phaser parameters: the speed
|
||||||
|
and depth of the LFO controlling the frequency response, a mix control, a
|
||||||
|
feedback control, and the centre frequency of the modulation.
|
||||||
|
|
||||||
|
@tags{DSP}
|
||||||
|
*/
|
||||||
|
template <typename SampleType>
|
||||||
|
class Phaser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//==============================================================================
|
||||||
|
/** Constructor. */
|
||||||
|
Phaser();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Sets the rate (in Hz) of the LFO modulating the phaser all-pass filters. This
|
||||||
|
rate must be lower than 100 Hz.
|
||||||
|
*/
|
||||||
|
void setRate (SampleType newRateHz);
|
||||||
|
|
||||||
|
/** Sets the volume (between 0 and 1) of the LFO modulating the phaser all-pass
|
||||||
|
filters.
|
||||||
|
*/
|
||||||
|
void setDepth (SampleType newDepth);
|
||||||
|
|
||||||
|
/** Sets the centre frequency (in Hz) of the phaser all-pass filters modulation.
|
||||||
|
*/
|
||||||
|
void setCentreFrequency (SampleType newCentreHz);
|
||||||
|
|
||||||
|
/** Sets the feedback volume (between -1 and 1) of the phaser. Negative can be
|
||||||
|
used to get specific phaser sounds.
|
||||||
|
*/
|
||||||
|
void setFeedback (SampleType newFeedback);
|
||||||
|
|
||||||
|
/** Sets the amount of dry and wet signal in the output of the phaser (between 0
|
||||||
|
for full dry and 1 for full wet).
|
||||||
|
*/
|
||||||
|
void setMix (SampleType newMix);
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Initialises the processor. */
|
||||||
|
void prepare (const ProcessSpec& spec);
|
||||||
|
|
||||||
|
/** Resets the internal state variables of the processor. */
|
||||||
|
void reset();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
/** Processes the input and output samples supplied in the processing context. */
|
||||||
|
template <typename ProcessContext>
|
||||||
|
void process (const ProcessContext& context) noexcept
|
||||||
|
{
|
||||||
|
const auto& inputBlock = context.getInputBlock();
|
||||||
|
auto& outputBlock = context.getOutputBlock();
|
||||||
|
const auto numChannels = outputBlock.getNumChannels();
|
||||||
|
const auto numSamples = outputBlock.getNumSamples();
|
||||||
|
|
||||||
|
jassert (inputBlock.getNumChannels() == numChannels);
|
||||||
|
jassert (inputBlock.getNumChannels() == lastOutput.size());
|
||||||
|
jassert (inputBlock.getNumSamples() == numSamples);
|
||||||
|
|
||||||
|
if (context.isBypassed)
|
||||||
|
{
|
||||||
|
outputBlock.copyFrom (inputBlock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int numSamplesDown = 0;
|
||||||
|
auto counter = updateCounter;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
{
|
||||||
|
if (counter == 0)
|
||||||
|
numSamplesDown++;
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
if (counter == maxUpdateCounter)
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numSamplesDown > 0)
|
||||||
|
{
|
||||||
|
auto freqBlock = AudioBlock<SampleType>(bufferFrequency).getSubBlock (0, (size_t) numSamplesDown);
|
||||||
|
auto contextFreq = ProcessContextReplacing<SampleType> (freqBlock);
|
||||||
|
freqBlock.clear();
|
||||||
|
|
||||||
|
osc.process (contextFreq);
|
||||||
|
freqBlock.multiplyBy (oscVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto* freqSamples = bufferFrequency.getWritePointer (0);
|
||||||
|
|
||||||
|
for (int i = 0; i < numSamplesDown; ++i)
|
||||||
|
{
|
||||||
|
auto lfo = jlimit (static_cast<SampleType> (0.0),
|
||||||
|
static_cast<SampleType> (1.0),
|
||||||
|
freqSamples[i] + normCentreFrequency);
|
||||||
|
|
||||||
|
freqSamples[i] = mapToLog10 (lfo, static_cast<SampleType> (20.0),
|
||||||
|
static_cast<SampleType> (jmin (20000.0, 0.49 * sampleRate)));
|
||||||
|
}
|
||||||
|
|
||||||
|
auto currentFrequency = filters[0]->getCutoffFrequency();
|
||||||
|
dryWet.pushDrySamples (inputBlock);
|
||||||
|
|
||||||
|
for (size_t channel = 0; channel < numChannels; ++channel)
|
||||||
|
{
|
||||||
|
counter = updateCounter;
|
||||||
|
int k = 0;
|
||||||
|
|
||||||
|
auto* inputSamples = inputBlock .getChannelPointer (channel);
|
||||||
|
auto* outputSamples = outputBlock.getChannelPointer (channel);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < numSamples; ++i)
|
||||||
|
{
|
||||||
|
auto input = inputSamples[i];
|
||||||
|
auto output = input - lastOutput[channel];
|
||||||
|
|
||||||
|
if (i == 0 && counter != 0)
|
||||||
|
for (int n = 0; n < numStages; ++n)
|
||||||
|
filters[n]->setCutoffFrequency (currentFrequency);
|
||||||
|
|
||||||
|
if (counter == 0)
|
||||||
|
{
|
||||||
|
for (int n = 0; n < numStages; ++n)
|
||||||
|
filters[n]->setCutoffFrequency (freqSamples[k]);
|
||||||
|
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int n = 0; n < numStages; ++n)
|
||||||
|
output = filters[n]->processSample ((int) channel, output);
|
||||||
|
|
||||||
|
outputSamples[i] = output;
|
||||||
|
lastOutput[channel] = output * feedbackVolume[channel].getNextValue();
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
|
||||||
|
if (counter == maxUpdateCounter)
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dryWet.mixWetSamples (outputBlock);
|
||||||
|
updateCounter = (updateCounter + (int) numSamples) % maxUpdateCounter;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
void update();
|
||||||
|
|
||||||
|
//==============================================================================
|
||||||
|
Oscillator<SampleType> osc;
|
||||||
|
OwnedArray<FirstOrderTPTFilter<SampleType>> filters;
|
||||||
|
SmoothedValue<SampleType, ValueSmoothingTypes::Linear> oscVolume;
|
||||||
|
std::vector<SmoothedValue<SampleType, ValueSmoothingTypes::Linear>> feedbackVolume { 2 };
|
||||||
|
DryWetMixer<SampleType> dryWet;
|
||||||
|
std::vector<SampleType> lastOutput { 2 };
|
||||||
|
AudioBuffer<SampleType> bufferFrequency;
|
||||||
|
SampleType normCentreFrequency = 0.5;
|
||||||
|
double sampleRate = 44100.0;
|
||||||
|
|
||||||
|
int updateCounter = 0;
|
||||||
|
static constexpr int maxUpdateCounter = 4;
|
||||||
|
|
||||||
|
SampleType rate = 1.0, depth = 0.5, feedback = 0.0, mix = 0.5;
|
||||||
|
SampleType centreFrequency = 1300.0;
|
||||||
|
static constexpr int numStages = 6;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dsp
|
||||||
|
} // namespace juce
|
||||||
|
|
@ -53,7 +53,7 @@ public:
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
/** Initialises the reverb. */
|
/** Initialises the reverb. */
|
||||||
void prepare (const juce::dsp::ProcessSpec& spec)
|
void prepare (const ProcessSpec& spec)
|
||||||
{
|
{
|
||||||
reverb.setSampleRate (spec.sampleRate);
|
reverb.setSampleRate (spec.sampleRate);
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue