@@ -8,7 +8,7 @@ Plateau2::Plateau2(const InstanceInfo& info)
88 GetParam (kDry )->InitPercentage (" Dry" , 100 );
99 GetParam (kFreeze )->InitBool (" Global Freeze" , false );
1010 GetParam (kClear )->InitBool (" Global Clear" , false );
11- GetParam (kCopy1to2 )->InitBool (" Copy Tank 1 to 2" , false );
11+ GetParam (kLink1to2 )->InitBool (" Link Tank 1 to 2" , false );
1212
1313 GetParam (kEnable1 )->InitBool (" Tank 1 Enable" , true );
1414 GetParam (kWet1 )->InitPercentage (" Wet 1" , 50 );
@@ -195,7 +195,7 @@ Plateau2::Plateau2(const InstanceInfo& info)
195195 }, PrevButtons[0 ]);
196196 pGraphics->AttachControl (PrevButtonControl);
197197
198- double LEDScale = 0 .2453054f ;
198+ constexpr double LEDScale = 0 .2453054f ;
199199
200200 const ISVG LedOffSVG = pGraphics->LoadSVG (LEDOFF_FN);
201201 const ISVG LedOn1SVG = pGraphics->LoadSVG (LEDON1_FN);
@@ -258,7 +258,7 @@ Plateau2::Plateau2(const InstanceInfo& info)
258258
259259 Switches[7 ] = new LEDSwitch (IRECT::MakeXYWH (3 , 170 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn2SVG, kSoftClip1 , kSoftClip2 );
260260
261- Switches[8 ] = new LEDSwitch (IRECT::MakeXYWH (3 , 450 , 102 , 102 ), LEDScale, LedOffSVG, LedOnBothSVG, LedOnBothSVG, kCopy1to2 , kCopy1to2 );
261+ Switches[8 ] = new LEDSwitch (IRECT::MakeXYWH (3 , 450 , 102 , 102 ), LEDScale, LedOffSVG, LedOnBothSVG, LedOnBothSVG, kLink1to2 , kLink1to2 );
262262
263263 // Routing page Switches
264264 Switches[9 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 , 374 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn2SVG, k1to2, k2to1);
@@ -374,25 +374,26 @@ bool Plateau2::WindowIsOpen() {
374374}
375375
376376void Plateau2::OnParamChange (int index) {
377- if (copy1to2 ) {
378- if (index >= kEnable1 && index <= k1to2HighDamp ) // Tank 1 range
377+ if (link1to2 ) {
378+ if (index >= kInputLowDamp1 && index <= kSoftClip1 ) // Tank 1 range
379379 {
380- UpdateParameter (index);
381- UpdateParameter (index + kEnable2 - kEnable1 ); // Copy to tank 2
380+ UpdateParameter (index, index);
381+ constexpr int offset = kEnable2 - kEnable1 ;
382+ UpdateParameter (index, index + offset); // Copy to tank 2
382383 }
383- else if (index < kEnable1 || index > k2to1HighDamp) // Other
384+ else if (!( index >= kInputLowDamp2 && index <= kSoftClip2 )) // Not tank 2 range
384385 {
385- UpdateParameter (index);
386+ UpdateParameter (index, index );
386387 }
387388 }
388389 else {
389- UpdateParameter (index);
390+ UpdateParameter (index, index );
390391 }
391392}
392393
393- void Plateau2::UpdateParameter (int index )
394+ void Plateau2::UpdateParameter (int sourceIndex, int targetIndex )
394395{
395- switch (index ) {
396+ switch (targetIndex ) {
396397 case kDry :
397398 dryParam = GetParam (kDry )->Value () / 100 ;
398399 break ;
@@ -407,10 +408,10 @@ void Plateau2::UpdateParameter(int index)
407408 reverb1.freeze (GetParam (kFreeze1 )->Value () >= 0.5 || GetParam (kFreeze )->Value () >= 0.5 );
408409 reverb2.freeze (GetParam (kFreeze2 )->Value () >= 0.5 || GetParam (kFreeze )->Value () >= 0.5 );
409410 break ;
410- case kCopy1to2 :
411- copy1to2 = GetParam (kCopy1to2 )->Value () >= 0.5 ;
412- /* if (copy1to2 ) {
413-
411+ case kLink1to2 :
412+ link1to2 = GetParam (kLink1to2 )->Value () >= 0.5 ;
413+ /* if (link1to2 ) {
414+
414415 }*/
415416 break ;
416417 case kEnable1 :
@@ -432,25 +433,26 @@ void Plateau2::UpdateParameter(int index)
432433 input1Param = GetParam (kInput1 )->Value () / 100 ;
433434 break ;
434435 case kSoftClip1 :
435- softClip1Param = GetParam (kSoftClip1 )->Value () >= 0.5 ;
436+ softClip1Param = GetParam (sourceIndex )->Value () >= 0.5 ;
436437 break ;
437438 case kWidth1 :
438439 width1Param = GetParam (kWidth1 )->Value () / 100 ;
439440 break ;
440441 case kPreDelay1 :
441- reverb1.setPreDelay (GetParam (index )->Value ());
442+ reverb1.setPreDelay (GetParam (sourceIndex )->Value ());
442443 break ;
443444 case kInputLowDamp1 :
444- reverb1.setInputFilterLowCutoffPitch (10 .f - GetParam (index )->Value ());
445+ reverb1.setInputFilterLowCutoffPitch (10 .f - GetParam (sourceIndex )->Value ());
445446 break ;
446447 case kInputHighDamp1 :
447- reverb1.setInputFilterHighCutoffPitch (GetParam (index )->Value ());
448+ reverb1.setInputFilterHighCutoffPitch (GetParam (sourceIndex )->Value ());
448449 break ;
449450 case kSize1 :
450451 case kTunedMode1 :
451452 {
452- double size = GetParam (kSize1 )->Value ();
453- if (GetParam (kTunedMode1 )->Value () >= 0.5 ) {
453+ bool source2 = sourceIndex == kSize2 || sourceIndex == kTunedMode2 ;
454+ double size = GetParam (source2 ? kSize2 : kSize1 )->Value ();
455+ if (GetParam (source2 ? kTunedMode2 : kTunedMode1 )->Value () >= 0.5 ) {
454456 reverb1.setTimeScale (0 .0025f * powf (2 .f , size * 5 .f ));
455457 }
456458 else {
@@ -459,41 +461,41 @@ void Plateau2::UpdateParameter(int index)
459461 break ;
460462 }
461463 case kDiffusion1 :
462- reverb1.setTankDiffusion (GetParam (index )->Value ());
464+ reverb1.setTankDiffusion (GetParam (sourceIndex )->Value ());
463465 break ;
464466 case kDecay1 :
465467 {
466- double decay = GetParam (index )->Value ();
468+ double decay = GetParam (sourceIndex )->Value ();
467469 reverb1.setDecay (2 * decay - decay * decay);
468470 break ;
469471 }
470472 case kReverbLowDamp1 :
471- reverb1.setTankFilterLowCutFrequency (10 .f - GetParam (index )->Value ());
473+ reverb1.setTankFilterLowCutFrequency (10 .f - GetParam (sourceIndex )->Value ());
472474 break ;
473475 case kReverbHighDamp1 :
474- reverb1.setTankFilterHighCutFrequency (GetParam (index )->Value ());
476+ reverb1.setTankFilterHighCutFrequency (GetParam (sourceIndex )->Value ());
475477 break ;
476478 case kModSpeed1 :
477479 {
478- double modSpeed = GetParam (index )->Value ();
480+ double modSpeed = GetParam (sourceIndex )->Value ();
479481 reverb1.setTankModSpeed (modSpeed * modSpeed * 99 .f + 1 .f );
480482 break ;
481483 }
482484 case kModDepth1 :
483- reverb1.setTankModDepth (GetParam (index )->Value ());
485+ reverb1.setTankModDepth (GetParam (sourceIndex )->Value ());
484486 break ;
485487 case kModShape1 :
486- reverb1.setTankModShape (GetParam (index )->Value ());
488+ reverb1.setTankModShape (GetParam (sourceIndex )->Value ());
487489 break ;
488490 case kDiffuseInput1 :
489- reverb1.enableInputDiffusion (GetParam (index )->Value () >= 0.5 );
491+ reverb1.enableInputDiffusion (GetParam (sourceIndex )->Value () >= 0.5 );
490492 break ;
491493 case kNesting1 :
492- reverb1.setTankDiffusionNesting (GetParam (index )->Value () >= 0.5 );
494+ reverb1.setTankDiffusionNesting (GetParam (sourceIndex )->Value () >= 0.5 );
493495 break ;
494496 case kDiffusionDecay1 :
495497 {
496- double scaled = scale<double >(GetParam (index )->Value (), 0 , 100 , 0 , 1.3 );
498+ double scaled = scale<double >(GetParam (sourceIndex )->Value (), 0 , 100 , 0 , 1.3 );
497499 if (!GetParam (kDanger )->Value ()) {
498500 // Clip to safe values
499501 scaled = clip<double >(scaled, 0.3 , 1 );
@@ -502,7 +504,7 @@ void Plateau2::UpdateParameter(int index)
502504 break ;
503505 }
504506 case kVariance1 :
505- reverb1.setTankVariance (GetParam (index )->Value ());
507+ reverb1.setTankVariance (GetParam (sourceIndex )->Value ());
506508 break ;
507509 case kStereoSource1 :
508510 sourceBalance1 = balanceFactors (GetParam (kStereoSource1 )->Value () / 100 );
@@ -520,13 +522,13 @@ void Plateau2::UpdateParameter(int index)
520522 send1To2Delay.setDelayTime (GetParam (k1to2Delay)->Value () * GetSampleRate ());
521523 break ;
522524 case k1to2LowDamp:
523- send1To2HP.setCutoffFreq (pitch2freq (10 .f - GetParam (index )->Value ()));
525+ send1To2HP.setCutoffFreq (pitch2freq (10 .f - GetParam (sourceIndex )->Value ()));
524526 break ;
525527 case k1to2HighDamp:
526- send1To2LP.setCutoffFreq (pitch2freq (GetParam (index )->Value ()));
528+ send1To2LP.setCutoffFreq (pitch2freq (GetParam (sourceIndex )->Value ()));
527529 break ;
528530 case kModVariance1 :
529- reverb1.setTankModVariance (GetParam (index )->Value ());
531+ reverb1.setTankModVariance (GetParam (sourceIndex )->Value ());
530532 break ;
531533
532534 case kEnable2 :
@@ -547,25 +549,26 @@ void Plateau2::UpdateParameter(int index)
547549 input2Param = GetParam (kInput2 )->Value () / 100 ;
548550 break ;
549551 case kSoftClip2 :
550- softClip2Param = GetParam (kSoftClip2 )->Value () >= 0.5 ;
552+ softClip2Param = GetParam (sourceIndex )->Value () >= 0.5 ;
551553 break ;
552554 case kWidth2 :
553555 width2Param = GetParam (kWidth2 )->Value () / 100 ;
554556 break ;
555557 case kPreDelay2 :
556- reverb2.setPreDelay (GetParam (index )->Value ());
558+ reverb2.setPreDelay (GetParam (sourceIndex )->Value ());
557559 break ;
558560 case kInputLowDamp2 :
559- reverb2.setInputFilterLowCutoffPitch (10 .f - GetParam (index )->Value ());
561+ reverb2.setInputFilterLowCutoffPitch (10 .f - GetParam (sourceIndex )->Value ());
560562 break ;
561563 case kInputHighDamp2 :
562- reverb2.setInputFilterHighCutoffPitch (GetParam (index )->Value ());
564+ reverb2.setInputFilterHighCutoffPitch (GetParam (sourceIndex )->Value ());
563565 break ;
564566 case kSize2 :
565567 case kTunedMode2 :
566568 {
567- double size = GetParam (kSize2 )->Value ();
568- if (GetParam (kTunedMode2 )->Value () >= 0.5 ) {
569+ bool source2 = sourceIndex == kSize2 || sourceIndex == kTunedMode2 ;
570+ double size = GetParam (source2 ? kSize2 : kSize1 )->Value ();
571+ if (GetParam (source2 ? kTunedMode2 : kTunedMode1 )->Value () >= 0.5 ) {
569572 reverb2.setTimeScale (0 .0025f * powf (2 .f , size * 5 .f ));
570573 }
571574 else {
@@ -574,41 +577,41 @@ void Plateau2::UpdateParameter(int index)
574577 break ;
575578 }
576579 case kDiffusion2 :
577- reverb2.setTankDiffusion (GetParam (index )->Value ());
580+ reverb2.setTankDiffusion (GetParam (sourceIndex )->Value ());
578581 break ;
579582 case kDecay2 :
580583 {
581- double decay = GetParam (index )->Value ();
584+ double decay = GetParam (sourceIndex )->Value ();
582585 reverb2.setDecay (2 .f * decay - decay * decay);
583586 break ;
584587 }
585588 case kReverbLowDamp2 :
586- reverb2.setTankFilterLowCutFrequency (10 .f - GetParam (index )->Value ());
589+ reverb2.setTankFilterLowCutFrequency (10 .f - GetParam (sourceIndex )->Value ());
587590 break ;
588591 case kReverbHighDamp2 :
589- reverb2.setTankFilterHighCutFrequency (GetParam (index )->Value ());
592+ reverb2.setTankFilterHighCutFrequency (GetParam (sourceIndex )->Value ());
590593 break ;
591594 case kModSpeed2 :
592595 {
593- double modSpeed = GetParam (index )->Value ();
596+ double modSpeed = GetParam (sourceIndex )->Value ();
594597 reverb2.setTankModSpeed (modSpeed * modSpeed * 99 .f + 1 .f );
595598 break ;
596599 }
597600 case kModDepth2 :
598- reverb2.setTankModDepth (GetParam (index )->Value ());
601+ reverb2.setTankModDepth (GetParam (sourceIndex )->Value ());
599602 break ;
600603 case kModShape2 :
601- reverb2.setTankModShape (GetParam (index )->Value ());
604+ reverb2.setTankModShape (GetParam (sourceIndex )->Value ());
602605 break ;
603606 case kDiffuseInput2 :
604- reverb2.enableInputDiffusion (GetParam (index )->Value () >= 0.5 );
607+ reverb2.enableInputDiffusion (GetParam (sourceIndex )->Value () >= 0.5 );
605608 break ;
606609 case kNesting2 :
607- reverb2.setTankDiffusionNesting (GetParam (index )->Value ());
610+ reverb2.setTankDiffusionNesting (GetParam (sourceIndex )->Value ());
608611 break ;
609612 case kDiffusionDecay2 :
610613 {
611- double scaled = scale<double >(GetParam (index )->Value (), 0 , 100 , 0 , 1.3 );
614+ double scaled = scale<double >(GetParam (sourceIndex )->Value (), 0 , 100 , 0 , 1.3 );
612615 if (!GetParam (kDanger )->Value ()) {
613616 // Clip to safe values
614617 scaled = clip<double >(scaled, 0.3 , 1 );
@@ -617,7 +620,7 @@ void Plateau2::UpdateParameter(int index)
617620 break ;
618621 }
619622 case kVariance2 :
620- reverb2.setTankVariance (GetParam (index )->Value ());
623+ reverb2.setTankVariance (GetParam (sourceIndex )->Value ());
621624 break ;
622625 case kStereoSource2 :
623626 sourceBalance2 = balanceFactors (GetParam (kStereoSource2 )->Value () / 100 );
@@ -635,13 +638,13 @@ void Plateau2::UpdateParameter(int index)
635638 send2To1Delay.setDelayTime (GetParam (k2to1Delay)->Value () * GetSampleRate ());
636639 break ;
637640 case k2to1LowDamp:
638- send2To1HP.setCutoffFreq (pitch2freq (10 .f - GetParam (index )->Value ()));
641+ send2To1HP.setCutoffFreq (pitch2freq (10 .f - GetParam (sourceIndex )->Value ()));
639642 break ;
640643 case k2to1HighDamp:
641- send2To1LP.setCutoffFreq (pitch2freq (GetParam (index )->Value ()));
644+ send2To1LP.setCutoffFreq (pitch2freq (GetParam (sourceIndex )->Value ()));
642645 break ;
643646 case kModVariance2 :
644- reverb2.setTankModVariance (GetParam (index )->Value ());
647+ reverb2.setTankModVariance (GetParam (sourceIndex )->Value ());
645648 break ;
646649
647650 case kDanger :
0 commit comments