20 auto currentTime = transport.getPosition();
22 if (
auto epc = transport.getCurrentPlaybackContext())
23 currentTime = epc->getPosition();
26 position.set (currentTime);
27 const auto timeSig = position.getTimeSignature();
29 info.
bpm = position.getTempo();
36 info.
frameRate = juce::AudioPlayHead::fpsUnknown;
41 if (
auto epc = transport.getCurrentPlaybackContext())
46 const auto loopRange = transport.getLoopRange();
47 position.set (loopRange.getStart());
49 position.set (loopRange.getEnd());
64 if (
auto epc = transport.getCurrentPlaybackContext())
71 const TimeDuration timeOffset = TimeDuration::fromSeconds (beatsSinceStart * secondsPerBeat);
74 const TimePosition currentPositionInSeconds = epc->getPosition() + blockSizeInSeconds;
80 if (TimeDuration::fromSeconds (std::abs ((currentPositionInSeconds - timeOffset).inSeconds())) > (blockSizeInSeconds / 2.0))
81 epc->postPosition (toPosition (timeOffset));
83 if (! epc->isPlaying())
88 transport.setPosition (toPosition (timeOffset));
98 position.set (TimePosition::fromSeconds (info.
timeInSeconds));
99 const auto tempo = position.getTempo();
100 const auto timeSig = position.getTimeSignature();
102 const auto newBpm = info.
bpm;
107 || timeSig.numerator != newNumerator
108 || timeSig.denominator != newDenominator)
110 juce::MessageManager::callAsync ([editRef =
makeSafeRef (edit), newBpm, newNumerator, newDenominator]
112 if (
auto ed = editRef.get())
115 auto& tempoSequence = ed->tempoSequence;
116 auto tempoSetting = tempoSequence.getTempo (0);
117 auto timeSigSetting = tempoSequence.getTimeSig (0);
119 tempoSetting->setBpm (newBpm);
120 timeSigSetting->numerator = newNumerator;
121 timeSigSetting->denominator = newDenominator;
142 const bool sucess = pos.hasValue();
146 positionInfo.resetToDefault();
148 if (
const auto sig = pos->getTimeSignature())
154 if (
const auto loop = pos->getLoopPoints())
160 if (
const auto frame = pos->getFrameRate())
163 if (
const auto timeInSeconds = pos->getTimeInSeconds())
166 if (
const auto lastBarStartPpq = pos->getPpqPositionOfLastBarStart())
169 if (
const auto ppqPosition = pos->getPpqPosition())
172 if (
const auto originTime = pos->getEditOriginTime())
175 if (
const auto bpm = pos->getBpm())
176 positionInfo.
bpm = *bpm;
178 if (
const auto timeInSamples = pos->getTimeInSamples())
181 positionInfo.
isPlaying = pos->getIsPlaying();
183 positionInfo.
isLooping = pos->getIsLooping();
186 positionInfoLock.
exit();