@@ -33,10 +33,8 @@ Plateau2::Plateau2(const InstanceInfo& info)
3333 GetParam (kStereoSource1 )->InitPercentage (" Stereo Source 1" , 0 , -100 , 100 );
3434 GetParam (kWidth1 )->InitPercentage (" Stereo Width 1" , 100 , 0 , 200 );
3535 GetParam (kPan1 )->InitPercentage (" Pan 1" , 0 , -100 , 100 );
36- GetParam (kL1toL2 )->InitPercentage (" Send Left 1 to Left 2" );
37- GetParam (kR1toL2 )->InitPercentage (" Send Right 1 to Left 2" );
38- GetParam (kL1toR2 )->InitPercentage (" Send Left 1 to Right 2" );
39- GetParam (kR1toR2 )->InitPercentage (" Send Right 1 to Right 2" );
36+ GetParam (k1to2)->InitBool (" Send Tank 1 to 2" , false );
37+ GetParam (k1to2Level)->InitPercentage (" Tank 1 to 2 Level" );
4038
4139
4240 GetParam (kEnable2 )->InitBool (" Tank 2 Enable" , false );
@@ -63,10 +61,8 @@ Plateau2::Plateau2(const InstanceInfo& info)
6361 GetParam (kStereoSource2 )->InitPercentage (" Stereo Source 2" , 0 , -100 , 100 );
6462 GetParam (kWidth2 )->InitPercentage (" Stereo Width 2" , 100 , 0 , 200 );
6563 GetParam (kPan2 )->InitPercentage (" Pan 2" , 0 , -100 , 100 );
66- GetParam (kL2toL1 )->InitPercentage (" Send Left 2 to Left 1" );
67- GetParam (kR2toL1 )->InitPercentage (" Send Right 2 to Left 1" );
68- GetParam (kL2toR1 )->InitPercentage (" Send Left 2 to Right 1" );
69- GetParam (kR2toR1 )->InitPercentage (" Send Right 2 to Right 1" );
64+ GetParam (k2to1)->InitBool (" Send Tank 2 to 1" , false );
65+ GetParam (k2to1Level)->InitPercentage (" Tank 1 to 2 Level" );
7066
7167
7268 GetParam (kDanger )->InitBool (" DANGER! Allow Unsafe Feedback Settings" , false );
@@ -134,8 +130,8 @@ Plateau2::Plateau2(const InstanceInfo& info)
134130 Knobs[16 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 250 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kWidth1 , kWidth2 );
135131 Knobs[17 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 250 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kPan1 , kPan2 );
136132
137- Knobs[18 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG2PNG, kL1toL2 , kL2toL1 );
138- Knobs[19 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG , NeedleFG2PNG, kR1toR2 , kR2toR1 );
133+ Knobs[18 ] = new NeedleKnob (IRECT::MakeXYWH (93 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG1PNG, NeedleFG1PNG, k1to2Level, k1to2Level );
134+ Knobs[19 ] = new NeedleKnob (IRECT::MakeXYWH (166 , 340 , 56 , 56 ), NeedleSVG, NeedleBGSVG, NeedleFG2PNG , NeedleFG2PNG, k2to1Level, k2to1Level );
139135
140136 for (int i = 12 ; i <= 19 ; i++) {
141137 pGraphics->AttachControl (Knobs[i]);
@@ -192,12 +188,17 @@ Plateau2::Plateau2(const InstanceInfo& info)
192188 // DANGER switch
193189 Switches[6 ] = new LEDSwitch (IRECT::MakeXYWH (102 , 301 , 112 , 112 ), 1 , DangerOffSVG, DangerOnSVG, DangerOnSVG, kDanger , kDanger );
194190
195- for (int i = 5 ; i <= 6 ; i++) {
191+ // Routing page Switches
192+ Switches[7 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 - 20 , 430 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, LedOn1SVG, k1to2, k1to2);
193+ Switches[8 ] = new LEDSwitch (IRECT::MakeXYWH (106.5 + 20 , 430 , 102 , 102 ), LEDScale, LedOffSVG, LedOn2SVG, LedOn2SVG, k2to1, k2to1);
194+
195+ for (int i = 5 ; i <= 8 ; i++) {
196196 pGraphics->AttachControl (Switches[i]);
197197 Switches[i]->Hide (true );
198198 }
199199
200200
201+
201202 LEDRadio* tank1Select = new LEDRadio (IRECT::MakeXYWH (106.5 - 20 , 40 , 102 , 102 ), LEDScale, LedOffSVG, LedOn1SVG, [this ](IControl* radioControl) {SelectTank (false );});
202203 LEDRadio* tank2Select = new LEDRadio (IRECT::MakeXYWH (106.5 + 20 , 40 , 102 , 102 ), LEDScale, LedOffSVG, LedOn2SVG, [this ](IControl* radioControl) {SelectTank (true );});
203204
@@ -270,6 +271,9 @@ void Plateau2::UpdatePageVisibility()
270271 for (int i = 14 ; i <= 19 ; i++) {
271272 Knobs[i]->Hide (currentPage != 2 );
272273 }
274+ for (int i = 7 ; i <= 8 ; i++) {
275+ Switches[i]->Hide (currentPage != 2 );
276+ }
273277}
274278
275279
@@ -488,6 +492,8 @@ void Plateau2::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
488492 const bool freeze1Param = GetParam (kFreeze1 )->Value ();
489493 const double wet1Param = GetParam (kWet1 )->Value () / 100 ;
490494 const double input1 = GetParam (kInput1 )->Value () / 100 ;
495+ const double level2to1 = GetParam (k2to1Level)->Value () / 100 ;
496+ const bool send2to1 = tank2Enabled && GetParam (k2to1)->Value ();
491497
492498 if (clear1Param && !clear1 && cleared1) {
493499 cleared1 = false ;
@@ -529,7 +535,7 @@ void Plateau2::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
529535 reverb1.freeze (frozen1);
530536 }
531537
532- reverb1.process (balance ((double )(envelope1._value * (inputs[0 ][s] * input1 + (tank2Enabled ? (std::get<0 >(reverbOut2) * ( GetParam ( kL2toL1 )-> Value () / 100 ) + std::get< 1 >(reverbOut2) * ( GetParam ( kR2toL1 )-> Value () / 100 )) : 0 ))), (double )(envelope1._value * (inputs[nChans > 1 ? 1 : 0 ][s] * input1 + (tank2Enabled ? (std::get<0 >(reverbOut2) * ( GetParam ( kL2toR1 )-> Value () / 100 ) + std::get< 1 >(reverbOut2) * ( GetParam ( kR2toR1 )-> Value () / 100 ) ) : 0 ))), GetParam (kStereoSource1 )->Value () / 100 ));
538+ reverb1.process (balance ((double )(envelope1._value * (inputs[0 ][s] * input1 + (send2to1 ? (std::get<0 >(reverbOut2) * level2to1) : 0 ))), (double )(envelope1._value * (inputs[nChans > 1 ? 1 : 0 ][s] * input1 + (send2to1 ? (std::get<1 >(reverbOut2) * level2to1 ) : 0 ))), GetParam (kStereoSource1 )->Value () / 100 ));
533539
534540 reverbOut1 = { reverb1.getLeftOutput (), reverb1.getRightOutput () };
535541
@@ -550,6 +556,8 @@ void Plateau2::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
550556 const bool freeze2Param = GetParam (kFreeze2 )->Value ();
551557 const double wet2Param = GetParam (kWet2 )->Value () / 100 ;
552558 const double input2 = GetParam (kInput2 )->Value () / 100 ;
559+ const double level1to2 = GetParam (k1to2Level)->Value () / 100 ;
560+ const bool send1to2 = tank1Enabled && GetParam (k1to2)->Value ();
553561
554562 if (clear2Param && !clear2 && cleared2) {
555563 cleared2 = false ;
@@ -591,7 +599,7 @@ void Plateau2::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
591599 reverb2.freeze (frozen2);
592600 }
593601
594- reverb2.process (balance ((double )(envelope2._value * (inputs[0 ][s] * input2 + (tank1Enabled ? (std::get<0 >(reverbOut1) * ( GetParam ( kL1toL2 )-> Value () / 100 ) + std::get< 1 >(reverbOut1) * ( GetParam ( kR1toL2 )-> Value () / 100 )) : 0 ))), (double )(envelope2._value *(inputs[nChans > 1 ? 1 : 0 ][s] * input2 + (tank1Enabled ? (std::get<0 >(reverbOut1) * ( GetParam ( kL1toR2 )-> Value () / 100 ) + std::get< 1 >(reverbOut1) * ( GetParam ( kR1toR2 )-> Value () / 100 ) ) : 0 ))), GetParam (kStereoSource2 )->Value () / 100 ));
602+ reverb2.process (balance ((double )(envelope2._value * (inputs[0 ][s] * input2 + (send1to2 ? (std::get<0 >(reverbOut1) * level1to2) : 0 ))), (double )(envelope2._value *(inputs[nChans > 1 ? 1 : 0 ][s] * input2 + (send1to2 ? (std::get<1 >(reverbOut1) * level1to2 ) : 0 ))), GetParam (kStereoSource2 )->Value () / 100 ));
595603
596604 reverbOut2 = { reverb2.getLeftOutput (), reverb2.getRightOutput () };
597605
0 commit comments