C*A*P*S
the C* Audio Plugin Suite

Version 0.9.15 ∼ August 2013

The C* Audio Plugin Suite comprises a range of classic effects and a few more basic audio DSP units, signal and noise generators.  The plugins aim to provide impeccable sound quality, computational efficiency and no perceptible latency. 

The discerning digital guitarist finds in CAPS a selection of processors recreating key aspects of the formation of tone in traditional electronic instrument amplification. 

CAPS is developed by Tim Goetze <tim@quitte.de>, with the ToneStack contribution by David T. Yeh.  Ideas, tools, concepts, examples and suggestions from numerous sources have been vital to the project; for a comprehensive list see the references. 

Compressor

Compress

Overdrive

AmpVTS Saturate

Exciter

Spice

Reverb

Plate

Emulation

ToneStack

Probe

Sin White

Phaser

PhaserII

Chorus

ChorusI

Oscillator

Sin CEO

Metronome

Click

Delay

Scape

Considerations

Compatibility

Being a LADSPA library, the C* Audio Plugin Suite is concerned with audio manipulation only and does not offer any sort of user interface.  Thus, it is in principle not bound to a particular operating system or architecture.  However, compatible host applications concerned with music production will usually be found on a Linux system. 

Some features are designed to make use of vector arithmetic.  When compiled for a CPU without hardware acceleration, the binary is often slower than code explicitly designed for scalar arithmetic. 

CAPS for Electric Guitar

To produce a workable digital audio stream from an electric guitar, it is essential that the instrument is connected through a high-quality high-impedance input device.  No effects or equalisation should be applied before digitisation.  In terms of peak power, the full input range of the analog-to-digital converter should be exhausted but never exceeded. 

The simplest recommended chain consists of

AmpVTSCabinetIVPlate

and is fully monophonic up to the stereo outputs of the Plate plugin. 

If you're using single-coil pickups or you find sound quality to suffer from poor shielding, putting a NoiseGate plugin before the amp input may be of help. 

General Caveats

Realtime Use

CPU load depends slightly on the character of the input signal but will occasionally vary greatly with parameter choices.  For example, doubling the oversampling ratio implies doubling the computational load of a major part of the total arithmetic performed. 

Latency

Oversampled plugins have a latency roughly equivalent to the number of filter taps divided by the oversampling ratio.  For example, 4x oversampling with 32-tap filters results in 8 samples of latency. 

All other plugins have a latency of zero unless noted otherwise. 

Sample Rate

The CAPS plugins can be run – and should sound roughly the same, except where noted – at any sample rate up to 192 kHz.  The recommended range of operation however is at 44.1 or 48 kHz. 

Parameter Smoothing

To prevent 'zipper' noise, some control inputs are smoothened by sweeping internal parameters.  The duration of this sweep will vary with the audio system setup.  For realtime use in most host applications it is equal to the audio processing block size (the 'frames per period' in jackd[jackd] terms).  As a consequence, control adjustments recorded with a sequencer can result in subtle sound differences when played back with a different block size. 

Denormals

Before a CAPS release is published, a test is run on all plugins verifying that no denormal numbers are produced.  Naturally, these tests cannot exhaust all possible plugin parameter combinations.  While regarded as unlikely, it is not impossible that an unfortunate combination of parameters may still give rise to denormals. 

LADSPA Extensions

CAPS uses:

#define LADSPA_PORT_GROUP 16

as a flag set in LADSPA_PortDescriptor to denote ports which start a logical group. 

Control Conventions

Where applicable, units are appended to the respective control labels in parentheses following a single space character, for example "gain (dB)".  Host applications might think it favourable to strip the unit from the control's label and attach it to the representation of its value instead, e.g. "gain: -6 dB". 

CAPS Version Query

Regrettably, any part or feature of CAPS may change in new releases, sometimes even change drastically or be removed entirely, for the greater good of readily realisable improvements.  In particular, it would be unwise to expect port ordering and naming to be consistent between releases. 

Since version 0.9, applications relying on a particular release can query:

  void * h = dlopen ("/path/to/caps.so", RTLD_LAZY);
  /* assuming h is valid */
  const short * caps = (const short *) dlsym (h, "CAPS_version");
  if (caps)
    printf ("found caps version %hd.%hd.%hd\n", caps[0], caps[1], caps[2]);

