feat: Add external clock tick handler to reset sequencer or register tick based on clock source.

This commit is contained in:
2026-03-18 12:18:45 -07:00
parent 50c551f198
commit 37711bc6ef

View File

@ -251,6 +251,23 @@ void ProcessSequencerTick(uint32_t tick) {
} }
} }
void HandleExtClockTick() {
switch (selected_source) {
case Clock::SOURCE_INTERNAL:
case Clock::SOURCE_EXTERNAL_MIDI:
// Use EXT as Reset when not used for clock source.
for (int i = 0; i < 6; i++) {
gravity.outputs[i].Low();
}
gravity.clock.Reset();
current_step = 0;
break;
default:
// Register EXT clock tick.
gravity.clock.Tick();
}
}
void OnPlayPress() { void OnPlayPress() {
if (!gravity.clock.IsPaused()) { if (!gravity.clock.IsPaused()) {
gravity.clock.Stop(); gravity.clock.Stop();
@ -604,6 +621,7 @@ void setup() {
gravity.encoder.AttachPressRotateHandler(OnEncoderPressRotate); gravity.encoder.AttachPressRotateHandler(OnEncoderPressRotate);
gravity.clock.AttachIntHandler(ProcessSequencerTick); gravity.clock.AttachIntHandler(ProcessSequencerTick);
gravity.clock.AttachExtHandler(HandleExtClockTick);
// Default to 120 BPM internal // Default to 120 BPM internal
gravity.clock.SetTempo(120); gravity.clock.SetTempo(120);
gravity.clock.SetSource(Clock::SOURCE_INTERNAL); gravity.clock.SetSource(Clock::SOURCE_INTERNAL);