logo

Live Production Software Forums


Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Options
Go to last post Go to first unread
michaelthomasbrennan  
#1 Posted : Thursday, March 27, 2025 7:20:16 PM(UTC)
michaelthomasbrennan

Rank: Newbie

Groups: Registered
Joined: 3/10/2025(UTC)
Posts: 2
Man
United Kingdom
Location: Loughborough

Would it be worth creating a vMix Automation forum for those of us working specifically with vMix and automation rundown/production software. I'm working with Tinkerlist Cuez Rundowm and Cuez Automator and there are very specific issues that arise using vMix and Cuez together.

Plus integration with Dante and Stream Deck

Would anyone else be interested or would this be a forum where I'd be talking to meyself :-)

Michael
TJPerkins  
#2 Posted : Saturday, March 29, 2025 4:28:19 AM(UTC)
TJPerkins

Rank: Newbie

Groups: Registered
Joined: 2/10/2024(UTC)
Posts: 7
Man
Canada

Count me in! I can repost the scripting I've pieced together from everyone's input...
michaelthomasbrennan  
#3 Posted : Monday, March 31, 2025 9:12:28 PM(UTC)
michaelthomasbrennan

Rank: Newbie

Groups: Registered
Joined: 3/10/2025(UTC)
Posts: 2
Man
United Kingdom
Location: Loughborough

Great - I'm very busy this week - but have time next week to document what Ive done here at the uni with configuring vMix and Cuez automator - I have loads more to do - dante - incoming calls etc...

It would be good to known what you are doing in more detail.

It would be good to to hear back from you
TJPerkins  
#4 Posted : Tuesday, April 1, 2025 2:44:36 AM(UTC)
TJPerkins

Rank: Newbie

Groups: Registered
Joined: 2/10/2024(UTC)
Posts: 7
Man
Canada

My latest project is to automate a radio podcast…three hosts in the studio, each host has their own camera and mic inputs. I’ve set it up so that vMix automatically cuts between the cameras depending on who is speaking, with a built-in delay in case two people talk at once. I also want to add a lower third title with their name and Instagram handle from time to time, but I’ll save that for another post.

It’s worth noting that I haven’t been able to fully test it out yet (I’m in Vancouver and the show is in Toronto), but I’m hoping to at least have everything set up this week so I can give it a good workout. I will say that initial testing has been quite successful!

Here is the setup:
• 3 camera inputs, labeled CAM 1, CAM 2 and CAM 3
• 3 mics (labels aren’t important, but they’re MIC 1, 2 and 3)
• 3 audio bus inputs, labeled BUS A, BUS B and BUS C

The buses are how I turn the AutoTake on and off…sending the mics to the three Buses (Mic 1 to Bus A, etc) turns it on. This is so I can halt the AutoTake while adding a lower-third title.

Here is the scripting for AutoTake:
Code:
Do While True

dim BusALevel As String
dim BusBLevel As String
dim BusCLevel As String

dim VmixXML as new system.xml.xmldocument

VmixXML.loadxml(API.XML)

dim BusANode As XmlNode = VmixXML.selectSingleNode("/vmix/inputs/input[@title=""BUS A""]")
dim BusBNode As XmlNode = VmixXML.selectSingleNode("/vmix/inputs/input[@title=""BUS B""]")
dim BusCNode As XmlNode = VmixXML.selectSingleNode("/vmix/inputs/input[@title=""BUS C""]")

BusALevel = (VmixXML.SelectSingleNode("/vmix/audio/busA/@meterF1").Value)
if BusALevel > "0.05"
  API.Function("CutDirect",Input:="CAM 1")
sleep(5000)
End if

BusBLevel = (VmixXML.SelectSingleNode("/vmix/audio/busB/@meterF1").Value)
if BusBLevel > "0.05"
  API.Function("CutDirect",Input:="CAM 2")
sleep(5000)
End if

BusCLevel = (VmixXML.SelectSingleNode("/vmix/audio/busC/@meterF1").Value)
if BusCLevel > "0.05"
  API.Function("CutDirect",Input:="CAM 3")
sleep(5000)
End if
Loop


It’s worth noting that I also cranked the gain of the three busses all the way up, in case someone speaks quietly.

Many thanks go out to everyone who has helped me (voluntarily or otherwise) nail down the VB scripting!
TJPerkins  
#5 Posted : Wednesday, April 2, 2025 4:09:15 AM(UTC)
TJPerkins

Rank: Newbie

Groups: Registered
Joined: 2/10/2024(UTC)
Posts: 7
Man
Canada

And as promised, here is how I handle the name titles:

• There is one title input with two lines of text for name and Instagram handle
• Text fields are assigned to a data source which uses a simple .csv file
• Depending on which camera is on Program, the script will:
o Pause the AutoTake (by turning off audio sent to Bus A, B and C)
o Change the Data Source to the correct host name/handle
o Add the Title for 4 seconds
o Take out the Title and wait another second
o Resume AutoTake

Using a Stream Deck anyone (most likely the main host or a producer) can hit the same button while anyone is talking and the correct name title will appear for that host.

Here is the code:

Code:
dim xml as string = API.XML()
dim InputActiveName as string = ""
dim activeinput as string = ""

dim x as new system.xml.xmldocument
x.loadxml(xml)

activeinput = (x.SelectSingleNode("//active").InnerText)
InputActiveName = (x.SelectSingleNode("//input[@number='"& activeinput &"']/@title").Value)

if InputActiveName = "CAM 1"
   API.Function("AudioBusOff",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOff",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOff",Value:="C",Input:="CAM 3")
   Sleep (100)
   API.Function("DataSourceSelectRow",Value:="CSV,Sheet1,2")
   API.Function("OverlayInput1In",Input:="4")
   Sleep (4000)
   API.Function("OverlayInput1Out")
   Sleep (1000)
   API.Function("AudioBusOn",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOn",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOn",Value:="C",Input:="CAM 3")

elseif InputActiveName = "CAM 2"
   API.Function("AudioBusOff",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOff",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOff",Value:="C",Input:="CAM 3")
   Sleep (100)
   API.Function("DataSourceSelectRow",Value:="CSV,Sheet1,1")
   API.Function("OverlayInput1In",Input:="4")
   Sleep (4000)
   API.Function("OverlayInput1Out")
   Sleep (1000)
   API.Function("AudioBusOn",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOn",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOn",Value:="C",Input:="CAM 3")

elseif InputActiveName = "CAM 3"
   API.Function("AudioBusOff",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOff",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOff",Value:="C",Input:="CAM 3")
   Sleep (100)
   API.Function("DataSourceSelectRow",Value:="CSV,Sheet1,0")
   API.Function("OverlayInput1In",Input:="4")
   Sleep (4000)
   API.Function("OverlayInput1Out")
   Sleep (1000)
   API.Function("AudioBusOn",Value:="A",Input:="CAM 1")
   API.Function("AudioBusOn",Value:="B",Input:="CAM 2")
   API.Function("AudioBusOn",Value:="C",Input:="CAM 3")

end if
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.