Course code examples:
“Real-time & Interactive Computer Music and Algorithmic Media with the SuperCollider Programming Language” (DXARTS 490a)
About
These files were made for a course I created and taught at the University of Washington’s Center for Digital Arts and Experimental Media (DXARTS) in Summer 2010.
The course was an intensive, one-month long course, meant as a continuation of the DXARTS 461/2/3 Digital Sound series (“Digital Sound Synthesis,” “Digital Sound Processing,” and “Advanced Digital Sound Processing and Synthesis.”), taught by Josh Parmenter (461/2) and Juan Pampin (463) and TA’ed by myself. This year-long series focused on the fundamentals of sound synthesis, Non-Real-Time composition and audio-based research, therefore these subjects are not addressed as thoroughly in these example files. However, the example files from the year-long series can be found here: http://www.dxarts.washington.edu/courses/461-3/
The focus of DX490a was on real-time and interactive applications, involving sound but also other modalities, as well to provide a more in-depth knowledge of the SuperCollider programming language; this is what the examples below are about.
When creating these examples I made an effort to also compile together files from the documentation relative to each subject, and make an easier to navigate map of what already is there for future reference (I frequently turn back to those myself). I also added many comments in an effort to make these files as meaningful and understandable as possible without the accompanying lecture when they were taught.
I have used to methods to index these files: Index A follows the sequence of how the class was taught, and should make good sense if one wants to follow everything from the beginning. Index B (contents) is a per-subject categorization, better as a reference guide.
INDEX (class sequence, for in-site navigation)
Class 1.0: Resources
Class 1.1: SuperCollider architecture & language
Class 1.2: scsynth
Class 1.3: The startup file
Class 2.1: Server-language communication
Class 2.2: Interfacing-1| Mouse & Keyboard
Class 2.3: Quarks
Class 2.4: Interfacing-2| Trackpad-Multitouch
Class 3.1: Timing|Clocks
Class 3.2: Scheduling-1| Streams: Routines & Tasks
Class 4.1: Buffers & Interdependent_Processes
Class 5.1: Sets| Dictionaries & Environments
Class 5.2: Scheduling-1b| Process Modules (ProcMod)
Class 6.1: Interfacing-2| MIDI
Class 6.2: Mapping strategies
Class 7.1: Interfacing-3| HID
Class 7.2: Example ProcMod with HID
Class 8.1: Interfacing-4| Signal Feature Extraction
Class 9.1: Interfacing-5| Arduino
Class 9.2: Interfacing-6| Wii
Class 10.1: Scheduling-2| Control Signals & Demand-UGens
Class 10.2: Networking-1| Within one computer (talking to other software) ||| supporting zip
Class 11.1: Managing Large Projects (zip)
Class 13.1: GUI-1| Basics
Class 13.2: GUI-2| Programming graphics in SC ||| Quartz Composer supporting zip
Class 14.1: Patterns ||| Quick reference (collected from James Harkins’ tutorial)
Class 15.1: Writing Classes & UGens (guest lecture by Josh Parmenter) (zip)
Class 16.1: Networking-2| LAN (local machine code) ||| (remote machine supplement)
Class 16.2: Networking-3| SC and the Internet ||| OSCGroup (zip)
Class 17.1: Standalones
Class 17.2: AudioUnit_Plug-ins
CONTENTS (per subject):
• FUNDAMENTALS, EXTENSIONS, ETC:
Resources
Supercollider architecture & language
The SuperCollider server (scsynth)
The startup file
Server-language communication
Extending SC: Quarks
Sets: Dictionaries & Environments
Managing large projects
Writing Classes & UGens (lecture by Josh Parmenter)
Making standalone applications
Making AudioUnit Plug-ins
• INTERFACING:
Mouse & Keyboard
Trackpad: multitouch (OSX only)
MIDI
Mapping strategies
HID
Example: ProcMod with HID control
Signal Feature Extraction
Arduino
Wiimote
• SCHEDULING:
Timing: Clocks
Streams: Routines & Tasks
Buffers & Interdependent processes
Process Modules (ProcMod & ProcModR)
Analog style control signals & Demand-UGens
Patterns
• NETWORKING:
Within one computer
Within Local-Area-Networks (LAN)
SuperCollider and the internet
• GUI & GRAPHICS:
Basics
Programming-graphics-in-SC
NOTE: These examples were only tested on Mac OSX, and therefore there are bound to be incompatibilities with Linux and, many more, with Windows. Maybe someone else can contribute to fix this at some point…
ACKNOWLEDGMENTS
A big thanks to the people whose tutorials I consulted many times, and some of whose examples you will find credited in here: Josh Parmenter (DX490 class from 2007), Nic Collins (Computer Music workshop), Thor Magnusson (ixi SC tutorial), James Harkins (Patterns tutorial), and of course the most valuable sc-users list, Josh – once again – for actually teaching me how to use SC and the developers community for working hard to make SC the amazing tool it is. Hopefully, these examples will help more people to find that out 🙂