bool AudioProcessor::containsLayout (const BusesLayout& layouts, const Array<InOutChannelPair>& channelLayouts) { if (layouts.inputBuses.size() > 1 || layouts.outputBuses.size() > 1) return false; const InOutChannelPair mainLayout (static_cast<int16> (layouts.getNumChannels (true, 0)), static_cast<int16> (layouts.getNumChannels (false, 0))); return channelLayouts.contains (mainLayout); }
bool AudioProcessor::setBusesLayoutWithoutEnabling (const BusesLayout& arr) { const int numIns = getBusCount (true); const int numOuts = getBusCount (false); jassert (arr.inputBuses. size() == numIns && arr.outputBuses.size() == numOuts); BusesLayout request = arr; const BusesLayout current = getBusesLayout(); for (int i = 0; i < numIns; ++i) if (request.getNumChannels (true, i) == 0) request.getChannelSet (true, i) = current.getChannelSet (true, i); for (int i = 0; i < numOuts; ++i) if (request.getNumChannels (false, i) == 0) request.getChannelSet (false, i) = current.getChannelSet (false, i); if (! checkBusesLayoutSupported(request)) return false; for (int dir = 0; dir < 2; ++dir) { const bool isInput = (dir != 0); for (int i = 0; i < (isInput ? numIns : numOuts); ++i) { Bus& bus = *getBus (isInput, i); AudioChannelSet& set = request.getChannelSet (isInput, i); if (! bus.isEnabled()) { if (! set.isDisabled()) bus.lastLayout = set; set = AudioChannelSet::disabled(); } } } return setBusesLayout (request); }