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
93 
94  enum { WTO_SHAPE, WTO_HSYNC, WTO_START_PHASE, WTO_PITCH_MOD };
96 
112  {
113  WTOscParameters() {}
114 
115  // --- bank index
116  uint32_t waveIndex = 0;
117 
118  // --- tuning
119  double octaveDetune = 0.0;
120  double coarseDetune = 0.0;
121  double fineDetune = 0.0;
122  double unisonDetuneCents = 0.0;
123  double oscSpecificDetune = 0.0;
124 
125  // --- mod and output
126  double outputAmplitude_dB = 0.0;
127  double oscillatorShape = 0.0;
128  double hardSyncRatio = 1.00;
129  double panValue = 0.00;
130  double phaseModIndex = 1.0;
131  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
132  uint32_t moduleIndex = 0;
133  bool forceLoop = false;
134  };
135 
136 
152  {
153  WSOscParameters() {}
154 
155  // --- tuning
156  double detuneSemis[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
157  double detuneCents[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
158  double oscillatorShape[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
159  double hardSyncRatio[8] = { 1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00 }; // [1, +4]
160  double morphIntensity[8] = { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 }; // [0, +1]
161  double panValue[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
162 
163  bool doubleOscillator = true;// false;
164  };
165 
166 
168 
172  // --- mod knobs, other knob controls
173  const double VA_OSC_MIN = MIDI_NOTE_0_FREQ;
174  const double VA_OSC_MAX = 20480.0;
175  const uint32_t VA_OSC_INPUTS = 0; // no audio inputs
176  const uint32_t VA_OSC_OUTPUTS = 2;// dual-mono output
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;
181 
182  // --- VA Oscillator Waveforms
183  enum class VAWaveform { kSawAndSquare, kSawtooth, kSquare };
184  enum { VAO_WAVE_MIX, VAO_PULSE_WIDTH, VAO_C, VAO_PITCH_MOD };
186 
199  struct VA1Coeffs
200  {
201  // --- filter coefficients
202  double alpha = 0.0;
203  double beta = 1.0;
204  };
205 
221  {
222  VAOscParameters() {}
223 
224  // --- two waveforms
225  uint32_t waveIndex = enumToInt(VAWaveform::kSawAndSquare);
226 
227  // --- detuning values
228  double octaveDetune = 0.0;
229  double coarseDetune = 0.0;
230  double fineDetune = 0.0;
231 
233  double unisonDetune = 0.0;
234 
235  double pulseWidth_Pct = 50.0;
236  double outputAmplitude_dB = 0.0;
237 
238  double oscillatorShape = 0.0;
239  double hardSyncRatio = 1.00;
240  double panValue = 0.00;
241  double phaseModIndex = 1.0;
242  double waveformMix = 0.5;
243 
244  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
245  uint32_t moduleIndex = 0;
246  };
247 
248 
250 
254  const double PCM_OSC_MIN = MIDI_NOTE_0_FREQ;
255  const double PCM_OSC_MAX = 20480.0;
256  const uint32_t SMPL_OSC_INPUTS = 0;
257  const uint32_t SMPL_OSC_OUTPUTS = 2;// dual-mono or stereo output
258  enum { PCMO_A, PCMO_B, PCMO_C, PCMO_PITCH_MOD };
260 
276  {
277  public:
278  // --- index within bank
279  uint32_t waveIndex = 0;
280 
281  // --- detuning values
282  double octaveDetune = 0.0;
283  double coarseDetune = 0.0;
284  double fineDetune = 0.0;
285 
286  // --- this is a root-detuner for unison mode (could combine with detuneCents but would become tangled)
287  double unisonDetune = 0.0;
288  double outputAmplitude_dB = 0.0;
289 
290  double oscillatorShape = 0.0;
291  double hardSyncRatio = 1.00;
292  double phaseModIndex = 1.0;
293  double freqModIndex = 1.0;
294  double panValue = 0.0;
295  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
296  uint32_t moduleIndex = 0;
297  };
298 
300 
304  const double KS_OSC_MIN = MIDI_NOTE_0_FREQ;
305  const double KS_OSC_MAX = 20480.0;
306  const uint32_t KS_OSC_INPUTS = 0;
307  const uint32_t KS_OSC_OUTPUTS = 2;// dual-mono or stereo output
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 };
313 
332  {
333  KSOscParameters() {}
334 
335  // --- index within bank
336  uint32_t algorithmIndex = 0;
337 
338  double attackTime_mSec = 0.0;
339  double holdTime_mSec = 0.0;
340  double releaseTime_mSec = 0.0;
341 
342  // --- detuning values
343  double octaveDetune = 0.0;
344  double coarseDetune = 0.0;
345  double fineDetune = 0.0;
346  double unisonDetune = 0.0;
347  double outputAmplitude_dB = 0.0;
348 
349  double oscillatorShape = 0.0;
350  double hardSyncRatio = 1.00;
351  double phaseModIndex = 1.0;
352  double freqModIndex = 1.0;
353  double panValue = 0.0;
354  double decay = 0.9;
355  uint32_t pluckPosition = 1.0;
356  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
357  uint32_t moduleIndex = 0;
358  };
359 
373  struct ModSource
374  {
375  ModSource() {}
376  ModSource& operator=(const ModSource& params)
377  {
378  if (this == &params)
379  return *this;
380 
381  intensity = params.intensity;
382 
383  return *this;
384  }
385 
386  // --- fast clearing of array
387  void clear() {
388  intensity = 1.0;
389  }
390 
391  // --- intensity only
392  double intensity = 1.0;
393  };
394 
411  {
412  ModDestination() { clear(); }
413  ModDestination& operator=(const ModDestination& params)
414  {
415  if (this == &params)
416  return *this;
417 
418  memcpy(channelEnable, params.channelEnable, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
419  memcpy(channelIntensity, params.channelIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
420 
421  memcpy(channelHardwire, params.channelHardwire, MAX_MODULATION_CHANNELS * sizeof(bool));
422  memcpy(hardwireIntensity, params.hardwireIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
423 
424  intensity = params.intensity;
425  defautValue = params.defautValue;
426 
429 
430  return *this;
431  }
432 
433  // --- fast clearing of array
434  void clear() {
435  memset(channelEnable, 0, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
436  memset(channelIntensity, 0, MAX_MODULATION_CHANNELS * sizeof(double));
437  memset(channelHardwire, 0, MAX_MODULATION_CHANNELS * sizeof(double));
438  memset(hardwireIntensity, 1, MAX_MODULATION_CHANNELS * sizeof(bool));
439  intensity = 1.0;
440  }
441 
442  // --- channel enable and intensity controls
445 
448 
449  // --- use separate intensities for each channel
450  bool enableChannelIntensity = false;
451 
452  double intensity = 1.0;
453  double defautValue = 0.0;
454  bool priorityModulation = false;
455  };
456 
457 
474  {
476  ModMatrixParameters& operator=(const ModMatrixParameters& params) // need this override for collections to work
477  {
478  if (this == &params)
479  return *this;
480 
481  modSourceRows = params.modSourceRows;
483 
484  return *this;
485  }
486 
488  std::shared_ptr<std::array<ModSource, kNumberModSources>> modSourceRows = std::make_shared<std::array<ModSource, kNumberModSources>>();
489 
491  std::shared_ptr<std::array<ModDestination, kNumberModDestinations>> modDestinationColumns = std::make_shared<std::array<ModDestination, kNumberModDestinations>>();
492 
500  void setMM_SourceIntensity(uint32_t destination, double intensity)
501  {
502  modSourceRows->at(destination).intensity = intensity;
503  }
504 
513  void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
514  {
515  modDestinationColumns->at(destination).channelEnable[source] = enable;
516  }
517 
526  void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
527  {
528  modDestinationColumns->at(destination).channelHardwire[source] = enable;
529  }
530 
540  void setMM_ChannelIntensity(uint32_t source, uint32_t destination, double intensity)
541  {
542  modDestinationColumns->at(destination).channelIntensity[source] = intensity;
543  }
544 
554  void setMM_DestHardwireIntensity(uint32_t source, uint32_t destination, double intensity)
555  {
556  modDestinationColumns->at(destination).hardwireIntensity[source] = intensity;
557  }
558 
566  void setMM_DestIntensity(uint32_t destination, double intensity)
567  {
568  modDestinationColumns->at(destination).intensity = intensity;
569  }
570 
578  void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
579  {
580  modDestinationColumns->at(destination).defautValue = defaultValue;
581  }
582 
593  void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
594  {
595  modDestinationColumns->at(destination).priorityModulation = _priorityModulation;
596  }
597 
607  void setMM_HardwiredRouting(uint32_t source, uint32_t destination, double intensity = 1.0)
608  {
609  setMM_ChannelEnable(source, destination, true);
610  setMM_HardwireEnable(source, destination, true);
611  setMM_DestIntensity(destination, intensity);
612  setMM_DestHardwireIntensity(source, destination, intensity);
613  }
614  };
615 
617 
621  const uint32_t NOISE_OSC_INPUTS = 0; // no audio inputs
622  const uint32_t NOISE_OSC_OUTPUTS = 2;// dual-mono output
623 
624  // --- Noise Oscillator Waveforms
625  enum class NoiseWaveform { kWhiteNoise, kPinkNoise, kGaussWhiteNoise };
627 
642  {
644  NoiseOscillatorParameters& operator=(const NoiseOscillatorParameters& params)
645  {
646  if (this == &params)
647  return *this;
648 
649  waveform = params.waveform;
651 
652  return *this;
653  }
654 
655  // --- two waveforms
656  NoiseWaveform waveform = NoiseWaveform::kWhiteNoise;
657  double outputAmplitude_dB = 0.0;
658  };
659 
660 
662 
666  const double freqModLow = 20.0;
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
679  };
680  enum class BQFilterAlgorithm {
681  kBypassFilter, k1PLPF, k1PHPF, kLPF2, kHPF2
682  };
684 
685 
701  {
702  // --- use with strongly typed enums
703  int32_t filterIndex = 0;
704 
705  double fc = 1000.0;
706  double Q = 1.0;
707  double filterOutputGain_dB = 0.0;
708  double filterDrive = 1.0;
709  double bassGainComp = 0.0;
710  bool analogFGN = true;
711 
712  // --- key tracking
713  bool enableKeyTrack = false;
714  double keyTrackSemis = 0.0;
715 
716  // --- Mod Knobs and core support
717  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
718  uint32_t moduleIndex = 0;
719  };
720 
721 
723 
727  enum { kEGNormalOutput, kEGBiasedOutput, kNumEGOutputs };
728  enum class EGState { kOff, kDelay, kAttack, kHold, kDecay, kSlope, kSustain, kRelease, kShutdown };
729  enum class AnalogEGContour { kADSR, kAR }; // --- indexes match modulecore strings
730  enum class DXEGContour { kADSlSR, kADSlR }; // --- indexes match modulecore strings
731  const double MAX_EG_VALUE = 1.0;
733 
749  {
750  EGParameters() {}
751  int32_t egContourIndex = 0;
752 
753  // --- modes
754  bool resetToZero = false;
755  bool legatoMode = false;
756  bool velocityToAttackScaling = false;
758 
759  //--- ADSR times from user
760  double attackTime_mSec = 250.0;
761  double decayTime_mSec = 1000.0;
762  double slopeTime_mSec = 0.0;
763  double releaseTime_mSec = 3000.0;
764 
765  // --- for DXEG
766  double startLevel = 0.0;
767  double endLevel = 0.0;
768  double decayLevel = 0.707;
769  double sustainLevel = 0.707;
770  double curvature = 0.0;
771 
772  // --- mod knobs
773  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
774  uint32_t moduleIndex = 0; // core
775  };
776 
777 
792  {
793  ExciterParameters& operator=(const ExciterParameters& data)
794  {
795  if (this == &data)
796  return *this;
797 
801  return *this;
802  }
803 
804  double attackTime_mSec = 1000.0;
805  double holdTime_mSec = 5000.0;
806  double releaseTime_mSec = 2500.0;
807  };
808 
810 
814  const double FM_OSC_MIN = MIDI_NOTE_0_FREQ;
815  const double FM_OSC_MAX = 20480.0;
816  const uint32_t FM_OSC_INPUTS = 0; // FM audio inputs
817  const uint32_t FM_OSC_OUTPUTS = 2;// dual-mono output
818  enum { FMO_A, FMO_B, FMO_FEEDBACK, FMO_PITCH_MOD };
820 
837  {
839 
840  // --- bank index
841  uint32_t waveIndex = 0;
842 
843  // --- tuning
844  double octaveDetune = 0.0;
845  double coarseDetune = 0.0;
846  double fineDetune = 0.0;
847  double unisonDetune = 0.0;
848 
849  // --- mod and output
850  double outputAmplitude_dB = 0.0;
851  double oscillatorShape = 0.0;
852  double panValue = 0.00;
853  double phaseModIndex = 0.0;
854  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
855  uint32_t moduleIndex = 0;
856 
857  // --- FM Operator only
859  double ratio = 1.0;
860  };
861 
863 
867  const uint32_t DCA_AUDIO_INPUTS = 2; // stereo/dual mono
868  const uint32_t DCA_AUDIO_OUTPUTS = 2;// stereo
870 
871 
889  {
890  DCAParameters() {}
891 
892  // --- individual parameters
893  double gainValue_dB = 0.0;
894  double panValue = 0.0;
895  double ampEGIntensity = 1.0;
896  double ampModIntensity = 1.0;
897  double panModIntensity = 1.0;
898  uint32_t moduleIndex = 0;
899  };
900 
902 
906  const double LFO_FCMOD_MIN = 0.02;
907  const double LFO_FCMOD_MAX = 200.0;
908  const double LFO_RANGE = ((LFO_FCMOD_MAX - LFO_FCMOD_MIN));
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;
912 
913  // --- 8 basic waveforms, plus exensions
914  enum class LFOWaveform {
915  kTriangle, kSin, kRampUp, kRampDown,
916  kExpRampUp, kExpRampDn, kExpTriangle, kSquare,
917  kRSH, kPluck
918  };
919  // --- 3 fms
920  const uint32_t NUM_FMLFO_OPS = 3;
921  enum class FMLFOWaveform { kFM2, kFM3A, kFM3B };
922  enum class LFOMode { kSync, kOneShot, kFreeRun };
923  // --- array locations in mod output
924  enum {
925  kLFONormalOutput,
926  kLFOInvertedOutput,
927  kUnipolarFromMin,
928  kUnipolarFromMax,
929  kNumLFOOutputs
930  };
931  enum { LFO_SHAPE, LFO_DELAY, LFO_FADE_IN, LFO_BPMSYNC };
933 
948  {
949  int32_t waveformIndex = 0;
950  int32_t modeIndex = 0;
951  double frequency_Hz = 0.5;
952  double outputAmplitude = 1.0;
953  uint32_t quantize = 0;
954  double modKnobValue[4] = { 0.5, 0.0, 0.0, 0.0 };
955  uint32_t moduleIndex = 0;
956  };
957 
958 
960 
964  const uint32_t DELAY_AUDIO_INPUTS = 2;
965  const uint32_t DELAY_AUDIO_OUTPUTS = 2;
967 
980  {
983  AudioDelayParameters& operator=(const AudioDelayParameters& params) // need this override for collections to work
984  {
985  if (this == &params)
986  return *this;
987 
988  wetLevel_dB = params.wetLevel_dB;
989  dryLevel_dB = params.dryLevel_dB;
990  feedback_Pct = params.feedback_Pct;
993 
994  return *this;
995  }
996 
997  // --- individual parameters
998  double wetLevel_dB = -3.0;
999  double dryLevel_dB = -3.0;
1000  double feedback_Pct = 0.0;
1001  double leftDelay_mSec = 2000.0;
1002  double rightDelay_mSec = 2000.0;
1003  };
1004 } // namespace
1005 
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&#39;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 &params)
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