Properly clear buffers
This commit is contained in:
parent
2f2de8c677
commit
bf7d90f3d4
1 changed files with 10 additions and 3 deletions
|
|
@ -539,14 +539,22 @@ void sfz::Synth::setSampleRate(float sampleRate) noexcept
|
||||||
void sfz::Synth::renderBlock(AudioSpan<float> buffer) noexcept
|
void sfz::Synth::renderBlock(AudioSpan<float> buffer) noexcept
|
||||||
{
|
{
|
||||||
ScopedFTZ ftz;
|
ScopedFTZ ftz;
|
||||||
|
CallbackBreakdown callbackBreakdown;
|
||||||
|
|
||||||
|
{ // Silence buffer
|
||||||
|
ScopedTiming logger { callbackBreakdown.renderMethod };
|
||||||
|
buffer.fill(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
if (freeWheeling)
|
if (freeWheeling)
|
||||||
resources.filePool.waitForBackgroundLoading();
|
resources.filePool.waitForBackgroundLoading();
|
||||||
|
|
||||||
|
|
||||||
AtomicGuard callbackGuard { inCallback };
|
AtomicGuard callbackGuard { inCallback };
|
||||||
if (!canEnterCallback)
|
if (!canEnterCallback)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
size_t numFrames = buffer.getNumFrames();
|
size_t numFrames = buffer.getNumFrames();
|
||||||
auto tempSpan = resources.bufferPool.getStereoBuffer(numFrames);
|
auto tempSpan = resources.bufferPool.getStereoBuffer(numFrames);
|
||||||
auto tempMixSpan = resources.bufferPool.getStereoBuffer(numFrames);
|
auto tempMixSpan = resources.bufferPool.getStereoBuffer(numFrames);
|
||||||
|
|
@ -554,7 +562,6 @@ void sfz::Synth::renderBlock(AudioSpan<float> buffer) noexcept
|
||||||
DBG("[sfizz] Could not get a temporary buffer; exiting callback... ");
|
DBG("[sfizz] Could not get a temporary buffer; exiting callback... ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CallbackBreakdown callbackBreakdown;
|
|
||||||
|
|
||||||
{ // Prepare the effect inputs. They are mixes of per-region outputs.
|
{ // Prepare the effect inputs. They are mixes of per-region outputs.
|
||||||
ScopedTiming logger { callbackBreakdown.effects };
|
ScopedTiming logger { callbackBreakdown.effects };
|
||||||
|
|
@ -566,9 +573,9 @@ void sfz::Synth::renderBlock(AudioSpan<float> buffer) noexcept
|
||||||
|
|
||||||
int numActiveVoices { 0 };
|
int numActiveVoices { 0 };
|
||||||
{ // Main render block
|
{ // Main render block
|
||||||
ScopedTiming logger { callbackBreakdown.renderMethod };
|
ScopedTiming logger { callbackBreakdown.renderMethod, ScopedTiming::Operation::addToDuration };
|
||||||
buffer.fill(0.0f);
|
|
||||||
tempSpan->fill(0.0f);
|
tempSpan->fill(0.0f);
|
||||||
|
tempMixSpan->fill(0.0f);
|
||||||
resources.filePool.cleanupPromises();
|
resources.filePool.cleanupPromises();
|
||||||
|
|
||||||
for (auto& voice : voices) {
|
for (auto& voice : voices) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue