SynthLab SDK
synthlabparams.h
1 #pragma once
2 
3 #include <array>
4 
5 // -----------------------------
6 // --- SynthLab SDK File --- //
7 // ----------------------------
15 // -----------------------------------------------------------------------------
16 namespace SynthLab
17 {
18  #define enumToInt(ENUM) static_cast<int>(ENUM)
19 
20  inline double semitonesBetweenFreqs(double startFrequency, double endFrequency)
21  {
22  return log2(endFrequency / startFrequency)*12.0;
23  }
24 
26 
30  const uint32_t MONO_INPUT = 1;
31  const uint32_t MONO_OUTPUT = 1;
32  const uint32_t STEREO_INPUTS = 2;
33  const uint32_t STEREO_OUTPUTS = 2;
35 
51  {
52  OscParameters() {}
53 
54  // --- bank index
55  uint32_t waveIndex = 0;
56 
57  // --- tuning
58  double octaveDetune = 0.0;
59  double coarseDetune = 0.0;
60  double fineDetune = 0.0;
61  double unisonDetuneCents = 0.0;
62  double oscSpecificDetune = 0.0;
63 
64  // --- mod and output
65  double outputAmplitude_dB = 0.0;
66  double oscillatorShape = 0.0;
67  double hardSyncRatio = 1.00;
68  double panValue = 0.00;
69  double phaseModIndex = 1.0;
70  double shape = 0.0;
71  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
72  uint32_t moduleIndex = 0;
73  bool forceLoop = false;
74  };
75 
76 
78 
82  // --- mod knobs, other knob controls
83  const double OSC_FMIN = MIDI_NOTE_0_FREQ;
84  const double OSC_FMAX = 20480.0;
85  const uint32_t OSC_INPUTS = 1; // FM audio inputs
86  const uint32_t OSC_OUTPUTS = 2;// dual-mono output
87 
88  // --- modulation min/max
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; // FM audio inputs
92  const uint32_t WT_OSC_OUTPUTS = 2;// dual-mono output
94 
110  {
111  WTOscParameters() {}
112 
113  // --- bank index
114  uint32_t waveIndex = 0;
115 
116  // --- tuning
117  double octaveDetune = 0.0;
118  double coarseDetune = 0.0;
119  double fineDetune = 0.0;
120  double unisonDetuneCents = 0.0;
121  double oscSpecificDetune = 0.0;
122 
123  // --- mod and output
124  double outputAmplitude_dB = 0.0;
125  double oscillatorShape = 0.0;
126  double hardSyncRatio = 1.00;
127  double panValue = 0.00;
128  double phaseModIndex = 1.0;
129  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
130  uint32_t moduleIndex = 0;
131  bool forceLoop = false;
132  };
133 
134 
150  {
151  WSOscParameters() {}
152 
153  // --- tuning
154  double detuneSemis[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
155  double detuneCents[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
156  double oscillatorShape[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
157  double hardSyncRatio[8] = { 1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00 }; // [1, +4]
158  double morphIntensity[8] = { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 }; // [0, +1]
159  double panValue[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
160 
161  bool doubleOscillator = true;// false;
162  int32_t soloWaveWSIndex = -1;
163  };
164 
165 
167 
171  // --- mod knobs, other knob controls
172  const double VA_OSC_MIN = MIDI_NOTE_0_FREQ;
173  const double VA_OSC_MAX = 20480.0;
174  const uint32_t VA_OSC_INPUTS = 0; // no audio inputs
175  const uint32_t VA_OSC_OUTPUTS = 2;// dual-mono output
176  const double VA_MIN_PW = 0.5;
177  const double VA_MAX_PW = 0.95;
178  const double PW_MOD_RANGE = (VA_MAX_PW - VA_MIN_PW);
179  const double HALF_PW_MOD_RANGE = PW_MOD_RANGE / 2.0;
180 
181  // --- VA Oscillator Waveforms
182  enum class VAWaveform { kSawAndSquare, kSawtooth, kSquare };
184 
197  struct VA1Coeffs
198  {
199  // --- filter coefficients
200  double alpha = 0.0;
201  double beta = 1.0;
202  };
203 
219  {
220  VAOscParameters() {}
221 
222  // --- two waveforms
223  uint32_t waveIndex = enumToInt(VAWaveform::kSawAndSquare);
224 
225  // --- detuning values
226  double octaveDetune = 0.0;
227  double coarseDetune = 0.0;
228  double fineDetune = 0.0;
229 
231  double unisonDetune = 0.0;
232 
233  double pulseWidth_Pct = 50.0;
234  double outputAmplitude_dB = 0.0;
235 
236  double oscillatorShape = 0.0;
237  double hardSyncRatio = 1.00;
238  double panValue = 0.00;
239  double phaseModIndex = 1.0;
240  double waveformMix = 0.5;
241 
242  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
243  uint32_t moduleIndex = 0;
244  };
245 
246 
248 
253  const double PCM_OSC_MAX = 20480.0;
254  const uint32_t SMPL_OSC_INPUTS = 0;
255  const uint32_t SMPL_OSC_OUTPUTS = 2;// dual-mono or stereo output
257 
273  {
274  public:
275  // --- index within bank
276  uint32_t waveIndex = 0;
277 
278  // --- detuning values
279  double octaveDetune = 0.0;
280  double coarseDetune = 0.0;
281  double fineDetune = 0.0;
282 
283  // --- this is a root-detuner for unison mode (could combine with detuneCents but would become tangled)
284  double unisonDetune = 0.0;
285  double outputAmplitude_dB = 0.0;
286 
287  double oscillatorShape = 0.0;
288  double hardSyncRatio = 1.00;
289  double phaseModIndex = 1.0;
290  double freqModIndex = 1.0;
291  double panValue = 0.0;
292  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
293  uint32_t moduleIndex = 0;
294  };
295 
297 
301  const double KS_OSC_MIN = MIDI_NOTE_0_FREQ;
302  const double KS_OSC_MAX = 20480.0;
303  const uint32_t KS_OSC_INPUTS = 0;
304  const uint32_t KS_OSC_OUTPUTS = 2;// dual-mono or stereo output
305  const double MAX_KSO_ATTACK_MSEC = 500.0;
306  const double MAX_KSO_HOLD_MSEC = 2000.0;
307  const double MAX_KSO_RELEASE_MSEC = 5000.0;
309 
328  {
329  KSOscParameters() {}
330 
331  // --- index within bank
332  uint32_t algorithmIndex = 0;
333 
334  double attackTime_mSec = 0.0;
335  double holdTime_mSec = 0.0;
336  double releaseTime_mSec = 0.0;
337 
338  // --- detuning values
339  double octaveDetune = 0.0;
340  double coarseDetune = 0.0;
341  double fineDetune = 0.0;
342  double unisonDetune = 0.0;
343  double outputAmplitude_dB = 0.0;
344 
345  double oscillatorShape = 0.0;
346  double hardSyncRatio = 1.00;
347  double phaseModIndex = 1.0;
348  double freqModIndex = 1.0;
349  double panValue = 0.0;
350  double decay = 0.9;
351  uint32_t pluckPosition = 1;
352  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
353  uint32_t moduleIndex = 0;
354  };
355 
369  struct ModSource
370  {
371  ModSource() {}
372  ModSource& operator=(const ModSource& params)
373  {
374  if (this == &params)
375  return *this;
376 
377  intensity = params.intensity;
378 
379  return *this;
380  }
381 
382  // --- fast clearing of array
383  void clear() {
384  intensity = 1.0;
385  }
386 
387  // --- intensity only
388  double intensity = 1.0;
389  };
390 
407  {
408  ModDestination() { clear(); }
409  ModDestination& operator=(const ModDestination& params)
410  {
411  if (this == &params)
412  return *this;
413 
414  memcpy(channelEnable, params.channelEnable, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
415  memcpy(channelIntensity, params.channelIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
416 
417  memcpy(channelHardwire, params.channelHardwire, MAX_MODULATION_CHANNELS * sizeof(bool));
418  memcpy(hardwireIntensity, params.hardwireIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
419 
420  intensity = params.intensity;
421  defautValue = params.defautValue;
422 
425 
426  return *this;
427  }
428 
429  // --- fast clearing of array
430  void clear() {
431  memset(channelEnable, 0, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
432  memset(channelIntensity, 0, MAX_MODULATION_CHANNELS * sizeof(double));
433  memset(channelHardwire, 0, MAX_MODULATION_CHANNELS * sizeof(bool));
434  memset(hardwireIntensity, 0, MAX_MODULATION_CHANNELS * sizeof(double));
435  intensity = 1.0;
436  }
437 
438  // --- channel enable and intensity controls
441 
444 
445  // --- use separate intensities for each channel
446  bool enableChannelIntensity = false;
447 
448  double intensity = 1.0;
449  double defautValue = 0.0;
450  bool priorityModulation = false;
451  };
452 
453 
470  {
472  ModMatrixParameters& operator=(const ModMatrixParameters& params) // need this override for collections to work
473  {
474  if (this == &params)
475  return *this;
476 
477  modSourceRows = params.modSourceRows;
479 
480  return *this;
481  }
482 
484  std::shared_ptr<std::array<ModSource, kNumberModSources>> modSourceRows = std::make_shared<std::array<ModSource, kNumberModSources>>();
485 
487  std::shared_ptr<std::array<ModDestination, kNumberModDestinations>> modDestinationColumns = std::make_shared<std::array<ModDestination, kNumberModDestinations>>();
488 
496  void setMM_SourceIntensity(uint32_t destination, double intensity)
497  {
498  modSourceRows->at(destination).intensity = intensity;
499  }
500 
509  void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
510  {
511  modDestinationColumns->at(destination).channelEnable[source] = enable;
512  }
513 
522  void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
523  {
524  modDestinationColumns->at(destination).channelHardwire[source] = enable;
525  }
526 
536  void setMM_ChannelIntensity(uint32_t source, uint32_t destination, double intensity)
537  {
538  modDestinationColumns->at(destination).channelIntensity[source] = intensity;
539  }
540 
550  void setMM_DestHardwireIntensity(uint32_t source, uint32_t destination, double intensity)
551  {
552  modDestinationColumns->at(destination).hardwireIntensity[source] = intensity;
553  }
554 
562  void setMM_DestIntensity(uint32_t destination, double intensity)
563  {
564  modDestinationColumns->at(destination).intensity = intensity;
565  }
566 
574  void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
575  {
576  modDestinationColumns->at(destination).defautValue = defaultValue;
577  }
578 
589  void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
590  {
591  modDestinationColumns->at(destination).priorityModulation = _priorityModulation;
592  }
593 
603  void setMM_HardwiredRouting(uint32_t source, uint32_t destination, double intensity = 1.0)
604  {
605  setMM_ChannelEnable(source, destination, true);
606  setMM_HardwireEnable(source, destination, true);
607  setMM_DestIntensity(destination, intensity);
608  setMM_DestHardwireIntensity(source, destination, intensity);
609  }
610  };
611 
613 
617  const uint32_t NOISE_OSC_INPUTS = 0; // no audio inputs
618  const uint32_t NOISE_OSC_OUTPUTS = 2;// dual-mono output
619 
620  // --- Noise Oscillator Waveforms
621  enum class NoiseWaveform { kWhiteNoise, kPinkNoise, kGaussWhiteNoise };
623 
638  {
640  NoiseOscillatorParameters& operator=(const NoiseOscillatorParameters& params)
641  {
642  if (this == &params)
643  return *this;
644 
645  waveform = params.waveform;
647 
648  return *this;
649  }
650 
651  // --- two waveforms
652  NoiseWaveform waveform = NoiseWaveform::kWhiteNoise;
653  double outputAmplitude_dB = 0.0;
654  };
655 
656 
658 
662  const double freqModLow = 20.0;
663  const double freqModHigh = 18000.0; // -- this is reduced from 20480.0 only for self oscillation at upper frequency range
664  const double freqModSemitoneRange = semitonesBetweenFreqs(freqModLow, freqModHigh);
665  const uint32_t FILTER_AUDIO_INPUTS = 2;
666  const uint32_t FILTER_AUDIO_OUTPUTS = 2;
667  enum class FilterModel { kFirstOrder, kSVF, kKorg35, kMoog, kDiode };
668  enum { FLT1, FLT2, FLT3, FLT4 };
669  const int MOOG_SUBFILTERS = 4;
670  const int DIODE_SUBFILTERS = 4;
671  const int KORG_SUBFILTERS = 3;
672  enum class VAFilterAlgorithm {
673  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
674  };
675  enum class BQFilterAlgorithm {
676  kBypassFilter, k1PLPF, k1PHPF, kLPF2, kHPF2
677  };
679 
680 
696  {
697  // --- use with strongly typed enums
698  int32_t filterIndex = 0;
699 
700  double fc = 1000.0;
701  double Q = 1.0;
702  double filterOutputGain_dB = 0.0;
703  double filterDrive = 1.0;
704  double bassGainComp = 0.0;
705  bool analogFGN = true;
706 
707  // --- key tracking
708  bool enableKeyTrack = false;
709  double keyTrackSemis = 0.0;
710 
711  // --- Mod Knobs and core support
712  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
713  uint32_t moduleIndex = 0;
714  };
715 
716 
718 
722  enum { kEGNormalOutput, kEGBiasedOutput, kNumEGOutputs };
723  enum class EGState { kOff, kDelay, kAttack, kHold, kDecay, kSlope, kSustain, kRelease, kShutdown };
724  enum class AnalogEGContour { kADSR, kAR }; // --- indexes match modulecore strings
725  enum class DXEGContour { kADSlSR, kADSlR }; // --- indexes match modulecore strings
726  const double MAX_EG_VALUE = 1.0;
728 
744  {
745  EGParameters() {}
746  int32_t egContourIndex = 0;
747 
748  // --- modes
749  bool resetToZero = false;
750  bool legatoMode = false;
751  bool velocityToAttackScaling = false;
753 
754  //--- ADSR times from user
755  double attackTime_mSec = 250.0;
756  double decayTime_mSec = 1000.0;
757  double slopeTime_mSec = 0.0;
758  double releaseTime_mSec = 3000.0;
759 
760  // --- for DXEG
761  double startLevel = 0.0;
762  double endLevel = 0.0;
763  double decayLevel = 0.707;
764  double sustainLevel = 0.707;
765  double curvature = 0.0;
766 
767  // --- mod knobs
768  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
769  uint32_t moduleIndex = 0; // core
770  };
771 
772 
787  {
788  ExciterParameters& operator=(const ExciterParameters& data)
789  {
790  if (this == &data)
791  return *this;
792 
796  return *this;
797  }
798 
799  double attackTime_mSec = 1000.0;
800  double holdTime_mSec = 5000.0;
801  double releaseTime_mSec = 2500.0;
802  };
803 
805 
809  const double FM_OSC_MIN = MIDI_NOTE_0_FREQ;
810  const double FM_OSC_MAX = 20480.0;
811  const uint32_t FM_OSC_INPUTS = 0; // FM audio inputs
812  const uint32_t FM_OSC_OUTPUTS = 2;// dual-mono output
814 
831  {
833 
834  // --- bank index
835  uint32_t waveIndex = 0;
836 
837  // --- tuning
838  double octaveDetune = 0.0;
839  double coarseDetune = 0.0;
840  double fineDetune = 0.0;
841  double unisonDetune = 0.0;
842 
843  // --- mod and output
844  double outputAmplitude_dB = 0.0;
845  double oscillatorShape = 0.0;
846  double panValue = 0.00;
847  double phaseModIndex = 0.0;
848  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
849  uint32_t moduleIndex = 0;
850 
851  // --- FM Operator only
853  double ratio = 1.0;
854  };
855 
857 
861  const uint32_t DCA_AUDIO_INPUTS = 2; // stereo/dual mono
862  const uint32_t DCA_AUDIO_OUTPUTS = 2;// stereo
864 
865 
883  {
884  DCAParameters() {}
885 
886  // --- individual parameters
887  double gainValue_dB = 0.0;
888  double panValue = 0.0;
889  double ampEGIntensity = 1.0;
890  double ampModIntensity = 1.0;
891  double panModIntensity = 1.0;
892  uint32_t moduleIndex = 0;
893  };
894 
896 
900  const double LFO_FCMOD_MIN = 0.02;
901  const double LFO_FCMOD_MAX = 200.0;
902  const double LFO_RANGE = ((LFO_FCMOD_MAX - LFO_FCMOD_MIN));
903  const double LFO_HALF_RANGE = LFO_RANGE / 2.0;
904  const double MAX_LFO_DELAY_MSEC = 5000.0;
905  const double MAX_LFO_FADEIN_MSEC = 5000.0;
906 
907  // --- 8 basic waveforms, plus exensions
908  enum class LFOWaveform {
909  kTriangle, kSin, kRampUp, kRampDown,
910  kExpRampUp, kExpRampDn, kExpTriangle, kSquare,
911  kRSH, kPluck
912  };
913  // --- 3 fms
914  const uint32_t NUM_FMLFO_OPS = 3;
915  enum class FMLFOWaveform { kFM2, kFM3A, kFM3B };
916  enum class LFOMode { kSync, kOneShot, kFreeRun };
917  // --- array locations in mod output
918  enum {
919  kLFONormalOutput,
920  kLFOInvertedOutput,
921  kUnipolarFromMin,
922  kUnipolarFromMax,
923  kNumLFOOutputs
924  };
926 
941  {
942  int32_t waveformIndex = 0;
943  int32_t modeIndex = 0;
944  double frequency_Hz = 0.5;
945  double outputAmplitude = 1.0;
946  uint32_t quantize = 0;
947  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
948  uint32_t moduleIndex = 0;
949  };
950 
951 
953 
957  const uint32_t DELAY_AUDIO_INPUTS = 2;
958  const uint32_t DELAY_AUDIO_OUTPUTS = 2;
960 
973  {
976  AudioDelayParameters& operator=(const AudioDelayParameters& params) // need this override for collections to work
977  {
978  if (this == &params)
979  return *this;
980 
981  wetLevel_dB = params.wetLevel_dB;
982  dryLevel_dB = params.dryLevel_dB;
983  feedback_Pct = params.feedback_Pct;
986 
987  return *this;
988  }
989 
990  // --- individual parameters
991  double wetLevel_dB = -3.0;
992  double dryLevel_dB = -3.0;
993  double feedback_Pct = 0.0;
994  double leftDelay_mSec = 2000.0;
995  double rightDelay_mSec = 2000.0;
996  };
997 } // namespace
998 
bool enableKeyTrack
key track flag
Definition: synthlabparams.h:708
double dryLevel_dB
dry output level in dB
Definition: synthlabparams.h:992
bool forceLoop
force the wavetable to loop at extremes
Definition: synthlabparams.h:131
const double LFO_FCMOD_MIN
Definition: synthlabparams.h:900
#define enumToInt(ENUM)
macro helper to cast a typed enum to an int
Definition: synthfunctions.h:251
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:118
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:289
double fc
parameter fc
Definition: synthlabparams.h:700
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:848
const double FM_OSC_MAX
Definition: synthlabparams.h:810
Custom parameter structure for the Exciter object for the KS Oscillator and cores.
Definition: synthlabparams.h:786
const uint32_t NOISE_OSC_INPUTS
Definition: synthlabparams.h:617
double rightDelay_mSec
right delay time
Definition: synthlabparams.h:995
AnalogEGContour
Definition: synthlabparams.h:724
const double KS_OSC_MIN
Definition: synthlabparams.h:301
double waveformMix
[1, +???]
Definition: synthlabparams.h:240
double panValue
[-1, +1] –> [left -> right]
Definition: synthlabparams.h:888
double hardSyncRatio
[1, +???]
Definition: synthlabparams.h:67
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:712
double outputAmplitude_dB
dB
Definition: synthlabparams.h:343
double oscSpecificDetune
+/-12 semitones
Definition: synthlabparams.h:121
double filterDrive
parameter drive (distortion)
Definition: synthlabparams.h:703
Custom parameter structure for general purpose oscillators or those that don&#39;t fit into one of the ot...
Definition: synthlabparams.h:50
bool noteNumberToDecayScaling
one of two EG modulations
Definition: synthlabparams.h:752
Custom GUI control structure for the modulation matrix.
Definition: synthlabparams.h:469
EGParameters dxEGParameters
parameters for embdedded EG
Definition: synthlabparams.h:852
double outputAmplitude_dB
dB
Definition: synthlabparams.h:844
const uint32_t SMPL_OSC_OUTPUTS
Definition: synthlabparams.h:255
double pulseWidth_Pct
sqr wave only
Definition: synthlabparams.h:233
Custom parameter structure for moving GUI control information to the FMOperator oscillator object and...
Definition: synthlabparams.h:830
bool channelHardwire[MAX_MODULATION_CHANNELS]
channel hardwire on/off switches
Definition: synthlabparams.h:442
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:341
uint32_t channelEnable[MAX_MODULATION_CHANNELS]
channel enable on/off switches
Definition: synthlabparams.h:439
double sustainLevel
from GUI control
Definition: synthlabparams.h:764
const uint32_t MONO_INPUT
Definition: synthlabparams.h:30
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:228
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:849
double feedback_Pct
feedback as a % value
Definition: synthlabparams.h:993
double panValue
[-1, +1]
Definition: synthlabparams.h:291
double hardwireIntensity[MAX_MODULATION_CHANNELS]
hardwire intensity controls
Definition: synthlabparams.h:443
const double MAX_KSO_HOLD_MSEC
Definition: synthlabparams.h:306
double attackTime_mSec
exciter EG
Definition: synthlabparams.h:334
bool enableChannelIntensity
to enable this mode, in addition to or instead of the source and destination intensity controls ...
Definition: synthlabparams.h:446
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:292
std::shared_ptr< std::array< ModSource, kNumberModSources > > modSourceRows
Definition: synthlabparams.h:484
double phaseModIndex
[0, 4]
Definition: synthlabparams.h:847
const double OSC_FMAX
Definition: synthlabparams.h:84
Custom parameter structure for wavetable oscillators (note that several SynthLab oscillators are actu...
Definition: synthlabparams.h:109
double unisonDetuneCents
fine tune for unison
Definition: synthlabparams.h:120
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:346
double frequency_Hz
parameter fc
Definition: synthlabparams.h:944
Custom parameter structure for the VAOscillator and its ModuleCores. Notable members: ...
Definition: synthlabparams.h:218
double panValue
[-1, +1]
Definition: synthlabparams.h:349
double panValue
[-1, +1]
Definition: synthlabparams.h:127
double unisonDetuneCents
fine tune for unison
Definition: synthlabparams.h:61
double hardSyncRatio
[1, +???]
Definition: synthlabparams.h:126
void setMM_DestIntensity(uint32_t destination, double intensity)
set the destination (column) intensity control
Definition: synthlabparams.h:562
const uint32_t WT_OSC_OUTPUTS
Definition: synthlabparams.h:92
double outputAmplitude_dB
output in dB
Definition: synthlabparams.h:653
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:66
double intensity
one final intensity knob
Definition: synthlabparams.h:448
double decayLevel
from GUI control
Definition: synthlabparams.h:763
Custom parameter structure for the any of the synth EGs. This structure is designed to take care of b...
Definition: synthlabparams.h:743
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:129
double outputAmplitude_dB
dB
Definition: synthlabparams.h:234
double freqModIndex
[1, 4]
Definition: synthlabparams.h:290
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:695
double ampModIntensity
[0, +1]
Definition: synthlabparams.h:890
uint32_t moduleIndex
module indentifier
Definition: synthlabparams.h:72
uint32_t algorithmIndex
GUI index for KS algorithm.
Definition: synthlabparams.h:332
double curvature
from GUI control
Definition: synthlabparams.h:765
Structure that encapsulates the controls for a modulation destination as part of the modulation matri...
Definition: synthlabparams.h:406
int32_t filterIndex
filter index in GUI control
Definition: synthlabparams.h:698
Definition: addosccore.cpp:4
double fineDetune
+/-50 cents
Definition: synthlabparams.h:119
const double WT_OSC_MIN
Definition: synthlabparams.h:89
const double MAX_KSO_ATTACK_MSEC
Definition: synthlabparams.h:305
uint32_t waveIndex
the waveform string is usually the patch or WAV folder name
Definition: synthlabparams.h:276
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:279
double holdTime_mSec
exciter EG
Definition: synthlabparams.h:335
double keyTrackSemis
key tracking ratio in semitones
Definition: synthlabparams.h:709
double slopeTime_mSec
from GUI control
Definition: synthlabparams.h:757
double modKnobValue[4]
mod knob values
Definition: synthlabparams.h:352
double outputAmplitude_dB
dB
Definition: synthlabparams.h:124
double alpha
alpha is (wcT/2)
Definition: synthlabparams.h:200
const uint32_t DELAY_AUDIO_OUTPUTS
Definition: synthlabparams.h:958
double filterOutputGain_dB
parameter output gain in dB
Definition: synthlabparams.h:702
double hardSyncRatio
[1, 4]
Definition: synthlabparams.h:288
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:550
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:603
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:71
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:713
double fineDetune
+/-50 cents
Definition: synthlabparams.h:840
double endLevel
from GUI control
Definition: synthlabparams.h:762
double fineDetune
+/-50 cents
Definition: synthlabparams.h:60
double channelIntensity[MAX_MODULATION_CHANNELS]
channel intensity controls
Definition: synthlabparams.h:440
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:226
double panValue
[-1, +1]
Definition: synthlabparams.h:238
double shape
[-1, +1]
Definition: synthlabparams.h:70
Custom parameter structure for the PCM sample oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:272
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:284
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:197
const double OSC_FMIN
Definition: synthlabparams.h:83
double decayTime_mSec
from GUI control
Definition: synthlabparams.h:756
const double VA_OSC_MIN
Definition: synthlabparams.h:172
double leftDelay_mSec
left delay time
Definition: synthlabparams.h:994
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:845
const uint32_t SMPL_OSC_INPUTS
Definition: synthlabparams.h:254
EGState
Definition: synthlabparams.h:723
const uint32_t OSC_INPUTS
Definition: synthlabparams.h:85
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:239
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:536
bool analogFGN
use analog FGN filters; adds to CPU load
Definition: synthlabparams.h:705
const double FM_OSC_MIN
Definition: synthlabparams.h:809
NoiseWaveform waveform
noise wavform
Definition: synthlabparams.h:652
double bassGainComp
0.0 = no bass compensation, 1.0 = restore all bass
Definition: synthlabparams.h:704
const double KS_OSC_MAX
Definition: synthlabparams.h:302
const uint32_t FM_OSC_OUTPUTS
Definition: synthlabparams.h:812
double intensity
one final intensity knob
Definition: synthlabparams.h:388
double beta
beta value, not used
Definition: synthlabparams.h:201
double releaseTime_mSec
from GUI control
Definition: synthlabparams.h:758
uint32_t waveIndex
DX algorithm.
Definition: synthlabparams.h:835
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:342
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:236
uint32_t waveIndex
index of waveform, usually linked to GUI control
Definition: synthlabparams.h:55
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:287
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:340
bool priorityModulation
for high-priority modulator; not used in SynthLab
Definition: synthlabparams.h:450
double phaseModIndex
/ [1, +4]
Definition: synthlabparams.h:347
void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
set/clear a routing as hardwired
Definition: synthlabparams.h:522
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:839
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:237
double ampEGIntensity
[-1, +1]
Definition: synthlabparams.h:889
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:838
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:891
void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
enable/disable a routing channel
Definition: synthlabparams.h:509
uint32_t quantize
for stepped LFOs
Definition: synthlabparams.h:946
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:227
const double MAX_EG_VALUE
Definition: synthlabparams.h:726
double gainValue_dB
for per-voice gain control (not same as master MIDI volume)
Definition: synthlabparams.h:887
double outputAmplitude_dB
dB
Definition: synthlabparams.h:65
int32_t modeIndex
one shot, free run, sync
Definition: synthlabparams.h:943
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:280
const double MIDI_NOTE_0_FREQ
Definition: synthconstants.h:621
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:947
DXEGContour
Definition: synthlabparams.h:725
const uint32_t DELAY_AUDIO_INPUTS
Definition: synthlabparams.h:957
double outputAmplitude_dB
in dB
Definition: synthlabparams.h:285
void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
set a defalt value to prevent accidental no-note events
Definition: synthlabparams.h:574
double wetLevel_dB
wet output level in dB
Definition: synthlabparams.h:991
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:243
Custom parameter structure for the DCA. This is a very simple object.
Definition: synthlabparams.h:882
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:231
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:768
bool resetToZero
reset to zero (see book)
Definition: synthlabparams.h:749
double oscSpecificDetune
+/-12 semitones
Definition: synthlabparams.h:62
Custom parameter structure for the wave sequencer module. Notable members:
Definition: synthlabparams.h:149
double ratio
FM ratio +/- 4 octaves.
Definition: synthlabparams.h:853
uint32_t waveIndex
index of waveform, usually linked to GUI control
Definition: synthlabparams.h:114
uint32_t waveIndex
waveform index in the GUI
Definition: synthlabparams.h:223
const uint32_t DCA_AUDIO_INPUTS
Definition: synthlabparams.h:861
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:242
Custom parameter structure for the NoiseOscillator object.
Definition: synthlabparams.h:637
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:69
uint32_t pluckPosition
[+1, +12]
Definition: synthlabparams.h:351
double attackTime_mSec
from GUI control
Definition: synthlabparams.h:755
double panValue
[-1, +1]
Definition: synthlabparams.h:846
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:117
double panValue
[-1, +1]
Definition: synthlabparams.h:68
const uint32_t DCA_AUDIO_OUTPUTS
Definition: synthlabparams.h:862
int32_t waveformIndex
selection index from GUI
Definition: synthlabparams.h:942
double unisonDetune
fine tune for unison
Definition: synthlabparams.h:841
double holdTime_mSec
from a GUI control
Definition: synthlabparams.h:800
const double PCM_OSC_MIN
Definition: synthlabparams.h:252
Custom parameter structure for the LFO object. Notable members:
Definition: synthlabparams.h:940
double decay
[-1, +1]
Definition: synthlabparams.h:350
Custom parameter structure for the AudioDelay object.
Definition: synthlabparams.h:972
const double MAX_KSO_RELEASE_MSEC
Definition: synthlabparams.h:307
const uint32_t OSC_OUTPUTS
Definition: synthlabparams.h:86
double defautValue
to allow max down, etc...
Definition: synthlabparams.h:449
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:369
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:125
AudioDelayParameters & operator=(const AudioDelayParameters &params)
Definition: synthlabparams.h:976
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:339
double releaseTime_mSec
from a GUI control
Definition: synthlabparams.h:801
const double WT_OSC_MAX
Definition: synthlabparams.h:90
const uint32_t FM_OSC_INPUTS
Definition: synthlabparams.h:811
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:59
double outputAmplitude
parameter output gain in dB
Definition: synthlabparams.h:945
void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
mark a destination has high-priority
Definition: synthlabparams.h:589
Custom parameter structure for the Karplus-Strong oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:327
double startLevel
from GUI control
Definition: synthlabparams.h:761
int32_t egContourIndex
iundex from GUI control
Definition: synthlabparams.h:746
std::shared_ptr< std::array< ModDestination, kNumberModDestinations > > modDestinationColumns
Definition: synthlabparams.h:487
bool legatoMode
legato
Definition: synthlabparams.h:750
bool velocityToAttackScaling
one of two EG modulations
Definition: synthlabparams.h:751
double attackTime_mSec
from a GUI control
Definition: synthlabparams.h:799
uint32_t moduleIndex
module indentifier
Definition: synthlabparams.h:130
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:293
const uint32_t WT_OSC_INPUTS
Definition: synthlabparams.h:91
uint32_t moduleIndex
module ID
Definition: synthlabparams.h:948
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:128
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:892
const uint32_t KS_OSC_OUTPUTS
Definition: synthlabparams.h:304
const double PCM_OSC_MAX
Definition: synthlabparams.h:253
const uint32_t STEREO_INPUTS
Definition: synthlabparams.h:32
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:281
double Q
parameter Q
Definition: synthlabparams.h:701
const uint32_t MAX_MODULATION_CHANNELS
Definition: synthconstants.h:39
const double freqModLow
Definition: synthlabparams.h:662
double freqModIndex
[1, +4]
Definition: synthlabparams.h:348
void setMM_SourceIntensity(uint32_t destination, double intensity)
set source intensity value
Definition: synthlabparams.h:496
const uint32_t KS_OSC_INPUTS
Definition: synthlabparams.h:303
double releaseTime_mSec
exciter EG
Definition: synthlabparams.h:336
double oscillatorShape
/ [-1, +1]
Definition: synthlabparams.h:345