File ladspa-swh.tex of Package ladspa

\documentclass[11pt]{article}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{a4}
\usepackage{url}
\pagestyle{plain}
\parindent=0pt

\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}
\makeatletter

\begin{document}

\title{Steve Harris' LADSPA Plugin Docs}
\date{2004-10-26}
\author{steve@plugin.org.uk}

\maketitle

\tableofcontents{}

\parskip=\medskipamount

\section{Preamble}

\subsection{What plugins?}
This is the documentation for some plugins that I have written for the \emph{Linux Audio Developers Simple Plugin Architecture}. It is a nice audio plugin architecture with a very easy learning curve.

\subsection{Where can I get them}
From the website at \url{http://plugin.org.uk/}.

\section{The plugins}
\subsection{Aliasing (alias, 1407)\label{alias}\label{id1407}}
Simulates aliasing using nyquist frequency modulation. Produces wacky results if the blocks aren't even numbers of samples long.\subsubsection*{Aliasing level}
Controls the amount of simulated aliasing in the output.\subsection{Allpass delay line, noninterpolating (allpass\_n, 1895)\label{allpass_n}\label{id1895}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Allpass delay line, linear interpolation (allpass\_l, 1896)\label{allpass_l}\label{id1896}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Allpass delay line, cubic spline interpolation (allpass\_c, 1897)\label{allpass_c}\label{id1897}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Simple amplifier (amp, 1181)\label{amp}\label{id1181}}
CPU usage: 130 cycles/sample

\subsubsection*{Amps gain (dB)}
Controls the gain of the input signal in dB's.\subsection{AM pitchshifter (amPitchshift, 1433)\label{amPitchshift}\label{id1433}}
This plugin works by running a single write pointer (monotonic) and two read pointers (pitchscaled) over a ringbuffer.The output is faded between the two readpointers according to the sine of the distance from the write pointer. The design is based on the mechanism of a mechanical pitchshifter I saw in the Gemeentemuseum in Den Haag, though I'm sure it is a common enough algorithm.\subsubsection*{Pitch shift}
The multiple of the output pitch, eg. 2.0 will increase the pitch by one octave.\subsubsection*{Buffer size}
The order of magnitude of the buffer size. Small buffers will sound fluttery, large buffers will have flangy sounding echos.I recommend a buffer size of 3 for a reasonable compromise, with wideband material at around 48KHz. For drums you might have to lower it, and for voiced background noises it can go higher.\subsection{Analogue Oscillator (analogueOsc, 1416)\label{analogueOsc}\label{id1416}}
This plugin simulates the output you get from an analogue synth's osciallators.You can get a reasonable emualtion of a 303's square (for exmaple) if you set the warmth to about 0.4 and the instability to about 0.05.The frequency is currently a control input, and there is no interpolation, so if your host is using large block sieze it will sound steppy.I'm unsure whether to convert this to an audio input or inpolate the control in.\subsubsection*{Waveform (1=sin, 2=tri, 3=squ, 4=saw)}

	The basic shape of the waveform is selected using this control:

	\begin{tabular}{|r|l|}
	\hline
	Value & Waveform \\
	\hline \hline
	1 & Sine \\
	2 & Triangle \\
	3 & Square \\
	4 & Saw \\
        \hline
	\end{tabular}
      \subsubsection*{Frequency (Hz)}
The frequency of the output (Hz).\subsubsection*{Warmth}
The degree of softening that is applied to the generted waveform, reduces the number of harmonics in the output.\subsubsection*{Instability}
The degree of pitch instability of the output. Turning this too high with square and saw waves will produce an anoying jittery sound, I want to fix this but it is tricky.\subsection{Glame Bandpass Analog Filter (bandpass\_a\_iir, 1893)\label{bandpass_a_iir}\label{id1893}}
 IIR bandpass filter modeled after an analog circuit. This filter was ported from the glame multitrack editor to ladspa.
                \subsection{Glame Bandpass Filter (bandpass\_iir, 1892)\label{bandpass_iir}\label{id1892}}
 IIR bandpass filter based using chebishev coefficients. The filter allows you to tweak the number of stages used for
                filtering. Every stage adds two more poles, which leads to a steeper dropoff. More stages need more CPU power. This
                filter was ported from the glame multitrack editor to ladspa.
                \subsection{Bode frequency shifter (bodeShifter, 1431)\label{bodeShifter}\label{id1431}}
A Bode/Moog Frequency Shifter is a popular analogue synth module, it works by shifting all the frequencies of an input signal up or down by a specified frequency. This version shifts in noth directions at the same time as its almost no extra work and its often useful to have both directions.It doesn't actually work in the same way as an analogue Bode/Moog, which use Dome filters as the core, it uses a Hilbert Transformer, which is much simpler to implemtent in digital systems. The output is very similar though, and people are familiar with the name Bode.The theory of operation is pretty simple, and uses some clever maths to cancel out the upper or lower sidebands of a ringmodulator applied to the input signal. Read the source if you want more information. The Hilbert Transformet coefficents came from mkfilter, the excellent filter calculator, available at \url{http://www-users.cs.york.ac.uk/~fisher/mkfilter/}.\subsubsection*{Frequency shift}
Controls the frequency shift applied to the input signal, in Hz. Note, this is not a pitch shift, so you not get natural sounding results out, it is an audio effect popular with modular synthesists.\subsection{Bode frequency shifter (CV) (bodeShifterCV, 1432)\label{bodeShifterCV}\label{id1432}}
See the non CV version for information.This is more or less a copy of the Doepfer A126, \url{http://www.doepfer.de/a126.htm}.\subsubsection*{Shift CV}
Controls the frequency shift applied to the input signal, in KHz.\subsection{Glame Butterworth X-over Filter (bwxover\_iir, 1902)\label{bwxover_iir}\label{id1902}}
 Butterworth X-over filter
                \subsection{GLAME Butterworth Lowpass (buttlow\_iir, 1903)\label{buttlow_iir}\label{id1903}}
 Butterworth lowpass filter
                \subsection{GLAME Butterworth Highpass (butthigh\_iir, 1904)\label{butthigh_iir}\label{id1904}}
 Butterworth highpass filter
                \subsection{Chebyshev distortion (chebstortion, 1430)\label{chebstortion}\label{id1430}}
This is an interesting distortion effect that is seeded from incoming
signal envelope. As the level of the signal rises more and more harmonics will
for added to the output signal.The distortion control sets the sensitivity of the input.The effect eveolved from some experiments between Tim Goetze and myself,
apptempting to emulate valve based guitar amp distortion. This was one of the
failures, but it still makes an interesting noise.\subsection{Comb Filter (comb, 1190)\label{comb}\label{id1190}}
CPU usage: 86 cycles/sample

\subsubsection*{Band separation (Hz)}
Controls the distance between the filters peaks.\subsubsection*{Feedback}
Feedback level, increases the distinctive wooshy phaser sound.\subsection{Comb delay line, noninterpolating (comb\_n, 1889)\label{comb_n}\label{id1889}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Comb delay line, linear interpolation (comb\_l, 1887)\label{comb_l}\label{id1887}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Comb delay line, cubic spline interpolation (comb\_c, 1888)\label{comb_c}\label{id1888}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels. If this time is negative
       then the feedback coefficient will be negative, thus emphasizing only odd
       harmonics at an octave lower.
      \subsection{Comb Splitter (combSplitter, 1411)\label{combSplitter}\label{id1411}}
Divides the input up into two parts with frequency peaks at f Hz intervals, skewed by f/2 Hz between the two outputs. Mixing the two outputs will get you exactly the input signal.I generally use this trick to divide up an input signal, process the two halves differently, then mix them again. It sounds pretty funky.\subsubsection*{Band separation (Hz)}
The distance between the frequency peaks.\subsubsection*{Output 1}
The sum output.\subsubsection*{Output 2}
The difference output.\subsection{Constant Signal Generator (const, 1909)\label{const}\label{id1909}}
This plugin add an output DC offset at the given amplitude to the input
signal. It has no real use other than for debugging and in modular synths.\subsubsection*{Signal amplitude}
Controls the amplitude of the output signal.\subsection{Crossover distortion (crossoverDist, 1404)\label{crossoverDist}\label{id1404}}
This is a simulation of the distortion that happens in class B and AB power amps when the signal crosses 0.For class B simulations the smooth value should be set to about 0.3 +/- 0.2 and for AB it should be set to near 1.0.\subsubsection*{Crossover amplitude}
Controls the point at which the output signal becomes linear.\subsubsection*{Smoothing}
Controls degree of smoothing of the crossover point.\subsection{DC Offset Remover (dcRemove, 1207)\label{dcRemove}\label{id1207}}
CPU usage: 10 cycles/sample

Simply removes the DC (0 Hz) component from an audio signal, uses a high pass filter, so has some side effects, but they should be minimal.\subsection{Debug Plugin (debug, 1184)\label{debug}\label{id1184}}
Prints some stats about the input stream to stdout. Not intended for general use.\subsection{Exponential signal decay (decay, 1886)\label{decay}\label{id1886}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Decay Time (s)}

       Time for the echoes to decay by 60 decibels.
      \subsection{Decimator (decimator, 1202)\label{decimator}\label{id1202}}
CPU usage: 29 cycles/sample

Decimates (reduces the effective sample rate), and reduces the bit depth of the input signal, allows non integer values for smooth transitions between clean and lofi signals.\subsubsection*{Bit depth}
The bit depth that the signal will be reduced to.\subsubsection*{Sample rate (Hz)}
The sample rate that the signal will be resampled at.\subsection{Declipper (declip, 1195)\label{declip}\label{id1195}}
CPU usage: 11 cycles/sample

Removes nasty clicks from input signals, not very kind to them though.This code came from the music-dsp mailing list, but it was unattributed, if it's yours, please drop me a line and I'll credit you.\subsection{Simple delay line, noninterpolating (delay\_n, 1898)\label{delay_n}\label{id1898}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsection{Simple delay line, linear interpolation (delay\_l, 1899)\label{delay_l}\label{id1899}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsection{Simple delay line, cubic spline interpolation (delay\_c, 1900)\label{delay_c}\label{id1900}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Max Delay (s)}

       Maximum delay. Used to set the delay buffer size upon activation. Cannot
       be modulated. Note that if you do not connect to this port before
       activation, it will default to 1 second. 
      \subsection{Delayorama (delayorama, 1402)\label{delayorama}\label{id1402}}
\subsubsection*{Random seed}
Controls the random numbers that will be used to stagger the delays and amplitudes if random is turned up on them. Changing this forces the random values to be recalulated.\subsubsection*{Input gain (dB)}
Controls the gain of the input signal in dB's.\subsubsection*{Feedback (\%)}
Controls the amount of output signal fed back into the input.\subsubsection*{Number of taps}
Controls the number of taps in the delay.\subsubsection*{First delay (s)}
The time of the first delay.\subsubsection*{Delay range (s)}
The time difference between the first and last delay.\subsubsection*{Delay change}
The scaling factor between one delay and the next.\subsubsection*{Delay random (\%)}
The random factor applied to the delay.\subsubsection*{Amplitude change}
The scaling factor between one amplitude and the next.\subsubsection*{Amplitude random (\%)}
The random factor applied to the amplitude.\subsubsection*{Dry/wet mix}
The level of delayed sound mixed into the output.\subsection{Diode Processor (diode, 1185)\label{diode}\label{id1185}}
CPU usage: 13 cycles/sample

Mangles the signal as if it had been passed through a diode rectifier network.You should probably follow this with a DC offset remover, unless you want the offset.\subsubsection*{Mode (0 for none, 1 for half wave, 2 for full wave)}
The mode parameter is continuously variable from thru to half-wave rectification to full-wave to silence.\subsection{Audio Divider (Suboctave Generator) (divider, 1186)\label{divider}\label{id1186}}
CPU usage: 55 cycles/sample

Reduces the period of the signal by the factor given, and makes it a square wave in the process. Has some amplitude tracking capability, but not really useful on complex signals.\subsubsection*{Denominator}
The factor the incoming frequency will be divided by.\subsection{DJ EQ (mono) (dj\_eq\_mono, 1907)\label{dj_eq_mono}\label{id1907}}
The design for this plugin is taken from the Allen \& Heath Xone 32
DJ mixer. It was suggested by Patrick Shirkey. Mono version requested by Adam King\subsubsection*{Lo gain (dB)}
Controls the gain of the low (100Hz) peak/dip band\subsubsection*{Mid gain (dB)}
Controls the gain of the mid (1000Hz) peak/dip band\subsubsection*{Hi gain (dB)}
Controls the gain of the high (10000Hz) shelf band\subsection{DJ EQ (dj\_eq, 1901)\label{dj_eq}\label{id1901}}
The design for this plugin is taken from the Allen \& Heath Xone 32
DJ mixer. It was suggested by Patrick Shirkey.\subsubsection*{Lo gain (dB)}
Controls the gain of the low (100Hz) peak/dip band\subsubsection*{Mid gain (dB)}
Controls the gain of the mid (1000Hz) peak/dip band\subsubsection*{Hi gain (dB)}
Controls the gain of the high (10000Hz) shelf band\subsection{DJ flanger (djFlanger, 1438)\label{djFlanger}\label{id1438}}
This is a flanger which is more or less typical of DJ mising desks. Requested by Patrick Shirkey.\subsubsection*{LFO sync}
When turned from off to on it resets the phase of the LFO back to the start of the cycle. Used to sync the LFO to the track.\subsubsection*{LFO period (s)}
The cycle period of the LFO in seconds.\subsubsection*{LFO depth (ms)}
The maximum delay the LFO will use to flange, in milliseconds.\subsubsection*{Feedback (\%)}
The amount of the delays output that is mixed back into the delay.\subsection{Dyson compressor (dysonCompress, 1403)\label{dysonCompress}\label{id1403}}
\subsubsection*{Peak limit (dB)}
Controls the desired limit of the output signal in dB's.\subsubsection*{Release time (s)}
Controls the time taken for the compressor to relax its gain control over the input signal.\subsubsection*{Fast compression ratio}
I have no clear idea what this controls.\subsubsection*{Compression ratio}
I have no clear idea what this controls.\subsection{Fractionally Addressed Delay Line (fadDelay, 1192)\label{fadDelay}\label{id1192}}
CPU usage: 397 cycles/sample

A fixed ring buffer delay implementation. Has different dynamics to a normal delay, more suitable for certain things.Changes in delay length are generally more pleasing, but delays >2s long have reduced sound quality.\subsubsection*{Delay (seconds)}
The neutral delay time is 2 seconds. Times above 2 seconds will have reduced quality and times below will have increased CPU usage.\subsection{Fast Lookahead limiter (fastLookaheadLimiter, 1913)\label{fastLookaheadLimiter}\label{id1913}}
This is a limiter with an attack time of 5ms. It adds just over 5ms of
lantecy to the input signal, but it guatantees that there will be no signals
over the limit, and tries to get the minimum ammount of distortion.\subsubsection*{Input gain (dB)}
Gain that is applied to the input stage. Can be used to trim gain to
bring it roughly under the limit or to push the signal against the limit.\subsubsection*{Limit (dB)}
The maximum output amplitude. Peaks over this level will be attenuated
as smoothly as possible to bring them as close as possible to this level.\subsubsection*{Release time (s)}
The time taken for the limiters attenuation to return to 0 dB's\subsubsection*{Attenuation (dB)}
The current attenuation of the signal coming out of the delay buffer.\subsection{Flanger (flanger, 1191)\label{flanger}\label{id1191}}
A digital flanger implementation. Uses a novel zero excursion, controlled bandwidth modulation function, which should make the modulation less repetitive and noticable.This effect is similar in character to a phaser (see section \ref{lfoPhaser}). The main difference is that a phaser sounds more regular and stable.\subsubsection*{Delay base (ms)}
This is the offset from the input time that the detune delay moves around.10 is probably a good starting value.\subsubsection*{Max slowdown (ms)}
This is the maximum delay that will be applied to the delayed signal, relative to the dry signal.\subsubsection*{LFO frequency (Hz)}
This is the core frequency that the 'LFO' will move at. The LFO isn't actually an oscillator, but it does vary periodically.\subsubsection*{Feedback}
Feedback applied from the output to the input, increases the depth of the effect, but makes it sound less like a real flanger.\subsection{FM Oscillator (fmOsc, 1415)\label{fmOsc}\label{id1415}}
\subsubsection*{Waveform (1=sin, 2=tri, 3=squ, 4=saw)}
The shape of the waveform.
	\begin{tabular}{|r|l|}
	\hline
	Value & Waveform \\
	\hline \hline
	1 & Sine \\
	2 & Triangle \\
	3 & Square \\
	4 & Saw \\
        \hline
	\end{tabular}
      \subsubsection*{Frequency (Hz)}
The frequency of the output (in Hertz).\subsection{Foldover distortion (foldover, 1213)\label{foldover}\label{id1213}}
CPU usage: 11 cycles/sample

Uses a sinwave approximation to simulate valve style foldover distortion.Probably should have a DC offset remover on the output, but it's not always necessary.\subsubsection*{Drive}
Controls the degree of distortion.\subsubsection*{Skew}
Controls the asymmetry of the waveform.\subsection{Fast overdrive (foverdrive, 1196)\label{foverdrive}\label{id1196}}
CPU usage: 21 cycles/sample

A simple overdrive. Compresses the extreme peaks to make a sound similar to an overdriven amplifier.\subsubsection*{Drive level}
Controls the point at which the signal starts to distort, and the degree of distortion.\subsection{Frequency tracker (freqTracker, 1418)\label{freqTracker}\label{id1418}}
\subsubsection*{Tracking speed}
This controls the level of damping applied to the output.High values will make the frequency output jump around, low values will make it a bit slow to respond.\subsection{Gate (gate, 1410)\label{gate}\label{id1410}}
The parameters are copied from the Drawmer DS-201, but I've never used one, so if someone out there has one, please tell me if it behaves differently.\subsubsection*{LF key filter (Hz)}
Controls the cutoff of the low frequency filter (highpass).\subsubsection*{HF key filter (Hz)}
Controls the cutoff of the high frequency filter (lowpass).\subsubsection*{Threshold (dB)}
Controls the level at which the gate will open.\subsubsection*{Attack (ms)}
Controls the time the gate will take to open fully.\subsubsection*{Hold (ms)}
Controls the minimum time the gate will stay open for.\subsubsection*{Decay (ms)}
Controls the time the gate will take to close fully.\subsubsection*{Range (dB)}
Controls the difference between the gate's open and closed state.\subsubsection*{Output select (-1 = key listen, 0 = gate, 1 = bypass)}
Controls output monitor. -1 is the output of the key filters (so you can check what is being gated on). 0 is the normal, gated output. 1 is bypass mode.\subsection{Gate (gate, 1921)\label{gate}\label{id1921}}
The parameters are copied from the Drawmer DS-201, but I've never used one, so if someone out there has one, please tell me if it behaves differently.\subsubsection*{LF key filter (Hz)}
Controls the cutoff of the low frequency filter (highpass).\subsubsection*{HF key filter (Hz)}
Controls the cutoff of the high frequency filter (lowpass).\subsubsection*{Key level (dB)}
Shows the current level of the key.\subsubsection*{Threshold (dB)}
Controls the level at which the gate will open.\subsubsection*{Attack (ms)}
Controls the time the gate will take to open fully.\subsubsection*{Hold (ms)}
Controls the minimum time the gate will stay open for.\subsubsection*{Decay (ms)}
Controls the time the gate will take to close fully.\subsubsection*{Range (dB)}
Controls the difference between the gate's open and closed state.\subsubsection*{Output select (-1 = key listen, 0 = gate, 1 = bypass)}
Controls output monitor. -1 is the output of the key filters (so you can check what is being gated on). 0 is the normal, gated output. 1 is bypass mode.\subsection{Stereo Gate (stereo\_gate, 1922)\label{stereo_gate}\label{id1922}}
Derived from Steve Harris' gate plugin\subsubsection*{LF key filter (Hz)}
Controls the cutoff of the low frequency filter (highpass).\subsubsection*{HF key filter (Hz)}
Controls the cutoff of the high frequency filter (lowpass).\subsubsection*{Key level (dB)}
Shows the current level of the key.\subsubsection*{Threshold (dB)}
Controls the level at which the gate will open.\subsubsection*{Attack (ms)}
Controls the time the gate will take to open fully.\subsubsection*{Hold (ms)}
Controls the minimum time the gate will stay open for.\subsubsection*{Decay (ms)}
Controls the time the gate will take to close fully.\subsubsection*{Range (dB)}
Controls the difference between the gate's open and closed state.\subsubsection*{Output select (-1 = key listen, 0 = gate, 1 = bypass)}
Controls output monitor. -1 is the output of the key filters (so you can check what is being gated on). 0 is the normal, gated output. 1 is bypass mode.\subsection{Giant flange (giantFlange, 1437)\label{giantFlange}\label{id1437}}
This is a fairly normal flanger but with excessivly long delay times.
Requested by Patrick Shirkey.To cut down the memory requirements the internal delay buffer noly has
15bits or resolution, so there is no headroom, if you feed in signals over 0dB
it will clip the output. There is code to soften the effect of the clipping,
but beware of it.\subsubsection*{Double delay}
doubles the length of the delays, this will reduce the sound quality.\subsubsection*{LFO frequency 1 (Hz)}
The delay of the first LFO in seconds.\subsubsection*{Delay 1 range (s)}
The delay range of the first LFO in seconds.\subsubsection*{LFO frequency 2 (Hz)}
The delay of the second LFO in seconds.\subsubsection*{Delay 2 range (s)}
The delay range of the second LFO in seconds.\subsubsection*{Feedback}
The amount of the delays output that is mixed back into the delay.\subsubsection*{Dry/Wet level}
The ammounts of the input and effect mixed to produce the output.\subsection{Gong model (gong, 1424)\label{gong}\label{id1424}}
A physical model of a metal gong.Based on Josep Comajuncosas' gong explorer, which was built in Sync Modular, it uses 8 linear waveguides with nonlinear filters to model the gong surface.\subsubsection*{Inner damping}
Controls the degree of damping in the centre of the gong.\subsubsection*{Outer damping}
Controls the degree of damping on the edge of the gong.\subsubsection*{Mic position}
Controls the vertical position of the "microphone", 0 is the centre and 1 is the edge.\subsubsection*{Inner size 1}
The size of the upper, inner waveguide.\subsubsection*{Inner stiffness 1 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Inner stiffness 1 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Inner size 2}
The size of the right, inner waveguide.\subsubsection*{Inner stiffness 2 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Inner stiffness 2 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Inner size 3}
The size of the lower, inner waveguide.\subsubsection*{Inner stiffness 3 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Inner stiffness 3 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Inner size 4}
The size of the left, inner waveguide.\subsubsection*{Inner stiffness 4 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Inner stiffness 4 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Outer size 1}
The size of the upper right, outer waveguide.\subsubsection*{Outer stiffness 1 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Outer stiffness 1 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Outer size 2}
The size of the lower right, outer waveguide.\subsubsection*{Outer stiffness 2 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Outer stiffness 2 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Outer size 3}
The size of the lower left, outer waveguide.\subsubsection*{Outer stiffness 3 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Outer stiffness 3 -}
The stiffness of the gong against deflections in the negative direction.\subsubsection*{Outer size 4}
The size of the upper left, outer waveguide.\subsubsection*{Outer stiffness 4 +}
The stiffness of the gong against deflections in the positive direction.\subsubsection*{Outer stiffness 4 -}
The stiffness of the gong against deflections in the negative direction.\subsection{Gong beater (gongBeater, 1439)\label{gongBeater}\label{id1439}}
A plugin to simulator the action of a beator on a gong surface, used to trigger the gong physical model.It is triggered by an impulse on the input, eg. from a mic or piezo placed near a solid surface, for an event sequencer.\subsubsection*{Impulse gain (dB)}
The gain of the input impulse mixed into the output, bringing this up allows you to make the outputted strike more impulsive, but may reduce the gongyness of the resulting output sound.\subsubsection*{Strike gain (dB)}
The gain of the simulated pressure wave mixed into the output, bringing this up allows you to make the outputted strike more pure. The final output level is also proprtional to the amplitude of the trigger.\subsubsection*{Strike duration (s)}
The duration of the pressure wave used to simulate the action of the beater on the gong surface. The logner the duration the more sonorus the resulting gong sound.\subsection{GSM simulator (gsm, 1215)\label{gsm}\label{id1215}}
CPU usage: 377 cycles/sample

Encodes and decodes a signal using the GSM voice compression system. Has the effect of making the signal sound like it is being sent over a European mobile phone network.\subsubsection*{Dry/wet mix}
Controls the dry/wet mix, 0 will give you the dry signal (but with the appropriate amount of delay), 1 will give you a totally wet signal.\subsubsection*{Number of passes}
The number of times the signal is sent through the encode/decode process. Increases the CPU consumption almost linearly, and it will become more peaky so less friendly to realtime processing.\subsubsection*{Error rate (bits/block)}
The number of simulated bits that get changed during the transmission process.I really wanted to reduce the bandwidth to get that {}"shouting down a drainpipe{}" effect, but I'm not sure how the reduced bandwidth is dealt with by real phones. I suspect it's heavily patented technology.\subsection{GVerb (gverb, 1216)\label{gverb}\label{id1216}}
A mono in, stereo out reverb implementation by Juhana Sadeharju (kouhia at nic.funet.fi). I ported it to LADSPA and did some testing.Please contact Juhana directly regarding any bugs you find.
      Paul Winkler recommends a good starting point for a "large hall" as follows:

	\begin{tabular}{|l|r|}
	\hline
	Parameter & Value \\
	\hline
	Roomsize & 200 \\
	Reverb time & 1.3 \\
	Damping & 0.4 \\
	Input bandwidth & 0.5 \\
	Dry signal level & 0 \\
	Early reflection level & -12 \\
	Tail level & 0 \\
	\hline
	\end{tabular}
    \subsubsection*{Roomsize (m)}
The size of the room, in meters. Excessivly large, and excessivly small values will make it sound a bit unrealistic.Values of around 30 sound good.\subsubsection*{Reverb time (s)}
Reverb decay time, in seconds. 7 is a good place to start.\subsubsection*{Damping}
This controls the high frequency damping (a lowpass filter), values near 1 will make it sound very bright, values near 0 will make it sound very dark.\subsubsection*{Input bandwidth}
This is like a damping control for the input, it has a similar effect to the damping control, but is subtly different.\subsubsection*{Dry signal level (dB)}
The amount of dry signal to be mixed with the reverberated signal.\subsubsection*{Early reflection level (dB)}
The quantity of early reflections (scatter reflections directly from the source). Think of Lexicons ambiance patches.\subsubsection*{Tail level (dB)}
The level of the classic reverb tail reflections.\subsection{Hard Limiter (hardLimiter, 1413)\label{hardLimiter}\label{id1413}}
Brick hard limiter with residue mixer.\subsubsection*{Wet level}
Output level for limited signal.\subsubsection*{Residue level}
Output level for residue signal.\subsection{Harmonic generator (harmonicGen, 1220)\label{harmonicGen}\label{id1220}}
CPU usage: 45 cycles/sample

\subsubsection{What does it do?}Allows you to add harmonics and remove the fundamental from any audio signal.\subsubsection{Known bugs}There is no bandwith limiting filter on the output, so it is easy to create excessively high frequency harmonics that could cause aliasing problems. In practive this doesn't seem to be a serious problem however.\subsubsection{Examples}There are many interesting effects you can achieve with sinewaves, one example is producing bandlimited squarewaves from sinewaves. To do this set the parameters to 1, 0, -0.3333, 0, 0.2, 0, -0.14285, 0, 0.11111.To get a triangle like signal use 1, 0, -0.3333, 0, -0.2, 0, -0.14285, 0, -0.11111.\subsubsection*{Fundamental magnitude}
The amplitude of the fundamental of the signal, reduce it to 0 to remove the base signal altogether, or -1 to phase invert it.\subsubsection*{2nd harmonic magnitude}
The 2nd harmonic, its frequency is twice the frequency of the harmonic.Even harmonics add a distorted feel to the sound, valve (tube) amplifiers introduce distortions at all the harmonics.\subsubsection*{3rd harmonic magnitude}
The 3rd harmonic, its frequency is three time the frequency of the fundamental.Transistor amplifiers only introduce distortion into the odd harmonics.\subsection{Hermes Filter (hermesFilter, 1200)\label{hermesFilter}\label{id1200}}
CPU usage: 1400 cycles/sample

This plugin is a simulation of a modern analogue synth called a Pro Tone, with some extra features bolted on, like a crossover. I tried to make it as comprehensive as possible, without requiring ludicrous amounts of CPU juice.N.B. as far as I know, noone has tried to use this (I certainly haven't), so it may be full of bugs and what not. The parameters are all undocumented, but there is a diagram of the routing on the website. Without a custom interface however it would be very hard to use.Historical note: the name is a bad pun, it comes from the name Hermes Trimegistus given to the Egyptian god Thoth by the greeks, it means Thrice Blessed, or something similar.\subsection{Glame Highpass Filter (highpass\_iir, 1890)\label{highpass_iir}\label{id1890}}
 IIR highpass filter based using chebishev coefficients. The filter allows you to tweak the number of stages used for
                filtering. Every stage adds two more poles, which leads to a steeper dropoff. More stages need more CPU power. This
                filter was ported from the glame multitrack editor to ladspa.
                \subsection{Hilbert transformer (hilbert, 1440)\label{hilbert}\label{id1440}}
A Hilbert Transformer phase shifts the input signal by 90degrees. It outputs the 90 degree phase shifted signal and the unshifted signal, both delayed by an equivlaent ammountThis plugin was written for a demo at the LAD Meet in 2003.\subsection{Impulse convolver (imp, 1199)\label{imp}\label{id1199}}

    This is a convolver for a set of fairly short impulses.

    The set of impulses has to be compiled in, they are:

    \begin{tabular}{|r|l|}
    \hline
    Id & Impulse \\
    \hline \hline
    1 & Unit impulse (identity) \\
    2 & My flat (light natural reverb) \\
    3 & Yamaha Marshall stack simulator \\
    4 & Fender 68 Vibrolux (SM57 on axis) \\
    5 & Fender 68 Vibrolux (SM57 off axis) \\
    6 & Fender 68 Vibrolux (Audio-technica AT4050) \\
    7 & Fender 68 Vibrolux (Neumann U87) \\
    8 & Fender Bassman (SM57 on axis) \\
    9 & Fender Bassman (SM57 off axis) \\
    10 & Fender Bassman (Audio-technica AT4050) \\
    11 & Fender Bassman (Neumann U87) \\
    12 & Fender Superchamp (SM57 on axis) \\
    13 & Fender Superchamp (SM57 off axis) \\
    14 & Fender Superchamp (Audio-technica AT4050) \\
    15 & Fender Superchamp (Neumann U87) \\
    16 & Marshall JCM2000 (SM57 on axis) \\
    17 & Marshall JCM2000 (SM57 off axis) \\
    18 & Marshall Plexi (SM57 on axis) \\
    19 & Marshall Plexi (SM57 off axis) \\
    20 & Matchless Chieftan (SM57 on axis) \\
    21 & Matchless Chieftan (SM57 off axis) \\
    \hline
    \end{tabular}

    The first three were quickly grabbed by me using jack\_impulse\_grabber, and the others we collected by someone else, but unfortunately I've lost his email address and can't find him on the web :(
    \subsubsection*{Impulse ID}
Selects the impulse to convolve with. New impulses have to be compiled in.\subsubsection*{High latency mode}
If you are running with blocks that are not whole powers of two long, or you are hearing distortion, try changing this to 1.\subsubsection*{Gain (dB)}
Controls the gain of the output signal in dB's.\subsection{Nonbandlimited single-sample impulses (Frequency: Control) (impulse\_fc, 1885)\label{impulse_fc}\label{id1885}}
Based on work by James McCartney in SuperCollider.\subsubsection*{Frequency (Hz)}

       Frequency for the impulses.
      \subsection{Inverter (inv, 1429)\label{inv}\label{id1429}}
A utility plugin that inverts the signal, also (wrongly) known as a 180 degree phase shift.\subsection{Karaoke (karaoke, 1409)\label{karaoke}\label{id1409}}
Attempts to strip the vocals from a stereo signal.\subsubsection*{Vocal volume (dB)}
Controls the attenuation of the vocal (centre channel) in dB's.The greater the attenuation the greater the loss of stereo field.\subsection{Artificial latency (artificialLatency, 1914)\label{artificialLatency}\label{id1914}}
Reports its  delay value as systemic latency. Does nothing else, *this is not a delay*.Can be used to correct for latency between channels.\subsection{L/C/R Delay (lcrDelay, 1436)\label{lcrDelay}\label{id1436}}
This is a left/centre/right delay with feedback, based on the one in the Korg Trinity. Requested by Marek Peteraj.\subsubsection*{L delay (ms)}
The delay of the left output in milliseconds.\subsubsection*{L level}
The level of the left output.\subsubsection*{C delay (ms)}
The delay of the centre output in milliseconds.\subsubsection*{C level}
The level of the centre output.\subsubsection*{R delay (ms)}
The delay of the right output in milliseconds.\subsubsection*{R level}
The level of the right output.\subsubsection*{Feedback}
The amount of the C delay output that is mixed back into the delay.\subsubsection*{High damp (\%)}
The damping of the high frequencies in the feedback path.\subsubsection*{Low damp (\%)}
The damping of the low frequencies in the feedback path.\subsubsection*{Spread}
The width of the stereo image.\subsubsection*{Dry/Wet level}
The ammounts of the input and effect mixed to produce the output.\subsection{Lookahead limiter (lookaheadLimiter, 1435)\label{lookaheadLimiter}\label{id1435}}
\subsubsection*{Limit (dB)}
The maximum output amplitude. Peaks over this level will be attenuated as smoothly as possible to bring them as close as possible to this level.\subsubsection*{Lookahead delay}
The delay used by the lookahead predictor. The longer the delay the smoother the limiting will be, but higher the latency.\subsubsection*{Attenuation (dB)}
The current attenuation of the signal coming out of the delay buffer.\subsection{Lookahead limiter (fixed latency) (lookaheadLimiterConst, 1906)\label{lookaheadLimiterConst}\label{id1906}}
A lookahead limiter - similar to the original Lookahead Limiter, but
with a constant latency of around 150ms and a reduacued maximum lookahead
time.\subsubsection*{Limit (dB)}
The maximum output amplitude. Peaks over this level will be attenuated as smoothly as possible to bring them as close as possible to this level.\subsubsection*{Lookahead time (s)}
The lookahead time used by the lookahead predictor. The longer the time the smoother the limiting will be, but will tend to make the changes in dynamic range more obvious.\subsubsection*{Attenuation (dB)}
The current limiting attenuation of the signal coming out of the delay
buffer.\subsection{Glame Lowpass Filter (lowpass\_iir, 1891)\label{lowpass_iir}\label{id1891}}
 IIR lowpass filter based using chebishev coefficients. The filter allows you to tweak the number of stages used for
                filtering. Every stage adds two more poles, which leads to a steeper dropoff. More stages need more CPU power. This
                filter was ported from the glame multitrack editor to ladspa.
                \subsection{LS Filter (lsFilter, 1908)\label{lsFilter}\label{id1908}}
This is a filter created for the LinkSampler project - its designed to closly follow the filter used in giga sampler.\subsubsection*{Filter type (0=LP, 1=BP, 2=HP)}
The type of the filter, 0 for low pass, 1 for band pass, 2 for high pass.\subsubsection*{Cutoff frequency (Hz)}
Controls the frequency at which the filter starts to effect the audio signal.eg. a lowpass filter with a cutoff frequency of 1000 Hz will only let frequencies below 100 Hz through.\subsubsection*{Resonance}
Creates a peak at the cutoff frequency, for the classic overdriven fileter sound. At high vlaues the peak at the cutoff will overwhelm the filtered signal.\subsection{Matrix: MS to Stereo (matrixMSSt, 1421)\label{matrixMSSt}\label{id1421}}
\subsubsection*{Width}
The width of the dematrixed stereo field. 1 will give you normal width, 0 will make it completely mono, < 1 will make it narrower and > 1 will make it wider.\subsection{Matrix Spatialiser (matrixSpatialiser, 1422)\label{matrixSpatialiser}\label{id1422}}

      A simple spatializer that lets you control the width of a stereo signal.

      We convert it into a MS (mid/side) signal, manipulate the gain coefficients
      with a constant-power panning function, and reconvert to left/right stereo.

      $mid = (i\_left + i\_right) / 2$

      $side = (i\_left - i\_right) / 2$

      $width = (-pi/4)..0..(pi/4)$

      $o\_left = mid * cos(width + pi/4)$
      $o\_right = side * sin(width + pi/4)$

      {\small shifted by pi/4, so that 0 is neutral.}
    \subsubsection*{Width}

         0 is neutral (unmodified signal)
	 + 128 is side only (=very wide)
	 - 128 is mid only (=mono)
       \subsection{Matrix: Stereo to MS (matrixStMS, 1420)\label{matrixStMS}\label{id1420}}
\subsection{Multiband EQ (mbeq, 1197)\label{mbeq}\label{id1197}}
This is a fairly typical multiband graphical equalizer. It's implemented using a FFT, so it takes quite a lot of CPU power, but should have less phase effects than an equivalent filter implementation.If the input signal is at too low a sample rate then the top bands will be ignored, the highest useful band will always be a high shelf.\subsection{Modulatable delay (modDelay, 1419)\label{modDelay}\label{id1419}}
A delay whose tap can be modulated at audio rate.Requested by Matthias Nagorni at LinuxTag 2002, in order to make a Leslie simulator.\subsection{Multivoice Chorus (multivoiceChorus, 1201)\label{multivoiceChorus}\label{id1201}}
This is an implementation of a Multivoice (as opposed to Multiscale) chorus algorithm. Its uses a novel, sinc based noise interpolation method to produce a subtle modulation law which makes it possible to get away with larger numbers of voices without the metallic, artificial sound common in chorus effects.\subsubsection*{Voice separation (ms)}
The individual voices can either be running at the same base delay (set this to zero) or staggered.Setting this to non-zero values can make the output sound richer, but will make it sound grainy with some type of signal.\subsubsection*{Detune (\%)}
The maximum amount that a voice will be detuned by. I recommend a value of 1, but you may be able to get away with higher values if the signal is less harmonic.\subsubsection*{LFO frequency (Hz)}
The frequency that the detune effect will be modulated at. A matter of taste, for most types of input lower will be more subtle.\subsubsection*{Output attenuation (dB)}
With large numbers of voices the output can become too high, so use this to trim the amplitude to a more helpful level.\subsection{Mag's Notch Filter (notch\_iir, 1894)\label{notch_iir}\label{id1894}}
 IIR notch filter based using chebishev coefficients. The filter allows you to tweak the number of stages used for
                filtering. Every stage adds two more poles, which leads to a steeper dropoff. More stages need more CPU power.
                \subsection{LFO Phaser (lfoPhaser, 1217)\label{lfoPhaser}\label{id1217}}
CPU usage: 197 cycles/sample

\subsection{4 x 4 pole allpass (fourByFourPole, 1218)\label{fourByFourPole}\label{id1218}}
CPU usage: 262 cycles/sample

\subsection{Auto phaser (autoPhaser, 1219)\label{autoPhaser}\label{id1219}}
CPU usage: 121 cycles/sample

\subsection{Pitch Scaler (pitchScale, 1193)\label{pitchScale}\label{id1193}}
CPU usage: 1323 cycles/sample

A pitch shifter implementation that scales the harmonics appropriately with the base frequencies. It is an implementation of Stephen M. Sprengler's pitch scaler design. It gives reasonable, general purpose results for small changes, but won't give Antares or Eventide anything to worry about.The FFT block size and oversampling has been kept at a minimum to keep the CPU usage low.\subsection{Higher Quality Pitch Scaler (pitchScaleHQ, 1194)\label{pitchScaleHQ}\label{id1194}}
A pitch shifter implementation that scales the harmonics appropriately with the base frequencies. It is an implementation of Stephen M. Sprengler's pitch scaler design. It gives reasonable, general purpose results for small changes, but won't give Antares or Eventide anything to worry about.The FFT block size and oversampling has been kept at reasonable levels to keep the CPU usage low, but it is smoother than the other Pitch Scaler.\subsubsection*{Pitch co-efficient}
The pitch scaling factor, a value of 2.0 will increase the pitch by one octave, etc.\subsection{Plate reverb (plate, 1423)\label{plate}\label{id1423}}
A physical model of a steel plate reverb.Based on Josep Comajuncosas' gong model, it uses 8 linear waveguides to model the plate.\subsubsection*{Reverb time}
Controls the RT60 time of the reverb. Actually controls the size of the plate. The mapping betwwen plate size and RT60 time is just a heuristic, so it's not very accurate.\subsubsection*{Damping}
Controls the degree that the surface of the plate is damped.\subsubsection*{Dry/wet mix}
Controls the balance between the dry and wet signals.\subsection{Pointer cast distortion (pointerCastDistortion, 1910)\label{pointerCastDistortion}\label{id1910}}
This distortion is created by treating the floating point repesentation
of the input signal as a 0.32 1's complement fixedpoint integer. Its very
unmusical but supprisingly recognisable. I'm not sure that its useful for
anything, but it can make interesting noises.\subsubsection*{Effect cutoff freq (Hz)}
Controls the frequencies that will be passed to the effect.\subsubsection*{Dry/wet mix}
Controls the ammount of distioning mixed into the output.\subsection{Rate shifter (rateShifter, 1417)\label{rateShifter}\label{id1417}}
Stretches or compresses the input with a ringbuffer.Because of the ringbuffer you will get stretches of silence or clicks when the read pointer passes the write pointer.The ringbuffer is about 2.7-3.0s long, depending on the sample rate.Versions with variable buffer sizes or declicking code would be easy (but a bit less efficient); shout if you would find them useful.\subsubsection*{Rate}
The rate of the output signal; eg. 2.0 will double the speed. Negative numbers will play backwards.Pretty much any value will work, but the ranges give what most people are going to want to use. You can get some interesting sounds with very high numbers (e.g. 2000).\subsection{Retro Flanger (retroFlange, 1208)\label{retroFlange}\label{id1208}}
A model of someone flanging the input.Models the tape saturation effects, and frequency smear of a manual flanger. The results are a slightly distorted, but more subtle flanger sound that you get from a normal digial flanger.\subsubsection*{Average stall (ms)}
The average time difference between the two tapes, per stall\subsubsection*{Flange frequency (Hz)}
The rate the tape is stalled at.\subsection{Reverse Delay (5s max) (revdelay, 1605)\label{revdelay}\label{id1605}}
 A reverse delay not really modelled on any existing one.  You'll want to set
         the Crossfade Samples parameter to something reasonably small (but more than 20)
         for most applications, but you can try larger values if you start getting clicking.
    \subsubsection*{Dry Level (dB)}
Controls the level of the dry input signal in dB's.\subsubsection*{Wet Level (dB)}
Controls the level of the delayed signal in dB's.\subsection{Ringmod with two inputs (ringmod\_2i1o, 1188)\label{ringmod_2i1o}\label{id1188}}
This is a simple 2 input ring modulator.It is important that the modulator input is bounded to (-1, +1), otherwise you will get rubbish on the output.\subsubsection*{Input}
This is the audio input.\subsubsection*{Modulator}
This is the modulator input.\subsection{Ringmod with LFO (ringmod\_1i1o1l, 1189)\label{ringmod_1i1o1l}\label{id1189}}
CPU usage: 102 cycles/sample

This is a simple ring modulator and LFO.\subsection{Barry's Satan Maximiser (satanMaximiser, 1408)\label{satanMaximiser}\label{id1408}}
Formerly Stupid Compressor. Thanks to Matt Yee-King for the name.Compresses signals with a stupidly short attack and decay, infinite
ratio and hard knee. Not really as a compressor, but good harsh (non-musical)
distortion.\subsubsection*{Decay time (samples)}
Controls the envelope decay time.\subsubsection*{Knee point (dB)}
Controls the knee roll-off point, ie. the point above which the compression kicks in. 0 will have no effect, -90 will remove virtually all dynamic range.\subsection{SC1 (sc1, 1425)\label{sc1}\label{id1425}}
An high quality, reasonably low CPU cost RMS compressor designed for musical work.It has controls for the compression point, compression ratio and knee softness.\subsubsection*{Attack time (ms)}
The attack time in milliseconds.\subsubsection*{Release time (ms)}
The release time in milliseconds.\subsubsection*{Threshold level (dB)}
The point at which the compressor will start to kick in.\subsubsection*{Ratio (1:n)}
The gain reduction ratio used when the signal level exceeds the threshold.\subsubsection*{Knee radius (dB)}
The distance from the threshold where the knee curve starts.\subsubsection*{Makeup gain (dB)}
Controls the gain of the makeup input signal in dB's.\subsection{SC2 (sc2, 1426)\label{sc2}\label{id1426}}
A compressor with sidechain. Based on the code for SC1.\subsubsection*{Attack time (ms)}
The attack time in milliseconds.\subsubsection*{Release time (ms)}
The release time in milliseconds.\subsubsection*{Threshold level (dB)}
The point at which the compressor will start to kick in.\subsubsection*{Ratio (1:n)}
The gain reduction ratio used when the signal level exceeds the threshold.\subsubsection*{Knee radius (dB)}
The distance from the threshold where the knee curve starts.\subsubsection*{Makeup gain (dB)}
Controls the gain of the makeup input signal in dB's.\subsection{SC3 (sc3, 1427)\label{sc3}\label{id1427}}
A stereo compressor with sidechain input. Based on the code for SC1.\subsubsection*{Attack time (ms)}
The attack time in milliseconds.\subsubsection*{Release time (ms)}
The release time in milliseconds.\subsubsection*{Threshold level (dB)}
The point at which the compressor will start to kick in.\subsubsection*{Ratio (1:n)}
The gain reduction ratio used when the signal level exceeds the threshold.\subsubsection*{Knee radius (dB)}
The distance from the threshold where the knee curve starts.\subsubsection*{Makeup gain (dB)}
Controls the gain of the makeup input signal in dB's.\subsubsection*{Chain balance}
Controls the chain signal used, 0 = Left+right in, 1 = Sidechain.\subsection{SC4 (sc4, 1882)\label{sc4}\label{id1882}}
A stereo compressor with variable envelope follower for RMS / peak behaviour. Based on the code for SC1.\subsubsection*{RMS/peak}
The blanace between the RMS and peak envelope followers.RMS is generally better for subtle, musical compression and peak is better for heavier, fast compression and percussion.\subsubsection*{Attack time (ms)}
The attack time in milliseconds.\subsubsection*{Release time (ms)}
The release time in milliseconds.\subsubsection*{Threshold level (dB)}
The point at which the compressor will start to kick in.\subsubsection*{Ratio (1:n)}
The gain reduction ratio used when the signal level exceeds the threshold.\subsubsection*{Knee radius (dB)}
The distance from the threshold where the knee curve starts.\subsubsection*{Makeup gain (dB)}
Controls the gain of the makeup input signal in dB's.\subsubsection*{Amplitude (dB)}
The level of the input signal, in decibels.\subsubsection*{Gain reduction (dB)}
The degree of gain reduction applied to the input signal, in decibels.\subsection{SE4 (se4, 1883)\label{se4}\label{id1883}}
A stereo expander with variable envelope follower for RMS / peak behaviour. Based on the code for SC1.\subsubsection*{RMS/peak}
The blanace between the RMS and peak envelope followers.\subsubsection*{Attack time (ms)}
The attack time in milliseconds.\subsubsection*{Release time (ms)}
The release time in milliseconds.\subsubsection*{Threshold level (dB)}
The point at which the expander will start to kick in.\subsubsection*{Ratio (1:n)}
The gain expansion ratio used when the signal level exceeds the threshold.\subsubsection*{Knee radius (dB)}
The distance from the threshold where the knee curve starts.\subsubsection*{Attenuation (dB)}
Controls the gain of the output signal in dB's. Used to correct for excessive amplitude caused by the extra dynamic range.\subsubsection*{Amplitude (dB)}
The level of the input signal, in decibels.\subsubsection*{Gain expansion (dB)}
The degree of gain expansion applied to the input signal, in decibels.\subsection{Wave shaper (shaper, 1187)\label{shaper}\label{id1187}}
CPU usage: 200 cycles/sample

This plugin reshapes the wave by an exponential function, inspiration was taken from the Nord module of the same name.If you are getting rubbish out then it's probably because the host isn't using the input/output range hints, which are very important for this plugin.\subsubsection*{Waveshape}
Positive values have an expanding effect, and negative values have a compressing effect.\subsection{Signal sifter (sifter, 1210)\label{sifter}\label{id1210}}
Sorts and mixes blocks of the input signal to give a "bumpy ramp" effect.Certain types of input will produce silence on the output (mostly ones with only low frequency components).This is a very odd effect, and doesn't really have any music applications, but can produce some interesting noises.\subsection{Sine + cosine oscillator (sinCos, 1881)\label{sinCos}\label{id1881}}
This is a simple oscillator that outputs sinewaves with a 90 degree phase shift between them.The current implementation is very inefficient, but I will improve it later.\subsubsection*{Base frequency (Hz)}
The base frequency of the output waves.\subsubsection*{Pitch offset}
The pitch offset of the output waves. Final oscillator frequency is $base + 2^pitch$.\subsection{Single band parametric (singlePara, 1203)\label{singlePara}\label{id1203}}
A single band of a parametric filter.\subsubsection*{Gain (dB)}
The attenuation/gain of the eq.\subsubsection*{Frequency (Hz)}
The centre frequency (ie. point of most/least attenuation).Beware of high values for Frequency and Bandwidth, if the high pitch (Frequency * 2$^{Bandwidth}$) goes over half the sample rate you will get aliasing.Note: if your host offers you a frequency range between 0 and 0.4 then it's not rendering the input parameter correctly, the input frequency will actually be that number multiplied by the sample rate (e.g. 44.1kHz).\subsubsection*{Bandwidth (octaves)}
The pitch difference from the centre before the attenuation has reached half the gain.\subsection{Sinus wavewrapper (sinusWavewrapper, 1198)\label{sinusWavewrapper}\label{id1198}}
Produces an unusual distortion effect, for a more amp like tone, see the valve saturation plugin (section \ref{valve}).\subsection{Smooth Decimator (smoothDecimate, 1414)\label{smoothDecimate}\label{id1414}}
\subsubsection*{Resample rate}
The rate at which the output signal will be resampled\subsubsection*{Smoothing}
The amount of smoothing on the output signal.\subsection{Mono to Stereo splitter (split, 1406)\label{split}\label{id1406}}
Takes a mono input signal, and outputs it to both left and right channel, thus "stereophizing" it.\subsection{Step Demuxer (stepMuxer, 1212)\label{stepMuxer}\label{id1212}}
Inputs up to 8 signals and switches between them on the output when then signal on the clock input goes high.This plugin is untested, and may not work.\subsection{Surround matrix encoder (surroundEncoder, 1401)\label{surroundEncoder}\label{id1401}}
I haven't been able to test this plugin, so there may be bugs. I have successfully tested the algorithm, but the implementation is suspect.\subsubsection{What does it do?}It allows you to encode four channels of sound into a stereo compatible stream that will be decoded by a Dolby\footnote{"Dolby" is a trademark of Dolby Laboratories.} Surround/Pro-Logic decoder into Left, Right, Center and Surround signals.This is not a proper implementation of Pro-logic, there is no Dolby B processing done on the surround channel, which would help, but would be using Dolby intellectual property.\subsubsection{Caveats}Obviously you can't wedge four channels into two without loss, so something has to give. You will probably notice significant cross-talk between the channels, but the decoder should do cross-talk correction, which will help a lot. A side effect of this is that it will make left-right panning unusual, the sources will dwell near the left and right speakers and zip across the centre channel. Because of this it is only really possible to master surround recordings through a pre-logic decoder. Do not attempt to use a conventional 5 point surround multichannel setup, it behaves very differently.In addition to this, output from this process is not entirly mono compatible, in mono output the L, C and R will be preserved as per a stereo recording (centre will be mixed equally), but the surround channel will be totally lost.Careful gain control on the output is required, as the level of the output will be greater than the L and R inputs, but different to the sum amplitude of the input signals.Widely panned reverb fed to the L and R channels will often leak into the S channel, if this is not desired (often it is) reduce the width of the stereo image.The encoding will survive some processes (eg. copying to CD, MD etc.), but may not survive conversion to MP3 or recoding to tape with azimuth errors.\subsubsection{Legalese}This is a four channel matrix encoder, it happens to be compatible with Dolby Surround Pro-Logic.This implementation does not convey a license nor imply a right under any patent, or any other industrial or intellectual property right of Dolby Laboratories.\subsubsection*{L}
Left channel input. Can be treated as per normal stereo recoding, except that the speaker should be at -22.5$^\circ$, rather than the normal stereo -30$^\circ$.\subsubsection*{R}
Right channel input. As per left channel.\subsubsection*{C}
Center channel input. Will be directly in front of the listener, stereo and mono compatible.\subsubsection*{S}
Surround channel. Should sound from the rear speakers, may also leak into the left and right. Has slight delay and bandwidth reduction (cut below 100 Hz, and above 7 KHz) for leakage and noise reduction and enhanced psychoacoustic effects.Not mono compatible.\subsection{State Variable Filter (svf, 1214)\label{svf}\label{id1214}}
An oversampled state variable filter with a few tweaksQuite a nice State Variable Filter, tends to be unstable with high resonance and Q values, but good when kept under control.\subsubsection*{Filter type (0=none, 1=LP, 2=HP, 3=BP, 4=BR, 5=AP)}
Select between no filtering, low-pass, high-pass, band-pass, band-reject and all-pass.\subsubsection*{Filter freq}
Cutoff frequency, beware of high values with low sample rates.\subsubsection*{Filter Q}
The filters Q, or cutoff slope.\subsubsection*{Filter resonance}
The filter's resonance, sort of separate from Q but very related (implemented with feedback).Do not use with the bandpass mode.\subsection{Tape Delay Simulation (tapeDelay, 1211)\label{tapeDelay}\label{id1211}}
CPU usage: 405 cycles/sample

Correctly models the tape motion and some of the smear effect, there is no simulation fo the head saturation yet, as I don't have a good model of it. When I get one I will add it.The way the tape accelerates and decelerates gives a nicer delay effect for many purposes.\subsection{Transient mangler (transient, 1206)\label{transient}\label{id1206}}
\subsection{Triple band parametric with shelves (triplePara, 1204)\label{triplePara}\label{id1204}}
Actually five bands of eq, but the first and last are locked to shelving filters.For details see the single band parametric (section \ref{singlePara}).\subsection{Valve saturation (valve, 1209)\label{valve}\label{id1209}}
CPU usage: 317 cycles/sample

A model of valve (tube) distortion, lacking some of the harmonics you would get in a real tube amp, but sounds good nonetheless.Taken from Ragnar Bendiksen's thesis: \url{http://www.notam02.no/~rbendiks/Diplom/Innhold.html}.\subsubsection*{Distortion level}
How hard the signal is driven against the limit of the amplifier.\subsubsection*{Distortion character}
The hardness of the sound, low for soft, high for hard.\subsection{Valve rectifier (valveRect, 1405)\label{valveRect}\label{id1405}}
\subsubsection*{Sag level}
The level of power supply sag that will be caused by attacks.\subsubsection*{Distortion}
How harsh the distortion caused by the sag will be.\subsection{VyNil (Vinyl Effect) (vynil, 1905)\label{vynil}\label{id1905}}
\subsubsection*{Year}
The date of the recording/playback equipment to be simulated.\subsubsection*{RPM}
The rotational speed of the platter.\subsubsection*{Surface warping}
The degree of variation in height of the record surface.\subsubsection*{Crackle}
The number of scratches on the record surface.\subsubsection*{Wear}
The ammount of wear on the grooves.\subsection{Wave Terrain Oscillator (waveTerrain, 1412)\label{waveTerrain}\label{id1412}}
A Wave Terrain oscillator, taken from Curtis Roads' example in {\em The Computer Music Tutorial}.Inputs x and y move the cursor around on a 2D landscape "wavetable" that is used to generate the output. The function used is  z = (x - y) * (x - 1) * (x + 1) * (y - 1) * (y + 1).\subsection{Crossfade (xfade, 1915)\label{xfade}\label{id1915}}
\subsubsection*{Crossfade}
Controls the degree to which the inputs are mixed into the output. A
value of -1 means that the output is just the A input, and a value of 1.0
means that it is just the B input.\subsection{Crossfade (4 outs) (xfade4, 1916)\label{xfade4}\label{id1916}}
\subsubsection*{Crossfade}
Controls the degree to which the inputs are mixed into the output. A
value of -1 means that the output is just the A input, and a value of 1.0
means that it is just the B input.\subsection{z-1 (zm1, 1428)\label{zm1}\label{id1428}}
A plugin that implements the $z^{-1}$ function (a single sample delay).\section{Licensing}
All this code is available under the GNU Public Licence, see the file {}''COPYING{}'' included with the source for more detials.

\end{document}