X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fdelayline.cc;h=0bd779336665b68a969e7a25a51c6ff1c4ef2728;hb=5b40e073e9c973479c3d286a007c57e1e0fa3d0f;hp=550051f2d0acaad3cc01890608676fb21c5679a9;hpb=e1b82caeb9821e7724580574382a63f4ece77e3d;p=ardour.git diff --git a/libs/ardour/delayline.cc b/libs/ardour/delayline.cc index 550051f2d0..0bd7793366 100644 --- a/libs/ardour/delayline.cc +++ b/libs/ardour/delayline.cc @@ -222,10 +222,12 @@ DelayLine::run (BufferSet& bufs, framepos_t /* start_frame */, framepos_t /* end } } - // delay events in current-buffer, in place. - for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) { - MidiBuffer::TimeType *t = m.timeptr(); - *t += _delay; + if (_delay != 0) { + // delay events in current-buffer, in place. + for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) { + MidiBuffer::TimeType *t = m.timeptr(); + *t += _delay; + } } // move events from dly-buffer into current-buffer until nsamples @@ -239,16 +241,22 @@ DelayLine::run (BufferSet& bufs, framepos_t /* start_frame */, framepos_t /* end m = dly->erase(m); } - // move events after nsamples from current-buffer into dly-buffer - // and trim current-buffer after nsamples - for (MidiBuffer::iterator m = mb.begin(); m != mb.end();) { - const Evoral::MIDIEvent ev (*m, false); - if (ev.time() < nsamples) { - ++m; - continue; + /* For now, this is only relevant if there is there's a positive delay. + * In the future this could also be used to delay 'too early' events + * (ie '_global_port_buffer_offset + _port_buffer_offset' - midi_port.cc) + */ + if (_delay != 0) { + // move events after nsamples from current-buffer into dly-buffer + // and trim current-buffer after nsamples + for (MidiBuffer::iterator m = mb.begin(); m != mb.end();) { + const Evoral::MIDIEvent ev (*m, false); + if (ev.time() < nsamples) { + ++m; + continue; + } + dly->insert_event(ev); + m = mb.erase(m); } - dly->insert_event(ev); - m = mb.erase(m); } } }