Introduction to Open Sound Control

Configuration#

Each and every HOLOPHONIX parameters can be controlled or monitored via OSC (Open Sound Control) commands.

To configure the OSC Receive and Sends, open the OSC tab of the Setup View.

OSC Receive#

Send the OSC messages to the processor’s IP address on the default port 4003. However, you can change that port number. See the OSC tab of the Setup View page.

OSC Send#

To send OSC commands from HOLOPHONIX to an external device, you first need to activate and configure the destination IP address and port. See the OSC tab of the Setup View page.

You can now set multiple OSC destinations, and choose what coordinate format will be output for source positioning.

warning

Ports 4002, 4001 and below 1024 are not allowed.

When a parameter's value is changed (such as source position or any source or bus setting for example), its new value is sent to the destination.

Message Structure#

OSC messages are structured in two parts: first the address (whose elements are separated by slashes: /), followed by the argument (the value) to transmit.

/{element}/{id}/{path/to/the/parameter} {argument#1} {argument#2} ...

Example#

To set the second spatialization bus level to -2.5 dB, one would send the following command:

/bus/2/gain -2.5

Address#

The address itself contains first the type of object (mono source /track, stereo source /stereo, spatialization bus /bus, etc.), then the index of the object, and finally the parameter to control. When selecting an object, its header in the inspector displays the OSC address to use to control it, with its index included.

Depending on the type of object to control, the address can start with one of the following:

  • /track (mono object)
  • /stereo (stereo object)
  • /multi (multichannel object)
  • /tree (mic tree object)
  • /aformat (A-Format ambisonics stream source)
  • /bformat (B-Format ambisonics stream source)
  • /zylia (Zylia microphone stream source)
  • /eigenmike (Eigenmike microphone stream source)
  • /hoastream (Higher Order Ambisonics stream source)
  • /bus (sound spatialization bus)
  • /reverb (reverberation associated with each bus)
  • /d2m (direct to master source)
  • /d2b (direct to bus source)
  • /thru (bus through)
  • /lfe (LFE bus)
  • /monitoring (monitoring bus)
  • /master (master bus)

Arguments#

Argument Types#

The "argument" is the value that is sent to a specific parameter. There are four types of arguments:

  • integer numbers (1, 2, 3, etc.)
  • decimal numbers (1.1, 1.2, 1.3, etc.)
  • string of characters (abc, xyz),
  • booleans (true or false, 0 or 1)

Rounding#

When a decimal value is sent instead of an integer, the value will be rounded to the closest integer (for example, 1.5 will become 1, and 1.6 will become 2).

Angular Scales#

Regarding the values expressed in degrees, they can be sent to HOLOPHONIX on the native -180° to +180° scale, but also from 0° to 360°. For exemple, if you set an angle to +190°, it will be converted to -170°, its equivalent direction on the native scale.

Non Case-Sensitive#

When the argument is a string of characters, the messages will not be case-sensitive.

Example: Those two messages will be strictly equivalent:

/bformat/1/norm FuMa
/bformat/1/norm fuma

Pattern Matching (Groups and substitutions)#

Specific structures of messages allow controlling several elements together:

  • Use the ? character as a substitution element for a single character in the addresses,
  • Use the * character as a substitution element for several characters,
  • Use straight brackets [ ] with a dash - to control a range: [1-4] for 1, 2, 3 and 4 for example,
  • Use curvy brackets { } with a coma , to control a list: {1,4,5} for 1, 4 and 5 only; it also works with strings of characters: {stereo, multi} for example

Example 1: If you want to set the azimuth position of all the mono sources to +10°, you could send:

/track/*/azim 10

Example 2: If you want to set the level to -6 dB for stereo sources 1 to 5, you could send either of these two messages:

/stereo/[1-5]/gain -6
/stereo/{1,2,3,4,5}/gain -6

Example 3: If you want to mute all mono and stereo sources, send:

/{track,stereo}/*/mute 1