Host applications are encouraged to use this information to form a persistent plugin identifier, should one be needed. 

Contact

If you happen to stumble upon a bug in CAPS or want to make a related remark or inquiry, I'll be happy to hear from you at tim@quitte.de. 

Patches

Please do not send patches without asking first.  By submitting a patch, you claim its sole authorship and agree that it becomes mine to use in any way I see fit, in exchange for no obligation on my part except author attribution in the CAPS documentation. 

NoiseGate 2602

Attenuate hum and noise

1 in, 1 out

controlmin.00 max.00 
open-60.00-45.000.00dB
attack0.000.753.00ms
close-90.00-67.500.00dB
mains0.0050.00100.00Hz
0.00 off
50.00 global
60.00 imperial

This plugin aims to reduce undesirable background noise and hum in otherwise silent passages. 

When the signal's instantaneous amplitude exceeds the opening threshold, a gate is opened allowing the input signal to pass through.  The time it takes for the gate to open fully can be set with the attack control.  As soon as the signal's RMS power level drops below the closing threshold, the gate closes.  Closing the gate takes a fixed time of 20 ms; the closed gate attenuates the signal by 60 dB. 

To cope with powerline hum as often present in signals from electric guitars, a notch filter can be activated by setting the mains frequency control to a non-zero value.  The filter will prevent this frequency from contributing to the signal power measurement.  While this by itself doesn't eliminate any hum in the signal, it allows the closing threshold to be lowered further without mains hum keeping the gate open unduly.  The default mains setting is 50 Hz. 

Compress 1772

Compressor and saturating limiter

1 in, 1 out

Frequency response, default settings, fs=48 kHz
controlmin.00 max.00 
measure0.000.001.00
0.00 peak
1.00 rms
mode0.001.003.00
0.00 linear
1.00 saturating 2x
2.00 saturating 4x
3.00 saturating 4x128
threshold0.000.001.00
strength0.000.251.00
attack0.000.001.00
release0.000.251.00
gain-12.000.0024.00dB

This compressor has been designed primarily to create natural-sounding sustain for the electric guitar without sacrificing its brightly percussive character.  However, it appears to apply well to a variety of other sound sources, and with CompressX2 a stereo version is available as well. 

To be able produce strong compression and keep a natural-sounding attack, the design catches attack-phase power spikes with a soft saturation circuit, turning peaks above 0 dB into additional harmonic content while keeping the output level ceiling untouched.  This is the default setting of the mode control, using an approximated atan saturation function.  Three oversampling options are available, 2x with 32-tap filters and 4x with 64 and 128 taps. 

The measure control select which indicator of loudness to base calculations on: peak – instantaneous amplitude – measurement allows the unit to react very quickly, while rms – root mean square power – is of a gentler kind. 

Compression amount is controlled through the strength knob, from 0 effectively disabling the effect, up to a maximum ratio of 16:1.  The attack and release controls map higher values to slower reactions. 

CompressX2 2598

Stereo compressor and saturating limiter

2 in, 2 out

This stereo version of Compress applies uniform compression to both channels in proportion to their combined power. 

ToneStack 2589

Classic amplifier tone stack emulation

1 in, 1 out

controlmin.00 max.00 
model0.000.009.00
0.00 basswoman
1.00 twin
2.00 wookie
3.00 DC 30
4.00 juice 800
5.00 stanford
6.00 HK 20
7.00 nihon ace
8.00 porky
9.00 5F6-A LT
bass0.000.501.00
mid0.000.501.00
treble0.000.501.00

This emulation of the tone stack of a traditional Fender-design instrument amplifier has been devised and implemented by David T. Yeh[yeh06] (the hard part), with subsequent expansion to include more amplifier models by Tim Goetze (the easy part). 

Due to the nature of the original circuit, the bass, mid and treble controls are not operating independently as in a modern three-way equaliser. 

All but the last model are using the procedural implementation with continuously updated direct form II filters and sample rate independency.  It must be noted that the "DC 30" preset has been included despite the slight difference in layout between the British original and the Fender circuit. 

