Skip to main content

An interposer between the SRComp REST API and OSC controlled devices.

Project description

srcomp-live

A bridge between the SRComp REST API and OSC controlled devices. OSC is a de-facto standard for theatrical automation. Being able to directly interface these to SR's automation software allows for using industry standard tools such as Qlab, MagicQ & OBS.

Installation

srcomp-live can be installed directly from PyPi with:

pip install srcomp-live

If you (wrongly) believe that YAML is a better configuration format, support for YAML files can be included by running:

pip install srcomp-live[yaml]

This will provide the srcomp-live command that is used to interact with the package.

Configuration

Here is an example configuration file that sets a theoretical lighting controller to red 10 seconds before the start of a match and white if the match ends unexpectedly.

{
    "api_url": "http://compbox.srobo/comp-api/current",
    "api_type": "srcomp",
    "devices": {
        "lighting": "192.168.0.2:8000"
    },
    "actions": [
        {
            "time": -10,
            "device": "lighting",
            "message": "/set_color/{match_num}",
            "args": ["#FF0000"],
            "description": "Set the color of the lighting to red"
        }
    ],
    "abort_actions": [
        {
            "device": "lighting",
            "message": "/set_color",
            "args": ["#FFFFFF"],
            "description": "Set the color of the lighting to white"
        }
    ],
    "match_slot_lengths": {
        "pre": 60,
        "match": 150,
        "post": 90
    }
}

The configuration contains a number of sections. The api_url key is the URL of the API endpoint to access to get information about the current match. The api_type key is the type of API to use. Supported values are "srcomp", "livecomp", "srcomp_compensated", and "livecomp_compensated"

The devices section contains a list of devices that can be controlled by the system. Each device is given a name and an address to send OSC messages to. The name is used in the actions and abort_actions sections to specify which device to send the action to.

The actions section contains a list of the actions that will be executed within the match. The keys available in each action are listed below.

Key Description
time The relative number of seconds after the start time of the match to execute this action
device The name of the device configured in the devices section to send this action to
message The OSC message to send
args A list of one or more arguments to send along with the OSC message
description A description to include in the log message when executing the action

The abort_actions section has the same set of keys as the actions section, except for the time key. These actions are all executed if the system detects a match unexpectedly end or the time within a match decrease. This can be used to stop sound effects and set lighting to an out of match state when match is delayed.

The match_slot_lengths section contains the lengths of the different sections of a match slot in seconds. These are used to validate that the actions fall within the match slot and to allow test-mode to correctly simulate the match.

Templating

The active match number can be included in the OSC message or arguments by using the {match_num} template. This will be replaced with the current match number when the action is executed.

To allow templating the match number into integer and float arguments, the template string {<match_num:int>} or {<match_num:float>} can be used. This will be replaced with the current match number when the action is executed, but as a number rather than a string.

Running

Once the configuration file has been created, there are a few tools available to test this configuration. To try out the configuration, you can use the command:

srcomp-live --test-mode <config>

This will run the configuration in test mode, where the actions will be executed as if they were being run during a match, without needing to connect to the SRComp API.

If you want to test the abort actions, you can use the command:

srcomp-live --test-abort <config>

This will run all the configured abort actions, and then exit.

To run the configuration, where the actions will be executed based on the current match state, you can use the command:

srcomp-live <config>

When running in normal mode, the program will continue to run until it is stopped with Ctrl+C.

While running, the program will log messages to the console. These messages will include a message a few seconds before each action is performed and a message when the action is run. If the program detects that a match has unexpectedly ended or the time has gone backwards, it will log a warning message.

Useful cues

Program Action OSC Message
MagicQ Jump to Cue /pb/<playback>/<cue>
MagicQ Activate playback /pb/<playback>/go
MagicQ Release playback /pb/<playback>/release
QLab Connect to workspace [/workspace/<id>]/connect <password-string>
QLab Run cue [/workspace/<id>]/go
QLab Run specific cue [/workspace/<id>]/go/<cue>
QLab Stop cue [/workspace/<id>]/stop
QLab Immediately stop all cues [/workspace/<id>]/hardStop/[/workspace/<id>]/panic
QLab Jump to cue [/workspace/<id>]/select/<cue>

See also:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

srcomp_live-1.0.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

srcomp_live-1.0.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file srcomp_live-1.0.0.tar.gz.

File metadata

  • Download URL: srcomp_live-1.0.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for srcomp_live-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4e895f7411a54b98d246c0c734734b2a080a3f6355d6cbd2d1194029e5094e19
MD5 da3f2c8c02ec0835b72432f907ffd627
BLAKE2b-256 367c62eaca76614176c7301eb4c7e794b654e7afa985b2aa979325eb57bfcc92

See more details on using hashes here.

Provenance

The following attestation bundles were made for srcomp_live-1.0.0.tar.gz:

Publisher: test_build.yml on WillB97/srcomp-live

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file srcomp_live-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: srcomp_live-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for srcomp_live-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46d2d4afd66f6d893ebba5b5e6fe860a9df1540aecf89bc22374bc07ac80b9bd
MD5 a1d8c984039cd0b0e9b722b585e2f96c
BLAKE2b-256 fdc6671aa3522af8342d3014c1049cb28ecec2420a4a387929fea36ec97f267f

See more details on using hashes here.

Provenance

The following attestation bundles were made for srcomp_live-1.0.0-py3-none-any.whl:

Publisher: test_build.yml on WillB97/srcomp-live

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page