summaryrefslogtreecommitdiff
path: root/libs/ardour/io.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/io.cc')
-rw-r--r--libs/ardour/io.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index 00c0f4e168..a30881b4da 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -181,7 +181,7 @@ IO::silence (jack_nframes_t nframes, jack_nframes_t offset)
/* io_lock, not taken: function must be called from Session::process() calltree */
for (PortSet::iterator i = _outputs.begin(); i != _outputs.end(); ++i) {
- i->silence (nframes, offset);
+ i->get_buffer().silence (nframes, offset);
}
}
@@ -217,6 +217,15 @@ IO::deliver_output (BufferSet& bufs, jack_nframes_t start_frame, jack_nframes_t
// Use the panner to distribute audio to output port buffers
if (_panner && !_panner->empty() && !_panner->bypassed()) {
_panner->distribute(bufs, output_buffers(), start_frame, end_frame, nframes, offset);
+ } else {
+ const DataType type = DataType::AUDIO;
+
+ // Copy any audio 1:1 to outputs
+ assert(bufs.count().get(DataType::AUDIO) == output_buffers().count().get(DataType::AUDIO));
+ BufferSet::iterator o = output_buffers().begin(type);
+ for (BufferSet::iterator i = bufs.begin(type); i != bufs.end(type); ++i, ++o) {
+ o->read_from(*i, nframes, offset);
+ }
}
@@ -228,8 +237,9 @@ IO::deliver_output (BufferSet& bufs, jack_nframes_t start_frame, jack_nframes_t
}
const DataType type = DataType::MIDI;
-
- // Just dump any MIDI 1-to-1, we're not at all clever with MIDI routing yet
+
+ // Copy any MIDI 1:1 to outputs
+ assert(bufs.count().get(DataType::MIDI) == output_buffers().count().get(DataType::MIDI));
BufferSet::iterator o = output_buffers().begin(type);
for (BufferSet::iterator i = bufs.begin(type); i != bufs.end(type); ++i, ++o) {
o->read_from(*i, nframes, offset);