-#include <stdexcept>
#include "smoothcontrol.h"
+#include <stdexcept>
using namespace std;
namespace Msp {
namespace Input {
-SmoothControl::SmoothControl():
- value(0),
- paired_ctrl(0),
- dead_zone(0.1),
- threshold(0.9)
-{ }
-
SmoothControl::SmoothControl(const ControlSource &s):
- Control(s),
- value(0),
- paired_ctrl(0),
- dead_zone(0.1),
- threshold(0.9)
+ Control(s)
{ }
SmoothControl::SmoothControl(Device &d, ControlSrcType t, unsigned i):
- Control(d, t, i),
- value(0),
- paired_ctrl(0),
- dead_zone(0.1),
- threshold(0.9)
+ Control(d, t, i)
{ }
SmoothControl::~SmoothControl()
{
- pair(0);
+ pair(nullptr);
}
void SmoothControl::set_dead_zone(float d)
if(paired_ctrl)
{
SmoothControl *old_pair = paired_ctrl;
- paired_ctrl = 0;
- old_pair->pair(0);
+ paired_ctrl = nullptr;
+ old_pair->pair(nullptr);
}
paired_ctrl = ctrl;
void SmoothControl::on_motion(float v, float r)
{
+ float old_value = value;
if(v<-dead_zone)
value = v+dead_zone;
else if(v>dead_zone)
value /= threshold-dead_zone;
}
+ if(value && !old_value)
+ rising_edge = true;
+ else if(!value && old_value)
+ falling_edge = true;
+
signal_motion.emit(value);
if(paired_ctrl && (v>0 || (v==0 && paired_ctrl->value!=0)))