88enum VariableDelayParameter : AUParameterAddress {
99 VariableDelayParameterTime,
1010 VariableDelayParameterFeedback,
11+ VariableDelayParameterDryWetMix
1112};
1213
1314class VariableDelayDSP : public SoundpipeDSPBase {
1718 float maximumTime = 10.0 ;
1819 ParameterRamper timeRamp;
1920 ParameterRamper feedbackRamp;
21+ ParameterRamper dryWetMixRamp;
2022
2123public:
2224 VariableDelayDSP () : SoundpipeDSPBase(1 , false ) {
2325 parameters[VariableDelayParameterTime] = &timeRamp;
2426 parameters[VariableDelayParameterFeedback] = &feedbackRamp;
27+ parameters[VariableDelayParameterDryWetMix] = &dryWetMixRamp;
2528 }
2629
2730 void setMaximumTime (float maxTime) {
@@ -68,6 +71,10 @@ void process(FrameRange range) override {
6871
6972 sp_vdelay_compute (sp, vdelay0, &leftIn, &leftOut);
7073 sp_vdelay_compute (sp, vdelay1, &rightIn, &rightOut);
74+
75+ float dryWetMix = dryWetMixRamp.getAndStep ();
76+ outputSample (0 , i) = dryWetMix * leftOut + (1 .0f - dryWetMix) * leftIn;
77+ outputSample (1 , i) = dryWetMix * rightOut + (1 .0f - dryWetMix) * rightIn;
7178 }
7279 }
7380};
@@ -81,3 +88,4 @@ void akVariableDelaySetMaximumTime(DSPRef dspRef, float maximumTime) {
8188AK_REGISTER_DSP (VariableDelayDSP, " vdla" )
8289AK_REGISTER_PARAMETER(VariableDelayParameterTime)
8390AK_REGISTER_PARAMETER(VariableDelayParameterFeedback)
91+ AK_REGISTER_PARAMETER(VariableDelayParameterDryWetMix)
0 commit comments