Rank: Newbie
Groups: Registered
Joined: 9/16/2016(UTC) Posts: 6
|
Hello,
I currently use the OnAudioMeter trigger to change input depending on the person speaking. This works great.
I have only one question: if two people are talking at the same time, is it possible to pass on an input in particular? Currently, if two people are talking at the same time, vMix changes between the two inputs, not knowing which to choose.
Can we have conditions on the triggers like AND / OR ?
Thank you.
Vincent
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 4/14/2013(UTC) Posts: 264  Location: Australia Thanks: 35 times Was thanked: 38 time(s) in 36 post(s)
|
That trigger is really interesting but I think it's still in its infancy due to the problem you mention.
A user defined re-trigger delay could help this. If the user defined say 3sec then it wouldn't trigger again for another 3sec. Add to this a `dither' factor so it doesn't become too mechanical. If the user defined this dither to be 1sec then the re-trigger enable would be randomly between between 3 +/- 1 sec. Not ideal but the best I can think of.
Then sit back and watch vMix cut the show in an psuedo random fashion.
I've been playing with notch filtering a music track and then using this as a trigger. It's very cool watching vMix cut on the beat or to a specific frequency or instrument.
Sorry, I haven't answered you question but turned this into a feature request.
|
|
|
|
Rank: Member
Groups: Registered
Joined: 7/23/2016(UTC) Posts: 19 Location: USA
Thanks: 19 times Was thanked: 1 time(s) in 1 post(s)
|
In case it hasn't been mentioned elsewhere, the state of the art in automixing is in Dan Dugan's head. Yamaha, Behringer, Waves and others have licensed his processing know-how to create systems that allow users to give a weighting to inputs, so that, presumably, leaders and hosts have more weight than others. In the audio universe, the way his processing intelligently transitions between inputs makes the operator seem omniscient. Www.dandugan.com for those interested.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 8/2/2013(UTC) Posts: 1,070   Location: Fairhope, Alabama USA Thanks: 565 times Was thanked: 200 time(s) in 166 post(s)
|
EDIT -- 6/12/18
The Audio Controller Switcher software which solved this problem by switching to a pre-determined third camera shot is no longer available. It worked for 2 3, or more mics active at the same time.
- Tom
|
 1 user thanked sinc747 for this useful post.
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 10/18/2015(UTC) Posts: 185 Location: Newcastle NSW Australia
Thanks: 2 times Was thanked: 44 time(s) in 33 post(s)
|
This would be 2 great features to add;
(1) Delay before switching. (2) Switch to multiview/wideshot if multiple people are talking.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 4/14/2013(UTC) Posts: 264  Location: Australia Thanks: 35 times Was thanked: 38 time(s) in 36 post(s)
|
mashynewie2 wrote:This would be 2 great features to add;
(1) Delay before switching. (2) Switch to multiview/wideshot if multiple people are talking.
(3) A global disable / enable trigger for audio triggers.
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 10/13/2012(UTC) Posts: 1,162  Location: Melbourne Thanks: 220 times Was thanked: 200 time(s) in 181 post(s)
|
mashynewie2 wrote:This would be 2 great features to add;
(1) Delay before switching. (2) Switch to multiview/wideshot if multiple people are talking.
These are possible allready using Audio Controller Switcher.
|
 1 user thanked ask for this useful post.
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/17/2017(UTC) Posts: 440  Location: Luzern - Schweiz Thanks: 69 times Was thanked: 57 time(s) in 51 post(s)
|
Hello
A global disable / enable trigger for audio triggers. ??
Thank you.
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 5/25/2017(UTC) Posts: 4 Location: Paris, France
|
Oh... I'm sorry. I don't have found this request in "Feature requests" forum. I'm talking about these improvements with more details in my topic in this forum: https://forums.vmix.com/default.aspx?g=posts&t=10894Peter B wrote:(3) A global disable / enable trigger for audio triggers. +1Waiting the improvement, you can make, like me, two scripts "autoswitchOn" and "autoswitchOff" that set the volume of all audio inputs to 100 and 0. You can map a script to shortcut or MIDI note. (two buttons, in this way, toggle is impossible)
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 3/17/2017(UTC) Posts: 440  Location: Luzern - Schweiz Thanks: 69 times Was thanked: 57 time(s) in 51 post(s)
|
Hello Sorry for my english German - English with Translator I did a test. Automatically switch to mic with camera. Automatic on and off with shortcuts, on predefined cam. With recording mixer, 2 Mic. Input 1 Pan to the left, Input 2 Pan to the right. Connected to USB / Audio Interface Behringer U-Control UCA 202. It can also work with multiple interfaces, have not tested this. Whether it works with an interface Behringer UMC404, I can not say. The duplicate may not work with ASIO. This test is a suggestion to make further tests. Video: Greeting
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 2/10/2024(UTC) Posts: 3 
|
Resurrecting this thread...I have a workaround that might help you.
"(3) A global disable / enable trigger for audio triggers."
I assume you added the "OnAudioMeter" trigger to the camera inputs, so they CutDirect...instead try this:
Let's say you have three cameras, CAM 1, CAM 2 and CAM 3 [Spoiler Alert: You only get a maximum of 7 cameras using this method...less if you're already using the busses for other things]
What you want to do is add three Audio Inputs, vMix Audio Bus A, Bus B and Bus C.
Then send your three cameras to a specific Bus (CAM 1 goes to Bus A, CAM 2 to Bus B, CAM 3 to Bus C).
Then you add those OnAudioMeter triggers to the Bus inputs so that they CutDirect their associated camera.
To disable/enable the triggers, create two scripts:
AutoTakeOn Function=AudioBusOn&Value=A&Input=CAM 1 Function=AudioBusOn&Value=B&Input=CAM 2 Function=AudioBusOn&Value=C&Input=CAM 3
AutoTakeOff Function=AudioBusOff&Value=A&Input=CAM 1 Function=AudioBusOff&Value=B&Input=CAM 2 Function=AudioBusOff&Value=C&Input=CAM 3
So basically you're sending each camera to their respective audio bus...or not! And each Audio Bus Input determines what goes on program.
Hope this makes sense...and apologies if this has been dealt with in another post.
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 2/10/2024(UTC) Posts: 3 
|
Now, here's my question for the experts:
Is there a better method to automate a multi-camera show using VB scripting? I'm just getting my feet wet with that...I wrote a script for the above scenario that: - Disables Auto Take - Adds a name graphic of the person talking (depending on which camera is on Program) - Removes the graphic after 5 seconds - Resumes Auto Take (if anyone's interested I'm happy to share my scripts...they're written based off of other posts, so I can't claim any kind of ownership!)
Oh, and I'm using Data Sources for the names so I only need one Title (the above script also changes the name, depending on which camera is on Program), so if the client wants to change the information (they might want to switch from using their Twitter handles to Blue Sky one day) they don't need to be a vMix expert.
What I'm hoping to find is more "intelligent" camera switching, so if one person is talking and another one simply says "Uh huh!" the script would ignore that (ignore anything under, say, two seconds).
Again, if this is already covered in another post please bear with me...
|
|
|
|
Rank: Newbie
Groups: Registered
Joined: 2/10/2024(UTC) Posts: 3 
|
Oooh I'm so close I can taste it!
Here's what I've got so far: (and thanks to everyone's scripting examples that came up in searches)
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""]")
On Error Resume Next
Do While True
BusALevel = BusANode.selectSingleNode("/meterF1").InnerText if BusALevel > "0.5" API.Function("CutDirect",Input:="CAM 1") sleep(5000) End if
BusBLevel = BusBNode.selectSingleNode("/meterF1").InnerText if BusBLevel > "0.5" API.Function("CutDirect",Input:="CAM 2") sleep(5000) End if
BusCLevel = BusCNode.selectSingleNode("/meterF1").InnerText if BusCLevel > "0.5" API.Function("CutDirect",Input:="CAM 3") sleep(5000) End if
Loop
Problem is, this doesn't work! However, if I change the Greater Than to a Less Than... if BusALevel < "0.5"
it works, but all too well...meaning it's not changing by audio level, it just changes (so if those sleep(5000) lines weren't there, it would basically strobe between all three cameras).
I've tried adjusting the levels ("0.001", "1", etc)...no dice. I also tried Greater Than or Equal To...nada.
It's probably staring me right in the face...
|
|
|
|
Rank: Advanced Member
Groups: Registered
Joined: 7/4/2021(UTC) Posts: 345  Thanks: 8 times Was thanked: 52 time(s) in 43 post(s)
|
Originally Posted by: TJPerkins  Oooh I'm so close I can taste it!
Here's what I've got so far: (and thanks to everyone's scripting examples that came up in searches)
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""]")
On Error Resume Next
Do While True
BusALevel = BusANode.selectSingleNode("/meterF1").InnerText if BusALevel > "0.5" API.Function("CutDirect",Input:="CAM 1") sleep(5000) End if
BusBLevel = BusBNode.selectSingleNode("/meterF1").InnerText if BusBLevel > "0.5" API.Function("CutDirect",Input:="CAM 2") sleep(5000) End if
BusCLevel = BusCNode.selectSingleNode("/meterF1").InnerText if BusCLevel > "0.5" API.Function("CutDirect",Input:="CAM 3") sleep(5000) End if
Loop
Problem is, this doesn't work! However, if I change the Greater Than to a Less Than... if BusALevel < "0.5"
it works, but all too well...meaning it's not changing by audio level, it just changes (so if those sleep(5000) lines weren't there, it would basically strobe between all three cameras).
I've tried adjusting the levels ("0.001", "1", etc)...no dice. I also tried Greater Than or Equal To...nada.
It's probably staring me right in the face... What happens if you take out the "if" statements entirely & replace the API Function line with the relevant of the following Code:Console.WriteLine(BusALevel)
Code:Console.WriteLine(BusBLevel)
Code:Console.WriteLine(BusCLevel)
? If that doesn't return the values, that's going to be your problem. And to be absolutely clear: Code:dim BusANode As XmlNode = VmixXML.selectSingleNode("/vmix/inputs/input[@title=""BUS A""]")
is looking for an input named "BUS A". If you want to look at the level of the audio bus named Bus A, that can be found with Code:BusALevel = (VmixXML.SelectSingleNode("/vmix/audio/busA/@meterF1").Value)
In addition to using Console.WriteLine for testing, to see the actual returned values, I'd suggest testing with the error handler removed, to ensure that an issue isn't being glossed over. I have a theory that your error handler might be doing a lot of heavy lifting--especially if you're intending to look at audio bus levels & don't have inputs with the specified names--which is why it works with less than but not greater than. Even if you are looking at inputs named "BUS A", "BUS B", and "BUS C", I'm not sure that your syntax is accurate, but I don't know enough on the subject to say for sure. I can say that the scripts that I've used that I know to work don't match the syntax you're using here. My post from last year in the "Scripting for Dummies" thread might also be of help.It's very possibly incorrect in some areas about what is or isn't happening under the hood, but as a general beginner guidance, it could help you at least visualize how to target specific XML nodes/attributes in the context of VB.net. Edit:I had a chance to test my theory with your script and it appears I was correct. Your syntax and error handler are almost definitely returning a null value, which is treated as equivalent to 0.
|
|
|
|
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.
Important Information:
The vMix Forums uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close