Other Plugins

This page is the home of all the other vst plugins I've made along the way. Some of these are spinoffs, born from accidents or experiments whilst developing something else.

The more recent ones are effects I have made primarily for my own use; I've been using live electronics within my own music-making, and occasionally code my own effects. Since they are designed to be used live, these effects tend to be simple, with low latency and low cpu footprints. They also have no installers, documentation, or user interfaces. In many cases they may also turn out to be a bit special-interest, as they are designed for my own very specific purposes. I will document their parameters as I upload them here, but apart from that you'll have to work them out as you go along.

These plugins are all windows/vst 2.0. In cases where the downloaded file is a .dll, simply copy it into your vst host application's vstplugins directory.


This spectral delay is specially designed to expose higher level controls than other spectral delays effects, in order to facilitate interesting control changes within live performance.

Instead of allowing control over delay time and feedback for each delay band, a narrow set of controls can be used to control all delay bands simultaneously.

Also, this is the only spectral delay effect I know of in which the delay bands themselves are implemented in the time domain. This gives sample-accurate precision and causes cool artifacts to emerge when delay times become very short!


  • Mode (specify how delay varies across the set of delay bands. Available modes: sweep up, sweep down, sweep out, sweep in, random)
  • Max Delay (delay time of longest band. Other band delay times are spaced equally up to this time according to the order specified by ‘mode’)
  • Half Life (specifies a decay half-life for all bands. Feedback proportions are worked out automatically from each band’s delay time)
  • Min Freq, Max Freq (these controls allow you to specify the frequency range over which decay bands are spaced. For best results, restrict these to the frequency range which most of your signal occupies)
  • Number Of Bands (specify the number of delay bands. Caution: larger numbers of bands use more CPU!)
  • Output Level (master volume control for delay output)
  • Thru (amount of dry signal mixed into output)

Click here to download SpectralDelay


Posted in Uncategorized | Comments Off


DelayCrossModulator performs frequency modulation via lfo-controlled delay lines, and cross-modulates the result with the input signal.

It can sound like a chorus, a vibrato or a fairly wild cloud of sound.


  • Freq Mod Poles (the number of channels to which frequency modulation is performed)
  • Freq Mod Rate (speed of the frequency modulation)
  • Freq Mod Depth (depth of the frequency modulation.  Note that large values cause latency, although the irregularity of this can be interesting effect in its own right)
  • Freq Mod Mix (dry/wet control to fade between input signal and frequency modulated signal)
  • Cross Mod Mix (dry/wet control to fade between output of Freq Mod Mix and cross modulation of dry and frequency modulated signal)

Click here to download DelayCrossModulator


Posted in Uncategorized | Comments Off


AmplitudeDelay connects a procedurally controlled delay line to the amplitude of the input signal.  This is really an unusual form of distortion.  It can add interesting harmonics and overtones to a signal.


  • Poles (specify a number of channels.  When there are more than one channel, the extra ones use depths equally spaced between 0 and the value of the depth parameter)
  • Depth (the extent to which amplitude scales the delay line)
  • Lag (when greater than zero, the ‘home position’ of the delay line is slightly in the past.  This allows the delay line to move in both directions, which can give a richer sound.  But it can also introduce some latency)
  • Mix (dry/wet control)

Click here to download AmplitudeDelay

Posted in Uncategorized | Comments Off


Outputs a cross-modulation of the input signals from channels 1 and 2.

I made this to perform live cross-modulation between different musicians.


  • Gain (can be useful to boost cross-modulated output, since cross-modulation causes decrease in level except when the input signal is clipping)
  • Mix (dry/wet control.  Dry feeds the input from channel 1 directly, but not channel 2)

Click here to download StereoCrossModulator

Posted in Uncategorized | Comments Off


NoiseMaker replaces the input signal with noise.  The level of noise matches the level of the input signal, allowing you to make interesting rhythms (if you play interesting rhythms into it, that is).  Sounds nicer if you run the output through a bandpass filter (not included).


  • Range (the lower a value, the more responsive.  Below a certain threshold – which will depend on the pitch of the input signal – some characteristics of the input signal will be retained)
  • Channels (can perform multiple layers of noisification simultaneously, though empirically speaking this appears to be pointless)
  • Mix (dry/wet control)

Click here to download NoiseMaker

Posted in Uncategorized | Comments Off


