Skip to main content

OSC API

Control FXCanvas from external applications and hardware controllers with Open Sound Control (OSC) messages. FXCanvas works with TouchOSC, custom control surfaces, show control systems, and any other OSC-capable software.

OSC settings with the port setting and the address reference


What is OSC? Pro

Open Sound Control (OSC) is a protocol for networks of sound synthesizers, computers, and multimedia devices. Live performance, installation art, and show control applications use it often.

An OSC message has two parts:

ComponentDescription
AddressA path-like string, for example /global/dimmer
ArgumentsOptional values — floats, integers, or strings

FXCanvas listens for OSC messages on a dedicated port. A message can change the palette, trigger a cue, adjust a global effect, or return data.

Requires a license

OSC control needs an activated license. In the free tier FXCanvas disables the enable checkbox, does not start the listener, and does not send OSC messages. See What requires a license.


Getting Started

Enabling the OSC API

  1. Open Edit → Settings from the menu bar
  2. Select the OSC tab in the sidebar
  3. Select Enable OSC API
  4. Keep the default port 9000, or enter another port number
  5. The listener starts as soon as you select the checkbox. If you changed the port, click Apply

The OSC category of Settings, with the enable checkbox, the port, and the status

When you enable the OSC API, the status indicator shows the current state:

StatusDescription
Listening on port 9000 (green circle)FXCanvas is ready to receive OSC messages
Enabled but not running (yellow circle)The service did not start
Disabled (gray circle)The OSC API is disabled

Testing Your Connection

Do these steps to make sure that the OSC API works:

  1. Enable the OSC API in Settings
  2. Open Tools → Log Viewer
  3. Select the OSC tab
  4. Make sure that the API filter is selected
  5. Send an OSC message from your controller, for example /palette/next
  6. The message appears in the log with an "API" source badge
tip

If no messages appear, make sure that the firewall permits the traffic. Also make sure that your controller sends to the correct IP address and port.


OSC Address Reference

tip

This section lists the most common addresses. The OSC API Reference gives the complete specification. It covers every address, every OSC argument type, every value range, and the query/reply protocol.

Source Type Selection

Control which source type is active.

AddressArgumentsDescription
/source/<n> (/source/1, /source/2)Select the source by 1-based index
/source/{type}Select the source by type name, for example /source/plasma
/source/indexint (1–N)Select the source by index argument
/source/nextfloat/int (optional)Go to the next source type
/source/previousfloat/int (optional)Go to the previous source type
/source/listQuery the available source types. FXCanvas returns an OSC reply.

Examples:

/source/1 → Selects first source type
/source/plasma → Selects "Plasma" source
/source/warp_speed → Selects "Warp Speed" source
/source/index 3 → Selects third source via argument
/source/next → Advances to the next source type
/source/previous → Goes back to the previous source type

Source Preset Selection

Load a saved source preset. A preset holds the source type and the parameter values.

AddressArgumentsDescription
/source/preset/<n> (/source/preset/1, /source/preset/2)Select the preset by 1-based index
/source/preset/{name}Select the preset by name (underscores → spaces)
/source/preset/indexint (1–N)Select the preset by index argument
/source/preset/listQuery the available presets. FXCanvas returns an OSC reply.

Examples:

/source/preset/1 → Selects first source preset
/source/preset/ocean_waves → Selects "Ocean Waves" preset
/source/preset/index 5 → Selects fifth preset via argument
tip

Source presets work well in automation scripts. One command loads the source type and all parameter values.

Palette Selection

Control which color palette is active.

AddressArgumentsDescription
/palette/<n> (/palette/1, /palette/2)Select the palette by 1-based index
/palette/{name}Select the palette by name (underscores or hyphens → spaces)
/palette/indexint (1–N)Select the palette by index argument
/palette/nextfloat/int (optional)Go to the next palette
/palette/previousfloat/int (optional)Go to the previous palette
/palette/listQuery the available palettes. FXCanvas returns an OSC reply.

Examples:

/palette/1 → Selects first palette
/palette/2 → Selects second palette
/palette/ocean → Selects "Ocean" palette
/palette/deep_space → Selects "Deep Space" palette
/palette/purple-haze → Selects "Purple Haze" palette
/palette/index 3 → Selects third palette via argument
/palette/next → Advances to the next palette
/palette/previous → Goes back to the previous palette
note

