Open Sound Control
Open Sound Control (“OSC”) is a protocol for communication among computers, sound synthesizers, and other multimedia devices that is optimized for modern networking technology.
quick links to osc info + src → )
- Open Sound Control info, implementations, etc+ > http://opensoundcontrol.org
- OSC programming kit http://cnmat.cnmat.berkeley.edu/OSC/Kit/
- PD objects http://barely.a.live.fm/pd/cxc
- osc→flash via XML http://www.benchun.net/flosc/
- osc in Common Lisp → (asdf-install:install :osc) or http://qfwfq.info/asdf/osc/osc.tar.gz
implementations
- Wiretap appears to be a collection of clean OSC implementations for different languages > http://wiretap.stetson.edu/
- liblo is a 'lightweight' implementation of the OSC protocal in C, covered by the GPL > http://plugin.org.uk/liblo/
- oscpack is simply a set of C++ classes for packing and unpacking OSC packets. Oscpack includes a minimal set of UDP networking classes for Windows and POSIX which 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 (eg serial).
Getting OSC to work in Reaktor (a mini howto)
I am sure there will be other people who have tried or who will try to get PD (or some other OSC capable app) and reaktor to talk to one another. Which is not documented anywhere (as far as we can find out). So since we have managed to get one direction working, I will share the steps that we used for future reference.
Note that this is all documentation in progress: in the “near future” there will be attached patches to show how this all should work. But for now, it'S just random notes and some filler because I do not have the reaktor machine in front of me.
This is by no means the “correct” way to do it, it is merely the way that we have managed to make work….
make a pd patch
- send data on port 10000 to the machine in question. this port number can be modified up to 10015 in the XXXX preferences
- send the tags of data that you want to send: at least the labels
- /test/slider with a single argument from 0 to 1
- /test/note with two arguments from 0 to 127, note number and velocity in MIDI terms
Sliders in reaktor
- create a slider
- select input OSC in the properties
- from the menu select the tag that should control the slider
- then the OSC message with value from 0 to 1 will control the reaktor slider
“note message” in reaktor
- create a synth and connect it to an audio output
- create an OSC in put object (menu:)
- change the min number of inputs to 2
- connect the two OSCin object outlets to the P(itch) and G(ain) inputs on the synth
- then OSC message will act as notes from a keyboard. Note that a noteoff message is a note message with zero velocity, and seems to be sometimes necessary.
of course collections of values with more than two values can be assembled and OSCed to reaktor, and used for all sorts of things.