We've created a visual overview which uses scripts to modify a few parameters. For example, one button modifies the audio gain of a signal (another one modifies audio delay). However, when triggering another SET, in our case toggling audio mute, all the modifications of the audio gain (and/or delay) signals are reverted back to what they were when the user opened the visual overview.
This does not happen if the user modifies the parameters directly from the element/driver view.
Is there something we are missing when using Execute and Script where we also need to "apply" the new parameter values?
Are you setting parameters by name or by ID?
If you are setting by name, the following does not apply.
Is it possible that the scripts are writing to the 'read' ID of the parameters you are trying to set. Each parameter that can be set has a 'read' ID and a 'write' ID. The read parameter is the value that is shown, while the 'write' parameter is linked to the thing where you enter new value (could be a text field, or a togglebutton, ...).
If you manually edit a parameter on an element, it automatically calls the write ID, which is (in almost all cases) also responsible to actually apply the set on the device. Then the value is being polled from the device again and should read out the new value, assuming the set was succesful.
You can also set the 'read' ID directly from a script, but note that in this case the logic to set on the device is not being called and you only overwrite what is being shown on the element. When the element polls data from the element, it will still receive the previous value, because it was never updated on the device, thus overriding the value that you set on the element.
If the above is indeed applicable. I suggest looking for the corresponding 'write' id for each of the parameters you are setting and use those instead.
Forgot to add, an easier solution is of course to do the sets by name. This will automatically call the write ID when there is one available.
This was the solution. I got confused because I kept getting errors when trying to use the write param at first. Turns out you can’t use dummy.GetParameter() on a write param so the script now uses both the read and write param separately.