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:
26
clock.h
26
clock.h
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user