O2 Logo

Introduction to Version 2

O2 is a 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. Version 2 is a major rewrite featuring:

Build and Installation

O2 uses CMake. For Windows and Mac, use CMake to build a solution or project for Visual Studio or Xcode, then build the ALL_BUILD project.

For Linux, use "ccmake ." to create a Makefile, then run make.

Currently, there is no installer -- you should explicitly link to libo2_static.a. Note that we only build a static library using the current CMakeLists.txt configuration file.

O2 is not compatible with recent changes in C compilers enabled by the _FORTIFY_SOURCE macro. Therefore, we pass the command line flag -D_FORTIFY_SOURCE=0 to the compiler, and you may see some associated warnings. (We're currently investigating how to best to get otherwise correct code to compile without disabling the FORTIFY option or generate warnings.)

Helpful Hints

If O2 is not making connections or discovering services: