Update clock.h to support uClock v2.2.1 and implement external PPQN 4 #3

Merged
awonak merged 5 commits from refs/pull/3/head into main 2025-05-30 03:08:32 +00:00
3 changed files with 79 additions and 49 deletions
Showing only changes of commit 43e1fe783e - Show all commits

View File

@ -22,6 +22,8 @@ enum Source {
SOURCE_INTERNAL, SOURCE_INTERNAL,
SOURCE_EXTERNAL_PPQN_24, SOURCE_EXTERNAL_PPQN_24,
SOURCE_EXTERNAL_PPQN_4, SOURCE_EXTERNAL_PPQN_4,
// SOURCE_MIDI,
SOURCE_LAST,
}; };
class Clock { class Clock {
@ -53,8 +55,10 @@ class Clock {
break; break;
case SOURCE_EXTERNAL_PPQN_24: case SOURCE_EXTERNAL_PPQN_24:
uClock.setClockMode(uClock.EXTERNAL_CLOCK); uClock.setClockMode(uClock.EXTERNAL_CLOCK);
uClock.setInputPPQN(uClock.PPQN_24);
case SOURCE_EXTERNAL_PPQN_4: case SOURCE_EXTERNAL_PPQN_4:
uClock.setClockMode(uClock.EXTERNAL_CLOCK); uClock.setClockMode(uClock.EXTERNAL_CLOCK);
uClock.setInputPPQN(uClock.PPQN_4);
default: default:
break; break;
} }

View File

@ -33,6 +33,7 @@ struct AppState {
bool refresh_screen = true; bool refresh_screen = true;
byte selected_param = 0; byte selected_param = 0;
byte selected_channel = 0; // 0=tempo, 1-6=output channel byte selected_channel = 0; // 0=tempo, 1-6=output channel
Source selected_source = SOURCE_INTERNAL;
Channel channel[OUTPUT_COUNT]; Channel channel[OUTPUT_COUNT];
}; };
AppState app; AppState app;
@ -155,12 +156,9 @@ void HandleRotate(Direction dir, int val) {
app.refresh_screen = true; app.refresh_screen = true;
break; break;
case 1: case 1:
if (gravity.clock.ExternalSource()) { app.selected_source = static_cast<Source>((app.selected_source + 1) % SOURCE_LAST);
gravity.clock.SetSource(SOURCE_INTERNAL); gravity.clock.SetSource(app.selected_source);
} else {
gravity.clock.SetSource(SOURCE_EXTERNAL_PPQN_24);
}
app.refresh_screen = true; app.refresh_screen = true;
break; break;
} }
@ -261,7 +259,23 @@ void DisplayMainPage() {
gravity.display.setCursor(10, 10); gravity.display.setCursor(10, 10);
gravity.display.print(F("Source: ")); gravity.display.print(F("Source: "));
gravity.display.print((gravity.clock.InternalSource()) ? F("INT") : F("EXT")); switch (app.selected_source)
{
case SOURCE_INTERNAL:
gravity.display.print(F("INT"));
break;
case SOURCE_EXTERNAL_PPQN_24:
gravity.display.print(F("EXT 24 PPQN"));
break;
case SOURCE_EXTERNAL_PPQN_4:
gravity.display.print(F("EXT 4 PPQN"));
break;
// case SOURCE_EXTERNAL_MIDI:
// gravity.display.print(F("EXT MIDI"));
// break;
default:
break;
}
} }
void DisplayChannelPage() { void DisplayChannelPage() {