In this article:
Introduction
Sample Code of an OSC Schema
Add your Custom OSC Schema
Write your own OSC Schema
Introduction
In CuePilot you can add custom OSC Schemas to add OSC Tracks with Cues that send commands to any application or system that is controllable via OSC. We’ve already implemented OSC Schemas for common use cases like Disguise and CasparCG, and more will follow. It is also possible to define your own custom OSC Schemas with detailed commands for other applications.
Sample Code of an OSC Schema
OSC Schemas are written as json files. JSON, short for JavaScript Object Notation, is an open standard file format for data interchange, that uses human-readable text. It stores and transmits data objects consisting of attribute–value pairs and array data types.
In an OSC Schema, we need to define the expected argument type(s) for each message and the units and allowable ranges for each parameter.
Let's start by looking at the code for a simple command, 'Brightness', in the built in Disguise OSC Schema.
{
"id": "brightness",
"label": "Brightness",
"description": "Sets the master brightness.\n/d3/showcontrol/brightness {Brightness}",
"address": "/d3/showcontrol/brightness",
"args": [
{"id": "brightness", "caption": "Brightness", "type": "f", "edittype": "float", "default": 0, "range": [0.0, 1.0]}
]
}
In this code, we can see the name (id) for the command, see its label, a description, the receiving address and any arguments.
This corresponds to the interface of adding OSC Cues that CuePilot will show when using the custom OSC Schema.

When adding Cues from any OSC Schema to OSC Tracks on the Timeline, including custom OSC Schemas, the OSC message will be sent to the IP and Port specified for the OSC Tracks when the individual Cue is executed.
The OSC message sent will have the address and arguments specified in the OSC Schema, with the values that were entered for each Cue.
Add a Custom OSC Schema to your Project
Once you have written the code for your OSC Schema in a .JSON file, you will be able to add it to your Project in CuePilot.
In the OSC Schemas view, select + to add a custom OSC Schema.
Give your OSC Schema a Label to give it a name in CuePilot.
Select Import Custom OSC Schema from File and select the .JSON file on your computer.
Select Save and CuePilot will now have it available for you to use in your Project.
Write your own OSC Schema
Writing your own OSC Schemas is a simple yet extremely powerful way to expand the capabilities of CuePilot to work with other applications or systems that are controllable via OSC. Have a look at the code for the Disguise OSC Schema to get ideas for writing your own OSC Schema.
{
"id": "disguise",
"label": "Disguise",
"description": "OSC Schema for controlling Disguise.",
"commands": [
{
"id": "play",
"label": "Play",
"description": "Sets the playhead to play.\n/d3/showcontrol/play",
"address": "/d3/showcontrol/play",
"args": []
},
{
"id": "playsection",
"label": "Play to end of section",
"description": "Sets the playhead to play to end of section.\n/d3/showcontrol/playsection",
"address": "/d3/showcontrol/playsection",
"args": []
},
{
"id": "loopsection",
"label": "Loop section",
"description": "Sets the playhead to play and loop section.\n/d3/showcontrol/loop",
"address": "/d3/showcontrol/loop",
"args": []
},
{
"id": "stop",
"label": "Stop",
"description": "Sets the current track to stop.\n/d3/showcontrol/stop",
"address": "/d3/showcontrol/stop",
"args": []
},
{
"id": "previoussection",
"label": "Previous section",
"description": "Sets the playhead to jump to the previous section.\n/d3/showcontrol/previoussection",
"address": "/d3/showcontrol/previoussection",
"args": []
},
{
"id": "nextsection",
"label": "Next section",
"description": "Sets the playhead to jump to the next section.\n/d3/showcontrol/nextsection",
"address": "/d3/showcontrol/nextsection",
"args": []
},
{
"id": "returntostart",
"label": "Return to start",
"description": "Sets the playhead to return to the first bar of the current track.\n/d3/showcontrol/returntostart",
"address": "/d3/showcontrol/returntostart",
"args": []
},
{
"id": "previoustrack",
"label": "Previous track",
"description": "Sets the playhead to jump to the previous track.\n/d3/showcontrol/previoustrack",
"address": "/d3/showcontrol/previoustrack",
"args": []
},
{
"id": "nexttrack",
"label": "Next track",
"description": "Sets the playhead to jump to the next track.\n/d3/showcontrol/nexttrack",
"address": "/d3/showcontrol/nexttrack",
"args": []
},
{
"id": "cue",
"label": "Cue",
"description": "Sets the playhead to jump to a specified cue\nEnter up to three digits, separated by dot, eg. \"1\", \"1.2\" or \"1.2.3\".\n/d3/showcontrol/cue {Cue Number}",
"address": "/d3/showcontrol/cue",
"args": [
{"id": "cue_number", "caption": "Cue Number", "type": "s", "edittype": "string", "default": "1", "maxlength": 20}
],
"mapMessageFunction": "mapDisguiseCue"
},
{
"id": "fadeup",
"label": "Fade up",
"description": "Sets the master brightness to fade up.\n/d3/showcontrol/fadeup",
"address": "/d3/showcontrol/fadeup",
"args": []
},
{
"id": "fadedown",
"label": "Fade down",
"description": "Sets the master brightness to fade down.\n/d3/showcontrol/fadedown",
"address": "/d3/showcontrol/fadedown",
"args": []
},
{
"id": "volume",
"label": "Volume",
"description": "Sets the master volume.\n/d3/showcontrol/volume {Volume}",
"address": "/d3/showcontrol/volume",
"args": [
{"id": "volume", "caption": "Volume", "type": "f", "edittype": "float", "default": 0, "range": [0.0, 1.0]}
]
},
{
"id": "brightness",
"label": "Brightness",
"description": "Sets the master brightness.\n/d3/showcontrol/brightness {Brightness}",
"address": "/d3/showcontrol/brightness",
"args": [
{"id": "brightness", "caption": "Brightness", "type": "f", "edittype": "float", "default": 0, "range": [0.0, 1.0]}
]
},
{
"id": "indirection",
"label": "Indirection",
"description": "Used for switching out pre-programmed content on the fly.\n/d3/indirection/{Name} {Value}",
"address": "/d3/indirection/{name}",
"args": [
{"id": "name", "caption": "Name", "type": "s", "edittype": "string", "default": "", "maxlength": 100, "discardInArgs": true},
{"id": "value", "caption": "Value", "type": "s", "edittype": "string", "default": "", "maxlength": 100}
]
}
]
}
Learn more:
OSC in CuePilot...