From 83384da510a154893e4005a2715fc281cf34f7ef Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 19 May 2008 09:07:12 +0000 Subject: [PATCH] --- .../audio/midi/juce_MidiMessageCollector.cpp | 11 ++++++----- .../audio/midi/juce_MidiMessageCollector.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/juce_appframework/audio/midi/juce_MidiMessageCollector.cpp b/src/juce_appframework/audio/midi/juce_MidiMessageCollector.cpp index ca24b86b78..85c30b0c1f 100644 --- a/src/juce_appframework/audio/midi/juce_MidiMessageCollector.cpp +++ b/src/juce_appframework/audio/midi/juce_MidiMessageCollector.cpp @@ -57,7 +57,7 @@ void MidiMessageCollector::reset (const double sampleRate_) const ScopedLock sl (midiCallbackLock); sampleRate = sampleRate_; incomingMessages.clear(); - lastCallbackTime = Time::getMillisecondCounter(); + lastCallbackTime = Time::getMillisecondCounterHiRes(); } void MidiMessageCollector::addMessageToQueue (const MidiMessage& message) @@ -88,16 +88,15 @@ void MidiMessageCollector::removeNextBlockOfMessages (MidiBuffer& destBuffer, // you need to call reset() to set the correct sample rate before using this object jassert (sampleRate != 44100.0001); - const uint32 timeNow = Time::getMillisecondCounter(); - const int msElapsed = timeNow - lastCallbackTime; + const double timeNow = Time::getMillisecondCounterHiRes(); + const double msElapsed = timeNow - lastCallbackTime; const ScopedLock sl (midiCallbackLock); lastCallbackTime = timeNow; if (! incomingMessages.isEmpty()) { - int numSourceSamples = roundDoubleToInt (msElapsed * 0.001 * sampleRate); - const int maxBlockLengthToUse = numSamples << 2; + int numSourceSamples = jmax (1, roundDoubleToInt (msElapsed * 0.001 * sampleRate)); int startSample = 0; int scale = 1 << 16; @@ -111,6 +110,8 @@ void MidiMessageCollector::removeNextBlockOfMessages (MidiBuffer& destBuffer, { // if our list of events is longer than the buffer we're being // asked for, scale them down to squeeze them all in.. + const int maxBlockLengthToUse = numSamples << 3; + if (numSourceSamples > maxBlockLengthToUse) { startSample = numSourceSamples - maxBlockLengthToUse; diff --git a/src/juce_appframework/audio/midi/juce_MidiMessageCollector.h b/src/juce_appframework/audio/midi/juce_MidiMessageCollector.h index b0953c0f5f..4cfb1b64ac 100644 --- a/src/juce_appframework/audio/midi/juce_MidiMessageCollector.h +++ b/src/juce_appframework/audio/midi/juce_MidiMessageCollector.h @@ -102,7 +102,7 @@ public: juce_UseDebuggingNewOperator private: - uint32 lastCallbackTime; + double lastCallbackTime; CriticalSection midiCallbackLock; MidiBuffer incomingMessages; double sampleRate;