Create Menue for defined FX Parameter to choose from

Hy there,
I’ve tried to create my first own Script and after a lot of searching, combining and testing the first Part is working.
I’ve defined different FX Parameter on different Busses and now I can connect them to a Knob or Slider. The only thing that will not work ist to define the Filter Cutoff and the Resonance. I think that this should be quite simple but maybe not for me.
The idea for the second Part is to put the defined Parameter into two Menues. Each is connectet to a Knob or Slider, so I can choose which Parameter will be Controlled, like a little Mod Matrix.
But what is the best way to do it?
The Script at the Moment (later I will add more Parameters but for the moment it is enough) is as followed:

--Define FX Parameters
effects = this.program:findEffects(true)

--REVerence Mix
function onBoostChange()
  local revmixEffect = this.parent:getBus("FX1"):getEffect("REVerence")
  if revmixEffect then
    revmixEffect:setParameter("mix", Reverbmix)
  end
end

defineParameter("Reverbmix","Reverb Mix",50,0,100,1,onBoostChange)

--REVerence Time
function onBoostChange()
  local revtimeEffect = this.parent:getBus("FX1"):getEffect("REVerence")
  if revtimeEffect then
    revtimeEffect:setParameter("time", Reverbtime)
  end
end

defineParameter("Reverbtime","Reverb Time",100,10,150,1,onBoostChange)

--REVerence Size
function onBoostChange()
  local revsizeEffect = this.parent:getBus("FX1"):getEffect("REVerence")
  if revsizeEffect then
    revsizeEffect:setParameter("size", Reverbsize)
  end
end

defineParameter("Reverbsize","Reverb Size",100,10,150,1,onBoostChange)

--Delay Mix
function onBoostChange()
  local delaymixEffect = this.parent:getBus("FX1"):getEffect("Multi Delay")
  if delaymixEffect then
    delaymixEffect:setParameter("Mix", Delaymix)
  end
end

defineParameter("Delaymix","Delay Mix",0,0,100,1,onBoostChange)

--Delay Time
function onBoostChange()
  local delaytimeoverEffect = this.parent:getBus("FX1"):getEffect("Multi Delay")
  if delaytimeoverEffect then
    delaytimeoverEffect:setParameter("delaytimeoverall", Freetime)
  end
end

defineParameter("Freetime","Free Time",500,0.1,5000,0.1,onBoostChange)

--Chorus Mix
function onBoostChange()
  local chorusmixEffect = this.parent:getBus("FX2"):getEffect("Chorus")
  if chorusmixEffect then
    chorusmixEffect:setParameter("Mix", Chorusmix)
  end
end

defineParameter("Chorusmix","Chorus Mix",50,0,100,1,onBoostChange)

--Chorus Rate
function onBoostChange()
  local chorusrateEffect = this.parent:getBus("FX2"):getEffect("Chorus")
  if chorusrateEffect then
    chorusrateEffect:setParameter("Rate", Chorusrate)
  end
end

defineParameter("Chorusrate","Chorus Rate",1.00,0.01,10.00,0.01,onBoostChange)

--Distortion Hardclip
function onBoostChange()
  local disthcEffect = this.parent:getBus("FX3"):getEffect("Distortion")
  if disthcEffect then
    disthcEffect:setParameter("hardclip", Hardclip)
  end
end

defineParameter("Hardclip","Hard Clip",0,0,100,1,onBoostChange)

--Distortion Softclip
function onBoostChange()
  local distscEffect = this.parent:getBus("FX3"):getEffect("Distortion")
  if distscEffect then
    distscEffect:setParameter("softclip", Softclip)
  end
end

defineParameter("Softclip","Soft Clip",0,0,100,1,onBoostChange)

--Filter not working because I don't know
--I think there ist the Layer and Zone missing
defineParameter { name = "Cutoff", default = 20000, min = 20, max = 20000, increment = 1 }

What is needed? I get lost in all of the “find”, “get”, “search”, “function” etc options.
And it is possible to reverse the Values so that the start is maybe at 100 and the end at 0? I’ve tried to do it with the definition but there is an error that says “max must be greater than min”.
Thanks for some input!

I think the best way to do it would be to use stack with as many groups as you need parameters. So each parameter would have its own knob or slider but only one would be visible. The stack could be connected to parameter menu.

Your script looks ok but you could also connect those parameters directly. Unless you want to change the ranges (min, max) or how the parameters behave.

You can do the filter cutoff like this:

function onFilterCutoffChanged()
    local zones = this.parent:findZones(true)
    for i, zone in ipairs(zones) do
        zone:setParameter("Filter.Cutoff", Cutoff)
    end
end

local filterDef = this.parent:findZones(true)[1]:getParameterDefinition("Filter.Cutoff")
defineParameter("Cutoff", nil, filterDef, onFilterCutoffChanged)

The parameter for your stack menu can be done quite easily.

local parameterNames = {"Reverbmix", "Reverbtime", "Reverbsize", "Delaymix", "Freetime", "Chorusmix", "Chorusrate", "Hardclip", "Softclip", "Cutoff"}
defineParameter("SelectedParameter", nil, 1, parameterNames)

Parameter Menu.vstpreset (12.8 KB)
Parameter Menu Simple.vstpreset (12.8 KB)

Many thanks Misohoza, that is working really good and not as complicatet as I thought.