Open Sound Control (OSC) in Pure Data Vanilla

How to receive and parse OSC (Open Sound Control) messages in Pure Data Vanilla for real-time musical control.


Open Sound Control, like MIDI is a protocol for transmitting data for musical performance. Unlike MIDI, though, OSC data is transmitted over a network, so we can easily transmit wirelessly from our iPhones or other devices. Another, difference, though, is that OSC messages don’t have standard designations (like MIDI “Note On” or “Note Off”), so we need to set up ways to parse that data and map it to controls ourselves.

Here, I go over the basics of receiving and parsing OSC data in Pure Data Vanilla, setting us up to make our own data-driven instruments.

0:00 Intro
2:46 [netreceive]
4:07 Sending OSC Messages
5:28 [oscparse]
6:02 Data!
7:11 [list trim]
8:09 [route]
9:03 [unpack]
9:46 Using the Data for Musical Control
13:52 Recap (Simplified Patch)
14:55 Explanation of Opening Patch

More Pure Data tutorials here.

Reaktor 6 Primary “Krell Music” Generator (Sci-Fi Ambient Music)

Using Reaktor 6 Primary to create some generative Sci Fi music inspired by Todd Barton’s “Krell Music” patch on the Buchla Synthesizer.

As I mentioned last week, in my regular journeys across the internet, I came across the concept of a “Krell Music” patch–a self-generating patch created by Todd Barton, inspired by Bebe and Louis Barron‘s soundtrack to the 1956 film “Forbidden Planet.” The Barrons’ soundtrack to the film is amazing, and a bit beyond what I can get into here (see links below). Barton’s Buchla patch tries to capture some of the dynamic timbres of that score.

My oversimplification of the idea is this: a note has an amplitude envelope–attack and release–and when that amplitude envelope ends it triggers the next envelope. At the same time, that trigger selects a new (likely different) attack and decay time, as well as a new pitch and timbre for the next note. So we create a continuous series of musical tones, each distinct from the one before it. So let’s make that in Reaktor 6 Primary.