a-Delay: Add feedback control 0 to 90 percent
This commit is contained in:
parent
0b5f2c5d58
commit
f8207524e9
|
@ -42,6 +42,7 @@ typedef enum {
|
|||
ADELAY_TIME,
|
||||
ADELAY_DIVISOR,
|
||||
ADELAY_WETDRY,
|
||||
ADELAY_FEEDBACK,
|
||||
ADELAY_LPF,
|
||||
ADELAY_GAIN,
|
||||
|
||||
|
@ -73,6 +74,7 @@ typedef struct {
|
|||
float* time;
|
||||
float* divisor;
|
||||
float* wetdry;
|
||||
float* feedback;
|
||||
float* lpf;
|
||||
float* gain;
|
||||
|
||||
|
@ -81,7 +83,6 @@ typedef struct {
|
|||
float srate;
|
||||
float bpm;
|
||||
float beatunit;
|
||||
int beatuniti;
|
||||
int bpmvalid;
|
||||
|
||||
uint32_t posz;
|
||||
|
@ -91,6 +92,7 @@ typedef struct {
|
|||
int next;
|
||||
float fbstate;
|
||||
float lpfold;
|
||||
float feedbackold;
|
||||
float divisorold;
|
||||
float gainold;
|
||||
float invertold;
|
||||
|
@ -187,6 +189,9 @@ connect_port(LV2_Handle instance,
|
|||
case ADELAY_WETDRY:
|
||||
adelay->wetdry = (float*)data;
|
||||
break;
|
||||
case ADELAY_FEEDBACK:
|
||||
adelay->feedback = (float*)data;
|
||||
break;
|
||||
case ADELAY_LPF:
|
||||
adelay->lpf = (float*)data;
|
||||
break;
|
||||
|
@ -364,6 +369,9 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||
if (*(adelay->time) != adelay->timeold) {
|
||||
recalc = 1;
|
||||
}
|
||||
if (*(adelay->feedback) != adelay->feedbackold) {
|
||||
recalc = 1;
|
||||
}
|
||||
if (*(adelay->divisor) != adelay->divisorold) {
|
||||
recalc = 1;
|
||||
}
|
||||
|
@ -387,7 +395,7 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||
xfade = 0.f;
|
||||
for (i = 0; i < n_samples; i++) {
|
||||
in = input[i];
|
||||
adelay->z[adelay->posz] = in; // + feedb / 100. * fbstate;
|
||||
adelay->z[adelay->posz] = in + *adelay->feedback / 100. * adelay->fbstate;
|
||||
adelay->fbstate = 0.f;
|
||||
int p = adelay->posz - adelay->tap[adelay->active]; // active line
|
||||
if (p<0) p += MAX_DELAY;
|
||||
|
@ -406,6 +414,7 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||
}
|
||||
}
|
||||
adelay->lpfold = *(adelay->lpf);
|
||||
adelay->feedbackold = *(adelay->feedback);
|
||||
adelay->divisorold = *(adelay->divisor);
|
||||
adelay->gainold = *(adelay->gain);
|
||||
adelay->invertold = *(adelay->inv);
|
||||
|
|
|
@ -110,6 +110,16 @@
|
|||
[
|
||||
a lv2:InputPort, lv2:ControlPort ;
|
||||
lv2:index 8 ;
|
||||
lv2:name "Feedback" ;
|
||||
lv2:symbol "feedback" ;
|
||||
lv2:default 20.000000 ;
|
||||
lv2:minimum 0.000000 ;
|
||||
lv2:maximum 90.000000 ;
|
||||
unit:unit unit:pc ;
|
||||
] ,
|
||||
[
|
||||
a lv2:InputPort, lv2:ControlPort ;
|
||||
lv2:index 9 ;
|
||||
lv2:name "LPF" ;
|
||||
lv2:symbol "lpf" ;
|
||||
lv2:default 6000.000000 ;
|
||||
|
@ -120,7 +130,7 @@
|
|||
] ,
|
||||
[
|
||||
a lv2:InputPort, lv2:ControlPort ;
|
||||
lv2:index 9 ;
|
||||
lv2:index 10 ;
|
||||
lv2:name "Output Gain" ;
|
||||
lv2:symbol "gain" ;
|
||||
lv2:default 0.000000 ;
|
||||
|
@ -130,7 +140,7 @@
|
|||
] ,
|
||||
[
|
||||
a lv2:OutputPort, lv2:ControlPort ;
|
||||
lv2:index 10 ;
|
||||
lv2:index 11 ;
|
||||
lv2:name "Delaytime" ;
|
||||
lv2:symbol "delaytime" ;
|
||||
lv2:default 0.000000 ;
|
||||
|
|
Loading…
Reference in New Issue
Block a user