My 1st script is working but

This is bugging me. I hope it’s not too long a question. I couldn’t find it covered anywhere. I have my 1st script. What I wanted was to have 10 plugins(guitar pedals) that I can choose from and a clean uncluttered way to edit parameters. So I have 10 buttons for pedals and added 9 sliders and 6 more buttons to be assigned to various parameters I might want to change. These refer to the last selected pedal. One button will open and close the plugin. It works great except for when I first start the rackspace. One of my plugin windows starts open even after I tried closing them all in Initialize. I noticed after initialize a bunch of my callbacks get called including the one that opens my plugins. It was being called once and opened the last plugin. I put something in to ignore the 1st call to that call back and so far it works just like I want but I wonder why that happens? Any tips? Thanks in advance
Tim
PS. my code is not pretty and I may have done something stupid. It would be cleaner I think if I could have used an Array of Arrays but I’m not a real progammer.

Your code looks quite clean from here :wink:

Could you share some excerpts/details to have a look at?

1 Like

Happy to share if this is appropriate. I cut and pasted the whole script but it’s kind of long. Right now I’m using free plugins from Melda and TH-U so I could share the gig file if anyone is interested. In time I will use some others but the Melda free stuff sounds pretty nice.

var

current_button : integer = 0 
r,t : double
st,st2 : string
wait_to_open : boolean = False

Slider_1,Slider_2,Slider_3,Slider_4,Slider_5 : widget
Slider_6,Slider_7,Slider_8,Slider_9 : widget
FX_WIDGET_1,FX_WIDGET_2,FX_WIDGET_3,FX_WIDGET_4,FX_WIDGET_5 : widget
FX_WIDGET_6,FX_WIDGET_7,FX_WIDGET_8,FX_WIDGET_9,FX_WIDGET_10 : widget
Global_Switch,Open_Plugin,Previous_Button,Next_Button : widget
PLUGIN_NAME,RESET_DEFAULT,DO_TEST,SET_TEST: widget
P_BUTTON_1,P_BUTTON_2,P_BUTTON_3,P_BUTTON_4,P_BUTTON_5,P_BUTTON_6 : widget

SLIDERS : widget Array = [Slider_1,Slider_2,Slider_3,Slider_4,Slider_5,Slider_6,Slider_7,Slider_8,Slider_9]
BUTTONS : widget Array = [P_BUTTON_1,P_BUTTON_2,P_BUTTON_3,P_BUTTON_4,P_BUTTON_5,P_BUTTON_6]
FX_WIDGETS : widget Array = [FX_WIDGET_1,FX_WIDGET_2,FX_WIDGET_3,FX_WIDGET_4,FX_WIDGET_5,FX_WIDGET_6,FX_WIDGET_7,FX_WIDGET_8,FX_WIDGET_9,FX_WIDGET_10]

LP_FILTER,PHASER,FLANGER,TREMELO,FREQUENCY_SHIFTER,DELAY,VIBRATO,EQUALIZER,CONVOLUTION,REVERB : PluginBlock
EV_FOLLOWER : PluginBlock
FX_BLOCKS : PluginBlock Array = [LP_FILTER,PHASER,FLANGER,TREMELO,FREQUENCY_SHIFTER,DELAY,VIBRATO,EQUALIZER,CONVOLUTION,REVERB]
FX_Names : string Array = ["Mutron","Phaser","Flanger","Tremelo","Frequency Shift","Dual Delay","Vibrato","Equalizer","Convolver","Reverb"]
FX_Names_short : string Array = ["Mutron","Phaser","Flanger","Tremelo","FrqShft","Delay","Vibrato","Equlizer","Convolve","Reverb"]

Is_Plugin_Open : Boolean Array = [False,False,False,False,False,False,False,False,False,False]

Mutron_Slider_Labels :string Array = ["Q","Slope","Output"]
Mutron_Slider_Params : integer Array = [8,9,1]
Mutron_Slider_Defaults : double Array = [0.51879,0.3636,0.5338]
Mutron_Button_Labels : string Array = []
Mutron_Button_Params : integer Array = []
Mutron_Button_Defaults : double Array = []

