In order to have sequences and media synchronously start in WinScript Live, you must ensure that your event timing delays are set up properly in Winscript Live. There are multiple ways you could trigger media playback to begin, so this article steps through the differences between starting media play events locally in sync, as well as starting external sequences in sync. At the bottom of this article, you will find sample WinScript Live scripts that you can download to further examine.
This article assumes you have a V16X as your show controller, and a BinloopX and RidePlayer for media playback. The goal is to trigger an audio file on the BinloopX and RidePlayer to play in sync.
- In order for this to work, you MUST have sync source that is fed to your V16X, BinloopX, and RidePlayer. In this example, we've set up our V16X as an NTP Master, and the BinloopX / RidePlayer as an NTP Slave. You could also have an external sync source that is fed to the V16X, BinloopX, and RidePlayer. However your setup, if these device's clocks are not locked together, you can not ensure synchronous playback.
Starting Media Play Events in Sync from the V16X:
Lets say we want to have our V16X send Media Play commands to our RidePlayer and BinloopX. The ultimate goal is to begin audio playback on the RidePlayer and BinloopX synchronously. What does this sequence in the V16X script look like?
To achieve this, there are three things we need to make sure we do:
1) Verify the sync delays are set up properly in your V16X script and your BinloopX / RidePlayer scripts. To adjust the sync delays in your V16X Script, go to Configuration > Sync/TimeCode > Event Timing. You'll find a page that looks like this:
Here, you'll see for demo purposes (so I can count in seconds as our script is running at 30fps) we have a total sync delay of 60 frames, aka 2 seconds for all products. Make sure the configuration in your BinloopX and RidePlayer are set to 30 and 30 as well, otherwise you'll run into problems. For example, if in your V16X script you say your RidePlayer event delay is 30 and media delay is 30, you also want your actual RidePlayer script to be set at 30 and 30 as well.
You can see above I have the automatic dial clicked. This gives all devices in this script the same delays. If you need to adjust individual devices, you can click the manual dial and adjust individual products in the chart. But remember, for our sequence to work where we are triggering both the BinloopX Media Loop and RidePlayer Loop Audio in the same frame, we want the BinloopX and RidePlayer delays to all match eachother as well so the math stays easy.
If you've made any changes to the sync delay, click Apply and OK.
**If you are in live mode, please save and re-send your script to the device. Changes to the Event Timing tab are not applied while in Live Mode.
2) Check the "S" Checkbox for each event you want to adhere to our Total Sync Delay
By checking the "S" Checkbox here:
...or checking the "Run in the Event Wizard as you are setting up your event here:
... you're telling the V16X that you want to factor in the Total Sync Delay (Event Delay + Media Delay) that we configured in step 1. In our case, this will cause the media to begin playing 60 frames (or 2 seconds) after the sequence is triggered.
Behind the scenes, when WinScript triggers these events to begin, commands are immediately sent to the BinloopX and RidePlayer to start at a specific time in the future. By adding the sync delay frames to the mix, the V16X knows how far ahead to schedule the playback time to begin so we can account for any network traffic delay and RidePlayer/BinloopX media cuing delay we could run into. If the total sync delay values are high enough, you'll start in sync every time!
3) Turn Off the sequence option "Wait For Device Response"
Since we're in timed grid view in this example, we must not forget to uncheck the "Wait for Device Response" by clicking "Options"...
... then click the Behavior Tab, and uncheck "Wait for Device Response" box. This ensures that the events in this sequence are triggered as fast as possible, and don't wait for any returned values to be sent to the show controller before continuing on to the next event in the sequence.
That's it! In summary, to begin a media-playback type events in sync, make sure the wait for device response is unchecked, and check the "S" box so the corresponding device's sync delay + media sync delay (60 frames total in our case) will occur before media playback begins.
Starting External Sequences in Sync from the V16X:
Lets say we want to have our V16X start sequences inside the RidePlayer and BinloopX synchronously. What does this look like?
We're sending start sequence commands to both the RidePlayer and BinloopX to start a sequence called "Block Hit" that lives in the WinScript file of the BinloopX and of the RidePlayer. Here's what the sequence looks like in our V16X:
The sequence named "Block Hit" inside the BinloopX looks like this (we're using timeline view this time):
And the sequence named "Block Hit" inside RidePlayer looks like this (we're using timeline view this time):
Again, three steps to ensure synchronous playback to trigger in this way:
1) Verify the sync delays are set up properly in your V16X script and in your BinloopX / RidePlayer script.
As with the first example, we still have the Event Sync Delay at 30 frames and the Media Sync Delay at 30 frames configured for all of our products inside the V16X script.
In our BinloopX and RidePlayer Script, I've given them the same delays (30 frames for Media Sync and 30 frames for Event sync = 60 frames Total Sync). Since we're starting both in sync, we want them to match so the math is easy.
2) Ensure the "S" checkbox is checked in both the V16X script event AND the BinloopX / RidePlayer script events.
In the V16X script, we have the "S" check box checked for both Start Sequence "Block Hit" events.
**Because this is just a start sequence event and not a media play event, the V16X will only use our Event Sync Delay of 30 frames.
In the BinloopX and RidePlayer events, since we're in timeline view, make sure the "Run this Event Synchronously" box is checked by opening the event wizard.
**In the BinloopX and RidePlayer, because it's a media-based event (Loop Audio), the BinloopX and RidePlayer will use BOTH the Event Sync Delay of 30 frames and Media Sync Delay of 30 frames as denoted in our BinloopX / RidePlayer scripts, giving you a total of 60 frames.
Thus, in our script, the total event delay from the time the V16X sequence "Media Play by Sequence" begins to the time that audio will play will be 90 frames.
3)Turn Off the sequence option "Wait For Device Response"
Make sure you've unchecked the "wait for device response" button for the sequence in your V16X script. In the BinloopX and RidePlayer scripts, since we're using Timeline View, you don't have to worry about unchecking this box in your BinloopX. In Timeline View, that box is automatically unchecked.
That's it! In summary, to start external sequences that play media in sync...
In the V16X script: Make sure the wait for device response is unchecked, and check the "S" box so the event sync delay will occur (30 frames total in our case).
In the BinloopX / RidePlayer Script: Make sure the wait for device response is unchecked (it is automatically unchecked in timeline view), and check the "Run this event Synchronously" for Media Play event, which will factor in the Event Sync Delay (30 frames) and Media Sync Delay (30 frames) which in turn gives you 90 frames total of sync delay before media playback begins.