Content deleted Content added
Add ossia score to the list of OSC-enabled software |
m →Applications: HTTP to HTTPS for SourceForge |
||
(47 intermediate revisions by 28 users not shown) | |||
Line 1:
{{Short description|Protocol for multimedia devices}}
[[File:IPad_TouchOSC_&_microKontrol.jpg | thumb | right | iPad running [[TouchOSC]]]]
'''Open Sound Control''' ('''OSC''') is a [[Communications protocol|protocol]] for networking [[Synthesizer|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.<ref name="osc org">{{cite web |title=Introduction to OSC |url=http://opensoundcontrol.org/spec-1_0.html#introduction |website=opensoundcontrol.org |date=7 April 2021 |access-date=11 September 2021}}</ref> Its disadvantages include inefficient [[Computer programming|coding of information]], increased load on [[Embedded system|embedded processors]],<ref name=":0">{{Cite web |last=Fraietta |first=Angelo |date=2008 |title=Open Sound Control: Constraints and Limitations |doi=10.5281/zenodo.1179537 |s2cid=5690441 |language=en}}</ref> and lack of standardized messages/interoperability.<ref>{{Cite web |title=Home · fabb/SynOSCopy Wiki |url=https://github.com/fabb/SynOSCopy |access-date=2022-12-31 |website=GitHub |language=en |quote=one of the reasons OSC has not replaced MIDI yet is that there is no connect-and-play … There is no standard namespace in OSC for interfacing e.g. a synth}}</ref><ref>{{Cite web |last=Supper |first=Ben |date=October 24, 2012 |title=We hate MIDI. We love MIDI. |url=https://focusritedevelopmentteam.wordpress.com/2012/10/24/we-hate-midi-we-love-midi/ |access-date=2023-01-01 |website=Focusrite Development |language=en |quote=OSC suffers from a superset of this problem: it’s anarchy, and deliberately so. The owners of the specification have been so eager to avoid imposing constraints upon it that it has become increasingly difficult for hardware to cope with it. … More severely, there is an interoperability problem. OSC lacks a defined namespace for even the most common musical exchanges, to the extent that one cannot use it to send Middle C from a sequencer to a synthesiser in a standardised manner}}</ref><ref>{{Cite web |title=OSC-Namespace and OSC-State: Schemata for Describing the Namespace and State of OSC-Enabled Systems |url=https://www.nime.org/proceedings/2014/nime2014_300.pdf |quote=OSC also introduces new obstacles. First, since there is no fixed set of messages, each participating server needs to know what messages it can send to the servers it intends to communicate with. Currently the OSC standard does not provide for a means of programmatically discovering all messages a server responds to}}</ref> The first specification was released in March 2002.
== Motivation ==
OSC is a [[content format]] developed at [[CNMAT]] by Adrian Freed and Matt Wright comparable to [[XML]], [[WDDX]], or [[JSON]].<ref>{{cite web |title=OpenSoundControl {{!}} CNMAT |url=http://cnmat.berkeley.edu/opensoundcontrol |website=cnmat.berkeley.edu |access-date=22 December 2019}}</ref> It was originally intended for sharing music performance data ([[Gesture|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 [[Serial Line Internet Protocol|SLIP]] protocol.{{Citation needed|date=December 2022}}
== Features ==
Line 15 ⟶ 16:
== 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]] community standard for tangible interfaces such as multitouch is built on top of OSC. Similarly the GDIF system for representing gestures integrates OSC.
Line 21 ⟶ 22:
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.<ref>{{cite web |title=OSW Manual OpenSound Control (OSC) |url=
OSC is the heart of the [[Disposable Soft Synth Interface|DSSI]] plugin API, an evolution of the LADSPA API, in order to make the eventual [[Graphical user interface|GUI]] interact with the core of the plugin via messaging the plugin host. LADSPA and DSSI are APIs dedicated to audio effects and synthesizers.
Line 31 ⟶ 32:
<!--Listed applications should be notable with a sourced Wikipedia article.-->
{{columns-list|colwidth=22em|
* [[Ableton Live]]
* [[Ardour (audio processor)|Ardour]]
* [[Aurora dBTechnologies Network]]
* [[
* [[ChucK]]
* [[CasparCG (open source video graphics engine)]]
Line 50 ⟶ 52:
* [[LiVES]]
* [[Logic Pro]]
* [[LoopToGo]]
* [[MadMapper]]
* [[Magic Music Visuals]]
* [[Max/MSP]]
* [[Mocolo]]
Line 65 ⟶ 70:
* [[REAPER]]
* [[Renoise]]
* [[Resolume Arena/Avenue]]
* [[ShowForge]]
* [[Sonic Pi]]
* [[
* [[Squeak]]
* [[SuperCollider]]
* [[Surge XT]]
* [[TouchDesigner]]
* [[TouchOSC]]
* [[Unreal Engine]]
* [[VRChat]]
* [[Ventuz]]
* [[X32ReaperAutoMate]]
* [[X32XLiveAutoMate]]
* [[WingReaperAutoMate]]
* [[WingWLiveAutoMate]]
}}
Line 81 ⟶ 96:
* [[Audiocubes]]
* [[ETCConnect|ETC]] EOS Consoles
* [[MA Lightning]]
* [[DiGiCo]] SD Mixing Consoles
* [[Flic (company)|Flic]] Flic smart controller
* [[Kyma (sound design language)|Kyma]]
* [[Lemur
* [[MC2 Delta-DSP Amplifiers]]
* [[MIDIbox]]
* [[Milkymist]] One
* [[Monome|Monome 40h]]
* [[X32 Digital Mixing Console]]
* [[XTA DPA Amplifiers]]
* [[Yamaha Rivage PM Series Consoles (V5.0)]]}}
== Design ==
OSC messages consist of an address pattern (such as <code>/oscillator/4/frequency</code>), a type tag string (such as <code>,fi</code>
* 32-bit [[two's complement]] signed integers
Line 99 ⟶ 117:
* arbitrary sized [[Binary large object|blob]] (e.g. audio data, or a video frame)
An example message is included in the spec (with null padding bytes represented by ␀): <code>/oscillator/4/frequency␀,f␀␀</code>, Followed by the 4-byte float32 representation of 440.0: 0x43dc0000.<ref>{{Cite web |last=Wright |first=Matt |date=March 29, 2002 |title=Examples Supporting the OpenSoundControl 1.0 Spec |url=https://opensoundcontrol.stanford.edu/spec-1_0-examples.html#argument |access-date=2023-01-01 |website=opensoundcontrol.stanford.edu |edition=}}</ref>
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.▼
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.<ref name=":1" />
▲Applications commonly employ extensions to this core set. More recently some of these extensions such as a compact Boolean type
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.<ref name=":1">{{cite web |last=Wright |first=Matt |date=March 26, 2002 |title=The Open Sound Control 1.0 Specification |url=
The spec does not define any particular OSC Methods or OSC Containers. All messages are implementation-defined and vary from server to server.
▲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.<ref>{{cite web |title=The Open Sound Control 1.0 Specification |url=http://opensoundcontrol.org/spec-1_0 |website=opensoundcontrol.org |access-date=22 December 2019}}</ref>
== References ==
Line 108 ⟶ 132:
* 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/1Yt_S1mpPt3CAzeq3Dnpe_IqctQ-1GlTz/view, 2012-.
* Patrick-Gilles Maillot, "WING Remote Protocols", https://drive.google.com/file/d/1-iptgd2Uxw4qPEbmegG2Sqccf8AbRRfk/view, 2020-.
== External links ==
Line 113 ⟶ 139:
* [http://www.linuxjournal.com/content/introduction-osc Introduction to OSC] at LinuxJournal
* [https://github.com/fabb/SynOSCopy/wiki SYN], a standardized namespace within OSC
* [https://github.com/pmaillot/X32-Behringer X32-Behringer], a collection of programs and tools for the X32 digital console, based on OSC
* [https://sites.google.com/site/patrickmaillot/wing#h.xitnoyg1gpny patrickmaillot/wing], a collection of OSC based utilities for the WING personal digital mixing console
* [https://sites.google.com/site/patrickmaillot/x32 patrickmaillot/x32], a collection of OSC based utilities for the X32/M32 family of digital mixing consoles
[[Category:Audio communications protocols]]
[[Category:Electronic musical instruments]]
[[Category:Digital media]]
|