The SuperCollider Book
| ISBN: 9780262049702 | Copyright 2025
Instructor Requests
A comprehensive update of the essential reference to SuperCollider, with new material on machine learning, musical notation and score making, SC Tweets, alternative editors, parasite languages, non-standard synthesis, and the cross-platform GUI library.
SuperCollider is one of the most important domain-specific audio programming languages, with wide-ranging applications across installations, real-time interaction, electroacoustic pieces, generative music, and audiovisuals. Now in a comprehensively updated new edition, The SuperCollider Book remains the essential reference for beginners and advanced users alike, offering students and professionals a user-friendly guide to the language's design, syntax, and use. Coverage encompasses the basics as well as explorations of advanced and cutting-edge topics including microsound, sonification, spatialization, non-standard synthesis, and machine learning.
Second edition highlights:
•New chapters on musical notation and score making, machine learning, SC Tweets, alternative editors, parasite languages, non-standard synthesis, SuperCollider on small computers, and the cross-platform GUI library
•New tutorial on installing, setting up, and running the SuperCollider IDE
•Technical documentation of implementation and information on writing your own unit generators
•Diverse artist statements from international musicians
•Accompanying code examples and extension libraries
Expand/Collapse All | |
---|---|
Cover (pg. Cover) | |
Contents (pg. v) | |
Foreword (pg. ix) | |
Introduction to the Second Edition (pg. 1) | |
1 Pathways (pg. 1) | |
2 Code Examples and Text Conventions (pg. 2) | |
3 The Book Website (pg. 3) | |
4 Final Thoughts (pg. 3) | |
5 Primary Web Resources (pg. 4) | |
6 Acknowledgments (pg. 4) | |
Part I: Tutorials (pg. 7) | |
1. Beginner’s Tutorial (pg. 9) | |
1.1 Hello World (pg. 9) | |
1.2 Messages and Arguments (pg. 13) | |
1.3 Nesting (pg. 15) | |
1.4 Receiver.message, Comments (pg. 16) | |
1.5 Enclosures (pg. 18) | |
1.6 Multichannel Expansion (pg. 20) | |
1.7 Help! (pg. 21) | |
1.8 Variables (pg. 25) | |
1.9 Synth Definitions (pg. 28) | |
1.10 Buses, Buffers, and Nodes (pg. 31) | |
1.11 Arrays, Iteration, and Logical Expressions (pg. 35) | |
1.12 How to do an Array (pg. 39) | |
1.13 Arrays in Sequences (pg. 44) | |
1.14 Scale and Offset (pg. 47) | |
1.15 When Bad Code Happens to Good People (Debugging) (pg. 52) | |
1.16 What Next? (pg. 55) | |
Notes (pg. 56) | |
2. The Unit Generator (pg. 57) | |
2.1 Introduction (pg. 57) | |
2.2 UGens, scsynth, and SuperCollider (pg. 57) | |
2.3 UGens Available in SuperCollider (pg. 62) | |
2.4 Optimization Tips (pg. 73) | |
2.5 Conclusion (pg. 79) | |
Notes (pg. 79) | |
Reference (pg. 80) | |
3. Composition with SuperCollider (pg. 81) | |
3.1 Introduction (pg. 81) | |
3.2 Control and Structure (pg. 82) | |
3.3 Generating Sound Material (pg. 92) | |
3.4 Conclusions (pg. 102) | |
Notes (pg. 102) | |
References (pg. 102) | |
4. Ins and Outs: SuperCollider and External Devices (pg. 103) | |
4.1 Introduction (pg. 103) | |
4.2 Getting the Data (pg. 104) | |
4.3 The Modality Toolkit (pg. 118) | |
4.4 Using the Data (pg. 124) | |
4.5 Conclusions (pg. 125) | |
Notes (pg. 125) | |
References (pg. 125) | |
Part II: Advanced Tutorials (pg. 127) | |
5. Programming in SuperCollider (pg. 129) | |
5.1 Introduction (pg. 129) | |
5.2 Fundamental Elements of Programs (pg. 130) | |
5.3 Variables (pg. 137) | |
5.4 Functions (pg. 144) | |
5.5 Program Flow Control and Design Patterns (pg. 159) | |
5.6 Collections (pg. 162) | |
5.7 Working with Classes (pg. 168) | |
5.8 Conclusion (pg. 176) | |
Notes (pg. 177) | |
References (pg. 177) | |
6. Events and Patterns (pg. 179) | |
6.1 SynthDefs, Events, and Patterns (pg. 179) | |
6.2 The Default Event (pg. 183) | |
6.3 Patterns (pg. 188) | |
6.4 Timing Considerations (pg. 195) | |
6.5 Real-Time Performance and Interactive Control of Patterns (pg. 197) | |
6.6 Appendix 1: How Patterns Are Performed by Streams (pg. 199) | |
6.7 Appendix 2: Event and Its Superclasses (pg. 200) | |
Notes (pg. 203) | |
7. Just-in-Time Programming (pg. 205) | |
7.1 Changing State (pg. 206) | |
7.2 Abstraction and Proxies (pg. 208) | |
7.3 ProxySpace, Ndef, and NodeProxy (pg. 209) | |
7.4 Structured Waiting and Rewriting: TaskProxy and Tdef (pg. 214) | |
7.5 Empty Patterns (pg. 216) | |
7.6 Symbol Streams and Recursive Patterns (pg. 221) | |
7.7 Perceptual Continuity and Context (pg. 224) | |
7.8 Combinatorics and Extensions (pg. 226) | |
7.9 Networked Live Coding and Recursive History (pg. 229) | |
Notes (pg. 230) | |
References (pg. 231) | |
8. Object Modeling (pg. 233) | |
8.1 Object Orientation, Behavior, and Polymorphism (pg. 233) | |
8.2 Common Compromises in Programming Languages (pg. 235) | |
8.3 Keeping Things Around (pg. 236) | |
8.4 Classes and Events as Object Models (pg. 237) | |
8.5 Case Study 1: A Shout Window (pg. 239) | |
8.6 Example 2: Aspects in QCD Sonification (pg. 248) | |
8.7 Example 3: A Miniature CloudGenerator (pg. 251) | |
8.8 Conclusion (pg. 262) | |
Notes (pg. 262) | |
References (pg. 262) | |
Part III: Editors and Gui (pg. 263) | |
9. Installing, Setting Up, and Running the SuperCollider IDE (pg. 265) | |
9.1 Background and History of SuperCollider Development Environments (pg. 265) | |
9.2 Overview of the SuperCollider IDE (pg. 266) | |
9.3 Starting and Running the System (pg. 270) | |
9.4 Code Editing (pg. 270) | |
9.5 Class Library Navigation (pg. 274) | |
9.6 Sessions (pg. 275) | |
9.7 Customizations (pg. 275) | |
9.8 Conclusions (pg. 276) | |
Note (pg. 276) | |
References (pg. 276) | |
10. Alternative IDEs for SuperCollider (pg. 277) | |
10.1 Introduction (pg. 277) | |
10.2 Overview of IDEs for SuperCollider (pg. 278) | |
10.3 Visual Studio Code (pg. 280) | |
10.4 GNU Emacs (pg. 282) | |
10.5 Conclusions (pg. 292) | |
Notes (pg. 293) | |
References (pg. 293) | |
11. SuperCollider on Small Computers (pg. 295) | |
11.1 Introduction (pg. 295) | |
11.2 The Small Computers Selected for Analysis (pg. 297) | |
11.3 Setting Up an ARM SBC (pg. 301) | |
11.4 Audio I/O Quality (pg. 306) | |
11.5 SuperCollider Audio Performance (pg. 309) | |
11.6 Case Studies with Small Computers and SuperCollider (pg. 311) | |
11.7 Conclusion (pg. 314) | |
Notes (pg. 314) | |
References (pg. 315) | |
12. The SuperCollider GUI Library (pg. 317) | |
12.1 GUI Overview (pg. 317) | |
12.2 GUI Basics (pg. 317) | |
12.3 Custom Graphics with UserView and Pen (pg. 331) | |
12.4 Managing GUI Updates and Communication (pg. 334) | |
12.5 Conclusions (pg. 337) | |
Notes (pg. 338) | |
Part IV: Practical Applications (pg. 339) | |
13. Sonification and Auditory Display in SuperCollider (pg. 341) | |
13.1 Introduction (pg. 341) | |
13.2 A Short History of Sonification (pg. 342) | |
13.3 Some Sonification Theory (pg. 347) | |
13.4 Basic Considerations for Sonification Design (pg. 352) | |
13.5 Tour d’Horizon of Sonification (pg. 355) | |
13.6 Supercolliders (pg. 361) | |
13.7 Sonification Concert Pieces (pg. 363) | |
13.8 Conclusion (pg. 370) | |
Notes (pg. 371) | |
References (pg. 372) | |
14. Spatialization with SuperCollider (pg. 377) | |
14.1 Spatial Sound (pg. 377) | |
14.2 Spatial Perception (pg. 377) | |
14.3 Spatial Composition Techniques and Spatial Audio Technologies (pg. 378) | |
14.4 Standard Spatial Techniques in SuperCollider (pg. 378) | |
14.5 3D Audio (pg. 387) | |
14.6 Techniques for Spatial Diffusion (Decorrelation) (pg. 395) | |
14.7 Conclusion (pg. 400) | |
Notes (pg. 400) | |
References (pg. 400) | |
15. Machine Listening in SuperCollider (pg. 403) | |
15.1 Background and First Steps (pg. 403) | |
15.2 Features and Segmentation (pg. 407) | |
15.3 Higher-Level Musical Constructs (pg. 412) | |
15.4 Interactive Music Systems (pg. 417) | |
15.5 Conclusions (pg. 420) | |
References (pg. 421) | |
16. Microsound (pg. 423) | |
16.1 Points of Departure (pg. 423) | |
16.2 Perception at the Micro Time Scale (pg. 425) | |
16.3 Grains and Clouds (pg. 428) | |
16.4 Granular Synthesis on the Server (pg. 438) | |
16.5 Exploring Granular Synthesis Flavors (pg. 442) | |
16.6 The New Pulsar Generator (nuPG) Program (pg. 446) | |
16.7 Sound Files and Microsound (pg. 450) | |
16.8 Conclusions (pg. 463) | |
Notes (pg. 464) | |
References (pg. 464) | |
17. Alternative Tunings with SuperCollider (pg. 467) | |
17.1 Standard Tuning: 12-Note Equal Temperament (pg. 467) | |
17.2 Other Equal Temperaments (pg. 472) | |
17.3 Unequal Divisions of the Octave (pg. 475) | |
17.4 Polytunings (Mixed Tunings) (pg. 479) | |
17.5 Beyond the Octave Division (pg. 483) | |
17.6 Tuning Systems and Harmonics (pg. 487) | |
17.7 Tools for Performing and Composing with Alternative Tunings (pg. 492) | |
17.8 Conclusion (pg. 494) | |
References (pg. 494) | |
18. Non-Real-Time Synthesis and Object-Oriented Composition (pg. 497) | |
18.1 Introduction (pg. 497) | |
18.2 SuperCollider NRT Basics (pg. 497) | |
18.3 Object-Oriented Composition (pg. 510) | |
18.4 A Customizable Object-Oriented Approach to Music Composition (pg. 529) | |
Notes (pg. 530) | |
References (pg. 531) | |
19. Stochastic and Deterministic Algorithms for Sound Synthesis and Composition (pg. 533) | |
19.1 Random Walks (pg. 534) | |
19.2 Tendency Masks (pg. 545) | |
19.3 Synthesis with Integer Operations (pg. 551) | |
19.4 Buffer Modulation (Buffer Scratching) (pg. 558) | |
19.5 Buffer Rewriting (pg. 562) | |
Notes (pg. 569) | |
References (pg. 570) | |
Part V: Projects and Perspectives (pg. 571) | |
20. Implementing New Language Syntax Using SuperCollider’s Preprocessor (pg. 573) | |
20.1 Introduction (pg. 573) | |
20.2 String Substitution (pg. 574) | |
20.3 Context-Aware Scanning (pg. 575) | |
20.4 Reordering Syntactic Elements: Formatted String Literals (pg. 578) | |
20.5 Using Objects to Understand Input Code (pg. 584) | |
20.6 Pattern Languages (pg. 588) | |
20.7 Conclusion (pg. 593) | |
Notes (pg. 593) | |
21. Interface Investigations (pg. 595) | |
21.1 Introduction (pg. 595) | |
21.2 The Machine as Musical Instrument and Tool for Thought (pg. 595) | |
21.3 Introduction to ixiQuarks (pg. 596) | |
21.4 Case Studies: Designing the Touch Surfaces of Our Systems (pg. 598) | |
21.5 Conclusion (pg. 609) | |
References (pg. 609) | |
22. SuperCollider in Japan (pg. 611) | |
22.1 Introduction (pg. 611) | |
22.2 The History of SuperCollider in Japan (pg. 611) | |
22.3 How I Discovered SC, and My Activities as an SC Maniac (pg. 612) | |
22.4 SC Users in Japan (pg. 612) | |
23. Dialects, Constraints, and Systems within Systems (pg. 617) | |
23.1 Dialects (pg. 617) | |
23.2 Emulators, Deficient Synths, and Appropriating Protocols (pg. 620) | |
23.3 Scheduling Constraints: HierSch (pg. 626) | |
23.4 Object Systems: Redirections and Constraints (pg. 629) | |
23.5 Text Systems (pg. 631) | |
23.6 Systems within Systems (pg. 634) | |
Notes (pg. 635) | |
References (pg. 636) | |
24. Artists’ Statements (pg. 639) | |
Juan Gabriel Alzate Romero (pg. 639) | |
Helene Hedsund (pg. 640) | |
Patrick Hartono (pg. 641) | |
Norah Lorway (pg. 642) | |
Andrea Valle (pg. 642) | |
Marianne Teixidó (pg. 644) | |
Neil Cosgrove (pg. 646) | |
Shelly Knotts (pg. 646) | |
Juan Sebastián Lach (pg. 648) | |
Mileece (pg. 650) | |
Sam Pluta (pg. 651) | |
Ann Warde (pg. 652) | |
Anna Xambó Sedo (pg. 653) | |
25. Machine Learning in SuperCollider (pg. 657) | |
25.1 Introduction (pg. 657) | |
25.2 Creative Machine Learning in Sound and Music (pg. 658) | |
25.3 Examples (pg. 660) | |
25.4 Summary (pg. 675) | |
References (pg. 675) | |
26. Notations and Score-Making (pg. 677) | |
26.1 Introduction (pg. 677) | |
26.2 CPWN and Graphic Notation Approaches within SuperCollider (pg. 678) | |
26.3 INScore (pg. 684) | |
26.4 Fosc (pg. 692) | |
26.5 Concluding Thoughts (pg. 702) | |
Notes (pg. 704) | |
References (pg. 705) | |
27. SCTweets: Character Matters (pg. 707) | |
27.1 Code Optimized for Length—How Expressive Can Laconic Code Be? (pg. 707) | |
27.2 Self-Regulating Scottish Raga (pg. 709) | |
27.3 Recursive Modulation of Frequency, Phase, and Amplitude (pg. 711) | |
27.4 Quine: Quine (pg. 713) | |
27.5 Final Remarks (pg. 715) | |
Notes (pg. 715) | |
References (pg. 715) | |
Part VI: Developer Topics (pg. 717) | |
28. The SuperCollider Language Implementation (pg. 719) | |
28.1 Introduction (pg. 719) | |
28.2 Coding Conventions (pg. 719) | |
28.3 Object Layout (pg. 720) | |
28.4 The Compiler (pg. 727) | |
28.5 The Interpreter (pg. 740) | |
28.6 The Garbage Collector (pg. 743) | |
28.7 Writing Primitives (pg. 745) | |
28.8 Source File Overview (pg. 750) | |
References (pg. 750) | |
29. Writing Unit Generator Plug-ins (pg. 753) | |
29.1 What Is a UGen, Really? (pg. 753) | |
29.2 An Aside: Pseudo UGens (pg. 753) | |
29.3 Steps Involved in Creating a UGen (pg. 755) | |
29.4 Writing the Class File (pg. 756) | |
29.5 Writing the C++ Code (pg. 760) | |
29.6 Specialized Types of UGen (pg. 777) | |
29.7 Practicalities (pg. 783) | |
29.8 Conclusion (pg. 790) | |
30. Inside scsynth (pg. 791) | |
30.1 Some Notes on scsynth Coding Style (pg. 792) | |
30.2 The scsynth Domain Model (pg. 792) | |
30.3 Real-Time Implementation Structure (pg. 796) | |
30.4 Low-Level Mechanisms (pg. 809) | |
References (pg. 810) | |
Subject Index (pg. 811) | |
Code Index (pg. 817) |
eTextbook
Go paperless today! Available online anytime, nothing to download or install.
Features
|