summaryrefslogtreecommitdiff
path: root/rotord/src/nodes_maths.h
diff options
context:
space:
mode:
authorComment <tim@gray.(none)>2013-12-08 10:55:03 +0000
committerComment <tim@gray.(none)>2013-12-08 10:55:03 +0000
commit1d05d2380bb4f1fd265aef55744f432af38b08aa (patch)
tree89c1c15497149951d4b99938ad932abde42eae14 /rotord/src/nodes_maths.h
parente04516069c71a5a1e32e6a5fbf0eb5b86dcfc5a2 (diff)
switched signals to double and random to uint16
Diffstat (limited to 'rotord/src/nodes_maths.h')
-rw-r--r--rotord/src/nodes_maths.h72
1 files changed, 36 insertions, 36 deletions
diff --git a/rotord/src/nodes_maths.h b/rotord/src/nodes_maths.h
index 2bf8b48..0f92f0a 100644
--- a/rotord/src/nodes_maths.h
+++ b/rotord/src/nodes_maths.h
@@ -20,7 +20,7 @@ namespace Rotor {
public:
Comparison(){
create_signal_input("signal","Signal");
- create_parameter("value","number","Value or signal for operation","Value",0.0f);
+ create_parameter("value","number","Value or signal for operation","Value",0.0);
create_attribute("operator","Operator for comparison","operator","==",{"==","!=",">","<",">=","<="});
title="Comparison";
description="Compares the signal with a value or signal according to the operator";
@@ -30,31 +30,31 @@ namespace Rotor {
base_settings(settings);
}
Comparison* clone(map<string,string> &_settings) { return new Comparison(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
if (inputs[0]->connection) {
switch (attributes["operator"]->intVal) {
case COMPARISON_Equal:
- return fequal(parameters["value"]->value,inputs[0]->get(time))?1.0f:0.0f;
+ return fequal(parameters["value"]->value,inputs[0]->get(time))?1.0:0.0;
break;
case COMPARISON_Not_equal:
- return fequal(parameters["value"]->value,inputs[0]->get(time))?0.0f:1.0f;
+ return fequal(parameters["value"]->value,inputs[0]->get(time))?0.0:1.0;
break;
case COMPARISON_Greater:
- return fgreater(parameters["value"]->value,inputs[0]->get(time))?1.0f:0.0f;
+ return fgreater(parameters["value"]->value,inputs[0]->get(time))?1.0:0.0;
break;
case COMPARISON_Less:
- return fless(parameters["value"]->value,inputs[0]->get(time))?1.0f:0.0f;
+ return fless(parameters["value"]->value,inputs[0]->get(time))?1.0:0.0;
break;
case COMPARISON_Greater_or_equal:
- return fgreater_or_equal(parameters["value"]->value,inputs[0]->get(time))?1.0f:0.0f;
+ return fgreater_or_equal(parameters["value"]->value,inputs[0]->get(time))?1.0:0.0;
break;
case COMPARISON_Less_or_equal:
- return fless_or_equal(parameters["value"]->value,inputs[0]->get(time))?1.0f:0.0f;
+ return fless_or_equal(parameters["value"]->value,inputs[0]->get(time))?1.0:0.0;
break;
}
}
- return 0.0f;
+ return 0.0;
}
};
#define ARITHMETIC_plus 1
@@ -74,27 +74,27 @@ namespace Rotor {
public:
Arithmetic(){
create_signal_input("signal","Signal");
- create_parameter("value","number","Value or signal for operation","Value",1.0f);
+ create_parameter("value","number","Value or signal for operation","Value",1.0);
create_attribute("operator","operator for image","Operator","+",{"+","-","*","/","%","^","sin","cos","ease","jolt","floor","2pow","reciprocal"});
title="Arithmetic";
description="Performs arithmetic on a signal with a signal or value";
- NODEID="f35e5f82-2d0a-11e3-83d8-0fed336db813";
+ NODEID="f35e5f82-2d0a-11e3-83d8.0ed336db813";
};
Arithmetic(map<string,string> &settings):Arithmetic() {
base_settings(settings);
};
Arithmetic* clone(map<string,string> &_settings) { return new Arithmetic(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
//if (attributes["operator"]->intVal==ARITHMETIC_divide||attributes["operator"]->intVal==ARITHMETIC_modulo){
- // if (value==0.0f) {
+ // if (value==0.0) {
// Poco::Logger& logger = Poco::Logger::get("Rotor");
// logger.error("Arithmetic node: caught division by zero, frame "+time.frame());
- // return 0.0f;
+ // return 0.0;
// }
//}
if (inputs.size()) { //there should there be a way to specify number of inputs in the code rather than in xml
if (inputs[0]->connection) {
- float in= inputs[0]->get(time);
+ double in= inputs[0]->get(time);
int inint; //this old chestnut
switch (attributes["operator"]->intVal) {
case ARITHMETIC_plus:
@@ -124,10 +124,10 @@ namespace Rotor {
return cos(in)*parameters["value"]->value;
break;
case ARITHMETIC_ease:
- return ((1.0-parameters["value"]->value)*in)+(parameters["value"]->value*(0.5f+((cos((fmod(in,1.0f)+1.0f)*M_PI))*0.5f)));
+ return ((1.0-parameters["value"]->value)*in)+(parameters["value"]->value*(0.5f+((cos((fmod(in,1.0)+1.0)*M_PI))*0.5f)));
break;
case ARITHMETIC_jolt:
- return ((1.0-parameters["value"]->value)*in)+(parameters["value"]->value*(0.5f+((sin((fmod(in,1.0f)+1.0f)*M_PI))*0.5f)));
+ return ((1.0-parameters["value"]->value)*in)+(parameters["value"]->value*(0.5f+((sin((fmod(in,1.0)+1.0)*M_PI))*0.5f)));
break;
case ARITHMETIC_floor:
return floor(in);
@@ -141,10 +141,10 @@ namespace Rotor {
}
}
}
- return 0.0f;
+ return 0.0;
}
int op;
- float value;
+ double value;
};
class Is_new_integer: public Signal_node {
public:
@@ -158,11 +158,11 @@ namespace Rotor {
base_settings(settings);
};
Is_new_integer* clone(map<string,string> &_settings) { return new Is_new_integer(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
if (((int)inputs[0]->get(time))>((int)inputs[0]->get(time.lastframe()))) {
- return 1.0f;
+ return 1.0;
}
- return 0.0f;
+ return 0.0;
}
};
class On_off: public Signal_node {
@@ -177,12 +177,12 @@ namespace Rotor {
base_settings(settings);
};
On_off* clone(map<string,string> &_settings) { return new On_off(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
if (inputs[0]->connection) {
- float s1=(((Signal_node*)(inputs[0]->connection))->get_output(time));
- if ((int)s1%2) return 1.0f;
+ double s1=(((Signal_node*)(inputs[0]->connection))->get_output(time));
+ if ((int)s1%2) return 1.0;
}
- return 0.0f;
+ return 0.0;
}
};
//pseudo random hash function
@@ -230,7 +230,7 @@ namespace Rotor {
title="Random";
description="Randomises integer part of signal (seedable)";
create_signal_input("signal","Signal");
- create_parameter("seed","number","Seed value","Seed",1.0f);
+ create_parameter("seed","number","Seed value","Seed",1.0);
NODEID="1de86932-2d0b-11e3-96d3-77aa4558e6cd";
std::uniform_int_distribution<> d(-9999, 9999);
};
@@ -238,21 +238,21 @@ namespace Rotor {
base_settings(settings);
};
Random* clone(map<string,string> &_settings) { return new Random(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
- float o;
+ double o;
if (inputs[0]->connection){
o=inputs[0]->get(time);
}
else o=time.time;
uint32_t m=(int)o;
PRNG.seed(m^(int)parameters["seed"]->value);
- return ((float)(PRNG()&0xf))+(o-m);
+ return ((double)(PRNG()&0xffff))+(o-m);
//uint32_t seed=Seed+parameters["seed"]->value;
//hash the integer part and add the fractional part back on
//
- //return ((float)(fnv1a(m,seed)))+(o-m); //%((uint32_t)time.duration))
+ //return ((double)(fnv1a(m,seed)))+(o-m); //%((uint32_t)time.duration))
}
MTRand_int32 PRNG;
};
@@ -263,17 +263,17 @@ namespace Rotor {
title="Noise";
description="Fractal noise (seedable)";
create_signal_input("signal","Signal");
- create_parameter("seed","number","Seed value","Seed",1.0f);
- create_parameter("octaves","number","Octaves of noise","octaves",6.0f);
- create_parameter("frequency","number","Frequency of noise","frequency",1.0f);
- create_parameter("scale","number","scale of noise","scale",1.0f);
+ create_parameter("seed","number","Seed value","Seed",1.0);
+ create_parameter("octaves","number","Octaves of noise","octaves",6.0);
+ create_parameter("frequency","number","Frequency of noise","frequency",1.0);
+ create_parameter("scale","number","scale of noise","scale",1.0);
NODEID="28b3c154-2d0b-11e3-bdf2-1b9b2678a2f6";
};
Noise(map<string,string> &settings):Noise() {
base_settings(settings);
};
Noise* clone(map<string,string> &_settings) { return new Noise(_settings);};
- const float output(const Time_spec &time) {
+ const double output(const Time_spec &time) {
perlin.SetOctaveCount(parameters["octaves"]->value);
perlin.SetFrequency(parameters["frequency"]->value);
perlin.SetSeed(Seed+parameters["seed"]->value);