Nord Stage Kontakt GP Rack

Hi, I would like a little help with a script.

I bought the Ultimate Stage Piano HD bank by Junior Porciuncula for Kontakt to use it on stage.
I prepared all my setup, widgets… everything is perfect but for a visual question, I need a script.
I made a button widget to select piano and a text label to display the model piano (1 to 44).
Indeed, if I select Piano 1 (Royal Grand 3D), I get the value 0 in the text label widget.
If I choose the 2nd piano (Velvet Grand), the displayed value is 0.0232558 (2.4 if I look at the Value Widget).
How can I make it display the values ​​1 to 44.

Many thanks for your help.

Or keywords “Ultimate stage piano HD” on youtube.

Can you upload a small gig file?
Did you use host automation?

The plugin is probably only returning raw values between 0.0 and 1.0 rather than text strings.

Probably need to scale the value

Maybe

Yes, think you’re right.
The min value is 0 and max 1.0.

How can i send you my rack PianoPaul ?

Just upload it here

Ok, see the upload button.
Here is a light version (delete many variations…)
i want to specify, i do not use the EQ, delay, reverb of the Ultimate Stage Piano.
Only pianos and synth mith mix button.
Thanks for your help.

Nord Stage Kontakt.gig (1.8 MB)

I do not see your upload

the link is gone ! I updated message. :wink:

Finally, I’ve decided to show you how I solved the problem of displaying the pianos.
As the “White Grand” piano (Steinway B-211) is not available in this Ultimate Stage Pianos, I decided to add my favorite piano, the Galaxy Vintage-D (Steinway D-274).
If the midi channel is set to 1, I play the “Ultimate Stage pianos” module in Kontakt and select the piano sound with the “Piano” knob; if midi channel 2, it’s the Vintage-D.

The widgets I use in the code

My Code (I’m no expert, but I’m trying to learn :slight_smile: )

Var
   idPiano : widget
   namePiano : widget
   infoPiano : widget
   OutChannelMidi : widget

   Piano_List : string Array = ["White Grand", "Royal Grand 3D", "Velvet Grand", "Silver Grand", "Italian Grand", "Bright Grand", "Grand Imperial", "Grand Lady D", "Studio Grand 1", "Studio Grand 2", "Concert Grand Close", 
                                "Concert Grand Ambient", "Electric Grand Amped", "Electric Grand CP80", "Electric Grand Gerbstedt", 
                                "Baby Upright", "Amber Upright", "Bambino Upright", "Mellow Upright", "Grand Upright", "Queen Upright", "Black Upright", "HonkyTonk Upright", "Saloon Upright", "Romantic Upright", "BlueSwede Upright", "Rain Piano",  
                                "EP1 MK I, Low Deep", "EP1 MK I, Suitcase, Close Ideal", "EP3 MK II, Shallow Close", "EP4 MK V, Ideal Close", "EP5 MK I Suitcase, Bright Tines", "EP6 Sparkletop Vintage '67", "EP7 Tines Amped", "EP8 Nefertiti MKI", 
                                "Wurlitzer 1 200A", "Wurlitzer 2 Amped",
                                "DigiGrand 1", "DigiGrand 2", "DX Full Tines", "DX Rubba Tines", "Ballad EP1", "Ballad EP2", "Silver EP", "Hybrid EP",
				"No Piano"]

   Piano_Info : string Array = ["Steinway Vintage D-274", "Yamaha S6", "Blüthner Model 1", "Shigeru Kawai SK-7", "Fazioli", "Yamaha S4", "Bösendorfer Imperial", "Steinway D-274", "Yamaha C7", "Yamaha C7", "Steinway D-274", 
                                "Steinway D-274", "Yamaha CP80", "Yamaha CP80", "Yamaha CP80", 
                                "Nordiska compact", "Grotrian-Steinweg G132", "Baldwin spinet piano", "Bösendorfer C130", "Yamaha U3", "Bösendorfer", "Petrof 132", "Baumgardt", "Baumgardt", "Schimmel Fortissimo 108", "Malmsjö", "Svenska Pianofabriken", 
                                "Rhodes Stage Mk I (1978)", "Rhodes Suitcase Mk I (1975)", "Rhodes Stage Mk II (1981)", "Rhodes Stage Mk V (1984), ideal timbre", "Rhodes Suitcase Mk I (1975)", "Fender Rhodes 'Silvertop' Electric Piano (1967), ideal timbre", "Rhodes Mk I", "Rhodes Suitcase Mk I “Nefertiti Club Göteborg” (1970)",
                                "Wurlitzer A200", "Wurlitzer A200", 
                                "Roland XP80", "Roland RD1000", "FM-based Electric Piano (DX syntheziser)", "FM-based Electric Piano (DX syntheziser)", "Classic sounds from the 80's", "Classic sounds from the 80's", "Classic sounds from the 80's", "Classic sounds from the 80's",
				""]
   
