don't clear MIDI buffers during split-cycles
authorRobin Gareus <robin@gareus.org>
Sat, 28 Nov 2015 22:40:03 +0000 (23:40 +0100)
committerRobin Gareus <robin@gareus.org>
Sat, 28 Nov 2015 22:40:03 +0000 (23:40 +0100)
if dst_offset is zero, MidiBuffer::read_from() clears the buffer.
copy_to_outputs() eventually calls MidiBuffer::read_from().

libs/ardour/delivery.cc

index b70d86a75d7fd9efe773fb1902c43dd08e996c5a..b2cdc0b324b30944bfcca4c81b56e5db029ff3a5 100644 (file)
@@ -300,7 +300,7 @@ Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pf
                // MIDI data will not have been delivered by the panner
 
                if (bufs.count().n_midi() > 0 && ports.count().n_midi () > 0) {
-                       _output->copy_to_outputs (bufs, DataType::MIDI, nframes, 0);
+                       _output->copy_to_outputs (bufs, DataType::MIDI, nframes, ports.port(0)->port_offset());
                }
 
        } else {
@@ -312,7 +312,7 @@ Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pf
                 }
 
                if (bufs.count().n_midi() > 0 && ports.count().n_midi () > 0) {
-                       _output->copy_to_outputs (bufs, DataType::MIDI, nframes, 0);
+                       _output->copy_to_outputs (bufs, DataType::MIDI, nframes, ports.port(0)->port_offset());
                }
        }