18 #define enumToInt(ENUM) static_cast<int>(ENUM) 20 inline double semitonesBetweenFreqs(
double startFrequency,
double endFrequency)
22 return log2(endFrequency / startFrequency)*12.0;
84 const double OSC_FMAX = 20480.0;
85 const uint32_t OSC_INPUTS = 1;
86 const uint32_t OSC_OUTPUTS = 2;
89 const double WT_OSC_MIN = MIDI_NOTE_0_FREQ;
90 const double WT_OSC_MAX = 20480.0;
91 const uint32_t WT_OSC_INPUTS = 1;
92 const uint32_t WT_OSC_OUTPUTS = 2;
94 enum { WTO_SHAPE, WTO_HSYNC, WTO_START_PHASE, WTO_PITCH_MOD };
156 double detuneSemis[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 };
157 double detuneCents[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 };
158 double oscillatorShape[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 };
159 double hardSyncRatio[8] = { 1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00 };
160 double morphIntensity[8] = { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 };
161 double panValue[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 };
163 bool doubleOscillator =
true;
174 const double VA_OSC_MAX = 20480.0;
175 const uint32_t VA_OSC_INPUTS = 0;
176 const uint32_t VA_OSC_OUTPUTS = 2;
177 const double VA_MIN_PW = 0.5;
178 const double VA_MAX_PW = 0.95;
179 const double PW_MOD_RANGE = (VA_MAX_PW - VA_MIN_PW);
180 const double HALF_PW_MOD_RANGE = PW_MOD_RANGE / 2.0;
183 enum class VAWaveform { kSawAndSquare, kSawtooth, kSquare };
184 enum { VAO_WAVE_MIX, VAO_PULSE_WIDTH, VAO_C, VAO_PITCH_MOD };
255 const double PCM_OSC_MAX = 20480.0;
256 const uint32_t SMPL_OSC_INPUTS = 0;
257 const uint32_t SMPL_OSC_OUTPUTS = 2;
258 enum { PCMO_A, PCMO_B, PCMO_C, PCMO_PITCH_MOD };
305 const double KS_OSC_MAX = 20480.0;
306 const uint32_t KS_OSC_INPUTS = 0;
307 const uint32_t KS_OSC_OUTPUTS = 2;
308 const double MAX_KSO_ATTACK_MSEC = 500.0;
309 const double MAX_KSO_HOLD_MSEC = 2000.0;
310 const double MAX_KSO_RELEASE_MSEC = 5000.0;
311 enum { KSO_OUTPUT, KSO_BODY, KSO_BITE, KSO_PLUCK_POS };
357 uint32_t moduleIndex = 0;
488 std::shared_ptr<std::array<ModSource, kNumberModSources>>
modSourceRows = std::make_shared<std::array<ModSource, kNumberModSources>>();
491 std::shared_ptr<std::array<ModDestination, kNumberModDestinations>>
modDestinationColumns = std::make_shared<std::array<ModDestination, kNumberModDestinations>>();
622 const uint32_t NOISE_OSC_OUTPUTS = 2;
625 enum class NoiseWaveform { kWhiteNoise, kPinkNoise, kGaussWhiteNoise };
656 NoiseWaveform
waveform = NoiseWaveform::kWhiteNoise;
667 const double freqModHigh = 20480.0;
668 const double freqModSemitoneRange = semitonesBetweenFreqs(
freqModLow, freqModHigh);
669 const uint32_t FILTER_AUDIO_INPUTS = 2;
670 const uint32_t FILTER_AUDIO_OUTPUTS = 2;
671 enum class FilterModel { kFirstOrder, kSVF, kKorg35, kMoog, kDiode };
672 enum { FLT_KEYTRACK, FLT_DRIVE, FLT_EG_INT, FLT_BP_INT };
673 enum { FLT1, FLT2, FLT3, FLT4 };
674 const int MOOG_SUBFILTERS = 4;
675 const int DIODE_SUBFILTERS = 4;
676 const int KORG_SUBFILTERS = 3;
677 enum class VAFilterAlgorithm {
678 kBypassFilter, kLPF1, kHPF1, kAPF1, kSVF_LP, kSVF_HP, kSVF_BP, kSVF_BS, kKorg35_LP, kKorg35_HP, kMoog_LP1, kMoog_LP2, kMoog_LP3, kMoog_LP4, kDiode_LP4
680 enum class BQFilterAlgorithm {
681 kBypassFilter, k1PLPF, k1PHPF, kLPF2, kHPF2
727 enum { kEGNormalOutput, kEGBiasedOutput, kNumEGOutputs };
728 enum class EGState { kOff, kDelay, kAttack, kHold, kDecay, kSlope, kSustain, kRelease, kShutdown };
774 uint32_t moduleIndex = 0;
815 const double FM_OSC_MAX = 20480.0;
816 const uint32_t FM_OSC_INPUTS = 0;
817 const uint32_t FM_OSC_OUTPUTS = 2;
818 enum { FMO_A, FMO_B, FMO_FEEDBACK, FMO_PITCH_MOD };
907 const double LFO_FCMOD_MAX = 200.0;
909 const double LFO_HALF_RANGE = LFO_RANGE / 2.0;
910 const double MAX_LFO_DELAY_MSEC = 5000.0;
911 const double MAX_LFO_FADEIN_MSEC = 5000.0;
914 enum class LFOWaveform {
915 kTriangle, kSin, kRampUp, kRampDown,
916 kExpRampUp, kExpRampDn, kExpTriangle, kSquare,
920 const uint32_t NUM_FMLFO_OPS = 3;
921 enum class FMLFOWaveform { kFM2, kFM3A, kFM3B };
922 enum class LFOMode { kSync, kOneShot, kFreeRun };
931 enum { LFO_SHAPE, LFO_DELAY, LFO_FADE_IN, LFO_BPMSYNC };
bool enableKeyTrack
key track flag
Definition: synthlabparams.h:713
double dryLevel_dB
dry output level in dB
Definition: synthlabparams.h:999
bool forceLoop
force the wavetable to loop at extremes
Definition: synthlabparams.h:133
const double LFO_FCMOD_MIN
Definition: synthlabparams.h:906
#define enumToInt(ENUM)
macro helper to cast a typed enum to an int
Definition: synthfunctions.h:245
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:120
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:292
double fc
parameter fc
Definition: synthlabparams.h:705
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:295
Custom parameter structure for the Exciter object for the KS Oscillator and cores.
Definition: synthlabparams.h:791
const uint32_t NOISE_OSC_INPUTS
Definition: synthlabparams.h:621
double rightDelay_mSec
right delay time
Definition: synthlabparams.h:1002
AnalogEGContour
Definition: synthlabparams.h:729
const double KS_OSC_MIN
Definition: synthlabparams.h:304
double waveformMix
[1, +???]
Definition: synthlabparams.h:242
double panValue
[-1, +1] –> [left -> right]
Definition: synthlabparams.h:894
double hardSyncRatio
[1, +???]
Definition: synthlabparams.h:67
double outputAmplitude_dB
dB
Definition: synthlabparams.h:347
double oscSpecificDetune
+/-12 semitones
Definition: synthlabparams.h:123
double filterDrive
parameter drive (distortion)
Definition: synthlabparams.h:708
Custom parameter structure for general purpose oscillators or those that don't fit into one of the ot...
Definition: synthlabparams.h:50
bool noteNumberToDecayScaling
one of two EG modulations
Definition: synthlabparams.h:757
Custom GUI control structure for the modulation matrix.
Definition: synthlabparams.h:473
EGParameters dxEGParameters
parameters for embdedded EG
Definition: synthlabparams.h:858
double outputAmplitude_dB
dB
Definition: synthlabparams.h:850
double pulseWidth_Pct
sqr wave only
Definition: synthlabparams.h:235
Custom parameter structure for moving GUI control information to the FMOperator oscillator object and...
Definition: synthlabparams.h:836
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:345
double sustainLevel
from GUI control
Definition: synthlabparams.h:769
const uint32_t MONO_INPUT
Definition: synthlabparams.h:30
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:954
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:230
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:855
double feedback_Pct
feedback as a % value
Definition: synthlabparams.h:1000
double panValue
[-1, +1]
Definition: synthlabparams.h:294
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:244
double attackTime_mSec
exciter EG
Definition: synthlabparams.h:338
bool enableChannelIntensity
to enable this mode, in addition to or instead of the source and destination intensity controls ...
Definition: synthlabparams.h:450
uint32_t channelEnable[MAX_MODULATION_CHANNELS]
channel enable on/off switches
Definition: synthlabparams.h:443
double phaseModIndex
[0, 4]
Definition: synthlabparams.h:853
Custom parameter structure for wavetable oscillators (note that several SynthLab oscillators are actu...
Definition: synthlabparams.h:111
double unisonDetuneCents
fine tune for unison
Definition: synthlabparams.h:122
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:717
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:350
double frequency_Hz
parameter fc
Definition: synthlabparams.h:951
Custom parameter structure for the VAOscillator and its ModuleCores. Notable members: ...
Definition: synthlabparams.h:220
double panValue
[-1, +1]
Definition: synthlabparams.h:353
double panValue
[-1, +1]
Definition: synthlabparams.h:129
double unisonDetuneCents
fine tune for unison
Definition: synthlabparams.h:61
double hardSyncRatio
[1, +???]
Definition: synthlabparams.h:128
void setMM_DestIntensity(uint32_t destination, double intensity)
set the destination (column) intensity control
Definition: synthlabparams.h:566
double outputAmplitude_dB
output in dB
Definition: synthlabparams.h:657
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:66
double intensity
one final intensity knob
Definition: synthlabparams.h:452
double decayLevel
from GUI control
Definition: synthlabparams.h:768
Custom parameter structure for the any of the synth EGs. This structure is designed to take care of b...
Definition: synthlabparams.h:748
double outputAmplitude_dB
dB
Definition: synthlabparams.h:236
double freqModIndex
[1, 4]
Definition: synthlabparams.h:293
bool forceLoop
force the wavetable/sample to loop at extremes
Definition: synthlabparams.h:73
Custom parameter structure for the any of the synth filters. This structure is designed to take care ...
Definition: synthlabparams.h:700
std::shared_ptr< std::array< ModSource, kNumberModSources > > modSourceRows
Definition: synthlabparams.h:488
double ampModIntensity
[0, +1]
Definition: synthlabparams.h:896
uint32_t moduleIndex
module indentifier
Definition: synthlabparams.h:72
uint32_t algorithmIndex
GUI index for KS algorithm.
Definition: synthlabparams.h:336
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:854
double curvature
from GUI control
Definition: synthlabparams.h:770
Structure that encapsulates the controls for a modulation destination as part of the modulation matri...
Definition: synthlabparams.h:410
int32_t filterIndex
filter index in GUI control
Definition: synthlabparams.h:703
Definition: synthengine.cpp:16
double fineDetune
+/-50 cents
Definition: synthlabparams.h:121
uint32_t waveIndex
the waveform string is usually the patch or WAV folder name
Definition: synthlabparams.h:279
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:282
double holdTime_mSec
exciter EG
Definition: synthlabparams.h:339
double keyTrackSemis
key tracking ratio in semitones
Definition: synthlabparams.h:714
double slopeTime_mSec
from GUI control
Definition: synthlabparams.h:762
double outputAmplitude_dB
dB
Definition: synthlabparams.h:126
double alpha
alpha is (wcT/2)
Definition: synthlabparams.h:202
const uint32_t DELAY_AUDIO_OUTPUTS
Definition: synthlabparams.h:965
double filterOutputGain_dB
parameter output gain in dB
Definition: synthlabparams.h:707
double hardSyncRatio
[1, 4]
Definition: synthlabparams.h:291
void setMM_DestHardwireIntensity(uint32_t source, uint32_t destination, double intensity)
set the hardwired intensity control that connects a source/destination pair in a routing and bypasses...
Definition: synthlabparams.h:554
void setMM_HardwiredRouting(uint32_t source, uint32_t destination, double intensity=1.0)
Helper function to set a source/destination/intensity trio that defines a hard-wired routing...
Definition: synthlabparams.h:607
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:71
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:718
double fineDetune
+/-50 cents
Definition: synthlabparams.h:846
double endLevel
from GUI control
Definition: synthlabparams.h:767
double fineDetune
+/-50 cents
Definition: synthlabparams.h:60
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:228
double panValue
[-1, +1]
Definition: synthlabparams.h:240
double shape
[-1, +1]
Definition: synthlabparams.h:70
Custom parameter structure for the PCM sample oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:275
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:287
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:131
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:58
Tiny structure to hold 1st order VA filter coefficients, to make it easier to share them across sync-...
Definition: synthlabparams.h:199
double modKnobValue[4]
mod knob values
Definition: synthlabparams.h:356
const double OSC_FMIN
Definition: synthlabparams.h:83
double decayTime_mSec
from GUI control
Definition: synthlabparams.h:761
const double VA_OSC_MIN
Definition: synthlabparams.h:173
bool channelHardwire[MAX_MODULATION_CHANNELS]
channel hardwire on/off switches
Definition: synthlabparams.h:446
double leftDelay_mSec
left delay time
Definition: synthlabparams.h:1001
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:851
EGState
Definition: synthlabparams.h:728
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:241
void setMM_ChannelIntensity(uint32_t source, uint32_t destination, double intensity)
set the channel intensity control that connects a source/destination pair in a routing ...
Definition: synthlabparams.h:540
bool analogFGN
use analog FGN filters; adds to CPU load
Definition: synthlabparams.h:710
const double FM_OSC_MIN
Definition: synthlabparams.h:814
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:773
NoiseWaveform waveform
noise wavform
Definition: synthlabparams.h:656
double bassGainComp
0.0 = no bass compensation, 1.0 = restore all bass
Definition: synthlabparams.h:709
double intensity
one final intensity knob
Definition: synthlabparams.h:392
double beta
beta value, not used
Definition: synthlabparams.h:203
double releaseTime_mSec
from GUI control
Definition: synthlabparams.h:763
uint32_t waveIndex
DX algorithm.
Definition: synthlabparams.h:841
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:346
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:238
uint32_t waveIndex
index of waveform, usually linked to GUI control
Definition: synthlabparams.h:55
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:290
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:344
bool priorityModulation
for high-priority modulator; not used in SynthLab
Definition: synthlabparams.h:454
double phaseModIndex
/ [1, +4]
Definition: synthlabparams.h:351
void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
set/clear a routing as hardwired
Definition: synthlabparams.h:526
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:845
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:239
double ampEGIntensity
[-1, +1]
Definition: synthlabparams.h:895
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:844
const uint32_t STEREO_OUTPUTS
Definition: synthlabparams.h:33
double panModIntensity
[0, +1] for external GUI control only, defaults to 1 to make mm work
Definition: synthlabparams.h:897
void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
enable/disable a routing channel
Definition: synthlabparams.h:513
uint32_t quantize
for stepped LFOs
Definition: synthlabparams.h:953
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:229
const double MAX_EG_VALUE
Definition: synthlabparams.h:731
double gainValue_dB
for per-voice gain control (not same as master MIDI volume)
Definition: synthlabparams.h:893
double outputAmplitude_dB
dB
Definition: synthlabparams.h:65
int32_t modeIndex
one shot, free run, sync
Definition: synthlabparams.h:950
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:283
DXEGContour
Definition: synthlabparams.h:730
const uint32_t DELAY_AUDIO_INPUTS
Definition: synthlabparams.h:964
std::shared_ptr< std::array< ModDestination, kNumberModDestinations > > modDestinationColumns
Definition: synthlabparams.h:491
double outputAmplitude_dB
in dB
Definition: synthlabparams.h:288
void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
set a defalt value to prevent accidental no-note events
Definition: synthlabparams.h:578
double wetLevel_dB
wet output level in dB
Definition: synthlabparams.h:998
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:245
Custom parameter structure for the DCA. This is a very simple object.
Definition: synthlabparams.h:888
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:233
bool resetToZero
reset to zero (see book)
Definition: synthlabparams.h:754
double oscSpecificDetune
+/-12 semitones
Definition: synthlabparams.h:62
Custom parameter structure for the wave sequencer module. Notable members:
Definition: synthlabparams.h:151
double ratio
FM ratio +/- 4 octaves.
Definition: synthlabparams.h:859
uint32_t waveIndex
index of waveform, usually linked to GUI control
Definition: synthlabparams.h:116
uint32_t waveIndex
waveform index in the GUI
Definition: synthlabparams.h:225
const uint32_t DCA_AUDIO_INPUTS
Definition: synthlabparams.h:867
Custom parameter structure for the NoiseOscillator object.
Definition: synthlabparams.h:641
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:69
uint32_t pluckPosition
[+1, +12]
Definition: synthlabparams.h:355
double attackTime_mSec
from GUI control
Definition: synthlabparams.h:760
double panValue
[-1, +1]
Definition: synthlabparams.h:852
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:119
double panValue
[-1, +1]
Definition: synthlabparams.h:68
const uint32_t DCA_AUDIO_OUTPUTS
Definition: synthlabparams.h:868
int32_t waveformIndex
selection index from GUI
Definition: synthlabparams.h:949
double unisonDetune
fine tune for unison
Definition: synthlabparams.h:847
double holdTime_mSec
from a GUI control
Definition: synthlabparams.h:805
const double PCM_OSC_MIN
Definition: synthlabparams.h:254
Custom parameter structure for the LFO object. Notable members:
Definition: synthlabparams.h:947
double decay
[-1, +1]
Definition: synthlabparams.h:354
Custom parameter structure for the AudioDelay object.
Definition: synthlabparams.h:979
double hardwireIntensity[MAX_MODULATION_CHANNELS]
hardwire intensity controls
Definition: synthlabparams.h:447
double defautValue
to allow max down, etc...
Definition: synthlabparams.h:453
const uint32_t MONO_OUTPUT
Definition: synthlabparams.h:31
Structure that encapsulates the controls for a modulation source as part of the modulation matrix...
Definition: synthlabparams.h:373
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:127
AudioDelayParameters & operator=(const AudioDelayParameters ¶ms)
Definition: synthlabparams.h:983
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:343
double releaseTime_mSec
from a GUI control
Definition: synthlabparams.h:806
double channelIntensity[MAX_MODULATION_CHANNELS]
channel intensity controls
Definition: synthlabparams.h:444
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:59
double outputAmplitude
parameter output gain in dB
Definition: synthlabparams.h:952
void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
mark a destination has high-priority
Definition: synthlabparams.h:593
Custom parameter structure for the Karplus-Strong oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:331
double startLevel
from GUI control
Definition: synthlabparams.h:766
int32_t egContourIndex
iundex from GUI control
Definition: synthlabparams.h:751
bool legatoMode
legato
Definition: synthlabparams.h:755
bool velocityToAttackScaling
one of two EG modulations
Definition: synthlabparams.h:756
double attackTime_mSec
from a GUI control
Definition: synthlabparams.h:804
uint32_t moduleIndex
module indentifier
Definition: synthlabparams.h:132
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:296
uint32_t moduleIndex
module ID
Definition: synthlabparams.h:955
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:130
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:898
const uint32_t STEREO_INPUTS
Definition: synthlabparams.h:32
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:284
double Q
parameter Q
Definition: synthlabparams.h:706
const uint32_t MAX_MODULATION_CHANNELS
Definition: synthconstants.h:39
const double freqModLow
Definition: synthlabparams.h:666
double freqModIndex
[1, +4]
Definition: synthlabparams.h:352
void setMM_SourceIntensity(uint32_t destination, double intensity)
set source intensity value
Definition: synthlabparams.h:500
double releaseTime_mSec
exciter EG
Definition: synthlabparams.h:340
double oscillatorShape
/ [-1, +1]
Definition: synthlabparams.h:349