// Piano name settings according to the value returned by the Piano Knob (idPiano)
On WidgetValueChanged(newValue : double) from idPiano
 // If midi channel is set to 1
 If GetWidgetValue(OutChannelMidi) < 0.066 then

  if newValue >= 0.0  && newValue < 0.023 then SetWidgetLabel(namePiano, Piano_List[1])   SetWidgetLabel(infoPiano, Piano_Info[1])   end
  if newValue >= 0.023 && newValue < 0.046 then SetWidgetLabel(namePiano, Piano_List[2])  SetWidgetLabel(infoPiano, Piano_Info[2])   end
  if newValue >= 0.046 && newValue < 0.069 then SetWidgetLabel(namePiano, Piano_List[3])  SetWidgetLabel(infoPiano, Piano_Info[3])   end
  if newValue >= 0.069 && newValue < 0.092 then SetWidgetLabel(namePiano, Piano_List[4])  SetWidgetLabel(infoPiano, Piano_Info[4])   end
  if newValue >= 0.092 && newValue < 0.115 then SetWidgetLabel(namePiano, Piano_List[5])  SetWidgetLabel(infoPiano, Piano_Info[5])   end
  if newValue >= 0.115 && newValue < 0.139 then SetWidgetLabel(namePiano, Piano_List[6])  SetWidgetLabel(infoPiano, Piano_Info[6])   end
  if newValue >= 0.139 && newValue < 0.162 then SetWidgetLabel(namePiano, Piano_List[7])  SetWidgetLabel(infoPiano, Piano_Info[7])   end
  if newValue >= 0.162 && newValue < 0.185 then SetWidgetLabel(namePiano, Piano_List[8])  SetWidgetLabel(infoPiano, Piano_Info[8])   end
  if newValue >= 0.185 && newValue < 0.208 then SetWidgetLabel(namePiano, Piano_List[9])  SetWidgetLabel(infoPiano, Piano_Info[9])   end
  if newValue >= 0.208 && newValue < 0.232 then SetWidgetLabel(namePiano, Piano_List[10]) SetWidgetLabel(infoPiano, Piano_Info[10])  end
  if newValue >= 0.232 && newValue < 0.254 then SetWidgetLabel(namePiano, Piano_List[11]) SetWidgetLabel(infoPiano, Piano_Info[11])  end
  if newValue >= 0.254 && newValue < 0.278 then SetWidgetLabel(namePiano, Piano_List[12]) SetWidgetLabel(infoPiano, Piano_Info[12])  end
  if newValue >= 0.278 && newValue < 0.301 then SetWidgetLabel(namePiano, Piano_List[13]) SetWidgetLabel(infoPiano, Piano_Info[13])  end
  if newValue >= 0.301 && newValue < 0.325 then SetWidgetLabel(namePiano, Piano_List[14]) SetWidgetLabel(infoPiano, Piano_Info[14])  end
  if newValue >= 0.325 && newValue < 0.348 then SetWidgetLabel(namePiano, Piano_List[15]) SetWidgetLabel(infoPiano, Piano_Info[15])  end
  if newValue >= 0.348 && newValue < 0.371 then SetWidgetLabel(namePiano, Piano_List[16]) SetWidgetLabel(infoPiano, Piano_Info[16])  end
  if newValue >= 0.371 && newValue < 0.394 then SetWidgetLabel(namePiano, Piano_List[17]) SetWidgetLabel(infoPiano, Piano_Info[17])  end
  if newValue >= 0.394 && newValue < 0.418 then SetWidgetLabel(namePiano, Piano_List[18]) SetWidgetLabel(infoPiano, Piano_Info[18])  end
  if newValue >= 0.418 && newValue < 0.441 then SetWidgetLabel(namePiano, Piano_List[19]) SetWidgetLabel(infoPiano, Piano_Info[19])  end
  if newValue >= 0.441 && newValue < 0.464 then SetWidgetLabel(namePiano, Piano_List[20]) SetWidgetLabel(infoPiano, Piano_Info[20])  end
  if newValue >= 0.464 && newValue < 0.486 then SetWidgetLabel(namePiano, Piano_List[21]) SetWidgetLabel(infoPiano, Piano_Info[21])  end
  if newValue >= 0.486 && newValue < 0.511 then SetWidgetLabel(namePiano, Piano_List[22]) SetWidgetLabel(infoPiano, Piano_Info[22])  end
  if newValue >= 0.511 && newValue < 0.534 then SetWidgetLabel(namePiano, Piano_List[23]) SetWidgetLabel(infoPiano, Piano_Info[23])  end
  if newValue >= 0.534 && newValue < 0.557 then SetWidgetLabel(namePiano, Piano_List[24]) SetWidgetLabel(infoPiano, Piano_Info[24])  end
  if newValue >= 0.557 && newValue < 0.580 then SetWidgetLabel(namePiano, Piano_List[25]) SetWidgetLabel(infoPiano, Piano_Info[25])  end
  if newValue >= 0.580 && newValue < 0.604 then SetWidgetLabel(namePiano, Piano_List[26]) SetWidgetLabel(infoPiano, Piano_Info[26])  end
  if newValue >= 0.604 && newValue < 0.627 then SetWidgetLabel(namePiano, Piano_List[27]) SetWidgetLabel(infoPiano, Piano_Info[27])  end
  if newValue >= 0.627 && newValue < 0.650 then SetWidgetLabel(namePiano, Piano_List[28]) SetWidgetLabel(infoPiano, Piano_Info[28])  end
  if newValue >= 0.650 && newValue < 0.673 then SetWidgetLabel(namePiano, Piano_List[29]) SetWidgetLabel(infoPiano, Piano_Info[29])  end
  if newValue >= 0.673 && newValue < 0.697 then SetWidgetLabel(namePiano, Piano_List[30]) SetWidgetLabel(infoPiano, Piano_Info[30])  end
  if newValue >= 0.697 && newValue < 0.720 then SetWidgetLabel(namePiano, Piano_List[31]) SetWidgetLabel(infoPiano, Piano_Info[31])  end
  if newValue >= 0.720 && newValue < 0.743 then SetWidgetLabel(namePiano, Piano_List[32]) SetWidgetLabel(infoPiano, Piano_Info[32])  end
  if newValue >= 0.743 && newValue < 0.766 then SetWidgetLabel(namePiano, Piano_List[33]) SetWidgetLabel(infoPiano, Piano_Info[33])  end
  if newValue >= 0.766 && newValue < 0.790 then SetWidgetLabel(namePiano, Piano_List[34]) SetWidgetLabel(infoPiano, Piano_Info[34])  end
  if newValue >= 0.790 && newValue < 0.813 then SetWidgetLabel(namePiano, Piano_List[35]) SetWidgetLabel(infoPiano, Piano_Info[35])  end
  if newValue >= 0.813 && newValue < 0.836 then SetWidgetLabel(namePiano, Piano_List[36]) SetWidgetLabel(infoPiano, Piano_Info[36])  end
  if newValue >= 0.836 && newValue < 0.859 then SetWidgetLabel(namePiano, Piano_List[37]) SetWidgetLabel(infoPiano, Piano_Info[37])  end
  if newValue >= 0.859 && newValue < 0.883 then SetWidgetLabel(namePiano, Piano_List[38]) SetWidgetLabel(infoPiano, Piano_Info[38])  end
  if newValue >= 0.883 && newValue < 0.906 then SetWidgetLabel(namePiano, Piano_List[39]) SetWidgetLabel(infoPiano, Piano_Info[39])  end
  if newValue >= 0.906 && newValue < 0.906 then SetWidgetLabel(namePiano, Piano_List[40]) SetWidgetLabel(infoPiano, Piano_Info[40])  end
  if newValue >= 0.929 && newValue < 0.952 then SetWidgetLabel(namePiano, Piano_List[41]) SetWidgetLabel(infoPiano, Piano_Info[41])  end
  if newValue >= 0.952 && newValue < 0.976 then SetWidgetLabel(namePiano, Piano_List[42]) SetWidgetLabel(infoPiano, Piano_Info[42])  end
  if newValue >= 0.976 && newValue < 0.999 then SetWidgetLabel(namePiano, Piano_List[43]) SetWidgetLabel(infoPiano, Piano_Info[43])  end
  if newValue == 1.0			   then SetWidgetLabel(namePiano, Piano_List[44]) SetWidgetLabel(infoPiano, Piano_Info[44])  end

 End