The "5F6-A LT" model is using the lattice filter implementation mentioned in the paper, operating on precomputed simulation data for 44.1 kHz. 

AmpVTS 2592

Idealised guitar amplification

1 in, 1 out

Frequency response with default settings
 Output for 250 Hz sine wave input, default settingsSpectrum of the sine wave output
controlmin.00 max.00 
over0.001.002.00
0.00 2x
1.00 4x
2.00 8x
gain0.000.251.00
bright0.000.501.00
power0.000.501.00
tonestack0.001.008.00
0.00 basswoman
1.00 twin
2.00 wookie
3.00 DC 30
4.00 juice 800
5.00 stanford
6.00 HK 20
7.00 nihon ace
8.00 porky
bass0.000.251.00
mid0.001.001.00
treble0.000.751.00
attack0.000.251.00
squash0.000.501.00
lowcut0.000.751.00

Tracing the stages of an idealised circuit, this plugin aims to recreate those features of traditional guitar amplification electronics that have proved musically useful, and to provide them with the most musical rather than the most authentic ranges of adjustment and character.  CabinetIV provides matching recreations of loudspeaker cabinets. 

The processor consists – with some interconnections – of a configurable lowcut input filter, a ToneStack circuit of the procedural variant, a saturating 'preamp' stage with adjustable gain and variable distortion asymmetry followed by the bright filter, compression characteristics determined by the attack and squash controls and finally a 'power amp' stage with the amount of saturation depending on both gain and power settings. 

Sound quality and computational load can be balanced with the over control affording a choice of 2x or 4x oversampling with 32-tap filters, or 8x with 64 taps.  Lower quality settings will sound slightly grittier and less transparent, and at high gain aliasing may become audible. 

CabinetIV 2606

Idealised loudspeaker cabinet

1 in, 1 out

Sample impulse responseSpectrum at fs=44.1 kHz
controlmin.00 max.00 
model0.0012.0024.00
0.00 mega wookie 800
1.00 mega wookie 812
2.00 mega wookie 828
3.00 mega wookie 868
4.00 mega wookie 908
5.00 mega wookie 912
6.00 mega wookie 936
7.00 mega wookie 968
8.00 mega wookie 992
9.00 unmatched
10.00 twin A
11.00 twin B
12.00 twin C
13.00 blue A
14.00 blue B
15.00 tweedie A
16.00 tweedie B
17.00 mini wookie A
18.00 mini wookie B
19.00 rosie A
20.00 rosie B
21.00 indigo
22.00 angel
23.00 sixty-one
24.00 sixty-two
gain-24.000.0024.00dB

This plugin applies an acoustic instrument body modeling technique[bank07] to recreate the timbre-shaping of an electric instrument amplifier's speaker cabinet. 

A selection of several hundred response shapes automatically created in the likeness of classic cabinets has been narrowed down to a handful of idealised tones.  As with AmpVTS, which provides a matching recreation of traditional guitar amplification, the design and selection process has been ruled by musicality over fidelity. 

The filter banks implemented are 64 2nd order IIR and one 128-tap FIR in parallel.  Their parameter presets are shared between the 44.1 and 48 kHz sample rates, the higher rate implying that timbre brightens up.  Higher sample rates produce the same tones by rate conversion, up to 192 kHz. 

Despite the complexity, computational load is very modest thanks to vector arithmetic if a hardware implementation is available – if not, however, the load will be easily an order of magnitude higher, and possibly found to be prohibitive on less powerful hardware. 

Plate 1779

Versatile plate reverb

1 in, 2 out

Impulse response mixed to mono
controlmin.00 max.00 
bandwidth0.000.751.00
tail0.000.501.00
damping0.000.251.00
blend0.000.251.00

This reverb processor is an adaptation of the design discussed by Jon Dattorro[dat97a] who attributes it to David Griesinger.  A smooth reverb response is achieved by a network of twelve delay lines, two of which are modulated very subtly, in a chorus-like fashion. 

The bandwidth control reduces high-frequency content before it enters the 'tank', while damping controls how quickly the reverberating tail darkens. 

