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

Reviewed-on: https://git.pinkduck.xyz/adam/libGravity/pulls/3
Co-authored-by: Adam Wonak <adam.wonak@gmail.com>
Co-committed-by: Adam Wonak <adam.wonak@gmail.com>
This commit is contained in:
2025-05-30 03:08:31 +00:00
committed by adam
parent b580d1e451
commit 98c3769008
3 changed files with 41 additions and 15 deletions

26
clock.h
View File

@ -22,6 +22,8 @@ enum Source {
SOURCE_INTERNAL,
SOURCE_EXTERNAL_PPQN_24,
SOURCE_EXTERNAL_PPQN_4,
// SOURCE_MIDI,
SOURCE_LAST,
};
class Clock {
@ -29,8 +31,8 @@ class Clock {
void Init() {
// Initialize the clock library
uClock.init();
uClock.setMode(uClock.INTERNAL_CLOCK);
uClock.setPPQN(uClock.PPQN_96);
uClock.setClockMode(uClock.INTERNAL_CLOCK);
uClock.setOutputPPQN(uClock.PPQN_96);
uClock.setTempo(DEFAULT_TEMPO);
uClock.start();
}
@ -42,30 +44,34 @@ class Clock {
// Internal PPQN96 callback for all clock timer operations.
void AttachIntHandler(void (*callback)(uint32_t)) {
uClock.setOnPPQN(callback);
uClock.setOnOutputPPQN(callback);
}
// Set the source of the clock mode.
void SetSource(Source source) {
uClock.stop();
switch (source) {
case SOURCE_INTERNAL:
uClock.setMode(uClock.INTERNAL_CLOCK);
uClock.setClockMode(uClock.INTERNAL_CLOCK);
break;
case SOURCE_EXTERNAL_PPQN_24:
uClock.setMode(uClock.EXTERNAL_CLOCK);
uClock.setClockMode(uClock.EXTERNAL_CLOCK);
uClock.setInputPPQN(uClock.PPQN_24);
break;
case SOURCE_EXTERNAL_PPQN_4:
uClock.setMode(uClock.EXTERNAL_CLOCK);
default:
uClock.setClockMode(uClock.EXTERNAL_CLOCK);
uClock.setInputPPQN(uClock.PPQN_4);
break;
}
uClock.start();
}
bool ExternalSource() {
return uClock.getMode() == uClock.EXTERNAL_CLOCK;
return uClock.getClockMode() == uClock.EXTERNAL_CLOCK;
}
bool InternalSource() {
return uClock.getMode() == uClock.INTERNAL_CLOCK;
return uClock.getClockMode() == uClock.INTERNAL_CLOCK;
}
int Tempo() {
@ -85,7 +91,7 @@ class Clock {
}
bool IsPaused() {
return uClock.state == uClock.PAUSED;
return uClock.clock_state == uClock.PAUSED;
}
};