summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/auditioner.h2
-rw-r--r--libs/ardour/auditioner.cc7
-rw-r--r--libs/ardour/session_transport.cc1
3 files changed, 9 insertions, 1 deletions
diff --git a/libs/ardour/ardour/auditioner.h b/libs/ardour/ardour/auditioner.h
index 624df0c0d1..6ca51fc0d6 100644
--- a/libs/ardour/ardour/auditioner.h
+++ b/libs/ardour/ardour/auditioner.h
@@ -91,6 +91,8 @@ public:
void set_audition_synth_info(PluginInfoPtr in) { audition_synth_info = in; }
+ samplecnt_t output_latency () const { return 0; }
+
private:
PluginInfoPtr audition_synth_info; //we will use this to create a new synth on-the-fly each time an audition is requested
diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc
index 079677ae4c..6b1921a2f8 100644
--- a/libs/ardour/auditioner.cc
+++ b/libs/ardour/auditioner.cc
@@ -440,7 +440,12 @@ Auditioner::play_audition (samplecnt_t nframes)
_seek_complete = false;
_seeking = false;
_seek_sample = -1;
- _disk_reader->reset_tracker();
+ if (_midi_audition) {
+ /* Force MIDI note tracker to resolve any notes that are
+ * still playing -> set DR::run_must_resolve */
+ _disk_reader->set_pending_overwrite (PlaylistModified);
+ _disk_reader->overwrite_existing_buffers ();
+ }
}
if(!_seeking) {
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index b2364054fa..8bba6757d2 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -695,6 +695,7 @@ Session::butler_completed_transport_work ()
if (ptw & PostTransportAudition) {
if (auditioner && auditioner->auditioning()) {
+ _remaining_latency_preroll = 0;
process_function = &Session::process_audition;
} else {
process_function = &Session::process_with_events;