The CAPS Audio Plugin Suite

Release 0.4.5 http://quitte.de/dsp/caps.html Tim Goetze
March 26, 2011 tim@quitte.de
 

Front Matter

CAPS, 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.

My favourite user's quote: “... if your amps beat your plugins, they are *very good* amps.. ;-)” – Thanks, Pete!

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.

The ToneStack plugins and the tone controls of the AmpVTS unit have been designed and implemented by David Yeh at CCRMA.

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öm.

All of CAPS is free software and distributed in source code.

 
* What's with the C?

So what does the C in the name stand for? Honestly, I don't know.

Complete? Not yet.
C as in the programming language? The source is C++.
Crap? Heaven forbid!
Cute? Why not ...
Common? Not bad either.
C, the latin numeral for one-hundred? Some more to go, but I like the idea.

I've got it! C as in The Caps Audio Plugin Suite! A classic.

 

Download

CAPS is distributed under the GNU General Public License. Other licensing terms can be arranged if you wish, please feel free to contact me.

No Guarantee

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 Lorenz 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?

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.

Download the latest release here, it is caps_0.4.5.tar.gz (772 kB).

 

Installation

Provided you run Linux, installation is simply:

$ tar xvfz caps_0.4.5.tar.gz 
$ cd caps-0.4.5 
$ ./configure.py
$ make
$ su
# make install

The configure.py step is optional on Linux but recommended for optimum performance.

You should now be able use the plugins from the collection in any LADSPA-aware host program, like the wonderful pd with the plugin~ external, the inimitable jack-rack, the impressive ardour, the versatile ecasound, the classic snd, and numerous other applications large and small.

You don't run Linux? Why not downgrade now?

OSX

configure.py should detect an OSX build and prepare the relevant flags for Apple's different-thinking ld implementation. Mind you, this is untested by me and not guaranteed to actually work. If it does, please tell me. Thanks!

Troubleshooting

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 make command so we can try and fix the problem.

Bugs

If any of the plugins in the suite do not work with your host program of choice, or don't work as advertised, please send a bug report.

 

What You Should Know

Parameter Smoothing

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 jackd terms: the "frames per period").

Sample Rate

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 SweepVFI, SweepVFII, AutoWah and Scape 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.

In the plugin listing, for every unit you'll see a note like All sample rates. 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 44.1 kHz only 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.

Usage at sample rates of 176 kHz or higher may cause problems with some plugins. We recommend not exceeding 100 kHz for all applications.

Realtime Use

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.

In-Place and Mixing/Replacing Operation

All of the plugins in the suite support any combination of in-place, mixing and replacing operation.

Denormals

Denormal numbers (wikipedia) 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 (wikipedia) or at a fixed lower frequency which keeps calculations out of the critical zone around zero. In addition, if you run configure.py prior to building CAPS, SSE extensions will be employed to aid in this task if they are available on the build system.

I'd love to hear from you. Really!

You like something about CAPS? Don't like it? Either way, tell me – otherwise I'll never be able to improve it!

Known Bugs and Limitations
 

Give me a Guitar Setup Already!

Start your guitar signal chain with an AmpVTS, followed by a CabinetII and finish with a Plate reverb. Season to taste, done.

Additional effects like chorus, phaser or auto wah would drop in right before or right after the Cabinet (I usually prefer the latter).

 

The Plugins

Generic

Eq

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 6 dB / octave.

All sample rates (bands beyond Nyquist are disabled).

Eq2x2

By popular demand, a stereo-in, stereo-out version of the Eq unit. Same controls as Eq.

Compress

A mono compressor, based on the SC1 design by Steve Harris (in other words, a ripoff) with minor tweaks. Be careful with the gain and ratio controls, the output signal can easily exceed 0 dB.

All sample rates.

Pan

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.

No parameter smoothing.

All sample rates.

Narrower

Reduces the width of a stereophonic signal. Very useful for headphone listeners.

No parameter smoothing.

All sample rates.

Emulation

PreampIII

One further step in the evolution of my tube preamplifier emulation. 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.

The first steps towards this unit were based on a spice 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.

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.

All sample rates.

PreampIV

A variation on PreampIII 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.

All sample rates.

Same parameters as PreampIII, plus the following (all in dB units):

ToneStack

A close model of the tone stack of a traditional instrument amplifier (of Fender origin), designed and implemented by David Yeh, discussed in [2] (see his project page at CCRMA).

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.)

All sample rates.

ToneStackLT

This version of David Yeh's ToneStack 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.

44.1 kHz

AmpIII

A PreampIII circuit plus a tube power amplifier emulation giving that smooth drive.

We recommend you use AmpVTS instead.

All sample rates.

Same controls as PreampIII, plus:

