Files
lmms/plugins/LadspaEffect/caps/caps.html

1716 lines
53 KiB
HTML

<html>
<head>
<title>The CAPS Audio Plugin Suite</title>
<style type=text/css>
body, table {
font-family: Helvetica, Tahoma, Geneva, sans-serif;
}
h1, h2 {
padding-top: 2pt;
padding-bottom: 2pt;
border-bottom: solid 1px black;
sborder-top: solid 1px black;
sbackground-color: #eeeeee;
stext-align: center;
}
h3 {
width: 70%;
border-bottom: solid 1px #cccccc;
margin-top: 24pt;
}
h4 {
width: 70%;
border-bottom: dotted 1px #dddddd;
}
a {
font-weight: normal;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:visited {
color: #7f7f00;
}
a:link {
color: #1d30e7;
}
a.quitte,a.quitte:visited {
text-decoration: none;
}
a.foot {
color: #7588ff;
}
td.sm {
font-size: 90%;
}
td.q {
padding-left: 20px;
padding-right: 20px;
padding-top: 16px;
padding-bottom: 16px;
}
td.q a, td.q a:visited {
text-decoration: none;
color: #ffffff;
}
td.q a.quitte {
font-size: 16pt;
}
#gray {background-color: #dddddd;}
#c0 {background-color: #5da0d7;}
#c1 {background-color: #efaa59;}
#c2 {background-color: #efcb30;}
#c3 {background-color: #84a68c;}
#c4 {background-color: #a80d1b;}
#c5 {background-color: #7a6fa0;} // originally night magenta
sup {
font-size: 30%;
}
div.foot {
padding-top: 2pt;
padding-bottom: 2pt;
border-top: solid 1px black;
border-bottom: solid 1px black;
background-color: #eeeeee;
}
p.attrib {
font-size: 90%;
text-align: right;
}
#foot {
font-size: 90%;
}
#bg {
//padding-top: 1pt;
//padding-bottom: 1pt;
font-size: 120%;
}
#warn {
color: #ff0000;
}
h3 {margin-top: 18em;}
h4 {font-size: 11pt; padding-top: 2em;}
h5 {font-size: medium; margin-bottom: .5em;}
p {max-width: 42em;}
body {margin: 18px;}
p#foot {border-top: solid 1px black;}
h3 {font-size: 14pt; border-bottom: solid 1px black;}
h4 {color: #aa0000; border-bottom: solid 1px black;}
h4 {margin-top: 21px;margin-bottom: 0px;}
ul {max-width: 36em; margin-bottom: 1em;}
ul#plugs {margin-top: 1em; font-size:80%;}
li.bg {font-size: large;}
li {margin-bottom: .4em;}
table {padding-bottom:1em; border-bottom: solid 1px black;margin-bottom: 12px;} </style>
</head>
<body>
<center>
<div align=left>
<h2>The CAPS Audio Plugin Suite</h2> <table border=0 width=100% cellpadding=0 cellspacing=0>
<tr>
<td align=left width=20%>
<b>Release 0.4.5</b>
</td>
<td rowspan=2 align=center>
<a href=http://quitte.de/dsp/caps.html title="Yes, this page, only guaranteed fresh!">http://quitte.de/dsp/caps.html</a>
</td>
<td align=right width=20%>
<b>Tim Goetze</b>
</td>
</tr>
<tr>
<td align=left>
March 26, 2011 </td>
<td align=right>
<a href=mailto:tim@quitte.de?subject=CAPS>tim@quitte.de</a>
</td>
</tr>
<tr>
</tr>
</table>
<ul>
<li class=bg><a href=#FrontMatter>Front Matter</a></li>
<li class=bg><a href=#Download>Download</a></li>
<li class=bg><a href=#Installation>Installation</a></li>
<li class=bg><a href=#WhatYouShouldKnow>What You Should Know</a></li>
<li class=bg><a href=#GimmeASetupAlready>Give me a Guitar Setup Already!</a></li>
<li class=bg><a href=#ThePlugins>The Plugins</a>
<ul id=plugs type=square>
<li><a href=#Generic>Generic</a></li><ul type=circle>
<li><a href=#Eq>Eq</a> &ndash; classic ten-band equalizer</li>
<li><a href=#Eq2x2>Eq2x2</a> &ndash; stereo version of Eq</li>
<li><a href=#Compress>Compress</a> &ndash; a compressor suitable for single instruments</li>
<li><a href=#Pan>Pan</a> &ndash; pan and optional width</li>
<li><a href=#Narrower>Narrower</a> &ndash; stereo image width reduction, useful for headphone listening</li>
</ul>
<li><a href=#Emulation>Emulation</a></li><ul type=circle>
<li><a href=#PreampIII>PreampIII</a> &ndash; simplistic tube preamp circuit</li>
<li><a href=#PreampIV>PreampIV</a> &ndash; simplistic tube preamp with tone controls</li>
<li><a href=#ToneStack>ToneStack</a> &ndash; tube preamp tone controls</li>
<li><a href=#ToneStackLT>ToneStackLT</a> &ndash; tube preamp tone controls 44.1</li>
<li><a href=#AmpIII>AmpIII</a> &ndash; tube amp</li>
<li><a href=#AmpIV>AmpIV</a> &ndash; tube amp with tone controls</li>
<li><a href=#AmpV>AmpV</a> &ndash; tube amp with power supply modulation</li>
<li><a href=#AmpVTS>AmpVTS</a> &ndash; tube amp with a ToneStack circuit</li>
<li><a href=#CabinetI>CabinetI</a> &ndash; emulation of classical speaker cabinets</li>
<li><a href=#CabinetII>CabinetII</a> &ndash; refined version of CabinetI</li>
<li><a href=#Clip>Clip</a> &ndash; hard 'transistor' clipping</li>
</ul>
<li><a href=#Effects>Effects</a></li><ul type=circle>
<li><a href=#ChorusI>ChorusI</a> &ndash; a versatile classic</li>
<li><a href=#StereoChorusI>StereoChorusI</a> &ndash; when one channel is not enough</li>
<li><a href=#ChorusII>ChorusII</a> &ndash; variant with fractal modulation</li>
<li><a href=#StereoChorusII>StereoChorusII</a> &ndash; stereo variant with fractal modulation</li>
<li><a href=#PhaserI>PhaserI</a> &ndash; another classic</li>
<li><a href=#PhaserII>PhaserII</a> &ndash; variant with fractal modulation</li>
<li><a href=#SweepVFI>SweepVFI</a> &ndash; resonant filter modulated by a fractal</li>
<li><a href=#SweepVFII>SweepVFII</a> &ndash; resonant filter modulated by a fractal</li>
<li><a href=#AutoWah>AutoWah</a> &ndash; resonant envelope-following filter</li>
<li><a href=#Scape>Scape</a> &ndash; stereo delay plus resonant filters, fractal modulation</li>
</ul>
<li><a href=#Generators>Generators</a></li><ul type=circle>
<li><a href=#VCOs>VCOs</a> &ndash; sawtooth / triangle / square wave generator</li>
<li><a href=#VCOd>VCOd</a> &ndash; double VCO with detune and hard sync</li>
<li><a href=#CEO>CEO</a> &ndash; chief executive oscillator</li>
<li><a href=#Sin>Sin</a> &ndash; testing and tuning helper</li>
<li><a href=#White>White</a> &ndash; white noisz</li>
<li><a href=#Lorenz>Lorenz</a> &ndash; a fractal singing in a broken voice</li>
<li><a href=#Roessler>Roessler</a> &ndash; a roaring fractal</li>
</ul>
<li><a href=#Reverb>Reverb</a></li><ul type=circle>
<li><a href=#JVRev>JVRev</a> &ndash; a digital reverb technology classic</li>
<li><a href=#Plate>Plate</a> &ndash; versatile refined digital reverb</li>
<li><a href=#Plate2x2>Plate2x2</a> &ndash; 2-in, 2-out version of Plate</li>
</ul>
<li><a href=#Others>Others</a></li><ul type=circle>
<li><a href=#Click>Click</a> &ndash; practice, practice, practice!</li>
<li><a href=#Dirac>Dirac</a> &ndash; one-sample impulse generator</li>
<li><a href=#HRTF>HRTF</a> &ndash; head-related transfer function</li>
</ul>
</ul></li>
<li class=bg><a href=#Appendix>Appendix</a></li>
<ul type=square>
<li><a href=#DataSheet>Plugin Data Sheets</a></li>
<li><a href=#Changelog>Changelog</a></li>
</ul>
</ul>
&nbsp;<br>
<a name=FrontMatter><h3>Front Matter</h3></a>
<p>
<b>CAPS</b>, the C* Audio Plugin Suite, is a collection of
refined LADSPA audio plugins capable of (and mainly
intended for) realtime operation. The suite includes DSP units emulating
instrument amplifiers, stomp-box classics,
versatile 'virtual analogue' oscillators,
fractal oscillation, reverb, equalization and more.
</p>
<p>
My favourite user's quote:
<i>&ldquo;... if your amps beat your plugins, they
are *very good* amps.. ;-)&rdquo;</i> &ndash; Thanks, Pete!
</p>
<p>
Most of the suite is of my own invention,
while some plugins are rewrites of
existing designs, included for
excellence or interest.
Inspiring code was authored by
(in no particular order):
Andrew Simper, Perry Cook, Gary Scavone,
Steve Harris, Richard Dobson, Bram de Jong,
Robert Bristow-Johnson and others.
</p>
<p>
The <a href=#ToneStack>ToneStack</a> plugins and the
tone controls of the <a href=#AmpVTS>AmpVTS</a> unit
have been designed and implemented by
<a href=http://ccrma.stanford.edu/~dtyeh/>David Yeh</a> at
<a href=http://ccrma.stanford.edu/>CCRMA</a>.
</p>
<p>
Invaluable suggestions, bug hunting and fixing and
numerous patient reminders
of the sorry state of affairs
have been graciously
provided by (among others and in no particular order)
Sampo Savolainen, Damon Chaplin, Paul Winkler and Niclas Wretstr&ouml;m.
</p>
<p>
All of CAPS is <a href=COPYING>free software</a> and distributed
in source code.
</p>
&nbsp;<br>
<h5>* What's with the C?</h5>
<p>
So what does the <i>C</i> in the name stand for? Honestly, I don't know.
</p>
<p>
<i>Complete?</i> Not yet. <br>
<i>C</i> as in the programming language? The source is C++.<br>
<i>Crap?</i> Heaven forbid!<br>
<i>Cute?</i> Why not ...<br>
<i>Common?</i> Not bad either. <br>
<i>C,</i> the latin numeral for one-hundred? Some more to go, but I
like the idea.
</p>
<p>
I've got it! <i>C</i> as in <i>The <u>C</u>aps Audio Plugin Suite!</i>
A classic.
</p>
&nbsp;<br>
<a name=Download><h3>Download</h3></a>
<p>
CAPS is distributed under the
<a href=COPYING>GNU General Public License</a>. Other licensing terms
can be arranged if you wish, please feel free to contact me.
</p>
<h5>No Guarantee</h5>
<p>
While I have bred all the plugins in the suite with the greatest care,
there is no guarantee
that they will all retain perfect manners under all possible
circumstances. Take, for example, the <a href=#Lorenz>Lorenz</a>
plugin, which models
a fractal system. How am I to guarantee its
output will never go out of range, if people far more knowledgeable
about this fractal than me assert its unpredictable behaviour?
</p>
<p style="border:dotted 1px #777777;padding:3pt;">
This collection is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
</p>
<p>
Download the latest release
<a href=caps_0.4.5.tar.gz>here, it is caps_0.4.5.tar.gz (772 kB)</a>.
</p>
&nbsp;<br>
<a name=Installation><h3>Installation</h3></a>
<p>
Provided you run Linux,
installation is simply:
</p>
<pre align=left>
$ tar xvfz caps_0.4.5.tar.gz&nbsp;
$ cd caps-0.4.5&nbsp;
$ ./configure.py
$ make
$ su
# make install</pre>
<p>
The <tt>configure.py</tt> step is optional on Linux but recommended
for optimum performance.
</p>
<p>
You should now be able use the plugins from the collection
in any LADSPA-aware host program,
like the wonderful <a href=http://pure-data.org>pd</a> with
the <code>plugin~</code>
<a href=http://pure-data.sourceforge.net/>external</a>,
the inimitable <a href=http://jack-rack.sourceforge.net/>jack-rack</a>,
the impressive <a href=http://ardour.org>ardour</a>,
the versatile <a href=http://eca.cx>ecasound</a>,
the classic <a href=http://www-ccrma.stanford.edu/software/snd/>snd</a>,
and numerous other applications large and small.
</p>
<p>
You don't run Linux? Why not
<a href=http://www.debian.org>downgrade now</a>?
</p>
<h5>OSX</h5>
<p>
<tt>configure.py</tt> should detect an OSX build and prepare the
relevant flags for Apple's different-thinking <tt>ld</tt>
implementation.
Mind you, this is untested by me and
not guaranteed to actually work. If it does, please
tell me. Thanks!
</p>
<h5>Troubleshooting</h5>
<p>
With no external dependencies, compiling CAPS
should rarely fail on a Linux box. If it
does on your machine, please send the output of the <tt>make</tt>
command so we can try and fix the problem.
</p>
<h5>Bugs</h5>
<p>
If any of the plugins in the suite do not work with your host program
of choice, or don't work as advertised, please
<a href=mailto:tim@quitte.de?subject=caps-bug>send a bug report</a>.
</p>
&nbsp;<br>
<a name=WhatYouShouldKnow><h3>What You Should Know</h3></a>
<h5>Parameter Smoothing</h5>
<p>
To prevent zipper noise, many plugin control inputs are subject
to internal parameter smoothing where the effort seems justified.
This is achieved by sweeping parameters internal to the plugin.
The duration of this sweep will vary with the audio system setup.
For realtime use and most known LADSPA hosts it is equal to the audio
block size (in <tt>jackd</tt> terms: the "frames per period").
</p>
<h5>Sample Rate</h5>
<p>
The CAPS plugins are designed to be used at
sample rates of 44.1 kHz or higher. Operation at lower sample rates
is generally possible but untested.
Especially the resonant filters in the
<a href=#SweepVFI>SweepVFI</a>,
<a href=#SweepVFII>SweepVFII</a>,
<a href=#AutoWah>AutoWah</a> and
<a href=#Scape>Scape</a> plugins can self-oscillate out of
bounds at low sample rates and high filter cutoff frequency settings.
It is a wise idea to do some silent test runs testing
the entire parameter range to see if
the plugin works as expected before relying on its operation at
sample rates below 44.1 kHz.
</p>
<p>
In the plugin listing, for every unit you'll see a note like
<em>All sample rates</em>. This means that the plugin should sound the
same no matter what sample rate it is run at. If it doesn't, holler at
me.
A note like <em>44.1 kHz only</em> means you
can still run the plugin at other sample rates without having to fear
for your life, but the sonic experience may differ from what is
advertised.
</p>
<p>
Usage at sample rates of 176 kHz or higher may cause problems with some
plugins. We recommend not exceeding 100 kHz for all applications.
</p>
<h5>Realtime Use</h5>
<p>
All of the plugins in the suite are hard-realtime capable. In some
cases, parameter smoothing will take a marginal number of
extra CPU cycles when a control value is changed, as well as when the
plugin is starting or resuming operation.
</p>
<h5>In-Place and Mixing/Replacing Operation</h5>
<p>
All of the plugins in the suite support any combination of in-place,
mixing and replacing operation.
</p>
<h5>Denormals</h5>
<p>
Denormal numbers
(<a href=http://en.wikipedia.org/wiki/Denormal>wikipedia</a>)
are the bane of DSP on common computer systems because they seriously
slow down computing speed. In CAPS, various approaches are employed to
prevent this problem from arising. Most of the plugins add an inaudible
signal (-266 dB) at the Nyquist
(<a href=http://en.wikipedia.org/wiki/Nyquist_frequency>wikipedia</a>)
or at a fixed lower frequency which keeps calculations out of the critical
zone around zero. In addition, if you run <tt>configure.py</tt> prior
to building CAPS, SSE extensions will be employed to aid in this task if
they are available on the build system.
</p>
<h5>I'd love to hear from you. Really!</h5>
<p>
You like something about CAPS? Don't like it?
Either way, tell me &ndash; otherwise
I'll never be able to improve it!
</p>
<h5>Known Bugs and Limitations</h5>
<ul>
<li>
CPU usage figures, if given, may be inaccurate or even off by an
order of magnitude.
</li>
<li>
8x oversampling consumes a lot of CPU power.
</li>
<li>
Since version 0.4.0, CAPS cannot be compiled with gcc 2.95 any more.
</li>
<li>
Processing blocks larger than 2<sup>31</sup> - 1 aren't supported.
</li>
<li>
Old <tt>jack-rack</tt> host versions have some crazy ideas about the
default control parameters of the CAPS plugins &ndash; they're all
over the place.
</li>
<li>
Sample rates in excess of 100 kHz may cause some plugins to develop
problems.
</li>
<li>
The <a href=#White>White</a> plugin
actually produces a slightly purplish signal despite the rather
boastful claims of signal purity made elsewhere.
</li>
</ul>
&nbsp;<br>
<a name=GimmeASetupAlready><h3>Give me a Guitar Setup Already!</h3></a>
<p>
Start your guitar signal chain with an
<a href=#AmpVTS>AmpVTS</a>, followed by a
<a href=#CabinetII>CabinetII</a> and finish with a
<a href=#Plate>Plate</a> reverb.
Season to taste, done.
</p><p>
Additional effects like
<a href=#ChorusII>chorus</a>,
<a href=#PhaserII>phaser</a> or
<a href=#AutoWah>auto wah</a> would drop in right before or right after
the Cabinet (I usually prefer the latter).
</p>
&nbsp;<br>
<a name=ThePlugins><h3>The Plugins</h3></a>
<a name=Generic><h3>Generic</h3></a>
<a name=Eq><h4>Eq</h4></a>
<p>
A ten-band, octave-spread equalizer. Based on a traditional analogue
design and about as faithful as digital IIR filtering allows.
Individual band filters are <nobr>6 dB / octave</nobr>.
</p>
<p>
<em>All sample rates (bands beyond Nyquist are disabled).</em>
</p>
<ul>
<li><b>31 Hz, 63 Hz, 125 Hz, 250 Hz, 500 Hz, 1 kHz, 2 kHz, 4 kHz, 8 kHz, 16 kHz</b></li>
control the gain in dB for the respective band.</p></li>
</ul>
<a name=Eq2x2><h4>Eq2x2</h4></a>
<p>
By popular demand, a stereo-in, stereo-out version of the
<a href=#Eq>Eq unit</a>.
Same controls as Eq.
</p>
<a name=Compress><h4>Compress</h4></a>
<p>
A mono compressor, based on the SC1 design by
<a href=http://plugin.org.uk>Steve Harris</a> (in other words, a ripoff)
with minor tweaks. Be
careful with the gain and ratio controls, the output signal can easily
exceed 0 dB.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>gain (dB)</b><p>
controls the maximum gain applied by the unit.</p></li>
<li><b>ratio (1:n)</b><p>
controls the overall gain.</p></li>
<li><b>attack (s)</b><p>
controls the speed at which the circuit acts on a rising input signal
envelope.</p></li>
<li><b>release (s)</b><p>
controls the speed at which the circuit acts on a decaying input signal
envelope.</p></li>
<li><b>threshold (dB)</b><p>
sets the envelope level that the compressor starts acting at.</p></li>
<li><b>knee radius (dB)</b><p>
controls the softness of the transition between unaltered and
compressed signal.</p></li>
</ul>
<a name=Pan><h4>Pan</h4></a>
<p>
Places a monaural source in the stereo field. For some extra spicing,
the unit can also add a low-pass filtered echo at the far
ends of the stereo field to make the signal sound 'wider' (recreating
the old doubling effect with a twist). You can
(and should!) control the loudness and timing of the echo; what's best
depends largely on the source signal.
</p>
<p>
<em>No parameter smoothing.</em>
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>pan</b><p>
position</p></li>
<li><b>width</b><p>
echo volume</p></li>
<li><b>t</b><p>
delay in milliseconds<p></li>
<li><b>mono</b><p>
if non-zero, causes the unit to mix the stereo output back down to mono
and output that (on both outbound ports).
The purpose is to check for mono
compatibility of the output.<p></li>
</ul>
<a name=Narrower><h4>Narrower</h4></a>
<p>
Reduces the width of a stereophonic signal.
Very useful for headphone listeners.
</p>
<p>
<em>No parameter smoothing.</em>
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>strength</b><p>
amount of width reduction</p></li>
</ul>
<a name=Emulation><h3>Emulation</h3></a>
<a name=PreampIII><h4>PreampIII</h4></a>
<p>
One further step in the evolution of my
<a href=http://quitte.de/dsp/preamp.html>tube preamplifier emulation</a>. This one
uses conventional polyphase FIR filters for 8x oversampling,
which helps make the unit sound a good deal cleaner than the
IIR-based predecessor.
</p>
<p>
The first steps towards this unit were based on a <tt>spice</tt> model
of the preamplifier circuit in a Fender 5F4 design ('Super' tube amp,
a close relative of the famed 'Bassman', which is the ancestor of the
Marshall lineage). Further evolution was
based on measurements of my 'Super 60' (mid-1980s) amp and, of course,
personal preference.
The plugin offers a softer kind of preamp clipping
than the actual circuit, though it can be made to clip as harsh as the
original thing if given enough gain.
</p>
<p>
A word of caution: at high 'temperature' settings, an input
signal peaking above 0 dB can drive
the first 'tube' stage into hard clipping. Since this stage of the
circuit is run at the nominal sample rate, aliasing and thus sound
quality degradation will occur.
Do not overdrive the input, instead use the 'gain' knob for
harsh distortion, it offers more than enough of it. This applies to all
Preamp and Amp units.
</p>
<p><em>All sample rates.</em></p>
<ul>
<li><b>gain</b><p>
controls the level of saturation. For a balanced (0 dB max.)
input signal,
hard clipping will not occur below a gain value of 1.
</p></li>
<li><b>temperature</b><p>
emulates the level of the input signal, thus how much the first
preamplifier tube will colour the signal.
The effect is very subtle.</p></li>
</ul>
<a name=PreampIV><h4>PreampIV</h4></a>
<p>
A variation on <a href=#PreampIII>PreampIII</a> with added tone controls
before the clipping stage. The tone controls have the same
flaws as their analog counterparts (phase cancellation at high band
gains). But exactly because they are not linear-phase, they are quite
useful in altering the distortion characteristics of the circuit.
</p>
<p><em>All sample rates.</em></p>
<p>
Same parameters as <a href=#PreampIII>PreampIII</a>, plus the following
(all in dB units):
</p>
<ul>
<li><b>bass</b><p>
80 Hz band</p></li>
<li><b>mid</b><p>
300 Hz band</p></li>
<li><b>treble</b><p>
1200 Hz band</p></li>
<li><b>hi</b><p>
4800 Hz band</p></li>
</ul>
<a name=ToneStack><h4>ToneStack</h4></a>
<p>
A close model of the tone stack of a traditional instrument
amplifier (of Fender origin), designed and implemented by David Yeh,
discussed in [<a name=yeh06-1 href=#yeh06>2</a>]
(see <a href=http://ccrma.stanford.edu/~dtyeh/tonestack/>his project page at CCRMA</a>).
</p><p>
This is the 'procedural' implementation which uses a direct form II filter,
adapts to the actual sample rate and offers the choice of model
from a selection of several classic tone stacks.
(The AC-30 is a crude approximation for which David isn't to blame. I
simply dropped in the parameters although the circuit doesn't
match the one David modeled.)
</p>
<p><em>All sample rates.</em></p>
<ul>
<li><b>model</b><p>
0 - '59 Bassman<br>
1 - '69 Twin Reverb<br>
2 - '64 Princeton<br>
3 - '59/'81 JCM 800<br>
4 - '78 Club &amp; Country<br>
5 - '59/'86 AC-30 of sorts
</li>
<li><b>bass</b></li>
<li><b>mid</b></li>
<li><b>treble</b></li>
</ul>
<a name=ToneStackLT><h4>ToneStackLT</h4></a>
<p>
This version of David Yeh's <a href=#ToneStack>ToneStack</a> replaces
the procedural approach and direct form II filter
with a lattice filter and operation on
precalculated simulation data. It's a fixed implementation of the
'59 Bassman model.
</p>
<p><em>44.1 kHz</em></p>
<ul>
<li><b>bass</b></li>
<li><b>mid</b></li>
<li><b>treble</b></li>
</ul>
<a name=AmpIII><h4>AmpIII</h4></a>
<p>
A <a href=#PreampIII>PreampIII</a> circuit plus a tube power amplifier
emulation giving that smooth drive.
</p>
<p>
We recommend you use <a href=#AmpVTS>AmpVTS</a> instead.
</p>
<p><em>All sample rates.</em></p>
<p>
Same controls as <a href=#PreampIII>PreampIII</a>, plus:
</p>
<ul>
<li><b>drive</b><p>
controls the 'master volume' of the circuit, i.e. how much
coloring and compression the emulated power amplifier produces.</p></li>
</ul>
<a name=AmpIV><h4>AmpIV</h4></a>
<p>
A <a href=#PreampIV>PreampIV</a> with the same output amp stage
emulation that <a href=#AmpIII>AmpIII</a> employs. Controls are the
same as on <a href=#PreampIV>PreampIV</a>, plus the 'drive' inherited
from <a href=#AmpIII>AmpIII</a>.
</p>
<p>
We recommend you use <a href=#AmpVTS>AmpVTS</a> instead.
</p>
<p><em>All sample rates.</em></p>
<a name=AmpV><h4>AmpV</h4></a>
<p>
This circuit is loosely based on the <a href=#AmpIII>AmpIII</a> design.
The preamplifier stage has been augmented and tuned
to provide a warmer frequency response as well as slightly different
clipping characteristics. But more significantly, AmpV emulates the
shortcomings of an unregulated power supply and their effect on the
total gain of the circuit, the operating point of the tubes and the
clipping response.
</p><p>
AmpV's forte is a mellow sound at the transition from clean to rough,
at lowish 'gain' settings and moderate 'watts'.
</p>
<p>
We recommend you use <a href=#AmpVTS>AmpVTS</a> instead.
</p>
<p><em>All sample rates.</em></p>
<ul>
<li><b>gain</b><p>
controls the amount of edge added in the preamplifier stage. The
parameter mapping has been optimized for fine control in the clean to
medium-rough range.
</p></li>
<li><b>bass</b><p>
controls the attenuation or amplification of low frequencies
before the preamp tube (the value is expressed in dB).
Technically, a low-shelving equalizer filter.
</p></li>
<li><b>tone</b><p>
controls post-preamplifier circuit filtering. At the zero setting,
the effect is turned off. At its maximum, there is some resonance
quite high in the spectrum.
</p></li>
<li><b>drive</b><p>
controls power-amplification stage saturation, which gives a fair bit
of warmth and some compression.
</p></li>
<li><b>watts</b><p>
controls how capable the emulated power supply is. At its minimum
setting, the effects of supply voltage modulation are
the most pronounced.
At the maximum setting, they are effectively removed (which is
recommended for high-'gain' setups).
</p></li>
</ul>
<a name=AmpVTS><h4>AmpVTS</h4></a>
<p>
An <a href=#AmpV>AmpV</a> with the tone controls replaced with
the fine <a href=#ToneStack>ToneStack</a> by David Yeh. And a ton of
other modifications (most notably the availability of an extra 28 dB
of gain).
</p>
<p><em>All sample rates.</em></p>
<a name=CabinetI><h4>CabinetI</h4></a>
<p>
A collection of filters emulating the frequency response
of various guitar combo amps or speaker cabinets, using the
method outlined
<a href=http://quitte.de/dsp/unmatched.html>here</a>.
</p>
<p>
You'll find a more exact, but also a lot more cycle-hungry and
latency-inflicting rendering of
these responses in
<a href=http://plugin.org.uk>Steve Harris' collection</a>, from which
they were borrowed.
</p>
<p>
We recommend you use the successor unit <a href=#CabinetII>CabinetII</a>
instead.
</p>
<p>
<em>44.1 kHz (48 kHz gives a slightly different, but still usable frequency response.)</em>
</p>
<ul>
<li><b>model</b><p>
0 - identity filter (what goes in, goes out).<br>
1 - 'unmatched', as I still like to call it. A Matchless Chieftain.<br>
2 - the same, but the recording was taken with the microphone on-axis.<br>
3 - Superchamp (a Fender, isn't it?)<br>
4 - Fender Vibrolux 68<br>
5 - Marshall 'Plexi'
</li>
<li><b>gain (dB)</b><p>
volume control.</p></li>
</ul>
<a name=CabinetII><h4>CabinetII</h4></a>
<p>
A refined version of <a href=#CabinetI>CabinetI</a>.
This version offers a much more
faithful rendering of the original speaker cabinet frequency responses
due to a modified filter approximation, double the filter order and
(limited) adaptability to sample rate.
</p><p>
Unlike conventional impulse response emulators who rely on brute-force
convolution, FFT-based algorithms or the patent-encumbered zero-latency
variant of the latter, the Cabinet units employ IIR filters for
truly resonant behaviour. As a result, their sound is more lively.
</p><p>
Same controls as <a href=#CabinetI>CabinetI</a>.
</p>
<p>
<em>44.1, 48, 88.2 and 96 kHz (nearest match chosen at runtime)</em>
<br>
</p>
<a name=Clip><h4>Clip</h4></a>
<p>
A spin-off of the <a href=#PreampIII>PreampIII</a> effort.
8x oversampled hard clipping (sometimes called 'diode' or
'transistor' clipping).
The clip threshold is fixed at -1 dB (overshoot
from the up- and downsampling filters could exceed 0 dB were the threshold
higher).
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>gain (dB)</b><p>
controls pre-clipping amplification.</p></li>
</ul>
<a name=Effects><h3>Effects</h3></a>
<a name=ChorusI><h4>ChorusI</h4></a>
<p>
Mono version, with a feedback circuit. The parameter range suits more
subtle effects as well as all-out flanging. Modifying the 't' parameter
when 'feedback' is non-zero will cause zipper noise.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>t (ms)</b><p>
delay time.</p></li>
<li><b>width (ms)</b><p>
controls the amount of pitch change.</p></li>
<li><b>rate (Hz)</b><p>
the speed of the pitch modulation.</p></li>
<li><b>blend</b><p>
the amount of dry and fed-back signal in the output.</p></li>
<li><b>feedforward</b><p>
amount of modulated signal in the output.</p></li>
<li><b>feedback</b><p>
amount of signal with fixed delay in the modulation input.</p></li>
</ul>
<a name=StereoChorusI><h4>StereoChorusI</h4></a>
<p>
Two <a href=#ChorusI>ChorusI</a> circuits in parallel,
sharing the same input (and delay
line). Same parameters as the mono version, plus one.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>phase</b></li><p>
controls the relation of the two LFOs. 0 means in-phase, 0.5 is
quadrature, and 1 is anti-phase.</p>
</li>
</ul>
<a name=ChorusII><h4>ChorusII</h4></a>
<p>
A variation on the <a href=#ChorusI>ChorusI</a> unit; this one employs
a Roessler fractal to steer the signal modulation, resulting in less
predictable and thus more interesting sound.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>t (ms)</b><p>
delay time.</p></li>
<li><b>width (ms)</b><p>
controls the amount of pitch change.</p></li>
<li><b>rate</b><p>
the speed of the pitch modulation.</p></li>
<li><b>blend</b><p>
the amount of dry and fed-back signal in the output.</p></li>
<li><b>feedforward</b><p>
amount of modulated signal in the output.</p></li>
<li><b>feedback</b><p>
amount of signal with fixed delay in the modulation input.</p></li>
</ul>
<a name=StereoChorusII><h4>StereoChorusII</h4></a>
<p>
Two <a href=#ChorusII>ChorusII</a> circuits in parallel,
sharing the same input (and delay
line). Same parameters as the mono version.
</p>
<p>
<em>All sample rates.</em>
</p>
<a name=PhaserI><h4>PhaserI</h4></a>
<p>
Nothing out of the ordinary, just a phaser like I like to have them.
A phaser unit works by sweeping notches in the frequency response; this one
has six comb filters, for six notches.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>rate (Hz)</b><p>
controls the speed of the modulation.</p></li>
<li><b>depth</b><p>
the strength of the effect.</p></li>
<li><b>spread</b><p>
the distance of the notched frequency bands.</p></li>
<li><b>feedback</b><p>
controls the amount of resonance.</p></li>
</ul>
<a name=PhaserII><h4>PhaserII</h4></a>
<p>
A variation of the <a href=#PhaserI>PhaserI</a> circuit which relies
on a Lorenz fractal for the modulation source, improving hugely on
output sound variation.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>rate</b><p>
controls the speed of the modulation.</p></li>
<li><b>depth</b><p>
the strength of the effect.</p></li>
<li><b>spread</b><p>
the distance of the notched frequency bands.</p></li>
<li><b>feedback</b><p>
controls the amount of resonance.</p></li>
</ul>
<a name=SweepVFI><h4>SweepVFI</h4></a>
<p>
A resonant filter whose cutoff frequency is swept by a
<a href=#Lorenz>Lorenz</a> fractal. With the default parameters
(moderate Q, cutoff around 800 Hz and band pass mode)
it makes a nice Wah effect if you lower the 'h' parameter by a fair amount.
</p>
<p>
Another idea is to set it to very high Q and frequency in low pass mode
and filter some noise, for synthetic bird chirping (high h value)
or theremin-like sounds (low h, lower frequency).
</p>
<p>
Please note that the most useful settings for the 'h' parameter
are <i>very</i> low, around 0.01 - 0.09. Unfortunately there's no way
to provide a default setting as low as this without compromising
the range of the control.
</p>
<p>
And be careful, high Q resonance can peak at up to +18 dB.
</p>
<p>
<em>All sample rates (modulation rate and character are sample rate dependent).</em>
</p>
<ul>
<li><b>f</b><p>
cutoff frequency (band center for band pass filtering).</p></li>
<li><b>Q</b><p>
filter resonance.</p></li>
<li><b>mode</b><p>
0 - low pass<br>
1 - band pass</p></li>
<li><b>depth:x</b></li>
<li><b>depth:y</b></li>
<li><b>depth:z</b><p>
control how the modulation is mixed from the state of the attractor.</p></li>
<li><b>h</b><p>
step size of the fractal.</p></li>
</ul>
<a name=SweepVFII><h4>SweepVFII</h4></a>
<p>
A variation on <a href=#SweepVFI>SweepVFI</a>,
with the filter Q (bandwidth/resonance)
modulated by a second <a href=#Lorenz>Lorenz</a> fractal.
</p>
<p>
Please note that the most useful settings for the 'h' parameter
are <i>very</i> low, around 0.01 - 0.09. Unfortunately there's no way
to provide a default setting as low as this without compromising
the range of the control.
</p>
<p>
And be careful, high Q resonance can peak at up to +18 dB.
</p>
<p>
<em>All sample rates (modulation rate and character are sample rate dependent).</em>
</p>
<ul>
<li><b>f</b><p>
cutoff frequency (band center for band pass filtering).</p></li>
<li><b>Q</b><p>
filter resonance.</p></li>
<li><b>mode</b><p>
0 - low pass<br>
1 - band pass</p></li>
<li><b>f:depth:x</b></li>
<li><b>f:depth:y</b></li>
<li><b>f:depth:z</b><p>
control how the filter cutoff modulation is mixed
from the state of the attractor.</p></li>
<li><b>f:h</b><p>
step size of the fractal modulating the cutoff.</p></li>
<li><b>Q:depth:x</b></li>
<li><b>Q:depth:y</b></li>
<li><b>Q:depth:z</b><p>
control how the filter Q modulation is mixed
from the state of the attractor.</p></li>
<li><b>Q:h</b><p>
step size of the fractal modulating filter Q.</p></li>
</ul>
<a name=AutoWah><h4>AutoWah</h4></a>
<p>
The same resonant filter as used by the <a href=#SweepVFI>SweepVFI</a>
and <a href=#SweepVFII>SweepVFII</a> units, the difference being that
the filter is hard-wired for bandpass operation and
the band centre frequency is modulated by an envelope-following circuit.
In short, an effect commonly known and esteemed as an automatic wah,
or AutoWah. Probably most useful with instruments allowing fine control over
dynamics at all times.
</p>
<p>
Be careful with the Q parameter, high resonance can peak at up to +18 dB.
</p>
<p>
<em>All sample rates (modulation rate and character may be sample rate dependent).</em>
</p>
<ul>
<li><b>f</b><p>
filter band centre frequency.</p></li>
<li><b>Q</b><p>
resonance.</p></li>
<li><b>depth</b><p>
strength of the modulation.</p></li>
</ul>
<a name=Scape><h4>Scape</h4></a>
<p>
This plugin will generate quite expansive soundscapes from even the
most modest input signals.
</p>
<p>
Technically, 'Scape' is a
stereo delay, with the panning of the echo modulated by a pair of
fractals.
The delay times are adjustable through
a 'bpm' knob, augmented by a beat division parameter.
The input as well as the delayed signals are processed by a
collection of resonant filters, with frequency and cutoff modulated
in sync to the current tempo.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>bpm</b><p>
beats per minute.</p></li>
<li><b>divider</b><p>
controls whether the groove is ternary or binary.</p></li>
<li><b>feedback</b><p>
controls the length of the delay tail.</p></li>
<li><b>dry</b><p>
the amount of dry signal mixed to the outputs.</p></li>
<li><b>blend</b><p>
the amount of wet signal mixed to the outputs.</p></li>
</ul>
<a name=Generators><h3>Generators</h3></a>
<a name=VCOs><h4>VCOs</h4></a>
<p>
An oscillator capable of producing the standard
triangle, sawtooth and square waveforms of analog fame,
and almost any conceivable blend
thereof. 8x oversampled, thus needs a lot of cycles. Sorry about that,
but you don't get the flexibility and fat sound for free.
</p>
<p>
About the morphing controls:
</p>
<ul type=circle>
<li>For a <b>triangle wave,</b> set both <i>tri .. saw</i> and
<i>~ .. square</i> to 0 (this is the default setting).</li>
<li>To morph into a <b>sawtooth,</b> pull up <i>tri .. saw</i>.</li>
<li>For a <b>square wave</b> instead, pull up <i>~ .. square</i>. When
the value reaches 1, <i>tri .. saw</i> fully controls the pulse
width.</li>
</ul>
<p>
For a more intuitive approach, thinking of both controls
in terms of 'dull .. sharp' for a start
can't hurt.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>f</b><p>
the frequency.</p></li>
<li><b>tri .. saw</b><p>
controls the morph between triangle and sawtooth, and the pulse
width of square oscillation.</p></li>
<li><b>~ .. square</b><p>
controls the morph between triangle/sawtooth and square wave.</p></li>
<li><b>volume</b></li>
</ul>
<a name=VCOd><h4>VCOd</h4></a>
<p>
A combination of two <a href=#VCOs>VCOs</a> units.
The second oscillator
offers a separate tuning knob. It can also be made
to 'hard sync'
to the first unit, which means that when the first has completed
a wave cycle, the second is forced to restart its wave cycle
together with the first.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>f</b><p>
the frequency.</p></li>
<li><b>1: tri .. saw</b></li>
<li><b>1: ~ .. square</b><p>
waveform morph controls for the first oscillator.</p></li>
<li><b>2: tri .. saw</b></li>
<li><b>2: ~ .. square</b><p>
waveform morph controls for the second oscillator.</p></li>
<li><b>2: tune</b><p>
controls the interval between the two oscillator frequencies, in
units of (fractional) semitones.</p></li>
<li><b>sync</b><p>
if non-zero, puts the second oscillator into 'hard sync' mode, and
determines the forced-restart offset into its wave cycle.</p></li>
<li><b>blend</b><p>
controls how the waveforms from the two oscillators are mixed.
A value of 0 means only oscillator one is heard, a value of either
1 or -1 tilts the balance fully towards oscillator two. The sign
of the <b>blend</b> value determines if the signals are added or
subtracted.</p></li>
<li><b>volume</b></li>
</ul>
<a name=CEO><h4>CEO</h4></a>
<p>
The Chief Executive Oscillator forever repeats the word 'money'.
</p>
<p>
<em>44.1 kHz.</em>
</p>
<ul>
<li><b>mpm</b><p>
moneys per minute.</p></li>
<li><b>volume</b></li>
<li><b>damping</b><p>
moderates the CEO.</p></li>
</ul>
<a name=Sin><h4>Sin</h4></a>
<p>
The old friend, indispensable for testing and tuning.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>f</b><p>
the frequency.</p></li>
<li><b>volume</b></li>
</ul>
<a name=White><h4>White</h4></a>
<p>
White noise (actually slightly pinkish, sorry).
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>volume</b></li>
</ul>
<a name=Lorenz><h4>Lorenz</h4></a>
<p>
A Lorenz attractor is a fractal system. It produces a very
own character of noisz that will hardly repeat in the course of your
lifetime.
</p>
<p>
<em>Sound varies with sample rate.</em>
</p>
<ul>
<li><b>h</b></p>
controls the step size of the state progression, and, indirectly, the
perceived frequency of the sound.</p></li>
<li><b>x</b></li>
<li><b>y</b></li>
<li><b>z</b><p>
control how the signal is mixed from the state of the attractor.</p></li>
<li><b>volume</b></li>
</ul>
<p>
For more information on the
Lorenz and Roessler attractors, visit
<a href=http://astronomy.swin.edu.au/~pbourke/fractals/lorenz/>Paul Bourke's resourceful site</a>.
</p>
<a name=Roessler><h4>Roessler</h4></a>
<p>
Another fractal system. This one lends itself
particularly well to sweeping the 'h' parameter.
</p>
<p>
<em>Sound varies with sample rate.</em>
</p>
<ul>
<li><b>h</b></p>
controls the step size of the state progression.</p></li>
<li><b>x</b></li>
<li><b>y</b></li>
<li><b>z</b><p>
control how the signal is mixed from the state of the attractor.</p></li>
<li><b>volume</b></li>
</ul>
<p>
For more information on the
Lorenz and Roessler attractors, visit
<a href=http://astronomy.swin.edu.au/~pbourke/fractals/lorenz/>Paul Bourke's resourceful site</a>.
</p>
<a name=Reverb><h3>Reverb</h3></a>
<a name=JVRev><h4>JVRev</h4></a>
<p>
A traditional Chowning/Moorer/Schroeder reverb. It sounds quite good
for a reverberation unit with such a comparatively small footprint
(I still remember the times when your average personal computer wasn't
even capable of computing this in realtime). A quite
straight-forward rewrite of a unit found in
<a href=http://ccrma.stanford.edu/>CCRMA</a>'s
<a href=http://ccrma.stanford.edu/software/stk/>STK (Synthesis Toolkit)</a>,
with minor tweaks.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>t60 (s)</b></p>
controls the time until the reverb tail is supposed to fade
to -60 dB.</p></li>
<li><b>blend</b></p>
controls dry/wet mixing ratio.</p></li>
</ul>
<a name=Plate><h4>Plate</h4></a>
<p>
A reverberation unit based on the design discussed
in [<a name=dat97-1-1 href=#dat97-1>1</a>].
Unlike the reference, the unit employs cubic instead of
allpass interpolation to modulate the reverb 'tank' delay lines.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>bandwidth</b><p>
controls damping of the input signal before it enters the
delay circuits.</p></li>
<li><b>tail</b><p>
controls the length of the reverb tail.</p></li>
<li><b>damping</b><p>
controls attenuation of high frequency components within the reverb 'tank'
(decay stage).</p></li>
<li><b>blend</b><p>
dry/wet mixing ratio (default should be 1/8, not 1/4).</p></li>
</ul>
<a name=Plate2x2><h4>Plate2x2</h4></a>
<p>
By popular demand, a stereo-in, stereo-out version of the
<a href=#Plate>Plate</a> reverb unit. Same controls, same sound.
</p>
<p>
<em>All sample rates.</em>
</p>
<a name=Others><h3>Others</h3></a>
<a name=Click><h4>Click</h4></a>
<p>
A sample-accurate metronome. Timing is exact at any sample rate, but
the pitch of the click (being a recorded sample) will vary. (The click
also lends well for testing reverb plugins.)
</p>
<p>
<em>44.1 kHz.</em>
</p>
<ul>
<li><b>bpm</b><p>
beats per minute.</p></li>
<li><b>volume</b></li>
<li><b>damping</b><p>
controls the softness of the click sound.</p></li>
</ul>
<a name=Dirac><h4>Dirac</h4></a>
<p>
This plugin produces periodic impulses of exactly one sample width
(as long as the 'damping' control is left at the default 0 setting).
It's probably only useful for testing and basic impulse response
retrieval; don't use this plugin if you don't know what you're doing,
your amplification hardware and speakers will thank you.
The 'volume' control defaults to silent output to spare you nasty
surprises.
</p>
<p>
<em>All sample rates.</em>
</p>
<ul>
<li><b>ppm</b><p>
pulses per minute.</p></li>
<li><b>volume</b></li>
<li><b>damping</b></li>
</ul>
<a name=HRTF><h4>HRTF</h4></a>
<p>
Applying the head-related transfer function to a signal makes it appear
to come from a specific direction in space. This plugin applies the
HRTF with custom-shaped IIR filters.
Tell me how it works for you (you should
have pretty good headphones to get the full effect).
</p>
<p>
The HRTF impulse response data has been collected and prepared
by MIT's Media Lab.
</p>
<p>
This unit only utilizes the 0-elevation set (sound source is level
with the listener).
</p>
<p>
<em>44.1 kHz.</em>
</p>
<ul>
<li><b>pan</b><p>
The position, in integer steps. Some noteworthy settings:
<ul>
<li>
0 = in front</li>
<li>+18 = left,</li>
<li>-18 = right, and</li>
<li>-36 = +36 = behind the listener.</li>
</ul>
</li>
</ul>
&nbsp;<br>
<a name=Appendix><h3>Appendix</h3></a>
<a name=DataSheet><h4>Plugin Data Sheets</h4></a>
<p>
The CAPS data sheets collect the following information from
the plugins:
</p>
<ul type=circle>
<li>the plugin ID</li>
<li>normalized sample output from the plugin
with default parameter settings
(in the filter case, this is an impulse response)</li>
<li>a frequency magnitude plot for the sample output</li>
<li>estimated CPU usage on my box (usually wildly inaccurate)</li>
<li>latency information if applicable</li>
<li>audio routing information</li>
<li>the control inputs on the plugin</li>
</ul>
<p>
You can fetch the data sheet compilation
<a href=caps-0.4.5.pdf>here, it is caps-0.4.5.pdf (287 kB)</a>.
</p>
<a name=Changelog><h4>Changelog</h4></a>
<pre>
0.4.5
* Narrower plugin added
* fixed 'configure.py' to work with python3
* fixed Sin, Roessler and Lorenz gain smoothing on activation
0.4.4
0.4.3
* basics.h cleanup / comments
* minor Makefile cleanup
* comment cosmetics
* Eq and Eq2x2 per-band Q changed to 1.414 (= 1 octave)
* Eq lowest band default value fixed to read 0
* Niclas' fix for the bessel function implemented
* uninitialised plugin states eliminated thanks to Damon
* linker options for OSX added to the Makefile
0.4.2
* fixed the 'model' port index for AmpVTS in the RDF generator
0.4.1
* cleaned up Eq.h and Eq.cc (many g++ versions choke on the unused code
there)
* changed -O3 to -O2 in the g++ invocation
0.4.0
* ToneStack plugins, by David Yeh
* AmpV + Tone stack plugin, employing David Yeh's fine work
* comment cosmetics
* Amp* denormal protection fixed (or is it, Dave? ;)
* minor code cleanup in Amp.cc
* caps.rdf updated with plugin categories (thanks to Paul Winkler)
* caps.rdf Cabinet* RDF preset labels renamed
* AutoWah plugin
* DSP::RMS reworked, may affect Compress plugin
* DSP::Eq reworked for double precision and denormal protection
* ./configure.py checks SSE availability
* in case of SSE math denormal flush to zero activated for all plugins
* all plugins renamed C* .. instead of CAPS: ..
* Eq modified to play nice with ardour
* Eq2x2
* introduced the Plugin base class, collecting common traits (normal etc)
* getport() -- read access to control ports which is clamped to port bounds
and maps inf and nan to 0 as well
* all LADSPA_HINT_SAMPLE_RATE ports changed to *_LOGARITHMIC because
of broken implementations (no surprise given the vagueness of ladspa.h
regarding this matter) -- this means changed default parameters of the
affected ports, too
* VCO* "latency" output ports removed
* actual activate() call is deferred to first run() after activate()
in order to prevent inadvertent parameter smoothing sweeps during the first
block of audio after activation, this should fix all problems with ardour
(except those caused by denormals or invalid audio input)
* caps.rdf installed by 'make install'
* fixed a bug in tools/make-ps.py that caused the spectrum plots to
be inaccurate for multi-channel plugins
0.3.0
* TwelveAX7_3 changed to clip slightly early in the upper lobe
* Scape plugin added
* plugin names rewritten, prefixed with "CAPS:"
* new ChorusII, StereoChorusII plugins
* Chorus, StereoChorus relabeled, appended 'I' suffix
* new PhaserII plugin (great stuff if I may say so)
* Phaser relabeled, appended 'I' suffix
* new AmpV plugin, based on AmpIII, emulates compression and distortion
modulation through power supply shortcomings, plus lots of fine-tuning
and an additional biquad. We're getting there!
* all Preamp and Amp models fitted with a new 12AX7 model, linear
interpolation of a sample table obtained from spice simulation
0.2.4
* feedback default reverted to 0 for the Chorus units
* fixed Cabinet to switch to correct gain at 'model' control change
* fixed 'model' control in Cabinet to work with a broader range of hosts
* Cabinet name changed to CabinetI
* CabinetII plugin: Cabinet with 32nd order IIR filters, more fidelity
to the original frequency responses, supplied coefficients for 4 of the
most used sample rates
* applied the gcc-4 enabling patch
* SweepVF renamed to SweepVFI
* new SweepVFII plugin, variant of SweepVFI with Q modulated by a
second Lorenz fractal
* dsp/exp2 dumped in favour of libm's exp2(3)
0.2.3
* StereoChorus denormal protection made functional
(Thanks again to S. Savolainen)
* Phaser denormal protected
0.2.2
* Build was _not_ fixed for g++-4.0.
* AmpIV gain control restored to operate as expected
* Chorus/StereoChorus denormal protection (thanks to S. Savolainen)
* a few cosmetic changes elsewhere
0.2.1
* Build fixed for g++-4.0, PPC and AMD64
(Thanks to Niklas Werner, Andreas Jochens and Mario Lang)
* Reverb.* cosmetics
* AmpIV tone controls moved to after initial tube transfer
0.2.0
* denormal protection for Preamp*, Amp*
* Capitalized plugin Names
* PDF now lists audio in- and outputs as well as control inputs, only
gives average CPU rating
* AmpIV: PreampIV + power amp stage
* Plate2x2: Plate with 2-in, 2-out audio routing
* Plate damping and bandwidth controls changed to map to filter fc, fixes
behaviour in hosts that handle the log hint incorrectly
0.1.13
* AmpIII activate() resets the boost filter
0.1.12
* PreampIV band controls fixed to operate as expected
0.1.11
* amps changed back to old tube model :) but new temp & gain behaviour stays
* SweepVF, AmpIII default value adjustments
0.1.10
* HRTF recursion runs in doubles
* Cabinet recursion runs in doubles for much clearer sound
* all amps fitted with a common tube voltage mapping, dsp/TwelveAX7.h
* all amps: temperature and gain controls changed slightly
* all amps declared in one common Amp.h
* Pan echo fixed to be filtered independent of sample rate
* Cabinet cosmetics and activate() from port values fix
* SweepVF fixed to activate() from the current control settings
* rid all *amp* plugins of the initial hi-pass, not needed anymore
* PreampIII and AmpIII more authentic with an rbj lo-shelve, +6 dB > 1.2 kHz
as hinted by circuit analysis
* something_random() removed, stdlib for random generation
0.1.9
* Pan plugin
* 'make depend' instead of 'make dep', uses $(CC) -MM instead of 'makedepend'
* *Chorus, AmpIII, Plate defaults changed
* *Chorus optimizations, reintroduces funny zipper noise when 'feedback' is
non-zero and 't' is changed
* experimental HRTF plugin
* Plate 'blend' goes all the way to wet output only
* dsp/White offers a get_31() method for reduced number of bitshifts needed
* *Chorus delay line tapping changed to employ cubic interpolation, sounds
better
* SweepVF modulation mix algorithm changed to clamp if over-fed, makes
for wider sweeps
0.1.8
* all oversampling plugins use Kaiser windows instead of Blackman-Harris,
for much better performance
* SweepVF modulation range slightly increased
* Cabinet filter loop cosmetics (slight speedup)
* new AmpIII Plugin: Preamp plus power amp emulation
* lowered NOISE_FLOOR (equals 'renormal' number)
0.1.7
* connect ports to lower bound on instantiate()
* Plate delay line lengths raised, sound changed
* Eq activate() fixed to initialize from the current settings
* Preamp* cutoff reverted to 0.1.3 setting, thanks to Ben Saylor for
testing
* old IIR-based Preamp cleaned from the sources
* zipper-noise in *Chorus units for t changes with feedback > 0 eliminated
* all plugin constructor code moved to init() calls
0.1.6
* SweepVF modulation mix algorithm changed to maintain proportion, not
absolute value if x + y + z > 1, for better control
* create $(DEST) directory on make install, pointed out by Daniel James
0.1.5
* fixed delay line length miscalculation in ModLattice
0.1.4
* SweepVF modulation source can be mixed now
* latency port for VCO*
* Lorenz and Roessler get x, y, z mixing knobs
* PreampIV eq bands slightly tuned and coefficients moved into common struct
* Preamp*, VCO* downsampler filter cutoff lowered
* Clip downsampler filter cutoff lowered
* nonsensical audio output bounds removed
* simplified VCO* implementation
* JVRev rewritten for code clarity (funny enough, it also got quicker)
* fixed JVRev to reset its history on activate()
* added purpose, copyright and licensing information to all (i think) files.
* HACKING file
* CHANGES file
0.1.3
* fixed all compilation problems with gcc 3.3, with the patient help
of the lad mailing list community
* dsp/Eq.h SSE assembler code had to go (gcc > 3 doesn't like multi-line
asm, and efficiency and even reliability go down if we allow gcc to
intersperse its 'optimization' code with our asm)
0.1.2
* fixed more compilation problems with gcc >= 3.0
0.1.1
* tried to (but didn't really) fix compilation problem with ladspa.h
0.1.0
* initial release
</pre>
<p id=foot>
<a name=dat97-1 href=#dat97-1-1>[1]</a>
J. Dattorro, "Effect Design Part 1: Reverberator and Other Filters",
<i>J. Audio Eng. Society</i>, vol. 45, No. 9 (1997 September).<br>
<a name=yeh06 href=#yeh06-1>[2]</a>D.T. Yeh, and J.O. Smith,
" Discretization of the '59 Fender Bassman Tone Stack",
<i>Proc. of the Int. Conf. on Digital Audio Effects (DAFx-06)</i>,
Montreal, Quebec, Canada, Sept. 18&ndash;20, 2006, pp. 1-6.<br>
</p>
</div>
&nbsp;<br>
<div class=foot>
tim@<a href=http://quitte.de/>quitte.de</a>, March 26 2011.
</div> </center>
</body>
</html>