Generating Sound and Organizing Time: An Interview with Graham Wakefield and Gregory Taylor
Early next month Cycling ‘74 will publish our second book, Generating Sound and Organizing Time: Thinking with gen~ Book 1 by Graham Wakefield and Gregory Taylor. I sat down with Graham and Gregory to talk about what’s included in the book and the collection of patches that accompany it.
Let’s start by talking about how this book project happened. What were your goals in writing it?
Graham: Personally, most of all I wanted to write the kind of book I wish had existed when I was learning about making computer music. For example, in my graduate studies I learned a huge amount about programming synthesis processes, but I also realized that a lot of the immense possibilities of digital signal processing is often obscured in writing and inaccessibly black-boxed in most music software -- in fact that's part of why creating gen~ became my doctoral research; gen~ opens up access to live edit sonic algorithms right down to the sample level, kind of like an atomic structure of DSP. And we think it can be a lot simpler and more insightful that way, and for the most part it doesn’t require learning higher mathematics or coding.
Gregory: gen~ is now over ten years old, and with a thriving community, but it's still unfamiliar to many, and we wanted to change that. As our friend Luke DuBois said, it's "one of Max's secret weapons hidden in plain sight." We thought the best way was to start from this idea of a bestiary of simple and reusable ideas that can be recombined to make new things.
Graham: Right–it's not always obvious, since not a lot of music software lets you work at this level–but so many synthesis and sound processing techniques come down to a pretty small number of common circuits and patterns operating at the sample level that are then reapplied in a variety of different ways. This book (and gen~ itself) is all about the amazing things you can create when you can patch at this level.
In that spirit, we wanted to present the repeated application of a few simple ideas to many different musical tasks. All kinds of things from filters and delay effects to oscillators and granular synthesizers and chaos generators and so on that sometimes look like black boxes or magical plugins. But when patched in gen~ these are just arrangements of the same small number of simple operations – which means you can dig into them and insert other stuff in there and experiment wildly. In the book we build upon these to create a set of abstractions that we use again and again throughout the book to do all of these interesting things from really simple beginnings.
Reading the book as a Max user, I definitely felt like I was getting a gen~ education but at the same time, I’m being exposed to a completely new way to think about musical DSP applications. Can you talk about the intended audience(s) for the book? Would it make sense as a textbook?
Gregory: One of our early readers put it really well: They said it was "for composers, musicians, sound designers, and experimentalists of all kinds.” We’ve tried to provide a wealth of things that people will find interesting and engaging and to create a book that can serve equally well as a kind of patching companion for self-study or as a text for educational situations. I think that using the book as a classroom text with a bunch of curious and creative students would be a lot of fun.
And inside of a classroom or out, there wouldn’t be a lot you’d need to get started. It could be helpful to review the gen~ for Beginners tutorial series.
Tell me about the phrase "Thinking with gen~” – I’d be interested in hearing your perspective on the software as something you think with.
Gregory: Glad you noticed that preposition there! It’s really about developing ways of thinking and building that solve problems or lead you into new territories of signal processing.
Graham: On the one hand, it’s building up habits to let you ‘think out loud’ through patching, leaning on the ability to edit and hear the results right away, like a notebook that makes sound. That means you can try out ideas on a whim, and maybe discover something amazing and unexpected. But it’s also about getting to be thinking with the behaviors of signals, and how they can be wrangled, morphed, and interwoven, chopped and regurgitated at the sample level. That means designing subcircuits such that a momentary idea of “why not plug B into C” is more likely to lead to something interesting. So along the way it’s also about thinking with little circuits as building blocks, building a lexicon of reusable ideas with a huge range of capabilities. Inserting one process into the midst of another is such a common habit of thought for the book.
Gregory: … and there are a few other habits and techniques we use again and again, like translating a problem into some other representation that makes it way easier to tame and control, or using the behaviors of harmonic and inharmonic ratios to create complexity in sequences, smoothed quantizers, and timbre shapers, and so on.
Can you give me some examples?
Gregory: We wanted to encourage thinking of cyclical “time” as having a modular nature: by using ramp functions instead of individual triggers. Starting from a ramp, we show how to create sample-accurate rhythms, modular patterns, swing, divisions and ratchets, polymeter and phasing, beat chopping, deriving rhythmic LFOs, and so on, all being sample (or even sub-sample) accurate, in a way that triggers never can be. So, time is just another flowing signal to process.
We also see the same basic crossfader algorithm–one of the simplest little circuits really–used to create linear interpolators, filters, smooth step generators, antialiased oscillators, LFO shapes, envelope generators, and many more. And since everything is editable, it’s also explorable. For example, you have a filter algorithm or chaos generator, and you wonder what might happen if you stuck a waveshaper or a delay inside one of the feedback loops — well, you can just crack that patch open and try it.
Graham: Another example is moving calculations into a different space to solve challenging problems. For example, we’re always pre- and post-scaling a signal so you can work with a zero-to-one range, and apply a huge range of what we’re calling “unit shapers” to warp and morph this range as desired, whether for an oscillator or LFO, or for more expressive pitch glides or waveshapers, or for a funky swing to time, all in an algorithmic way that means you can parametrically morph things and derive more variations. And of course you can modulate the modulators and shape the shapers and so on.
Another is making a discrete set appear continuous by crossfading the two nearest neighbors – to make a quantizer or a bitcrusher modulate smoothly, or to make an FM algorithm generate only harmonic tones, or to create morphing multidimensional antialiased wavetable oscillators, or a variable delay without pitch drift, it’s all the same trick. You’ll notice other similar bits of patching like this used in very different situations throughout the book.
Gregory: Along with these ideas, there are a lot of abstractions (including the unit shapers) that we walk through creating and re-use throughout the book. You can think of them as a “next level” of gen~ tools built on the basic operator set. The specific tools in the software we’re releasing to accompany the book extends the modest gen~ operator set in ways that assist users in customizing and making their own abstractions.
I’m sure you’ve seen Forum requests to add a certain feature to a Max external or to set the default state or mode of an object to a user’s personal preference. Leveraging the ability to create abstractions in gen~ provides readers with a simple way to do just that. You can open up the abstractions and examples we’ve provided and easily customize them to meet your own needs.
Maybe this is a good point to mention that the book isn’t just explanatory text and diagrams. What really blew me away is the collection of examples that you’ve created. Can you talk about a few of the treasures people will discover?
Gregory: It’s hard to know where to start. Complex shift-register sequencers – something that Step by Step readers might find interesting — Euclidean rhythms and LFO generators, wave terrains and polygonal synthesis, and a positively insane variety of amplitude, ring, frequency, and phase modulation algorithms that include blended harmonics and chaotic feedback.
Graham: And a wide variety of filters and delay effects, algorithmic quantizers with glides, noise and randomization algorithms, harmonic distortion waveshaping and modulated bitcrushing, band-limited virtual analog and wavetable oscillators, pulsar and other granular synthesis techniques, and more.
Gregory: And you won’t be surprised that I’m excited about the collection of chaotic algorithms…
One of the topics I was surprised to see covered was FM synthesis. I’ve had the impression there isn’t really anything more to say about FM that hasn’t been covered before. Can you give readers a little preview of how you approached this topic?
Gregory: As you might imagine, we spent some time researching the academic literature and community knowhow when we embarked on the project — we knew that nearly everyone was familiar with Max’s Swiss Army Knife abstraction SimpleFM~, and we wanted to go deeper and follow some different paths. Lo and behold, we found a really interesting reply on an old Max Forum posting that FM pioneer John Chowning himself responded to. His advice was — for me, anyway — the start of it all. Graham’s investigations, based on Chowning’s insight and other more current scholarship on frequency modulation and its synthesis cousins, produced a collection of patches that had my jaw on the floor with amazement.
Graham: Well, there’s this general perception that FM is somehow complex or shrouded in a mystique of confusion, but really it’s a lot simpler than that, and we heard from some quite experienced readers that we managed to get several new insights across to them. A lot of existing material on FM does sometimes treat it as a “done topic” and repeats the same old DX algorithms, even though there is so much more that’s possible.
For example, if you AM a carrier with the right window shape, you can get perfectly asymmetric spectra out of an FM or PM patch. Or, one of my favorite examples is a pair of FM oscillators acting as modulators to each other, each going through a low pass filter first – the range of amazing sounds and behaviors that come out of this can sound really analog and is like some kind of more organic chaos to my ears. And yet the patch is so simple. And the bigger point is that there’s nothing stopping you trying sticking other things into these feedback loops to discover something new!
I have to ask one more question – what’s with the “Book 1” in the title?
Gregory: There was so much we wanted to cover, and not all would fit into a single book! I kind of don’t want to be the spoiler here. Graham, what do you feel like revealing?
Graham: In the second book we delve much deeper into some common and uncommon aspects of band-limited oscillators, microsound, reverberation and physical modeling. But we also look at some more unusual and powerful generative algorithms — including a few processes inspired by biological and natural phenomena that are often absent from computer music materials. Stay tuned!
by David Zicarelli on October 3, 2022