- OpenSound Control
OpenSoundControl (OSC) is a protocol for communication 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.
Motivation
OpenSound Control (OSC) is a communication protocol which allows musical instruments (especially
electronic musical instruments such assynthesizers ), computers, and other multimedia devices to share music performance data in realtime over a network. OSC is meant to supersede theMIDI standard, which was defined in 1983 and which many consider inadequate for modern multimedia purposes. Because it is a networking protocol, OSC allows musical instruments, controllers, and multimedia devices to communicate via a standard home or studio network (TCP/IP ,Ethernet ) or via the internet. OSC operates at broadband network speeds, allowing new types of realtime interactions which were not possible because of MIDI "lag", although this is usually attributable to factors other than the inherent speed of MIDI propagation. OSC also gives musicians and developers more flexibility in the kinds of data they can send over the wire, enabling new applications which communicate with each other at a higher level.OSC can transport over many protocols, but is commonly used with UDP. It was developed by the same team who proposed the unsuccessful
ZIPI protocol.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 resolutiontime tag s
* "Bundles" of messages whose effects must occur simultaneously
* Query system to dynamically find out the capabilities of an OSC server and get documentationThere 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, wide-area and local-area networked distributed music systems, inter-process communication, and even from within a single application.
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.Design
OSC uses UDP ports to make connections between applications. A program chooses any number of ports to send on, and any number of ports to receive messages on, and each message has an associated path, reminiscent of a
Unix filesystem path, or a URL. Messages that can be sent via OSC include:* 8-bit unsigned integers
* 32 or 64 bittwo's complement signed integers
* 32-bitMIDI packets
* 32-bitIEEE floating point numbers
* 64-bitIEEE double precisionfloating point numbers
* NULL terminated arrays of 8 bitASCII encoded data (C-style strings)
* arbitrary sized blob (e.g. audio data, or a video frame)Many implementations only support character strings and 32-bit floating point numbers.
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. OSC messages arrive as fast as the underlying network stack can transfer them, and can be delayed to take effect at a specific time, whereasMIDI ensures synchronicity of messages by transferring them at a specific clock rate.Implementations
Some examples of software with OSC implementations:
*Aestesis Elektronika
* Ardour
*Bidule
*ChucK
*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
* [http://diablu.jorgecardoso.eu DiABlu] is a set of OSC to Bluetooth (and vice-versa) tools.
*Eyecon
*EyesWeb
* [http://www.pawfal.org/fluxus/ Fluxus]
*IanniX
* Isadora (v.1.1)
* Lily
*Max/MSP
*Mocolo
*Mxwendler
*Pure Data
*Quartz Composer (as of v3.0 /Mac OS X v10.5 )
*Reaktor
*SuperCollider
*Squeak
*Traktor DJ Studio
*VirtualDJ
*vvvv Some examples of hardware with OSC implementations:
* [http://www.kiss-box.com Kiss-Box]
*Lemur Input Device
* Monome 40hSince September 2007, there has been a proposal for a [http://stud3.tuwien.ac.at/~e0725639/OSC-SYN.txt standardized namespace within OSC called SYN] for communication between controllers, synthesizers and hosts.
References
* Wright, M., Freed, A., "Open Sound Control: A New Protocol for Communicating with Sound Synthesizers", International Computer Music Conference, Thessaloniki, Greece, 1997.
External links
* [http://archive.cnmat.berkeley.edu/OpenSoundControl/ OpenSound Control page] at
CNMAT
* [http://opensoundcontrol.org/ opensoundcontrol.org]
* [http://search.cpan.org/perldoc?Net::OpenSoundControl Net::OpenSoundControl]Perl module atCPAN
Wikimedia Foundation. 2010.