End

// Piano management by midi channel 
On WidgetValueChanged(newValue : double) from OutChannelMidi
  // Channel midi out 1 for ultimate Stage Pianos
  if GetWidgetValue(OutChannelMidi) == 0.0   && GetWidgetValue(OutChannelMidi) < 0.067 then SetWidgetLabel(namePiano, Piano_List[1])  SetWidgetLabel(infoPiano, Piano_Info[1])   end
  // Channel midi out 2 for Galaxy Vintage-D
  if GetWidgetValue(OutChannelMidi) >= 0.067 && GetWidgetValue(OutChannelMidi) < 0.133 then SetWidgetLabel(namePiano, Piano_List[0])  SetWidgetLabel(infoPiano, Piano_Info[0])   end
  // Prepare for next piano (Channel midi 3 to 16 for future pianos)
  if GetWidgetValue(OutChannelMidi) >= 0.133					       then SetWidgetLabel(namePiano, Piano_List[45]) SetWidgetLabel(infoPiano, Piano_Info[45])  end
  if GetWidgetValue(OutChannelMidi) >= 0.200 && GetWidgetValue(OutChannelMidi) < 0.267 then SetWidgetLabel(namePiano, Piano_List[45]) SetWidgetLabel(infoPiano, Piano_Info[45])  end
  if GetWidgetValue(OutChannelMidi) >= 0.267 && GetWidgetValue(OutChannelMidi) < 0.334 then SetWidgetLabel(namePiano, Piano_List[45]) SetWidgetLabel(infoPiano, Piano_Info[45])  end
  if GetWidgetValue(OutChannelMidi) >= 0.334 && GetWidgetValue(OutChannelMidi) < 0.400 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.400 && GetWidgetValue(OutChannelMidi) < 0.467 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.467 && GetWidgetValue(OutChannelMidi) < 0.534 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.534 && GetWidgetValue(OutChannelMidi) < 0.600 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.600 && GetWidgetValue(OutChannelMidi) < 0.667 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.667 && GetWidgetValue(OutChannelMidi) < 0.734 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.734 && GetWidgetValue(OutChannelMidi) < 0.800 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.800 && GetWidgetValue(OutChannelMidi) < 0.867 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.867 && GetWidgetValue(OutChannelMidi) < 0.934 then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) >= 0.934 && GetWidgetValue(OutChannelMidi) < 1.0   then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end
  if GetWidgetValue(OutChannelMidi) == 1.0                                             then SetWidgetLabel(namePiano, Piano_List[45])  SetWidgetLabel(infoPiano, Piano_Info[45]) end

