From 3aa1162998ed93e8a0eb574389ab24aefd0b8f17 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 20 Aug 2014 21:13:55 +0100 Subject: [PATCH] Making AU timecode detection deal with some quirks in certain versions of Ableton. --- .../AU/juce_AU_Wrapper.mm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm index ba3f005122..9e56d4c1ad 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm @@ -558,11 +558,8 @@ public: { info.timeSigNumerator = 0; info.timeSigDenominator = 0; - info.timeInSamples = 0; - info.timeInSeconds = 0; info.editOriginTime = 0; info.ppqPositionOfLastBarStart = 0; - info.isPlaying = false; info.isRecording = false; info.isLooping = false; info.ppqLoopStart = 0; @@ -601,20 +598,23 @@ public: } double outCurrentSampleInTimeLine, outCycleStartBeat, outCycleEndBeat; - Boolean playing, playchanged, looping; + Boolean playing = false, playchanged, looping; if (CallHostTransportState (&playing, &playchanged, &outCurrentSampleInTimeLine, &looping, &outCycleStartBeat, - &outCycleEndBeat) == noErr) + &outCycleEndBeat) != noErr) { - info.isPlaying = playing; - info.timeInSamples = (int64) outCurrentSampleInTimeLine; - info.timeInSeconds = outCurrentSampleInTimeLine / getSampleRate(); + // If the host doesn't support this callback, use the sample time from lastTimeStamp: + outCurrentSampleInTimeLine = lastTimeStamp.mSampleTime; } + info.isPlaying = playing; + info.timeInSamples = (int64) (outCurrentSampleInTimeLine + 0.5); + info.timeInSeconds = info.timeInSamples / getSampleRate(); + return true; }