Nick Collins' Durham Website

Advanced Computer Music workshop materials

SuperCollider Revision and General Resources
Mappings and Audiovisuals
Audio Digital Signal Processing Essentials
Sample-level Sound Synthesis and Processing
Writing Plug-ins
Interactive Music Systems
Machine Listening
Music Information Retrieval
Music Modeling/Symbolic Music Analysis/Computational Musicology

SuperCollider Revision

SuperCollider 3 resource links

Helpful hints for this module on communicating between the language and server

Advice on using Aggregate Devices for Mac OS X 10.4 (especially MacIntel machines). No longer required for the more recent versions of SC post 3.3

Mappings and Audiovisuals

Mappings between number ranges

Example of a complex number fractal map with pattern code

Example of a cellular automata in SuperCollider

Neural Net class and help file

1 dimensional SOM (Self Organising Map) class and help file

Example of live data: FaceOSC computer vision based face tracking, which can send OSC messages to other applications; example code for SuperCollider to receive these messages

simple Pen example in SuperCollider combining generative sound and visuals

OSC messaging between PD and SuperCollider
PD patch
SC patch

OSC messaging between SuperCollider and PD-GEM
PD-GEM patch
SC patch

OSC messaging between Processing and SuperCollider
You'll need the oscP5 library for Processing
Processing patch
SC patch

Quartz Composer comes with the Developer tools on OS X only:
Demo within SC

Audio Digital Signal Processing Essentials


Mixing and enveloping examples; also see my SC tutorials and the SC help for more on envelopes

In SC itself you might want to explore these classes (and help files): Convolution, Convolution2, FOS, SOS, FFT. There is also a FilterTools Quark
Windowing functions for Fourier Transform

Online filter design

Java digital filter design applet

Another filter design widget example
Robert Bristow-Johnson's Cookbook formulae for audio EQ biquad filter coefficients. See also the musicdsp list archives for code examples

Sample-level Sound Synthesis and Processing


SLUGens in the sc3-plugins(various nonstandard UGens)
Gendy is in the general SC distribution

Starting templates for sample-level sound synthesis:
SuperCollider using Signal and SoundFile classes
Processing using Ess extension sound library
java using javasound
javascript using the Web Audio API (Chrome browser only at present)

ChucK examples of writing sound file and live generation sample by sample

Further signal generation examples
viznut-style C code one-liners in SuperCollider (see bibliography too)
Even more errant sound synthesis research: Various alternative generation algorithms for sound synthesis

sample by sample GENDYN in javascript Further javascript example using the Web Audio API (Chrome browser only at present)
List of some javascript libraries for sound. Or search for audiolib.js, audiolet.js, dsp.js

Writing Plug-ins

Building SC
Building SC plug-ins
ACMCdemo, my demo SuperCollider plug-in
SuperCollider UGen templates for Xcode by Daniel Jones
Further JavaSound examples
weakly~ Port to a Max/MSP external of the WeaklyNonlinear2 chaotic oscillator originally from the SuperCollider SLUGens pack (build of external for OS X/Max 5, and source code)
Faust functional language for DSP, online compiler with support for multiple plug-in types!
Vamp plug-ins format for Sonic Visualiser
iPhone audio coding
JUCE as wrapper framework (plugins extension project + VST host test)
iPlug universal VST/AU cross platform generation
MDA MDA VST and AU plug-ins open source
Sound Tools sndpeek realtime spectral waterfall plot, and LPC and phase vocoder live visualisers. Source code available even if executables may not work

Interactive Music Systems

MIDIFile class

Place to obtain some Type 1 MIDI files

MIDIFileAnalyse help file
MIDIFileAnalyse class file

OnlineMIDI help file
OnlineMIDI class file

Also see Wouter Snoei's SimpleMIDIFile class in his wslib (in the Quarks extensions)

Interfacing: Electronic Instruments

Arduino boards and sensors will be distributed and explained in class. You will need the Arduino and/or SCPyduino quarks as instructed.

If you want to use Arduino with SuperCollider and set this up yourself, first download the Arduino software that lets you write programs to the microcontroller computer. Remember to beware of baud rates: make sure the baud rate you select in SuperCollider matches that in the Arduino program. Then there are three main choices:
1) SimpleMessageSystem (ignore Messenger) in Arduino software and Arduino quark in SuperCollider
2) The OldStandardFirmata code example (NOT StandardFirmata) in the Arduino software and the SCPyduino quark in SuperCollider
3) Use the SerialPort class in SuperCollider, and write your own communication to a program on the board that you also write yourself in C in the Arduino software. See Fredrik Olofsson's hints here.

SuperCollider and Wiring example (older, we now use the Arduinos not Wiring boards)

Machine Listening

A list of machine listening plug-ins for SuperCollider to get you started
Machine listening demoes for SuperCollider to explore

Some further SC based examples:
Dan Stowell's research work (see also the MCLD UGens in sc3-plugins, as well as built-in UGens like Onsets and SpecPcile mentioned in the list above)
James Harkins' investigation of spectral comparison of event onsets
Charles Hutchins' exploration of time domain f0 tracking for tuba and voice

Computational Auditory Scene Analysis resources (mainly MATLAB): CASA book
Dan Ellis' Music Signal Processing practical tasks (including chord recognition and beat tracking practicals: Pd and MATLAB are the platforms used)

Michael Casey's MPEG-7 site

Concatenative synthesis:
You can investigate the Concat UGen in my Machine Listening plugins via sc-plugins; but also, try out:

Corpus-based Processing for SuperCollider (Tom Stoll) Beta software but perhaps worth investigation
Soundspotter by Michael Casey, Pd and Max/MSP externals, plus C++ source code

Music Information Retrieval

SCMIR SuperCollider Music Information Retrieval library
A list of machine learning resources for SuperCollider
MIR test data
Marsyas MIR framework in C++

Bregman MIR framework in python


MIR web services:
Vienna University of Technology mir group
The Echo Nest web services for audio analysis and music data (MIT start-up company using Tristan Jehan's machine listening work)
Sonic Annotator Web Application run analyses on uploaded audio files API
SoundCloud API
Music Ngram Viewer:hunt for melody or chord sequences

Many other interesting online music data companies have APIs for web services, including songkick, MusicBrainz and more...

Music Modeling/Symbolic Music Analysis/Computational Musicology

kern scores symbolic music data source site
Lilypond Scoring language and typesetting application
superfomus: SuperCollider to lilypond scores (also see work by Josh Parmenter in quarks)
music21 Python language toolkit for symbolic music analysis