Eli Fieldsteel
SuperCollider Tutorial: 3. Synth and SynthDef
updated
This video covers techniques for exploring the creative practice of live coding using JITLib (the Just-In-Time programming library), which is a family of classes that revolve around the idea of proxies, essentially a type of placeholder that can be dynamically manipulated on the fly. Special thanks to Julian Rohrhuber for his collaborative contributions to this tutorial!
2:17 the "proxy" concept
5:15 NodeProxy fundamentals (play, source, fadeTime, stop, end)
13:51 NodeProxy embedding
25:03 NodeProxy reshaping
27:24 Ndef
34:03 ProxySpace
38:06 a short live coding example by Julian Rohrhuber
42:36 dealing with environment variables in a ProxySpace
45:11 Tdef
48:37 general tips for live coding
Resources and related topics:
A 30-minute improvised live coding session: youtu.be/qlPaiznNFaU
My live coding playlist: youtube.com/playlist?list=PLPYzvS8A_rTayOWob_AwOPvGhXIPrDIyp
More work by Julian Rohrhuber: http://wertlos.org/~rohrhuber
Tidal Cycles: tidalcycles.org
Sonic Pi: sonic-pi.net
TOPLAP: blog.toplap.org/about
Note: there is a bug related to using Ndef.clear with a duration (featured at 33:49) which causes proxies with pattern sources to come back at full level and then fade out, even if they are already stopped. The workaround is to not rely on the clear method with fade times when using pattern-based proxies. On a more practical level, Ndef.clear should perhaps be viewed as similar to [command]+[period], i.e., more of a last-resort panic button than a musically nuanced tool.
Access transcripts and code for these tutorials on GitHub: github.com/elifieldsteel/SuperCollider-Mini-Tutorials
An introduction to "demand-rate" UGens, which allow the incorporation of pattern-style logic directly into a SynthDef, where it can be applied directly to audio and control signals.
Access transcripts and code for these tutorials on GitHub: github.com/elifieldsteel/SuperCollider-Mini-Tutorials
A quick and simple technique for time-stretching, spectral freezing, and other phase vocoder effects in SuperCollider, using the FFT-based UGens PV_PlayBuf and PV_RecordBuf. Note that these UGens (and the calcPVRecSize method) are part of the sc3-plugins package.
TO INSTALL THE SC3-PLUGINS: Go to github.com/supercollider/sc3-plugins, use the link for the latest release on the right side of the page, and download the package appropriate for your operating system. Follow the steps in the included README file, which are to copy the SC3plugins folder into your SC Extensions folder. You will then need to recompile the SC class library (or just quit/restart SC) to complete the installation.
Josh Parmenter's website: realizedsound.net/josh
Nathan Mandel, the saxophonist featured on the Depth of Field excerpt:
http://www.nathanmandel.com
youtube.com/watch?v=0qAdtxKtr_E
- routing and interconnecting NodeProxy objects
- clocks and quantization in the context of live coding
- the 'reshaping' parameter
- Tdef (essentially a live coding version of Routine)
- using a Pbind as a NodeProxy source
- Audio busses
- Basic input/output UGens (Out, In, SoundIn)
- Order of Execution
- Groups, Targets, and addActions
- value patterns (Pseq, Prand, Pwhite, Pseries, etc.)
- the Event class, as a model for an action taken in response to "play"
- the 'note'-type Event as a model for the creation of a Synth
- Pbind, a pattern that defines a sequence of Events
- basic filter UGens (LPF, HPF, BPF, BRF, RLPF, RHPF)
- range-mapping methods (linlin, linexp, explin, lincurve, etc.)
- reading audio files into buffers (Buffer.read)
- the "thisProcess.nowExecutingPath" technique
- using the PlayBuf UGen to read audio stored in a buffer
- arguments in the context of a UGen function
- envelopes & doneActions
- the SynthDef and Synth classes
- Arrays
- Functions and Arguments
- Literals
- Getting and Setting
- Randomness
- Iteration
- Navigating and understanding the SC workspace
- Basics of object-oriented programming (classes, methods, inheritance)
- Evaluating code
- Variables (local variables, interpreter variables, environment variables)
- Comments
- Order of operations
- Navigating the help browser
- Tour of common classes (Integer, Float, String, Symbol, Boolean)
1:29 Tempo/Quantization
12:00 The \sustain and \legato parameters
17:24 Pfunc and other function-driven patterns (Prout, Plazy)
31:09 Constraint patterns (Pfin, Pfindur)
37:50 Modular pattern composition (Pbindf, Pchain)
45:40 Sharing data across several Pbinds
Patterns, Part I: youtu.be/nB_bVJ1c1Rg
Nathan Ho's SuperCollider content:
youtube.com/@synth_def
patreon.com/synthdef
https://nathan.ho.name/
Support me on Patreon: patreon.com/elifieldsteel
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
An introduction to using OSC (Open Sound Control) in SuperCollider.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
An introduction to creating graphical user interfaces (GUIs) in SuperCollider.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
Sending and receiving MIDI in SuperCollider.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
All about signal processing and effects: Busses, In/Out UGens, Order of Execution, Groups, targets, and addActions.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
An introduction to Pbind/EventStreamPlayer.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
Introduction to Patterns, Streams, and Events.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
Techniques for sequencing sound and data using Routine and TempoClock.
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
Continuation of creative sampling techniques, including:
- dealing with absolute paths to audio files
- using iteration to create chords and clusters
- introduction to basic filter UGens
- introduction to basic sequencing with Routines
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
The tail end of the basics of the audio server, including:
- Synth and SynthDef
- randomness in a SynthDef
- midicps/cpsmidi and ampdb/dbamp
- graphical server tools and utilities
And an introduction to basic sampling techniques, including:
- the Buffer class
- accessing buffer attributes
- the PlayBuf UGen
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
A continuation of making sound in SuperCollider including:
- UGen range-mapping methods
- envelopes
- multichannel signals and multichannel expansion
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
A introduction to making sound in SuperCollider including:
- booting the audio server
- a review of basic digital audio concepts
- UGens, UGen rates, and UGen arguments
- LF vs non-LF UGens
- freeing, releasing, and setting a sound while it's playing
- lagging a UGen
- simple modulation configurations
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
A continuation of core programming concepts, covering:
- Arrays and Functions
- literals vs non-literals
- randomness
- conditional logic
- iteration
Homework assignments: uofi.box.com/s/fi1ibe34biouftw38rg89kik4i2xnhzl
An introduction to the SuperCollider environment, covering:
- a tour of the environment
- the basics of object-oriented programming
- writing and evaluating code
- getting help,
- an introduction to some fundamental classes (Integers, Floats, Strings, Symbols, Booleans, Nil, and Arrays) and various methods.
Hey everyone! We hit 10k subs a couple weeks ago! And I finally finished my book manuscript! Hopefully it'll be available for purchase in the not-too-distant future. And, I'm aiming to get back to creating video tutorial in the coming months!
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Many SuperCollider projects begin as scattered bits of code, which is not always the best option in a live performance context. It can be challenging to rewrite your code as a singular program that can be evaluated with a single keystroke. This lecture offers some strategies for building a coherent, robust code structure for setting up and performing a composition in SC.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
The basics of sending and receiving OSC messages in SuperCollider.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Continuation of GUI techniques.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Introduction to GUI (graphical user interfaces) in SuperCollider.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
The essentials of receiving MIDI data in SuperCollider, and using to to control sound.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Continuation of sequencing, including:
- array values for Pbind keys
- rest events
- expressing a key value in terms of another key value
- TempoClock and time quantization
- live manipulation of event streams via proxy objects Pdefn and Pdef
- expression of envelopes using Pseg
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Continuation of sequencing, including Events, Pbind, and other essential concepts.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Introduction to sequencing, including basic usage of Routines and value Patterns.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Techniques for creating a more complex signal flow in which Synths pass signal from one to another, e.g. a source sound passing through a reverb effect. Introduces concepts related to the architecture of scsynth, including Groups, Busses, targets & addActions.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Loading and playing back audio files using Buffer and PlayBuf.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Audio rate vs. control rate UGens (ar/kr), filter UGens, and panning/multichannel UGens.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Synth & SynthDef, Envelopes, and Iteration.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
Essential UGens: uofi.box.com/s/1bfva2kan3ntmgey2345goc73snjzpwt
Conditional logic, randomness, useful server utilities, and some basic concepts related to creating and playing UGen functions.
Problem sets: uofi.box.com/s/o21qen261x26x1iq3i7b5o2q6btq9qmt
An introduction to the course, the SuperCollider environment, and some fundamental programming concepts.
Access transcripts and code for these tutorials on GitHub: github.com/elifieldsteel/SuperCollider-Mini-Tutorials
Ever stumbled onto a random sequence that sounded really cool, and wanted to recreate it? You can! SuperCollider's random number generator, or RNG, can be seeded. This allows on-demand reproduction of any particular sequence of "random" choices. This video also introduces the concept of a Thread, the context in which code runs, and the abstract superclass of Routine, which can be provided with its own unique RNG seed.
Access transcripts and code for these tutorials on GitHub: github.com/elifieldsteel/SuperCollider-Mini-Tutorials
The age-old problem of why conditional logic doesn't work as expected when used inside of a SynthDef.


