The Three-Oscillator Problem: Chaos and Emergence

Simple rules to sonic chaos: the “three-oscillator problem” & Rob Hordijk’s “Benjolin”

In this video, I talk about the “Three-Body Problem” and created an analogous Pure Data patch, where three oscillators frequency-modulate each other. Just as in the physics problem, this cross-modulation network creates unpredictable, chaotic patterns.

This emergent complexity from simple rules perhaps connects to ideas of motivic development in music, how great artistic works can grown from simple and small ideas.

Pd Envelope Follower Patch from Scratch

In this no-talking, step-by-step video, I build an envelope follower patch from scratch using Pure Data Vanilla.

I route the amplitude of an incoming drum beat to control various parameters of a sawtooth oscillator ([phasor~]) in real time:

🔹 First, the amplitude of the sawtooth wave follows the drum signal.

🔹 Next, the oscillator frequency responds dynamically to the drum’s envelope.

🔹 Next, I patch the drum’s amplitude to modulate the cutoff frequency of a filter.

🔹 Finally, I make an old-school envelope filter by applying the envelope-following filter to its own input.

This is a hands-on demo for anyone interested in interactive audio, modulation techniques, or learning how to build dynamic control structures in Pd. All done in Pure Data Vanilla, from scratch, with no external libraries. Perfect for beginners exploring envelope followers or anyone wanting to see modular ideas implemented visually.

More Pd no-talking tutorials here:

Karplus-Strong Synthesis in Pure Data Vanilla

Patching up a Karplus-Strong synth from scratch in Pure Data Vanilla from scratch.

Karplus-Strong synthesis is a digital synthesis technique that simulates the sound of plucked strings by using a feedback loop to model the behavior of a vibrating string. Developed by Kevin Karplus and Alex Strong, this method generates resonant waveforms by feeding back a short noise signal through a filtered delay line with feedback. In this video, we build a simple K-S synth from scratch in Pd, exploring what happens when we mess with the various parameters.

  • 0:00 Defining Karplus-Strong synthesis
  • 1:25 Noise “burst” to excite the string
  • 3:23 Adding the delay
  • 4:57 Setting up the feedback
  • 7:13 Controlling the rate of the delay
  • 10:21 Understanding the range of pitches
  • 12:06 Adding the low-pass filter
  • 13:21 Talking through the patch
  • 14:05 Adjusting the envelope of the noise (bowed sounds?)
  • 16:02 Closing / Next steps / Randomization

More Pd Tutorials here:

Pure Data Mid/Side Ring Modulation: Patch from Scratch (no talking)

Having some fun using mid/side stereo for sound design in Pure Data vanilla.

Here, we encode our stereo signal into mid/side with some simple math, then ring-modulate and delay the side material before decoding back into left-right stereo.

0:00 Bleep bloops in left-right stereo
1:12 Creating a mid/side encoder & decoder
2:19 Adding ring modulation to only the sides
3:23 Adding a delay to the sides
4:49 Expanding the range of ring modulation

Click here for a deeper explanation of mid/side stereo and synthesis:

More no-talking Pure Data videos here:

Subscribe on YouTube for more videos.

Artificial Neurons for Music and Sound Design (5-minute lecture video)

Video presentation I made for the 2024 “Explainable AI for the Arts” (XAIxArts) Workshop, part of the ACM Creativity and Cognition Conference 2024.

A lot of these points I’ve discussed elsewhere (see playlist below), but this quickie presentation brings together these ideas, focusing on the aesthetic potential of this approach.

Check out the complete playlist for more hands-on creation of neurons and neural networks:

Heart Beat to DrumBrute Impact Tempo with Apple Watch, Holon.ist, & Pure Data

Using Holon.ist, OSC, and Pure Data to send my heart rate from my Apple Watch to the Arturia DrumBrute Impact.

I got an Apple Watch a couple of weeks ago, and, of course, on the very first day I started looking into apps that would allow me to send the data coming from my watch out as OSC messages. After some poking around I found Holon.ist by Holonic Systems, and decided to give it a try.

There’s actually way more in this app than I actually needed (I just wanted to get all the physical data out to my laptop), but it suits the purpose. So in this video, I show a quick demo of getting my heart rate as an OSC message into my laptop running Pd, and then converting it into a MIDI clock for the drumbrute impact.

More on OSC in Pd Vanilla:


More Pure Data tutorials here.

Check prices on the Arturia DrumBrute Impact (affiliate links):
Perfect Circuit
Reverb
Amazon

Sending Raw MIDI Data in Max (and Pure Data)

Sending out raw MIDI data in Max/MSP with [midiout] for system messages and other live control.

Here, I use the [midiout] object in Max to send individual “note on” and “note off” messages, using our knowledge of the MIDI protocol. We can then expand that to algorithmic MIDI control of sequences in the Arturia DrumBrute Impact, including adjusting the clock and the song position pointer for funky, chaotic beats.

0:00 Intro
0:30 [midiout]
0:59 Basic concept – Note On
3:16 Note Off
4:32 Pitch Bend Change
5:32 Exploring Algorithmic Control
6:47 Controling Sequencers (DrumBrute Impact)
7:09 MIDI Clock Message
9:01 Algorithmic Clock Control
10:03 Start, Stop, and Continue MIDI Messages
11:29 Playing with the Song Position Pointer
13:30 Bringing back the Drunk [metro]
15:00 Closing / Next Steps

Click here for more Max/MSP videos:

Pd Samplecrush Patch from Scratch

Doing some “samplecrushing” (downsampling) in Pure Data Vanilla to create dynamic aliasing artifacts.

0:00 Setting up [samphold~]
0:28 Simple downsampling and aliasing
0:55 Building a sequencer
2:33 Making the samplecrush dynamic
3:13 Making it stereo
3:50 Trying different timings and ranges

More Pd patching from scratch here:

Pd Machine Learning Fail

A failed attempt at machine learning for real-time sound design in Pure Data Vanilla.

I’ve previously shown artificial neurons and neural networks in Pd, but here I attempted to take things to the next step and make a cybernetic system that demonstrates machine learning. It went good, not great.

This system has a “target” waveform (what we’re trying to produce). The neuron takes in several different waveforms, combines them (with a nonlinearity), and then compares the result to the target waveform, and attempts to adjust accordingly.

While it fails to reproduce the waveform in most cases, the resulting audio of a poorly-designed AI failing might still hold expressive possibilities.

0:00 Intro / Concept
1:35 Single-Neuron Patch Explanation
3:23 The “Learning” Part
5:46 A (Moderate) Success!
7:00 Trying with Multiple Inputs
10:07 Neural Network Failure
12:20 Closing Thoughts, Next Steps

More music and sound with neurons and neural networks here: