Skip to main content

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:

Metadata

Release files for srcomp-live 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for srcomp-live 1.2.0
File Size Uploaded Provenance
srcomp_live-1.2.0.tar.gz 18.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for srcomp-live 1.2.0
File Interpreter ABI Platform
srcomp_live-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 35.1 kB

Release files / srcomp_live-1.2.0.tar.gz

Download URL srcomp_live-1.2.0.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a41879151793ad4e69799756e15fde7e45b2592f8e24d249df87f5b41cbec352
BLAKE2b-256 checksum
How to use checksums
fb8cfb4878d1be6a6fc3dc170e9f94aadd21dffa4609793cb170f577e3aef330
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 7, 2025.

Transparency log

Release files / srcomp_live-1.2.0-py3-none-any.whl

Download URL srcomp_live-1.2.0-py3-none-any.whl
Size 16.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0d6d612d5a19005bfe4cfe1f7e4258a3b88a7ff6098adba79d41d58d1c35c63
BLAKE2b-256 checksum
How to use checksums
e02b88ee15aa4f6ad93955e6be5ac286968f184bc0a1b29572776a0963c6fb7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 7, 2025.

Transparency log

Security for srcomp-live 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for srcomp_live-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 7, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page