A few words about SuperCollider for The Creative Musician...

Summary

… And learning SuperCollider in general.

This wordy post contains my honest thoughts about this book and a few considerations about learning resources on SuperCollider and what helped me getting somewhere else than the bottom of a very steep learning curve.

SuperCollider is a fantastic tool to experiment with sound and produce computer music but also a very difficult environment to get used to as a beginner compared to conventional DAWs like Ableton Live, Bitwig, Reaper or even modern tracker DAWs like Renoise. Among all the written resources I consulted to understand SuperCollider, this recent book by Eli Fieldsteel is hand down the learnign material the most comprehensive and adapted to a beginner. I’ll argue that this is also an excellent primer on sound design and signal processing, and a good reference to go back to while practicing.

cover for SuperCollider for The Creative Musician

Context

I like sounds, recording them and making them with synthesis in my free time. Some years ago, I left behind the world of entry level hardware synths, faulty jack cable jungles and the bougie mirages of the DAWless setup, and went in the opposite direction, at least for a time. Fully numeric music production environments aren’t lacking and the options are numerous. I greatly enjoyed learning modular synthesis and sequencing on VCV Rack, but experimented audio-related issues I didn’t manage to solve at the time. Pure Data is another great environment for multimedia experiments, but I didn’t feel like using a visual programming language, and certainly not racking out what is need for Max/MSP on a dedicated Mac device.

I was always attracted to the idea that a patch, musical composition or musical system could be expressed and stored as text. And at a time where Pipewire was just starting to get mainstream, SuperCollider didn’t caused me any problems, so I stuck with it, or at least tried to.

Learning

Learning how to use this environment is a daunting task. SuperCollider is a powerful beast, but quite a weird and complex one. There is a server generating sound, a client-side Object Oriented Programming language, they both communicate transparently using the OSC protocol. There is dozens of ugens objects to manipulate sounds, a separate pattern language relying on Event objects, a just-in-time library using proxies for livecoding, hundreds of classes, quite a lot of compatibility cruft, and many pitfalls to be aware of. Even as a developer accustomed to different paradigms (including of course OOP), the language part of SC confused me greatly.

The available resources to learn how to make use of all of this aren’t scarce but obviously less numerous than the massive amount of books, articles and videos on producing with more popular proprietary solutions: It’s a niche open-source software.

The official documentation is more than decent and actually full of guides and tutorials to learn about a lot of the objects and constructs provided to build full musical systems or algorithmic composition. Yet my experience as a beginner could be summed as this: There is a very scattered pool of learning resources about SuperCollider, providing information that is either very specific, lacking context, quite old, or too beginner-oriented.

I spent hours looking for doing what I deemed simple things: How to express a musical silence, why can’t I pass an array as an argument to a SynthDef, why does this patch use \out.kr(1) and not an arg (it’s called namedcontrol), what is the purpose of Demand ugens, etc. Often times things are documented, but you just don’t know how to look for them, how they are named or simply what there purpose in the context of audio synthesis. Things hidden in plain sight so to speak, because you have no idea they could serve your musical purpose when you’re so used to a top-down approach for doing things. I found a fair amount of information by browsing the forums and stumbling upon by chance, and still often do so.

A reason for why things are like that could be that being proficient with SuperCollider imply knowing about both software development and digital signal processing, at the very least what for is required to produce music. It’s very hard to teach how to use such a platform to someone with no background in either audio or programming. A book collection like Electronic Music and Sound Design by Alessandro Cipriani and Maurizio Giri proves you can both teach a complex audio programming environment and sound design principles at the same time, but I assume this kind of ambitious endeavor is more likely to succeed when attempted by teachers in academia with an adequate amount of time, money and reasons to focus on writing educational materials.

Textbook

I first learned about this book by following Eli Fieldsteel’s Youtube channel. I had a bad experience with unsearchable PDF of the already quite old SuperCollider Book (I never received the second-hand copy I bought) and every other written resources I tried to read at the time felt like reading Gentle Introduction To Haskell when you barely know how to process a form with PHP, so not gentle. I’m too impatient for long-winded videos, so I was enthusiastic about the announce of a new book on SuperCollider.

I bought the textbook with the slight worry that it will be too beginner-oriented. Several months later, it still stands on my desk and frequently travels on my bedside and where the king goes alone.

