@@ -33,8 +33,8 @@ public enum Param : int
33
33
private float [ ] p = new float [ ( int ) Param . P_N ] ;
34
34
private bool shouldClear = false ;
35
35
36
- private float [ ] cTimeBuffer = new float [ 2 ] { 0 , 0 } ;
37
- private float [ ] cFeedbackBuffer = new float [ 2 ] { 0 , 0 } ;
36
+ private float [ ] cTimeBuffer = new float [ 0 ] ;
37
+ private float [ ] cFeedbackBuffer = new float [ 0 ] ;
38
38
private float cTime ;
39
39
private float cFeedback ;
40
40
@@ -54,10 +54,10 @@ public void SetParam(float value, int param)
54
54
switch ( param )
55
55
{
56
56
case ( int ) Param . P_TIME :
57
- p [ param ] = Utils . map ( Mathf . Pow ( value , 3 ) , 0 , 1 , MIN_TIME * AudioSettings . outputSampleRate , MAX_TIME * AudioSettings . outputSampleRate ) ;
57
+ p [ param ] = value ; //this is finally set in process method
58
58
break ;
59
59
case ( int ) Param . P_FEEDBACK :
60
- p [ param ] = Utils . map ( value , 0 , 1 , MIN_FEEDBACK , MAX_FEEDBACK ) ;
60
+ p [ param ] = value ; //this is finally set in process method
61
61
break ;
62
62
case ( int ) Param . P_WET :
63
63
p [ param ] = Utils . dbToLin ( Utils . map ( value , 0 , 1 , MIN_WET , MAX_WET , 0.8f ) ) ;
@@ -101,11 +101,6 @@ public override void processBuffer(float[] buffer, double dspTime, int channels)
101
101
shouldClear = false ;
102
102
}
103
103
104
- Delay_SetParam ( p [ ( int ) Param . P_TIME ] , ( int ) Param . P_TIME , x ) ;
105
- Delay_SetParam ( p [ ( int ) Param . P_FEEDBACK ] , ( int ) Param . P_FEEDBACK , x ) ;
106
- Delay_SetParam ( p [ ( int ) Param . P_WET ] , ( int ) Param . P_WET , x ) ;
107
- Delay_SetParam ( p [ ( int ) Param . P_DRY ] , ( int ) Param . P_DRY , x ) ;
108
-
109
104
if ( input != null )
110
105
{
111
106
input . processBuffer ( buffer , dspTime , channels ) ;
@@ -125,6 +120,11 @@ public override void processBuffer(float[] buffer, double dspTime, int channels)
125
120
cFeedback = cFeedbackBuffer [ 0 ] ;
126
121
}
127
122
123
+ Delay_SetParam ( Utils . map ( Mathf . Pow ( Mathf . Clamp01 ( p [ ( int ) Param . P_TIME ] + cTime ) , 3 ) , 0 , 1 , MIN_TIME * AudioSettings . outputSampleRate , MAX_TIME * AudioSettings . outputSampleRate ) , ( int ) Param . P_TIME , x ) ;
124
+ Delay_SetParam ( Utils . map ( Mathf . Clamp01 ( p [ ( int ) Param . P_FEEDBACK ] + cFeedback ) , 0 , 1 , MIN_FEEDBACK , MAX_FEEDBACK ) , ( int ) Param . P_FEEDBACK , x ) ;
125
+ Delay_SetParam ( p [ ( int ) Param . P_WET ] , ( int ) Param . P_WET , x ) ;
126
+ Delay_SetParam ( p [ ( int ) Param . P_DRY ] , ( int ) Param . P_DRY , x ) ;
127
+
128
128
//We need to process the delay even if there is currently no input,
129
129
//bc there could be unconsumed samples from a previous input left in the delay line.
130
130
//To optimize, we could store the timestamp when the last input connection was removed.
0 commit comments