summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_unit.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-04 03:56:26 +0200
committerRobin Gareus <robin@gareus.org>2016-07-04 03:57:04 +0200
commited5cd83c6371267d730b318d32629114c5630d59 (patch)
treeabbb28e7f4b13dc3274f97ffb238cab86fad34b2 /libs/ardour/audio_unit.cc
parenta373e4cfc80cfc1dc712ecdf8013c18286ce2a6b (diff)
experimental support for AU sidechain busses
some plugins include a sidechain bus which is not explicitly listed under "Reported Channel Capabilities" list, nor the "Input/Output Channel Handling"
Diffstat (limited to 'libs/ardour/audio_unit.cc')
-rw-r--r--libs/ardour/audio_unit.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc
index c31d77256e..a520fbb00e 100644
--- a/libs/ardour/audio_unit.cc
+++ b/libs/ardour/audio_unit.cc
@@ -1256,7 +1256,22 @@ AUPlugin::can_support_io_configuration (const ChanCount& in, ChanCount& out, Cha
return false;
}
- vector<pair<int,int> >& io_configs = pinfo->cache.io_configs;
+ vector<pair<int,int> > io_configs = pinfo->cache.io_configs;
+
+ if (input_elements > 1) {
+ const vector<pair<int,int> >& ioc (pinfo->cache.io_configs);
+ for (vector<pair<int,int> >::const_iterator i = ioc.begin(); i != ioc.end(); ++i) {
+ int32_t possible_in = i->first;
+ int32_t possible_out = i->second;
+ if (possible_in <= 1 || possible_out <= 1) {
+ continue;
+ }
+ for (uint32_t i = 1; i < input_elements; ++i) {
+ // TODO: consider up-to bus_inputs[i]
+ io_configs.push_back (pair<int,int> (possible_in + bus_inputs[i], possible_out));
+ }
+ }
+ }
DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("%1 has %2 IO configurations, looking for %3 in, %4 out\n",
name(), io_configs.size(), in, out));