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
stevespaw  
#1 Posted : Thursday, November 9, 2023 2:45:36 AM(UTC)
stevespaw

Rank: Advanced Member

Groups: Registered
Joined: 3/12/2015(UTC)
Posts: 482
Man
Location: Kansas City, MO USA

Thanks: 151 times
Was thanked: 75 time(s) in 57 post(s)
This may have been requested, but I did not find it, (maybe there is a trick to do this)

Now that we have PFL, :-) audio mixing is more powerful.

We need a "Clear all Solo" function. On the GUI it would be nice to just click on the orange solo light.
But we need an API Shortcut to do this.

Thanks!
Peter1000  
#2 Posted : Thursday, November 9, 2023 7:09:41 PM(UTC)
Peter1000

Rank: Advanced Member

Groups: Registered
Joined: 1/25/2019(UTC)
Posts: 303
Switzerland

Thanks: 17 times
Was thanked: 79 time(s) in 60 post(s)
I'm not sure I understand the question. But API already offers this function, including the normal shortcuts.
You can assign the same key several times in the shortcuts and delete all solos with the command BusXSoloOff , Value A, BusXSoloOff , Value B etc.
or via script:
Code:
Dim busValues As String() = {"A", "B", "C", "D", "E", "F", "G"}

For Each value As String In busValues
    API.Function("BusXSoloOff", Value:=value)
Next
thanks 1 user thanked Peter1000 for this useful post.
stevespaw on 11/11/2023(UTC)
stevespaw  
#3 Posted : Saturday, November 11, 2023 5:57:37 AM(UTC)
stevespaw

Rank: Advanced Member

Groups: Registered
Joined: 3/12/2015(UTC)
Posts: 482
Man
Location: Kansas City, MO USA

Thanks: 151 times
Was thanked: 75 time(s) in 57 post(s)
Thanks Peter, but I want One command for all.
We have the busses and 100+ inputs and finding the one input that is soloed can be a challenge. Audio consoles today have a clear all. Yes I could create a script, and it will list all inputs, but this is a messy solution.
stevespaw  
#4 Posted : Saturday, November 11, 2023 6:39:53 AM(UTC)
stevespaw

Rank: Advanced Member

Groups: Registered
Joined: 3/12/2015(UTC)
Posts: 482
Man
Location: Kansas City, MO USA

Thanks: 151 times
Was thanked: 75 time(s) in 57 post(s)
Hey Peter,
Your code is much more efficient that what I was going to do. Each one separate...
How would you format this for adding inputs 1-150 to go solo off?

Thanks!
Steve
mavik  
#5 Posted : Monday, November 13, 2023 2:01:51 AM(UTC)
mavik

Rank: Advanced Member

Groups: Registered
Joined: 4/23/2017(UTC)
Posts: 1,214
Man
Location: Germany

Thanks: 3 times
Was thanked: 168 time(s) in 150 post(s)
The solo is exclusive, isn't it. So whatever solo you press it automatically disables the others. The script could be optimized by just soloing one input on and off. Then all solos are cleared.
Peter1000  
#6 Posted : Monday, November 13, 2023 3:02:41 AM(UTC)
Peter1000

Rank: Advanced Member

Groups: Registered
Joined: 1/25/2019(UTC)
Posts: 303
Switzerland

Thanks: 17 times
Was thanked: 79 time(s) in 60 post(s)
sorry, I forgot the inputs.
mavik's method is good, but you may want to avoid having something other than what you want on the solo output.
you can simply determine the number of all inputs in the script and then switch soloOFF on all input numbers in a loop. it doesn't matter whether it's an audio or other input.

The first part of the code is the one already shown above, followed by the new code to switch off the input solos

There are 2 methods, both work.
the more elegant one that first counts how many inputs you have
Code:
'switch off all solos on busses
Dim busValues As String() = {"A", "B", "C", "D", "E", "F", "G"}
For Each value As String In busValues
    API.Function("BusXSoloOff", Value:=value)
Next

'switch off all solos on inputs
Dim xmlDoc As New XmlDocument()
Dim i as integer
xmlDoc.LoadXml(API.Xml)
Dim inputNodes As XmlNodeList = xmlDoc.SelectNodes("/vmix/inputs/input")
Dim inputCount As Integer = inputNodes.Count
for i = 1 to inputcount
  API.Function("SoloOff", i)
Next


the brute force one, assuming you have no more than 500 inputs...
Code:
'switch off all solos on busses
Dim busValues As String() = {"A", "B", "C", "D", "E", "F", "G"}
For Each value As String In busValues
    API.Function("BusXSoloOff", Value:=value)
Next

'switch off all solos on inputs
Dim i as integer
for i = 1 to 500
  API.Function("SoloOff", i)
Next
thanks 1 user thanked Peter1000 for this useful post.
stevespaw on 11/21/2023(UTC)
spinfold  
#7 Posted : Saturday, November 18, 2023 3:00:00 AM(UTC)
spinfold

Rank: Advanced Member

Groups: Registered
Joined: 1/23/2022(UTC)
Posts: 94
United Kingdom
Location: Milton Keynes

Thanks: 13 times
Was thanked: 5 time(s) in 5 post(s)
Originally Posted by: mavik Go to Quoted Post
The solo is exclusive, isn't it. So whatever solo you press it automatically disables the others. The script could be optimized by just soloing one input on and off. Then all solos are cleared.


No. If doing via API, or right-clicking on the S button, you can Solo multiple channels.
stevespaw  
#8 Posted : Tuesday, November 21, 2023 2:10:37 AM(UTC)
stevespaw

Rank: Advanced Member

Groups: Registered
Joined: 3/12/2015(UTC)
Posts: 482
Man
Location: Kansas City, MO USA

Thanks: 151 times
Was thanked: 75 time(s) in 57 post(s)
Originally Posted by: Peter1000 Go to Quoted Post
sorry, I forgot the inputs.
mavik's method is good, but you may want to avoid having something other than what you want on the solo output.
you can simply determine the number of all inputs in the script and then switch soloOFF on all input numbers in a loop. it doesn't matter whether it's an audio or other input.

The first part of the code is the one already shown above, followed by the new code to switch off the input solos

There are 2 methods, both work.
the more elegant one that first counts how many inputs you have
Code:
'switch off all solos on busses
Dim busValues As String() = {"A", "B", "C", "D", "E", "F", "G"}
For Each value As String In busValues
    API.Function("BusXSoloOff", Value:=value)
Next

'switch off all solos on inputs
Dim xmlDoc As New XmlDocument()
Dim i as integer
xmlDoc.LoadXml(API.Xml)
Dim inputNodes As XmlNodeList = xmlDoc.SelectNodes("/vmix/inputs/input")
Dim inputCount As Integer = inputNodes.Count
for i = 1 to inputcount
  API.Function("SoloOff", i)
Next


the brute force one, assuming you have no more than 500 inputs...
Code:
'switch off all solos on busses
Dim busValues As String() = {"A", "B", "C", "D", "E", "F", "G"}
For Each value As String In busValues
    API.Function("BusXSoloOff", Value:=value)
Next

'switch off all solos on inputs
Dim i as integer
for i = 1 to 500
  API.Function("SoloOff", i)
Next


This is great, I appreciate you sharing your scripting expertise!
Thank you, The "brute force" is what I was looking for, but I am learning from the more elegant version. :-)

Steve
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.