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; const Curve& getCurve(unsigned index) const;
/**
* @brief Get the number of slots.
*/
unsigned getNumCurves() const;
private: private:
std::vector<std::unique_ptr<Curve>> _curves; std::vector<std::unique_ptr<Curve>> _curves;
bool _useExplicitIndexing = false; bool _useExplicitIndexing = false;

View file

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

View file

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

View file

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