Skip to content

Repository files navigation

TheaterTime

Simple Theater Timer for Events and Shows

What it is

This is a simple timer that can keep track of a theater performance (or really any sequential event). It outputs all of it's data via OSC and via a simple web interface. Interaction is OSC message based, although some simple interactions are available in the "admin" web interface. OSC output is specifically tailored to work well with Vor

Basic Show Basic Rehearsal OSC Output Vor Sample

Features

  • Countdown to absolute time timers (show start)
  • Countup from zero timers (Acts, Scenes, whatever)
  • Countdown to an absolute number of minutes (intermissions)
  • Toggle switches that can optionally be tied to timers (places, house open, etc)
  • Audio feedback on the main process for switches and countdown timers ("10 Minutes, please"; "This is your places call")
  • Configuration auto save with an easy option to update all timers to reference "today"
  • Configuration save to file / load from file. Drag-and-drop supported.

Switches

Switches are ON/OFF Data points. You can activate of deactivate them manually, and they can also be deactivated when another switch is thrown, or a timer is started. As a note, the documentation assumes you won't have more than 99 switches - this isn't a real limit, but 2-digit padding is used for output.

  • Active / Inactive Text : The text displayed when the switch is active or inactive
  • Color : Standard is to use green when on, and red when off. Reversing does the opposite
  • Speak : A text string that will be machine-spoken when the switch is toggled active
  • Reset Switch(es) : These are the switches that will be set to inactive when this switch is set active

Switch Settings

Timers

Timers keep time. They can track time until an event, or time elapsed in an event. You can only have 1 timer active at a time, but there are provisions for running inactive timers, depending on type.

  • Count Down : This timer type counts down to a pre-specified DateTime. For instance, your event starts today at 7:30PM. You can have multiple count-down timers, and they all run automatically from start, and stop when marked inactive.
  • Count Up : This timer type tracks elapsed time. Only one count-up timer can be active at a time. For instance, an act timer.
  • Count Minutes : This timer type counts down to a pre-specified number of minutes. For instance, a 15 minute intermission. Only one minute count-down timer can be active at a time.

Additional options are available on some timers

  • Sound : The system will speak "## Minutes Please. ## Minutes" for 90, 60, 30, 20, 15, 10, and 5 minutes remaining. This setting is unavailable on count-up timers. You may specify an additional text to be spoken after the chime and before the generated response. This is particularly helpful when running multiple shows or events concurrently.
  • Reset Switch(es) : These are the switches that will be set to inactive when this timer is set active. This setting is available on all timers, but will not function on the first timer.
  • Minutes : The number of minutes to count (plus 2 seconds, so audio plays correctly). This settings is only available on minute count-down type timers.
  • Target : The target DateTime to count-down to. This setting is only available on count-down type timers.

Timer Settings

OSC Input

The recommended method of interacting with TheaterTime is to use OSC messages.

General Settings

Switch OSC

  • Toggle a switch active : /theaterTime/switch/on [int:1..99]
  • Toggle a switch inactive : /theaterTime/switch/off [int:1..99]
  • Toggle a switch to it's opposite state : /theaterTime/switch/toggle [int:1..99]

Timer OSC

  • Advance to the next timer : /theaterTime/timer/next
  • Return to the previous timer : /theaterTime/timer/previous
  • Stop all timers : /theaterTime/timer/stop

Other OSC

  • Reset all timers and switches : /theaterTime/reset
  • Speak an arbitrary string : /theaterTime/speak [string]

OSC Output

TheaterTime is intended for use with Vor - but it can talk to any application that consumes OSC. Configuration of which items to send are on the settings page, their output is explained here.

Switch Single

  • /theaterTime/switch/[01..99] [s:Title] [s:Active/Inactive Text] [i:0/1]
  • Inactive Example
    • /theaterTime/switch/01 [s:"House"] [s:"House is NOT Open"] [i:0]
  • Active Example
    • /theaterTime/switch/01 [s:"House"] [s:"House is OPEN"] [i:1]
  • EOS Variant
    • /theaterTimer/EOSswitch/01 [s:Active/Inactive Text]
    • /theaterTimer/EOSswitch/01 [s:"House is OPEN"]

Switch Toggle

  • /theaterTime/toggle/[01..99] [s:Active text/empty] [s:Inactive Text/empty]
  • Inactive Example
    • /theaterTime/toggle/01 [s:""] [s:"House is NOT Open"]
  • Active Example
    • /theaterTime/toggle/01 [s:"House is OPEN"] [s:""]
  • Reverse Color
    • /theaterTime/toggle/[01..99] [s:Inactive Text/empty] [s:Active text/empty]

Current Timer

  • /theaterTime/currentTimer [i:Seconds] [s:Title] [s:Time String]
  • Example
    • /theaterTime/currentTimer [i:19607] [s:"Pre-Show"] [s:"↓ - 05:26:47"]
  • Expired Example
    • /theaterTime/currentTimer [i:-2141] [s:"Pre-Show"] [s:"↓ + 00:35:41"]
  • Blink Example
    • /theaterTime/currentTimer [i:-2187] [s:""] [s:""]
  • EOS Variant
    • /theaterTimer/EOSTimer [s:Title - Time String]
    • /theaterTime/EOSTime [s:"Pre-Show - ↓ - 05:26:47]

License

Do whatever you like with this code. If it might be helpful to others, maybe open a pull request.

A Note about power saving

Most of the power saving features of chromium (electron renderer) have been disabled for this application. This is done so that audio announcements play even if TheaterTime is hidden or minimized. The down side of this is that TheaterTime will always use the CPU, and if you are running it on a laptop, a bit more battery.

qLab Integration

Most of this is very straightforward - you just need a proper network entry

qLab

OR you can use the .qlabnetwork file included in the project repository (qlab folder). It goes in ~/Library/Application Support/Qlab/Network Library/

qLab

If you wish to use the "speak arbitrary message" function, and would like to have qLab prompt you for the message, you will need 2 cues:

  • SPEAK - A network cue pointed to the TheaterTime Patch
  • ??? - A script cue with the following script in it:

standard OSC network definition

tell application id "com.figure53.QLab.5" to tell front workspace
    set prevCommand to notes of cue "SPEAK"
    if prevCommand is "" then set prevCommand to "Hello"

    display dialog "" default answer prevCommand with title "Text to speak" buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel"

    set theCommand to text returned of result

    set notes of cue "SPEAK" to theCommand
    set oscCommand to "/theaterTime/speak " & quote & theCommand & quote
    set parameter values of cue "SPEAK" to {oscCommand}
    start cue "SPEAK"
end tell

included custom network configuration

tell application id "com.figure53.QLab.5" to tell front workspace
    set prevCommand to notes of cue "SPEAK"
    if prevCommand is "" then set prevCommand to "Hello"

    display dialog "" default answer prevCommand with title "Text to speak" buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel"

    set theCommand to text returned of result

    set notes of cue "SPEAK" to theCommand
    set parameter values of cue "SPEAK" to {"/speak", theCommand}
    start cue "SPEAK"
end tell

About

Simple Timer for theater and similar events with OSC control

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages