gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 2f2d0d42ea72d538d14e07a05ee99fd59681a588
parent 8a57b288f19d4b98ecbc1102ee477523bd14c1bf
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Mon, 29 Jul 2024 14:36:17 +0200

skip input resampling if there are no imput channels defined

Diffstat:
Msource/synthLib/resamplerInOut.cpp | 32+++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/source/synthLib/resamplerInOut.cpp b/source/synthLib/resamplerInOut.cpp @@ -171,25 +171,35 @@ namespace synthLib auto feedOutput = [&](const TAudioOutputs& _outs, const uint32_t _numProcessedSamples) { - m_scaledInputSize += m_in->process(m_scaledInput, m_scaledInputSize, m_channelCountIn, _numProcessedSamples, false, feedInput); + if(m_channelCountIn) + m_scaledInputSize += m_in->process(m_scaledInput, m_scaledInputSize, m_channelCountIn, _numProcessedSamples, false, feedInput); clampMidiEvents(m_processedMidiIn, m_midiIn, 0, _numProcessedSamples-1); m_midiIn.clear(); TAudioInputs inputs; - if(_numProcessedSamples > m_scaledInputSize) + + if(m_channelCountIn) { - // resampler prewarming, wants more data than we have - const auto diff = _numProcessedSamples - m_scaledInputSize; - m_scaledInput.insertZeroes(diff); - m_scaledInputSize += diff; - m_outputLatency += static_cast<uint32_t>(diff); - LOG("Resampler output latency " << m_outputLatency << " samples"); + if(_numProcessedSamples > m_scaledInputSize) + { + // resampler prewarming, wants more data than we have + const auto diff = _numProcessedSamples - m_scaledInputSize; + m_scaledInput.insertZeroes(diff); + m_scaledInputSize += diff; + m_outputLatency += static_cast<uint32_t>(diff); + LOG("Resampler output latency " << m_outputLatency << " samples"); + } + m_scaledInput.fillPointers(inputs); } - m_scaledInput.fillPointers(inputs); + _processFunc(inputs, _outs, _numProcessedSamples, m_processedMidiIn, m_midiOut); - m_scaledInput.remove(_numProcessedSamples); - m_scaledInputSize -= _numProcessedSamples; + + if(m_channelCountIn) + { + m_scaledInput.remove(_numProcessedSamples); + m_scaledInputSize -= _numProcessedSamples; + } }; const auto outputSize = m_out->process(_outputs, m_channelCountOut, _numSamples, false, feedOutput);