Phaser_Slider_Labels :string Array = ["Min","Max","Rate","Fdbk","Mode","Width","Sat","Shape","Mix"]
Phaser_Slider_Params : integer Array = [1,2,3,4,5,6,7,9,0]
Phaser_Slider_Defaults : double Array = [0.4336,0.6344,0.6058,0.5012,0.0505,0.75,0.0,1.0,0.714]
Phaser_Button_Labels : string Array = ["Sync"]
Phaser_Button_Params : integer Array = [11]
Phaser_Button_Defaults : double Array = [1.0]

Flanger_Slider_Labels :string Array = ["Min","Max","Depth","Range","Rate","Fdbk","Width","Sat","Jet"]
Flanger_Slider_Params : integer Array = [8,9,1,2,3,4,5,12,10]
//Flanger_Slider_Defaults : double Array = [0.0,0.75,0.2828,0.2920,0.025,0.755,0.100,1.0,0.25]
Flanger_Slider_Defaults : double Array = [0.1,1.0,0.75,0.2828,0.2920,0.648,0.500,0.0,0.5]
Flanger_Button_Labels : string Array = ["Sync"]
Flanger_Button_Params : integer Array = [13]
Flanger_Button_Defaults : double Array = [1.0]

Tremelo_Slider_Labels :string Array = ["Depth","Rate","Width","Length","Type","Phase","Count"]
Tremelo_Slider_Params : integer Array = [0,1,2,6,7,8,15]
Tremelo_Slider_Defaults : double Array = [0.40,0.4,0.05,0.6,0.19,0.25,0.03]
Tremelo_Button_Labels : string Array = ["Sync"]
Tremelo_Button_Params : integer Array = [5]
Tremelo_Button_Defaults : double Array = [1.0]

FreqSh_Slider_Labels :string Array = ["Mix","Shift","Width","Fdbk","Delay","Charct","Length","Type","Count"]
FreqSh_Slider_Params : integer Array = [0,1,2,3,4,5,8,9,16]
FreqSh_Slider_Defaults : double Array = [1.00,0.473,0.711,0.607,0.1,0.0,6667.714,0.0,0.0]
FreqSh_Button_Labels : string Array = ["Sync"]
FreqSh_Button_Params : integer Array = [7]
FreqSh_Button_Defaults : double Array = [1.0]

Delay_Slider_Labels :string Array = ["Dry","Gain 1","Time 1 2","Fdbk 1","Gain 2","Time 2","Fdbk 2","LP","HP"]
Delay_Slider_Params : integer Array = [0,9,11,8,18,20,17,3,4]
Delay_Slider_Defaults : double Array = [1.00,0.844,0.46,0.3,0.996,0.416,0.4,0.17,0.92]
Delay_Button_Labels : string Array =  ["D 1","D 2","Fz 1","Fz 2","Snc 1","Snc 2"]
Delay_Button_Params : integer Array = [7,16,15,24,25,28]
Delay_Button_Defaults : double Array = [1.0,0.0,0.0,0.0,0.0,0.0]

Vibrato_Slider_Labels :string Array = ["Depth","Rate","Width","Tremelo","TM Phase","Length","Type","Phase","Count"]
Vibrato_Slider_Params : integer Array = [0,1,2,3,4,9,10,11,18]
Vibrato_Slider_Defaults : double Array = [0.072,0.844,0.88,0.36,0.431,0.714,0.0,0.25,0.00]
Vibrato_Button_Labels : string Array = ["Sync","RS","Pr","Ne"]
Vibrato_Button_Params : integer Array = [8,7,16,17]
Vibrato_Button_Defaults : double Array = [1.0,0.0,0.0,0.0]

Equalizer_Slider_Labels :string Array = ["Freq 1","Freq 2 1","Freq 3","Gain 1","Gain 2","Gain 3","Blend","Shift","Level"]
Equalizer_Slider_Params : integer Array = [4,11,18,5,12,19,10,51,1]
Equalizer_Slider_Defaults : double Array = [0.25,0.514,0.768,0.413,0.543,0.427,1.0,0.536,0.588]
Equalizer_Button_Labels : string Array = ["B1","B2","B3","MB","Pr","Ne"]
Equalizer_Button_Params : integer Array = [3,10,17,24,49,50]
Equalizer_Button_Defaults : double Array = [1.0,1.0,1.0,0.0,1.0,1.0]



