Curves integration into the synth
This commit is contained in:
parent
a7b21a9890
commit
e1bacb2888
4 changed files with 18 additions and 5 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue