| @@ -312,8 +312,8 @@ struct DSPDemo : public AudioSource, | |||||
| inputSource->getNextAudioBlock (bufferToFill); | inputSource->getNextAudioBlock (bufferToFill); | ||||
| dsp::AudioBlock<float> block (*bufferToFill.buffer, | |||||
| (size_t) bufferToFill.startSample); | |||||
| AudioBlock<float> block (*bufferToFill.buffer, | |||||
| (size_t) bufferToFill.startSample); | |||||
| ScopedLock audioLock (audioCallbackLock); | ScopedLock audioLock (audioCallbackLock); | ||||
| this->process (ProcessContextReplacing<float> (block)); | this->process (ProcessContextReplacing<float> (block)); | ||||
| @@ -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()); | |||||
| auto resonance = static_cast<float> (qParam.getCurrentValue()); | |||||
| auto type = static_cast<StateVariableFilter::Parameters<float>::Type> (typeParam.getCurrentSelectedID() - 1); | |||||
| filter.state->type = type; | |||||
| filter.state->setCutOffFrequency (sampleRate, cutoff, resonance); | |||||
| filter.setCutoffFrequency (static_cast<float> (cutoffParam.getCurrentValue())); | |||||
| filter.setResonance (static_cast<float> (qParam.getCurrentValue())); | |||||
| switch (typeParam.getCurrentSelectedID() - 1) | |||||
| { | |||||
| 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>, | |||||
| StateVariableFilter::Parameters<float>> filter; | |||||
| StateVariableTPTFilter<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_LadderFilter.h" | |||||
| "../../../../../modules/juce_dsp/processors/juce_Oscillator.h" | |||||
| "../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp" | |||||
| "../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.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_LadderFilter.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_LinkwitzRileyFilter.cpp" 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_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) | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4794,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4794,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4794,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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> | ||||
| @@ -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_LadderFilter.h" | |||||
| "../../../../../modules/juce_dsp/processors/juce_Oscillator.h" | |||||
| "../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.cpp" | |||||
| "../../../../../modules/juce_dsp/processors/juce_LinkwitzRileyFilter.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_LadderFilter.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_LinkwitzRileyFilter.cpp" 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_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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4215,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4215,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4215,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4440,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_Oscillator.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_LinkwitzRileyFilter.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,13 +4440,13 @@ | |||||
| <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> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Oscillator.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_Oversampling.h"> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_Panner.h"> | |||||
| <Filter>JUCE Modules\juce_dsp\processors</Filter> | <Filter>JUCE Modules\juce_dsp\processors</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | <ClInclude Include="..\..\..\..\modules\juce_dsp\processors\juce_ProcessContext.h"> | ||||
| @@ -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_CatmullRomInterpolator.h" | |||||
| #include "utilities/juce_GenericInterpolator.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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| { | |||||
| static forcedinline float valueAtOffset (const float* inputs, float offset) noexcept | |||||
| { | |||||
| return calcCoefficient<0> (inputs[4], offset) | |||||
| + calcCoefficient<1> (inputs[3], offset) | |||||
| + calcCoefficient<2> (inputs[2], offset) | |||||
| + calcCoefficient<3> (inputs[1], offset) | |||||
| + 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 | |||||
| { | |||||
| return interpolate<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap); | |||||
| template <int k> | |||||
| static 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; | |||||
| } | } | ||||
| int LagrangeInterpolator::process (double actualRatio, const float* in, float* out, int numOut) noexcept | |||||
| float Interpolators::LagrangeTraits::valueAtOffset (const float* inputs, float offset, int index) noexcept | |||||
| { | { | ||||
| return interpolate<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut); | |||||
| } | |||||
| float result = 0.0f; | |||||
| int LagrangeInterpolator::processAdding (double actualRatio, const float* in, float* out, int numOut, int available, int wrap, float gain) noexcept | |||||
| { | |||||
| return interpolateAdding<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, available, wrap, gain); | |||||
| } | |||||
| result += calcCoefficient<0> (inputs[index], offset); if (++index == 5) index = 0; | |||||
| result += calcCoefficient<1> (inputs[index], offset); if (++index == 5) index = 0; | |||||
| 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, float gain) noexcept | |||||
| { | |||||
| return interpolateAdding<LagrangeAlgorithm> (lastInputSamples, subSamplePos, actualRatio, in, out, numOut, gain); | |||||
| return result; | |||||
| } | } | ||||
| } // 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 | |||||
| @@ -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" | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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) | |||||
| : numChannels (newNumChannels) | |||||
| FilterType newType, bool isMaximumQuality, | |||||
| 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 | |||||
| using a multi-stage approach, either polyphase allpass IIR filters or FIR | |||||
| filters for the filtering, and reports successfully the latency added by the | |||||
| filter stages. | |||||
| This class can be configured to do a factor of 2, 4, 8 or 16 times | |||||
| oversampling, using multiple stages, with polyphase allpass IIR filters or FIR | |||||
| filters, and latency compensation. | |||||
| 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 | |||||
| by upsampling N times the input signal, processing the upsampled signal | |||||
| with the increased internal sample rate, and downsampling the result to get | |||||
| back the original processing sample rate. | |||||
| Choose between FIR or IIR filtering depending on your needs in term of | |||||
| 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 | |||||
| non-linear process to prevent it from creating aliasing. Oversampling works | |||||
| by upsampling the input signal N times, processing the upsampled signal | |||||
| with the increased internal sample rate, then downsampling the result to get | |||||
| back to the original sample rate. | |||||
| 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 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 | ||||
| }; | }; | ||||
| //============================================================================== | |||||
| /** | |||||
| 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 | |||||
| @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. | |||||
| /** 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 | |||||
| Note: This creates a "dummy" oversampling stage, which needs to be removed | |||||
| 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 | |||||
| in your main processor to compensate the additional latency involved with | |||||
| the oversampling, for example with a dry / wet functionality, and to report | |||||
| the latency to the DAW. | |||||
| //=============================================================================== | |||||
| /* Sets if this processor should add some fractional delay at the end of the signal | |||||
| path to ensure that the overall latency of the oversampling is an integer. | |||||
| */ | |||||
| void setUsingIntegerLatency (bool shouldUseIntegerLatency) noexcept; | |||||
| /** Returns the latency in samples of the overall processing. You can use this | |||||
| 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: The latency might not be integer, so you might need to round its value | |||||
| or to compensate it properly in your processing code. | |||||
| 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: | ||||
| //============================================================================== | |||||
| //=============================================================================== | |||||
| void updateDelayLine(); | |||||
| SampleType getUncompensatedLatency() const noexcept; | |||||
| //=============================================================================== | |||||
| OwnedArray<OversamplingStage> stages; | OwnedArray<OversamplingStage> stages; | ||||
| bool isReady = false; | |||||
| 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) | ||||
| }; | }; | ||||
| @@ -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 | |||||
| @@ -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. */ | |||||
| Filter() : parameters (new Parameters<NumericType>) { reset(); } | |||||
| /** Creates a filter with default parameters. | |||||
| 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. | |||||
| 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 (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 | |||||
| { | |||||
| lowPass, | |||||
| bandPass, | |||||
| highPass | |||||
| }; | |||||
| using Type = StateVariableFilterType; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** The type of the IIR filter */ | /** The type of the IIR filter */ | ||||
| @@ -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 | |||||
| @@ -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(); | ||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| { | |||||
| LPF12, // low-pass 12 dB/octave | |||||
| HPF12, // high-pass 12 dB/octave | |||||
| LPF24, // low-pass 24 dB/octave | |||||
| HPF24 // high-pass 24 dB/octave | |||||
| }; | |||||
| //============================================================================== | |||||
| using Mode = LadderFilterMode; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** 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::array<Type, numStates> A; | |||||
| std::vector<std::array<SampleType, numStates>> state; | |||||
| std::array<SampleType, numStates> A; | |||||
| SmoothedValue<Type> cutoffTransformSmoother, scaledResonanceSmoother; | |||||
| Type cutoffTransformValue, scaledResonanceValue; | |||||
| SmoothedValue<SampleType> cutoffTransformSmoother, scaledResonanceSmoother; | |||||
| 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) }; | |||||
| Type resonance; | |||||
| SampleType cutoffFreqHz { SampleType (200) }; | |||||
| 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 | ||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||
| @@ -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); | ||||
| } | } | ||||