The Feedback Loop Only Sounded Beautiful Once

Generative Soundscape Composition
🎮 Play: Grain Cloud Conductor

My hobby is collecting hobbies, and hobby number three is Generative Soundscape Composition. This is day three. The patch crashed eleven minutes ago and took my audio interface with it.

SuperCollider’s error message fills the terminal: *** ERROR: buffer overflow detected. Which buffer? I don’t know. The scsynth server panicked, dumped something incomprehensible about semaphores, and now JACK won’t recognize my audio hardware. Unplugging the interface doesn’t help. Rebooting doesn’t help. The green power LED glows steadily, mocking me.

Yesterday I had grains working beautifully—50ms windows into furnace hum, scattered at 20 triggers per second, fading through Gaussian envelopes. The 40-metre RF noise was feeding through the RTL-SDR and mapping spectral brightness to chord selection. The room filled with shimmering harmonics that shifted with ionospheric conditions. I went to bed thinking I understood granular synthesis.

Then I tried to add reverb.


Dennis Gabor theorized in 1947 that all sounds could be decomposed into elementary grains. Iannis Xenakis proved it musically in 1959 with analog tape splicing. Neither of them had to debug a feedback loop at 11 PM with a cat walking across the keyboard.

The reverb patch was simple. Too simple. I routed the grain output through a FreeVerb unit and back to the main bus. What I forgot: FreeVerb adds latency. What I also forgot: my Markov chord scheduler was reading from the same bus I was writing reverb into. The system heard its own echo, analyzed the echo’s spectral centroid, triggered new chords based on that analysis, which generated new echoes, which the system analyzed again.

For about eight seconds it sounded incredible—this cascading swell of self-referential harmony that I will never be able to recreate. Then the amplitude exceeded what the audio interface considered acceptable, and everything died.


The interface still won’t enumerate. I’ve tried three different USB cables. I’ve run jackd -R -d alsa -d hw:1 about fifteen times, each with slightly different buffer sizes, hoping one combination will convince the hardware to respond. Nothing.

There’s a specific frustration to problems where you can’t isolate the cause. Is this a SuperCollider bug? A JACK misconfiguration? Hardware damage from the amplitude spike? I’ve been writing code professionally since the late ’80s, and the debugging process is identical whether you’re tracking down a memory leak in C or a feedback loop in audio synthesis: form a hypothesis, test it, watch it fail, form another hypothesis. The difference is that audio failures leave your ears ringing.

I spent forty minutes convinced the problem was DC offset in my reverb signal. It wasn’t. I spent another twenty minutes recompiling JACK from source, as if that would somehow fix a hardware enumeration issue. It didn’t. The interface manufacturer’s support page suggests reinstalling drivers, which would be helpful if Linux worked that way.


What I should have done on day one: build an amplitude limiter into the signal chain before experimenting. What I actually did on day one: assume I wouldn’t make a beginner’s mistake. The documentation for SuperCollider’s Limiter.ar unit is three paragraphs long. I’ve read it now. I’ve read it several times, actually, while waiting for forum posts to load and hardware to maybe start working again.

The grains were so beautiful. I keep thinking about that. The ionosphere was feeding 7.1 MHz noise into the patch, and the spectral centroid was drifting slowly downward as the band got quieter after sunset, and the chord voicings followed—major sevenths compressing into minor clusters, the whole texture darkening without my input. Responsive to conditions it couldn’t control. That was the point.

Then I added reverb because I wanted it to sound more like an installation piece and less like a technical demo, and now I’m sitting in silence reading about ALSA buffer sizes.


Midnight. The interface came back. I don’t know why. I changed nothing. I was reading a forum thread about power supply filtering when I idly typed aplay -l for the twentieth time and there it was, listed under card 1 as if it had never left.

The patch loads. The grains scatter. The RF noise feeds through and the chords shift with the band conditions, which are dead quiet at this hour—the 40-metre skip has collapsed, and all that’s left is thermal noise from the receiver itself. The spectral centroid sits low, the harmony stays dark, and I don’t dare touch the reverb section.

Tomorrow I’ll add the limiter. Tonight I’m just going to listen for a while, aware now that the system can break, that the beautiful cascade can become a destructive one without warning. Brian Eno called generative music gardening rather than architecture. Gardens die sometimes. That’s part of what makes them alive.

The interface LED glows green. I don’t trust it anymore, but we’re working together for now.