diff --git a/src/sfizz/Resources.h b/src/sfizz/Resources.h index e129b355..1367d714 100644 --- a/src/sfizz/Resources.h +++ b/src/sfizz/Resources.h @@ -25,5 +25,18 @@ struct Resources FilterPool filterPool { midiState }; EQPool eqPool { midiState }; WavetablePool wavePool; + + void setSampleRate(float samplerate) + { + midiState.setSampleRate(samplerate); + filterPool.setSampleRate(samplerate); + eqPool.setSampleRate(samplerate); + } + + void setSamplesPerBlock(int samplesPerBlock) + { + bufferPool.setBufferSize(samplesPerBlock); + midiState.setSamplesPerBlock(samplesPerBlock); + } }; } diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 2c701e19..4e68bbaf 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -510,7 +510,7 @@ void sfz::Synth::setSamplesPerBlock(int samplesPerBlock) noexcept this->tempMixNodeBuffer.resize(samplesPerBlock); for (auto& voice : voices) voice->setSamplesPerBlock(samplesPerBlock); - resources.midiState.setSamplesPerBlock(samplesPerBlock); + resources.setSamplesPerBlock(samplesPerBlock); for (auto& bus : effectBuses) { if (bus) @@ -529,9 +529,7 @@ void sfz::Synth::setSampleRate(float sampleRate) noexcept for (auto& voice : voices) voice->setSampleRate(sampleRate); - resources.filterPool.setSampleRate(sampleRate); - resources.eqPool.setSampleRate(sampleRate); - resources.midiState.setSampleRate(sampleRate); + resources.setSampleRate(sampleRate); for (auto& bus : effectBuses) { if (bus)