+ 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 < 0) {
+ continue;
+ }
+ for (uint32_t i = 1; i < input_elements; ++i) {
+ // can't use up-to bus_inputs[]
+ // waves' SC-C6(s) for example fails to configure with only 1 input
+ // on the 2nd bus.
+ io_configs.push_back (pair<int,int> (possible_in + bus_inputs[i], possible_out));
+ }
+ /* only add additional, optional busses to first available config.
+ * AUPluginInfo::cached_io_configuration () already incrementally
+ * adds busses (for instruments w/ multiple configurations)
+ */
+ break;
+ }
+ }
+
+ if (output_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_out < 0) {
+ continue;
+ }
+ for (uint32_t i = 1; i < output_elements; ++i) {
+ int32_t c = bus_outputs[i];
+ for (uint32_t j = 1; j < i; ++j) {
+ c += bus_outputs [j];
+ }
+ io_configs.push_back (pair<int,int> (possible_in, possible_out + c));
+ }
+ /* only add additional, optional busses to first available config.
+ * AUPluginInfo::cached_io_configuration () already incrementally
+ * adds busses (for instruments w/ multiple configurations)
+ */
+ break;
+ }
+ }