diff options
-rw-r--r-- | libs/ardour/ardour/auditioner.h | 2 | ||||
-rw-r--r-- | libs/ardour/auditioner.cc | 7 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 1 |
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; |