Module Home - - Reading - - Workshop - - Tutor Website - - Study Direct site


Workshop materials for Advanced Computer Music (G6003)

materials adapted with kind permission from those created by Nick Collins


Shortcuts:
1. SuperCollider Revision and Intro to Open Sound Control
2. Mappings and Audiovisuals
3. Audio Digital Signal Processing Essentials
4. Sample-level Sound Synthesis and Processing
5. Writing Plug-ins
6. Writing Plug-ins continued
7. Support week - drop in lab session on Tuesday Class
8. Interactive Music Systems
9. Interfacing
10. Machine Listening
11. Music Information Retrieval
12. Concatenative Synthesis

NB - These materials will be updated throughout term to respond to students' interests and needs.

SuperCollider Revision and Intro to Open Sound Control

Week1Lab.rtf

You will need:
1.1_OSCIntro.scd - Practical intro to OSC in SC
1.2_SCtoP5_OSC.scd - Getting SC talking to Processing using OSC
P5_OSC.zip - Processing sketches

Revision Links and Files:

Nick's SuperCollider 3 resource links

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

Mappings and Audiovisuals

week2.1Lab.rtf

You will need:

week2Lab.rtf

For Week 2 Thursday Lab you will need:
---
OSC messaging between Processing and SuperCollider
You'll need the oscP5 library for Processing
Processing patch
SC patch

OSC messaging between PD and SuperCollider
PD patch
SC patch

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

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

Extras:
simple Pen example in SuperCollider combining generative sound and visuals
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

Audio Digital Signal Processing Essentials

In Tuesday's session we'll look at: Mixing and enveloping examples; also see Nick's SC tutorials and the SC help for more on envelopes

In Thursday's lab we'll look at effects: week3Lab.rtf
You'll need to instal the external collection SLUGens (on a mac, place these in Library/Application Support/ Supercollider/Extensions ad recompile the SC class library)
And explore a panoply of effects from the ixi tutorials FX.scd

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


Extras:
For further exploration of Filters: LTIdemo.scd
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

Supercollider has a very useful Signal class for sample-level processing: 4.1_HelloSinOsc.scd
For a gentle entry to filters: 4.2_HelloFilter.scd

On Thursday we will have a look at starting templates for sample-level sound synthesis:

Some other examples for inspiration:


and more ...

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

We will step gently through the tools and ideas needed to create SC Plugins:


More pointers to plugin writing below:
Building SC
Building SC plug-ins
ACMCdemo, Nick's demo SuperCollider plug-in

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

For today's lab you will need some new classes:
MIDIFile class
MIDIFileAnalyse class file
OnlineMIDI class file

MIDIFileAnalyse example
OnlineMIDI example file

The basic MIDI File class comes with a MIDI file, but you can get others here

---
You might also like to consider revisiting some of the basic WIMP interaction possibilities:InteractionWithOfficePeripheral.sc or touchOSC from you phone ...

Interfacing: Electronic Instruments

Arduino boards and sensors will be distributed and explained in class.

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.
There are various helper classes for arduino and SC interfacing, but we are going to write and read directly from the serial port to understand the barebones. You will need:


---
The other options include:
1) SimpleMessageSystem (ignore Messenger) in Arduino software and Arduino quark in SuperCollider. SuperCollider and Wiring example (older, we now use the Arduinos not Wiring boards and SMS isn't reliable in Arduino 1+)
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.

Machine Listening

This week we will familiarise ourselves with machine listening tools in sc. SCListeningHandout.pdf

... and a fun harmoniser to play with.

If you don't have any drum tracks - some random drumming for onset testingconstruct.zip




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)
BeatRoot

MEPG-7
Michael Casey's MPEG-7 site

Music Information Retrieval

You will need to install the SCMIR tools in your Extensions folder.



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

Meapsoft
Tapestra


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
last.fm 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...

Concatenative synthesis


You can investigate the Concat UGen in Nick's 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