PlateX2 1795

Versatile plate reverb, stereo inputs

2 in, 2 out

This version of the Plate reverberator comes with stereo inputs. 

Saturate 1771

Various overdrive models, 8x oversampled

1 in, 1 out

Output for 250 Hz sine wave input at 24 dB gain and bias 0.3Spectrum of the above
controlmin.00 max.00 
mode0.001.0011.00
0.00 bypass
1.00 atan
2.00 atan15
3.00 clip
4.00 one5
5.00 one53
6.00 clip3
7.00 clip9
8.00 sin1
9.00 pow7
10.00 tanh
11.00 rectify
gain-24.000.0072.00dB
bias0.000.001.00

Please note that plugin embodies a very basic building block of audio DSP, not an elaborate effect that will be pleasing to hear right away.  To turn saturation into a musically useful effect it is usually combined with some sort of filtering and dynamics modulation. 

The mode control chooses from a selection of clipping functions of varying character.  Even-order harmonics can be added with the bias setting.  Towards the maximum, sound will start to get scratchy and eventually starve away. 

The plugin is 8x oversampled with 64-tap polyphase filters, effectively suppressing aliasing noise for most musical applications.  Changes to the bias control induce short-lived energy at DC in the output.  In order to reduce the computational load incurred when evaluating transcendental functions at eight times the nominal sample rate, these are approximated roughly, using Chebyshev polynomials whose coefficients depend on the amplitude's floating point representation exponent. 

Spice 2603

Not an exciter

1 in, 1 out

Example bass harmonic synthesis for 100 Hz sine input
controlmin.00 max.00 
lo.f50.00141.42400.00Hz
lo.compress0.000.501.00
lo.gain0.000.251.00
hi.f400.001414.215k.00Hz
hi.gain0.000.251.00

This effect plugin aims to enhance clarity of perception of thin or muddy sound.  It can also be very useful when more bass register definition or more treble presence is called for and generic equalisation does not work without noticeably raising signal and/or noise level.  A stereo version is available as SpiceX2. 

Bass and treble portions of the signal are isolated using two 24 dB/octave Linkwitz-Riley crossover networks[lr76] to ensure a flat frequency response at zero effect intensity (controlled through the .gain settings).  After compression, a polynomial waveshaper synthesises the first three overtones of the bass register.  This enhances the perception of the fundamental frequency, being the difference tone of these harmonics.  Treble band processing applies an analog-style saturation function without compression.  Synthesised harmonic content is shaped through bandpass and highpass filters and mixed back into the crossover sum signal. 

SpiceX2 2607

Not an exciter

2 in, 2 out

Stereo version of Spice.  Bass compression is governed by the sum of both channels, as in CompressX2.  Nevertheless, the amount of harmonic generation differing between the two channels can have subtle effects on the stereo image. 

ChorusI 1767

Mono chorus/flanger

1 in, 1 out

controlmin.00 max.00 
t2.5010.0040.00ms
width0.502.8810.00ms
rate0.001.255.00Hz
blend0.001.001.00
feedforward0.000.251.00
feedback0.000.001.00

A standard mono chorus with optional feedback.  The parameter range suits subtle effects as well as all-out flanging. 

Modifying the delay time t when feedback is active will cause audible 'zipper' noise. 

PhaserII 2586

Mono phaser with fractal modulation

1 in, 1 out

controlmin.00 max.00 
rate0.000.251.00
lfo0.000.001.00
0.00 sine
1.00 fractal
depth0.001.001.00
spread0.000.751.00
resonance0.000.251.00

This take on the classic effect features two modulation choices, traditional sine-based periodicity or smoothened fractal oscillation. 

Very high resonance settings can cause self-oscillation peaking in excess of 0 dB. 

AutoFilter 2593

Modulated filter cascade

1 in, 1 out

controlmin.00 max.00 
over0.001.003.00
0.00 none
1.00 2x
2.00 4x
3.00 8x
mode0.001.001.00
0.00 low pass
1.00 band pass
filter0.001.004.00
0.00 breathy
1.00 fat A
2.00 fat B
3.00 fat C
4.00 fat D
gain0.006.0024.00dB
f20.00857.233k.00Hz
Q0.000.001.00
range0.000.751.00
lfo/env0.000.251.00
rate0.000.251.00

