/* ============================================================================== This file is part of the Water library. Copyright (c) 2015 ROLI Ltd. Copyright (C) 2017-2018 Filipe Coelho Permission is granted to use this software under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. For a full copy of the GNU General Public License see the doc/GPL.txt file. ============================================================================== */ #include "AudioProcessor.h" namespace water { AudioProcessor::AudioProcessor() { numAudioIns = 0; numAudioOuts = 0; numCVIns = 0; numCVOuts = 0; numMIDIIns = 0; numMIDIOuts = 0; currentSampleRate = 0; blockSize = 0; latencySamples = 0; suspended = false; nonRealtime = false; } AudioProcessor::~AudioProcessor() { } //============================================================================== void AudioProcessor::setPlayConfigDetails (const uint newNumIns, const uint newNumOuts, const uint newNumCVIns, const uint newNumCVOuts, const uint newNumMIDIIns, const uint newNumMIDIOuts, const double newSampleRate, const int newBlockSize) { numAudioIns = newNumIns; numAudioOuts = newNumOuts; numCVIns = newNumCVIns; numCVOuts = newNumCVOuts; numMIDIIns = newNumMIDIIns; numMIDIOuts = newNumMIDIOuts; setRateAndBufferSizeDetails (newSampleRate, newBlockSize); } void AudioProcessor::setRateAndBufferSizeDetails (double newSampleRate, int newBlockSize) noexcept { currentSampleRate = newSampleRate; blockSize = newBlockSize; } //============================================================================== void AudioProcessor::setNonRealtime (const bool newNonRealtime) noexcept { nonRealtime = newNonRealtime; } void AudioProcessor::setLatencySamples (const int newLatency) { if (latencySamples != newLatency) latencySamples = newLatency; } void AudioProcessor::suspendProcessing (const bool shouldBeSuspended) { const CarlaRecursiveMutexLocker cml (callbackLock); suspended = shouldBeSuspended; } void AudioProcessor::reset() {} void AudioProcessor::reconfigure() {} uint AudioProcessor::getTotalNumInputChannels(ChannelType t) const noexcept { switch (t) { case ChannelTypeAudio: return numAudioIns; case ChannelTypeCV: return numCVIns; case ChannelTypeMIDI: return numMIDIIns; } return 0; } uint AudioProcessor::getTotalNumOutputChannels(ChannelType t) const noexcept { switch (t) { case ChannelTypeAudio: return numAudioOuts; case ChannelTypeCV: return numCVOuts; case ChannelTypeMIDI: return numMIDIOuts; } return 0; } const String AudioProcessor::getInputChannelName(ChannelType t, uint) const { return t == ChannelTypeMIDI ? "events-in" : ""; } const String AudioProcessor::getOutputChannelName(ChannelType t, uint) const { return t == ChannelTypeMIDI ? "events-out" : ""; } }