Open Sound Control (OSC) is a
protocol
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
for networking sound synthesizers, computers, and other multimedia devices for purposes such as musical performance or
show control
Show control is the use of automation technology to link together and operate multiple entertainment control systems in a coordinated manner. It is distinguished from an entertainment control system, which is specific to a single theatrical depart ...
. OSC's advantages include interoperability, accuracy, flexibility and enhanced organization and documentation.
The first specification was released in March 2002.
Motivation
OSC is a content format developed at
CNMAT
The University of California, Berkeley (UC Berkeley, Berkeley, Cal, or California) is a public land-grant research university in Berkeley, California. Established in 1868 as the University of California, it is the state's first land-grant univ ...
by Adrian Freed and Matt Wright comparable to
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
,
WDDX
WDDX (Web Distributed Data eXchange) is a programming language-, platform- and transport-neutral data interchange mechanism designed to pass data between different environments and different computers.
History
WDDX was created by Simeon Simeonov ...
, or
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other s ...
. It was originally intended for sharing music performance data (gestures, parameters and note sequences) between musical instruments (especially
electronic musical instruments
Electronic may refer to:
*Electronics, the science of how to control electric energy in semiconductor
* ''Electronics'' (magazine), a defunct American trade journal
*Electronic storage, the storage of data using an electronic device
*Electronic co ...
such as
synthesizers), computers, and other multimedia devices. OSC is sometimes used as an alternative to the 1983
MIDI
MIDI (; Musical Instrument Digital Interface) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, an ...
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
In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages (transported as datagrams in packets) to other hosts on an Internet Protocol (IP) network. ...
and
Ethernet
Ethernet () is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in ...
. OSC messages between gestural controllers are usually transmitted over serial endpoints of
USB
Universal Serial Bus (USB) is an industry standard that establishes specifications for cables, connectors and protocols for connection, communication and power supply ( interfacing) between computers, peripherals and other computers. A broa ...
wrapped in the
SLIP
Slip or SLIP may refer to:
Science and technology Biology
* Slip (fish), also known as Black Sole
* Slip (horticulture), a small cutting of a plant as a specimen or for grafting
* Muscle slip, a branching of a muscle, in anatomy
Computing and ...
protocol.
Features
OSC's main features, compared to MIDI, include:
* Open-ended, dynamic,
URI Uri may refer to:
Places
* Canton of Uri, a canton in Switzerland
* Úri, a village and commune in Hungary
* Uri, Iran, a village in East Azerbaijan Province
* Uri, Jammu and Kashmir, a town in India
* Uri (island), an island off Malakula Isla ...
-style symbolic naming scheme
* Symbolic and high-resolution numeric data
*
Pattern matching
In computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually has to be exact: "either it will or will not be ...
language to specify multiple recipients of a single message
* High resolution
time tags
* "Bundles" of messages whose effects must occur simultaneously
Applications
There are dozens of OSC applications, including real-time sound and media processing environments, web interactivity tools, software synthesizers, programming languages and hardware devices. OSC has achieved wide use in fields including musical expression, robotics, video performance interfaces, distributed music systems and inter-process communication.
The
TUIO
A tangible user interface (TUI) is a user interface in which a person interacts with digital information through the physical environment. The initial name was Graspable User Interface, which is no longer used. The purpose of TUI development ...
community standard for tangible interfaces such as multitouch is built on top of OSC. Similarly the GDIF system for representing gestures integrates OSC.
OSC is used extensively in experimental musical controllers, and has been built into several open source and commercial products.
The Open Sound World (OSW) music programming language is designed around OSC messaging.
OSC is the heart of the
DSSI plugin API, an evolution of the LADSPA API, in order to make the eventual
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
interact with the core of the plugin via messaging the plugin host. LADSPA and DSSI are APIs dedicated to audio effects and synthesizers.
In 2007, a standardized namespace within OSC called SYN, for communication between controllers, synthesizers and hosts, was proposed,
Notable software with OSC implementations include:
Notable hardware with OSC implementations include:
Design
OSC messages consist of an address pattern, a type tag string, arguments and an optional time tag. Address patterns form a hierarchical name space, reminiscent of a
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
filesystem
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
path, or a
URL
A Uniform Resource Locator (URL), colloquially termed as a web address, is a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identifi ...
. 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
* 32-bit
two's complement
Two's complement is a mathematical operation to reversibly convert a positive binary number into a negative binary number with equivalent (but negative) value, using the binary digit with the greatest place value (the leftmost bit in big- endian ...
signed integers
* 32-bit
IEEE floating point
The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found i ...
numbers
*
Null-terminated arrays of eight-bit encoded data (C-style
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
s)
* arbitrary sized
blob
Blob may refer to:
Science Computing
* Binary blob, in open source software, a non-free object file loaded into the kernel
* Binary large object (BLOB), in computer database systems
* A storage mechanism in the cloud computing platform Mi ...
(e.g. audio data, or a video frame)
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
MIDI (; Musical Instrument Digital Interface) is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, an ...
are primarily internet connectivity;
data type
In computer science and computer programming, a data type (or simply type) is a set of possible values and a set of allowed operations on it. A data type tells the compiler or interpreter how the programmer intends to use the data. Most progra ...
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.
References
* 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", https://drive.google.com/file/d/1Snbwx3m6us6L1qeP1_pD6s8hbJpIpD0a/view?usp=share_link, 2012.
* Patrick-Gilles Maillot, "OSC Remote Control Documentation for WING", https://mediadl.musictribe.com/download/software/behringer/WING/BE-P0BV2-WING-OSC-Documentation-0.59.pdf, 2020.
External links
* {{Official website, http://opensoundcontrol.org/
Introduction to OSCat LinuxJournal
SYN a standardized namespace within OSC
a collection of programs and tools for the X32 digital console, based on OSC
a collection of OSC based utilities for the WING personal digital mixing console
a collection of OSC based utilities for the X32/M32 family of digital mixing consoles
Electronic musical instruments
Digital media
Sound production technology
Music notation file formats