OSC
General
- OSC index - a data transport specification (an encoding) for realtime message communication among applications and hardware. OSC was developed by researchers Matt Wright and Adrian Freed during their time at the Center for New Music & Audio Technologies (CNMAT). OSC was originally designed as a highly accurate, low latency, lightweight, and flexible method of communication for use in realtime musical performance. They proposed OSC in 1997 as “a new protocol for communication among computers, sound synthesizers, and other multimedia devices that is optimized for modern networking technology”. OSC can be understood as a more flexible alternative MIDI; OSC clears away many of the ideological and hardware constraints inherent to MIDI in favor of a open-ended, user-defined address-space model that provides arbitrary parametric control via standard networking hardware. The OSC Specification 1.0 was formalized and published in 2002. The 2009 Specification 1.1 update added support for new features and data types. Over the years OSC has been useful in a wide variety of domains beyond musical contexts. Its timing accuracy and flexibility make it a ready solution for any application that requires time-sensitive communication between software and/or hardware endpoints.
- http://en.wikipedia.org/wiki/Open_Sound_Control - 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 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.
- https://github.com/7890/osc_spec - collection of OSC-related documents: specifications, proposals, white papers, references etc
- Joe Armstrong: A Badass Way to Connect Programs Togther - [1]
Programming
liblo
- liblo - an implementation of the Open Sound Control protocol for POSIX systems, started by Steve Harris and now maintained by Stephen Sinclair. It is released under the GNU Lesser General Public Licence version 2.1 or greater. This means that if it is included in closed-source systems, it must be dynamically linked such that the LibLO code remains freely modifiable.
Oscpack
- Oscpack - a set of C++ classes for packing and unpacking OSC packets. Oscpack includes a minimal set of UDP networking classes for Windows and POSIX. The networking classes are sufficient for writing many OSC applications and servers, but you are encouraged to use another networking framework if it better suits your needs. Oscpack is not an OSC application framework. It doesn’t include infrastructure for constructing or routing OSC namespaces, just classes for easily constructing, sending, receiving and parsing OSC packets. The library should also be easy to use for other transport methods (e.g. serial).
RtOSC
- RtOSC - Realtime Safe OSC packet serialization and dispatch
libosc
- https://github.com/OpenMusicKontrollers/libosc - Tiny and fast OSC (Open Sound Control) C library
- https://github.com/OpenMusicKontrollers/libosc_stream - Tiny fast OSC (Open Sound Control) stream C library (UDP, TCP, IPv4, IPv6, serial)
pyOSC
- https://trac.v2.nl/wiki/pyOSC - A Simple OpenSoundControl implementation, in Pure Python. This module is loosely based on the good old SimpleOSC implementation by Daniel Holth & Clinton McChesney. It has been mostly rewritten, and a whole set of new Classes has been added, providing support for OSC-bundles, a simple OSC-client, a simple OSC-server, threading & forking OSC-servers and a more complex 'Multiple-Unicast' OSC-client that supports subscriptions and OSC-address based message-filtering.
python-osc
- https://github.com/attwad/python-osc - Open Sound Control server and client in pure python
OscPkt
- OscPkt - a very minimalistic OSC library
- https://github.com/eddietree/oscpkt - mirror
osc-ruby
JavaOSC
tinyosc
liblo
- https://github.com/OpenMusicKontrollers/osc.lv2 - Open Sound Control Extension for the LV2 Plugin Specification
oscpy
- https://github.com/kivy/oscpy - An efficient OSC implementation compatible with python2.7 and 3.5+
tcposcrouter
- https://github.com/bgola/tcposcrouter - An OpenSoundControl message router over TCP written in Python designed with SuperCollider in mind.
osc.js
- https://github.com/colinbdclark/osc.js - An Open Sound Control (OSC) library for JavaScript that works in both the browser and Node.js
osc-js
- osc-js - an Open Sound Control library for JavaScript applications (UMD module for Node, Browser etc.) with address pattern matching and timetag handling. Sends messages via UDP, WebSocket or both (bridge mode) and offers a customizable Plugin API for network protocols.
async-osc
- https://github.com/Frando/async-osc - Async Rust library for the Open Sound Control (OSC) protocol
OSCKit
- https://github.com/sammysmallman/OSCKit - provides the Swift classes needed for your apps to communicate among computers, sound synthesizers, and other multimedia devices via OSC over an IP network.
AbletonOSC
- https://github.com/ideoforms/AbletonOSC - a MIDI remote script that provides an Open Sound Control (OSC, interface to control Ableton Live 11. Building on ideas from the older LiveOSC scripts, its aim is to expose the entire Live Object Model API (full API docs), providing comprehensive control over Live's control interfaces using the same naming structure and object hierarchy as LOM. AbletonOSC is currently (2023-01-07) a work-in-progress, and APIs may be subject to change. Many major APIs are now exposed.
Utils
OscMonitor
- https://github.com/teragonaudio/OscMonitor - Display OSC messages to standard output
sendOSC
- sendOSC - a text-based OpenSoundControl client. User can enter messages via command line arguments or standard input; sendOSC formats these messages according to the "OpenSoundControl" protocol, then sends the OpenSoundControl packet to an OpenSoundControl server via UDP or Unix protocol. The "sendOSC" program is available as source code and as compiled binaries for Mac OS X. It has been tested under Linux, Mac OS X, and SGI IRIX.
oscprompt
- https://github.com/fundamental/oscprompt - A generic OSC based prompt for inspecting and manipulating clients. Prompt accepts: - TAB - disconnect - quit - exit - connect 'port number' - general OSC messages sent to the client. It assumes that the client will respond to /path-search:ss for tab completion and field information. This is currently Beta software and as such expect some interesting behavior from time to time.
osc-repl
- https://github.com/Neurogami/osc-repl - A REPL for sending OSC messages to some configured server.This is a command-line app. When you start it you can optionally provide the path to a config file, as well some OSC messages to pre-populate the Readline history of the REPL.
sendosc
- https://github.com/yoggy/sendosc - a simple command-line tool for sending OSC packet.
oscchief
- oscchief - a command line tool for sending and receiving OSC packets. Received packets will be dump to stdout for further inspections.oscchief is written in C and depends only on liblo. It runs on Mac OS X and Linux.
oscc
- https://github.com/7890/oscc - a Java program that allows to "play around" with OSC (UDP). It can be useful to manually interact with another OSC program. Using mappings and JavaScript methods, oscc supports to quickly develop and test inter-process communication models, OSC APIs and prototypes. oscc should be run only in trustful private subnets, since it can be configured to run native commands.
osccli
- https://github.com/madskjeldgaard/osccli - a simple and fast tool for sending OSC messages from the command line. It is written in Rust and among other things it lets you send custom messages and choose a type for them, the program will then try and parse the message you have passed to it as the type you have defined.
sendkeys
- https://github.com/7890/sendkeys - sk, send every keystroke as OSC message
oscfile
- https://github.com/OpenMusicKontrollers/oscfile - consists of two command line programs: 'oscrec' and 'oscplay'. As their names suggest, they record and playback Open Sound Control messages to and from files.
udp repeater / dumper
- udp repeater / dumper - dump UDP data from a port to stdout, forward/relay UDP data to one or more UDP ports.
oscbridge
- https://github.com/onkelDead/oscbridge - Service to wrap from UDP to TCP based Open Sound Control communication.
XOSC
- XOSC - an OSC-controllable router for OSC messages. Connect different OSC capable programs, considering the situation where you have two programs talking via OSC, but then want to have a third or fourth application to also use OSC from those same applications without having to rewrite code.
oscgroups
- http://www.rossbencina.com/code/oscgroups - a system for routing OSC messages between a group of collaborating users. It is designed to make joining and leaving a group simple, and to overcome the problem of connecting multiple users behind different NAT routers using a NAT traversal server with the usual “NAT hole punching” scheme (you can put that into google for more info). OSCgroups also implements basic group functionality similar to the concept of channels in internet relay chat.
oscmux
- https://github.com/OpenMusicKontrollers/oscmux - redirects Open Sound Control messages coming from an arbitrary number of local ports to an arbitrary number of host ports with arbitrary delays and filtering according to path and format strings.
scosc
- http://trac.assembla.com/pkaudio/wiki/scosc - allows you to communicate via OSC messages with a supercollider server (scsynth).
aclock
- https://github.com/7890/aclock - text clock, control via OSC
flosc
- https://github.com/benchun/flosc - standalone application written in Java that sends and receives OSC packets via UDP, translates bidirectionally between binary OSC packets and an XML encoding of OSC packets, and sends and receives XML entities via TCP in a way that’s compatible with Flash’s XMLSocket feature.
legato
- https://github.com/OSCModulator/legato - a small node.js library written in coffeescript, but that doesn't really matter. legato is designed to let you create beautifully simple connections between devices and software, regardless of environment. There is built-in support for OSC, MIDI, and some other stuff. It's easily extensible. To use it, just write a (really, small program that maps inputs to outputs.
Duration
- https://github.com/YCAMInterlab/Duration - controls change over time. With a simple one window approach, the cross platform stand alone application manages lists of tracks to compose changing data over a fixed duration. The application sends values over OSC and can be configured through OSC messages.
libmapper
- http://libmapper.github.io - a network-based signal mapping framework
OSCMorph
- https://github.com/benkuper/OSCMorph - Multi-value weight interpolator
osc-simulator
- https://github.com/RandomStudio/osc-simulator - an easy utility to test receiving and sending of OSC messages from a browser interface
json2osc
- https://github.com/dfober/json2osc - A gateway between JSON and OSC
extOSC
- https://github.com/Iam1337/extOSC - tool dedicated to simplify creation of applications in Unity with OSC protocol usage.
brOSColi
- https://github.com/holoplot/broscoli - a simple executor of local commands, triggered by OSC messages. It can be used to run local scripts or other executables when a configured OSC messages is received.
BPM-to-OSC
- https://github.com/d00mfish/BPM-to-OSC - Simply sending the detected BPM to Resolume or any other LJ / VJ Software via OSC commands.
Headitude
- https://github.com/DanielRudrich/Headitude - AirPods Orientation to OSC Sender
FaceOSC
- https://github.com/kylemcdonald/ofxFaceTracker/releases - track a face and send its pose and gesture data over OSC, as well as the raw tracked points (when selected in the GUI). A previous version of FaceOSC for MacOS supported streaming of Syphon video, but this feature has been removed. FaceOSC is developed with openFrameworks and ofxFaceTracker, built on top of Jason Saragih's FaceTracker. The windows build of FaceOSC was prepared by Dan Moore on the CreativeInquiry fork of ofxFaceTracker.
PoseOSC
- https://github.com/LingDong-/PoseOSC - Send realtime human pose estimation data to your apps!
Plugins
OomphSC
- https://github.com/DanielRudrich/OomphSC - Audio Plug-in which figures out the Oomph of a signal and sends it to whoever wants to know (via OSC).
osccontrol-light
- https://github.com/drlight-code/osccontrol-light - enables sending of Open Sound Control (OSC, messages from audio plugin host environments such as digital audio workstations (DAW).
Controls are tied to OSC messages directly in the host environment without encoding the control data as MIDI CC messages. This way, control automation can be sent and received via OSC at full resolution, and all time sequencing, automation recording, modulation and side-chaining functionality of the host environment can be used for external OSC control. We provide an interactive GUI version, as a plugin as well as a standalone application, that enables prototyping of control presets by quick switching and reloading of preset definitions. To integrate a preset into a host environment with automatable controls, the non-GUI version of the plugin can be pre-built to load a specific preset definition at runtime.
osc.lv2
- https://git.open-music-kontrollers.ch/~hp/osc.lv2 - Open Sound Control Extension for the LV2 Plugin Specification
Not a plugin, a specification (contained in an LV2 bundle like an LV2 plugin is).
eteroj.lv2
- https://git.open-music-kontrollers.ch/~hp/eteroj.lv2 - This LV2 plugin bundle allows you to handle OSC (Open Sound Control, bundles and messages in modular hosts. Insert/dispatch OSC from/to UDP, TCP (IPv4/6) and serial sockets; Pack/unpack MIDI into OSC; Pack/unpack OSC into MIDI
Not a plugin, a specification (contained in an LV2 bundle like an LV2 plugin is).
Android
OSCDisplay
- https://github.com/jhammen/OSCDisplay - Android app to display OSC messages
Control surfaces
Open Stage Control
- Open Stage Control - a libre desktop OSC bi-directionnal control surface application. It's built with HTML, JavaScript & CSS and run as a Node / Electron web server that accepts any number of Chrome / Chromium / Electron clients.
OSCAR
- https://github.com/trafalmejo/OSCAR - a tool to create beautiful graphic user interaces (GUIs) to send OSC messages and control interactive installations (Resolume arena, Touch Designer, Ableton, Processing, PD, UNITY, Unreal, etc). Let's create beautiful, responsive and touchable interfaces.
kvGhislame
- https://github.com/AMMD/kvGhislame - OSC Touchscreen controller (multitouch) based on Kivy libs (Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.)
oscpad
- https://github.com/bburdette/oscpad - a simple way to make a touchscreen control panel which you can access via web browser.
Control
- Control - enables users to create their own interfaces for controlling musical, artistic and virtual reality applications. It is built on top of the PhoneGap project and allows users to define their interfaces via JSON files. The big advantages of Control over other touchscreen control apps are as follows: Outputs both wireless MIDI and OSC. Widgets are capable of being scripted via JavaScript. Access to Accelerometer, Gyro and Compass (in applicable devices). Interfaces can be dynamically pushed to the phone via OSC.
AndrOSC
- https://github.com/ahmetkizilay/AndrOSC - an Android app for creating and modifying OSC-compatible templates
Mrmr
- http://ecumedesjours.com/Mrmr/ - an ongoing open-source research project to develop a standardized set of protocols and syntax conventions to control live installations and multimedia performances via mobile devices. The project is currently spearheaded by Eric Redlinger, researcher-in-residence at Brooklyn Polytechnic University’s Integrated Digital Media Institute. macOS.
OSControl
- OSControl - a general purpose OSC sending/receiving user interface toolkit. Different types of Controls like Knob, Fader, Button and more can be used and configured for custom needs. Windows.
Mouse to OSC
- Mouse to OSC - A simple mouse-based control panel for controlling Open Sound Control interfaces. Can convert MIDI CCs to OSC messages now. Also written using JUCE.
OSC and MIDI Foot Controller
- OSC and MIDI Foot Controller - a foot controller implemented by using only a webcam and the image processing resources provided by OpenCV library. The basic idea is to track an specific object (with a defined colour) and to implement a virtual foot controller, so when the tracked object goes from an idle zone to a button area, that is like a real button were pressed. The command banks and expression option are still implemented, like on previous designs. In this video appears an example of usage.
sisyfos-audio-controller
https://github.com/olzzon/sisyfos-audio-controller - Audiomixer control build for intelligent automation.
TouchOSC
- TouchOSC - Modular OSC and MIDI control surface for iPhone / iPod Touch / iPad - $
- http://livecontrol.q3f.org/ - TouchOSC Ableton Live controller template
- https://github.com/NicoG60/TouchMCU - a python project generating a TouchOSC layout that is Mackie Control Compatible, meaning you can connect it to your DAW using TouchOSC Bridge as a MIDI device and make full use of Mackie Control features from your iPad.
griptools.io
- griptools.io - visual design software for motion-graphics and mechatronics projects. It's all about connecting and controlling: virtual-3D to physical and vice versa, even physical to physical.griptools.io has build-in support for game HID devices, MIDI, OSC, motors, external controllers, lighting, mobile devices plus 2-way support for the 3D-graphics application CINEMA 4D. - Windows/Mac - $
Vezér
- Vezér - timeline based MIDI/OSC/DMX sequencer software for audiovisual artist - $
Sequencing
See also Sequencer
seqzero
- https://github.com/jean-emmanuel/seqzero - minimalist headless osc sequencer that does the job. It is written in python, you'll need to write some simple code to set it up.
fiddle
- https://github.com/cannoneyed/fiddle - OSC sequencer application
minimal
- https://github.com/JohannesLorenz/minimal - A minimal OSC sequencer with a simple C++ interface.
KuStudio
- https://github.com/kuflex/KuStudio - an open source OSC editor, recorder and player, aimed to create timeline on an audiotrack. Windows/Mac
Chataigne
- Chataigne - tool for artists, technicians and developers who wish to use technology and synchronize softwares for shows, interactive installations or prototyping. It aims to be as simple as possible for basic interactions, but can be easily extended to create complex interactions. While Chataigne won't do much by itself, its purpose is to be the central hub in a project involving multiple interfaces, softwares, devices and sensors. You can see it as a Conductor, which will control all the softwares with the big picture in mind. Chataigne as been designed to fit both linear shows and realtime/interactive project needs.
TimeLine OSC Sequencer
- TimeLine OSC Sequencer - individual OSC events are programmed onto timelines, the OSC messages are used to control any OSC enabled software. Java.
Duration
- https://github.com/YCAMInterlab/Duration - Duration controls change over time. With a simple one window approach, the cross platform stand alone application manages lists of tracks to compose changing data over a fixed duration. The application sends values over OSC and can be configured through OSC messages.
MIDI
jack_osc
- https://github.com/ventosus/jack_osc - Routing Open Sound Control messages via vanilla JACK MIDI to build low-latency event translator/filter chains and map unconventional controller data to musical events
MidiOSC
- https://github.com/jstutters/MidiOSC - a small program to bridge the worlds of MIDI and OSC by providing bidirectional conversion of MIDI to OSC. Released under the GPLv2 license.
OSC2MIDI
- https://github.com/ssj71/OSC2MIDI - A highly flexible and configurable OSC to JACK MIDI (and back) bridge
osc2midi-utils
- https://bitbucket.org/agraef/osc2midi-utils - contains two utilities to be used with osc2midi and/or TouchOSC: to2omm is a little helper script which extracts the MIDI assignments from a TouchOSC layout (.touchosc) file and converts them to a corresponding osc2midi map (.omm); gosc2midi is a GTK2-based GUI frontend for osc2midi. It lets you load both plain midi2osc map files or TouchOSC layouts (the latter are converted to the former on the fly, using the to2omm program).
midi2osc
- https://github.com/jean-emmanuel/midi2osc - Generic Midi to OSC Router
jackmidi2osc
- https://github.com/x42/jackmidi2osc - generate OSC triggered by JACK MIDI events
oscmidi
- https://github.com/ycollet/oscmidi - A OSC / MIDI / OSC bridge for ALSA
osmid
- https://github.com/llloret/osmid - osmid is a tool to bridge MIDI and OSC. It is currently in use in Sonic Pi
ommo
- https://github.com/gisogrimm/ommo - OSC and MIDI to MIDI and OSC bridge
bot
- https://github.com/justinfrankel/oscii-bot - Unofficial Linux port of Cockos' Oscii-bot app, a scriptable OSC-to-MIDI, MIDI-to-OSC, MIDI-to-MIDI, or OSC-to-OSC converter.
MidiGyver
- https://github.com/patriciogonzalezvivo/MidiGyver - Flexible console program to convert MIDI inputs into OSC using a YAML config file
Eteroj
- Eteroj - Open Sound Control for LV2. (De)Cloak - Embed OSC in MIDI Sysex messages. Control - translate OSC messages directly to LV2 Control ports and features automatic range detection. Disk Record/Playback of OSC to/from disk. IO A plugin able to inject/eject OSC packets into/from the plugin graph to/from network and serial lines. Ninja Embed Turtle RDF in OSC as string. (Un)Pack Embed arbitrary 1-3 byte MIDI commands (but Sysex) in OSC messages.
illucia
- illucia - a patchbay controller by chris novello. It lets you use physical cables to connect things like videogames, music software, text editors, synthesizers, and more. It has a free suite of interconnectable games and software, plus it speaks OSC so it works with many existing programs.
pilink
- https://github.com/asb2m10/pilink - a simple python script that enable to route OSC messages to midi. It has been designed to be run headless on a Raspberry Pi to avoid to setup a computer between a device that sends OSC messages (like a iPad running TouchOSC) and a midi instrument.
midi-mapper
- https://github.com/original-male/non/blob/60059f40054db40a77754670cdae2e9517df3568/mixer/src/midi-mapper.C - Non Session Manager MIDI to OSC mapper (used with nsm-proxy in nsm)
jackmidiosc
- https://github.com/piegamesde/jackmidiosc - Midi to OSC bridge using JACK audio. It can be used to tunnel MIDI connections over the internet.In send mode, it will wrap all MIDI events into OSC events. In receive mode, it will do the opposite.
osc2midi
midiosch
- https://github.com/diegodorado/midiosch - A small MIDI to OSC brigde. Rust.
midi-osc
- https://github.com/schollz/midi-osc - Convert MIDI to OSC
oscii-bot
- https://github.com/justinfrankel/oscii-bot - Unofficial Linux port of Cockos' Oscii-bot app, a scriptable OSC-to-MIDI, MIDI-to-OSC, MIDI-to-MIDI, or OSC-to-OSC converter.
Querying
OSCQuery
- Introducing OSCQuery Protocol — VDMX - MAC VJ SOFTWARE
- https://github.com/Vidvox/OSCQueryProposal - Draft of a proposal for an OSC Query Protocol
- liboscqs - An OSC Query System
- https://github.com/bltzr/ofxOscQuery - ofx Addon for OSCQuery support
- https://github.com/lov/OSCQuery - A basic implementation of the OSC Query Proposal at mrRay/OSCQueryProposal
minuit
- https://github.com/Minuit/minuit - Propositions for a post-OSC prototypal protocol
Hardware
- https://github.com/theseanco/python-SerialToOSC - Generate python scripts that turn Arduino Serial messages into OSC messages quickly and easily
- https://github.com/recotana/ArdOSC - Open Sound Control(OSC, Library for Arduino (tested Arduino 1.0-rc1 & Arduino Ethernet)
- https://os.mbed.com/users/tobyspark/code/OSC - An Open Sound Control library for the mbed, created to be compatible with Recotana's OSCClass library (http://recotana.com, for the Arduino with Ethernet shield. It also uses parts of the OSC Transceiver(Sender/Receiver) code by xshige written by: Alvaro Cassinelli, October 2011 tweaked by: Toby Harris / *spark audio-visual, March
- https://sourceforge.net/projects/sysexoscgen/ - A Sysex OSC hex string generator for the X32/X-Air digital mixers
- https://github.com/chris-kuhr/midi-sysex-osc-gateway - Remote Control for Yamaha Digital Mixers
Web
- https://github.com/7890/osck - OSC Sockets, experimenting with pseudo OSC via Websockets
Audio
- Audio over Internet using OSC - Wolfgang Jäger, 05.03.2009
- https://github.com/essej/aoo -"Audio over OSC" aka AoO is aimed to be a message based audio system inspired by Open Sound Control OSC as a syntax format. It is dedicated to send audio in real time from arbitrary sources to arbitrary sinks on demand.
- https://github.com/essej/aooserver - standalone connection server for use with SonoBus which uses AOO.
Commercial
Other
- O2 - a new communication protocol and implementation for music systems that aims to replace Open Sound Control (OSC). Many computer musicians routinely deal with problems of interconnection in local area networks, unreliable message delivery, and clock synchronization. O2 solves these problems, offering named services, automatic network address discovery, clock synchronization, and a reliable message delivery option, as well as interoperability with existing OSC libraries and applications. Aside from these new features, O2 owes much of its design to OSC and is mostly compatible with and similar to OSC. O2 addresses the problems of inter-process communication with a minimum of complexity.