summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-12-04 13:24:16 +0000
committerTim Redfern <tim@eclectronics.org>2013-12-04 13:24:16 +0000
commit557399c79057db14ceba77d677ae8b032d612f4d (patch)
tree21b7da43d062cb5fbbecdde957b5bbe65233845c
parent741cba373d7e982026de91ee1ceeb18a8f64b367 (diff)
interval parameter for echo trails
-rw-r--r--rotord/src/nodes_channels.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/rotord/src/nodes_channels.h b/rotord/src/nodes_channels.h
index 4fdcd01..8fca6a0 100644
--- a/rotord/src/nodes_channels.h
+++ b/rotord/src/nodes_channels.h
@@ -420,6 +420,7 @@ namespace Rotor {
//calls base class constructor first
create_parameter("number","number","number of echoes","Number echoes",25.0f);
create_parameter("fadeto","number","amount that echoes fade out","Fadout amount",1.0f,0.0f,1.0f);
+ create_parameter("interval","number","number of frames between echoes","",1.0f,0.0f,1.0f);
create_attribute("mode","blend mode for echoes","Blend mode","screen",{"screen","wrap","min","max"});
title="Echo trails";
description="Draw trail frames additively that fade off over time";
@@ -439,17 +440,15 @@ namespace Rotor {
//clear cache and start over
images.clear();
lastframe=-1;
- //calculate frame interval
- //interval=(int)(((duration/number)*frame.framerate)+0.5);
- //total=interval*number;
}
}
+ int interval=(int)parameters["interval"]->value;
int thisframe=((Time_spec)frame).frame();
//iterate cache and throw out any obsolete frames
auto i = std::begin(images);
while (i != std::end(images)) {
// check if the image is in the range we need
- if (thisframe-(*i).first>(int)parameters["number"]->value||thisframe-(*i).first<0) {
+ if ((thisframe-(*i).first>((int)parameters["number"]->value)*interval)||thisframe-(*i).first<0) {
delete (*i).second;
i = images.erase(i);
}
@@ -466,7 +465,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;i++){
+ for (int i=1;i<(int)parameters["number"]->value*interval;i+=interval){
//check echo frame isn't at negative time
int absframe=thisframe-i;
if (absframe>-1){
@@ -521,7 +520,7 @@ namespace Rotor {
}
Echo_trails* clone(map<string,string> &_settings) { return new Echo_trails(_settings);};
protected:
- int interval,total,lastframe; //number of frames between displayed echoes
+ int total,lastframe; //number of frames between displayed echoes
unordered_map<int,Image*> images;
};
class RGB_levels: public Image_node {