Multisample/Zone selector or dropdown?

Today I managed to create dropdowns for existing layers that contains multisamples (or other zones). Thought I share it with you. Find the code below.

My program contains TWO main layers which contains SUB layers, which finally represent multisamples. The script searches for the TWO main layers and then adds their SUB layers into corresponding dropdowns. When the user selects an instrument from the layers, all others get muted.


function muteLayers(layers)
	if layers[1] then
	    for i, layer in ipairs(layers) do
		   layer:setParameter("LayerMute", true)
	    end
		layers[1]:setParameter("LayerMute", false)
	end
end


function onLayerSelectChanged(parameter, layers)
   if layers[1] then
       for i, layer in ipairs(layers) do
		   layer:setParameter("LayerMute", true)
       end
   end
   
   s = this:getParameter(parameter)
   layers[s]:setParameter("LayerMute", false)
end


-- Find all layers
mainLayers = getElement():findLayers(false)
syntheticLayers = mainLayers[1]:findLayers(false)
traditionalLayers = mainLayers[2]:findLayers(false)
muteLayers(syntheticLayers)
muteLayers(traditionalLayers)

-- Prepare option arrays
synthLayersArray = {}
for i, layer in ipairs(syntheticLayers) do
	synthLayersArray[i] = layer.name
end
defineParameter("syntheticOptions", nil, 1, synthLayersArray, function() onLayerSelectChanged("syntheticOptions", syntheticLayers) end)

tradiLayersArray = {}
for i, layer in ipairs(traditionalLayers) do
	tradiLayersArray[i] = layer.name
end
defineParameter("traditionalOptions", nil, 1, tradiLayersArray, function() onLayerSelectChanged("traditionalOptions", traditionalLayers) end)