It’s a 300-something pages textbook with a slick orange cover and bound so that you can leave the book open on the desk while studying. It basically gathers every required bits of information you need to know to learn SuperCollider and start to think more about sound and music rather than the tool itself.

The twelve chapters of the book manage to cover both the specific aspects of SuperCollider and introduce the core principles regarding sound, its properties and how to manipulate them: Envelopes, filters, distortion, synthesis, pitch information, etc. All illustrated with plots, diagrams and spectrograms. Reading about all this made me realize I only had a transient knowledge about the subject and brought some light on things I never quite understood.

The book is quite code-heavy, which is a given considered its subject. The snippets are readable and not to big. Each chapters has a related “companion code” that can be downloaded and sometime bring a lot more information through the comments in the sources.

Finally, I want to bring attention on one of the main reason I took the time to write all of this stuff. The book is regularly interspersed with what the author ingeniously highlights as tip.rand(): Random tiny bits of information that don’t necessarily fit perfectly in the plan, but provides details of of crucial importance. Those are the nuggets of knowledge that I would have spend hours and hours looking for online. Short paragraphs that makes you go holy shhhhhhht that’s how you made that!!!! out loud.

Learning SuperCollider means you’ll often have to read other people code and being confronted to syntaxic shortcuts or elements that are incomprehensible to you and hard to translate in a search engine. Not everything is covered in the book, but those random bit of info really help reducing the number of “WTF is this fella” moments when reading *.sc source code. I’m talking about things like finding a t_gate without knowing what are trigger controls, or what are default control name.

The only cons of this book I could mention is the lack of bibliography and further references. It only provides an index, albeit a good and easily accessible one.

A new edition of The SuperCollider Book is announced for next April. For now SuperCollider for The Creative Musician remains in my opinion the most up to date and comprehensive introductory resource for SuperCollider, at least in the book category, and will probably remains so for a long time given its digestible and accessible format. I’m aware of the existence of Introduction to Supercollider by Andrea Valle, but I don’t know at all how both books compare.

Additional notes on learning resources

Eli Fieldsteel’s Youtube channel might be one of the most recommended learning resource for SC. I much prefer text, but the stream recordings and the mini tutorial series have been of great use to me.

Nathan Ho’s blog and Youtube channel are also hard not to mention. I learned a ton sitting through some of his videos where a full track or patch is built from scratch. This can be really advanced, not to say straight voodoo territory, but you will hardly find anything online of this depth, especially if you’re more interested in doing electronic music with an experimental approach rather than more “academic” electro-acoustic pieces.

I must mention that I took his article compiling opinionated advice for beginner a little too far and religiously which hindered my progress: By saying “If [patterns and Ndef] don’t appeal to you for whatever reason then you can always use Routine and Synth” he does not mean you should never ever try to make use of them. Which is what I did, and that is a mistake, given how much flexibility they provided me in the end. Nathan explicitly stated that his routines and synthdefs workflow is pretty austere and personal. So take the time to study patterns and the JitLib to get at least an idea on what they could bring you.

I also couldn’t agree more regarding the advice on finding non-SC tutorials and (trying to) reproducing them. Once you learn the basics about SC, don’t go head-first looking for SC-specific tutorials for things you want to do. Find tutorial for any tool that isn’t too idiosyncratic and try to reproduce the general approach in SuperCollider. Want to make a dub techno track? Look for tutorials on drum synthesis with Operators in Ableton Live, how to make a “stab” chord in Serum, how to chain the effects, etc. Resources on Max/MSP or Pure Data can be very useful for more experimental and algorithmic music. The fact is, you won’t have many alternatives if you’re already lacking knowledge regarding music production while learning a real-time synthesis language instead of sticking with a DAW.

A lot of people archive their SuperCollider projects on Github and other forges, be sure to search for them when you’re out of idea or trying to find implementation for problems you have.

I might write a dedicated post or page compiling additional resources and tidbits gathered during my own practice of SuperCollider. I already crammed too many things on a post I planned to be a few paragraphs long. In case I won’t do that, here is a dump of links I found (and still find) useful in various degrees:

And please, please, please use a Limiter.

Reference

FIELDSTEEL Eli, SuperCollider for The Creative Musician, 2023