(n_samples = 64 but Ardour sends midi-buffer with an event at 960) some guesses as to why: - split cycle for looping (nominal: 1024, cycle split:64) - plugin uses _session.transport_frame() directly :( (not latency compensated offset or looped position) - "offset" is not taken into account for midi buffers - tempo/metric change (metric iterator is wrong after loop)
This commit is contained in:
@@ -2155,6 +2155,7 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
|
||||
? *metric_i : NULL;
|
||||
if (m != m_end && (!metric || metric->frame() > (*m).time())) {
|
||||
const Evoral::MIDIEvent<framepos_t> ev(*m, false);
|
||||
assert (ev.time() < nframes);
|
||||
LV2_Evbuf_Iterator eend = lv2_evbuf_end(_ev_buffers[port_index]);
|
||||
lv2_evbuf_write(&eend, ev.time(), 0, type, ev.size(), ev.buffer());
|
||||
++m;
|
||||
|
||||
Reference in New Issue
Block a user