diff --git a/clock.h b/clock.h index 95b7d69..62930cd 100644 --- a/clock.h +++ b/clock.h @@ -22,6 +22,8 @@ enum Source { SOURCE_INTERNAL, SOURCE_EXTERNAL_PPQN_24, SOURCE_EXTERNAL_PPQN_4, + // SOURCE_MIDI, + SOURCE_LAST, }; class Clock { @@ -53,8 +55,10 @@ class Clock { break; case SOURCE_EXTERNAL_PPQN_24: uClock.setClockMode(uClock.EXTERNAL_CLOCK); + uClock.setInputPPQN(uClock.PPQN_24); case SOURCE_EXTERNAL_PPQN_4: uClock.setClockMode(uClock.EXTERNAL_CLOCK); + uClock.setInputPPQN(uClock.PPQN_4); default: break; } diff --git a/examples/clock_mod/clock_mod.ino b/examples/clock_mod/clock_mod.ino index 728f66c..ed495d3 100644 --- a/examples/clock_mod/clock_mod.ino +++ b/examples/clock_mod/clock_mod.ino @@ -33,6 +33,7 @@ struct AppState { bool refresh_screen = true; byte selected_param = 0; byte selected_channel = 0; // 0=tempo, 1-6=output channel + Source selected_source = SOURCE_INTERNAL; Channel channel[OUTPUT_COUNT]; }; AppState app; @@ -155,12 +156,9 @@ void HandleRotate(Direction dir, int val) { app.refresh_screen = true; break; - case 1: - if (gravity.clock.ExternalSource()) { - gravity.clock.SetSource(SOURCE_INTERNAL); - } else { - gravity.clock.SetSource(SOURCE_EXTERNAL_PPQN_24); - } + case 1: + app.selected_source = static_cast((app.selected_source + 1) % SOURCE_LAST); + gravity.clock.SetSource(app.selected_source); app.refresh_screen = true; break; } @@ -261,7 +259,23 @@ void DisplayMainPage() { gravity.display.setCursor(10, 10); 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() {