I've stuck the link to this new page on the "developing maybe a new startpage" while I work on it, see what people think, etc. This is based on my learning experience, and has biases towards the Mac OS X package specifically. I'm also currently ignoring all older code and docs; I'm focusing on SC3, just to be pragmatic. This follows from my learning experience: while I'm sure there are many rich sources of knowledge in the older codebase and docs, I want to make sure I have a grasp of what is current first, and not waste time sifting through code which may be misleading to me until I really "get" SC3.
I'd love to see this expanded to suit those learning on Linux and Windows as well though, and to have people with different learning styles and experiences fill in where it seems I've missed something. It is a wiki, after all.
Oh, and I want to delete this sub-section sooner rather than later...
This page is an attempt to collect the large amount of SuperCollider 3 documentation into a coherent whole, organized along certain threads, towards the goal of guiding people starting down the path of learning SC3–both those with prior programming experience and those without, as well as those with prior computer music experience and those without. This also attempts to identify holes and vague areas in the current documentation where they exist. That being said, it seems that almost anything you could want to know has been covered; the trick is knowing where to find it!
Note that the documentation listed on this page is going to be redundant with other sources; this is not an attempt to re-write the SuperCollider docs, just to organize what is there, identify the best or most up-to-date sources for documentation and guide a new learner interested in specific topics.
Important Hubs for SuperCollider Information Online
These are the most important, central sites for SuperCollider information online.
- SuperCollider Sourceforge Site this could be considered the 'main' SuperCollider site. It has links to downloads, significant documentation, newsgroup information, the wiki, and more. Probably the first place you should check out when starting.
- The Old SuperCollider Home Page you'll see directs you to the sourceforge site above, but the page still contains a lot of great links and information. It's certainly worth a poke around.
- SuperCollider Wiki here you are. This wiki is a bit scattered but contains a LOT of great stuff. Explore.
- SuperCollider Mailing-List Page for the sc-users list. Sign up, observer proper mailing list etiquette, and people will try to help you if you are having problems. Oh, and remember, first RTFM, then search the archives (this is part of basic mailing list etiquette, by the way). There is Nabble's searchable archive. Also Google works well enough–try the syntax "site:http://www.create.ucsb.edu/pipermail/sc-users/ supercollider rules".
- Wikipedia SuperCollider Entry contains a good description of the SuperCollider architecture along with links to other musicians who have been known to use SuperCollider.
The SuperCollider Help Documentation
This is the first place many people will look for guidance, and there is a great wealth of documentation here, including both tutorials and reference materials. The SC3 package contains the whole set of the help docs, but there are online sources as well:
- Browseable online copy of SC3 Help Docs
- the SuperCollider \Help "Book" typeset using from the help files using TeX (January, 2007)
It is highly recommended that you read the "More On Getting Help" section first. This document describes many useful key shortcuts for navigating the help docs and finding out more about SC3 concepts.
SuperCollider 3 Tutorials
There are tutorials all over the help docs and web, some more extensive than others, with different focuses and levels of depth. The main SuperCollider site provides a page listing many of the same resources, see here: Learning SuperCollider.
Tutorials present in the Help Docs:
- How To Use the Interpreter a basic, preliminary guide to running code using the interpreter (Mac OS X specific)
- Getting Started a guide introducing many fundamental concepts of SC3, does not go into great depth but highlights fundamental features of SC3
- Introductory Tutorial (tutorial items are not linked to from this page, see the directories below) goes into more depth of many SC3 fundamentals, and shows how some computer music concepts can be executed using SC3
- Server Tutorial somewhat spotty tutorial, but shows many good examples of how client code interacts with the server using node addressing and messages. It is useful to examine the Server Architecture and Server Command Reference in combination with this tutorial.
Other Tutorials
- SC3 Online Course Nick Collins has made his course available online:
- Browseable on the web, and
- Collected in a zip file
- Related SC3 Presentation by Prof. Collins contain some good code examples, but is more of a presentation than a tutorial.
- Pseudonym Unfinished Tutorial this is "dead" but still a decent beginner's guide to SC3. It does a good job of showing how the client/server architecture works in the context of making a synth.
- Computer Music with SC3 Professor David Cottle has written a Computer Music book with SC3 (an update to his past SC2 book). It is full of great examples, and guides one through the process of learning both computer music and SC3 from the ground up. Highly recommended. (To get a copy of this book, email Professor Cottle at d dot cottle at utah dot edu with a short description of who you are and how you are using SC).
Learning the Language
Some people will come to SC3 having written their own programming languages from scratch, some people will have almost no clue what a variable is, and then there will be everyone in between. With this in mind, here is a description of the documentation related specifically to learning the language in terms of the various levels of familiarity one might have with programming languages.
SuperCollider is an object-oriented programming language. It is descended from Smalltalk, considered by many to be the first completely object-oriented programming language.
The Language section of the help docs contains a short introduction to OO concepts and terminology. There are also plenty of resources online for learning more about Object-Oriented programmingOO is a rich subject which dates back more than 30 years and encompasses a large collection of programming languages.
The ordering of Language topics listed after Intro to Objects in the SC Help Doc index provides a way to move through the language in terms of increasing syntactical complexity and increasing conceptual depth. However, this may not be the best way for an absolute beginner in programming to learnwhile this can work well for an experienced programmer to quickly pick up specific syntax for SCthe concepts behind which they might already grasp through familiarity with another programming languagesthis might be a greater challenge for an absolute neophyte.
Another strategy for learning the language is approaching through Professor Cottle's Computer Music with SC3 book. Professor Cottle takes a more gradual approach, introducing OO programming concepts gradually with examples and explanations only after a detailed introduction to sound and musical concepts. Professor Cottle's book is good for both computer music and programming newbies.
Also see the "Prerequisites" section from Mark Polishook's tutorial; this provides some links to some free online books on Smalltalk (which SuperCollider closely resembles).
Understanding the SuperCollider Architecture
Part and parcel in getting familiar with SuperCollider is understanding the architecture of the SC3 system. This includes grasping the Client/Server relationship, how Server-side entities exist in the context of Client-side side code, how messages are passed back and forth between the two, how nodes and groups are created, assigned, and addressed, Order of Execution, Timing, and more.
The entries under the heading "Essential Topics" in the SC Help Doc index explains this in detail. Again, this will work well for someone already familiar with software systems, but might be a steeper climb for an inexperienced programmer. The Tutorials listed in the Help Doc index are all a good way to investigate this aspect of programming in SC3; as mentioned above it can be especially helpful to go through the Server Tutorial while referencing the Server Architecture and Server Command Reference. Professor Cottle provides an even more gentle introduction to the SC3 server architecture, spending much time on building synths before he gets into explaining how Synthdefs work and what the SC3 server does.
To be continued: