# Open Sound Control

L'Open Sound Control est un format de transmission de données entre ordinateurs, synthétiseurs, robots ou tout autre matériel ou logiciel compatible, conçu pour le contrôle en temps réel. Il utilise le réseau au travers des protocoles UDP ou TCP et apporte des améliorations du point de vue de la rapidité et de la flexibilité par rapport à l'ancienne norme MIDI.

## Motivation

OSC est un format de contenu développé au CNMAT par Adrian Freed et Matt Wright comparable à XML , WDDX ou JSON. Il était à l'origine destiné au partage de données de performance musicale (gestes, paramètres et séquences de notes) entre des instruments de musique (notamment des instruments électroniques tels que des synthétiseurs), des ordinateurs et d'autres dispositifs multimédias. OSC est parfois utilisé comme alternative au standard MIDI de 1983, lorsqu'une résolution plus élevée et un espace de paramètres plus riche sont souhaités. Les messages OSC sont transportés à travers Internet et dans les sous-réseaux locaux en utilisant (UDP / IP , Ethernet). Les messages OSC entre les contrôleurs gestuels sont généralement transmis sur les points d'extrémité série de l'USB enveloppé dans le protocole SLIP.

## Caractéristiques

* Schéma de nom symbolique, ouvert, dynamique et URI
* Données numériques symboliques et à haute résolution
* Langue de mise en correspondance de motifs pour spécifier plusieurs destinataires d'un seul message
* Balises de temps de haute résolution
* "Ensembles" de messages dont les effets doivent se produire simultanément

## Applications

Il existe des dizaines d'applications OSC, y compris des environnements de traitement du son et des médias en temps réel, des outils d'interactivité Web, des synthétiseurs logiciels, des langages de programmation et des périphériques matériels. OSC a acquis une large utilisation dans des domaines tels que l'expression musicale, la robotique, les interfaces de performance vidéo, les systèmes de musique distribués et la communication entre processus.
La norme TUIO de la communauté pour les interfaces tangibles telles que le multitouch est construite au-dessus d'OSC. De même, le système GDIF pour la représentation des gestes intègre OSC.
OSC est largement utilisé dans les contrôleurs musicaux expérimentaux, et a été intégré dans plusieurs produits open source et commerciaux.
Le langage musical Open Sound World (OSW) est conçu autour de la messagerie OSC.
OSC est au cœur de l'API de plugin DSSI , une évolution de l'API LADSPA, afin de faire interagir l'interface graphique éventuelle avec le noyau du plugin via la messagerie de l'hôte du plugin. LADSPA et DSSI sont des API dédiées aux effets audio et aux synthés.
En 2007, un espace de noms normalisé au sein d'OSC appelé SYN, pour la communication entre contrôleurs, synthétiseurs et hôtes, a été proposé,
Exemples de logiciels proposant une implémentation OSC:
* Ardour
* Bidule
* Bitwig
* CasparCG
* Csound
* Cubase
* D::Light
* Digital Performer
* Dorico
* Enchaîné
* Espace Cristal
* Fluxus
* FreeJ
* Gesture recognition toolkit
* IanniX
* Impromptu
* Isadora (v.1.1)
* JUCE (Framework)
* Kyma
* Lis
* LiVES
* Logelloop
* Logic Pro
* Max / MSP
* Mandrin
* Mocolo
* Modul8
* MuseScore
* Mxwendler
* Nuendo
* OBS Studio
* OpenFrameworks
* ossia score
* Overtone (Clojure)
* Processing
* Pure
* PureData
* QLab
* QLC Plus
* Quartz Composer (à partir de la version 3.0 / Mac OS X v10.5 )
* Reaktor
* REAPER
* Renoise
* Smode
* Sonic Pi
* Super collider
* Squeak
* TouchDesigner
* Traktor DJ Studio
* Unreal Engine
* Usine Sensomusic
* Veejay
* VirtualDJ
* VRChat
* Vvvv
Exemples de matériels avec implémentations OSC:
* AlphaSphere
* Audiocube
* Kyma
* Lemur
* MIDIbox
* Milkymist One
* Monome 40h

## Conception

Les messages OSC se composent d'un modèle d'adresse, d'une chaîne d'étiquette de type, d'arguments et d'un tag temporel facultatif. Les modèles d'adresse forment un espace de noms hiérarchique, qui rappelle un chemin de système de fichiers Unix ou une URL. Les chaînes d'étiquettes de type sont une représentation de chaîne compacte des types d'argument. Les arguments sont représentés sous forme binaire avec un alignement de 4 octets. Les types de base pris en charge sont
* entiers signés de 32 bits en complément à deux
* nombres à virgule flottante IEEE 32 bits
* tableaux de données codées sur 8 bits à terminaison nulle (chaînes de style C)
* Blob de taille arbitraire (par exemple, des données audio ou une image vidéo)
Les applications utilisent couramment des extensions à cet ensemble de noyau. Plus récemment, certaines de ces extensions, comme un type booléen compact, ont été intégrées aux types de noyau requis de OSC 1.1.
Les avantages de OSC sur MIDI sont principalement la connectivité Internet, la résolution de type de données, la facilité relative de spécifier un chemin symbolique, par opposition à la spécification de toutes les connexions en tant que numéros 7 bits avec des types de données 7 bits ou 14 bits.