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)