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
DJLTC  
#1 Posted : Saturday, May 11, 2024 3:33:49 PM(UTC)
DJLTC

Rank: Member

Groups: Registered
Joined: 3/13/2022(UTC)
Posts: 20
United States

Thanks: 14 times
I have an overlay that I want display every 15 minutes starting on the hour.

I know how to create shortcuts and triggers. How can I get an overlay to show up at 1:00, 1:15, 1:30, 1:45 and 2:00, etc?

DJ
dmwkr  
#2 Posted : Saturday, May 11, 2024 7:57:12 PM(UTC)
dmwkr

Rank: Advanced Member

Groups: Registered
Joined: 2/23/2019(UTC)
Posts: 524

Thanks: 62 times
Was thanked: 122 time(s) in 111 post(s)
Add a countdown to a title and use the OnCountdownCompleted trigger to execute functions, like showing the overlay and restarting the countdown.
thanks 1 user thanked dmwkr for this useful post.
DJLTC on 6/15/2024(UTC)
DJLTC  
#3 Posted : Saturday, May 11, 2024 9:24:01 PM(UTC)
DJLTC

Rank: Member

Groups: Registered
Joined: 3/13/2022(UTC)
Posts: 20
United States

Thanks: 14 times
Thanks for your reply.

Okay... I am familiar with countdowns.

Where I’m stuck is, getting something to happen at a specific time. I’ve been able to trigger things based on a time interval like 5 min from now. But that requires that I watch the clock and initiate the trigger at a precise time. I need vMix to watch the clock for me and do something at exactly 1:00 pm or some other predetermined time.

If that’s possible, I’d appreciate any guidance to point me in the right direction.

Thanks in advance.

DJ
nikosman88  
#4 Posted : Saturday, May 11, 2024 10:53:33 PM(UTC)
nikosman88

Rank: Advanced Member

Groups: Registered
Joined: 12/24/2021(UTC)
Posts: 373
Greece
Location: athens

Thanks: 114 times
Was thanked: 55 time(s) in 52 post(s)
Hello. For this kind of tasks personally im using 3rd party vmix tool. Either vscheduler for Vmix or triggers in Bitfocus companion. I think also utc for vmix can do things in a scheduled time
thanks 1 user thanked nikosman88 for this useful post.
DJLTC on 5/20/2024(UTC)
dmwkr  
#5 Posted : Saturday, May 11, 2024 11:44:10 PM(UTC)
dmwkr

Rank: Advanced Member

Groups: Registered
Joined: 2/23/2019(UTC)
Posts: 524

Thanks: 62 times
Was thanked: 122 time(s) in 111 post(s)
To start the automation you could use something like this script:

https://forums.vmix.com/...ng-for-Dummies#post74242

For the repeated countdowns make sure to use the countdown, not the "countdown to time". The countdown to time does not work with the OnCoundtdownCompleted trigger.

thanks 1 user thanked dmwkr for this useful post.
DJLTC on 6/15/2024(UTC)
Peter1000  
#6 Posted : Monday, May 13, 2024 6:11:52 PM(UTC)
Peter1000

Rank: Advanced Member

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

Thanks: 16 times
Was thanked: 76 time(s) in 57 post(s)
you can do this with a script, this gives you flexibility regarding the times to be executed. in the line “dim zeiten As” you enter all your required times.
in the case of the overlayIN, in the example here, the overlay is then switched off again with a trigger on the input.
Trigger: OnOverlayIN Function: OverlayInput1Out Delay: the time you wish to have the overly online, 2000 for 2 seconds

Code:
' in the following code line, you put your needed times in the 24h format, with quotes, separated by a comma
' you can put as many times in, as you need
' this could be different, when your windows is set to 12h format, tha am/pm thing???
Dim zeiten As String() = {"09:53", "09:54", "09:55", "09:56", "09:57", "09:58"} 

'this is to check, if a new day has come. if this is true, the already executed times will be cleared
Dim lastExecutionDate As Date = Date.Today

' this array holds the already executed times
Dim executed As Boolean() = New Boolean(zeiten.Length - 1) {} 

'loop starts here
While True
    Dim currentTime As DateTime = DateTime.Now

    'check, if a new day has come, if this is true, the already executed times will be cleared
    If lastExecutionDate <> Date.Today Then
        executed = New Boolean(zeiten.Length - 1) {}
        lastExecutionDate = Date.Today
    End If

    'check if the actual time is in your array, and, if not already executed, execute the vMix comand or commands
    Dim currentFormattedTime As String = currentTime.ToString("HH:mm")
    For i As Integer = 0 To zeiten.Length - 1
        If zeiten(i) = currentFormattedTime AndAlso Not executed(i) Then
            ' here the vMix command will be executed, when a new time is true, you could add more commands here
            ' this example puts overlay 1 online, with Input1, please change this to your needs
            API.Function("OverlayInput1In", Input:="1")
            executed(i) = True ' mark the time as executed
            Exit For
        End If
    Next
    Sleep(200)
End While
thanks 1 user thanked Peter1000 for this useful post.
DJLTC on 6/15/2024(UTC)
Roy Sinclair  
#7 Posted : Tuesday, May 14, 2024 8:04:13 AM(UTC)
Roy Sinclair

Rank: Advanced Member

Groups: Registered
Joined: 11/23/2020(UTC)
Posts: 163
United States
Location: Wichita

Thanks: 9 times
Was thanked: 23 time(s) in 19 post(s)
Originally Posted by: DJLTC Go to Quoted Post
I have an overlay that I want display every 15 minutes starting on the hour.