Palette indexes are 1-based. Index 1 selects the first palette. To select by name, replace the spaces with underscores or hyphens. FXCanvas matches the names without regard to case.

Cue Selection

Control which cue is active. You can trigger a cue by index, by name, or by cue number.

AddressArgumentsDescription
/cue/<n> (/cue/1, /cue/2)Trigger the cue by 1-based index
/cue/{name}Trigger the cue by name (underscores or hyphens → spaces)
/cue/numberfloatTrigger the cue by cue number, for example 1.5
/cue/indexint (1–N)Trigger the cue by index argument
/cue/nextfloat/int (optional)Recall the next cue in cue-number order (no wrap)
/cue/previousfloat/int (optional)Recall the previous cue in cue-number order (no wrap)
/cue/gofloat/int (optional)Trigger the current cue again
/cue/listQuery the available cues. FXCanvas returns an OSC reply.

Examples:

/cue/1 → Triggers first cue
/cue/intro_scene → Triggers "Intro Scene" cue
/cue/number 1.5 → Triggers cue with cue number 1.5
/cue/index 2 → Triggers cue at index 2
/cue/next → Advances to the next cue
/cue/go → Re-triggers the current cue
note

Cue indexes are 1-based. The /cue/next and /cue/previous addresses accept an optional float or int argument. They trigger when the value is more than 0.5, or when the message carries no argument. This behavior helps with button controls that send a press event and a release event.

Global Controls

Adjust the master output effects. These effects apply to the whole composition.

AddressArgumentsRangeDescription
/global/dimmerfloat0.0–1.0Master brightness (0 = black, 1 = full)
/global/huefloat-1.0 to 1.0Hue shift (color wheel rotation)
/global/saturationfloat0.0–2.0Color saturation (1.0 = normal)
/global/blackoutint0 or 1Instant blackout toggle
/global/reset/canvasReset the canvas controls (dimmer, hue, sat, mirror, blackout)
/global/reset/sourceReset the source globals (direction, speed)

Examples:

/global/dimmer 0.5 → Sets master brightness to 50%
/global/hue 0.5 → Shift hue 50% around the color wheel
/global/saturation 0.0 → Fully desaturated (grayscale)
/global/blackout 1 → Turn on blackout
/global/reset/canvas → Reset dimmer, hue, saturation, mirrors, and blackout
/global/reset/source → Reset direction and speed overrides

Mirror Controls

Control the horizontal and vertical mirror effects.

AddressArgumentsDescription
/global/mirror/xint (0 or 1)Horizontal mirror (0 = off, 1 = on)
/global/mirror/yint (0 or 1)Vertical mirror (0 = off, 1 = on)
/global/mirror/bothint (0 or 1)Toggle both mirrors at the same time

List Endpoints

Query the available sources, presets, palettes, and cues. These endpoints return OSC reply messages to the sender.

AddressResponseDescription
/source/listMultiple OSC messagesReturns the count and then the source types
/source/preset/listMultiple OSC messagesReturns the count and then the preset details
/palette/listMultiple OSC messagesReturns the count and then the item details
/cue/listMultiple OSC messagesReturns the count and then the item details

Source List Response:

/source/list/count 20
/source/list/item 1 "Plasma"
/source/list/item 2 "Drift"
/source/list/item 3 "Blobs"
...

Source Preset List Response:

/source/preset/list/count 15
/source/preset/list/item 1 "Ocean Waves" "plasma"
/source/preset/list/item 2 "Fire Storm" "explosion"
...

Palette List Response:

/palette/list/count 5
/palette/list/item 1 "Ocean Blues"
/palette/list/item 2 "Sunset Fire"
/palette/list/item 3 "Aurora"
...

Cue List Response:

/cue/list/count 8
/cue/list/item 1 1.0 "Intro Scene"
/cue/list/item 2 1.5 "Build"
/cue/list/item 3 2.0 "Chorus"
...
warning

Make sure that your controller receives on the reply port (the listening port plus 1). FXCanvas sends the list responses to the IP address of the sender. If FXCanvas listens on port 9000, the replies go to port 9001.


Settings Configuration

OSC Settings Tab

Open the OSC settings from Edit → SettingsOSC tab.

