@@ -21,6 +21,7 @@ Plateau2::Plateau2(const InstanceInfo& info)
2121 GetParam (kModSpeed1 )->InitDouble (" Modulation Speed 1" , 0 ., 0 ., 1 ., 0.01 );
2222 GetParam (kModDepth1 )->InitDouble (" Modulation Depth 1" , 0.5 , 0 ., 16 ., 0.01 );
2323 GetParam (kModShape1 )->InitDouble (" Modulation Shape 1" , 0.5 , 0 ., 1 ., 0.01 );
24+ GetParam (kModVariance1 )->InitDouble (" Modulation Variance 1" , 1 ., 0 ., 1 ., 0.01 );
2425 GetParam (kFreeze1 )->InitBool (" Freeze 1" , false );
2526 GetParam (kClear1 )->InitBool (" Clear 1" , false );
2627 GetParam (kTunedMode1 )->InitBool (" Tuned Mode 1" , false );
@@ -52,6 +53,7 @@ Plateau2::Plateau2(const InstanceInfo& info)
5253 GetParam (kModSpeed2 )->InitDouble (" Modulation Speed 2" , 0 ., 0 ., 1 ., 0.01 );
5354 GetParam (kModDepth2 )->InitDouble (" Modulation Depth 2" , 0.5 , 0 ., 16 ., 0.01 );
5455 GetParam (kModShape2 )->InitDouble (" Modulation Shape 2" , 0.5 , 0 ., 1 ., 0.01 );
56+ GetParam (kModVariance2 )->InitDouble (" Modulation Variance 2" , 1 ., 0 ., 1 ., 0.01 );
5557 GetParam (kFreeze2 )->InitBool (" Freeze 2" , false );
5658 GetParam (kClear2 )->InitBool (" Clear 2" , false );
5759 GetParam (kTunedMode2 )->InitBool (" Tuned Mode 2" , false );
@@ -116,18 +118,19 @@ Plateau2::Plateau2(const InstanceInfo& info)
116118 const IBitmap NeedleFG1PNG = pGraphics->LoadBitmap (NEEDLEFG1_FN);
117119 const IBitmap NeedleFG2PNG = pGraphics->LoadBitmap (NEEDLEFG2_FN);
118120
119- Knobs[0 ] = new NeedleKnob (IRECT::MakeXYWH (89 - 40 , 141 + 50 , 42 , 42 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDry , kDry );
120- Knobs[1 ] = new NeedleKnob (IRECT::MakeXYWH (180 +40 , 141 +50 , 42 , 42 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWet1 , kWet2 );
121- Knobs[2 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 230 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInputLowDamp1 , kInputLowDamp2 );
122- Knobs[3 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 230 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInputHighDamp1 , kInputHighDamp2 );
123- Knobs[4 ] = new NeedleKnob (IRECT::MakeXYWH (56 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kSize1 , kSize2 );
124- Knobs[5 ] = new NeedleKnob (IRECT::MakeXYWH (130 , 329 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDiffusion1 , kDiffusion2 );
125- Knobs[6 ] = new NeedleKnob (IRECT::MakeXYWH (203 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDecay1 , kDecay2 );
126- Knobs[7 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 446 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kReverbLowDamp1 , kReverbLowDamp2 );
127- Knobs[8 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 446 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kReverbHighDamp1 , kReverbHighDamp2 );
128- Knobs[9 ] = new NeedleKnob (IRECT::MakeXYWH (56 , 518 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModSpeed1 , kModSpeed2 );
129- Knobs[10 ] = new NeedleKnob (IRECT::MakeXYWH (203 , 518 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModDepth1 , kModDepth2 );
130- Knobs[11 ] = new NeedleKnob (IRECT::MakeXYWH (130 , 543 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModShape1 , kModShape2 );
121+ // Main Page Knobs
122+ Knobs[kDryKnob ] = new NeedleKnob (IRECT::MakeXYWH (89 - 40 , 141 + 50 , 42 , 42 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDry , kDry );
123+ Knobs[kWetKnob ] = new NeedleKnob (IRECT::MakeXYWH (180 +40 , 141 +50 , 42 , 42 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWet1 , kWet2 );
124+ Knobs[kInputLowDampKnob ] = new NeedleKnob (IRECT::MakeXYWH (93 , 230 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInputLowDamp1 , kInputLowDamp2 );
125+ Knobs[kInputHighDampKnob ] = new NeedleKnob (IRECT::MakeXYWH (166 , 230 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInputHighDamp1 , kInputHighDamp2 );
126+ Knobs[kSizeKnob ] = new NeedleKnob (IRECT::MakeXYWH (56 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kSize1 , kSize2 );
127+ Knobs[kDiffusionKnob ] = new NeedleKnob (IRECT::MakeXYWH (130 , 329 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDiffusion1 , kDiffusion2 );
128+ Knobs[kDecayKnob ] = new NeedleKnob (IRECT::MakeXYWH (203 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDecay1 , kDecay2 );
129+ Knobs[kReverbLowDampKnob ] = new NeedleKnob (IRECT::MakeXYWH (93 , 446 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kReverbLowDamp1 , kReverbLowDamp2 );
130+ Knobs[kReverbHighDampKnob ] = new NeedleKnob (IRECT::MakeXYWH (166 , 446 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kReverbHighDamp1 , kReverbHighDamp2 );
131+ Knobs[kModSpeedKnob ] = new NeedleKnob (IRECT::MakeXYWH (56 , 518 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModSpeed1 , kModSpeed2 );
132+ Knobs[kModDepthKnob ] = new NeedleKnob (IRECT::MakeXYWH (203 , 518 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModDepth1 , kModDepth2 );
133+ Knobs[kModShapeKnob ] = new NeedleKnob (IRECT::MakeXYWH (130 , 543 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModShape1 , kModShape2 );
131134
132135 for (int i = 0 ; i <= 11 ; i++) {
133136 pGraphics->AttachControl (Knobs[i]);
@@ -137,24 +140,28 @@ Plateau2::Plateau2(const InstanceInfo& info)
137140 pGraphics->AttachControl (SVGs[4 ]);
138141 SVGs[4 ]->Hide (true );
139142
140- Knobs[12 ] = new NeedleKnob (IRECT::MakeXYWH (140 , 140 , 35 , 35 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPreDelay1 , kPreDelay2 );
143+ // Extras Page Knobs
144+ Knobs[kPreDelayKnob ] = new NeedleKnob (IRECT::MakeXYWH (140 , 140 , 35 , 35 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPreDelay1 , kPreDelay2 );
141145
142- Knobs[13 ] = new NeedleKnob (IRECT::MakeXYWH (233 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDiffusionDecay1 , kDiffusionDecay2 );
143- Knobs[13 ]->Bound = 72 .6923f ;
146+ Knobs[kDiffusionDecayKnob ] = new NeedleKnob (IRECT::MakeXYWH (233 , 310 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kDiffusionDecay1 , kDiffusionDecay2 );
147+ Knobs[kDiffusionDecayKnob ]->Bound = 72 .6923f ;
144148
145- Knobs[14 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInput1 , kInput2 );
146- Knobs[15 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kStereoSource1 , kStereoSource2 );
149+ Knobs[kModVarianceKnob ] = new NeedleKnob (IRECT::MakeXYWH (233 , 518 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kModVariance1 , kModVariance2 );
147150
148- Knobs[16 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWidth1 , kWidth2 );
149- Knobs[17 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPan1 , kPan2 );
151+ // Routing Page Knobs
152+ Knobs[kInputKnob ] = new NeedleKnob (IRECT::MakeXYWH (93 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kInput1 , kInput2 );
153+ Knobs[kStereoSourceKnob ] = new NeedleKnob (IRECT::MakeXYWH (166 , 170 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kStereoSource1 , kStereoSource2 );
150154
151- Knobs[18 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 440 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2Level, k2to1Level );
152- Knobs[19 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 440 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2Delay, k2to1Delay );
155+ Knobs[kWidthKnob ] = new NeedleKnob (IRECT::MakeXYWH (93 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWidth1 , kWidth2 );
156+ Knobs[kPanKnob ] = new NeedleKnob (IRECT::MakeXYWH (166 , 294 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPan1 , kPan2 );
153157
154- Knobs[20 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 530 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2LowDamp, k2to1LowDamp);
155- Knobs[21 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 530 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2HighDamp, k2to1HighDamp);
158+ Knobs[kSendLevel ] = new NeedleKnob (IRECT::MakeXYWH (93 , 440 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2Level, k2to1Level);
159+ Knobs[kSendDelay ] = new NeedleKnob (IRECT::MakeXYWH (166 , 440 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2Delay, k2to1Delay);
160+
161+ Knobs[kSendLowDamp ] = new NeedleKnob (IRECT::MakeXYWH (93 , 530 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2LowDamp, k2to1LowDamp);
162+ Knobs[kSendHighDamp ] = new NeedleKnob (IRECT::MakeXYWH (166 , 530 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, k1to2HighDamp, k2to1HighDamp);
156163
157- for (int i = 12 ; i <= 21 ; i++) {
164+ for (int i = kPreDelayKnob ; i <= kSendHighDamp ; i++) {
158165 pGraphics->AttachControl (Knobs[i]);
159166 Knobs[i]->Hide (true );
160167 }
@@ -278,7 +285,7 @@ void Plateau2::ChangePage(int direction, const ISVG PageBackgrounds[kNumPages],
278285void Plateau2::UpdatePageVisibility ()
279286{
280287 // Main page
281- for (int i = 0 ; i <= 11 ; i++) {
288+ for (int i = kDryKnob ; i <= kModShapeKnob ; i++) {
282289 Knobs[i]->Hide (currentPage!=0 );
283290 }
284291 for (int i = 0 ; i <= 4 ; i++) {
@@ -289,15 +296,15 @@ void Plateau2::UpdatePageVisibility()
289296 }
290297
291298 // Extras page
292- for (int i = 12 ; i <= 13 ; i++) {
299+ for (int i = kPreDelayKnob ; i <= kModVarianceKnob ; i++) {
293300 Knobs[i]->Hide (currentPage != 1 );
294301 }
295302 for (int i = 5 ; i <= 6 ; i++) {
296303 Switches[i]->Hide (currentPage != 1 );
297304 }
298305
299306 // Routing page
300- for (int i = 14 ; i <= 17 ; i++) {
307+ for (int i = kInputKnob ; i <= kPanKnob ; i++) {
301308 Knobs[i]->Hide (currentPage != 2 );
302309 }
303310 UpdateSendVisibility ();
@@ -308,7 +315,7 @@ void Plateau2::UpdateSendVisibility() {
308315 Switches[i]->Hide (currentPage != 2 );
309316 }
310317 bool dangerous = GetParam (kDanger )->Value ();
311- for (int i = 18 ; i <= 21 ; i++) {
318+ for (int i = kSendLevel ; i <= kSendHighDamp ; i++) {
312319 Knobs[i]->Hide (currentPage != 2 || (!dangerous && tank2Selected));
313320 }
314321 SVGs[0 ]->Hide (currentPage != 2 || !tank2Selected);
@@ -428,6 +435,9 @@ void Plateau2::OnParamChange(int index)
428435 case k1to2HighDamp:
429436 send1To2LP.setCutoffFreq (pitch2freq (GetParam (index)->Value ()));
430437 break ;
438+ case kModVariance1 :
439+ reverb1.setTankModVariance (GetParam (index)->Value ());
440+ break ;
431441
432442 case kPreDelay2 :
433443 reverb2.setPreDelay (GetParam (index)->Value ());
@@ -481,7 +491,7 @@ void Plateau2::OnParamChange(int index)
481491 reverb2.enableInputDiffusion (GetParam (index)->Value ()>=0.5 );
482492 break ;
483493 case kNesting2 :
484- reverb2.setTankDiffusionNesting (GetParam (index)->Value ()>= 0.5 );
494+ reverb2.setTankDiffusionNesting (GetParam (index)->Value ());
485495 break ;
486496 case kDiffusionDecay2 :
487497 {
@@ -508,6 +518,9 @@ void Plateau2::OnParamChange(int index)
508518 case k2to1HighDamp:
509519 send2To1LP.setCutoffFreq (pitch2freq (GetParam (index)->Value ()));
510520 break ;
521+ case kModVariance2 :
522+ reverb2.setTankModVariance (GetParam (index)->Value ());
523+ break ;
511524
512525 case kDanger :
513526 if (GetParam (kDanger )->Value ()<=0.5 ) {
@@ -516,13 +529,13 @@ void Plateau2::OnParamChange(int index)
516529 }
517530 if (WindowIsOpen ()) {
518531 UpdateSendVisibility ();
519- Knobs[13 ]->Bound = GetParam (kDanger )->Value () ? 135 .f : 72 .6923f ;
532+ Knobs[kDiffusionDecayKnob ]->Bound = GetParam (kDanger )->Value () ? 135 .f : 72 .6923f ;
520533
521534 SetParameterValue (kDiffusionDecay1 , clip<double >(GetParam (kDiffusionDecay1 )->Value (), 23.0769 , 76.92307 )/100 );
522535 SetParameterValue (kDiffusionDecay2 , clip<double >(GetParam (kDiffusionDecay2 )->Value (), 23.0769 , 76.92307 )/100 );
523536
524- Knobs[13 ]->SetValue ((tank2Selected ? GetParam (kDiffusionDecay2 )->Value () : GetParam (kDiffusionDecay1 )->Value ()) / 100 );
525- Knobs[13 ]->SetDirty (false );
537+ Knobs[kDiffusionDecayKnob ]->SetValue ((tank2Selected ? GetParam (kDiffusionDecay2 )->Value () : GetParam (kDiffusionDecay1 )->Value ()) / 100 );
538+ Knobs[kDiffusionDecayKnob ]->SetDirty (false );
526539 }
527540 break ;
528541 }
0 commit comments