mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 15:54:57 +01:00
a-Delay: Add feedback control 0 to 90 percent
This commit is contained in:
parent
0b5f2c5d58
commit
f8207524e9
2 changed files with 23 additions and 4 deletions
|
|
@ -42,6 +42,7 @@ typedef enum {
|
||||||
ADELAY_TIME,
|
ADELAY_TIME,
|
||||||
ADELAY_DIVISOR,
|
ADELAY_DIVISOR,
|
||||||
ADELAY_WETDRY,
|
ADELAY_WETDRY,
|
||||||
|
ADELAY_FEEDBACK,
|
||||||
ADELAY_LPF,
|
ADELAY_LPF,
|
||||||
ADELAY_GAIN,
|
ADELAY_GAIN,
|
||||||
|
|
||||||
|
|
@ -73,6 +74,7 @@ typedef struct {
|
||||||
float* time;
|
float* time;
|
||||||
float* divisor;
|
float* divisor;
|
||||||
float* wetdry;
|
float* wetdry;
|
||||||
|
float* feedback;
|
||||||
float* lpf;
|
float* lpf;
|
||||||
float* gain;
|
float* gain;
|
||||||
|
|
||||||
|
|
@ -81,7 +83,6 @@ typedef struct {
|
||||||
float srate;
|
float srate;
|
||||||
float bpm;
|
float bpm;
|
||||||
float beatunit;
|
float beatunit;
|
||||||
int beatuniti;
|
|
||||||
int bpmvalid;
|
int bpmvalid;
|
||||||
|
|
||||||
uint32_t posz;
|
uint32_t posz;
|
||||||
|
|
@ -91,6 +92,7 @@ typedef struct {
|
||||||
int next;
|
int next;
|
||||||
float fbstate;
|
float fbstate;
|
||||||
float lpfold;
|
float lpfold;
|
||||||
|
float feedbackold;
|
||||||
float divisorold;
|
float divisorold;
|
||||||
float gainold;
|
float gainold;
|
||||||
float invertold;
|
float invertold;
|
||||||
|
|
@ -187,6 +189,9 @@ connect_port(LV2_Handle instance,
|
||||||
case ADELAY_WETDRY:
|
case ADELAY_WETDRY:
|
||||||
adelay->wetdry = (float*)data;
|
adelay->wetdry = (float*)data;
|
||||||
break;
|
break;
|
||||||
|
case ADELAY_FEEDBACK:
|
||||||
|
adelay->feedback = (float*)data;
|
||||||
|
break;
|
||||||
case ADELAY_LPF:
|
case ADELAY_LPF:
|
||||||
adelay->lpf = (float*)data;
|
adelay->lpf = (float*)data;
|
||||||
break;
|
break;
|
||||||
|
|
@ -364,6 +369,9 @@ run(LV2_Handle instance, uint32_t n_samples)
|
||||||
if (*(adelay->time) != adelay->timeold) {
|
if (*(adelay->time) != adelay->timeold) {
|
||||||
recalc = 1;
|
recalc = 1;
|
||||||
}
|
}
|
||||||
|
if (*(adelay->feedback) != adelay->feedbackold) {
|
||||||
|
recalc = 1;
|
||||||
|
}
|
||||||
if (*(adelay->divisor) != adelay->divisorold) {
|
if (*(adelay->divisor) != adelay->divisorold) {
|
||||||
recalc = 1;
|
recalc = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -387,7 +395,7 @@ run(LV2_Handle instance, uint32_t n_samples)
|
||||||
xfade = 0.f;
|
xfade = 0.f;
|
||||||
for (i = 0; i < n_samples; i++) {
|
for (i = 0; i < n_samples; i++) {
|
||||||
in = input[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;
|
adelay->fbstate = 0.f;
|
||||||
int p = adelay->posz - adelay->tap[adelay->active]; // active line
|
int p = adelay->posz - adelay->tap[adelay->active]; // active line
|
||||||
if (p<0) p += MAX_DELAY;
|
if (p<0) p += MAX_DELAY;
|
||||||
|
|
@ -406,6 +414,7 @@ run(LV2_Handle instance, uint32_t n_samples)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
adelay->lpfold = *(adelay->lpf);
|
adelay->lpfold = *(adelay->lpf);
|
||||||
|
adelay->feedbackold = *(adelay->feedback);
|
||||||
adelay->divisorold = *(adelay->divisor);
|
adelay->divisorold = *(adelay->divisor);
|
||||||
adelay->gainold = *(adelay->gain);
|
adelay->gainold = *(adelay->gain);
|
||||||
adelay->invertold = *(adelay->inv);
|
adelay->invertold = *(adelay->inv);
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,16 @@
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 8 ;
|
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:name "LPF" ;
|
||||||
lv2:symbol "lpf" ;
|
lv2:symbol "lpf" ;
|
||||||
lv2:default 6000.000000 ;
|
lv2:default 6000.000000 ;
|
||||||
|
|
@ -120,7 +130,7 @@
|
||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 9 ;
|
lv2:index 10 ;
|
||||||
lv2:name "Output Gain" ;
|
lv2:name "Output Gain" ;
|
||||||
lv2:symbol "gain" ;
|
lv2:symbol "gain" ;
|
||||||
lv2:default 0.000000 ;
|
lv2:default 0.000000 ;
|
||||||
|
|
@ -130,7 +140,7 @@
|
||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:OutputPort, lv2:ControlPort ;
|
a lv2:OutputPort, lv2:ControlPort ;
|
||||||
lv2:index 10 ;
|
lv2:index 11 ;
|
||||||
lv2:name "Delaytime" ;
|
lv2:name "Delaytime" ;
|
||||||
lv2:symbol "delaytime" ;
|
lv2:symbol "delaytime" ;
|
||||||
lv2:default 0.000000 ;
|
lv2:default 0.000000 ;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue