diff --git a/src/plug/JK_MidiClock.cpp b/src/plug/JK_MidiClock.cpp index 6ec0075..acf990a 100644 --- a/src/plug/JK_MidiClock.cpp +++ b/src/plug/JK_MidiClock.cpp @@ -13,6 +13,7 @@ */ #include "JK_MidiClock.h" #include "juce_core/maths/juce_MathsFunctions.h" +#include #include @@ -31,7 +32,6 @@ JK_MidiClock::JK_MidiClock() m_clockMessage = new MidiMessage(MidiMessage::midiClock()); m_songPositionMessage = new MidiMessage(MidiMessage::songPositionPointer(0)); m_last_sample_pos_sync = 0; - m_last_sample_pos_sync = 0; m_syncSamplePos = 0; } //================================================================================================= @@ -111,7 +111,7 @@ void JK_MidiClock::generateMidiclock(const AudioPlayHead::CurrentPositionInfo &p const double hostSamplePos_f = hostPpqPosition * quant; double syncSamplePos_f = hostSamplePos_f; - int64 syncSamplePos = roundToInt64(syncSamplePos_f); + int64 syncSamplePos = (int64)std::round(syncSamplePos_f); double sample_offset = syncSamplePos_f - m_syncSamplePos; for (int posInBuffer = 0; posInBuffer < bufferSize; ++posInBuffer) @@ -156,11 +156,11 @@ void JK_MidiClock::generateMidiclock(const AudioPlayHead::CurrentPositionInfo &p //to Midiclock even if they are in stop mode. double sample_pos = (double)posInBuffer + sample_offset; double distance = fabs(syncSamplePos_f-m_last_sample_pos_sync); -// SynthDebug("Distance: %f", distance); -// SynthDebug("Quant: %f", quant); -// if (fabs(distance - clockDistanceInSamples) < quant and sample_pos >= 0) if ((syncSamplePos % clockDistanceInSamples) == 0 and sample_pos >= 0) { + SynthDebug("Distance : %f", distance); + SynthDebug("syncSamplePos_f: %f", syncSamplePos_f); + SynthDebug("sample_offset : %f", sample_offset); // SynthDebug("MidiClock at Sample Sync: %d | PPQ Host: %f | PPQ Sync: %f", syncSamplePos-m_last_sample_pos_sync, hostPpqPosition-m_last_ppq_pos_host, m_syncPpqPosition-m_last_syncPpqPosition); SynthDebug("MidiClock at Sample Sync: %f, diff %f", sample_pos, syncSamplePos_f-m_last_sample_pos_sync); m_last_sample_pos_sync = syncSamplePos_f; @@ -169,6 +169,7 @@ void JK_MidiClock::generateMidiclock(const AudioPlayHead::CurrentPositionInfo &p midiBuffer->addEvent(*m_clockMessage, roundToInt(sample_pos)); } m_syncSamplePos = ++syncSamplePos; + syncSamplePos_f += 1.0; } m_wasPlaying = true;