This is a collection of VB.NET 2.0 scripts for automating certain tasks and extending the functionality in the video/audio stream mixing software vMix (4K and Pro editions only). All scripts were created in the professional context of a company filmstudio and its live event productions. The individual scripts are:
-
audio-sidechain.vb:
Audio Sidechain Compression
Allow audio output volumes to be automatically and temporarily reduced, based on audio input volumes (when temporarily above a threshold) -- similar to an audio side-chain compression.
Use Cases: Microphone Ducking, Translator Voice-Over -
audio-heartbeat.vb:
Detect Unexpected Silence
Notify operator in case unexpected silence, i.e., audio below a certain threshold on the master bus, is detected during streaming and/or recording.
Use Cases: Playout Operator Hints, Playout Scene Switching -
auto-pre-mix.vb:
Automatically Pre-Mixing Inputs
Allow one to auto-pre-mix (aka pre-render or flattening) source inputs with the help of two intermediate Mix-type input(s) in order to further embed the result onto a layer of a target input.
Use Cases: Layer Re-Position/Re-Cropping -
input-bridge.vb:
Bridge Inputs between vMix instances
Allow one to bridge/tunnel an arbitrary number of inputs between two vMix instances with the help of two NDI streams in order to perform load offloading between two vMix instances. (See the corresponding demonstration video for details)
Use Cases: Separated Ingest/Mixing -
input-mirror.vb:
Mirror Input Selection on vMix Slave Instance
Allow one to mirror the current input preview/program selection on vMix slave instances in order to closely follow the vMix master instance.
Use Cases: Separated Playouts -
multiview-overlay.vb:
Update Custom Multiview Overlays
Allow one to update the preview/program overlays of a custom multiview by selecting corresponding images in a "List" type input.
Use Cases: Virtual PTZ Overview -
smooth-pan-zoom.vb:
Smooth Virtual Pan/Zoom in Virtual Sets
Smoothly adjust the pan/zoom of an input, for a rough emulation of the vMix Virtual PTZ feature, which cannot be used on layered inputs like Virtual Sets.
Use Cases: Virtual PTZ Adjustment -
event-reconfiguration.vb:
Reconfiguration of Event NDI Inputs (and Lower-Third Titles)
Allow one to step forward/backward through (or to a particular row of) an Excel-based conference event configuration by re-configuring four reusable NDI input sources (for shared content, one moderator and two presenters).
Use Cases: Conference Guest Ingest -
event-title-control.vb:
Control Layer-Embedded Titles
Control the in/out transitioning of lower-third titles which are embedded layers of scene inputs (where vMix only performsTransitionIn
and never aTransitionOut
).
Use Cases: Conference Guest Title Mangement -
clone-input.vb:
Really Cloning an Arbitrary Input
Allow an arbitrary input (which has to be in the preview) to be really cloned/duplicated.
Use Cases: Event Configuration -
recording-log.vb:
Logging Recording States
Logs the start and stop states of Recording and MultiCorder and can add a special marking log entry for bookkeeping special points of interest during a recording.
Use Cases: Point of Interest Tracking -
remoteshowcontrol-loop.vb:
Continuously Control Irisdown RemoteShowControl
Automatically and continuously control a remote PowerPoint slide-deck with the help of its Irisdown RemoteShowControl plugin, based on vMix input name information.
Use Cases: Automatic PowerPoint Slide Control -
remoteshowcontrol-once.vb:
Once Control Irisdown RemoteShowControl
Once control a remote PowerPoint slide-deck with the help of its Irisdown RemoteShowControl plugin, based on vMix triggers or shortcuts.
Use Cases: Manual PowerPoint Slide Control -
ndi-studio-monitor.vb:
Reconfigure NewTek NDI Studio Monitor
Allow vMix to reconfigure the NDI source displayed in a (remote) NewTek NDI Studio Monitor instance.
Use Cases: Manual NDI Tools Studio Monitor Source Control
-
Clone this repository or download a ZIP archive:
git clone https://github.com/rse/vmix-scripts
-
Add the individual scripts to vMix with
Settings → Scripting → Add → Import -
For some of the scripts, do not forget to adjust their configuration section!
All these vMix scripts where created in the professional context of a company filmstudio, where multiple vMix instances (connected through NDI) are used to drive the live event productions. The particularly used vMix instances and their job (partially driven by the scripts and manual Bitfocus Companion control informations) are:
-
Ingest 1: 2160p30 mode, 5x physical camera ingest, 5x chroma-keying, 5x game-engine based background overlaying (indirectly using content 1+2 from Ingest 2), 5x8 physical PTZ management, 5x8x7 virtual PTZ management, 5x7 virtual PTZ emit (to Mixing 1).
Rationale: 4K cameras have to be still chroma-keyed in 4K, flexible virtual PTZ management.
Scripts: multiview-overlay, smooth-pan-zoom -
Ingest 2: 1080p30 mode, content 1+2 ingest (from Mixing 1), content 1+2 emit (via virtual camera into the game engines inside Ingest 1).
Rationale: content from Mixing has to be ingested back into game-engine instances.
Scripts: none -
Mixing 1: 1080p30 mode, 5x7 virtual PTZ ingest (from Ingest 1), 8x remote guests ingest, 1x slide ingest, 12x microphone ingest, 4x4 title overlays, content 1+2 emit (to Ingest 2), primary programm emit (to Playout 1).
Rationale: primary scene mixing (usually with german audio)
Scripts: input-bridge, audio-sidechain, event-reconfiguration, event-title-control, recording-log, remoteshowcontrol-once, remoteshowcontrol-loop, ndi-studio-monitor, clone-input, auto-pre-mix -
Mixing 2: 1080p30 mode, primary program ingest (from Mixing 1), 2x real-time translator ingest, translator audio export/re-import, secondary programm emit (to Playout 2), studio multiview emit.
Rationale: real-time translation (usually german to englisch audio), studio multiview production.
Scripts: audio-sidechain -
Playout 1: 1080p30 mode, primary program ingest (from Mixing 1), event program management, primary program broadcasting.
Rationale: event program mangement of first stream (usually german audio)
Scripts: input-mirror, audio-heartbeat -
Playout 2: 1080p30 mode, secondary program ingest (from Mixing 2), event program management, secondary program broadcasting.
Rationale: event program mangement of second stream (usually english audio)
Scripts: none
Copyright © 2022-2023 Dr. Ralf S. Engelschall (http://engelschall.com/)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.