Change init to setSampleRate andset the blockSize and sampleRate of new busses
This commit is contained in:
parent
1ac68cc3d2
commit
235069fd27
7 changed files with 22 additions and 15 deletions
|
|
@ -91,10 +91,10 @@ void EffectBus::addToInputs(const float* const addInput[], float addGain, unsign
|
|||
}
|
||||
}
|
||||
|
||||
void EffectBus::init(double sampleRate)
|
||||
void EffectBus::setSampleRate(double sampleRate)
|
||||
{
|
||||
for (const auto& effectPtr : _effects)
|
||||
effectPtr->init(sampleRate);
|
||||
effectPtr->setSampleRate(sampleRate);
|
||||
}
|
||||
|
||||
void EffectBus::clear()
|
||||
|
|
@ -130,6 +130,10 @@ void EffectBus::mixOutputsTo(float* const mainOutput[], float* const mixOutput[]
|
|||
}
|
||||
}
|
||||
|
||||
size_t EffectBus::numEffects() const noexcept
|
||||
{
|
||||
return _effects.size();
|
||||
}
|
||||
void EffectBus::setSamplesPerBlock(int samplesPerBlock) noexcept
|
||||
{
|
||||
_inputs.resize(samplesPerBlock);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public:
|
|||
/**
|
||||
@brief Initializes with the given sample rate.
|
||||
*/
|
||||
virtual void init(double sampleRate) = 0;
|
||||
virtual void setSampleRate(double sampleRate) = 0;
|
||||
|
||||
/**
|
||||
@brief Reset the state to initial.
|
||||
|
|
@ -133,7 +133,7 @@ public:
|
|||
/**
|
||||
@brief Initializes all effects in the bus with the given sample rate.
|
||||
*/
|
||||
void init(double sampleRate);
|
||||
void setSampleRate(double sampleRate);
|
||||
|
||||
/**
|
||||
@brief Resets the state of all effects in the bus.
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ void sfz::Synth::clear()
|
|||
effectBuses.emplace_back(new EffectBus);
|
||||
effectBuses[0]->setGainToMain(1.0);
|
||||
effectBuses[0]->setSamplesPerBlock(samplesPerBlock);
|
||||
effectBuses[0]->init(sampleRate);
|
||||
effectBuses[0]->setSampleRate(sampleRate);
|
||||
resources.filePool.clear();
|
||||
resources.logger.clear();
|
||||
numGroups = 0;
|
||||
|
|
@ -201,10 +201,13 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
|
|||
auto getOrCreateBus = [this](unsigned index) -> EffectBus& {
|
||||
if (index + 1 > effectBuses.size())
|
||||
effectBuses.resize(index + 1);
|
||||
EffectBusPtr& slot = effectBuses[index];
|
||||
if (!slot)
|
||||
slot.reset(new EffectBus);
|
||||
return *slot;
|
||||
EffectBusPtr& bus = effectBuses[index];
|
||||
if (!bus) {
|
||||
bus.reset(new EffectBus);
|
||||
bus->setSampleRate(sampleRate);
|
||||
bus->setSamplesPerBlock(samplesPerBlock);
|
||||
}
|
||||
return *bus;
|
||||
};
|
||||
|
||||
for (const Opcode& opcode : members) {
|
||||
|
|
@ -255,7 +258,7 @@ void sfz::Synth::handleEffectOpcodes(const std::vector<Opcode>& members)
|
|||
// create the effect and add it
|
||||
EffectBus& bus = getOrCreateBus(busIndex);
|
||||
auto fx = effectFactory.makeEffect(members);
|
||||
fx->init(sampleRate);
|
||||
fx->setSampleRate(sampleRate);
|
||||
bus.addEffect(std::move(fx));
|
||||
}
|
||||
|
||||
|
|
@ -482,7 +485,7 @@ void sfz::Synth::setSampleRate(float sampleRate) noexcept
|
|||
|
||||
for (size_t i = 0, n = effectBuses.size(); i < n; ++i) {
|
||||
if (EffectBus* bus = effectBuses[i].get())
|
||||
bus->init(sampleRate);
|
||||
bus->setSampleRate(sampleRate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
namespace sfz {
|
||||
namespace fx {
|
||||
|
||||
void Lofi::init(double sampleRate)
|
||||
void Lofi::setSampleRate(double sampleRate)
|
||||
{
|
||||
for (unsigned c = 0; c < EffectChannels; ++c) {
|
||||
_bitred[c].init(sampleRate);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace fx {
|
|||
/**
|
||||
* @brief Initializes with the given sample rate.
|
||||
*/
|
||||
void init(double sampleRate) override;
|
||||
void setSampleRate(double sampleRate) override;
|
||||
|
||||
/**
|
||||
* @brief Reset the state to initial.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
namespace sfz {
|
||||
namespace fx {
|
||||
|
||||
void Nothing::init(double sampleRate)
|
||||
void Nothing::setSampleRate(double sampleRate)
|
||||
{
|
||||
(void)sampleRate;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace fx {
|
|||
/**
|
||||
* @brief Initializes with the given sample rate.
|
||||
*/
|
||||
void init(double sampleRate) override;
|
||||
void setSampleRate(double sampleRate) override;
|
||||
|
||||
/**
|
||||
* @brief Reset the state to initial.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue