Merge branch 'hotfix/issue-4'

This commit is contained in:
paulfd 2019-09-29 03:28:04 +02:00
commit 50e20c0a33

View file

@ -239,8 +239,6 @@ void sfz::Voice::renderBlock(AudioSpan<float> buffer) noexcept
auto delay = min(static_cast<size_t>(initialDelay), buffer.getNumFrames()); auto delay = min(static_cast<size_t>(initialDelay), buffer.getNumFrames());
auto delayed_buffer = buffer.subspan(delay); auto delayed_buffer = buffer.subspan(delay);
initialDelay -= delay; initialDelay -= delay;
if (delayed_buffer.getNumFrames() == 0)
return;
if (region->isGenerator()) if (region->isGenerator())
fillWithGenerator(delayed_buffer); fillWithGenerator(delayed_buffer);
@ -248,9 +246,9 @@ void sfz::Voice::renderBlock(AudioSpan<float> buffer) noexcept
fillWithData(delayed_buffer); fillWithData(delayed_buffer);
if (region->isStereo()) if (region->isStereo())
processStereo(delayed_buffer); processStereo(buffer);
else else
processMono(delayed_buffer); processMono(buffer);
if (!egEnvelope.isSmoothing()) if (!egEnvelope.isSmoothing())
reset(); reset();
@ -350,6 +348,9 @@ void sfz::Voice::processStereo(AudioSpan<float> buffer) noexcept
void sfz::Voice::fillWithData(AudioSpan<float> buffer) noexcept void sfz::Voice::fillWithData(AudioSpan<float> buffer) noexcept
{ {
if (buffer.getNumFrames() == 0)
return;
auto source { [&]() { auto source { [&]() {
if (region->canUsePreloadedData()) if (region->canUsePreloadedData())
return AudioSpan<const float>(*region->preloadedData); return AudioSpan<const float>(*region->preloadedData);
@ -435,6 +436,9 @@ void sfz::Voice::fillWithGenerator(AudioSpan<float> buffer) noexcept
if (region->sample != "*sine") if (region->sample != "*sine")
return; return;
if (buffer.getNumFrames() == 0)
return;
float step = baseFrequency * twoPi<float> / sampleRate; float step = baseFrequency * twoPi<float> / sampleRate;
phase = linearRamp<float>(tempSpan1, phase, step); phase = linearRamp<float>(tempSpan1, phase, step);