Open Sound Control
From Wikipedia, the free encyclopedia
OpenSound Control (OSC) is a content format for messaging among computers, sound synthesizers, and other multimedia devices that are optimized for modern networking technology. Bringing the benefits of modern networking technology to the world of electronic musical instruments, OSC's advantages include interoperability, accuracy, flexibility, and enhanced organization and documentation.
Contents |
[edit] Motivation
OSC is a content format developed at CNMAT by Adrian Freed and Matt Wright comparable to XML WDDX or JSON. 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 often used as an alternative to the 1983 MIDI standard, where higher performance, higher resolution and a richer musical parameter space is desired. OSC messages are commonly transported across the internet and within home and studio subnets using (UDP/IP, Ethernet). OSC messages between gestural controllers are usually transmitted over serial endpoints of USB by being wrapped in the SLIP protocol.
OSC gives musicians and developers more flexibility in the kinds of data they can send over the wire, enabling new applications that can communicate with each other at a high level.
[edit] Features
- Open-ended, dynamic, URL-style symbolic naming scheme
- Symbolic and high-resolution numeric argument data
- Pattern matching language to specify multiple recipients of a single message
- High resolution time tags
- "Bundles" of messages whose effects must occur simultaneously
There are dozens of implementations of OSC, including real-time sound and media processing environments, web interactivity tools, software synthesizers, a large variety of programming languages, and hardware devices. OSC has achieved wide use in fields including new computer-based interfaces for musical expression, robotics, video performance interfaces, wide-area and local-area networked distributed music systems, inter-process communication, and even from within a single application.
The TUIO 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 many commercial products including, the Jazz Mutant Lemur, the Monome, Native Instruments Reaktor and Cycling 74 Max/MSP.
The Open Sound World (OSW) music programming language is designed around OSC messaging.
OSC is also used as the heart of the DSSI plugin API, an evolution of the LADSPA API, in order to make the eventual GUI interact with the core of the plugin via messaging the plugin host. LADSPA and DSSI are linux APIs dedicated to audio effects and synths.
[edit] Design
OSC messages contain name/value pairs and an optional time tag. Values are named in a hierarchical name space, reminiscent of a Unix filesystem path, or a URL. Value types are represented in a compact string representation. Values are represented in binary form with 4-byte alignment. The core types supported are
- 32 two's complement signed integers
- 32-bit IEEE floating point numbers
- NULL terminated arrays of 8 bit ASCII encoded data (C-style strings)
- arbitrary sized blob (e.g. audio data, or a video frame)
Applications commonly employ extensions to this core set. 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 speed and throughput; internet connectivity; datatype resolution; and the comparative ease of specifying a symbolic path, as opposed to specifying all connections as 8-bit numbers. .
[edit] Implementations
Some examples of software with OSC implementations:
- Aestesis Elektronika
- AlgoScore
- Ardour
- AVSynthesis
- Bidule
- ChucK
- Circle Synth
- Crystal Space in the external repository. Has CEL bindings and can be used for feedback on scenes and together with scripted behaviors for entities, allowing dynamism from OSC-enabled apps.
- CSound
- DiABlu is a set of OSC to Bluetooth (and vice-versa) tools.
- Dlight
- DSMI
- Eyecon
- EyesWeb
- Fluxus
- FreeJ
- IanniX
- Isadora (v.1.1)
- Jamoma is a modular standard for Max/MSP
- liblo C library for Unix
- Lily
- LiVES
- Max/MSP
- Mocolo
- Module8
- Mxwendler
- OSCulator
- Processing
- Pure Data
- Quartz Composer (as of v3.0 / Mac OS X v10.5)
- Reaktor
- SuperCollider
- Squeak
- Tiction
- TJShow (as of v3.1)
- Traktor DJ Studio
- VirtualDJ
- vvvv
Some examples of hardware with OSC implementations:
Since September 2007, there has been a proposal for a standardized namespace within OSC called SYN for communication between controllers, synthesizers and hosts.
[edit] References
- 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.
[edit] External links
- opensoundcontrol.org
- Net::OpenSoundControl Perl module at CPAN
- Introduction to OSC at LinuxJournal
- Discussion of proposed Open Media Control standard at wetpaint.com