diff --git a/libs/plugins/a-delay.lv2/a-delay.c b/libs/plugins/a-delay.lv2/a-delay.c index 3f125d6f5b..f9ddb2a23d 100644 --- a/libs/plugins/a-delay.lv2/a-delay.c +++ b/libs/plugins/a-delay.lv2/a-delay.c @@ -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); diff --git a/libs/plugins/a-delay.lv2/a-delay.ttl.in b/libs/plugins/a-delay.lv2/a-delay.ttl.in index 627f3e4ad9..b321ec5d60 100644 --- a/libs/plugins/a-delay.lv2/a-delay.ttl.in +++ b/libs/plugins/a-delay.lv2/a-delay.ttl.in @@ -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 ;