Convolve_Slider_Labels :string Array = ["Mix","Wide","HP","LP","Pre","IR"]
Convolve_Slider_Params : integer Array = [0,1,2,3,8,4]
Convolve_Slider_Defaults : double Array = [0.16,0.00,0.14,0.80,0.1,0.2545455]
Convolve_Button_Labels : string Array = []
Convolve_Button_Params : integer Array = []
Convolve_Button_Defaults : double Array = []


Reverb_Slider_Labels :string Array = ["Mix","Len","Size","LP","HP","Pre","Gain","DfL","DfH"]
Reverb_Slider_Params : integer Array = [4,5,6,7,8,9,10,13,17]
Reverb_Slider_Defaults : double Array = [0.25,0.2859,0.85,0.699,1.0,0.4162,0.5,0.4337,0.91]
Reverb_Button_Labels : string Array = ["DL","DH"]
Reverb_Button_Params : integer Array = [12,16]
Reverb_Button_Defaults : double Array = [1.0,0.0]

//Up to 9 for 9 sliders for each Effect
number_of_params_per_fx : integer Array = [Size(Mutron_Slider_Labels),Size(Phaser_Slider_Labels),Size(Flanger_Slider_Labels),Size(Tremelo_Slider_Labels),Size(FreqSh_Slider_Labels),Size(Delay_Slider_Labels),Size(Vibrato_Slider_Labels),Size(Equalizer_Slider_Labels),Size(Convolve_Slider_Labels),Size(Reverb_Slider_Labels)]
// up to 6 Buttons for each Effect
number_of_button_params_per_fx : integer Array = [Size(Mutron_Button_Params),Size(Phaser_Button_Params),Size(Flanger_Button_Params),Size(Tremelo_Button_Labels),Size(FreqSh_Button_Labels),Size(Delay_Button_Params),Size(Vibrato_Button_Params),Size(Equalizer_Button_Labels),Size(Convolve_Button_Labels),Size(Reverb_Button_Labels)]

Function TestDelay() Autotype
   var
     i : integer
     r : double
     s : string

        For i = 0; i < number_of_params_per_fx[5]; i = i + 1 Do
           r = GetParameter(FX_BLOCKS[5],Delay_Slider_Params[i])
           s = " Check "+IntToString(i)+" "+DoubleToString(Delay_Slider_Params[i],3)+" "+DoubleToString(r,3)
           Print(s)
        End
End

Function SetDefaults(cb: integer, newValue : double) Autotype

 // TAB TEST 2 Is SetParameter neccessary in this callback because SetWidget launcshes a call back that leads to 
 //       setting parameters anyway - or does it
 var
  i : integer
  s : String
 s = "In SetDefaults newValue = "+DoubleToString(newValue,3)
 Print(s)
 if newValue == 1.0 then
  //Print("Reset Start")

  Select

    cb == 0 Do
        Print("Set Defaults 0")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Mutron_Slider_Params[i],Mutron_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Mutron_Slider_Defaults[i])
        End
    
    cb == 1 Do
        Print("Set Defaults 1")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Phaser_Slider_Params[i],Phaser_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Phaser_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Phaser_Button_Params[i],Phaser_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Phaser_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Phaser_Button_Defaults[i])
        End 
        
    cb == 2 Do
        Print("Set Defaults 2")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Flanger_Slider_Params[i],Flanger_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Flanger_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Flanger_Button_Params[i],Flanger_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Flanger_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Flanger_Button_Defaults[i])
        End 
        
    cb == 3 Do
        Print("Set Defaults 3")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Tremelo_Slider_Params[i],Tremelo_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Tremelo_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Tremelo_Button_Params[i],Tremelo_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Tremelo_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Tremelo_Button_Defaults[i])
        End 
        
    cb == 4 Do
        Print("Set Defaults 4")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],FreqSh_Slider_Params[i],FreqSh_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],FreqSh_Slider_Defaults[i])
           //r = GetParameter(FX_BLOCKS[currrent_block],FreqSh_Slider_Params[i])
           //Print(i)
           //Print(r)

           
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],FreqSh_Button_Params[i],FreqSh_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],FreqSh_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],FreqSh_Button_Defaults[i])
        End 
        
    cb == 5 Do
        Print("Set Dela 5")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           s = "  Dealy stuff "+IntToString(i)+" "+IntToString(Delay_Slider_Params[i])+" "+DoubleToString(Delay_Slider_Defaults[i],3)
           Print(s)
           SetParameter(FX_BLOCKS[cb],Delay_Slider_Params[i],Delay_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Delay_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Delay_Button_Params[i],Delay_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Delay_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Delay_Button_Defaults[i])
        End 
        
    cb == 6 Do
        Print("Set Defaults 6")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Vibrato_Slider_Params[i],Vibrato_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Vibrato_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Vibrato_Button_Params[i],Vibrato_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Vibrato_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Vibrato_Button_Defaults[i])
        End 
        
    cb == 7 Do
        Print("Set Defaults 7")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Equalizer_Slider_Params[i],Equalizer_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Equalizer_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Equalizer_Button_Params[i],Equalizer_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Equalizer_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Equalizer_Button_Defaults[i])
        End 
        
    cb == 8 Do
        Print("Set Defaults 8")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Convolve_Slider_Params[i],Convolve_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Convolve_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Convolve_Button_Params[i],Convolve_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Convolve_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Convolve_Button_Defaults[i])
        End 
        
    cb == 9 Do
        Print("Set Defaults 9")
        For i = 0; i < number_of_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Reverb_Slider_Params[i],Reverb_Slider_Defaults[i])
           //SetWidgetValue(SLIDERS[i],Reverb_Slider_Defaults[i])
        End
        For i = 0; i < number_of_button_params_per_fx[cb]; i = i + 1 Do
           SetParameter(FX_BLOCKS[cb],Reverb_Button_Params[i],Reverb_Button_Defaults[i])
           //SetWidgetLabel(BUTTONS[i],Reverb_Button_Labels[i])
           //SetWidgetValue(BUTTONS[i],Reverb_Button_Defaults[i])
        End 
        
        
    end //Select
   end  //end if newValue
   Print("SetDefaults Done")   

