1 #ifndef __synthBase_h__ 2 #define __synthBase_h__ 14 #include "synthstructures.h" 15 #include "synthlabparams.h" 17 #define _MATH_DEFINES_DEFINED 69 AudioBuffer(uint32_t _numInputChannels, uint32_t _numOutputChannels, uint32_t _blockSize);
73 void init(uint32_t _numInputChannels, uint32_t _numOutputChannels, uint32_t _blockSize);
86 uint32_t getOutputChannelCount() {
return numOutputChannels; }
98 uint32_t numInputChannels = 1;
99 uint32_t numOutputChannels = 1;
130 void reset(
double startValue = 0.0);
139 void setFrequency(
double _frequency_Hz,
double _sampleRate);
160 double sampleRate = 0.0;
161 enum { MOD_COUNTER, PHASE_INC, PHASE_OFFSET, FREQUENCY_HZ, NUM_VARS };
162 double state[NUM_VARS] = { 0.0, 0.0, 0.0, 0.0 };
228 XFader(uint32_t _xfadeTime_Samples);
235 void startCrossfade() {
running =
true; }
236 void stopCrossfade() {
running =
false; }
237 bool isCrossfading() {
return running; }
323 double output = input*(1.0 -
g) +
g*
z1;
357 bool reset(
double _sampleRate,
double startPhase, int32_t xfadeSamples = 16);
365 bool isProcessing() {
return hardSyncFader.isCrossfading(); }
404 bool startModulator(
double startValue,
double endValue,
double modTime_mSec,
double sampleRate);
407 bool setModTime(
double modTime_mSec,
double sampleRate);
449 bool startModulator(
double startNote,
double endNote,
double glideTime_mSec,
double sampleRate);
452 bool setGlideTime(
double glideTime_mSec,
double sampleRate);
496 double bN[3] = { 0.0, 0.0, 0.0 };
562 virtual void setModValue(uint32_t index,
double value) = 0;
599 virtual void selectTable(uint32_t midiNoteNumber) = 0;
926 enum { LPF1, LPF2, LPF3, LPF4, HPF1, HPF2, HPF3, HPF4, BPF2, BPF4, BSF2, BSF4,
927 APF1, APF2, ANM_LPF1, ANM_LPF2, ANM_LPF3, ANM_LPF4, NUM_FILTER_OUTPUTS };
944 double filter[NUM_FILTER_OUTPUTS];
975 virtual bool reset(
double _sampleRate) = 0;
983 virtual bool update() = 0;
1001 virtual void setFilterParams(
double _fc,
double _Q) = 0;
1079 uint32_t* _tableLengths, uint64_t** _ppHexTableSet,
double _outputComp)
1092 double tableFs = 44100.0;
1157 StaticWavetable(
const uint64_t* _table, uint32_t _tableLength,
const char* _waveformName,
1158 double _outputComp = 1.0,
double _tableFs = 44100)
1169 StaticWavetable(
const double* _table, uint32_t _tableLength,
const char* _waveformName,
1170 double _outputComp = 1.0,
double _tableFs = 44100)
1187 double tableFs = 44100.0;
1213 DynamicWavetable(std::shared_ptr<double> _table, uint32_t _tableLength,
const char* _waveformName,
1214 double _outputComp = 1.0,
double _tableFs = 44100)
1224 std::shared_ptr<double>
table =
nullptr;
1228 double tableFs = 44100.0;
1304 typedef std::map < std::string, IPCMSampleSource* >sampleSourceMap;
1306 std::vector<IPCMSampleSource*> sources;
1330 SynthProcessInfo(uint32_t _numInputChannels, uint32_t _numOutputChannels, uint32_t _blockSize);
1417 virtual void setModValue(uint32_t index,
double value);
1470 virtual bool reset(CoreProcData& processInfo) = 0;
1471 virtual bool update(CoreProcData& processInfo) = 0;
1472 virtual bool render(CoreProcData& processInfo) = 0;
1473 virtual bool doNoteOn(CoreProcData& processInfo) = 0;
1474 virtual bool doNoteOff(CoreProcData& processInfo) = 0;
1478 virtual bool shutdown() {
return false; }
1479 virtual void setSustainOverride(
bool sustain) {
return; }
1489 const char* getModuleName() {
return moduleName; }
1491 void setModuleHandle(
void* handle) {
moduleHandle = handle; }
1493 void setModuleIndex(uint32_t index) {
moduleIndex = index; }
1542 SynthModule(std::shared_ptr<MidiInputData> _midiInputData);
1546 virtual bool reset(
double _sampleRate) = 0;
1547 virtual bool update() = 0;
1548 virtual bool render(uint32_t samplesToProcess = 1) = 0;
1553 virtual bool initialize(
const char* _dllDirectory) { dllDirectory = _dllDirectory;
return true; }
1557 virtual bool shutdown() {
return false; }
1564 std::shared_ptr<Modulators> getModulationOutput() {
return modulationOutput; }
1571 unisonDetuneCents = _unisonDetuneCents; unisonStartPhase = _unisonStarPhase;
1576 void clearFMBuffer() {
fmBuffer =
nullptr; }
1580 virtual bool getModuleStrings(std::vector<std::string>& moduleStrings, std::string ignoreStr =
"");
1581 virtual bool getModuleStrings(uint32_t coreIndex, std::vector<std::string>& moduleStrings, std::string ignoreStr);
1582 virtual bool getAllModuleStrings(std::vector<std::string>& moduleStrings, std::string ignoreStr);
1584 virtual bool getModKnobStrings(uint32_t coreIndex, std::vector<std::string>& modKnobStrings);
1586 virtual bool addModuleCore(std::shared_ptr<ModuleCore> core);
1614 std::shared_ptr<ModuleCore> selectedCore =
nullptr;
1619 double unisonDetuneCents = 0.0;
1620 double unisonStartPhase = 0.0;
1621 bool standAloneMode =
false;
1625 std::string dllDirectory;
1654 if (fractional_X >= 1.0)
return y2;
1657 return fractional_X*y2 + (1.0 - fractional_X)*y1;
1674 template <
typename T>
1682 void flushBuffer() { memset(&buffer[0], 0, bufferLength *
sizeof(T)); }
1700 bufferLength = _bufferLengthPowerOfTwo;
1703 wrapMask = bufferLength - 1;
1706 buffer.reset(
new T[bufferLength]);
1716 buffer[writeIndex++] = input;
1719 writeIndex &= wrapMask;
1728 int readIndex = (writeIndex - 1) - delayInSamples;
1731 readIndex &= wrapMask;
1734 return buffer[readIndex];
1741 T y1 =
readBuffer((
int)delayInFractionalSamples);
1744 if (!interpolate)
return y1;
1748 int readIndexNext = (int)delayInFractionalSamples + 1;
1751 readIndexNext &= wrapMask;
1757 double fraction = delayInFractionalSamples - (uint32_t)delayInFractionalSamples;
1767 std::unique_ptr<T[]> buffer =
nullptr;
1768 uint32_t writeIndex = 0;
1769 uint32_t bufferLength = 1024;
1770 uint32_t wrapMask = 1023;
1771 bool interpolate =
true;
1808 void reset(
double _sampleRate,
double minimumPitch = MIDI_NOTE_0_FREQ)
1823 delaySamples = _delaySamples;
1846 double yn = delayBuffer.
readBuffer(delaySamples);
1852 double delaySamples = 0;
1874 double coeff[7] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
1903 for (uint32_t i = 0; i<numStates; i++)
1931 return xn*
bq.coeff[d0] + yn*
bq.coeff[c0];
1935 enum { a0, a1, a2, b1, b2, c0, d0 };
1936 enum { xz1, xz2, yz1, yz2, numStates };
1937 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
1983 double yn = xn*alpha + state[0] - alpha*state[1];
1992 double state[2] = { 0.0, 0.0 };
2032 double yn = 0.5*xn + 0.5*state[0];
2038 double state[2] = { 0.0, 0.0 };
2066 for (uint32_t i = 0; i<numStates; i++)
2069 sampleRate = _sampleRate;
2072 double theta_c =
kTwoPi*
fc / sampleRate;
2073 double gamma = cos(theta_c) / (1.0 + sin(theta_c));
2076 coeffs[a0] = (1.0 + gamma) / 2.0;
2077 coeffs[a1] = -(1.0 + gamma) / 2.0;
2100 enum { xz1, xz2, yz1, yz2, numStates };
2101 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2102 enum { a0, a1, a2, b1, b2 };
2103 double coeffs[5] = { 0.0, 0.0, 0.0, 0.0, 0.0 };
2105 double sampleRate = 1.0;
2133 for (uint32_t i = 0; i<numStates; i++)
2136 sampleRate = _sampleRate;
2142 if (fc == _fc && Q == _Q)
2149 double K = tan(
kPi*fc / sampleRate);
2150 double delta = K*K*Q + K + Q;
2153 coeffs[a0] = K / delta;;
2155 coeffs[a2] = -K / delta;
2156 coeffs[b1] = 2.0*Q*(K*K - 1) / delta;
2157 coeffs[b2] = (K*K*Q - K + Q) / delta;
2168 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2169 state[xz2] = state[xz1];
2171 state[yz2] = state[yz1];
2177 enum { xz1, xz2, yz1, yz2, numStates };
2178 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2179 enum { a0, a1, a2, b1, b2 };
2180 double coeffs[5] = { 0.0, 0.0, 0.0, 0.0, 0.0 };
2183 double sampleRate = 1.0;
2210 sampleRate = _sampleRate;
2217 for (uint32_t i = 0; i<numStates; i++)
2224 if (fc == _fc && Q == _Q)
2231 double theta_c = 2.0*
kPi*fc / sampleRate;
2233 double betaNumerator = 1.0 - ((d / 2.0)*(sin(theta_c)));
2234 double betaDenominator = 1.0 + ((d / 2.0)*(sin(theta_c)));
2236 double beta = 0.5*(betaNumerator / betaDenominator);
2237 double gamma = (0.5 + beta)*(cos(theta_c));
2238 double alpha = (0.5 + beta - gamma) / 2.0;
2242 coeffs[a1] = 2.0*alpha;
2244 coeffs[b1] = -2.0*gamma;
2245 coeffs[b2] = 2.0*beta;
2256 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2257 state[xz2] = state[xz1];
2259 state[yz2] = state[yz1];
2265 enum { xz1, xz2, yz1, yz2, numStates };
2266 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2267 enum { a0, a1, a2, b1, b2 };
2268 double coeffs[5] = { 0.0, 0.0, 0.0, 0.0, 0.0 };
2271 double sampleRate = 1.0;
2299 for (uint32_t i = 0; i<numStates; i++)
2302 sampleRate = _sampleRate;
2308 if (fc == _fc && Q == _Q)
2314 double theta_c =
kTwoPi*fc / sampleRate;
2318 double betaNumerator = 1.0 - ((d / 2.0)*(sin(theta_c)));
2319 double betaDenominator = 1.0 + ((d / 2.0)*(sin(theta_c)));
2321 double beta = 0.5*(betaNumerator / betaDenominator);
2322 double gamma = (0.5 + beta)*(cos(theta_c));
2323 double alpha = (0.5 + beta + gamma) / 2.0;
2327 coeffs[a1] = -2.0*alpha;
2329 coeffs[b1] = -2.0*gamma;
2330 coeffs[b2] = 2.0*beta;
2341 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2342 state[xz2] = state[xz1];
2344 state[yz2] = state[yz1];
2350 enum { xz1, xz2, yz1, yz2, numStates };
2351 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2352 enum { a0, a1, a2, b1, b2 };
2353 double coeffs[5] = { 0.0, 0.0, 0.0, 0.0, 0.0 };
2356 double sampleRate = 1.0;
2383 for(uint32_t i=0; i<numStates; i++)
2386 sampleRate = _sampleRate;
2392 if (fc == _fc && Q == _Q)
2398 double theta_c =
kTwoPi*fc / sampleRate;
2400 coeffs[b2] = exp(-2.0*
kPi*(BW / sampleRate));
2401 coeffs[b1] = ((-4.0*coeffs[b2]) / (1.0 + coeffs[b2]))*cos(theta_c);
2402 coeffs[a0] = 1.0 - pow(coeffs[b2], 0.5);
2403 coeffs[a2] = -coeffs[a0];
2414 double yn = coeffs[a0]*xn + coeffs[a2]*state[xz2] - coeffs[b1]*state[yz1] -coeffs[b2]*state[yz2];
2415 state[xz2] = state[xz1];
2417 state[yz2] = state[yz1];
2418 state[yz1] = yn * loss;
2423 enum { xz1, xz2, yz1, yz2, numStates };
2424 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2425 enum { a0, a2, b1, b2 };
2426 double coeffs[4] = { 0.0, 0.0, 0.0, 0.0 };
2429 double sampleRate = 1.0;
2456 for (uint32_t i = 0; i<numStates; i++)
2459 sampleRate = _sampleRate;
2465 double theta_c =
kTwoPi*shelfFreq / sampleRate;
2466 double mu = pow(10.0, boostCut_dB / 20.0);
2468 double beta = 4.0 / (1.0 + mu);
2469 double delta = beta*tan(theta_c / 2.0);
2470 double gamma = (1.0 - delta) / (1.0 + delta);
2473 coeffs[a0] = (1.0 - gamma) / 2.0;
2474 coeffs[a1] = (1.0 - gamma) / 2.0;
2476 coeffs[b1] = -gamma;
2479 coeffs[c0] = mu - 1.0;
2491 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2492 state[xz2] = state[xz1];
2494 state[yz2] = state[yz1];
2497 return xn*coeffs[d0] + yn*coeffs[c0];
2501 enum { xz1, xz2, yz1, yz2, numStates };
2502 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2503 enum { a0, a1, a2, b1, b2, c0, d0 };
2504 double coeffs[7] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
2506 double boostCut_dB = 0.0;
2507 double sampleRate = 1.0;
2535 for (uint32_t i = 0; i<numStates; i++)
2538 sampleRate = _sampleRate;
2544 double theta_c =
kTwoPi*shelfFreq / sampleRate;
2545 double mu = pow(10.0, boostCut_dB / 20.0);
2547 double beta = (1.0 + mu) / 4.0;
2548 double delta = beta*tan(theta_c / 2.0);
2549 double gamma = (1.0 - delta) / (1.0 + delta);
2551 coeffs[a0] = (1.0 + gamma) / 2.0;
2552 coeffs[a1] = -coeffs[a0];
2554 coeffs[b1] = -gamma;
2557 coeffs[c0] = mu - 1.0;
2569 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2570 state[xz2] = state[xz1];
2572 state[yz2] = state[yz1];
2575 return xn*coeffs[d0] + yn*coeffs[c0];
2579 enum { xz1, xz2, yz1, yz2, numStates };
2580 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2581 enum { a0, a1, a2, b1, b2, c0, d0 };
2582 double coeffs[7] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
2584 double boostCut_dB = 0.0;
2585 double sampleRate = 1.0;
2612 for (uint32_t i = 0; i<numStates; i++)
2615 sampleRate = _sampleRate;
2621 if (fc == _fc && Q == _Q && boostCut_dB == _boostCut_dB)
2625 boostCut_dB = _boostCut_dB;
2628 double theta_c =
kTwoPi*fc / sampleRate;
2629 double mu = pow(10.0, boostCut_dB / 20.0);
2632 double tanArg = theta_c / (2.0 * Q);
2633 if (tanArg >= 0.95*
kPi / 2.0) tanArg = 0.95*
kPi / 2.0;
2636 double zeta = 4.0 / (1.0 + mu);
2637 double betaNumerator = 1.0 - zeta*tan(tanArg);
2638 double betaDenominator = 1.0 + zeta*tan(tanArg);
2640 double beta = 0.5*(betaNumerator / betaDenominator);
2641 double gamma = (0.5 + beta)*(cos(theta_c));
2642 double alpha = (0.5 - beta);
2647 coeffs[a2] = -alpha;
2648 coeffs[b1] = -2.0*gamma;
2649 coeffs[b2] = 2.0*beta;
2651 coeffs[c0] = mu - 1.0;
2663 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2664 state[xz2] = state[xz1];
2666 state[yz2] = state[yz1];
2669 return xn*coeffs[d0] + yn*coeffs[c0];
2673 enum { xz1, xz2, yz1, yz2, numStates };
2674 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2675 enum { a0, a1, a2, b1, b2, c0, d0 };
2676 double coeffs[7] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
2679 double boostCut_dB = 0.0;
2680 double sampleRate = 1.0;
2709 sampleRate = _sampleRate;
2715 for (uint32_t i = 0; i<numStates; i++)
2728 double theta_c = 2.0*
kPi*fc / sampleRate;
2729 double gamma = 2.0 - cos(theta_c);
2731 double filter_b1 = pow((gamma*gamma - 1.0), 0.5) - gamma;
2732 double filter_a0 = 1.0 + filter_b1;
2735 coeffs[a0] = filter_a0;
2738 coeffs[b1] = filter_b1;
2751 double yn = coeffs[a0] * xn + coeffs[a1] * state[xz1] + coeffs[a2] * state[xz2] - coeffs[b1] * state[yz1] - coeffs[b2] * state[yz2];
2752 state[xz2] = state[xz1];
2754 state[yz2] = state[yz1];
2760 enum { xz1, xz2, yz1, yz2, numStates };
2761 double state[4] = { 0.0, 0.0, 0.0, 0.0 };
2762 enum { a0, a1, a2, b1, b2 };
2763 double coeffs[5] = { 0.0, 0.0, 0.0, 0.0, 0.0 };
2766 double sampleRate = 1.0;
2772 enum class PluckFilterType {kPluck, kPluckAndBridge, kPickup, kPluckAndPickup, kBridge, kPluckPickupBridge};
2814 void reset(
double _sampleRate,
double minimumPitch = MIDI_NOTE_0_FREQ)
2820 pickupFilter.
reset(_sampleRate);
2850 if (type == PluckFilterType::kBridge)
2853 if (type == PluckFilterType::kPickup)
2861 double pluck = 0.5*(xn - yn);
2862 if (type == PluckFilterType::kPluck)
2866 if (type == PluckFilterType::kPluckAndPickup)
2870 if (type == PluckFilterType::kPluckAndBridge)
2873 if (type == PluckFilterType::kPluckPickupBridge)
void setDelayInSamples(double _delaySamples)
set comb delay time - this will be based on virtual plucking position on string
Definition: synthbase.h:2833
void reset(double _sampleRate)
Definition: synthbase.h:2706
std::string * tableNames
names of tables
Definition: synthbase.h:1129
Object that acts as the PCM sample database, as shared synth-wide resource. You should study this esp...
Definition: synthbase.h:1288
uint32_t tableLength
length
Definition: synthbase.h:1184
virtual IWavetableSource * getTableSource(const char *uniqueTableName)=0
get a table source based on its unique name string
void reset()
reset the counter
Definition: synthbase.h:317
const char * dllPath
path to the plugin, used for finding PCM sample WAV files
Definition: synthbase.h:1036
std::shared_ptr< Modulators > modulationInput
Definition: synthbase.h:1595
virtual bool getModuleCoreStrings(std::vector< std::string > &moduleCoreStrings)
Gets a std::vector of the names of the four cores in this module.
Definition: synthbase.cpp:1522
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2089
float * getOutputBuffer(uint32_t channel)
Get a naked pointer to an audio OUTPUT buffer by channel.
Definition: synthbase.cpp:162
SynthClock hardSyncClock
clock for reset oscillator
Definition: synthbase.h:372
bool setGlideTime(double glideTime_mSec, double sampleRate)
Change the glide time; this is optional.
Definition: synthbase.cpp:764
Implements a first order APF that is used to generate a fractional delay for the physcial model of a ...
Definition: synthbase.h:1955
void setParameters(double _fc, double _Q)
Definition: synthbase.h:2390
const uint32_t NUM_MODULE_CORES
Definition: synthconstants.h:132
~PCMSampleDatabase()
clear out the table sources
Definition: synthbase.cpp:1032
double phaseInc
phase inc = fo/fs
Definition: synthbase.h:156
uint32_t numActiveChannels
number of active channels; not used in SynthLab but available
Definition: synthbase.h:705
double g
one pole filter feedback coefficient
Definition: synthbase.h:329
std::unique_ptr< GlideModulator > glideModulator
Definition: synthbase.h:1607
virtual void setModValue(uint32_t index, double value)=0
set a modulation value to the array for a certain channel
void initWithClock(SynthClock &clock)
Initialize this clock with another SynthClock.
Definition: synthbase.cpp:211
The CircularBuffer object implements a simple circular buffer. It uses a wrap mask to wrap the read o...
Definition: synthbase.h:1675
double processAudioSample(double xn, PluckFilterType type)
run the string of filters
Definition: synthbase.h:2848
bool isActive()
checks to see if the modulator is running, or completed
Definition: synthbase.h:414
virtual bool addModuleCore(std::shared_ptr< ModuleCore > core)
adds a module core to the module's set of four
Definition: synthbase.cpp:1555
void writeBuffer(T input)
Definition: synthbase.h:1713
Ultra compact timer object that is used for many different functionalities.
Definition: synthbase.h:180
~WavetableDatabase()
clear out the table sources
Definition: synthbase.cpp:936
void setXFadeTimeSamples(double _xfadeTimeSamples)
Definition: synthbase.h:278
std::shared_ptr< ModuleCore > moduleCores[NUM_MODULE_CORES]
Definition: synthbase.h:1613
double outputComp
output scaling factor (NOT volume or attenuation, waveform specific)
Definition: synthbase.h:1227
void reset(double _sampleRate)
Definition: synthbase.h:2381
std::vector< midiEvent > midiEventQueue
queue
Definition: synthbase.h:1347
double timeSigNumerator
time signature numerator
Definition: synthbase.h:1342
double sampleRate
fs
Definition: synthstructures.h:246
IMidiInputData * midiInputData
MIDI input daa, usually owned by engine.
Definition: synthbase.h:1034
Compact modulo counter with wrapping used as the timebase for all oscillators.
Definition: synthbase.h:122
sampleSourceMap sampleDatabase
map that connects PCM sample set names to source objects
Definition: synthbase.h:1305
const double kPi
pi to 80 decimal places
Definition: synthconstants.h:522
double outputComp
output scaling factor
Definition: synthbase.h:1095
void reset(double _sampleRate)
Definition: synthbase.h:2064
void destroyOutputBuffers()
Destroy dynamically allocated output buffer; done at destruct time, or if client want to re-size buff...
Definition: synthbase.cpp:69
virtual bool clearModuleCores()
Clears out the module core pointer list.
Definition: synthbase.cpp:1638
void setExpireSamples(uint32_t _targetValueInSamples)
set target value
Definition: synthbase.h:190
uint32_t endMIDINote
ending MIDI note for the glide
Definition: synthstructures.h:244
BQCoeffs bq
coefficients
Definition: synthbase.h:1938
void reset(double _sampleRate, double minimumPitch=MIDI_NOTE_0_FREQ)
reset the delay, calculate a new length based on sample rate and minimum pitch
Definition: synthbase.h:2814
virtual bool removeTableSource(const char *uniqueTableName)=0
remove a table from the database
void advanceClock(uint32_t ticks=1)
Nudge the clock on the modulator; this is used for block processing where the modulator output output...
Definition: synthbase.cpp:718
uint32_t xfadeTime_Samples
the target crossfade time
Definition: synthbase.h:245
void setParameters(double shelfFreq, double boostCut_dB)
Definition: synthbase.h:2542
virtual bool selectModuleCore(uint32_t index)
Select a core.
Definition: synthbase.cpp:1589
double doPinkingFilter(double white)
run the pinking filter
Definition: synthbase.cpp:858
void copyCoeffs(BQAudioFilter &destination)
Definition: synthbase.h:1913
Interface for wavetable sources.
Definition: synthbase.h:588
void setParameters(double shelfFreq, double boostCut_dB)
Definition: synthbase.h:2463
float ** outputBuffer
array of output buffer pointers
Definition: synthbase.h:97
IModulator * modulationInputs
input modulation values
Definition: synthbase.h:1023
virtual bool reset(double _sampleRate)=0
double BPM
current BPM, needed for LFO sync to BPM
Definition: synthbase.h:1043
std::shared_ptr< AudioBuffer > audioBuffers
Definition: synthbase.h:1604
void advanceClock(uint32_t ticks=1)
Nudge the clock on the modulator; this is used for block processing where the modulator output output...
Definition: synthbase.cpp:800
virtual bool haveValidSamples()=0
query for valid samples; needed if WAV parsing fails and we need to delete the entry ...
void addPhaseOffset(double _phaseOffset, bool wrap=true)
For phase modulation, this adds a phase offset and then optionally checks/wraps the counter as needed...
Definition: synthbase.cpp:293
SynthModule(std::shared_ptr< MidiInputData > _midiInputData)
Constructs a SynthModule.
Definition: synthbase.cpp:1356
double modEnd
ramp mod end value
Definition: synthbase.h:422
std::shared_ptr< AudioBuffer > fmBuffer
Definition: synthbase.h:1610
Encapsulates the audio buffering requirements of any module that uses audio samples for input and/or ...
Definition: synthbase.h:65
double absoluteBufferTime_Sec
the time in seconds of the sample index at top of buffer
Definition: synthbase.h:1340
virtual bool clearSampleSources() override
clear all entries from the std::map
Definition: synthbase.cpp:1127
void setSamplesInBlock(uint32_t _samplesInBlock)
Set the number of samples in a block for processing.
Definition: synthbase.cpp:176
Implements a simple 2nd order HPF.
Definition: synthbase.h:2289
uint32_t moduleType
type of module, LFO_MODULE, EG_MODULE, etc...
Definition: synthbase.h:1508
float ** getInputBuffers()
Definition: synthbase.h:81
uint32_t samplesToProcess
number of samples in this block
Definition: synthbase.h:1039
bool crossfade(XFadeType xfadeType, double inputA, double inputB, double &output)
Perform crossfade FROM A to B on a pair of input values to oroduce a single output value...
Definition: synthbase.cpp:412
virtual bool removeSampleSource(const char *uniqueSampleSetName) override
remove a PCM sample source from the database
Definition: synthbase.cpp:1102
IModulator * modulationOutputs
output modulation values
Definition: synthbase.h:1024
Object that acts as the wavetable database, as shared synth-wide resource. You should study this espe...
Definition: synthbase.h:1250
bool advanceWrapClock(uint32_t renderInterval=1)
Advance the clock some number of tics by adding the phaseInc value and then check to see if modulo co...
Definition: synthbase.cpp:251
void reset(double startValue=0.0)
Reset to initial state.
Definition: synthbase.cpp:226
double timerInc
timer incrementer value
Definition: synthbase.h:418
double freqOffset
FM.
Definition: synthbase.h:158
std::shared_ptr< Modulators > modulationOutput
Definition: synthbase.h:1598
void saveState()
Freeze and save the current state of the clock; for PM and FM.
Definition: synthbase.cpp:345
void reset()
Reset to initial state; just resets counters to 0.
Definition: synthbase.cpp:450
void clear()
Definition: synthbase.h:2215
void resetTimer()
reset the counter
Definition: synthbase.h:187
uint32_t xfadeTime_Counter
counter for timer
Definition: synthbase.h:246
double phaseOffset
PM.
Definition: synthbase.h:157
virtual double getModValue(uint32_t index)
get a value from a slot in the modulation array
Definition: synthbase.cpp:1327
Implementation of a high shelving filter.
Definition: synthbase.h:2525
Interface for PCM sample sources.
Definition: synthbase.h:735
~AudioBuffer()
As one of the few objects that uses naked pointers (for maximum compatibility between plugin framewor...
Definition: synthbase.cpp:39
std::map< std::string, IWavetableSource *> wavetableSourceMap
map that connects wavetable names to source objects
Definition: synthbase.h:1266
bool standAloneMode
flag for stand-alone mode of operation outside of SynthLab
Definition: synthbase.h:1513
void createCircularBufferPowerOfTwo(uint32_t _bufferLengthPowerOfTwo)
Definition: synthbase.h:1694
Implements a simple 2nd order LPF.
Definition: synthbase.h:2200
Implementation of a constant-Q parametric EQ filter.
Definition: synthbase.h:2602
const char * waveformName
string for the GUI
Definition: synthbase.h:1098
double z1
one pole filter state variable
Definition: synthbase.h:330
virtual uint32_t getSelectedCoreIndex()
get the index of the selected core
Definition: synthbase.cpp:1576
const uint32_t UNDEFINED_MODULE
Definition: synthconstants.h:110
IPCMSampleDatabase * getIPCMSampleDatabase()
Definition: synthbase.h:1301
uint32_t wrapMask
wrapping mask = length - 1
Definition: synthbase.h:1185
void setCoeffs(BQCoeffs &_coeffs)
Definition: synthbase.h:1908
double frequency_Hz
clock frequency
Definition: synthbase.h:159
std::shared_ptr< Modulators > getModulationInput()
Definition: synthbase.h:1563
std::default_random_engine defaultGeneratorEngine
Definition: synthbase.h:487
virtual IWavetableSource * getTableSource(const char *uniqueTableName) override
selects a table source based on the unique table name
Definition: synthbase.cpp:949
Simple object that generates white, gaussian white or pink noise.
Definition: synthbase.h:480
std::shared_ptr< MidiInputData > midiInputData
Definition: synthbase.h:1601
bool reset(double _sampleRate, double startPhase, int32_t xfadeSamples=16)
Specialized reset function that:
Definition: synthbase.cpp:559
IPCMSampleDatabase * sampleDatabase
PCM sample database, usually owned by engine.
Definition: synthbase.h:1033
void reset()
Definition: synthbase.h:1898
virtual void setSampleLoopMode(SampleLoopMode _loopMode)=0
Set the looping mode:
Simple version of the AudioFilter object from Designing Audio Effects Plugins in C++ 2nd Ed...
Definition: synthbase.h:1890
Structure to hold the seven coeffieicents used in the AudioFilter object from Designing Audio Effects...
Definition: synthbase.h:1871
Definition: synthengine.cpp:16
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2489
void clear()
Definition: synthbase.h:2800
virtual bool addTableSource(const char *uniqueTableName, IWavetableSource *tableSource) override
add a table source to the database
Definition: synthbase.cpp:977
Definition: synthstructures.h:235
uint32_t blockSize
the maximum block size
Definition: synthbase.h:100
virtual bool getAllModuleStrings(std::vector< std::string > &moduleStrings, std::string ignoreStr)
Gets a std::vector of all Module Strings concatenated from all cores in succession.
Definition: synthbase.cpp:1441
std::shared_ptr< AudioBuffer > getAudioBuffers()
Definition: synthbase.h:1567
XFader()
simple construction
Definition: synthbase.h:227
double countDownTimer
current timer value; this always counts DOWN regardless of the polarity of the modulation (up or down...
Definition: synthbase.h:464
uint32_t getModuleType()
Definition: synthbase.h:1488
virtual IPCMSampleSource * getSampleSource(const char *uniqueSampleSetName)=0
get a PCM sample source based on its unique name string
virtual bool addSampleSource(const char *uniqueSampleSetName, IPCMSampleSource *sampleSource)=0
adds a PCM sample to the database
uint32_t getInputChannelCount()
Definition: synthbase.h:85
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:1981
Simple interface for SynthLab filters.
Definition: synthbase.h:966
ModuleCoreData coreData
core strings (16) and mod knob labels (4)
Definition: synthbase.h:1512
uint64_t ** ppHexTableSet
pointers to sets of hex encoded tables
Definition: synthbase.h:1089
void reset(double _sampleRate)
Definition: synthbase.h:2610
void reset(double _sampleRate)
Definition: synthbase.h:2131
virtual bool startGlideModulation(GlideInfo &glideInfo)
starts the built-in glide modulator
Definition: synthbase.cpp:1539
std::unique_ptr< GlideModulator > glideModulator
built-in glide modulator for oscillators
Definition: synthbase.h:1514
void clearMidiEvents()
Clear the queue.
Definition: synthbase.cpp:902
virtual uint32_t getWaveTableLength()=0
void removePhaseOffset()
Remove existing a phase offset to the reset clock; for supporting phase modulation.
Definition: synthbase.cpp:634
void writeDelay(double xn)
write a value into the top of the delay
Definition: synthbase.h:1832
T readBuffer(double delayInFractionalSamples)
Definition: synthbase.h:1738
uint32_t getTick()
tick count
Definition: synthbase.h:201
uint32_t getMidiEventCount()
Definition: synthbase.cpp:910
double sampleRate
fs
Definition: synthbase.h:1038
void initInputValues()
set default values in modulator array
Definition: synthbase.cpp:1300
bool startModulator(double startValue, double endValue, double modTime_mSec, double sampleRate)
Setup the timers and start the ramp modulator running. The modulator produces an output on the range ...
Definition: synthbase.cpp:652
Implementation of a one-pole LPF.
Definition: synthbase.h:2698
void reset(double _sampleRate)
Definition: synthbase.h:2208
Modulators()
constructs the modulator object
Definition: synthbase.cpp:1281
Crossfades two values (from A to B) and then holds B for some amount of time.
Definition: synthbase.h:268
IModulator * getModulatorPtr()
Definition: synthbase.h:1426
Specialized version of the RampModulator, with nearly identically named functions to peform the porta...
Definition: synthbase.h:442
bool running
state variable
Definition: synthbase.h:247
bool setHardSyncFrequency(double hardSyncFrequency)
Sets the new reset oscillator frequency in Hz.
Definition: synthbase.cpp:575
uint32_t getExpireSamples()
Definition: synthbase.h:194
Holds the audio output samples from reading a PCM sample file.
Definition: synthbase.h:702
Structure for holding information about a static wavetable, that is read from a static location...
Definition: synthbase.h:1153
virtual bool clearTableSources()=0
clear all source pointers
void setUnisonMode(double _unisonDetuneCents, double _unisonStarPhase)
Definition: synthbase.h:1570
void restoreState()
Restore the clock to its last saved state; for PM and FM.
Definition: synthbase.cpp:357
SampleLoopMode
Definition: synthbase.h:710
double modRange
range of modulation output
Definition: synthbase.h:420
uint32_t tableLength
length
Definition: synthbase.h:1225
Implements a first order feedforward LPF with coefficients a0 = a1 = 0.5.
Definition: synthbase.h:2010
void setParameters(double _fc)
Definition: synthbase.h:2720
Implements a simple 2nd order BPF.
Definition: synthbase.h:2123
Abstract base class that encapsulates functionality of a module; used with the Module-Core paradigm...
Definition: synthbase.h:1539
Structure for holding information about a static wavetable, that is read from a static location...
Definition: synthbase.h:1209
void clear()
Definition: synthbase.h:2713
virtual int32_t getState()
Definition: synthbase.h:1556
double processAudioSample(double xn)
Definition: synthbase.h:1923
bool timerExpired()
check if we hit target
Definition: synthbase.h:197
virtual double selectSample(double oscFrequency)=0
Selects a PCM sample based on the current oscillation frequency (after all modulations have been appl...
unsigned int tablePtrsCount
number of pointers
Definition: synthbase.h:1127
bool timerActive
state of modulator, running (true) or expired (false)
Definition: synthbase.h:462
uint32_t wrapMask
mask = length - 1
Definition: synthbase.h:1226
void addPhaseOffset(double offset)
Add a phase offset to the reset clock; for supporting phase modulation.
Definition: synthbase.cpp:625
void reset()
Definition: synthbase.h:2018
Interface for wavetable databases.
Definition: synthbase.h:643
Implements a modulator object.
Definition: synthbase.h:1409
virtual bool addSampleSource(const char *uniqueSampleSetName, IPCMSampleSource *sampleSource) override
add a PCM sample source to the database
Definition: synthbase.cpp:1075
Minute implementation of a 2nd order resonator filter.
Definition: synthbase.h:2373
T readBuffer(int delayInSamples)
Definition: synthbase.h:1723
const char * waveformName
waveform name string
Definition: synthbase.h:1188
uint32_t counter
the timer counter
Definition: synthbase.h:204
double getNextModulationValue(uint32_t advanceClock=1)
Get the current output of the modulator; this is called repeatedly over the ramp modulation time...
Definition: synthbase.cpp:778
void clear()
Definition: synthbase.h:1799
double outputComp
output scaling factor (NOT volume or attenuation, waveform specific)
Definition: synthbase.h:1186
Interface for modulator objects.
Definition: synthbase.h:530
virtual bool clearSampleSources()=0
clear all the sample sources
PluckFilterType
Definition: synthbase.h:2772
void reset(double _sampleRate, double minimumPitch=MIDI_NOTE_0_FREQ)
reset the delay, calculate a new length based on sample rate and minimum pitch
Definition: synthbase.h:1808
XFadeData getCrossfadeData()
Returns the current state of the crossfade or hold.
Definition: synthbase.cpp:478
virtual bool clearTableSources() override
clear all entries from the std::map
Definition: synthbase.cpp:1020
uint32_t getBlockSize()
Definition: synthbase.h:89
void setFrequency(double _frequency_Hz, double _sampleRate)
Set the clock frequency, which calculates the current phase increment value.
Definition: synthbase.cpp:279
double doSlewLimiter(double input)
Definition: synthbase.h:321
void setSlewValue(double _g)
b1 coefficient
Definition: synthbase.h:320
virtual double * getModArrayPtr(uint32_t index)
get a pointer to a slot in the modulation array
Definition: synthbase.cpp:1314
void setXFadeTime(uint32_t _xfadeTime_Samples)
Set the current crossfade time.
Definition: synthbase.cpp:394
void clear()
fast clearing of modulator array
Definition: synthbase.cpp:1290
virtual bool selectDefaultModuleCore()
Select the default core, which is always the first in the list.
Definition: synthbase.cpp:1605
void reset()
Resets object to initialized state.
Definition: synthbase.cpp:382
double coeffs[5]
biquad coefficients
Definition: synthbase.h:2103
uint32_t xfadeTime_Samples
target crossfade time
Definition: synthbase.h:289
virtual int32_t getState()
Definition: synthbase.h:1477
void setParameters(double _fc, double _Q, double _boostCut_dB)
Definition: synthbase.h:2619
void flushDelays()
Definition: synthbase.h:1901
double doLinearInterp(double y1, double y2, double fractional_X)
performs linear interpolation of fractional x distance between two adjacent (x,y) points; returns int...
Definition: synthbase.h:1651
const char * waveformName
waveform name
Definition: synthbase.h:1229
void startHardSync(SynthClock oscClock)
Starts the hard sync operation as a result of being reset, using the main oscillator's SynthClock to ...
Definition: synthbase.cpp:589
Crossfades two values (from A to B)
Definition: synthbase.h:224
std::shared_ptr< double > table
the table (shared)
Definition: synthbase.h:1224
virtual bool addTableSource(const char *uniqueTableName, IWavetableSource *tableSource)=0
adds a table to the database
const double kTwoPi
2pi to 80 decimal places
Definition: synthconstants.h:529
virtual bool initialize(const char *_dllDirectory)
Definition: synthbase.h:1553
uint32_t xfadeTime_Counter
crossfade timer counter
Definition: synthbase.h:290
uint32_t timeSigDenomintor
time signature denominator
Definition: synthbase.h:1343
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2339
CoreProcData coreProcessData
Definition: synthbase.h:1624
Implements a simple slew limiter using a one pole lowpass filter.
Definition: synthbase.h:310
void addFrequencyOffset(double _freqOffset)
For frequency modulation, this adds a frequency offset, and recalculates the phase increment value...
Definition: synthbase.cpp:325
void setFMBuffer(std::shared_ptr< AudioBuffer > pmBuffer)
Definition: synthbase.h:1575
virtual bool removeSampleSource(const char *uniqueSampleSetName)=0
remove a PCM sample set from the database
float ** outputBuffers
set of output bufers, one per channel
Definition: synthbase.h:1028
double countUpTimer
current timer value; this always counts UP regardless of the polarity of the modulation (up or down) ...
Definition: synthbase.h:419
void * moduleParameters
module parameters, cloaked as void* – varies according to module
Definition: synthbase.h:1035
double glideRange
range (distance between MIDI note numbers, as double)
Definition: synthbase.h:465
void removePhaseOffset()
For phase modulation, this removes a phase offset, notice that the function does not attempt to wrap ...
Definition: synthbase.cpp:311
This structure holds all of the information needed to for the plugin framework to send MIDI informati...
Definition: synthbase.h:1326
float ** inputBuffers
set of input bufers, one per channel
Definition: synthbase.h:1027
float ** fmBuffers
used for DX synths (phase modulator synths)
Definition: synthbase.h:1029
void removeFrequencyOffset()
For frequency modulation, this removes a frequency offset and recalculates the phase inc...
Definition: synthbase.cpp:336
MIDINoteEvent noteEvent
the MIDI note event for the current audio block
Definition: synthbase.h:1044
IWavetableDatabase * wavetableDatabase
wavetable database, usually owned by engine
Definition: synthbase.h:1032
bool timerActive
state of modulator, running (true) or expired (false)
Definition: synthbase.h:417
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2567
XFader hardSyncFader
crossfader for smearing discontinuity
Definition: synthbase.h:374
bool startGlideModulation(GlideInfo &glideInfo)
Definition: synthbase.h:1483
double doPinkNoise()
Function generate pink noise by filtering white noise.
Definition: synthbase.cpp:843
const uint32_t kDefaultWaveTableLength
Definition: synthbase.h:1135
virtual bool reset(CoreProcData &processInfo)=0
double audioOutput[STEREO_CHANNELS]
array of audio output samples
Definition: synthbase.h:704
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2254
const double * dTable
table of 64-bit doubles
Definition: synthbase.h:1183
uint32_t moduleIndex
index of this core
Definition: synthbase.h:1511
double doHardSyncXFade(double inA, double inB)
Perform the crossfade on the two oscillator signals to smear over the discontinuity.
Definition: synthbase.cpp:611
virtual void setStandAloneMode(bool b)
Sets the stand-alone mode flag on all cores.
Definition: synthbase.cpp:1621
This super-structure holds a set of SynthLabTableSet called a "bank" and used in the morphing wavetab...
Definition: synthbase.h:1120
void setInterpolate(bool b)
Definition: synthbase.h:1764
double state[4]
state registers
Definition: synthbase.h:1937
SynthLabTableSet ** tablePtrs
set of table-sets
Definition: synthbase.h:1128
SynthClock & operator=(const SynthClock ¶ms)
Overloaded = operator for setting two clocks equal to each other by copying member values from a sour...
Definition: synthbase.cpp:189
IWavetableDatabase * getIWavetableDatabase()
Definition: synthbase.h:1263
void pushMidiEvent(midiEvent event)
Add a MIDI event to the queue.
Definition: synthbase.cpp:892
This is a very specialized object that performs the hard-sync operation using two SynthClocks...
Definition: synthbase.h:350
Interface for PCM sample databases.
Definition: synthbase.h:807
float ** inputBuffer
array of input buffer pointers
Definition: synthbase.h:96
double getNextModulationValue(uint32_t advanceClock=1)
Get the current output of the modulator; this is called repeatedly over the ramp modulation time...
Definition: synthbase.cpp:690
void setExpireMilliSec(double timeMSec, double sampleRate)
set target value
Definition: synthbase.h:191
double modStart
ramp mod start value
Definition: synthbase.h:421
void setAlpha(double _alpha)
Definition: synthbase.h:1970
Implements a first order HPF with fc = 2.0Hz.
Definition: synthbase.h:2056
void destroyInputBuffers()
Destroy dynamically allocated input buffer; done at destruct time, or if client want to re-size buffe...
Definition: synthbase.cpp:51
void setDelayInSamples(double _delaySamples)
set delay time in samples; used to access the delay when reading
Definition: synthbase.h:1821
This is a tiny modulator object that produces an output that ramps up or down linearly between two va...
Definition: synthbase.h:397
double state[NUM_VARS]
for state save
Definition: synthbase.h:162
double hardSyncFrequency
reset oscillator rate
Definition: synthbase.h:375
double unisonStartPhase
unison start phase value for this core
Definition: synthbase.h:1041
uint32_t * tableLengths
pointers to lengths of each of the hex encoded tables
Definition: synthbase.h:1088
double processAudioSample(double xn, double loss=1.0)
run the filter
Definition: synthbase.h:2412
Definition: synthbase.h:1791
const uint64_t * uTable
table of 64-bit HEX values
Definition: synthbase.h:1182
XFadeType
Definition: synthconstants.h:81
uint32_t samplesInBlock
the number of samples to process in the block (in case of partial blocks)
Definition: synthbase.h:101
virtual bool removeTableSource(const char *uniqueTableName) override
remove a table source from the database
Definition: synthbase.cpp:1003
double mcounter
modulo counter [0.0, +1.0], this is the value you use
Definition: synthbase.h:155
double unisonDetuneCents
detuning value for this core
Definition: synthbase.h:1040
double state[4]
state variables
Definition: synthbase.h:2101
uint32_t startMIDINote
starting MIDI note for the glide
Definition: synthstructures.h:243
virtual void selectTable(uint32_t midiNoteNumber)=0
Objects that access the database will select a table based on the user's waveform selection...
void reset(double _sampleRate)
Definition: synthbase.h:2454
void advanceClock(uint32_t renderInterval=1)
Advance the clock some number of tics by adding the phaseInc value.
Definition: synthbase.cpp:239
void reset(double _sampleRate)
Definition: synthbase.h:2297
void createCircularBuffer(uint32_t _bufferLength)
Definition: synthbase.h:1686
double doWhiteNoise()
Function generate white noise.
Definition: synthbase.cpp:833
bool holding
state variable for holding
Definition: synthbase.h:293
virtual IPCMSampleSource * getSampleSource(const char *uniqueSampleSetName) override
selects a PCM sample source based on the unique table name
Definition: synthbase.cpp:1046
ModuleCoreData & getModuleData()
provides access to the core data:
Definition: synthbase.h:1504
void setParameters(double _fc, double _Q)
Definition: synthbase.h:2306
double BPM
beats per minute, aka "tempo"
Definition: synthbase.h:1341
DelayLine combDelay
for pluck position
Definition: synthbase.h:2884
double doGaussianWhiteNoise(double mean=0.0, double variance=1.0)
Function generate gaussian white noise.
Definition: synthbase.cpp:823
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2661
double bN[3]
Definition: synthbase.h:496
virtual bool getModKnobStrings(std::vector< std::string > &modKnobStrings)
Gets a std::vector of Mod Knob label strings for the selected core.
Definition: synthbase.cpp:1470
Implementation of a low shelving filter.
Definition: synthbase.h:2446
virtual double readWaveTable(double normalizedPhaseInc)=0
Read a table at a normalized index where 0.0 is the start of the table and 1.0 is the end of it...
uint32_t targetValueInSamples
curent target galue
Definition: synthbase.h:205
This structure defines a set of wavetables that are usually found in .h files and compiled into the s...
Definition: synthbase.h:1075
void reset(double _sampleRate)
Definition: synthbase.h:2533
virtual double getModValue(uint32_t index)=0
get a modulation value from the array for a certain channel
bool startModulator(double startNote, double endNote, double glideTime_mSec, double sampleRate)
Setup the timers and start the ramp modulator running. The modulator produces an output on the range ...
Definition: synthbase.cpp:742
virtual ~SynthModule()
Removes cores, if any.
Definition: synthbase.cpp:1374
ModuleCoreData moduleData
modulestrings (16) and mod knob labels (4)
Definition: synthbase.h:1617
void setHoldTimeSamples(double _holdTimeSamples)
Setting the hold time is slightly more complicated than the crossfade time becuase it may be done at ...
Definition: synthbase.cpp:461
virtual uint32_t getValidSampleCount()=0
query for valid sample count (not used in SynthLab but avialable)
Holds an array of filter output values; SynthLab filters can produce multiple outputs at once...
Definition: synthbase.h:942
bool wrapClock()
Wrap the modulo counter; note that this will wrap the modulo counter as many times as needed to get i...
Definition: synthbase.cpp:263
double readDelay()
read a delayed value at the location specified in the call to setDelayInSamples() ...
Definition: synthbase.h:1844
void flushBuffers()
clear out the audio; used often
Definition: synthbase.cpp:127
void advanceTimer(uint32_t ticks=1)
advance by 1
Definition: synthbase.h:200
void flushBuffer()
Definition: synthbase.h:1682
virtual double * getModArrayPtr(uint32_t index)=0
Used for the modulation matrix to have instant access to the array.
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2166
void init(uint32_t _numInputChannels, uint32_t _numOutputChannels, uint32_t _blockSize)
Main initializer that creates the new arrays and sets up the object.
Definition: synthbase.cpp:92
Information about a MIDI event.
Definition: synthstructures.h:166
virtual const char * getWaveformName()=0
void reset()
Definition: synthbase.h:1963
This structure holds all of the information needed to call functions on a ModuleCore object...
Definition: synthbase.h:1020
ModuleCore()
Constructs a ModuleCore.
Definition: synthbase.h:1466
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2749
Comnination of three filters in one; note that the figure in the book does not show the variety of co...
Definition: synthbase.h:2792
Contains the two sets of strings unique to each core: the module strings (waveforms for oscillators) ...
Definition: synthstructures.h:264
double timerInc
timer incrementer value
Definition: synthbase.h:463
bool isActive()
checks to see if the modulator is running, or completed
Definition: synthbase.h:459
double glideTime_mSec
glide time to cover the range of notes
Definition: synthstructures.h:245
virtual bool getModuleStrings(std::vector< std::string > &moduleStrings, std::string ignoreStr="")
Gets a std::vector of Module Strings.
Definition: synthbase.cpp:1390
void setParameters(double _fc, double _Q)
Definition: synthbase.h:2222
const uint32_t kNumMIDICCs
Definition: synthconstants.h:562
virtual void setModValue(uint32_t index, double value)
set a value into a slot in the modulation array
Definition: synthbase.cpp:1341
void * moduleHandle
used for dynamically loading cores from DLLs
Definition: synthbase.h:1510
const char * moduleName
module name must be set in derived constructor
Definition: synthbase.h:1509
bool setModTime(double modTime_mSec, double sampleRate)
Change the modulation time; this is optional.
Definition: synthbase.cpp:676
Abstract base class that encapsulates functionality of a module core; used with the Module-Core parad...
Definition: synthbase.h:1458
const uint32_t MAX_MODULATION_CHANNELS
Definition: synthconstants.h:39
virtual void deleteSamples()=0
Delete the samples, part of destruction process.
SynthClock crossFadeClock
crossfading timer
Definition: synthbase.h:373
float * getInputBuffer(uint32_t channel)
Get a naked pointer to an audio INPUT buffer by channel.
Definition: synthbase.cpp:148
void setParameters(double _fc, double _Q)
Definition: synthbase.h:2140
virtual PCMSampleOutput readSample(double &readIndex, double inc)=0
Read a PCM sample at a fractional read index location (not normalized)
double sampleRate
fs
Definition: synthbase.h:376
LP1PFilter bridgeIntegrator
for bridge LPF
Definition: synthbase.h:2885
Information about a MIDI note event (note on or note off).
Definition: synthstructures.h:212
uint32_t holdTime_Counter
hold timer counter
Definition: synthbase.h:292
midiEvent * getMidiEvent(uint32_t index)
gets a MIDI event within the event queue
Definition: synthbase.cpp:923
double fc
hardcoded fc value
Definition: synthbase.h:2104
double processAudioSample(double xn)
run the filter
Definition: synthbase.h:2030
uint32_t holdTime_Samples
target hold time
Definition: synthbase.h:291