From 015a09d419be393124fd0ef2866470eefe761b51 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Wed, 16 Oct 2013 10:03:40 -0700 Subject: [PATCH] Fixes for non-looping file playback and precision handling on 32 bit targets --- Plugins/MIDI/MIDI/MIDIPlayer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Plugins/MIDI/MIDI/MIDIPlayer.cpp b/Plugins/MIDI/MIDI/MIDIPlayer.cpp index cae2b3950..9871e2119 100644 --- a/Plugins/MIDI/MIDI/MIDIPlayer.cpp +++ b/Plugins/MIDI/MIDI/MIDIPlayer.cpp @@ -17,23 +17,23 @@ void MIDIPlayer::setSampleRate(unsigned long rate) { for (unsigned long i = 0; i < mStream.size(); i++) { - mStream[i].m_timestamp = mStream[i].m_timestamp * rate / uSampleRate; + mStream[i].m_timestamp = (unsigned long)((uint64_t)mStream[i].m_timestamp * rate / uSampleRate); } } if (uTimeCurrent) { - uTimeCurrent = uTimeCurrent * rate / uSampleRate; + uTimeCurrent = (unsigned long)((uint64_t)uTimeCurrent * rate / uSampleRate); } if (uTimeEnd) { - uTimeEnd = uTimeEnd * rate / uSampleRate; + uTimeEnd = (unsigned long)((uint64_t)uTimeEnd * rate / uSampleRate); } if (uTimeLoopStart) { - uTimeLoopStart = uTimeLoopStart * rate / uSampleRate; + uTimeLoopStart = (unsigned long)((uint64_t)uTimeLoopStart * rate / uSampleRate); } uSampleRate = rate; @@ -54,7 +54,7 @@ bool MIDIPlayer::Load(const midi_container & midi_file, unsigned subsong, unsign uLoopMode = loop_mode; - uTimeEnd = midi_file.get_timestamp_end( subsong ) + 1000; + uTimeEnd = midi_file.get_timestamp_end( subsong, true ) + 1000; if (uLoopMode & loop_mode_enable) {