SynthLab SDK
synthlabparams.h
1 #pragma once
2 
3 //#include "synthfunctions.h"
4 #include <array>
5 
6 namespace SynthLab
7 {
8  #define enumToInt(ENUM) static_cast<int>(ENUM)
9 
10  inline double semitonesBetweenFreqs(double startFrequency, double endFrequency)
11  {
12  return log2(endFrequency / startFrequency)*12.0;
13  }
14 
15 
17 
21  // --- mod knobs, other knob controls
22  const double OSC_FMIN = MIDI_NOTE_0_FREQ;
23  const double OSC_FMAX = 20480.0;
24 
25  // --- modulation min/max
26  const double WT_OSC_MIN = MIDI_NOTE_0_FREQ;
27  const double WT_OSC_MAX = 20480.0;
28  const uint32_t WT_OSC_INPUTS = 1; // FM audio inputs
29  const uint32_t WT_OSC_OUTPUTS = 2;// dual-mono output
30 
31  enum { WTO_SHAPE, WTO_HSYNC, WTO_START_PHASE, WTO_PITCH_MOD };
33 
34 
35 
51  {
52  WTOscParameters() {}
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 modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
71  uint32_t moduleIndex = 0;
72  bool forceLoop = false;
73  };
74 
75 
91  {
92  WSOscParameters() {}
93 
94  // --- tuning
95  double detuneSemis[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
96  double detuneCents[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // --- fine tune for unison
97  double oscillatorShape[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
98  double hardSyncRatio[8] = { 1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00 }; // [1, +4]
99  double morphIntensity[8] = { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 }; // [0, +1]
100  double panValue[8] = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 }; // [-1, +1]
101 
102  bool doubleOscillator = true;// false;
103  };
104 
105 
107 
111  // --- mod knobs, other knob controls
112  const double VA_OSC_MIN = MIDI_NOTE_0_FREQ;
113  const double VA_OSC_MAX = 20480.0;
114  const uint32_t VA_OSC_INPUTS = 0; // no audio inputs
115  const uint32_t VA_OSC_OUTPUTS = 2;// dual-mono output
116  const double VA_MIN_PW = 0.5;
117  const double VA_MAX_PW = 0.95;
118  const double PW_MOD_RANGE = (VA_MAX_PW - VA_MIN_PW);
119  const double HALF_PW_MOD_RANGE = PW_MOD_RANGE / 2.0;
120 
121  // --- VA Oscillator Waveforms
122  enum class VAWaveform { kSawAndSquare, kSawtooth, kSquare };
123  enum { VAO_WAVE_MIX, VAO_PULSE_WIDTH, VAO_C, VAO_PITCH_MOD };
125 
138  struct VA1Coeffs
139  {
140  // --- filter coefficients
141  double alpha = 0.0;
142  double beta = 1.0;
143  };
144 
160  {
161  VAOscParameters() {}
162 
163  // --- two waveforms
164  uint32_t waveIndex = enumToInt(VAWaveform::kSawAndSquare);
165 
166  // --- detuning values
167  double octaveDetune = 0.0;
168  double coarseDetune = 0.0;
169  double fineDetune = 0.0;
170 
172  double unisonDetune = 0.0;
173 
174  double pulseWidth_Pct = 50.0;
175  double outputAmplitude_dB = 0.0;
176 
177  double oscillatorShape = 0.0;
178  double hardSyncRatio = 1.00;
179  double panValue = 0.00;
180  double phaseModIndex = 1.0;
181  double waveformMix = 0.5;
182 
183  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
184  uint32_t moduleIndex = 0;
185  };
186 
187 
201  struct ModSource
202  {
203  ModSource() {}
204  ModSource& operator=(const ModSource& params)
205  {
206  if (this == &params)
207  return *this;
208 
209  intensity = params.intensity;
210 
211  return *this;
212  }
213 
214  // --- fast clearing of array
215  void clear() {
216  intensity = 1.0;
217  }
218 
219  // --- intensity only
220  double intensity = 1.0;
221  };
222 
239  {
240  ModDestination() { clear(); }
241  ModDestination& operator=(const ModDestination& params)
242  {
243  if (this == &params)
244  return *this;
245 
246  memcpy(channelEnable, params.channelEnable, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
247  memcpy(channelIntensity, params.channelIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
248 
249  memcpy(channelHardwire, params.channelHardwire, MAX_MODULATION_CHANNELS * sizeof(bool));
250  memcpy(hardwireIntensity, params.hardwireIntensity, MAX_MODULATION_CHANNELS * sizeof(double));
251 
252  intensity = params.intensity;
253  defautValue = params.defautValue;
254 
257 
258  return *this;
259  }
260 
261  // --- fast clearing of array
262  void clear() {
263  memset(channelEnable, 0, MAX_MODULATION_CHANNELS * sizeof(uint32_t));
264  memset(channelIntensity, 0, MAX_MODULATION_CHANNELS * sizeof(double));
265  memset(channelHardwire, 0, MAX_MODULATION_CHANNELS * sizeof(double));
266  memset(hardwireIntensity, 1, MAX_MODULATION_CHANNELS * sizeof(bool));
267  intensity = 1.0;
268  }
269 
270  // --- channel enable and intensity controls
273 
276 
277  // --- use separate intensities for each channel
278  bool enableChannelIntensity = false;
279 
280  double intensity = 1.0;
281  double defautValue = 0.0;
282  bool priorityModulation = false;
283  };
284 
285 
302  {
304  ModMatrixParameters& operator=(const ModMatrixParameters& params) // need this override for collections to work
305  {
306  if (this == &params)
307  return *this;
308 
309  modSourceRows = params.modSourceRows;
311 
312  return *this;
313  }
314 
316  std::shared_ptr<std::array<ModSource, kNumberModSources>> modSourceRows = std::make_shared<std::array<ModSource, kNumberModSources>>();
317 
319  std::shared_ptr<std::array<ModDestination, kNumberModDestinations>> modDestinationColumns = std::make_shared<std::array<ModDestination, kNumberModDestinations>>();
320 
328  void setMM_SourceIntensity(uint32_t destination, double intensity)
329  {
330  modSourceRows->at(destination).intensity = intensity;
331  }
332 
341  void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
342  {
343  modDestinationColumns->at(destination).channelEnable[source] = enable;
344  }
345 
354  void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
355  {
356  modDestinationColumns->at(destination).channelHardwire[source] = enable;
357  }
358 
368  void setMM_ChannelIntensity(uint32_t source, uint32_t destination, double intensity)
369  {
370  modDestinationColumns->at(destination).channelIntensity[source] = intensity;
371  }
372 
382  void setMM_DestHardwireIntensity(uint32_t source, uint32_t destination, double intensity)
383  {
384  modDestinationColumns->at(destination).hardwireIntensity[source] = intensity;
385  }
386 
394  void setMM_DestIntensity(uint32_t destination, double intensity)
395  {
396  modDestinationColumns->at(destination).intensity = intensity;
397  }
398 
406  void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
407  {
408  modDestinationColumns->at(destination).defautValue = defaultValue;
409  }
410 
421  void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
422  {
423  modDestinationColumns->at(destination).priorityModulation = _priorityModulation;
424  }
425 
435  void setMM_HardwiredRouting(uint32_t source, uint32_t destination, double intensity = 1.0)
436  {
437  setMM_ChannelEnable(source, destination, true);
438  setMM_HardwireEnable(source, destination, true);
439  setMM_DestIntensity(destination, intensity);
440  setMM_DestHardwireIntensity(source, destination, intensity);
441  }
442  };
443 
445 
449  const uint32_t NOISE_OSC_INPUTS = 0; // no audio inputs
450  const uint32_t NOISE_OSC_OUTPUTS = 2;// dual-mono output
451 
452  // --- Noise Oscillator Waveforms
453  enum class NoiseWaveform { kWhiteNoise, kPinkNoise, kGaussWhiteNoise };
455 
470  {
472  NoiseOscillatorParameters& operator=(const NoiseOscillatorParameters& params)
473  {
474  if (this == &params)
475  return *this;
476 
477  waveform = params.waveform;
479 
480  return *this;
481  }
482 
483  // --- two waveforms
484  NoiseWaveform waveform = NoiseWaveform::kWhiteNoise;
485  double outputAmplitude_dB = 0.0;
486  };
487 
488 
490 
494  const double freqModLow = 20.0;
495  const double freqModHigh = 20480.0;
496  const double freqModSemitoneRange = semitonesBetweenFreqs(freqModLow, freqModHigh);
497  const uint32_t FILTER_AUDIO_INPUTS = 2;
498  const uint32_t FILTER_AUDIO_OUTPUTS = 2;
499  enum class FilterModel { kFirstOrder, kSVF, kKorg35, kMoog, kDiode };
500  enum { FLT_KEYTRACK, FLT_DRIVE, FLT_EG_INT, FLT_BP_INT };
501  enum { FLT1, FLT2, FLT3, FLT4 };
502  const int MOOG_SUBFILTERS = 4;
503  const int DIODE_SUBFILTERS = 4;
504  const int KORG_SUBFILTERS = 3;
505  enum class VAFilterAlgorithm {
506  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
507  };
508  enum class BQFilterAlgorithm {
509  kBypassFilter, k1PLPF, k1PHPF, kLPF2, kHPF2
510  };
512 
513 
529  {
530  // --- use with strongly typed enums
531  int32_t filterIndex = 0;
532 
533  double fc = 1000.0;
534  double Q = 1.0;
535  double filterOutputGain_dB = 0.0;
536  double filterDrive = 1.0;
537  double bassGainComp = 0.0;
538  bool analogFGN = true;
539 
540  // --- key tracking
541  bool enableKeyTrack = false;
542  double keyTrackSemis = 0.0;
543 
544  // --- Mod Knobs and core support
545  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
546  uint32_t moduleIndex = 0;
547  };
548 
549 
551 
555  enum { kEGNormalOutput, kEGBiasedOutput, kNumEGOutputs };
556  enum class EGState { kOff, kDelay, kAttack, kHold, kDecay, kSlope, kSustain, kRelease, kShutdown };
557  enum class AnalogEGContour { kADSR, kAR }; // --- indexes match modulecore strings
558  enum class DXEGContour { kADSlSR, kADSlR }; // --- indexes match modulecore strings
559  const double MAX_EG_VALUE = 1.0;
561 
577  {
578  EGParameters() {}
579  int32_t egContourIndex = 0;
580 
581  // --- modes
582  bool resetToZero = false;
583  bool legatoMode = false;
584  bool velocityToAttackScaling = false;
586 
587  //--- ADSR times from user
588  double attackTime_mSec = 250.0;
589  double decayTime_mSec = 1000.0;
590  double slopeTime_mSec = 0.0;
591  double releaseTime_mSec = 3000.0;
592 
593  // --- for DXEG
594  double startLevel = 0.0;
595  double endLevel = 0.0;
596  double decayLevel = 0.707;
597  double sustainLevel = 0.707;
598  double curvature = 0.0;
599 
600  // --- mod knobs
601  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
602  uint32_t moduleIndex = 0; // core
603  };
604 
605 
620  {
621  ExciterParameters& operator=(const ExciterParameters& data)
622  {
623  if (this == &data)
624  return *this;
625 
629  return *this;
630  }
631 
632  double attackTime_mSec = 1000.0;
633  double holdTime_mSec = 5000.0;
634  double releaseTime_mSec = 2500.0;
635  };
636 
638 
642  const double FM_OSC_MIN = MIDI_NOTE_0_FREQ;
643  const double FM_OSC_MAX = 20480.0;
644  const uint32_t FM_OSC_INPUTS = 0; // FM audio inputs
645  const uint32_t FM_OSC_OUTPUTS = 2;// dual-mono output
646  enum { FMO_A, FMO_B, FMO_FEEDBACK, FMO_PITCH_MOD };
648 
665  {
667 
668  // --- bank index
669  uint32_t waveIndex = 0;
670 
671  // --- tuning
672  double octaveDetune = 0.0;
673  double coarseDetune = 0.0;
674  double fineDetune = 0.0;
675  double unisonDetune = 0.0;
676 
677  // --- mod and output
678  double outputAmplitude_dB = 0.0;
679  double oscillatorShape = 0.0;
680  double panValue = 0.00;
681  double phaseModIndex = 0.0;
682  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
683  uint32_t moduleIndex = 0;
684 
685  // --- FM Operator only
687  double ratio = 1.0;
688  };
689 
691 
695  const uint32_t DCA_AUDIO_INPUTS = 2; // stereo/dual mono
696  const uint32_t DCA_AUDIO_OUTPUTS = 2;// stereo
698 
699 
717  {
718  DCAParameters() {}
719 
720  // --- individual parameters
721  double gainValue_dB = 0.0;
722  double panValue = 0.0;
723  double ampEGIntensity = 1.0;
724  double ampModIntensity = 1.0;
725  double panModIntensity = 1.0;
726  uint32_t moduleIndex = 0;
727  };
728 
730 
734  const double LFO_FCMOD_MIN = 0.02;
735  const double LFO_FCMOD_MAX = 200.0;
736  const double LFO_RANGE = ((LFO_FCMOD_MAX - LFO_FCMOD_MIN));
737  const double LFO_HALF_RANGE = LFO_RANGE / 2.0;
738  const double MAX_LFO_DELAY_MSEC = 5000.0;
739  const double MAX_LFO_FADEIN_MSEC = 5000.0;
740  // --- 8 basic waveforms, plus exensions
741  enum class LFOWaveform {
742  kTriangle, kSin, kRampUp, kRampDown,
743  kExpRampUp, kExpRampDn, kExpTriangle, kSquare,
744  kRSH, kPluck
745  };
746  // --- 3 fms
747  const uint32_t NUM_FMLFO_OPS = 3;
748  enum class FMLFOWaveform { kFM2, kFM3A, kFM3B };
749  enum class LFOMode { kSync, kOneShot, kFreeRun };
750  // --- array locations in mod output
751  enum {
752  kLFONormalOutput,
753  kLFOInvertedOutput,
754  kUnipolarFromMin,
755  kUnipolarFromMax,
756  kNumLFOOutputs
757  };
758  enum { LFO_SHAPE, LFO_DELAY, LFO_FADE_IN, LFO_BPMSYNC };
760 
775  {
776  int32_t waveformIndex = 0;
777  int32_t modeIndex = 0;
778  double frequency_Hz = 0.5;
779  double outputAmplitude = 1.0;
780  uint32_t quantize = 0;
781  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
782  uint32_t moduleIndex = 0;
783  };
784 
785 
787 
791  const double PCM_OSC_MIN = MIDI_NOTE_0_FREQ;
792  const double PCM_OSC_MAX = 20480.0;
793  const uint32_t SMPL_OSC_INPUTS = 0;
794  const uint32_t SMPL_OSC_OUTPUTS = 2;// dual-mono or stereo output
795  enum { PCMO_A, PCMO_B, PCMO_C, PCMO_PITCH_MOD };
797 
813  {
814  public:
815  // --- index within bank
816  uint32_t waveIndex = 0;
817 
818  // --- detuning values
819  double octaveDetune = 0.0;
820  double coarseDetune = 0.0;
821  double fineDetune = 0.0;
822 
823  // --- this is a root-detuner for unison mode (could combine with detuneCents but would become tangled)
824  double unisonDetune = 0.0;
825  double outputAmplitude_dB = 0.0;
826 
827  double oscillatorShape = 0.0;
828  double hardSyncRatio = 1.00;
829  double phaseModIndex = 1.0;
830  double freqModIndex = 1.0;
831  double panValue = 0.0;
832  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
833  uint32_t moduleIndex = 0;
834  };
835 
837 
841  const double KS_OSC_MIN = MIDI_NOTE_0_FREQ;
842  const double KS_OSC_MAX = 20480.0;
843  const uint32_t KS_OSC_INPUTS = 0;
844  const uint32_t KS_OSC_OUTPUTS = 2;// dual-mono or stereo output
845  const double MAX_KSO_ATTACK_MSEC = 500.0;
846  const double MAX_KSO_HOLD_MSEC = 2000.0;
847  const double MAX_KSO_RELEASE_MSEC = 5000.0;
848  enum { KSO_OUTPUT, KSO_BODY, KSO_BITE, KSO_PLUCK_POS };
850 
869  {
870  KSOscParameters() {}
871 
872  // --- index within bank
873  uint32_t algorithmIndex = 0;
874 
875  double attackTime_mSec = 0.0;
876  double holdTime_mSec = 0.0;
877  double releaseTime_mSec = 0.0;
878 
879  // --- detuning values
880  double octaveDetune = 0.0;
881  double coarseDetune = 0.0;
882  double fineDetune = 0.0;
883  double unisonDetune = 0.0;
884  double outputAmplitude_dB = 0.0;
885 
886  double oscillatorShape = 0.0;
887  double hardSyncRatio = 1.00;
888  double phaseModIndex = 1.0;
889  double freqModIndex = 1.0;
890  double panValue = 0.0;
891  double decay = 0.9;
892  uint32_t pluckPosition = 1.0;
893  double modKnobValue[4] = { 0.0, 0.0, 0.0, 0.0 };
894  uint32_t moduleIndex = 0;
895  };
896 
898 
902  const uint32_t DELAY_AUDIO_INPUTS = 2;
903  const uint32_t DELAY_AUDIO_OUTPUTS = 2;
905 
918  {
921  AudioDelayParameters& operator=(const AudioDelayParameters& params) // need this override for collections to work
922  {
923  if (this == &params)
924  return *this;
925 
926  wetLevel_dB = params.wetLevel_dB;
927  dryLevel_dB = params.dryLevel_dB;
928  feedback_Pct = params.feedback_Pct;
931 
932  return *this;
933  }
934 
935  // --- individual parameters
936  double wetLevel_dB = -3.0;
937  double dryLevel_dB = -3.0;
938  double feedback_Pct = 0.0;
939  double leftDelay_mSec = 2000.0;
940  double rightDelay_mSec = 2000.0;
941  };
942 } // namespace
943 
bool enableKeyTrack
key track flag
Definition: synthlabparams.h:541
double dryLevel_dB
dry output level in dB
Definition: synthlabparams.h:937
bool forceLoop
force the wavetable to loop at extremes
Definition: synthlabparams.h:72
const double LFO_FCMOD_MIN
Definition: synthlabparams.h:734
#define enumToInt(ENUM)
macro helper to cast a typed enum to an int
Definition: synthfunctions.h:234
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:59
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:829
double fc
parameter fc
Definition: synthlabparams.h:533
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:832
Custom parameter structure for the Exciter object for the KS Oscillator and cores.
Definition: synthlabparams.h:619
const uint32_t NOISE_OSC_INPUTS
Definition: synthlabparams.h:449
double rightDelay_mSec
right delay time
Definition: synthlabparams.h:940
AnalogEGContour
Definition: synthlabparams.h:557
const double KS_OSC_MIN
Definition: synthlabparams.h:841
double waveformMix
[1, +???]
Definition: synthlabparams.h:181
double panValue
[-1, +1] –> [left -> right]
Definition: synthlabparams.h:722
double outputAmplitude_dB
dB
Definition: synthlabparams.h:884
double oscSpecificDetune
+/-12 semitones
Definition: synthlabparams.h:62
double filterDrive
parameter drive (distortion)
Definition: synthlabparams.h:536
bool noteNumberToDecayScaling
one of two EG modulations
Definition: synthlabparams.h:585
Custom GUI control structure for the modulation matrix.
Definition: synthlabparams.h:301
EGParameters dxEGParameters
parameters for embdedded EG
Definition: synthlabparams.h:686
double outputAmplitude_dB
dB
Definition: synthlabparams.h:678
double pulseWidth_Pct
sqr wave only
Definition: synthlabparams.h:174
Custom parameter structure for moving GUI control information to the FMOperator oscillator object and...
Definition: synthlabparams.h:664
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:882
double sustainLevel
from GUI control
Definition: synthlabparams.h:597
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:781
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:169
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:683
double feedback_Pct
feedback as a % value
Definition: synthlabparams.h:938
double panValue
[-1, +1]
Definition: synthlabparams.h:831
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:183
double attackTime_mSec
exciter EG
Definition: synthlabparams.h:875
bool enableChannelIntensity
to enable this mode, in addition to or instead of the source and destination intensity controls ...
Definition: synthlabparams.h:278
uint32_t channelEnable[MAX_MODULATION_CHANNELS]
channel enable on/off switches
Definition: synthlabparams.h:271
double phaseModIndex
[0, 4]
Definition: synthlabparams.h:681
Custom parameter structure for wavetable oscillators (note that several SynthLab oscillators are actu...
Definition: synthlabparams.h:50
double unisonDetuneCents
fine tune for unison
Definition: synthlabparams.h:61
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:545
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:887
double frequency_Hz
parameter fc
Definition: synthlabparams.h:778
Custom parameter structure for the VAOscillator and its ModuleCores. Notable members: ...
Definition: synthlabparams.h:159
double panValue
[-1, +1]
Definition: synthlabparams.h:890
double panValue
[-1, +1]
Definition: synthlabparams.h:68
double hardSyncRatio
[1, +???]
Definition: synthlabparams.h:67
void setMM_DestIntensity(uint32_t destination, double intensity)
set the destination (column) intensity control
Definition: synthlabparams.h:394
double outputAmplitude_dB
output in dB
Definition: synthlabparams.h:485
double intensity
one final intensity knob
Definition: synthlabparams.h:280
double decayLevel
from GUI control
Definition: synthlabparams.h:596
Custom parameter structure for the any of the synth EGs. This structure is designed to take care of b...
Definition: synthlabparams.h:576
double outputAmplitude_dB
dB
Definition: synthlabparams.h:175
double freqModIndex
[1, 4]
Definition: synthlabparams.h:830
Custom parameter structure for the any of the synth filters. This structure is designed to take care ...
Definition: synthlabparams.h:528
std::shared_ptr< std::array< ModSource, kNumberModSources > > modSourceRows
Definition: synthlabparams.h:316
double ampModIntensity
[0, +1]
Definition: synthlabparams.h:724
uint32_t algorithmIndex
GUI index for KS algorithm.
Definition: synthlabparams.h:873
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:682
double curvature
from GUI control
Definition: synthlabparams.h:598
Structure that encapsulates the controls for a modulation destination as part of the modulation matri...
Definition: synthlabparams.h:238
int32_t filterIndex
filter index in GUI control
Definition: synthlabparams.h:531
Definition: synthlabcore.cpp:4
double fineDetune
+/-50 cents
Definition: synthlabparams.h:60
uint32_t waveIndex
the waveform string is usually the patch or WAV folder name
Definition: synthlabparams.h:816
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:819
double holdTime_mSec
exciter EG
Definition: synthlabparams.h:876
double keyTrackSemis
key tracking ratio in semitones
Definition: synthlabparams.h:542
double slopeTime_mSec
from GUI control
Definition: synthlabparams.h:590
double outputAmplitude_dB
dB
Definition: synthlabparams.h:65
double alpha
alpha is (wcT/2)
Definition: synthlabparams.h:141
const uint32_t DELAY_AUDIO_OUTPUTS
Definition: synthlabparams.h:903
double hardSyncRatio
[1, 4]
Definition: synthlabparams.h:828
double filterOutputGain_dB
parameter output gain in dB
Definition: synthlabparams.h:535
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:382
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:435
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:546
double fineDetune
+/-50 cents
Definition: synthlabparams.h:674
double endLevel
from GUI control
Definition: synthlabparams.h:595
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:167
double panValue
[-1, +1]
Definition: synthlabparams.h:179
Custom parameter structure for the PCM sample oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:812
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:824
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:70
Tiny structure to hold 1st order VA filter coefficients, to make it easier to share them across sync-...
Definition: synthlabparams.h:138
double modKnobValue[4]
mod knob values
Definition: synthlabparams.h:893
const double OSC_FMIN
Definition: synthlabparams.h:22
double decayTime_mSec
from GUI control
Definition: synthlabparams.h:589
const double VA_OSC_MIN
Definition: synthlabparams.h:112
bool channelHardwire[MAX_MODULATION_CHANNELS]
channel hardwire on/off switches
Definition: synthlabparams.h:274
double leftDelay_mSec
left delay time
Definition: synthlabparams.h:939
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:679
EGState
Definition: synthlabparams.h:556
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:180
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:368
bool analogFGN
use analog FGN filters; adds to CPU load
Definition: synthlabparams.h:538
const double FM_OSC_MIN
Definition: synthlabparams.h:642
double modKnobValue[4]
mod knobs
Definition: synthlabparams.h:601
NoiseWaveform waveform
noise wavform
Definition: synthlabparams.h:484
double bassGainComp
0.0 = no bass compensation, 1.0 = restore all bass
Definition: synthlabparams.h:537
double intensity
one final intensity knob
Definition: synthlabparams.h:220
double beta
beta value, not used
Definition: synthlabparams.h:142
double releaseTime_mSec
from GUI control
Definition: synthlabparams.h:591
uint32_t waveIndex
DX algorithm.
Definition: synthlabparams.h:669
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:883
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:177
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:827
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:881
bool priorityModulation
for high-priority modulator; not used in SynthLab
Definition: synthlabparams.h:282
double phaseModIndex
/ [1, +4]
Definition: synthlabparams.h:888
void setMM_HardwireEnable(uint32_t source, uint32_t destination, bool enable)
set/clear a routing as hardwired
Definition: synthlabparams.h:354
double coarseDetune
+/-12 semitones
Definition: synthlabparams.h:673
double hardSyncRatio
[1, +4]
Definition: synthlabparams.h:178
double ampEGIntensity
[-1, +1]
Definition: synthlabparams.h:723
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:672
double panModIntensity
[0, +1] for external GUI control only, defaults to 1 to make mm work
Definition: synthlabparams.h:725
void setMM_ChannelEnable(uint32_t source, uint32_t destination, bool enable)
enable/disable a routing channel
Definition: synthlabparams.h:341
uint32_t quantize
for stepped LFOs
Definition: synthlabparams.h:780
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:168
const double MAX_EG_VALUE
Definition: synthlabparams.h:559
double gainValue_dB
for per-voice gain control (not same as master MIDI volume)
Definition: synthlabparams.h:721
int32_t modeIndex
one shot, free run, sync
Definition: synthlabparams.h:777
double coarseDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:820
DXEGContour
Definition: synthlabparams.h:558
const uint32_t DELAY_AUDIO_INPUTS
Definition: synthlabparams.h:902
std::shared_ptr< std::array< ModDestination, kNumberModDestinations > > modDestinationColumns
Definition: synthlabparams.h:319
double outputAmplitude_dB
in dB
Definition: synthlabparams.h:825
void setMM_DestDefaultValue(uint32_t destination, double defaultValue)
set a defalt value to prevent accidental no-note events
Definition: synthlabparams.h:406
double wetLevel_dB
wet output level in dB
Definition: synthlabparams.h:936
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:184
Custom parameter structure for the DCA. This is a very simple object.
Definition: synthlabparams.h:716
double unisonDetune
1 = up one cent, -1 = down one cent
Definition: synthlabparams.h:172
bool resetToZero
reset to zero (see book)
Definition: synthlabparams.h:582
Custom parameter structure for the wave sequencer module. Notable members:
Definition: synthlabparams.h:90
double ratio
FM ratio +/- 4 octaves.
Definition: synthlabparams.h:687
uint32_t waveIndex
index of waveform, usually linked to GUI control
Definition: synthlabparams.h:55
uint32_t waveIndex
waveform index in the GUI
Definition: synthlabparams.h:164
const uint32_t DCA_AUDIO_INPUTS
Definition: synthlabparams.h:695
Custom parameter structure for the NoiseOscillator object.
Definition: synthlabparams.h:469
uint32_t pluckPosition
[+1, +12]
Definition: synthlabparams.h:892
double attackTime_mSec
from GUI control
Definition: synthlabparams.h:588
double panValue
[-1, +1]
Definition: synthlabparams.h:680
double octaveDetune
+/- 4 octaves
Definition: synthlabparams.h:58
const uint32_t DCA_AUDIO_OUTPUTS
Definition: synthlabparams.h:696
int32_t waveformIndex
selection index from GUI
Definition: synthlabparams.h:776
double unisonDetune
fine tune for unison
Definition: synthlabparams.h:675
double holdTime_mSec
from a GUI control
Definition: synthlabparams.h:633
const double PCM_OSC_MIN
Definition: synthlabparams.h:791
Custom parameter structure for the LFO object. Notable members:
Definition: synthlabparams.h:774
double decay
[-1, +1]
Definition: synthlabparams.h:891
Custom parameter structure for the AudioDelay object.
Definition: synthlabparams.h:917
double hardwireIntensity[MAX_MODULATION_CHANNELS]
hardwire intensity controls
Definition: synthlabparams.h:275
double defautValue
to allow max down, etc...
Definition: synthlabparams.h:281
Structure that encapsulates the controls for a modulation source as part of the modulation matrix...
Definition: synthlabparams.h:201
double oscillatorShape
[-1, +1]
Definition: synthlabparams.h:66
AudioDelayParameters & operator=(const AudioDelayParameters &params)
Definition: synthlabparams.h:921
double octaveDetune
1 = up one octave, -1 = down one octave
Definition: synthlabparams.h:880
double releaseTime_mSec
from a GUI control
Definition: synthlabparams.h:634
double channelIntensity[MAX_MODULATION_CHANNELS]
channel intensity controls
Definition: synthlabparams.h:272
double outputAmplitude
parameter output gain in dB
Definition: synthlabparams.h:779
void setMM_DestHighPriority(uint32_t destination, bool _priorityModulation)
mark a destination has high-priority
Definition: synthlabparams.h:421
Custom parameter structure for the Karplus-Strong oscillator and its cores. Notable members: ...
Definition: synthlabparams.h:868
double startLevel
from GUI control
Definition: synthlabparams.h:594
int32_t egContourIndex
iundex from GUI control
Definition: synthlabparams.h:579
bool legatoMode
legato
Definition: synthlabparams.h:583
bool velocityToAttackScaling
one of two EG modulations
Definition: synthlabparams.h:584
double attackTime_mSec
from a GUI control
Definition: synthlabparams.h:632
uint32_t moduleIndex
module indentifier
Definition: synthlabparams.h:71
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:833
uint32_t moduleIndex
module ID
Definition: synthlabparams.h:782
double phaseModIndex
[1, 4]
Definition: synthlabparams.h:69
uint32_t moduleIndex
module identifier
Definition: synthlabparams.h:726
double fineDetune
1 = up one half-step, -1 = down one half-step
Definition: synthlabparams.h:821
double Q
parameter Q
Definition: synthlabparams.h:534
const uint32_t MAX_MODULATION_CHANNELS
Definition: synthconstants.h:28
const double freqModLow
Definition: synthlabparams.h:494
double freqModIndex
[1, +4]
Definition: synthlabparams.h:889
void setMM_SourceIntensity(uint32_t destination, double intensity)
set source intensity value
Definition: synthlabparams.h:328
double releaseTime_mSec
exciter EG
Definition: synthlabparams.h:877
double oscillatorShape
/ [-1, +1]
Definition: synthlabparams.h:886