End // Function




Initialization
 var
  m : integer
 Print("INIT")
 For m = 0; m < Size(SLIDERS); m = m + 1 Do
   SetWidgetLabel(SLIDERS[m],"")
 End
 For m = 0; m < Size(BUTTONS); m = m + 1 Do
   SetWidgetLabel(BUTTONS[m],"")
 End
 For m = 0; m < Size(FX_WIDGETS); m = m + 1 Do
   SetWidgetLabel(FX_WIDGETS[m],FX_Names_short[m])
   //ClosePlugin(FX_BLOCKS[m])
   //SetWidgetValue(FX_WIDGETS[m],0.0)
   current_button=m
   Print(current_button)
   Print("Should be calling RESET")
   //SetWidgetValue(RESET_DEFAULT,1.0)  ///TAB 1 TEST ??? Is this necessary
   //SetWidgetValue(RESET_DEFAULT,0.0)  ///TAB 1 TEST ??? Is this necessary
   SetDefaults(current_button ,1.0)
 End
 current_button=0
 Print("111111")
 //SetWidgetValue(DO_TEST,1.0)
 /*TestDelay()
 SetDefaults(5 ,1.0)
 Print("22222")
 TestDelay()
 SetDefaults(6 ,1.0)
 Print("333")
 TestDelay()
 SetDefaults(7 ,1.0)
 Print("44444")
 TestDelay()
 SetDefaults(8 ,1.0)
 Print("55555")
 TestDelay()
 SetDefaults(9 ,1.0)
 Print("666666")
 TestDelay()
 */
 Print("Done INIT")
 
End

