OSC

From Things and Stuff Wiki
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.






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

libosc

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.

OscPkt

osc-ruby

JavaOSC

tinyosc

liblo

oscpy

osc.js

Utils

  • 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.


  • 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.



  • 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.


  • 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.






  • udp repeater / dumper - dump UDP data from a port to stdout, forward/relay UDP data to one or more UDP ports.



  • 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.


  • 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.




  • 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.


  • 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.



  • 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.



Control surfaces

Open Stage Control

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

Control

AndrOSC

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.

TouchOSC




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

ossia

  • ossia score - formerly I-score, a free and open-source intermedia sequencer. Enables precise and flexible scripting of interactive scenarios. Control and score any OSC-compliant software or hardware : Max/MSP, PureData, OpenFrameworks, Processing...

seqzero

fiddle

minimal

KuStudio

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

  • 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




  • 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).







  • 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 - 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.


  • 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.



  • 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.


Hardware

Web


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.