diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 610e54a6ff..7e472eb90e 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -801,6 +801,18 @@ AUPlugin::can_do (int32_t in, int32_t& out) cerr << name() << " has " << io_configs.size() << " IO Configurations\n"; } + //first search for the simple case that matches what we need exactly + for (vector >::iterator i = io_configs.begin(); i != io_configs.end(); ++i) { + int32_t possible_in = i->first; + int32_t possible_out = i->second; + + if (possible_in == in && possible_out== out) { + return 1; + } + } + + /* now allow potentially "imprecise" matches */ + for (vector >::iterator i = io_configs.begin(); i != io_configs.end(); ++i) { int32_t possible_in = i->first;