On WidgetValueChanged(w : Widget, index: integer, newValue : double) from FX_WIDGET_1,FX_WIDGET_2,FX_WIDGET_3,FX_WIDGET_4,FX_WIDGET_5,FX_WIDGET_6,FX_WIDGET_7,FX_WIDGET_8,FX_WIDGET_9,FX_WIDGET_10
   var
     i : integer
   Print("WIDGETS")
   current_button = index
   SetWidgetLabel(PLUGIN_NAME,FX_Names[index])
   SetWidgetLabel(FX_WIDGETS[index],FX_Names_short[index])
   SetWidgetValue(Global_Switch,newValue)
   //Print("Into WidgetValueChanged for 10 Effect Buttons")
   //Print(GetWidgetLabel(FX_WIDGETS[index]))
   For i = 0; i < Size(SLIDERS); i = i + 1 Do
      SetWidgetLabel(SLIDERS[i],"") // Erase Labels
   End
   For i = 0; i < Size(BUTTONS); i = i + 1 Do
      SetWidgetLabel(BUTTONS[i],"") // Erase Labels
   End
   //Print("Array Sizes")
   //Print(number_of_params_per_fx[current_button])
   //Print(number_of_button_params_per_fx[current_button])
   //Print(current_button)
   if newValue >= 0.0then
    Select
      index == 0 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Mutron_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Mutron_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Mutron_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Mutron_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End
      
      index == 1 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Phaser_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Phaser_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Phaser_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Phaser_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
      
      index == 2 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Flanger_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Flanger_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Flanger_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Flanger_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
      
      index == 3 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Tremelo_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Tremelo_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Tremelo_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Tremelo_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
      
      index == 4 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],FreqSh_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],FreqSh_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],FreqSh_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],FreqSh_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
        //Print("Done 4")
      
      index == 5 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Delay_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Delay_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Delay_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Delay_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
        //Print("Done 5")
      
      index == 6 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Vibrato_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Vibrato_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Vibrato_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Vibrato_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
      
      index == 7 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Equalizer_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Equalizer_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Equalizer_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Equalizer_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
      
      index == 8 Do
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           //Print(i)
           SetWidgetLabel(SLIDERS[i],Convolve_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Convolve_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Convolve_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Convolve_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
        
      index == 9 Do
        //Print("into 10")
        For i = 0; i < number_of_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(SLIDERS[i],Reverb_Slider_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Reverb_Slider_Params[i])
           SetWidgetValue(SLIDERS[i],r)
        End  
        For i = 0; i < number_of_button_params_per_fx[current_button]; i = i + 1 Do
           SetWidgetLabel(BUTTONS[i],Reverb_Button_Labels[i])
           r = GetParameter(FX_BLOCKS[index],Reverb_Button_Params[i])
           SetWidgetValue(BUTTONS[i],r)
        End 
        //Print("Done 9")   

    End //Select
   end
   //Print("Select Buttons Out")
End // Effect Widget Buttons

On WidgetValueChanged(w : Widget, index: integer, newValue : double) from Slider_1,Slider_2,Slider_3,Slider_4,Slider_5,Slider_6,Slider_7,Slider_8,Slider_9

  Print("Into Sliders")
  //Print(GetWidgetLabel(FX_WIDGETS[current_button]))
  //Print(index)
  //Print(newValue)

  Select

      current_button == 0 Do
        if index < Size(Mutron_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Mutron_Slider_Params[index],newValue)
        end
      current_button == 1 Do
        if index < Size(Phaser_Slider_Params) then
          Print(index)
          Print(Size(Phaser_Slider_Params))
          SetParameter(FX_BLOCKS[current_button],Phaser_Slider_Params[index],newValue)  
        end
      current_button == 2 Do
        if index < Size(Flanger_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Flanger_Slider_Params[index],newValue)     
        end
      current_button == 3 Do
        if index < Size(Tremelo_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Tremelo_Slider_Params[index],newValue)     
        end
      current_button == 4 Do
        if index < Size(FreqSh_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],FreqSh_Slider_Params[index],newValue)     
        end
      current_button == 5 Do
        if index < Size(Delay_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Delay_Slider_Params[index],newValue)     
        end
      current_button == 6 Do
        if index < Size(Vibrato_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Vibrato_Slider_Params[index],newValue)     
        end
      current_button == 7 Do
        if index < Size(Equalizer_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Equalizer_Slider_Params[index],newValue)     
        end
      current_button == 8 Do
        if index < Size(Convolve_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Convolve_Slider_Params[index],newValue)     
        end
      current_button == 9 Do
        if index < Size(Reverb_Slider_Params) then
          SetParameter(FX_BLOCKS[current_button],Reverb_Slider_Params[index],newValue)     
        end

  End
  //Print("Sliders Out")

End


On WidgetValueChanged(w : Widget, index: integer, newValue : double) from Open_Plugin
 Print("Into Open")
 if wait_to_open then 
  if current_button >= 0 and current_button <= 9 then    
    if Is_Plugin_Open[current_button] then
        ClosePlugin(FX_BLOCKS[current_button])
        Is_Plugin_Open[current_button] = False
    else
        OpenPlugin(FX_BLOCKS[current_button])
        Is_Plugin_Open[current_button] = True
    end
  end
 else
    wait_to_open = True
 end
End