A versatile selection of filters of varying character in band- and lowpass configuration.  The cutoff frequency can be modulated by both the input signal envelope and by a Lorenz attractor.  The default settings provide some sort of an automatic wah effect. 

The extent of filter modulation is set through the range parameter.  The shape of the modulation is mixed from the attractor and the envelope according to the lfo/env balance.  The attractor signal itself changes with the x/z parameter. 

Filter stage gain can be used to add inter-stage saturation.  To prevent this from causing audible aliasing, the plugin can be run in oversampled mode, at ratios selectable through the over control. 

At very high Q and f combined, the filter stability may become compromised.  Computational load varies greatly with the over and filter settings. 

Scape 2588

Stereo delay with chromatic resonances

1 in, 2 out

controlmin.00 max.00 
bpm30.0097.00164.00
divider2.003.004.00
2.00 eighths
3.00 triplets
4.00 sixteenths
feedback0.000.751.00
dry0.000.501.00
blend0.001.001.00
tune415.00440.00467.00Hz

A stereo delay with resonant filters and fractally modulated panning. 

The delay times are set through the bpm control and the divider adjustment.  Triplet and sixteenth settings create a dotted rhythm.  With every beat, the filter resonance frequencies are retuned to random steps on an equal-tempered chromatic scale, to the reference set through the tune control. 

Eq10 1773

10-band equaliser

1 in, 1 out

controlmin.00 max.00 
31 Hz-48.000.0024.00dB
63 Hz
125 Hz-48.000.0024.00dB
250 Hz
500 Hz
1 kHz-48.000.0024.00dB
2 kHz
4 kHz
8 kHz-48.000.0024.00dB
16 kHz

A classic octave-band biquad-filter design, basically a direct digital translation of the analog original.  There's also a stereo version (Eq10X2). 

Frequency bands centered above Nyquist are automatically disabled. 

Eq10X2 2594

Stereo 10-band equaliser

2 in, 2 out

The controls of this stereo version of Eq apply to both channels. 

Eq4p 2608

4-band parametric equaliser

1 in, 1 out

a.gain=-4 a.f=240 a.Q=.9 ∼ b.Q=.8 b.gain=24 ∼ c.f=900 c.Q=.99 c.gain=-24 ∼ d.gain=24
controlmin.00 max.00 
a.mode-1.000.002.00
-1.00 off
0.00 lowshelve
1.00 band
2.00 hishelve
a.f20.00102.8714k.00Hz
a.Q0.000.251.00
a.gain-48.000.0024.00dB
b.mode1.00
b.f20.00529.1514k.00Hz
b.Q0.50
b.gain0.00
c.mode1.00
c.f20.00529.1514k.00Hz
c.Q0.25
c.gain0.00
d.mode2.00
d.f20.002721.7814k.00Hz
d.Q0.25
d.gain0.00

Four adjustable biquad filters in series, in a vector arithmetic implementation.  The default setup is an identity filter with a mode configuration of lowshelve, band, band, hishelve, all at zero gain. 

The Q control value maps non-linearly to actual filter Q: a zero control value results in filter Q of ½, a value of 0.3 corresponds to a Butterworth-equivalent Q of ½√2, and the maximum control setting of 1 results in a filter Q of 50. 

Parallelisation of the serial filter topology causes its response to lag by three samples. 

Control response is smoothened by crossfading between two filter banks. 

Wider 1788

Stereo image synthesis

1 in, 2 out

Left and right output channels at maximum width
controlmin.00 max.00 
pan-1.000.001.00
width0.001.001.00

In addition to provoding a basic panorama control, a perception of stereo width is created using complementary filters on the two output channels. 

The output channels always sum to a flat frequency response. 

The design of this plugin owes to the Orban 245F Stereo Synthesizer[orban93]. 

Narrower 2595

Stereo image width reduction

2 in, 2 out

controlmin.00 max.00 
mode0.000.001.00
0.00 crossfeed mixing
1.00 mid/side processing
strength0.000.251.00

