13
0

rework LXVST port assignments - fixes #5827

This commit is contained in:
Robin Gareus 2014-01-15 14:55:26 +01:00
parent c8f9405386
commit b06fa27ccb

View File

@ -528,22 +528,35 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
{
Plugin::connect_and_run (bufs, in_map, out_map, nframes, offset);
ChanCount bufs_count;
bufs_count.set(DataType::AUDIO, 1);
bufs_count.set(DataType::MIDI, 1);
BufferSet& silent_bufs = _session.get_silent_buffers(bufs_count);
BufferSet& scratch_bufs = _session.get_scratch_buffers(bufs_count);
float *ins[_plugin->numInputs];
float *outs[_plugin->numOutputs];
int32_t i;
const uint32_t nbufs = bufs.count().n_audio();
int in_index = 0;
uint32_t in_index = 0;
for (i = 0; i < (int32_t) _plugin->numInputs; ++i) {
ins[i] = bufs.get_audio(min((uint32_t) in_index, nbufs - 1)).data() + offset;
in_index++;
uint32_t index;
bool valid = false;
index = in_map.get(DataType::AUDIO, in_index++, &valid);
ins[i] = (valid)
? bufs.get_audio(index).data(offset)
: silent_bufs.get_audio(0).data(offset);
}
int out_index = 0;
uint32_t out_index = 0;
for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
outs[i] = bufs.get_audio(min((uint32_t) out_index, nbufs - 1)).data() + offset;
out_index++;
uint32_t index;
bool valid = false;
index = out_map.get(DataType::AUDIO, out_index++, &valid);
outs[i] = (valid)
? bufs.get_audio(index).data(offset)
: scratch_bufs.get_audio(0).data(offset);
}
if (bufs.count().n_midi() > 0) {