End

The results



Future plans :

  • Perhaps manage the Synth part of the utimate stage pianos (which I don’t use on a daily basis).
  • Add effects to Gig Performer for electric pianos (Tremolo, autopan, chorus, flanger, overdrive), that would be great.
  • Add other pianos, such as a “Felt Piano” on the midi channel midi 3 or 4 …

Thanks to the Gig Performer team for making Gig Performer, the best tool you can use for live performance.

2 Likes

You’re going to be an expert :grinning:.

Possible improvement: Depending on how often WidgetValueChanged is called, you could use select. This also prevents that there are lots of useless if newValue == tests that result in false are performed, while the one that evaluates to true has already been found.

Furthermore you can also eliminate doing multiple times GetWidgetValue(OutChannelMidi) by using select

More info on the select statement:

1 Like

I’ve taken your comments on board and made the changes.
1/ “Select” instead of using “if”
2/ Change " GetWidgetValue(OutChannelMidi)" by “newValue”
Everything works very well!
Thank you so much

1 Like

really liking the design of the red panel :slight_smile:

1 Like

@Niquau

You have a very nice panels. You may want to share them at some point :slight_smile:

1 Like

Many thanks for your comments :wink:
I promise to share it with you, but I’d like to finish the synth part.

1 Like

And share with us -
panels are awesome

Hi
Did you finish your panels and script for ultimate stage pianos?
Would be great to try out you latest panels we and code ?
Can you upload ?
Cheers

Hello,
I’m constantly updating my panel, but the main base is finished.
What you need to know :
1/ I have removed and do not use the Kontakt effects. I only use the sound part of the ultimate stage pianos and I’ve created a chain of effects (EQ with Fab-Filter Pro-Q, delay and reverb with Valhalla Reverb) in Gig Peformer.
2/ In the panel, I’m not using the FX1 & FX2 part for the moment. I’m considering these 2 options for adding electric piano effects (Disto, Saturation, Tremolo…) at a later date.
3/ There are two red buttons for the Reverb section, which allow you to toggle the 2 reverb levels for the piano and synth.
Finally, in addition to the ultimate stage pianos, I also use other pianos in Kontakt and for each instrument, I use the midi OUT to play it (in the script, I’ve replaced my other pianos with “Instru ch.2”, “instru ch.3”…etc…) if you want to customise your own GIG.

Here are a few screenshots to help you better understand the logic of my GIG.
Panels VIEWS



Wiring VIEWS

And the Files (Key Options, Ultimate Stage and the script)
Ultimate Stage Piano Options.gppanel (251.7 KB)
Ultimate Stage Piano.gppanel (1007.5 KB)
Ultimate Stage Pianos GP.gig (4.9 MB)

Var
   idPiano : widget
   idSynth : widget
   idKontakt : widget
   switchPiano : widget
   switchSynth : widget
   namePiano : widget
   nameSynth : widget
   infoPiano : widget
   barline : widget
   OutChannelMidi : widget

   Piano_List : string Array = ["", "Royal Grand 3D", "Velvet Grand", "Silver Grand", "Italian Grand", "Bright Grand", "Grand Imperial", "Grand Lady D", "Studio Grand 1", "Studio Grand 2", "Concert Grand Close", 
                                "Concert Grand Ambient", "Electric Grand Amped", "Electric Grand CP80", "Electric Grand Gerbstedt", 
                                "Baby Upright", "Amber Upright", "Bambino Upright", "Mellow Upright", "Grand Upright", "Queen Upright", "Black Upright", "HonkyTonk Upright", "Saloon Upright", "Romantic Upright", "BlueSwede Upright", "Rain Piano",  
                                "EP1 MK I, Low Deep", "EP1 MK I, Suitcase, Close Ideal", "EP3 MK II, Shallow Close", "EP4 MK V, Ideal Close", "EP5 MK I Suitcase, Bright Tines", "EP6 Sparkletop Vintage '67", "EP7 Tines Amped", "EP8 Nefertiti MKI", 
                                "Wurlitzer 1 200A", "Wurlitzer 2 Amped",
                                "DigiGrand 1", "DigiGrand 2", "DX Full Tines", "DX Rubba Tines", "Ballad EP1", "Ballad EP2", "Silver EP", "Hybrid EP", 
                                "Instru ch.2", "Instru ch.3", "Instru ch.4", "Instru ch.5", "Instru ch.6", "Instru ch.7", "Instru ch.8", "Instru ch.9", 
                                "Instru ch.10", "Instru ch.11", "Instru ch.12", "Instru ch.13", "Instru ch.14", "Instru ch.15", "Instru ch.16"]
   Piano_Info : string Array = ["", "Yamaha S6", "Blüthner Model 1", "Shigeru Kawai SK-7", "Fazioli", "Yamaha S4", "Bösendorfer Imperial", "Steinway D-274", "Yamaha C7", "Yamaha C7", "Steinway D-274", 
                                "Steinway D-274", "Yamaha CP80", "Yamaha CP80", "Yamaha CP80", 
                                "Nordiska compact", "Grotrian-Steinweg G132", "Baldwin spinet piano", "Bösendorfer C130", "Yamaha U3", "Bösendorfer", "Petrof 132", "Baumgardt", "Baumgardt", "Schimmel Fortissimo 108", "Malmsjö", "Svenska Pianofabriken", 
                                "Rhodes Stage Mk I (1978)", "Rhodes Suitcase Mk I (1975)", "Rhodes Stage Mk II (1981)", "Rhodes Stage Mk V (1984), ideal timbre", "Rhodes Suitcase Mk I (1975)", "Fender Rhodes 'Silvertop' Electric Piano (1967), ideal timbre", "Rhodes Mk I", "Rhodes Suitcase Mk I “Nefertiti Club Göteborg” (1970)",
                                "Wurlitzer A200", "Wurlitzer A200", 
                                "Roland XP80", "Roland RD1000", "FM-based Electric Piano (DX syntheziser)", "FM-based Electric Piano (DX syntheziser)", "Classic sounds from the 80's", "Classic sounds from the 80's", "Classic sounds from the 80's", "Classic sounds from the 80's", 
                                "Instru ch.2", "Instru ch.3", "Instru ch.4", "Instru ch.5", "Instru ch.6", "Instru ch.7", "Instru ch.8", "Instru ch.9", 
                                "Instru ch.10", "Instru ch.11", "Instru ch.12", "Instru ch.13", "Instru ch.14", "Instru ch.15", "Instru ch.16"]
    Synth_List : string Array = ["Access Virus", "Chil Pad", "Cloud Shimmer", "Crystal Saw", "Deep Sea", "Formanta", "Huge Ambient", "Misty Vox", "Munich", "Silver Rain", "String Choir", "Trance Saw", "Unicorn", "Voice Pad", "Warm and Soft", "Watergate"]
   
// **********
// PIANO
// **********

