Steve Harris' LADSPA Plugin Docs
2002-12-06
steve@plugin.org.uk
Contents
1 Preamble
1.1 What plugins?
1.2 Where can I get them
2 The plugins
2.1 Aliasing (alias, 1407)
2.2 Simple amplifier (amp, 1181)
2.3 AM pitchshifter (amPitchshift, 1433)
2.4 Analogue Oscillator (analogueOsc, 1416)
2.5 Bode frequency shifter (bodeShifter, 1431)
2.6 Bode frequency shifter (CV) (bodeShifterCV, 1432)
2.7 Chebyshev distortion (chebstortion, 1430)
2.8 Comb Filter (comb, 1190)
2.9 Comb Splitter (combSplitter, 1411)
2.10 Crossover distortion (crossoverDist, 1404)
2.11 DC Offset Remover (dcRemove, 1207)
2.12 Debug Plugin (debug, 1184)
2.13 Decimator (decimator, 1202)
2.14 Declipper (declip, 1195)
2.15 Delayorama (delayorama, 1402)
2.16 Diode Processor (diode, 1185)
2.17 Audio Divider (Suboctave Generator) (divider, 1186)
2.18 Dyson compressor (dysonCompress, 1403)
2.19 Fractionally Addressed Delay Line (fadDelay, 1192)
2.20 Flanger (flanger, 1191)
2.21 FM Oscillator (fmOsc, 1415)
2.22 Foldover distortion (foldover, 1213)
2.23 Fast overdrive (foverdrive, 1196)
2.24 Frequency tracker (freqTracker, 1418)
2.25 Gate (gate, 1410)
2.26 Gong model (gong, 1424)
2.27 GSM simulator (gsm, 1215)
2.28 GVerb (gverb, 1216)
2.29 Hard Limiter (hardLimiter, 1413)
2.30 Harmonic generator (harmonicGen, 1220)
What does it do?
Known bugs
Examples
2.31 Hermes Filter (hermesFilter, 1200)
2.32 Impulse convolver (imp, 1199)
2.33 Inverter (inv, 1429)
2.34 Karaoke (karaoke, 1409)
2.35 Matrix: MS to Stereo (matrixMSSt, 1421)
2.36 Matrix Spatialiser (matrixSpatialiser, 1422)
2.37 Matrix: Stereo to MS (matrixStMS, 1420)
2.38 Multiband EQ (mbeq, 1197)
2.39 Modulatable delay (modDelay, 1419)
2.40 Multivoice Chorus (multivoiceChorus, 1201)
2.41 LFO Phaser (lfoPhaser, 1217)
2.42 4 x 4 pole allpass (fourByFourPole, 1218)
2.43 Auto phaser (autoPhaser, 1219)
2.44 Pitch Scaler (pitchScale, 1193)
2.45 Higher Quality Pitch Scaler (pitchScaleHQ, 1194)
2.46 Plate reverb (plate, 1423)
2.47 Rate shifter (rateShifter, 1417)
2.48 Retro Flanger (retroFlange, 1208)
2.49 Ringmod with two inputs (ringmod_2i1o, 1188)
2.50 Ringmod with LFO (ringmod_1i1o1l, 1189)
2.51 Barry's Satan Maximiser (satanMaximiser, 1408)
2.52 SC1 (sc1, 1425)
2.53 SC2 (sc2, 1426)
2.54 SC3 (sc3, 1427)
2.55 Wave shaper (shaper, 1187)
2.56 Signal sifter (sifter, 1210)
2.57 Single band parametric (singlePara, 1203)
2.58 Sinus wavewrapper (sinusWavewrapper, 1198)
2.59 Smooth Decimator (smoothDecimate, 1414)
2.60 Mono to Stereo splitter (split, 1406)
2.61 Step Demuxer (stepMuxer, 1212)
2.62 Surround matrix encoder (surroundEncoder, 1401)
What does it do?
Caveats
Legalese
2.63 State Variable Filter (svf, 1214)
2.64 Tape Delay Simulation (tapeDelay, 1211)
2.65 Transient mangler (transient, 1206)
2.66 Triple band parametric with shelves (triplePara, 1204)
2.67 Valve saturation (valve, 1209)
2.68 Valve rectifier (valveRect, 1405)
2.69 Wave Terrain Oscillator (waveTerrain, 1412)
2.70 z-1 (zm1, 1428)
3 Licensing
1 Preamble
1.1 What plugins?
This is the documentation for some plugins that I have written for the Linux Audio Developers Simple Plugin Architecture. It is a nice audio plugin architecture with a very easy learning curve.
1.2 Where can I get them
From the website at http://plugin.org.uk/.
2 The plugins
2.1 Aliasing (alias, 1407)
Simulates aliasing using nyquist frequency modulation. Produces wacky results if the blocks aren't even numbers of samples long.
Aliasing level
Controls the amount of simulated aliasing in the output.
2.2 Simple amplifier (amp, 1181)
CPU usage: 130 cycles/sample
Amps gain (dB)
Controls the gain of the input signal in dB's.
2.3 AM pitchshifter (amPitchshift, 1433)
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. Pitch shift
The multiple of the output pitch, eg. 2.0 will increase the pitch by one octave.
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.
2.4 Analogue Oscillator (analogueOsc, 1416)
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. Waveform (1=sin, 2=tri, 3=squ, 4=saw)
The basic shape of the waveform is selected using this control:
Value | Waveform |
|
1 | Sine |
2 | Triangle |
3 | Square |
4 | Saw |
Frequency (Hz)
The frequency of the output (Hz).
Warmth
The degree of softening that is applied to the generted waveform, reduces the number of harmonics in the output.
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.
2.5 Bode frequency shifter (bodeShifter, 1431)
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 http://www-users.cs.york.ac.uk/~fisher/mkfilter/.
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.
2.6 Bode frequency shifter (CV) (bodeShifterCV, 1432)
See the non CV version for information.This is more or less a copy of the Doepfer A126, http://www.doepfer.de/a126.htm.
Shift CV
Controls the frequency shift applied to the input signal, in KHz.
2.7 Chebyshev distortion (chebstortion, 1430)
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.
2.8 Comb Filter (comb, 1190)
CPU usage: 86 cycles/sample
Band separation (Hz)
Controls the distance between the filters peaks.
Feedback
Feedback level, increases the distinctive wooshy phaser sound.
2.9 Comb Splitter (combSplitter, 1411)
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. Band separation (Hz)
The distance between the frequency peaks.
Output 1
The sum output.
Output 2
The difference output.
2.10 Crossover distortion (crossoverDist, 1404)
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. Crossover amplitude
Controls the point at which the output signal becomes linear.
Smoothing
Controls degree of smoothing of the crossover point.
2.11 DC Offset Remover (dcRemove, 1207)
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.
2.12 Debug Plugin (debug, 1184)
Prints some stats about the input stream to stdout. Not intended for general use.
2.13 Decimator (decimator, 1202)
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.
Bit depth
The bit depth that the signal will be reduced to.
Sample rate (Hz)
The sample rate that the signal will be resampled at.
2.14 Declipper (declip, 1195)
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.
2.15 Delayorama (delayorama, 1402)
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. Input gain (dB)
Controls the gain of the input signal in dB's.
Feedback (%)
Controls the amount of output signal fed back into the input.
Number of taps
Controls the number of taps in the delay.
First delay (s)
The time of the first delay.
Delay range (s)
The time difference between the first and last delay.
Delay change
The scaling factor between one delay and the next.
Delay random (%)
The random factor applied to the delay.
Amplitude change
The scaling factor between one amplitude and the next.
Amplitude random (%)
The random factor applied to the amplitude.
Dry/wet mix
The level of delayed sound mixed into the output.
2.16 Diode Processor (diode, 1185)
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.
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.
2.17 Audio Divider (Suboctave Generator) (divider, 1186)
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.
Denominator
The factor the incoming frequency will be divided by.
2.18 Dyson compressor (dysonCompress, 1403)
Peak limit (dB)
Controls the desired limit of the output signal in dB's.
Release time (s)
Controls the time taken for the compressor to relax its gain control over the input signal.
Fast compression ratio
I have no clear idea what this controls.
Compression ratio
I have no clear idea what this controls.
2.19 Fractionally Addressed Delay Line (fadDelay, 1192)
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.
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.
2.20 Flanger (flanger, 1191)
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 2.41). The main difference is that a phaser sounds more regular and stable.
Delay base (ms)
This is the offset from the input time that the detune delay moves around.10 is probably a good starting value.
Max slowdown (ms)
This is the maximum delay that will be applied to the delayed signal, relative to the dry signal.
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.
Feedback
Feedback applied from the output to the input, increases the depth of the effect, but makes it sound less like a real flanger.
2.21 FM Oscillator (fmOsc, 1415)
Waveform (1=sin, 2=tri, 3=squ, 4=saw)
The shape of the waveform.
Value | Waveform |
|
1 | Sine |
2 | Triangle |
3 | Square |
4 | Saw |
Frequency (Hz)
The frequency of the output (in Hertz).
2.22 Foldover distortion (foldover, 1213)
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.
Drive
Controls the degree of distortion.
Skew
Controls the asymmetry of the waveform.
2.23 Fast overdrive (foverdrive, 1196)
CPU usage: 21 cycles/sample
A simple overdrive. Compresses the extreme peaks to make a sound similar to an overdriven amplifier.
Drive level
Controls the point at which the signal starts to distort, and the degree of distortion.
2.24 Frequency tracker (freqTracker, 1418)
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.
2.25 Gate (gate, 1410)
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 in what
ways it behaves differently. LF key filter (Hz)
Controls the cutoff of the low frequency filter (highpass).
HF key filter (Hz)
Controls the cutoff of the high frequency filter (lowpass).
Threshold (dB)
Controls the level at which the gate will open.
Attack (ms)
Controls the time the gate will take to open fully.
Hold (ms)
Controls the minimum time the gate will stay open for.
Decay (ms)
Controls the time the gate will take to close fully.
Range (dB)
Controls the difference between the gate's open and closed state.
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.
2.26 Gong model (gong, 1424)
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. Inner damping
Controls the degree of damping in the centre of the gong.
Outer damping
Controls the degree of damping on the edge of the gong.
Mic position
Controls the vertical position of the "microphone", 0 is the centre and 1 is the edge.
Inner size 1
The size of the upper, inner waveguide.
Inner stiffness 1 +
The stiffness of the gong against deflections in the positive direction.
Inner stiffness 1 -
The stiffness of the gong against deflections in the negative direction.
Inner size 2
The size of the right, inner waveguide.
Inner stiffness 2 +
The stiffness of the gong against deflections in the positive direction.
Inner stiffness 2 -
The stiffness of the gong against deflections in the negative direction.
Inner size 3
The size of the lower, inner waveguide.
Inner stiffness 3 +
The stiffness of the gong against deflections in the positive direction.
Inner stiffness 3 -
The stiffness of the gong against deflections in the negative direction.
Inner size 4
The size of the left, inner waveguide.
Inner stiffness 4 +
The stiffness of the gong against deflections in the positive direction.
Inner stiffness 4 -
The stiffness of the gong against deflections in the negative direction.
Outer size 1
The size of the upper right, outer waveguide.
Outer stiffness 1 +
The stiffness of the gong against deflections in the positive direction.
Outer stiffness 1 -
The stiffness of the gong against deflections in the negative direction.
Outer size 2
The size of the lower right, outer waveguide.
Outer stiffness 2 +
The stiffness of the gong against deflections in the positive direction.
Outer stiffness 2 -
The stiffness of the gong against deflections in the negative direction.
Outer size 3
The size of the lower left, outer waveguide.
Outer stiffness 3 +
The stiffness of the gong against deflections in the positive direction.
Outer stiffness 3 -
The stiffness of the gong against deflections in the negative direction.
Outer size 4
The size of the upper left, outer waveguide.
Outer stiffness 4 +
The stiffness of the gong against deflections in the positive direction.
Outer stiffness 4 -
The stiffness of the gong against deflections in the negative direction.
2.27 GSM simulator (gsm, 1215)
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.
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. 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. 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 ßhouting 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.
2.28 GVerb (gverb, 1216)
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:
Parameter | amp; Value |
Roomsize | amp; 200 |
Reverb time | amp; 1.3 |
Damping | amp; 0.4 |
Input bandwidth | amp; 0.5 |
Dry signal level | amp; 0 |
Early reflection level | amp; -12 |
Tail level | amp; 0 |
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. Reverb time (s)
Reverb decay time, in seconds. 7 is a good place to start.
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. Input bandwidth
This is like a damping control for the input, it has a similar effect to the damping control, but is subtly different.
Dry signal level (dB)
The amount of dry signal to be mixed with the reverberated signal.
Early reflection level (dB)
The quantity of early reflections (scatter reflections directly from the source). Think of Lexicons ambiance patches.
Tail level (dB)
The level of the classic reverb tail reflections.
2.29 Hard Limiter (hardLimiter, 1413)
Brick hard limiter with residue mixer.
Wet level
Output level for limited signal.
Residue level
Output level for residue signal.
2.30 Harmonic generator (harmonicGen, 1220)
CPU usage: 45 cycles/sample
What does it do?
Allows you to add harmonics and remove the fundamental from any audio signal.
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. 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. 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.
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. 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.
2.31 Hermes Filter (hermesFilter, 1200)
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.
2.32 Impulse convolver (imp, 1199)
This is a convolver for a set of fairly short impulses.
The set of impulses has to be compiled in, they are:
Id | Impulse |
|
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) |
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
:(
Impulse ID
Selects the impulse to convolve with. New impulses have to be compiled in.
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.
Gain (dB)
Controls the gain of the output signal in dB's.
2.33 Inverter (inv, 1429)
A utility plugin that inverts the signal, also (wrongly) known as a 180 degree phase shift.
2.34 Karaoke (karaoke, 1409)
Attempts to strip the vocals from a stereo signal.
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.
2.35 Matrix: MS to Stereo (matrixMSSt, 1421)
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.
2.36 Matrix Spatialiser (matrixSpatialiser, 1422)
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)
shifted by pi/4, so that 0 is neutral.
Width
0 is neutral (unmodified signal)
+ 128 is side only (=very wide)
- 128 is mid only (=mono)
2.37 Matrix: Stereo to MS (matrixStMS, 1420)
2.38 Multiband EQ (mbeq, 1197)
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.
2.39 Modulatable delay (modDelay, 1419)
A delay whose tap can be modulated at audio rate.Requested by
Matthias Nagorni at LinuxTag 2002, in order to make a Leslie simulator.
2.40 Multivoice Chorus (multivoiceChorus, 1201)
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. 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. 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. 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.
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.
2.41 LFO Phaser (lfoPhaser, 1217)
CPU usage: 197 cycles/sample
2.42 4 x 4 pole allpass (fourByFourPole, 1218)
CPU usage: 262 cycles/sample
2.43 Auto phaser (autoPhaser, 1219)
CPU usage: 121 cycles/sample
2.44 Pitch Scaler (pitchScale, 1193)
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.
2.45 Higher Quality Pitch Scaler (pitchScaleHQ, 1194)
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. Pitch co-efficient
The pitch scaling factor, a value of 2.0 will increase the pitch by one octave, etc.
2.46 Plate reverb (plate, 1423)
A physical model of a steel plate reverb.Based on Josep
Comajuncosas' gong model, it uses 8 linear waveguides to model the
plate. 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. Damping
Controls the degree that the surface of the plate is damped.
Dry/wet mix
Controls the balance between the dry and wet signals.
2.47 Rate shifter (rateShifter, 1417)
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. 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).
2.48 Retro Flanger (retroFlange, 1208)
A model of someone flanging the input.Models the tape
saturation effects, and frequency smear. The smear could probably be
done better. Average stall (ms)
The average time difference between the two tapes, per stall
Flange frequency (Hz)
The rate the tape is stalled at.
2.49 Ringmod with two inputs (ringmod_2i1o, 1188)
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. Input
This is the audio input.
Modulator
This is the modulator input.
2.50 Ringmod with LFO (ringmod_1i1o1l, 1189)
CPU usage: 102 cycles/sample
This is a simple ring modulator and LFO.
2.51 Barry's Satan Maximiser (satanMaximiser, 1408)
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 distortion. Decay time (samples)
Controls the envelope decay time.
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.
2.52 SC1 (sc1, 1425)
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. Attack time (ms)
The attack time in milliseconds.
Release time (ms)
The release time in milliseconds.
Threshold level (dB)
The point at which the compressor will start to kick in.
Ratio (1:n)
The gain reduction ratio used when the signal level exceeds the threshold.
Knee radius (dB)
The distance from the threshold where the knee curve starts.
Makeup gain (dB)
Controls the gain of the makeup input signal in dB's.
2.53 SC2 (sc2, 1426)
A compressor with sidechain. Based on the code for SC1.
Attack time (ms)
The attack time in milliseconds.
Release time (ms)
The release time in milliseconds.
Threshold level (dB)
The point at which the compressor will start to kick in.
Ratio (1:n)
The gain reduction ratio used when the signal level exceeds the threshold.
Knee radius (dB)
The distance from the threshold where the knee curve starts.
Makeup gain (dB)
Controls the gain of the makeup input signal in dB's.
2.54 SC3 (sc3, 1427)
A stereo compressor with sidechain input. Based on the code for SC1.
Attack time (ms)
The attack time in milliseconds.
Release time (ms)
The release time in milliseconds.
Threshold level (dB)
The point at which the compressor will start to kick in.
Ratio (1:n)
The gain reduction ratio used when the signal level exceeds the threshold.
Knee radius (dB)
The distance from the threshold where the knee curve starts.
Makeup gain (dB)
Controls the gain of the makeup input signal in dB's.
Chain balance
Controls the chain signal used, 0 = Left+right in, 1 = Sidechain.
2.55 Wave shaper (shaper, 1187)
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.
Waveshape
Positive values have an expanding effect, and negative values have a compressing effect.
2.56 Signal sifter (sifter, 1210)
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.
2.57 Single band parametric (singlePara, 1203)
A single band of a parametric filter.
Gain (dB)
The attenuation/gain of the eq.
Frequency (Hz)
The centre frequency (ie. point of most/least
attenuation).Beware of high values for Frequency and Bandwidth, if the
high pitch (Frequency * 2Bandwidth)
goes over half the sample rate you will get very nasty 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). Bandwidth (octaves)
The pitch difference from the centre before the attenuation has reached half the gain.
2.58 Sinus wavewrapper (sinusWavewrapper, 1198)
Produces an unusual distortion effect, for a more amp like tone, see the valve saturation plugin (section 2.67).
2.59 Smooth Decimator (smoothDecimate, 1414)
Resample rate
The rate at which the output signal will be resampled
Smoothing
The amount of smoothing on the output signal.
2.60 Mono to Stereo splitter (split, 1406)
Takes a mono input signal, and outputs it to both left and right channel, thus ßtereophizing" it.
2.61 Step Demuxer (stepMuxer, 1212)
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.
2.62 Surround matrix encoder (surroundEncoder, 1401)
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. What does it do?
It allows you to encode four channels of sound into a stereo compatible stream that will be decoded by a Dolby1
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. 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. 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. L
Left channel input. Can be treated as per normal stereo recoding, except that the speaker should be at -22.5°, rather than the normal stereo -30°.
R
Right channel input. As per left channel.
C
Center channel input. Will be directly in front of the listener, stereo and mono compatible.
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.
2.63 State Variable Filter (svf, 1214)
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. 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.
Filter freq
Cutoff frequency, beware of high values with low sample rates.
Filter Q
The filters Q, or cutoff slope.
Filter resonance
The filter's resonance, sort of separate from Q but very related (implemented with feedback).Do not use with the bandpass mode.
2.64 Tape Delay Simulation (tapeDelay, 1211)
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.
2.65 Transient mangler (transient, 1206)
2.66 Triple band parametric with shelves (triplePara, 1204)
Actually five bands of eq, but the first and last are locked
to shelving filters.For details see the single band parametric (section 2.57).
2.67 Valve saturation (valve, 1209)
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: http://www.notam02.no/~rbendiks/Diplom/Innhold.html.
Distortion level
How hard the signal is driven against the limit of the amplifier.
Distortion character
The hardness of the sound, low for soft, high for hard.
2.68 Valve rectifier (valveRect, 1405)
Sag level
The level of power supply sag that will be caused by attacks.
Distortion
How harsh the distortion caused by the sag will be.
2.69 Wave Terrain Oscillator (waveTerrain, 1412)
A Wave Terrain oscillator, taken from Curtis Roads' example in 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).
2.70 z-1 (zm1, 1428)
A plugin that implements the z-1 function (a single sample delay).
3 Licensing
All this code is available under the GNU Public Licence, see the file ''COPYING'' included with the source for more detials.
Footnotes:
1 "Dolby" is a trademark of Dolby Laboratories.
File translated from TEX by TTH, version 2.51.
On 6 Dec 2002, 18:18.