SettingDescription
Enable OSC APIEnables or disables the OSC listener
Incoming PortUDP port FXCanvas listens on (default: 9000, range: 1024–65535)
StatusShows the current service state with a colored indicator
OSC Address ReferenceA collapsible list of the available addresses

The Copy All Addresses button (copy icon) copies a formatted list of all OSC addresses to the clipboard. When you configure your controller, use this list.

Changing the Port

  1. Enter the new port number in the Incoming Port field
  2. Click Apply
  3. Change your OSC controller to send to the new port
warning

A port change restarts the OSC service. FXCanvas shows the warning message "Port change requires restart" with a warning icon.

Common port numbers:

PortUsage
9000Default port. TouchOSC uses it often.
8000Alternative if another application uses 9000

Firewall Configuration

If OSC messages do not reach FXCanvas, do these steps:

  1. Open the Windows Firewall settings
  2. Permit FXCanvas (or FXCanvas.exe) through the firewall
  3. Make sure that the firewall permits UDP traffic on your port
  4. If you use a network controller, make sure that both devices are on the same network

Example Use Cases

TouchOSC Integration

TouchOSC is an iOS and Android app for custom OSC control surfaces.

To configure TouchOSC:

  1. Enable the OSC API in FXCanvas Settings, on port 9000
  2. In TouchOSC, set the Host to the IP address of your computer
  3. Set the Port (outgoing) to 9000
  4. If you use the list endpoints, set Port (incoming) to 9001
  5. Create buttons or faders that map to FXCanvas addresses

Example TouchOSC Layout:

ControlOSC AddressRangePurpose
Button/palette/nextTap to select the next palette
Fader/global/dimmer0–1Slide for brightness
XY Pad X/global/hue-1 to 1Horizontal for hue shift
XY Pad Y/global/saturation0–2Vertical for saturation
Toggle/global/blackout0/1Quick blackout control
tip

The OSC API Reference shows advanced TouchOSC layouts. These layouts use Lua scripts to query the palette and cue lists and show them on the surface.


Troubleshooting

Messages Not Being Received

Look in the Log Viewer:

  1. Open Tools → Log Viewer
  2. Select the OSC tab
  3. Make sure that the API checkbox is selected
  4. Look for incoming messages

If no messages appear:

  • Make sure that the OSC API is enabled in Settings
  • Make sure that the port number matches your controller
  • Look at the firewall settings
  • Make sure that the controller sends to the correct IP address

Wrong Parameter Values

ParameterCorrect RangeCommon Mistake
Dimmer0.0–1.0Sends 0–100 or 0–255
Hue-1.0 to 1.0Sends 0–360
Saturation0.0–2.0Sends 0–100
Toggles0 or 1Sends true/false strings
note

Send floats as the float type, not as strings. Send integers as the int32 type.

Palette or Cue Not Found

If you cannot select an item by name:

  • Replace spaces with underscores: "Deep Space" → /palette/deep_space
  • Hyphens also work: "Purple Haze" → /palette/purple-haze
  • Make sure that the spelling is correct (FXCanvas ignores case)
  • Make sure that the item exists in your palette list or cue list
  • Use the numeric index instead: /palette/1, /cue/1

Port Already in Use

If a port conflict occurs, or the service does not start:

  1. Make sure that no other application holds the port
  2. Change to a different port in Settings (try 8000 or 7700)
  3. Or close the other application

Common conflicts: TouchOSC editor, other OSC applications, VPN software


Distinguishing OSC Sources in Logs

FXCanvas receives OSC messages from two sources:

SourceDescription
PioneerMessages from the built-in Pioneer DJ tempo sync bridge
APIMessages from external controllers through the OSC API

The OSC tab of the Log Viewer has a checkbox for each source:

  • Pioneer — Show or hide the messages from the Pioneer DJ bridge
  • API — Show or hide the messages from the OSC API

This separation helps you debug your controller. You can hide the continuous tempo sync traffic while you work.


  • Sources — The source types that you can control with OSC
  • Palettes — The color palettes that you can control with OSC
  • Shows and Cues — The cues that you can trigger with OSC
  • BPM Sync — The Pioneer DJ tempo system, which also uses OSC internally
  • Log Viewer — Watch the OSC message traffic