Workshop materials for Advanced Computer Music (G6003)
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.
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
week2.1Lab.rtf
You will need:
week2Lab.rtf
For Week 2 Thursday Lab you will need:
-
FaceOSC, a computer vision based face tracking system, which can send OSC messages to other applications (get the FaceOSC+ Syphon example)
- Processing Sketch to get facial gestures from the full mesh
- FaceOSC.scd for SuperCollider to receive these messages via OSC
- 2.2_mapping.scd for a reminder of how to implement efficient mappings between parameter sets
- You might also need the Syphon Library
---
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
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
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:
- writesoundfile.scd demonstrates the use of Signal and SoundFile classes in Supercollider
- EssExample.zip uses Ess extension sound library for Processing (you could also look at minim or beads)
- java using javasound
- Web Audio API Now also working in firefox. Some nice demos at MDN
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
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
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 ...
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.
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 testing
construct.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
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...
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