// Return the good name by the knob "idPiano"
On WidgetValueChanged(newValue : double) from idPiano

 If GetWidgetValue(OutChannelMidi) < 0.066 then

  Select
   
   newValue >= 0.0   && newValue < 0.012 do SetWidgetLabel(namePiano, Piano_List[1])  SetWidgetLabel(infoPiano, Piano_Info[1])  SetWidgetValue(idKontakt, 0.0)
   newValue >= 0.012 && newValue < 0.035 do SetWidgetLabel(namePiano, Piano_List[2])  SetWidgetLabel(infoPiano, Piano_Info[2])  SetWidgetValue(idKontakt, 0.02)
   newValue >= 0.035 && newValue < 0.059 do SetWidgetLabel(namePiano, Piano_List[3])  SetWidgetLabel(infoPiano, Piano_Info[3])  SetWidgetValue(idKontakt, 0.05)
   newValue >= 0.059 && newValue < 0.082 do SetWidgetLabel(namePiano, Piano_List[4])  SetWidgetLabel(infoPiano, Piano_Info[4])  SetWidgetValue(idKontakt, 0.07)
   newValue >= 0.082 && newValue < 0.105 do SetWidgetLabel(namePiano, Piano_List[5])  SetWidgetLabel(infoPiano, Piano_Info[5])  SetWidgetValue(idKontakt, 0.10)
   newValue >= 0.105 && newValue < 0.128 do SetWidgetLabel(namePiano, Piano_List[6])  SetWidgetLabel(infoPiano, Piano_Info[6])  SetWidgetValue(idKontakt, 0.12)
   newValue >= 0.128 && newValue < 0.152 do SetWidgetLabel(namePiano, Piano_List[7])  SetWidgetLabel(infoPiano, Piano_Info[7])  SetWidgetValue(idKontakt, 0.15)
   newValue >= 0.152 && newValue < 0.175 do SetWidgetLabel(namePiano, Piano_List[8])  SetWidgetLabel(infoPiano, Piano_Info[8])  SetWidgetValue(idKontakt, 0.17)
   newValue >= 0.175 && newValue < 0.198 do SetWidgetLabel(namePiano, Piano_List[9])  SetWidgetLabel(infoPiano, Piano_Info[9])  SetWidgetValue(idKontakt, 0.19)
   newValue >= 0.198 && newValue < 0.221 do SetWidgetLabel(namePiano, Piano_List[10]) SetWidgetLabel(infoPiano, Piano_Info[10]) SetWidgetValue(idKontakt, 0.21)
   newValue >= 0.221 && newValue < 0.245 do SetWidgetLabel(namePiano, Piano_List[11]) SetWidgetLabel(infoPiano, Piano_Info[11]) SetWidgetValue(idKontakt, 0.24)
   newValue >= 0.245 && newValue < 0.268 do SetWidgetLabel(namePiano, Piano_List[12]) SetWidgetLabel(infoPiano, Piano_Info[12]) SetWidgetValue(idKontakt, 0.26)
   newValue >= 0.268 && newValue < 0.291 do SetWidgetLabel(namePiano, Piano_List[13]) SetWidgetLabel(infoPiano, Piano_Info[13]) SetWidgetValue(idKontakt, 0.28)
   newValue >= 0.291 && newValue < 0.314 do SetWidgetLabel(namePiano, Piano_List[14]) SetWidgetLabel(infoPiano, Piano_Info[14]) SetWidgetValue(idKontakt, 0.31)
   newValue >= 0.314 && newValue < 0.338 do SetWidgetLabel(namePiano, Piano_List[15]) SetWidgetLabel(infoPiano, Piano_Info[15]) SetWidgetValue(idKontakt, 0.33)
   newValue >= 0.338 && newValue < 0.361 do SetWidgetLabel(namePiano, Piano_List[16]) SetWidgetLabel(infoPiano, Piano_Info[16]) SetWidgetValue(idKontakt, 0.35)
   newValue >= 0.361 && newValue < 0.384 do SetWidgetLabel(namePiano, Piano_List[17]) SetWidgetLabel(infoPiano, Piano_Info[17]) SetWidgetValue(idKontakt, 0.38)
   newValue >= 0.384 && newValue < 0.407 do SetWidgetLabel(namePiano, Piano_List[18]) SetWidgetLabel(infoPiano, Piano_Info[18]) SetWidgetValue(idKontakt, 0.40)
   newValue >= 0.407 && newValue < 0.431 do SetWidgetLabel(namePiano, Piano_List[19]) SetWidgetLabel(infoPiano, Piano_Info[19]) SetWidgetValue(idKontakt, 0.42)
   newValue >= 0.431 && newValue < 0.454 do SetWidgetLabel(namePiano, Piano_List[20]) SetWidgetLabel(infoPiano, Piano_Info[20]) SetWidgetValue(idKontakt, 0.45)
   newValue >= 0.454 && newValue < 0.477 do SetWidgetLabel(namePiano, Piano_List[21]) SetWidgetLabel(infoPiano, Piano_Info[21]) SetWidgetValue(idKontakt, 0.47)
   newValue >= 0.477 && newValue < 0.50  do SetWidgetLabel(namePiano, Piano_List[22]) SetWidgetLabel(infoPiano, Piano_Info[22]) SetWidgetValue(idKontakt, 0.49)
   newValue >= 0.50  && newValue < 0.524 do SetWidgetLabel(namePiano, Piano_List[23]) SetWidgetLabel(infoPiano, Piano_Info[23]) SetWidgetValue(idKontakt, 0.52)
   newValue >= 0.524 && newValue < 0.547 do SetWidgetLabel(namePiano, Piano_List[24]) SetWidgetLabel(infoPiano, Piano_Info[24]) SetWidgetValue(idKontakt, 0.54)
   newValue >= 0.547 && newValue < 0.57  do SetWidgetLabel(namePiano, Piano_List[25]) SetWidgetLabel(infoPiano, Piano_Info[25]) SetWidgetValue(idKontakt, 0.56)
   newValue >= 0.57  && newValue < 0.594 do SetWidgetLabel(namePiano, Piano_List[26]) SetWidgetLabel(infoPiano, Piano_Info[26]) SetWidgetValue(idKontakt, 0.59)
   newValue >= 0.594 && newValue < 0.617 do SetWidgetLabel(namePiano, Piano_List[27]) SetWidgetLabel(infoPiano, Piano_Info[27]) SetWidgetValue(idKontakt, 0.61)
   newValue >= 0.617 && newValue < 0.64  do SetWidgetLabel(namePiano, Piano_List[28]) SetWidgetLabel(infoPiano, Piano_Info[28]) SetWidgetValue(idKontakt, 0.63)
   newValue >= 0.64  && newValue < 0.663 do SetWidgetLabel(namePiano, Piano_List[29]) SetWidgetLabel(infoPiano, Piano_Info[29]) SetWidgetValue(idKontakt, 0.66)
   newValue >= 0.663 && newValue < 0.687 do SetWidgetLabel(namePiano, Piano_List[30]) SetWidgetLabel(infoPiano, Piano_Info[30]) SetWidgetValue(idKontakt, 0.68)
   newValue >= 0.687 && newValue < 0.71  do SetWidgetLabel(namePiano, Piano_List[31]) SetWidgetLabel(infoPiano, Piano_Info[31]) SetWidgetValue(idKontakt, 0.70)
   newValue >= 0.71  && newValue < 0.733 do SetWidgetLabel(namePiano, Piano_List[32]) SetWidgetLabel(infoPiano, Piano_Info[32]) SetWidgetValue(idKontakt, 0.73)
   newValue >= 0.733 && newValue < 0.756 do SetWidgetLabel(namePiano, Piano_List[33]) SetWidgetLabel(infoPiano, Piano_Info[33]) SetWidgetValue(idKontakt, 0.75)
   newValue >= 0.756 && newValue < 0.78  do SetWidgetLabel(namePiano, Piano_List[34]) SetWidgetLabel(infoPiano, Piano_Info[34]) SetWidgetValue(idKontakt, 0.77)
   newValue >= 0.78  && newValue < 0.803 do SetWidgetLabel(namePiano, Piano_List[35]) SetWidgetLabel(infoPiano, Piano_Info[35]) SetWidgetValue(idKontakt, 0.80)
   newValue >= 0.803 && newValue < 0.826 do SetWidgetLabel(namePiano, Piano_List[36]) SetWidgetLabel(infoPiano, Piano_Info[36]) SetWidgetValue(idKontakt, 0.82)
   newValue >= 0.826 && newValue < 0.849 do SetWidgetLabel(namePiano, Piano_List[37]) SetWidgetLabel(infoPiano, Piano_Info[37]) SetWidgetValue(idKontakt, 0.84)
   newValue >= 0.849 && newValue < 0.873 do SetWidgetLabel(namePiano, Piano_List[38]) SetWidgetLabel(infoPiano, Piano_Info[38]) SetWidgetValue(idKontakt, 0.86)
   newValue >= 0.873 && newValue < 0.896 do SetWidgetLabel(namePiano, Piano_List[39]) SetWidgetLabel(infoPiano, Piano_Info[39]) SetWidgetValue(idKontakt, 0.88)
   newValue >= 0.896 && newValue < 0.919 do SetWidgetLabel(namePiano, Piano_List[40]) SetWidgetLabel(infoPiano, Piano_Info[40]) SetWidgetValue(idKontakt, 0.90)
   newValue >= 0.919 && newValue < 0.942 do SetWidgetLabel(namePiano, Piano_List[41]) SetWidgetLabel(infoPiano, Piano_Info[41]) SetWidgetValue(idKontakt, 0.92)
   newValue >= 0.942 && newValue < 0.966 do SetWidgetLabel(namePiano, Piano_List[42]) SetWidgetLabel(infoPiano, Piano_Info[42]) SetWidgetValue(idKontakt, 0.95)
   newValue >= 0.966 && newValue < 0.989 do SetWidgetLabel(namePiano, Piano_List[43]) SetWidgetLabel(infoPiano, Piano_Info[43]) SetWidgetValue(idKontakt, 0.97)
   newValue >= 0.989		             do SetWidgetLabel(namePiano, Piano_List[44]) SetWidgetLabel(infoPiano, Piano_Info[44]) SetWidgetValue(idKontakt, 1.0)

  End   
    
 End

