|
- #include "DistributedClock.hpp"
-
- namespace SynthDevKit {
- DistributedClock::DistributedClock (bool master, float trigger) {
- isMaster = master;
- upstreamCV = new CV(trigger);
- clockCV = new CV(trigger);
-
- reset();
- }
-
- void DistributedClock::update (uint8_t count, float upstreamValue, float clockValue) {
- upstreamCV->update(upstreamValue);
- clockCV->update(clockValue);
- totalTriggers = count;
-
- if (upstreamCV->newTrigger()) {
- reset();
-
- isActive = true;
- totalTriggers = count;
- }
- }
-
- void DistributedClock::reset ( ) {
- upstreamCV->reset();
- clockCV->reset();
-
- if (isMaster) {
- isActive = true;
- } else {
- isActive = false;
- }
-
- triggerCount = 0;
- totalTriggers = 0;
- }
-
- bool DistributedClock::triggerClock ( ) {
- if (triggerCount == totalTriggers) {
- return false;
- }
-
- if (clockCV->newTrigger() && isActive) {
- triggerCount++;
- return true;
- }
-
- return false;
- }
-
- bool DistributedClock::triggerDownstream ( ) {
- if (triggerCount == totalTriggers && isActive) {
- isActive = false;
- return true;
- }
-
- return false;
- }
- }
|