Add clock reset behavior to EXT when internally clocked.

This commit is contained in:
2025-07-04 10:54:16 -07:00
parent b8cdd97261
commit 14d1c497b3
2 changed files with 20 additions and 4 deletions

View File

@ -145,6 +145,11 @@ class Clock {
uClock.stop();
}
// Reset all clock counters to 0.
void Reset() {
uClock.resetCounters();
}
// Returns true if the clock is not running.
bool IsPaused() {
return uClock.clock_state == uClock.PAUSED;

View File

@ -35,6 +35,14 @@
* BTN2:
* Shift - hold and rotate encoder to change current selected output channel.
*
* EXT:
* External clock input. When Gravity is set to INTERNAL clock mode, this
* input is used to reset clocks.
*
* CV1:
* CV2:
* External analog input used to provide modulation to any channel parameter.
*
*/
#include <gravity.h>
@ -143,11 +151,14 @@ void HandleIntClockTick(uint32_t tick) {
}
void HandleExtClockTick() {
// Ignore tick if not using external source.
if (!gravity.clock.ExternalSource()) {
return;
}
if (gravity.clock.InternalSource()) {
// Use EXT as Reset when internally clocked.
ResetOutputs();
gravity.clock.Reset();
} else {
// Register clock tick.
gravity.clock.Tick();
}
app.refresh_screen = true;
}