Open Sound Control

Open Sound Control (OSC ) is a message-based communication protocol, which is mainly used for real- time processing of sound through networks and multimedia installations.

Control signals of hardware ( such as a MIDI keyboard) or software (eg, processing, Vvvv, Csound, Max / MSP, Pure Data, SuperCollider, ChucK, EyesWeb ) is generated and then via OSC in the form of so-called news ( OSC messages), which in turn are packaged in bundles ( OSC - bundles), are passed on to an interface and then control an output. This can for example be more sound issues, such as a sound application on another computer.

OSC is independent of the transport protocol, however, is usually used UDP. Depending on requirements, it is also possible to transport OSC as TCP, or a serial interface.

Open Sound Control was developed at the University of California at Berkeley.

Messaging in OSC

Messages are delivered to OSC in the easiest possible way. An OSC package consists of its data and a byte indicating the length of the data. The length is always a multiple of 4 (which is on the block size of 32 bits). Will send it is via TCP or UDP.

Data types

As data types, there are:

  • Int32
  • Float32
  • OSCString, sequence of ASCII characters, null-terminated (C- String), with 0 to 3 NULL characters padded to be divisible by four lengths.
  • OSCTimetag (64 bit). The first 32 bits are the seconds since January 1, 1900, the second 32 bits represent the fraction of a second, this is the NTP format.
  • OSCBlob

Structure of a message

An OSC message first contains a string with the address of the parameter to be changed.

For example: " / synthesizer/zynaddsubfx/filter/lowpass1 ".

Followed by the number and type of parameter in a string. For two float values ​​would be "ff" specify.

Then follow, the individual values ​​for the parameters. If you want to change our imaginary synthesizer such as the resonance of LP Filter1, you would send:

/ synthesizer/zynaddsubfx/filter/lowpass1/resonance "f" 1998.4f.

Benefits of OSC

Clearly visible OSC has a higher speed than MIDI, which is important for many musicians. The larger data types and support of floating point numbers makes parameter jumps no longer audible. In addition, OSC can be sent over the network, ie Internet, WiFi, etc., which would offer the theoretical possibility for internet jams. Wlan could reduce the clutter in the studio. Every modern computer has already integrated a network interface, which would make the purchase of an extra device, as with MIDI, unnecessary. Another advantage is that the integration and control of hardware is much easier via OSC, as via MIDI System Exclusive messages.

Disadvantages of OSC

The biggest disadvantage of OSC is that, although set how messages are delivered, the names of the messages are not standardized. Thus, each manufacturer can choose a different namespace for the control of his synthesizer, so for example, use other commands to Notenansteuern than other manufacturers. This lack of definition is to be expected at a wide spread with incompatibilities. In addition, OSC is not backwards compatible with the previous MIDI standard. Therefore, a system based only on the OSC device with older MIDI - based devices can not work together easily. Furthermore, it may be more expensive and more complicated at the moment for hardware manufacturers, with fully functioning network interface to produce a new device than with the previously used for MIDI and therefore widespread simple 5-pin Din - MIDI jack.

Use in Open Source

But OSC finds more and more applications in open source programs. Since there is always a clear separation between the GUI and the actual program due to different thread priorities, OSC is used as a simple and universal protocol for the exchange between the GUI and the server. Thus everyone has the opportunity to write a new interface to the same program, or one of the several programs can be controlled simultaneously.