AmpIV

A PreampIV with the same output amp stage emulation that AmpIII employs. Controls are the same as on PreampIV, plus the 'drive' inherited from AmpIII.

We recommend you use AmpVTS instead.

All sample rates.

AmpV

This circuit is loosely based on the AmpIII 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.

AmpV's forte is a mellow sound at the transition from clean to rough, at lowish 'gain' settings and moderate 'watts'.

We recommend you use AmpVTS instead.

All sample rates.

AmpVTS

An AmpV with the tone controls replaced with the fine ToneStack by David Yeh. And a ton of other modifications (most notably the availability of an extra 28 dB of gain).

All sample rates.

CabinetI

A collection of filters emulating the frequency response of various guitar combo amps or speaker cabinets, using the method outlined here.

You'll find a more exact, but also a lot more cycle-hungry and latency-inflicting rendering of these responses in Steve Harris' collection, from which they were borrowed.

We recommend you use the successor unit CabinetII instead.

44.1 kHz (48 kHz gives a slightly different, but still usable frequency response.)

CabinetII

A refined version of CabinetI. 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.

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.

Same controls as CabinetI.

44.1, 48, 88.2 and 96 kHz (nearest match chosen at runtime)

Clip

A spin-off of the PreampIII 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).

All sample rates.

Effects

ChorusI

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.

All sample rates.

StereoChorusI

Two ChorusI circuits in parallel, sharing the same input (and delay line). Same parameters as the mono version, plus one.

All sample rates.

ChorusII

A variation on the ChorusI unit; this one employs a Roessler fractal to steer the signal modulation, resulting in less predictable and thus more interesting sound.

All sample rates.

StereoChorusII

Two ChorusII circuits in parallel, sharing the same input (and delay line). Same parameters as the mono version.

All sample rates.

PhaserI

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.

All sample rates.

PhaserII

A variation of the PhaserI circuit which relies on a Lorenz fractal for the modulation source, improving hugely on output sound variation.

All sample rates.

SweepVFI

A resonant filter whose cutoff frequency is swept by a Lorenz 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.

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).

Please note that the most useful settings for the 'h' parameter are very 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.

And be careful, high Q resonance can peak at up to +18 dB.

All sample rates (modulation rate and character are sample rate dependent).

SweepVFII

A variation on SweepVFI, with the filter Q (bandwidth/resonance) modulated by a second Lorenz fractal.

Please note that the most useful settings for the 'h' parameter are very 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.

And be careful, high Q resonance can peak at up to +18 dB.

All sample rates (modulation rate and character are sample rate dependent).

AutoWah

The same resonant filter as used by the SweepVFI and SweepVFII 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.

Be careful with the Q parameter, high resonance can peak at up to +18 dB.

All sample rates (modulation rate and character may be sample rate dependent).

Scape

This plugin will generate quite expansive soundscapes from even the most modest input signals.

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.

All sample rates.

Generators

VCOs

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.

About the morphing controls:

For a more intuitive approach, thinking of both controls in terms of 'dull .. sharp' for a start can't hurt.

All sample rates.

VCOd

A combination of two VCOs 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.

All sample rates.

CEO

The Chief Executive Oscillator forever repeats the word 'money'.

44.1 kHz.

Sin

The old friend, indispensable for testing and tuning.

All sample rates.

White

White noise (actually slightly pinkish, sorry).

All sample rates.

Lorenz

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.

Sound varies with sample rate.

For more information on the Lorenz and Roessler attractors, visit Paul Bourke's resourceful site.

Roessler

Another fractal system. This one lends itself particularly well to sweeping the 'h' parameter.

Sound varies with sample rate.

For more information on the Lorenz and Roessler attractors, visit Paul Bourke's resourceful site.

Reverb

JVRev

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 CCRMA's STK (Synthesis Toolkit), with minor tweaks.

All sample rates.

Plate

A reverberation unit based on the design discussed in [1]. Unlike the reference, the unit employs cubic instead of allpass interpolation to modulate the reverb 'tank' delay lines.

All sample rates.

Plate2x2

By popular demand, a stereo-in, stereo-out version of the Plate reverb unit. Same controls, same sound.

All sample rates.

Others

Click

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.)

44.1 kHz.

Dirac

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.

All sample rates.

HRTF

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).

The HRTF impulse response data has been collected and prepared by MIT's Media Lab.

This unit only utilizes the 0-elevation set (sound source is level with the listener).

44.1 kHz.

 

Appendix

Plugin Data Sheets

The CAPS data sheets collect the following information from the plugins:

You can fetch the data sheet compilation here, it is caps-0.4.5.pdf (287 kB).

Changelog

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
	
 
tim@quitte.de, March 26 2011.