|
- #include "CV.hpp"
-
- namespace SynthDevKit {
- CV::CV (float threshold) {
- this->threshold = threshold;
- this->reset();
- }
-
- bool CV::newTrigger ( ) {
- // check to see if this is a status change, if so reset the states and return true
- if (this->triggered == true && this->lastTriggered == false) {
- this->lastTriggered = true;
-
- return true;
- }
-
- this->lastTriggered = this->triggered;
-
- return false;
- }
-
- void CV::update (float current) {
- // set the last value to whatever the current value is
- this->lastValue = current;
-
- // increase the trigger interval count
- this->triggerIntervalCount++;
-
- // check the threshold, if it meets or is greater, then we make a change
- if (current >= this->threshold) {
- if (this->triggered == false) {
- this->triggered = true;
-
- // increment the total number of triggers fired
- this->triggerCount++;
-
- // set the last trigger interval to the interval
- this->lastTriggerInterval = this->triggerIntervalCount;
-
- // reset the count to 0
- this->triggerIntervalCount = 0;
- }
- } else {
- this->triggered = false;
- }
- }
-
- bool CV::isHigh ( ) {
- return this->triggered;
- }
-
- bool CV::isLow ( ) {
- return !this->triggered;
- }
-
- void CV::reset ( ) {
- this->triggered = false;
- this->lastTriggered = false;
- this->lastValue = 0;
- this->triggerCount = 0;
- this->triggerIntervalCount = 0;
- this->lastTriggerInterval = 0;
- }
-
- float CV::currentValue ( ) {
- return this->lastValue;
- }
-
- uint32_t CV::triggerInterval ( ) {
- return this->lastTriggerInterval;
- }
-
- uint32_t CV::triggerTotal ( ) {
- return this->triggerCount;
- }
- }
|