Not a very original concept but this one does exactly what I want and nothing more.


  • Gain (useful to boost if reducing bitrate, otherwise you can end up with silence)
  • Sample rate (reduce the samplerate by a proportion of input sample rate
  • Bits (reduce the bitrate to equivalent to the real value specified)
  • Hold (when bitrate is reduced, increasing the value of hold causes an effect similar to samplerate reduction, except that the temporal grid becomes synchronised to changes in quantised amplitude.  With the right input signal this can cause emergent squarewaves or other regularly formed waves)
  • Mix (dry/wet control)

Click here to download BitCruncher


Posted in Uncategorized | Comments Off


MidiEnveloper broadcasts midi controller messages based on volume of an audio input signal.  You could use it to control some parameter of some other effect based on how loud you play.  Or you could use an input signal from someone else in your band.  For Example a guitarist’s effects could follow the envelope from a hi-hat mic.

You may want to use it in conjuction with a virtual midi driver, in order to bounce the broadcasted midi back into the same vst host that is running MidiEnveloper.  I recommend LoopBe for that sort of thing.


  • Excitement (values greater than 1 cause a bias towards extremes of the output range.  Values less than 1 cause bias towards centre of output range)
  • Bias (stretches output towards one extreme or other.  Value of this parameter represents median output value.  Set it to 0.5 for no bias)
  • Attack / Release (milliseconds over which increasing / decreasing input levels are smoothed)
  • Update Rate (number of milliseconds between broadcasts of midi controller messages.  Too frequent and your system will be swamped.  Too infrequent and the result won’t be responsive enough)
  • Context halflife (MidiEnveloper features a sort of auto-volume adjustment, in case the overall level of your input signal is unpredictable.  This parameter controls the responsiveness of this volume-adjustment).
  • Midi Device / Channel / Controller (specify how to broadcast the midi controller messages)

Click here to download MidiEnveloper

Posted in Uncategorized | Comments Off


RealTimeStretcher replays an input signal at a slower speed to that in which it entered the effect.  Since this unavoidably makes it get behind, it uses a gate to jump back to the present whenever a new note or ‘onset’ is detected.

The timestretching can change the pitch (to make bass sounds), or there is an optional pitch-compensation.  This is a very dirty windowing-based granular timestretch, if you don’t want a grainy sound don’t use this effect!


  • On Threshold (when input level exceeds this threshold, a new timestretch can begin)
  • Off Threshold (expressed as a proportion of On Threshold.  Input level must fall below this threshold before a new onset can trigger a new timestretch)
  • Off Time (Input level must fall below Off Threshold for this many milliseconds before a new onset can trigger a new timestretch)
  • Speed (the factor by which input speed is stretched.  Can be 2, 4, 8, 16 or 32)
  • Mode (monophonic / polyphonic.  In monophonic mode, timestretches stop playing when a new one is triggered.  In polyphonic mode, they can overlap)
  • Attack / Decay / Release (durations over which timestretched playbacks fade in/out)
  • Pitch Compensation (on/off.  Specify whether playbacks should be low, or use the grainy pitch-compensation)
  • Mix (dry/wet control)
  • Window length, windows (these control the pitch-compensation)

Click here to download RealTimeStretcher

Posted in Uncategorized | Comments Off


AudioToOscillator attempts to detect the pitch of a monophonic input signal using zero crossing analysis, and controls an oscillator with this pitch.

It was originally going to be an audio-to-midi converter, but I found that I preferred it when it controlled an oscillator directly, as this allows more accurate rendition of vibrato, glissando, volume envelopes etc.

It doesn’t work perfectly, but with careful fine-tuning it seems to achieve lower latency and better accuracy than other pitch-detection software I’ve tried.  I’ve been using a violin with a barcus berry pickup as the input signal, but it seems to work with other timbres of input signal too.

Output oscillator parameters:

  • Attack (duration over which new notes fade in to full volume)
  • Release (duration over which finished notes fade out to silence)
  • Pulse Width (controls the output oscillators’ pulsewidth)
  • Glide (controls the output oscillators’ portamento time)
  • Output Lvl (maximum level of output oscillators)
  • Vol sens (extent to which output oscillators match level of input signal.   0 = output oscillator level unaffected by input signal level, 1 = output oscillator  level linearly proportional to input signal level)
  • Transpose 1, Transpose 2, Transpose 3 (semitone transposition for each of up to three oscillators)
  • Number of pitches (specify the number of oscillators, from one to three.  Allows outputting of chords)

Input signal analysis parameters:

  • Gate Thres (threshold below which input is not considered to be a note)
  • Instability decay (AudioToOscillator’s algorithm measures the level of instability in the input signal, and uses this measure to try to produce a more stable output.  The decay level controls the extent to which detected instability ‘lingers’)
  • Instability note thresh (threshold for detected instability above which notes are not allowed to sound)
  • Instability pitch thresh (theshold for detected instability above which notes’ pitch is not allowed to change)
  • Treb preference (weighting towards higher-frequency candidate pitches)
  • Stab preference (weighting towards stability – ie preference for candidate pitches that have been present recently)
  • CPU intensity (controls the amount of analysis iterations per zero crossing.  Higher values can result in more accurate results at the expense of the algorithm’s CPU footprint).

Click here to download AudioToOscillator

Posted in Uncategorized | Comments Off


This was the first plugin I ever made.  It’s a simple amplitude modulation, but can sound interesting when the modulation frequency starts climbs into the audible range.


  • Depth (ie wet/dry)
  • Frequency( from 0.1 to 1000 Hz)

Click here to download LFXTremolo

Posted in Uncategorized | Comments Off


This utility allows you to save .wav files from your vst signal chain. It can be a useful tool for analysing the behaviour of other plugins. Or if your vst host is a demo version with ‘save’ disabled, you could use it to bounce your finished work to disk. Although that would be silly.

Click here to download AnarchyRecorder

Posted in Uncategorized | Comments Off


PulsewidthModifier attempts to use a procedurally controlled variable length delay line to compress the pulsewidth of the input signal’s fundamental frequency. It uses a very lightweight zero crossing analysis, which often misidentifies fundamental frequency, especially with complex input signals.

The result acts as a harmonic exciter and an interesting form of distortion.

Click here to download PulsewidthModifier

Click here to download the source code for PulsewidthModifier

Posted in Uncategorized | Comments Off