Computer music tools

My research and teaching at the University of York are primarily concerned with audio recording, processing and modelling. Teaching materials and research output often take the form of software tools for audio processing and computer music. Some of these are available from this page. Since they were not developed for commercial exploitation some are probably not quite as efficient, gainly or bug-free as they might be (particularly the older ones - some more than ten years old!) . However I have recently (2012) begun a series of 'science in the studio' plugins which are intended as educational aids as well as audio processing tools and these are subject to more rigorous testing. That said, all of these tools are provided with no guarantee and anyone downloading and using them acknowledges that I accept no responsibility at all for any problems arising from their use. There are some VST plugins (PC only at the moment I'm afraid), impulse responses for use with sampling reverbs and Matlab functions. If you do use them, let me know how you get on (jez[at]jezwells[dot]org) and report any bugs or problems so I can look into how they might be resolved in future versions.

If you are interested in hearing the differences in quality between HE-AAC coding (AAC+, part of MPEG 4) and mp3 (MPEG 1 layer 3) at low bit rates there are some audio examples you can download as a zip file (4 MB) here.

Science in the Studio VST plugins

These plugins are intended to illustrate and demonstrate the science of common studio processing tasks. They can be freely downloaded and used either as studio tools, just like other VST plugins, or they can be used to investigate and learn about a particular aspect of sound engineering.

The first of these (May 2012) is a combined amplitude and time based panning tool called FranPan (named after Franssen who investigated panning in the middle of last century as an employee with Philips). The plugin (for 32 bit Windows) can be downloaded here. The documentation, which includes guidance on installation and use, as well as background information and suggestions for educational/experimental activities can be downloaded here.

The latest addition (June 2012) is FlexDelay, a flexible delay plugin which can be used to explore extreme Doppler shifting as well as direct implementation of common 'thickening' effects such as chorus and flanging. The plugin (for 32 bit Windows) can be downloaded here. The documentation, which includes the usual guidance on installation and use, as well as background information on how the processor works along with suggestions for educational/experimental activities can be downloaded here.

Other VST plugins

There are three different plugins here. Two of them are implementations of algorithms originally developed by Christopher Penrose (thanks for his blessing and assistance in doing this) and the other is an extension of some research done by John Szymanski and Phillipe Mergen at the University. All three plugins make use of the Intel Signal Processing Library which provides highly optimised signal processing routines such as Fourier and wavelet transforms. They run best on Intel processors but they also work fine on the AMD Athlons on which they have been tested. Before you can use any of the plugins you need to install the files contained in this zip file in to the windowssystem32 folder of your computer


A spectral compositing algorithm developed by Christopher Penrose, this implementation goes a little further in allowing simple magnitude and phase swapping between sounds. There is a user guide and the plugin dll which goes in the vst plugins folder of whichever application you want to use it with.


This is a fantastic cross-synthesis algorithm devised by Christopher Penrose which uses a technique he refers to as 'frequency shaping'. Using this plugin you take a choral recording and combine it with an orchestral recording to produce this combined version. As for Ether there is a user guide and a dll file which needs to go in your vst plugins folder. It currently only works in mono (2 in, 1 out) but inspired by the multichannel capabilities of programs such as Reaper I will be doing a stereo (4 in, 2 out) version soon. There is a stereo implementation available as a Matlab function, below.


There are a couple of plugins here that I produced when I was first looking into wavelet processing for audio. They are spectral thresholding processors (you can see a DAFx paper I wrote about this in the publications section of this site). There are two versions and both are available here since the functionality of both are slightly different. There is a user guide and dll for version 1 and some release notes and a replacement dll for version 2 (don't have both versions in your vst plugins folder at the same time - otherwise your host applications might get confused).

One application of wavelet thresholding is to realistically change the perspective on stochastic type sounds. This example demonstrates how a rain storm can be thinned to a shower by slowly decreasing just one parameter, the deterministic threshold, over time.

I produced a study using solely this version 1 of this plug-in on two stereo tracks of audio. Fourier thresholding is used (sometimes very subtly) on the harmonic material, wavelet thresholding (sometimes very unsubtly) is used on the drum loop. This was produced in Logic Audio Platinum 5.5 and uses the automation system in this program to get the most out in WaveThresh by varying the parameters in real time. You can download it here: requiem internal. This piece received its premiere at Sheffield University Sound Junction's Works for Peace concert.

The sinusoidal extraction added in version 2 allows WaveThresh to adapt to the incoming signal and use the most appropriate processing method for different parts of the signal. In the following audio examples a piano recording is divided into sinusoidal (deterministic) and non-sinusoidal (stochastic) components and these are then individually thresholded and re-added to remove the background hiss.

Impulse responses

As part of restoration work on some choral recordings made in the late 1950s in the cathedrals of Arundel and Ely, I went to visit these two buildings last Summer to make recordings of the acoustic 'signatures' (otherwise known as impulse responses) of these buildings. Impulse response can be used in sampling reverberators (such as the free SIR VST plugin). There are three impulse responses: one taken in the nave of Arundel, one taken in the choir of Ely and one taken in the Lady Chapel at Ely. They are in 44.1 kHz, 24 bit .wav format:

Many thanks to Damian Murphy for his advice and loan of equipment for making these recordings. Damian has made many impulse response recordings of weird and wonderful spaces and these are available from Space-Net of which he is a co-founder. The Hamilton Mausoleum recording is incredible! There's also a description of the technique used to make these recordings.

Matlab functions

There will be more functions to follow but for now there are just two, a stereo implementation of Christopher Penrose's Shapee algorithm and a function to generate signals for capturing impulse responses based on the work of Angelo Farina. These were written and tested in Matlab 7 but it should work in versions 5 and 6 too. Let me know if you would like these adapted for use in Scilab.


Instructions for using the function can be accessed by typing 'help shapee' at the Matlab command prompt (once you have copied the m file into your 'work' or other Matlab directory). It is the same algorithm as is used in the VST plugin version above, but it works on stereo files and in double, rather than single, precision floating point.

By combining a voice recording with a string recording you can produce this combined output.

Download the m file here.

Logarithmic sweep generator

This function generates a logarithmic frequency sweep with user-specified start and stop frequency, sample rate and duration. The inverse sweep is also generated - filtering the sweep with its inverse produces an impulse. Sweeps are often used for impulse response measurement since they contain much more energy than an actual impulse (and so offer an impulse response recording with a much better signal to noise ratio). Inverse filtering the 'sweep response' of a building, processor etc. gives the impulse response of that system. This function is based on Angelo Farina's paper Simultaneous measurement of impulse response and distortion with a swept sine technique.

Download the m file here.