I know how to create shortcuts and triggers. How can I get an overlay to show up at 1:00, 1:15, 1:30, 1:45 and 2:00, etc?

DJ


I too have a script except it's simpler. I use it to display a "Bug" on the screen. "Bug" is the term for a logo that appears for a short time and then disappears, in television it will be seen most as it's how a station identifies itself regularly to meet FCC regulations.

My script turns on the "bug" which is an overlay for one minute out of every five minutes.

Code:

'Bug control, turn on the Identity Bug for one minute out of every five minutes


console.writeline ( "Bug control started")
Dim BugIsOn as boolean = false
API.Function("OverlayInput4Out")

Do While True
     Dim LastDigitOfMinutes as string = DateTime.Now.ToString("mm").substring(1,1)
     if BugIsOn then
        If LastDigitOfMinutes <> "5" and LastDigitOfMinutes <> "0" Then
            ' No longer a minute ending with 0 or 5 so turn the bug off
            API.Function("OverlayInput4Out") 
            BugIsOn = false
        End If
    else
        If LastDigitOfMinutes = "5" or LastDigitOfMinutes = "0" Then
            ' Minute now ends with "0" or "5" - Turn the bug on
            API.Function("OverlayInput4In",Input:="0b7f2f1a-5f71-44bd-998e-21312af20641")
            BugIsOn = true
        End If
    End If
    sleep(1000)  ' Sleep for one second
Loop


For your use however this should work

Code:

Dim OverlayIsOn as boolean = false
API.Function("OverlayInput4Out")

Do While True
     Dim SMinutes as string = DateTime.Now.ToString("mm")
     if OverlayIsOn then
        If SMinutes = "01" or SMinutes = "16" or SMinutes = "31" or SMinutes = "46" Then
            API.Function("OverlayInput4Out") 
            BugIsOn = false
        End If
    else
        If SMinutes = "00" or SMinutes = "15" or SMinutes = "30" or SMinutes = "45"  Then
            API.Function("OverlayInput4In",Input:="0b7f2f1a-5f71-44bd-998e-21312af20641")   <------ Change this to the input for your overlay!
            OverlayIsOn = true
        End If
    End If
    sleep(1000)  ' Sleep for one second
Loop


Note: You didn't say how long the overlay should remain visible or even if it would be removed automatically so I left it at one minute. Also if you use my script be sure to change it for whatever overlay you are using and whatever input you are using for the overlay.




thanks 1 user thanked Roy Sinclair for this useful post.
DJLTC on 6/15/2024(UTC)
DJLTC  
#8 Posted : Monday, May 20, 2024 3:55:12 AM(UTC)
DJLTC

Rank: Member

Groups: Registered
Joined: 3/13/2022(UTC)
Posts: 20
United States

Thanks: 14 times
Originally Posted by: nikosman88 Go to Quoted Post
Hello. For this kind of tasks personally im using 3rd party vmix tool. Either vscheduler for Vmix or triggers in Bitfocus companion. I think also utc for vmix can do things in a scheduled time


Thank you!! Much appreciated! 👍🏼
DJLTC  
#9 Posted : Monday, May 20, 2024 4:33:37 AM(UTC)
DJLTC

Rank: Member

Groups: Registered
Joined: 3/13/2022(UTC)
Posts: 20
United States

Thanks: 14 times
Originally Posted by: Peter1000 Go to Quoted Post
you can do this with a script, this gives you flexibility regarding the times to be executed. in the line “dim zeiten As” you enter all your required times.
in the case of the overlayIN, in the example here, the overlay is then switched off again with a trigger on the input.
Trigger: OnOverlayIN Function: OverlayInput1Out Delay: the time you wish to have the overly online, 2000 for 2 seconds

Code:
' in the following code line, you put your needed times in the 24h format, with quotes, separated by a comma
' you can put as many times in, as you need
' this could be different, when your windows is set to 12h format, tha am/pm thing???
Dim zeiten As String() = {"09:53", "09:54", "09:55", "09:56", "09:57", "09:58"} 

'this is to check, if a new day has come. if this is true, the already executed times will be cleared
Dim lastExecutionDate As Date = Date.Today

' this array holds the already executed times
Dim executed As Boolean() = New Boolean(zeiten.Length - 1) {} 

'loop starts here
While True
    Dim currentTime As DateTime = DateTime.Now

    'check, if a new day has come, if this is true, the already executed times will be cleared
    If lastExecutionDate <> Date.Today Then
        executed = New Boolean(zeiten.Length - 1) {}
        lastExecutionDate = Date.Today
    End If

    'check if the actual time is in your array, and, if not already executed, execute the vMix comand or commands
    Dim currentFormattedTime As String = currentTime.ToString("HH:mm")
    For i As Integer = 0 To zeiten.Length - 1
        If zeiten(i) = currentFormattedTime AndAlso Not executed(i) Then
            ' here the vMix command will be executed, when a new time is true, you could add more commands here
            ' this example puts overlay 1 online, with Input1, please change this to your needs
            API.Function("OverlayInput1In", Input:="1")
            executed(i) = True ' mark the time as executed
            Exit For
        End If
    Next
    Sleep(200)
End While


Thank you!! Much appreciated! 👍🏼
Users browsing this topic
Similar Topics
AutoSave a Temp Preset every 15 minutes (Feature Requests)
by Bamboo 2/21/2021 3:02:00 PM(UTC)
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.