Columbia Courseworks E4896
This page links to the various code resources (Matlab, Processing, Pd)
associated with the course. Most of these resources are located in the
course Code directory.
You can find more Processing sketches at my personal
Processing examples page.
But most of the examples on that page and below are for Processing 1; the only ones that I have
updated for Processing 3 (the current version as of Spring 2016) are:
These are the ones I have been using in class. You will need the
minim audio library, which means unpacking the zip file into
your Processing Libraries folder.
For Pd, you should download and install
Pd-extended (which should be easy to install for all platforms).
As an introduction/tutorial on Pd, I recommend the
PureData Floss Manual.
A good reference for Pd is Miller Puckette's book The Theory and Technique of Electronic Music. To look up individual units, you can try the Index of the online HTML version. A more terse description of the basic operation of Pd is in Miller's original Pd manual. See also the
Introduction to Pd excerpted from Andy Farnell's book,
Designing Sound - Practical synthetic sound design for film, games and interactive media using dataflow. There's also a useful 2 page cheat sheet which I got from
F J Kraan.
Finally, there's a list of all the units in Pd-extended at
Here is the Processing ``sketch'' for the
Live Spectrogram (updated for Processing v3).
You should be simply able to copy and paste this
text into the Processing window. You can download
the processing environment from the
The plain implementation of the Karplus-Strong plucked string in Processing is
The same thing with a spectrogram in the background is
and the one where you can shift-click on the string to damp it at different places is
The simple plucked string in Pd is
It's based on the nicely encapsulated
which I got from
The simple test setup for karpluck is
(which uses the
patch to simulate note events from the computer keyboard),
and the 6-voice polyphonic version is
which wraps the karpluck unit in
the YouTube link for
High-speed video of guitar string vibration and the segment of
the TV show
Here is the simplesynth Pd patch I was playing with in class. It relies on
keybd to allow the computer keyboard to act like piano keys,
cmap to do simple control-range mapping (which also needs
adsr~ for envelope generation. You might also try
oscillator~, which is the band-limited pulse-width-modulated oscillator.
A good place to start with Pd is the
PureData Floss Manual I recommended.
I visualized the waveforms properties with the Processing sketches Oscilloscope and LiveSpectrum_grid.
The interactive sinusoidal analysis/synthesis program I used in class is Michael Klingbeil's
SPEAR, which is available for Mac and Windows.
The Matlab code for noise-residual construction is available on my page on
Sinusoid+Noise Analysis in Matlab.
Pd patches to resynthesize an analysis file exported from SPEAR are provided for
this week's practical. You can also read and rewrite them
with Matlab using spearread.m and spearwrite.m.
The Pd patch I used to listen to single-pole-pair resonances is
I was using the Processing sketches Oscope_Spectrum (now updated for Processing v3) and
LiveSpectrogram_wvfm to analyze the
results. For the LPC analysis in Matlab, I used
lpcfit.m and lpcsynth.m;
you can see examples of how to use them in this
Matlab diary (which uses
The Buzz/Hiss residual encoding that I mentioned
but didn't get to play is implemented by lpcBHenc.m
and lpcBHdec.m whose use is described in their
comments. I've also converted all this to Python which you can see in an IPython notebook,
The LPC cross-synthesis in Pd is part of practical 5.
Here are the Pd patches I used to demo various slides:
The patches also use loadsoundfile.pd, playloop.pd, and playsound~.pd to play sound files, audiosel~.pd to select audio streams, and plotpowspec~.pd. The example of group delay applied to audio on slide 5 comes from
my ELEN E4810 diary for allpass, and the example of reverb by convolution was from
the convolution introduction.
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Last updated: Sun Feb 28 22:39:39 EST 2016