summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-04 13:42:08 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-04 13:42:08 +0000
commit8cfc0a3581cad5da07da69b70c71e67256739166 (patch)
treeaf2dfefe93ef3db6cd6abb5260327602488f7095
parent557399c79057db14ceba77d677ae8b032d612f4d (diff)
fadout parameter for echo trails
-rw-r--r--rotord/src/nodes_channels.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/rotord/src/nodes_channels.h b/rotord/src/nodes_channels.h
index 8fca6a0..20fc86c 100644
--- a/rotord/src/nodes_channels.h
+++ b/rotord/src/nodes_channels.h
@@ -444,6 +444,7 @@ namespace Rotor {
}
int interval=(int)parameters["interval"]->value;
int thisframe=((Time_spec)frame).frame();
+ int duration=(int)parameters["number"]->value*interval;
//iterate cache and throw out any obsolete frames
auto i = std::begin(images);
while (i != std::end(images)) {
@@ -465,7 +466,7 @@ namespace Rotor {
image=*(in);
images[thisframe]=new Image(frame.w,frame.h);
apply_LUT(image,*(images[thisframe]));
- for (int i=1;i<(int)parameters["number"]->value*interval;i+=interval){
+ for (int i=1;i<duration;i+=interval){
//check echo frame isn't at negative time
int absframe=thisframe-i;
if (absframe>-1){
@@ -478,7 +479,8 @@ namespace Rotor {
else images[absframe]->clear();
}
if (fless(1.0f,parameters["fadeto"]->value)){
- float amount=(((parameters["number"]->value-i)/parameters["number"]->value)*(1.0f-parameters["fadeto"]->value))+(1.0f-parameters["fadeto"]->value);
+ float fadetime=((float)i)/((float)duration); //0 to 1
+ float amount=1.0f-(fadetime*(1.0f-parameters["fadeto"]->value));
Image *temp=*images[absframe]*amount;
if (attributes["mode"]->value=="screen") {
image+=*temp;