Metronome settings and UI improvements

This commit is contained in:
Bruno Herbelin
2021-11-14 00:18:32 +01:00
parent d6c689c5bb
commit fc4e3dc362
4 changed files with 40 additions and 25 deletions

View File

@@ -1,5 +1,4 @@
#include <atomic>
#include <chrono>
#include <iomanip>
#include <iostream>
#include <thread>
@@ -59,6 +58,13 @@ namespace ableton
return sessionState.beatAtTime(now(), mQuantum);
}
std::chrono::microseconds timeNextBeat() const
{
auto sessionState = mLink.captureAppSessionState();
double beat = ceil(sessionState.beatAtTime(now(), mQuantum));
return sessionState.timeAtBeat(beat, mQuantum);
}
double phaseTime() const
{
auto sessionState = mLink.captureAppSessionState();
@@ -99,12 +105,12 @@ namespace ableton
mLink.enableStartStopSync(enabled);
}
private:
std::chrono::microseconds now() const
{
return mLink.clock().micros();
}
private:
Link& mLink;
double mQuantum;
};
@@ -146,7 +152,6 @@ void Metronome::terminate()
link_.enable(false);
}
double Metronome::beats() const
{
return engine_.beatTime();
@@ -181,6 +186,11 @@ double Metronome::tempo() const
return engine_.tempo();
}
std::chrono::microseconds Metronome::timeToBeat()
{
return engine_.timeNextBeat() - engine_.now();
}
size_t Metronome::peers() const
{
return link_.numPeers();