SuperCollider currently lacks good modern tutorial documentation. This needs to be addressed, so Nathan, myself and a couple of other people are going to do just that.
The plan is to have three ‘books’:
- Tutorial for New Users.
- Tutorial for Intermediate Users.
- SuperCollider Cookbook
Tutorial for New Users
This will focus on writing music in SuperCollider, with an emphasis on patterns, SynthDefs, MIDI in/out, buffers and maybe a few other things (suggestions welcome). The idea is that this would get people making music quickly, and would address common workflows. These would include:
- Writing beats/loops (address the Ableton crowd).
- Writing melodies and chords.
- Time signatures, bpm, tempo ramps.
- swing
- Structuring larger pieces (e.g. verse/chorus - maybe a simple dance kind of structure).
- Algorithmic Composition (TBD as obviously this is a huge topic)
- Recording (NRT and writing to disk).
- Working with buses, mixing, compressing (I know Compandr sucks - work with me here) - with a strongly opinionated take on the ‘right’ workflow.
- Different types of synth (mono, poly, etc) when working with patterns
- Effects (limiting, distortion, filtering, etc).
- Basic synthesis (additive, subtractive, wavetable, granular - possibly others if people have view points)
- working with samples, buffers, granulation.
- Livecoding with JITLib.
- MIDI in and MIDI out (but at quite a basic level. The assumption will be that you either want Ableton/sequencer to control your Synths in SuperCollider, or you want to write patterns that will algorithmically drive external synths/record into your DAW).
And then as part of all this the following would be addressed:
- Installation
- Using the IDE
- Explaining the server/client distinction.
- Clocks
- Dictionaries
- Arrays/Lists
- Common short cuts when coding (e.g. .() in place of .value).
- Environments
- Events
- Patterns
- The whole local/‘global’ and environment mess.
- Simple functions (but not routines, or classes)
- Synth Creation (including tricks with functions).
- Various ways you can interact with synths when doing JIT/patterns.
- Some good ugens from extras.
- possibly some useful quarks (but probably only as pointers - as quarks are outside the control of the central team).
- Using SuperCollider as a sound processor from mikes/line in, etc.
I very deliberately will not address a number of things in this tutorial (which is not intended to be complete). These will include:
- Classes
- Routines
- Open Sound Control
- Writing a GUI
- Other things I haven’t thought of.
Tutorial for Intermediate Users
This tutorial will focus on programming. The expectation will be that the reader has read the intro tutorial but isn’t an experienced programmer. Sort of an intro to programming (not that SuperCollider would be my ideal first language, but no matter).
This will be a strongly opinionated tutorial on how to code in SuperCollider (e.g. alternative ways of coding will be shown - but discouraged). To the degree that we have a style guide, that will be emphasized. Otherwise it will be the strong opinions of Nathan, myself and anyone else who is involved.
The entire language will be covered, and in addition we will cover:
- Communication with the server (what it is, how it works), OSC handling, etc.
- Classes. Lots and lots of classes. All of it.
- Prototype coding (i.e. JavaScript conventions).
- All the weird and wonderful stuff you can do with arrays, lists, etc.
- Routines. Lots of lovely routines.
- Writing a GUI.
- Variables.
- Patterns the theoretical way.
- How to write custom patterns.
- How to handle events.
- Demand UGens (maybe).
Other stuff TBD.
Cookbook
Really what it sounds like. An organized collection of solutions to more uncommon problems, or things people try to do. If it’s in the cookbook it’s either pretty advanced, or just something unusual that most users wouldn’t need to/want to do. Or the kind of thing that you only want to encounter when you have this particular problem.