# OSC control

## Configuration

Go to the Settngs menu and choose the `Comm` tab.

<figure><img src="/files/gaYUdOjATEWGSehy7zXY" alt=""><figcaption></figcaption></figure>

#### OSC Prefix:

Set this value to establish a message filter, so all incoming messages must have this first item in the address to be valid.

Example:

```
OSC Prefix = exaplay 
Messages = exaplay/a/b/c
```

#### OSC Listen

This field contains all the ip addresses and ports the OSC module will be listening to, each line represents an ethernet IP followed by a port, separated by a colon `:`.

Use an asterisk `*` as a wildcard to specify all Ips in the host.&#x20;

Example:

* Listen to adapter with IP 192.168.1.229 on port 8000: `192.168.1.229:8000`
* Listen to all local adapters on port 4500: `*:4500`

#### OSC Clients

Configure the destination IPs and ports to send OSC messages to.

## OSC IN (Receive)

Each message address should have the first level as configured in Exaplay, by default this value is `exaplay`. The following value should be the address of the object inside Exaplay.&#x20;

Example:

```
/exaplay/comp1
```

The last value should be a command, the parameters are the values in the OSC bundle, and vary depending on the context of the object.&#x20;

### For tmeline compositions:

<table><thead><tr><th width="164">Command</th><th>Descripton</th><th>Parameters</th></tr></thead><tbody><tr><td><code>play</code></td><td>Starts playback from last position</td><td></td></tr><tr><td><code>stop</code></td><td>Stops the playback</td><td></td></tr><tr><td><code>pause</code></td><td>Pauses the current playback</td><td></td></tr><tr><td><code>cuetime</code></td><td>Moves the play cue to a given time</td><td><code>f:</code> Time in seconds</td></tr><tr><td><code>cue</code></td><td>Moves to a given Cue index</td><td><code>i:</code> Cue index</td></tr></tbody></table>

### For cuelist compositions

<table><thead><tr><th width="168">Command</th><th>Descripton</th><th>Parameters</th></tr></thead><tbody><tr><td><code>play</code></td><td>Starts playback from last position</td><td></td></tr><tr><td><code>stop</code></td><td>Stops the playback</td><td></td></tr><tr><td><code>pause</code></td><td>Pauses the current playback</td><td></td></tr><tr><td><code>cue</code></td><td>Moves the play cue to a given clip</td><td><code>i:</code> Clip index (Starting from 1)</td></tr></tbody></table>

### Examples

<table data-header-hidden><thead><tr><th width="300">Case</th><th width="268">Address</th><th>Parameters</th></tr></thead><tbody><tr><td>Start playback for timeline composition named ‘comp1’</td><td><code>/exaplay/comp1/play</code></td><td></td></tr><tr><td>Move to the second clip in cuelist composition named ‘comp3’</td><td><code>/exaplay/comp3/cue</code></td><td><code>i:2</code></td></tr><tr><td>Move to the time 3s in timeline composition named ‘comp1’</td><td><code>/exaplay/comp1/cuetime</code></td><td><code>f:2.0</code></td></tr></tbody></table>

## OSC OUT (Send)

If configured, each Exaplay compositions will emit OSC bundles with their current status.&#x20;

The output address will be similar to what is used for input, beginning with the default address prefix `exaplay`, followed by the address of the Exaplay’s object.

Example:

```
/exaplay/timeline1
```

&#x20;The contents of the bundle are described as follows:

<table><thead><tr><th>Parameter</th><th width="100">Type</th><th width="215">Description</th><th>Values</th></tr></thead><tbody><tr><td><code>status</code></td><td><code>i</code></td><td>Current playback status</td><td><code>0:</code> stop<br><code>1:</code> Play<br><code>2:</code> Pause</td></tr><tr><td><code>cueframe</code></td><td><code>i</code></td><td>Current frame index</td><td></td></tr><tr><td><code>cuetime</code></td><td><code>f</code></td><td>Current time in seconds</td><td></td></tr></tbody></table>

### Out scripted

It is possible to send arbitrary OSC messages at certain events, configured as cue commands in Exaplay. The format structure is as follows:

<table data-header-hidden><thead><tr><th width="89"></th><th width="49"></th><th width="217"></th><th width="45"></th><th width="114"></th><th width="58"></th><th></th></tr></thead><tbody><tr><td><code>OSC</code></td><td><code>></code></td><td><code>IP Address : Port</code></td><td><code>,</code></td><td><code>address</code></td><td><code>,</code></td><td><code>values</code></td></tr></tbody></table>

The value types can be integers `i` or floats `f`.&#x20;

Example command to send a message with address ‘exaplay/test/’ with an integer value of 10 and a float of 0.5 to 192.68.50.10 listening at port 8000:

```
OSC>192.168.50.10:8000,exaplay/test/,i:10,f:0.5
```

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.exaplay.one/control/osc-control.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
