Add Dotted option to a-delay, because dotted intervals cannot be expressed via the integer Divisor param
This commit is contained in:
parent
6af2f4e127
commit
0c7895298d
@ -53,6 +53,7 @@ typedef enum {
|
|||||||
ADELAY_SYNC,
|
ADELAY_SYNC,
|
||||||
ADELAY_TIME,
|
ADELAY_TIME,
|
||||||
ADELAY_DIVISOR,
|
ADELAY_DIVISOR,
|
||||||
|
ADELAY_DOTTED,
|
||||||
ADELAY_WETDRY,
|
ADELAY_WETDRY,
|
||||||
ADELAY_FEEDBACK,
|
ADELAY_FEEDBACK,
|
||||||
ADELAY_LPF,
|
ADELAY_LPF,
|
||||||
@ -82,6 +83,7 @@ typedef struct {
|
|||||||
const LV2_Atom_Sequence* atombpm;
|
const LV2_Atom_Sequence* atombpm;
|
||||||
|
|
||||||
float* inv;
|
float* inv;
|
||||||
|
float* dotted;
|
||||||
float* sync;
|
float* sync;
|
||||||
float* time;
|
float* time;
|
||||||
float* divisor;
|
float* divisor;
|
||||||
@ -108,6 +110,7 @@ typedef struct {
|
|||||||
float feedbackold;
|
float feedbackold;
|
||||||
float divisorold;
|
float divisorold;
|
||||||
float gainold;
|
float gainold;
|
||||||
|
float dottedold;
|
||||||
float invertold;
|
float invertold;
|
||||||
float timeold;
|
float timeold;
|
||||||
float delaytimeold;
|
float delaytimeold;
|
||||||
@ -201,6 +204,9 @@ connect_port(LV2_Handle instance,
|
|||||||
case ADELAY_DIVISOR:
|
case ADELAY_DIVISOR:
|
||||||
adelay->divisor = (float*)data;
|
adelay->divisor = (float*)data;
|
||||||
break;
|
break;
|
||||||
|
case ADELAY_DOTTED:
|
||||||
|
adelay->dotted = (float*)data;
|
||||||
|
break;
|
||||||
case ADELAY_WETDRY:
|
case ADELAY_WETDRY:
|
||||||
adelay->wetdry = (float*)data;
|
adelay->wetdry = (float*)data;
|
||||||
break;
|
break;
|
||||||
@ -283,6 +289,7 @@ activate(LV2_Handle instance)
|
|||||||
adelay->divisorold = 0.f;
|
adelay->divisorold = 0.f;
|
||||||
adelay->gainold = 0.f;
|
adelay->gainold = 0.f;
|
||||||
adelay->invertold = 0.f;
|
adelay->invertold = 0.f;
|
||||||
|
adelay->dottedold = 0.f;
|
||||||
adelay->timeold = 0.f;
|
adelay->timeold = 0.f;
|
||||||
adelay->delaytimeold = 0.f;
|
adelay->delaytimeold = 0.f;
|
||||||
adelay->syncold = 0.f;
|
adelay->syncold = 0.f;
|
||||||
@ -417,6 +424,9 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||||||
if (*(adelay->inv) != adelay->invertold) {
|
if (*(adelay->inv) != adelay->invertold) {
|
||||||
recalc = true;
|
recalc = true;
|
||||||
}
|
}
|
||||||
|
if (*(adelay->dotted) != adelay->dottedold) {
|
||||||
|
recalc = true;
|
||||||
|
}
|
||||||
if (*(adelay->sync) != adelay->syncold) {
|
if (*(adelay->sync) != adelay->syncold) {
|
||||||
recalc = true;
|
recalc = true;
|
||||||
}
|
}
|
||||||
@ -441,6 +451,9 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||||||
lpfRbj(adelay, adelay->lpfold, srate);
|
lpfRbj(adelay, adelay->lpfold, srate);
|
||||||
if (*(adelay->sync) > 0.5f && adelay->bpmvalid) {
|
if (*(adelay->sync) > 0.5f && adelay->bpmvalid) {
|
||||||
*(adelay->delaytime) = adelay->beatunit * 1000.f * 60.f / (adelay->bpm * *(adelay->divisor));
|
*(adelay->delaytime) = adelay->beatunit * 1000.f * 60.f / (adelay->bpm * *(adelay->divisor));
|
||||||
|
if (*(adelay->dotted) > 0.5f) {
|
||||||
|
*(adelay->delaytime) *= 1.5;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
*(adelay->delaytime) = *(adelay->time);
|
*(adelay->delaytime) = *(adelay->time);
|
||||||
}
|
}
|
||||||
@ -484,6 +497,7 @@ run(LV2_Handle instance, uint32_t n_samples)
|
|||||||
adelay->feedbackold = *(adelay->feedback);
|
adelay->feedbackold = *(adelay->feedback);
|
||||||
adelay->divisorold = *(adelay->divisor);
|
adelay->divisorold = *(adelay->divisor);
|
||||||
adelay->invertold = *(adelay->inv);
|
adelay->invertold = *(adelay->inv);
|
||||||
|
adelay->dottedold = *(adelay->dotted);
|
||||||
adelay->timeold = *(adelay->time);
|
adelay->timeold = *(adelay->time);
|
||||||
adelay->syncold = *(adelay->sync);
|
adelay->syncold = *(adelay->sync);
|
||||||
adelay->wetdryold = wetdry;
|
adelay->wetdryold = wetdry;
|
||||||
|
@ -101,6 +101,16 @@
|
|||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 7 ;
|
lv2:index 7 ;
|
||||||
|
lv2:name "Dotted" ;
|
||||||
|
lv2:symbol "dot" ;
|
||||||
|
lv2:default 0 ;
|
||||||
|
lv2:minimum 0 ;
|
||||||
|
lv2:maximum 1 ;
|
||||||
|
lv2:portProperty lv2:integer, lv2:toggled ;
|
||||||
|
] ,
|
||||||
|
[
|
||||||
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
|
lv2:index 8 ;
|
||||||
lv2:name "Dry/Wet" ;
|
lv2:name "Dry/Wet" ;
|
||||||
lv2:symbol "drywet" ;
|
lv2:symbol "drywet" ;
|
||||||
lv2:default 50.000000 ;
|
lv2:default 50.000000 ;
|
||||||
@ -110,7 +120,7 @@
|
|||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 8 ;
|
lv2:index 9 ;
|
||||||
lv2:name "Feedback" ;
|
lv2:name "Feedback" ;
|
||||||
lv2:symbol "feedback" ;
|
lv2:symbol "feedback" ;
|
||||||
lv2:default 20.000000 ;
|
lv2:default 20.000000 ;
|
||||||
@ -120,7 +130,7 @@
|
|||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 9 ;
|
lv2:index 10 ;
|
||||||
lv2:name "LPF" ;
|
lv2:name "LPF" ;
|
||||||
lv2:symbol "lpf" ;
|
lv2:symbol "lpf" ;
|
||||||
lv2:default 6000.000000 ;
|
lv2:default 6000.000000 ;
|
||||||
@ -131,7 +141,7 @@
|
|||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 10 ;
|
lv2:index 11 ;
|
||||||
lv2:name "Output Gain" ;
|
lv2:name "Output Gain" ;
|
||||||
lv2:symbol "gain" ;
|
lv2:symbol "gain" ;
|
||||||
lv2:default 0.000000 ;
|
lv2:default 0.000000 ;
|
||||||
@ -141,7 +151,7 @@
|
|||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:OutputPort, lv2:ControlPort ;
|
a lv2:OutputPort, lv2:ControlPort ;
|
||||||
lv2:index 11 ;
|
lv2:index 12 ;
|
||||||
lv2:name "Delaytime" ;
|
lv2:name "Delaytime" ;
|
||||||
lv2:symbol "delaytime" ;
|
lv2:symbol "delaytime" ;
|
||||||
lv2:default 0.000000 ;
|
lv2:default 0.000000 ;
|
||||||
@ -151,7 +161,7 @@
|
|||||||
] ,
|
] ,
|
||||||
[
|
[
|
||||||
a lv2:InputPort, lv2:ControlPort ;
|
a lv2:InputPort, lv2:ControlPort ;
|
||||||
lv2:index 12 ;
|
lv2:index 13 ;
|
||||||
lv2:name "Enable" ;
|
lv2:name "Enable" ;
|
||||||
lv2:symbol "enable" ;
|
lv2:symbol "enable" ;
|
||||||
lv2:default 1 ;
|
lv2:default 1 ;
|
||||||
@ -170,4 +180,4 @@ A simple delay plugin
|
|||||||
doap:maintainer <http://ardour.org/credits.html> ;
|
doap:maintainer <http://ardour.org/credits.html> ;
|
||||||
|
|
||||||
lv2:microVersion 0 ;
|
lv2:microVersion 0 ;
|
||||||
lv2:minorVersion 2 .
|
lv2:minorVersion 3 .
|
||||||
|
Loading…
Reference in New Issue
Block a user