This plugin reduces the width of a stereophonic signal.  Its primary use is for headphone listening to music that was panned very creatively. 

Mid/side processing tends to sound more transparent for moderate strength settings.  However, it will more strongly attenuate signals that are panned to the far sides of the stereo image (rarely encountered in contemporary music production anymore but quite common, for example, on early Beatles recordings). 

Sin 1781

Sine wave generator

1 out

controlmin.00 max.00 
f0.00100.0020k.00Hz
volume0.000.501.00

The old friend, indispensable for testing and tuning. 

White 1785

Noise generator

1 out

controlmin.00 max.00 
volume0.000.751.00

Mostly white pseudonoise, mixed and filtered from the output of two Dattorro multibit generators[dat02]. 

Fractal 1774

Audio stream from deterministic chaos

1 out

lorenz, only x (y similar)lorenz, only zlorenz, default parametersroessler, only x (y similar)roessler, only zroessler, default parameters
controlmin.00 max.00 
rate0.000.251.00
mode0.000.001.00
0.00 lorenz
1.00 roessler
x0.001.001.00
y0.000.001.00
z0.000.001.00
hp0.000.501.00
volume0.000.501.00

This plugin turns the oscillating state of a fractal attractor into an audio stream.  The result is something that most would without much hesitation classify as noise. 

The Lorenz attractor[lorenz63] is one of the earliest models of deterministic chaos discovered deriving from the Navier-Stokes equationswp. 

The Rössler system[roessler76] is similar but contains only one non-linearity. 

The x, y and z controls set the amplitude of the respective variables of the attractor state in the output audio signal. 

The attractor state variables are scaled and translated to stay mostly within the [-1,1] range and not contain a DC offset.  Nevertheless, due to the unpredictable nature of the systems, peak limits cannot be guaranteed.  In addition, some energy near DC may be produced; therefore a configurable high-pass filter is part of the circuit.  It can be turned off by setting the hp parameter to zero. 

The output signal varies with the sample rate. 

Click 1769

Metronome

1 out

Spectrum of default clickbeep model
controlmin.00 max.00 
model0.001.003.00
0.00 box
1.00 stick
2.00 beep
3.00 dirac
bpm4.0063.00240.00
volume0.000.751.00
damping0.000.751.00

A sample-accurate metronome.  Two simplistic modal synthesis models are available for the click: box is a small wooden box struck with a soft wooden mallet, stick a scratchy stick hit.  In addition, there's also a very synthetic beep, and finally dirac, a very nasty single-sample pulse of 0 dB amplitude and little immediate musical use. 

All click sounds are synthesised once when the plugin is loaded and then played back from memory. 

CEO 1770

Chief Executive Oscillator

1 out

controlmin.00 max.00 
ppm30.0080.50232.00
volume0.000.751.00
damping0.000.001.00

The Chief Executive Oscillator forever calls for more profit. 

Sound data created with the flite[flite] application. 

Install

To build from source code, a modern UNIX environment with the GNU C++ compiler[gcc] is required. 

$ tar xfj caps_0.9.15.tar.bz2
$ cd caps-0.9.15
$ ./configure.py
$ make
$ sudo make install

On compatible Linux systems, configure.py enables the use of SSE instructions to provide hardware acceleration for vector arithmetic. 

OSX builds are configured to contain both 32- and 64-bit code. 

Changelog

0.9.15
  * no-vector-arithmetic compilation fixed 

0.9.14
  * AutoFilter x/y parameter eliminated
  * Fractal hp changed to be configurable, attractors recalibrated
  * documentation polish

0.9.13
  * Eq4p softens drastic parameter changes by crossfading static filters
  * Eq4p employing single v4f filter, slightly quicker
  * Eq4p 'off' filter mode
  * documentation and interface polish

0.9.12
  * non-SSE compilation fixed

References and Acknowledgements

Tim Goetze would like to express his gratitude to David T. Yeh for the ToneStack contribution and related discussion, to Sampo Savolainen, Klaus Tenner, Fons Adriaensen, Pete Leigh, Paul Davis, Paul Winkler, Damon Chaplin, Jonathan Liles and Niclas Wretström for discussion, and to:

[bank07]