On WidgetValueChanged(w : Widget, index: integer, newValue : double) from Previous_Button,Next_Button
  Print("Into P/N")
  // Should be handy for a foot controller to move through FX
  if newValue == 1.0 then
    if index == 0 then
        current_button = current_button - 1
    else
        current_button = current_button + 1
    end
    if current_button < 0 then
       current_button = 9
    end
    if current_button > 9 then
       current_button = 0
    end
    r = GetWidgetValue(FX_WIDGETS[current_button])
    if r == 0.0 then
        SetWidgetValue(FX_WIDGETS[current_button],1.0)
    //else
    //    SetWidgetValue(FX_WIDGETS[current_button],0.0) // Not sure about this
    end
  end

End // Previous and Next Button


On WidgetValueChanged(w : Widget, index: integer, newValue : double) from RESET_DEFAULT

 // TAB TEST 2 Is SetParameter neccessary in this callback because SetWidget launcshes a call back that leads to 
 //       setting parameters anyway - or does it
 var
  i : integer
 Print("Into RESET")
 SetDefaults(current_button,newValue)

End // RESET DEFAULT

On WidgetValueChanged(w : Widget, index: integer, newValue : double) from DO_TEST,SET_TEST
  var
   i : integer
   s : string
  //if newValue == 1.0 then
     Print("current")
     Print(current_button)
     Print("------")
     if index == 0 then
        For i = 0; i < number_of_params_per_fx[5]; i = i + 1 Do
           r = GetParameter(FX_BLOCKS[5],Delay_Slider_Params[i])
           s = " Check "+IntToString(i)+" "+DoubleToString(Delay_Slider_Params[i],3)+" "+DoubleToString(r,3)
           Print(s)
           //Print(i)
           //Print(
           //Print(yr)
        End
     elsif index == 1 then
        For i = 0; i < number_of_params_per_fx[5]; i = i + 1 Do
           SetDefaults(i,1.0)
        end

        //SetParameter(FX_BLOCKS[4],FreqSh_Slider_Params[1],FreqSh_Slider_Defaults[1])    
     end
  //end
End


On WidgetValueChanged(w : Widget, index: integer, newValue : double) from P_BUTTON_1,P_BUTTON_2,P_BUTTON_3,P_BUTTON_4,P_BUTTON_5,P_BUTTON_6 
    Print("Intp P_BUTTON")
  //if newValue == 1.0 then
    Select

      //current_button == 0 Do
          //SetParameter(FX_BLOCKS[current_button],Mutron_Button_Params[index],newValue)
      current_button == 1 Do
        if index < Size(Phaser_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Phaser_Button_Params[index],newValue) 
        end
      current_button == 2 Do
        if index < Size(Flanger_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Flanger_Button_Params[index],newValue)    
        end
      current_button == 3 Do
        if index < Size(Tremelo_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Tremelo_Button_Params[index],newValue)    
        end
      current_button == 4 Do
        if index < Size(FreqSh_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],FreqSh_Button_Params[index],newValue)    
        end
      current_button == 5 Do
        if index < Size(Delay_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Delay_Button_Params[index],newValue)    
        end
      current_button == 6 Do
        if index < Size(Vibrato_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Vibrato_Button_Params[index],newValue)    
        end
      current_button == 7 Do
        if index < Size(Equalizer_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Equalizer_Button_Params[index],newValue)    
        end
      //current_button == 8 Do
          //SetParameter(FX_BLOCKS[current_button],Convolve_Button_Params[index],newValue)    
      current_button == 9 Do
        if index < Size(Reverb_Button_Params) then
          SetParameter(FX_BLOCKS[current_button],Reverb_Button_Params[index],newValue)    
        end

    End // Select
  //End  //if
   //Print("Buttons Done")
End  

// Setup a Button to attach to a foot pedal to work on the current Effect
On WidgetValueChanged(w : Widget, index: integer, newValue : double) from Global_Switch
    Print("Intp GLOBAL")
    SetWidgetValue(FX_WIDGETS[current_button],newValue)
End

on activate
 var
 m : integer
 For m = 0; m < Size(FX_WIDGETS); m = m + 1 Do
   SetWidgetLabel(FX_WIDGETS[m],FX_Names_short[m])
   //ClosePlugin(FX_BLOCKS[m])
   SetWidgetValue(FX_WIDGETS[m],0.0)
 end
end