Katana VentraIP

Open Sound Control

Open Sound Control (OSC) is a protocol for networking sound synthesizers, computers, and other multimedia devices for purposes such as musical performance or show control. OSC's advantages include interoperability, accuracy, flexibility and enhanced organization and documentation.[1] Its disadvantages include inefficient coding of information, increased load on embedded processors,[2] and lack of standardized messages/interoperability.[3][4][5] The first specification was released in March 2002.

Motivation[edit]

OSC is a content format developed at CNMAT by Adrian Freed and Matt Wright comparable to XML, WDDX, or JSON.[6] It was originally intended for sharing music performance data (gestures, parameters and note sequences) between musical instruments (especially electronic musical instruments such as synthesizers), computers, and other multimedia devices. OSC is sometimes used as an alternative to the 1983 MIDI standard, when higher resolution and a richer parameter space is desired. OSC messages are transported across the internet and within local subnets using UDP/IP and Ethernet. OSC messages between gestural controllers are usually transmitted over serial endpoints of USB wrapped in the SLIP protocol.

Open-ended, dynamic, -style symbolic naming scheme

URI

Symbolic and high-resolution numeric data

language to specify multiple recipients of a single message

Pattern matching

High resolution

time tags

"Bundles" of messages whose effects must occur simultaneously

OSC's main features, compared to MIDI, include:[1]

32-bit signed integers

two's complement

32-bit numbers

IEEE floating point

arrays of eight-bit encoded data (C-style strings)

Null-terminated

arbitrary sized (e.g. audio data, or a video frame)

blob

OSC messages consist of an address pattern (such as /oscillator/4/frequency), a type tag string (such as ,fi for a float32 argument followed by an int32 argument), and the arguments themselves (which may include a time tag).[8] Address patterns form a hierarchical name space, reminiscent of a Unix filesystem path, or a URL, and refer to "Methods" inside the server, which are invoked with the attached arguments. Type tag strings are a compact string representation of the argument types. Arguments are represented in binary form with four-byte alignment. The core types supported are


An example message is included in the spec (with null padding bytes represented by ␀): /oscillator/4/frequency␀,f␀␀, Followed by the 4-byte float32 representation of 440.0: 0x43dc0000.[9]


Messages may be combined into bundles, which themselves may be combined into bundles, etc. Each bundle contains a timestamp, which determines whether the server should respond immediately or at some point in the future.[8]


Applications commonly employ extensions to this core set. More recently some of these extensions such as a compact Boolean type were integrated into the required core types of OSC 1.1.


The advantages of OSC over MIDI are primarily internet connectivity; data type resolution; and the comparative ease of specifying a symbolic path, as opposed to specifying all connections as seven-bit numbers with seven-bit or fourteen-bit data types.[8] This human-readability has the disadvantage of being inefficient to transmit and more difficult to parse by embedded firmware, however.[2]


The spec does not define any particular OSC Methods or OSC Containers. All messages are implementation-defined and vary from server to server.

Schmeder, A., Freed, A., and Wessel, D., "Best practices for Open Sound Control", Linux Audio Conference, Utrecht, The Netherlands, 2010.

Freed, A., Schmeder, A., "Features and Future of Open Sound Control version 1.1 for NIME", NIME Conference 2009.

Wright, M., Freed, A., "Open Sound Control: A New Protocol for Communicating with Sound Synthesizers", International Computer Music Conference, Thessaloniki, Greece, 1997.

Patrick-Gilles Maillot, "UNOFFICIAL X32/M32 OSC REMOTE PROTOCOL", , 2012.

https://drive.google.com/file/d/1Snbwx3m6us6L1qeP1_pD6s8hbJpIpD0a/view?usp=share_link

Patrick-Gilles Maillot, "OSC Remote Control Documentation for WING", , 2020.

https://mediadl.musictribe.com/download/software/behringer/WING/BE-P0BV2-WING-OSC-Documentation-0.59.pdf

Official website

at LinuxJournal

Introduction to OSC

a standardized namespace within OSC

SYN

a collection of programs and tools for the X32 digital console, based on OSC

X32-Behringer

a collection of OSC based utilities for the WING personal digital mixing console

patrickmaillot/wing

a collection of OSC based utilities for the X32/M32 family of digital mixing consoles

patrickmaillot/x32