About Open Sound Control (OSC>

Open Sound Control (OSC) is a network protocol primarily designed for communication between sound applications. It was intended as a successor to MIDI, allowing a greater degree of complexity and flexibility. Some of its features include integer, floating-point, and string data types; time-stamping; and bundling messages together to ensure concurrent delivery. While it's original purpose is to connect sound programs, OSC is a generalized protocol that can be used for many other types of network communication. ( link to main OSC pages ).

Open Sound Control and Ygdrasil

Many sound applications and programming environments support Open Sound Control; some popular ones include

Using OSC from Ygdrasil allows the use of any of these as sound servers, and many more as well.
OSC can also be used in Java, C++, Processing, Flash, Director, PHP, and more.
These types of sound applications and programming languages provide incredible depth and flexibility for sound synthesis, filtering, processing, recording, and composition, beyond the capabilities of the Bergen sound server.

Open Sound Control is just a messaging protocol; using it to connect two programs requires defining a set of messages that will be understood by both. To integrate a YG scene with a program like Max/MSP, one would first create a patch in Max, then set up an OSC object to control it, and then add the OSC messages into the YG scene. This allows complete flexibility over what the patch does and how it is controlled; for instance, it's very easy to connect the wand position to synthesis parameters like pitch, modulation, amplitude, delay, granular synthesis width, etc. This method uses a YG node called the OSCNode, whose only function is to pass OSC arbitrary OSC messages.

For users less interested in highly customized sound synthesis and more interested in the basic set of localized audio playback functions, there are also higher-level nodes that build on the existing functionality of the YG Sound Node. The SCSound node, for example, is a node specifically designed for use with SuperCollider to play both sampled sounds and arbitrary synths, using ambisonic spatialization. At the YG level, the SCSound node can be used just like a regular Sound node. It comes with a matching SuperCollider program, so you don't actually have to program anything in SuperCollider or write your own OSC messages.

There are a number of research projects related to OSC and Ygdrasil, providing a range of approaches to choose from for different types of projects. The OSCNode provides low-level control over the OSC messaging structure; the SCSound node provides a high-level interface to a complete sound server written in SuperCollider. The YG/Max nodes developed at Northwestern University offer a high-level interface to Max/MSP. "Another Sound Server" is an effort to provide a unified OSC interface to any backend sound server (SuperCollider, Max, etc), by developing an intermediary abstraction layer. Finally, the latest versions of Ygdrasil from EVL have started to included support for OSC-enabled applications as part of the existing Sound node architecture, creating the possibility of simply replacing Bergen with another sound application without any change to existing Ygdrasil scene scripts.


(c) Ben Chang