Hold
Hold is a feature in Sofie to allow for a special form of take between two parts. It allows for the new part to start with some portions of the old part being retained, with the next 'take' stopping the remaining portions of the old part and not performing a true take.
For example, it could be setup to hold back the video when going between two clips, creating what is known in film editing as a split edit or J-cut. The first Take would start the audio from an A-Roll (second clip), but keep the video playing from a B-Roll (first clip). The second Take would stop the first clip entirely, and join the audio and video for the second clip.
Flow
While Hold is active or in progress, an indicator is shown in the header of the UI.
It is not possible to run any adlibs while a hold is active, or to change the nexted part. Once it is in progress, it is not possible to abort or cancel the Hold and it must be run to completion. If the second part has an autonext and that gets reached before the Hold is completed, the Hold will be treated as completed and the autonext will execute as normal.
When the part to be held is playing, with the correct part as next, the flow for the users is:
- Before
- Part A is playing
- Part B is nexted
- Activate Hold (By hotkey or other user action)
- Part A is playing
- Part B is nexted
- Perform a take into the Hold
- Part B is playing
- Portions of Part A remain playing
- Perform a take to complete the Hold
- Part B is playing
Before the take into the Hold, it can be cancelled in the same way it was activated.
Supporting Hold in blueprints
The functionality here is a bit limited, as it was originally written for one particular use-case and has not been expanded to support more complex scenarios. Some unanswered questions we have are:
- Should Hold be rewritten to be done with adlib-actions instead to allow for more complex scenarios?
- Should there be a way to more intelligently check if Hold can be done between two Parts? (perhaps a new blueprint method?)
The blueprints have to label parts as supporting Hold.
You can do this with the holdMode
property, and labelling it possible to Hold from or to the part.
Note: If the user manipulates what part is set as next, they will be able to do a Hold between parts that are not sequential in the Rundown.
You also have to label Pieces as something to extend into the Hold. Not every piece will be wanted, so it is opt-in.
You can do this with the extendOnHold
property. The pieces will get extended in the same way as infinite pieces, but limited to only be extended into the one part. The usual piece collision and priority logic applies.
Finally, you may find that there are some timeline objects that you don't want to use inside of the extended pieces, or there are some objects in the part that you don't want active while the Hold is.
You can mark an object with the holdMode
property to specify its presence during a Hold.
The HoldMode.ONLY
mode tells the object to only be used when in a Hold, which allows for doing some overrides in more complex scenarios.