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
)
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.