OSC
Jump to navigation
Jump to search
General
- Open Sound Control - OSC is a protocol for communication among computers, sound synthesizers, and other multimedia devices that is 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.
- 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]
- https://github.com/Minuit/minuit - Propositions for a post-OSC prototypal protocol
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+
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
async-osc
- https://github.com/Frando/async-osc - Async Rust library for the Open Sound Control (OSC) protocol
Utils
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
OscMonitor
- https://github.com/teragonaudio/OscMonitor - Display OSC messages to standard output
OSCDisplay
- https://github.com/jhammen/OSCDisplay - Android app to display OSC messages
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
- https://github.com/sensestage/xosc - Generic OSC patchbay
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
Tjost
- https://github.com/OpenMusicKontrollers/Tjost - {T}jost is {J}ackified {O}pen{S}oundControl {T}ransmission. Tjost makes use of JACK's new metadata API. However, as this is only available in JACK1, if you link to JACK2, it won't use it.
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.
oscmodulator
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
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.
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
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.
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
Hardware
- https://github.com/theseanco/python-SerialToOSC - Generate python scripts that turn Arduino Serial messages into OSC messages quickly and easily
- 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.
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.