mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-23 15:16:25 +01:00
optimize midi delayline.
This commit is contained in:
parent
8cb24865d2
commit
f1533a03da
1 changed files with 21 additions and 13 deletions
|
|
@ -222,10 +222,12 @@ DelayLine::run (BufferSet& bufs, framepos_t /* start_frame */, framepos_t /* end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// delay events in current-buffer, in place.
|
if (_delay != 0) {
|
||||||
for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
|
// delay events in current-buffer, in place.
|
||||||
MidiBuffer::TimeType *t = m.timeptr();
|
for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
|
||||||
*t += _delay;
|
MidiBuffer::TimeType *t = m.timeptr();
|
||||||
|
*t += _delay;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// move events from dly-buffer into current-buffer until nsamples
|
// 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);
|
m = dly->erase(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
// move events after nsamples from current-buffer into dly-buffer
|
/* For now, this is only relevant if there is there's a positive delay.
|
||||||
// and trim current-buffer after nsamples
|
* In the future this could also be used to delay 'too early' events
|
||||||
for (MidiBuffer::iterator m = mb.begin(); m != mb.end();) {
|
* (ie '_global_port_buffer_offset + _port_buffer_offset' - midi_port.cc)
|
||||||
const Evoral::MIDIEvent<MidiBuffer::TimeType> ev (*m, false);
|
*/
|
||||||
if (ev.time() < nsamples) {
|
if (_delay != 0) {
|
||||||
++m;
|
// move events after nsamples from current-buffer into dly-buffer
|
||||||
continue;
|
// and trim current-buffer after nsamples
|
||||||
|
for (MidiBuffer::iterator m = mb.begin(); m != mb.end();) {
|
||||||
|
const Evoral::MIDIEvent<MidiBuffer::TimeType> 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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue