Hi Bart,
thanks for sending this over. I did a number of tests, tried this in simplified shows etc. It looks like this is something like a race condition: in your macro every instruction is executed as fast as possbile, without waiting for the previous one to be finished, which may lead to unpredictable results.I am still investigating possible solutions - maybe Gregory has not only more insights (which I am sure he has) but also some ways to solve this.
At the moment simply add the pause property for every step - simply add a ' pause="0.1" ' after every <step:
A block which you wrote like this:
Code: Select all
<macro id="FX.Dim.Spread.3" name="FXl Dim Spread 3">
<description>set effect spread to 3</description>
<sequence>
<step>ActionScript.SetProperty.Boolean("Programmer.BlindActive", true)</step>
<step>Programmer.SetBlindMode(false, 0)</step>
<step>Include.SelectPlaybackHandle("Location=PlaybackWindow,2,1")</step>
<step>ActionScript.SetProperty.Integer('Editor.Shapes.Spread',3)</step>
<step>Playbacks.MergePlaybackCue("Location=PlaybackWindow,2,1", true)</step>
<step>Programmer.Editor.Clear(128, true, false, 0)</step>
...
<step>ActionScript.SetProperty.Boolean("Programmer.BlindActive", false)</step>
<step>Programmer.SetBlindMode(false, 0)</step>
</sequence>
</macro>
would then look like this:
Code: Select all
<macro id="FX.Dim.Spread.3" name="FXl Dim Spread 3">
<description>set effect spread to 3</description>
<sequence>
<step pause="0.1">ActionScript.SetProperty.Boolean("Programmer.BlindActive", true)</step>
<step pause="0.1">Programmer.SetBlindMode(false, 0)</step>
<step pause="0.1">Include.SelectPlaybackHandle("Location=PlaybackWindow,2,1")</step>
<step pause="0.1">ActionScript.SetProperty.Integer('Editor.Shapes.Spread',3)</step>
<step pause="0.1">Playbacks.MergePlaybackCue("Location=PlaybackWindow,2,1", true)</step>
<step pause="0.1">Programmer.Editor.Clear(128, true, false, 0)</step>
...
<step pause="0.1">ActionScript.SetProperty.Boolean("Programmer.BlindActive", false)</step>
<step pause="0.1">Programmer.SetBlindMode(false, 0)</step>
</sequence>
</macro>
This adds a little time after each instruction, see
https://www.avolites.de/wiki/macros:step_pause for a brief explanation.
- from what I tested 0.1 makes the macros run successfully, much shorter doesn't work
- now of course the problem is that the whole macro takes almost 9 seconds to run
- currently I am trying if it's possible to add the pause only to selected instructions - maybe Gregory has an idea which instructions take particularly long or are specifically sensitive
- the problem is easily visible: after running the macro without pause often there is something in the programmer (Clear is lit), and sometimes the consle is stuck in blind mode
I was in touch with Florian who posted this macro in the first play and he confirmed that he already encounteres similar problems. I'll mark this as work in progress in the wiki. Maybe you cen also try with adding pause to only a few instructions, and let us know your findings.