End

// Return the good name by midi channel 1 to 16
On WidgetValueChanged(newValue : double) from OutChannelMidi

 Select

  newValue == 0.0   && newValue < 0.034 do SetWidgetLabel(namePiano, Piano_List[1])  SetWidgetLabel(infoPiano, Piano_Info[1])  SetWidgetValue(switchPiano, 1.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.034 && newValue < 0.10  do SetWidgetLabel(namePiano, Piano_List[45]) SetWidgetLabel(infoPiano, Piano_Info[45]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.10  && newValue < 0.167 do SetWidgetLabel(namePiano, Piano_List[46]) SetWidgetLabel(infoPiano, Piano_Info[46]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.167 && newValue < 0.234 do SetWidgetLabel(namePiano, Piano_List[47]) SetWidgetLabel(infoPiano, Piano_Info[47]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.234 && newValue < 0.30  do SetWidgetLabel(namePiano, Piano_List[48]) SetWidgetLabel(infoPiano, Piano_Info[48]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.30  && newValue < 0.367 do SetWidgetLabel(namePiano, Piano_List[49]) SetWidgetLabel(infoPiano, Piano_Info[49]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.367 && newValue < 0.434 do SetWidgetLabel(namePiano, Piano_List[50]) SetWidgetLabel(infoPiano, Piano_Info[50]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.434 && newValue < 0.50  do SetWidgetLabel(namePiano, Piano_List[51]) SetWidgetLabel(infoPiano, Piano_Info[51]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.50  && newValue < 0.567 do SetWidgetLabel(namePiano, Piano_List[52]) SetWidgetLabel(infoPiano, Piano_Info[52]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.567 && newValue < 0.634 do SetWidgetLabel(namePiano, Piano_List[53]) SetWidgetLabel(infoPiano, Piano_Info[53]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.634 && newValue < 0.701 do SetWidgetLabel(namePiano, Piano_List[54]) SetWidgetLabel(infoPiano, Piano_Info[54]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.701 && newValue < 0.767 do SetWidgetLabel(namePiano, Piano_List[55]) SetWidgetLabel(infoPiano, Piano_Info[55]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.767 && newValue < 0.834 do SetWidgetLabel(namePiano, Piano_List[56]) SetWidgetLabel(infoPiano, Piano_Info[56]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.834 && newValue < 0.901 do SetWidgetLabel(namePiano, Piano_List[57]) SetWidgetLabel(infoPiano, Piano_Info[57]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.901 && newValue < 0.967 do SetWidgetLabel(namePiano, Piano_List[58]) SetWidgetLabel(infoPiano, Piano_Info[58]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)
  newValue >= 0.967                     do SetWidgetLabel(namePiano, Piano_List[59]) SetWidgetLabel(infoPiano, Piano_Info[59]) SetWidgetValue(switchPiano, 0.0) SetWidgetValue(idKontakt, 0.0)

 End

End

// **********
// SYNTH
// **********

// Function to convert right name of synth
Function NameOfSynth(newValue : double)

  Select

   newValue >= 0.0   && newValue < 0.034 do SetWidgetLabel(nameSynth, Synth_List[0])
   newValue >= 0.034 && newValue < 0.10  do SetWidgetLabel(nameSynth, Synth_List[1])
   newValue >= 0.10  && newValue < 0.167 do SetWidgetLabel(nameSynth, Synth_List[2])
   newValue >= 0.167 && newValue < 0.234 do SetWidgetLabel(nameSynth, Synth_List[3])
   newValue >= 0.234 && newValue < 0.30  do SetWidgetLabel(nameSynth, Synth_List[4])
   newValue >= 0.30  && newValue < 0.367 do SetWidgetLabel(nameSynth, Synth_List[5])
   newValue >= 0.367 && newValue < 0.434 do SetWidgetLabel(nameSynth, Synth_List[6])
   newValue >= 0.434 && newValue < 0.50  do SetWidgetLabel(nameSynth, Synth_List[7])
   newValue >= 0.50  && newValue < 0.567 do SetWidgetLabel(nameSynth, Synth_List[8])
   newValue >= 0.567 && newValue < 0.634 do SetWidgetLabel(nameSynth, Synth_List[9])
   newValue >= 0.634 && newValue < 0.70  do SetWidgetLabel(nameSynth, Synth_List[10])
   newValue >= 0.70  && newValue < 0.767 do SetWidgetLabel(nameSynth, Synth_List[11])
   newValue >= 0.767 && newValue < 0.834 do SetWidgetLabel(nameSynth, Synth_List[12])
   newValue >= 0.834 && newValue < 0.90  do SetWidgetLabel(nameSynth, Synth_List[13])
   newValue >= 0.90  && newValue < 0.967 do SetWidgetLabel(nameSynth, Synth_List[14])
   newValue >= 0.967			         do SetWidgetLabel(nameSynth, Synth_List[15])

  end
  
End

// Synth name settings according to the value returned by the Synth Knob (idSynth)
On WidgetValueChanged(newValue : double) from idSynth

 If GetWidgetValue(switchSynth) == 1.0 then 
  
  NameOfSynth(newValue)
 
 Else
 
  SetWidgetLabel(nameSynth, "")

 End

End

On WidgetValueChanged(newValue : double) from switchSynth

 If newValue == 1.0 then
   NameOfSynth(GetWidgetValue(idSynth))
   SetWidgetHideOnPresentation(nameSynth, false)
   SetWidgetHideOnPresentation(barline, false)
   
 else
    SetWidgetHideOnPresentation(nameSynth, true)
    SetWidgetHideOnPresentation(barline, true)
 end
 
End

// ***********
// TOUCH PANEL
// ***********

var
   pianoTouch : widget
   nTouch, hTouch, lTouch : widget
   
On WidgetValueChanged(touchValue : double) from nTouch

 if touchValue == 1.0 then
    
  SetWidgetValue(pianoTouch, 0.572)
  SetWidgetValue(hTouch, 0.0)
  SetWidgetValue(lTouch, 0.0)
  
 end
 
End
On WidgetValueChanged(touchValue : double) from hTouch

 if touchValue == 1.0 then
    
  SetWidgetValue(pianoTouch, 0.286)
  SetWidgetValue(nTouch, 0.0)
  SetWidgetValue(lTouch, 0.0)
  
 end
 
End
On WidgetValueChanged(touchValue : double) from lTouch

 if touchValue == 1.0 then
  SetWidgetValue(pianoTouch, 0.858)
  SetWidgetValue(nTouch, 0.0)
  SetWidgetValue(hTouch, 0.0)
 end
 
End

// ****************************
// SWITCH PANEL REVERB Piano or Synth
var
 swtPiano, swtSynth : widget
 btnRevPiano1, btnRevPiano2, vuMtrRevPiano : widget // Piano
 btnRevSynth1, btnRevSynth2, vuMtrRevSynth : widget // Synth

 pianoRev : widget array = [btnRevPiano1, btnRevPiano2, vuMtrRevPiano] // array for piano
 synthRev : widget array = [btnRevSynth1, btnRevSynth2, vuMtrRevSynth] // array synth

// Function to hide/unhide a group of faders
function HideThem (groupToHide : widget array, groupToShow : widget array)
var index : integer
    For index = 0; index< Size(groupToHide); index = index +1 Do
        SetWidgetHideOnPresentation(groupToHide[index], true)
        SetWidgetHideOnPresentation(groupToShow[index], false)
    end
End

On WidgetValueChanged(newValue : double) from swtPiano

 If newValue == 1.0 then
 
  HideThem (synthRev, pianoRev)
  ResetWidgetValue(swtSynth)
 
 end
 
End

On WidgetValueChanged(newValue : double) from swtSynth

 If newValue == 1.0 then
 
  HideThem (pianoRev, synthRev)
  ResetWidgetValue(swtPiano)
 
 end
 
End
1 Like

If you upload the gig file, then also all the Wiring will be included :slight_smile:

Be good to have all files and a working gigfile to try this out- cheers