From 3cd248f126b423e30936c198433ab388726b6abe Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Tue, 20 Dec 2016 16:59:44 -0800 Subject: [PATCH] Fix seeking for SCVA. --- Plugins/MIDI/MIDI/MIDIPlayer.cpp | 7 +++++++ Plugins/MIDI/MIDI/MIDIPlayer.h | 1 + Plugins/MIDI/MIDI/SCPlayer.cpp | 5 +++++ Plugins/MIDI/MIDI/SCPlayer.h | 1 + 4 files changed, 14 insertions(+) diff --git a/Plugins/MIDI/MIDI/MIDIPlayer.cpp b/Plugins/MIDI/MIDI/MIDIPlayer.cpp index 8b6de007e..922114fd3 100644 --- a/Plugins/MIDI/MIDI/MIDIPlayer.cpp +++ b/Plugins/MIDI/MIDI/MIDIPlayer.cpp @@ -291,11 +291,18 @@ void MIDIPlayer::Seek(unsigned long sample) } } } + + float temp[32]; + bool needs_time = send_event_needs_time(); for (i = 0; i < stream_start; i++) { if (me[i].m_event) + { send_event(me[i].m_event); + if (needs_time) + render(temp, 16); + } } } } diff --git a/Plugins/MIDI/MIDI/MIDIPlayer.h b/Plugins/MIDI/MIDI/MIDIPlayer.h index 440f822b5..1750f5d0c 100644 --- a/Plugins/MIDI/MIDI/MIDIPlayer.h +++ b/Plugins/MIDI/MIDI/MIDIPlayer.h @@ -27,6 +27,7 @@ public: void Seek(unsigned long sample); protected: + virtual bool send_event_needs_time() { return false; } virtual void send_event(uint32_t b) {} virtual void render(float * out, unsigned long count) {} diff --git a/Plugins/MIDI/MIDI/SCPlayer.cpp b/Plugins/MIDI/MIDI/SCPlayer.cpp index 75d031b7b..3dcd58512 100644 --- a/Plugins/MIDI/MIDI/SCPlayer.cpp +++ b/Plugins/MIDI/MIDI/SCPlayer.cpp @@ -336,3 +336,8 @@ unsigned int SCPlayer::get_playing_note_count() return total; } + +bool SCPlayer::send_event_needs_time() +{ + return true; +} diff --git a/Plugins/MIDI/MIDI/SCPlayer.h b/Plugins/MIDI/MIDI/SCPlayer.h index c1009191e..e771dd816 100644 --- a/Plugins/MIDI/MIDI/SCPlayer.h +++ b/Plugins/MIDI/MIDI/SCPlayer.h @@ -34,6 +34,7 @@ public: void set_sccore_path(const char * path); protected: + virtual bool send_event_needs_time(); virtual void send_event(uint32_t b); virtual void render(float * out, unsigned long count);