Curves integration into the synth

This commit is contained in:
Jean Pierre Cimalando 2020-03-03 16:04:28 +01:00 committed by Paul Fd
parent a7b21a9890
commit e1bacb2888
4 changed files with 18 additions and 5 deletions

View file

@ -115,6 +115,11 @@ public:
*/
const Curve& getCurve(unsigned index) const;
/**
* @brief Get the number of slots.
*/
unsigned getNumCurves() const;
private:
std::vector<std::unique_ptr<Curve>> _curves;
bool _useExplicitIndexing = false;

View file

@ -30,4 +30,10 @@ inline float Curve::evalNormalized(float value) const
return evalCC7(127 * value);
}
///
inline unsigned CurveSet::getNumCurves() const
{
return static_cast<unsigned>(_curves.size());
}
} // namespace sfz

View file

@ -71,8 +71,7 @@ void sfz::Synth::callback(absl::string_view header, const std::vector<Opcode>& m
buildRegion(members);
break;
case hash("curve"):
// TODO: implement curves
numCurves++;
curves.addCurveFromHeader(members);
break;
case hash("effect"):
handleEffectOpcodes(members);
@ -128,11 +127,11 @@ void sfz::Synth::clear()
effectBuses[0]->setGainToMain(1.0);
effectBuses[0]->setSamplesPerBlock(samplesPerBlock);
effectBuses[0]->setSampleRate(sampleRate);
curves = CurveSet::createPredefined();
resources.filePool.clear();
resources.logger.clear();
numGroups = 0;
numMasters = 0;
numCurves = 0;
fileTicket = -1;
defaultSwitch = absl::nullopt;
defaultPath = "";
@ -717,7 +716,7 @@ int sfz::Synth::getNumMasters() const noexcept
}
int sfz::Synth::getNumCurves() const noexcept
{
return numCurves;
return curves.getNumCurves();
}
std::string sfz::Synth::exportMidnam(absl::string_view model) const

View file

@ -10,6 +10,7 @@
#include "Voice.h"
#include "Region.h"
#include "Effects.h"
#include "Curve.h"
#include "LeakDetector.h"
#include "MidiState.h"
#include "AudioSpan.h"
@ -382,7 +383,6 @@ private:
int numGroups { 0 };
int numMasters { 0 };
int numCurves { 0 };
/**
* @brief Remove all regions, resets all voices and clears everything
@ -461,6 +461,9 @@ private:
typedef std::unique_ptr<EffectBus> EffectBusPtr;
std::vector<EffectBusPtr> effectBuses; // 0 is "main", 1-N are "fx1"-"fxN"
// Curves
CurveSet curves;
// Intermediate buffers
AudioBuffer<float> tempBuffer { 2, config::defaultSamplesPerBlock };
AudioBuffer<float> tempMixNodeBuffer { 2, config::defaultSamplesPerBlock };