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