Balázs Bank, "Direct Design of Parallel Second-Order Filters for Instrument Body Modeling",
Proc. of the Int. Computer Music Conference (ICMC07) Copenhagen, Denmark, Aug. 2007, vol. I., pp. 458-465.

[dat02]

Jon Dattorro, "Effect Design Part III: Oscillators: Sinusoidal and Pseudonoise",
J. Audio Eng. Society, vol. 50, No. 3 / March 2002.

[dat97a]

Jon Dattorro, "Effect Design Part I: Reverberator and Other Filters",
J. Audio Eng. Society, vol. 45, No. 9 / September 1997.

[dat97b]

Jon Dattorro, "Effect Design Part II: Delay-Line Modulation and Chorus",
J. Audio Eng. Society, vol. 45, No. 10 / October 1997.

[flite]

"flite: a small simple speech synthesizer",
Carnegie Mellon University 2009,
http://cmuflite.org/

[gcc]

Richard Stallman and contributors,
GCC, the GNU Compiler Collection,
http://gcc.gnu.org/

[gnuplot]

Thomas Williams, Colin Kelley and many others,
gnuplot,
http://www.gnuplot.info/

[hollasch]

Steve Hollasch, "IEEE Standard 754 Floating Point Numbers", 2005
http://steve.hollasch.net/cgindex/coding/ieeefloat.html

[jackd]

Paul Davis and contributors,
The JACK Audio Connection Kit,
http://jackaudio.org/

[ladspa]

Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld,
"Linux Audio Developer's Simple Plugin API (LADSPA)" version 1.1,
Linux Audio Developers mailing list, 2002.
http://www.ladspa.org/

[lorenz63]

Edward N. Lorenz, "Deterministic Nonperiodic Flow",
Journal of the Atmospheric Sciences vol. 20, 1963, pp. 130-141.

[lr76]

Siegfried Linkwitz, "Active Crossover Networks for Noncoincident Drivers",
J. Audio Eng. Society, vol. 24, No. 1 / February 1976.

[maxima]

Various authors,
Maxima, a Computer Algebra System,
http://maxima.sourceforge.net/

[musicdsp]

The music-dsp mailing list and its archive,
http://musicdsp.org/
notably [rbj], Andrew Simper's state-variable filter, Bram de Jong's phaser

[octave]

John W. Eaton and contributors,
GNU Octave,
http://octave.org/

[orban93]

AKG Acoustics,
245F Manual, San Leandro, California, USA, 1993.

[py]

Guido van Rossum and collaborators,
Python Programming Language,
http://python.org/

[rbj]

Robert Bristow-Johnson, "Cookbook formulae for audio EQ biquad filter coefficients"

[roessler76]

O.E. Rössler, "An Equation for Continuous Chaos",
Physics Letters, vol. 57, Issue 5, 12 July 1976, pp. 397–398.

[seanderbits]

Sean Eron Anderson, "Bit Twiddling Hacks",
http://graphics.stanford.edu/~seander/bithacks.html

[spice73]

Laurence W. Nagel and D.O. Pederson, "SPICE (Simulation Program with Integrated Circuit Emphasis)",
Memorandum No. ERL-M382, EECS Department, University of California, Berkeley, USA, April 1973.

[stk]

Perry R. Cook and Gary P. Scavone,
The Synthesis ToolKit in C++ (STK)
http://ccrma.stanford.edu/software/stk/

[swh]

Steve W. Harris,
swh-plugins,
http://plugin.org.uk/

[yeh06]

D.T. Yeh and J.O. Smith, "Discretization of the '59 Fender Bassman Tone Stack",
Proc. of the Int. Conf. on Digital Audio Effects (DAFx-06), Montreal, Quebec, Canada, Sept. 18–20, 2006, pp. 1-6.
also https://ccrma.stanford.edu/~dtyeh/tonestack/

[yeh08]

D.T. Yeh, B. Bank, and M. Karjalainen, "Nonlinear modeling of a guitar loudspeaker cabinet",
Proc. of the Int. Conf. on Digital Audio Effects (DAFx-08), Espoo, Finland, Sept. 1–4, 2008, pp. 89-96.