C*A P S Plugins Compatibility CAPS for Electric Guitar Operation LADSPA Extensions Contact Download Install Recent Changes References | ### the C* Audio Plugin Suite #### Version 0.9.24  ·  November 2014 CAPS is a collection of audio plugins comprising basic virtual guitar amplification and a small range of classic effects, signal processors and generators of mostly elementary and occasionally exotic nature. The plugins aim to combine the highest sound quality with computational efficiency and zero latency*. CAPS is developed by Tim Goetze**, with the exception of the ToneStack plugin which is the work of David T. Yeh. #### A - C AmpVTS AutoFilter CEO CabinetIII CabinetIV ChorusI Click Compress #### E - P Eq10 Eq4p EqFA4p Fractal Narrower Noisegate PhaserII Plate #### S - W Saturate Scape Sin Spice ToneStack White Wider ### Considerations #### Compatibility Being a LADSPA[ladspa]wp library, CAPS 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, most compatible host applications will be found on Linux systems. Some features of CAPS are designed to make use of hardware-accelerated vector-4 arithmetic (as usually present on contemporary x86-compatible hardware).  The code can be compiled to run without hardware acceleration (for example, most ARM platforms), but the resulting binary must be expected to be slower than equivalent code explicitly designed for scalar arithmetic. #### CAPS for Electric Guitar To produce a workable digital audio stream from an electric guitar, it is vital that the instrument is connected through a high-impedance input device.  Most USB audio interfaces do not fall into this category, regardless of their being sold specifically as "guitar interfaces". Connecting an electric guitar with passive pickups to a low-impedance input will limit the resonance of the pickups and cut high-frequency content.  The result is a muddy tone with little definition that is unfit for further processing. The simplest recommended virtual amplification setup consists of → Noisegate → AmpVTS → CabinetIV → Plate ⇉ #### Operation ##### Realtime Use Computational load is subject to changing with some parameter choices.  For example, it will scale about linearly with the oversampling ratio where that is adjustable.  In some cases, CPU load will also vary slightly with the character of the signal processed. ##### Latency Oversampled plugins have a theoretical latency of zero; however, the oversampling filters exhibit pre-ringing leading into a peak-to-peak latency roughly equivalent to the size of the filter kernel size divided by the oversampling ratio.  For example, 4x oversampling with 32-tap filters results in a peak delay of 8 samples. All other plugins have a latency of zero unless noted otherwise. ##### Sample Rate The recommended range of operation is 44.1 or 48 kHz.  Some plugins may not operate as expected, or not operate at all, at different sample rates. ##### 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 All plugins are extensively tested to verify that no denormal numberswp are produced.  Naturally, these tests cannot exhaust all possible plugin parameter combinations.  It is not impossible that an unfortunate combination of parameters and signal may still give rise to denormals. #### LADSPA Extensions CAPS sets
    #define LADSPA_PORT_GROUP 16
in the `LADSPA_PortDescriptor` array to denote ports which start a logical group. ##### Control Units Where applicable, unit designations are appended to control labels in parentheses following a single space character, for example "`gain (dB)`".  Host applications might consider stripping the unit from the control's label and attaching it to the representation of its value, 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 think you have found a bug in CAPS, or if you want to make a related or unrelated remark or inquiry please write to tim@quitte.de. ##### Patches Please do not send patches without asking first.  By submitting a patch, you claim sole authorship and agree that your submission becomes mine to use in any way I see fit, in exchange for no obligation on my part except attribution in the CAPS documentation. ### Noisegate 2602 #### Attenuating hum and noise #### →⚫→
open | -60.00 | -45.00 | 0.00 | dB
attack | 0.00 | 0.00 | 5.00 | ms
close | -80.00 | -60.00 | 0.00 | dB
mains | 0.00 | off | Hz
| 50.00 | global
| 60.00 | imperial
This effect plugin attenuates the signal when it is deemed to be background noise. The gate opens when the signal's instantaneous amplitude exceeds the opening threshold.  The time it takes to reach maximum volume can be set with the `attack` control.  As soon as the signal's RMS power level drops below the closing threshold, the gate closes.  It takes a fixed time of 20 ms to reach the full attenuation of 60 dB. To cope with powerline hum as often present in signals from electric guitars, a notch filter can be activated by selecting a non-zero `mains` frequency.  The filter will prevent this frequency from contributing to the signal power measurement.  This allows a lower closing threshold setting without mains hum keeping the gate open unduly.  The default `mains` setting is 50 Hz. ### Compress 1772 #### Compressor and saturating limiter #### →⚫→ Frequency response, default settings, fs=48 kHz
measure | 0.00 | peak |
| 1.00 | rms
mode | 0.00 | no limiting |
| 1.00 | saturating 2x
| 2.00 | saturating 4x
threshold | 0.00 | 0.50 | 1.00 |
strength | 0.00 | 0.25 | 1.00 |
attack | 0.00 | 0.75 | 1.00 |
release | 0.00 | 0.50 | 1.00 |
gain | -12.00 | 3.00 | 18.00 | dB
state → |  | 0.00 |  | dB
This compressor has originally been designed to create natural-sounding sustain for the electric guitar without sacrificing its brightly percussive character.  However, if you can live with its idiosyncratic nature that resembles old valve compression a lot more than contemporary hardware, 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 still maintain a natural sound, the design catches the power spikes that frequently occur in the attack phase of musical sounds with a soft saturation circuit, enforcing a strict limit on the output level and converting any extra energy into additional harmonic content.  Saturating operation is the default setting of the `mode` control.  Two anti-aliasing options are available, 2x oversampling with 32-tap filters and 4x with 64 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. The current gain reduction is written to the plugin's `state` output. ### CompressX2 2598 #### Stereo compressor and saturating limiter #### ⇉⚫⇉ This stereo version of Compress applies uniform compression to both channels in proportion to their combined power. ### ToneStack 2589 #### Classic amplifier tone stack emulation #### →⚫→
model | 0.00 | basswoman |
| 1.00 | stanford
| 2.00 | wookie
| 3.00 | DC 30
| 4.00 | juice 800
| 5.00 | twin
| 6.00 | AK 20
| 7.00 | nihon ace
| 8.00 | porky
bass | 0.00 | 0.50 | 1.00 |
mid | 0.00 | 0.50 | 1.00 |
treble | 0.00 | 0.50 | 1.00 |
This emulation of the tone stack of a traditional Fender-design instrument amplifier has been devised and implemented by David T. Yeh[yeh06], with subsequent expansion to include more models by Tim Goetze. 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 `model`s are using the procedural implementation with continuously updated direct form II filters and sample rate independency.  Please note that the "`DC 30`" model ignores certain differences in topology between the British and the American circuit. ### AmpVTS 2592 #### Idealised guitar amplification #### →⚫→ Frequency response with default settings Output for 250 Hz sine wave input, `squash=0` Spectrum of the processed sine wave
over | 0.00 | 2x |
| 1.00 | 4x
| 2.00 | 8x
gain | 0.00 | 0.25 | 1.00 |
bright | 0.00 | 0.75 | 1.00 |
power | 0.00 | 0.50 | 1.00 |
tonestack | 0.00 | basswoman |
| 1.00 | stanford
| 2.00 | wookie
| 3.00 | DC 30
| 4.00 | juice 800
| 5.00 | twin
| 6.00 | AK 20
| 7.00 | nihon ace
| 8.00 | porky
bass | 0.00 | 0.25 | 1.00 |
mid | 0.00 | 1.00 | 1.00 |
treble | 0.00 | 0.75 | 1.00 |
attack | 0.00 | 0.75 | 1.00 |
squash | 0.00 | 0.25 | 1.00 |
lowcut | 0.00 | 0.50 | 1.00 |
Tracing the circuit stages of an idealised [resp. idolised] tube amplifier, this plugin aims to present a recreation of 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 main components are – roughly in order, though some interconnections exist – a configurable `lowcut` input filter, a ToneStack circuit, 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.  In addition, the circuit contains additional filters not configurable at runtime. 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. ### CabinetIII 2601 #### Simplistic loudspeaker cabinet emulation #### →⚫→ Impulse response
model | 0.00 | off |
| 1.00 | twin
| 2.00 | wookie
| 3.00 | blue
| 4.00 | indigo
| 5.00 | supra
| 6.00 | tweedie
| 7.00 | basswoman
| 8.00 | martial
| 9.00 | poser
| 10.00 | cabby
| 11.00 | angel
| 12.00 | matched
| 13.00 | yellow
| 14.00 | piquey
| 15.00 | paladin
| 16.00 | turtle
alt | 0.00 | off |
| 1.00 | on
gain | -24.00 | 0.00 | 24.00 | dB
A loudspeaker cabinet emulation far less demanding than the recommended CabinetIV.  Implemented as two sets of 31st-order IIR filters precomputed (using Prony's method) for fs of 44.1 and 48 kHz. The appropriate filter set is selected at runtime.  The `alt` switch allows the selection of the same fiter model for the alternative sample rate; at 48 kHz the alternative will sound slightly darker, at 44.1 slightly brighter.  At other sample rates, the plugin will not sound very much like a guitar speaker cabinet. ### CabinetIV 2606 #### Idealised loudspeaker cabinet #### →⚫→ Sample impulse response Spectrum at fs=44.1 kHz
model | 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.00 | 0.00 | 24.00 | dB
This plugin applies an acoustic instrument body modeling technique[bank07] to recreate the linear frequency response of an electric guitar amplifier's speaker cabinet.  Nonlinear effects[yeh08][zol09] are not emulated; missing as well is the interplay of electrical circuit and loudspeaker. A selection of several hundred frequency response approximations of recordings from classic cabinets was 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 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. ### Plate 1779 #### Versatile plate reverb #### →⚫⇉ Impulse response mixed to mono
bandwidth | 0.00 | 0.75 | 1.00 |
tail | 0.00 | 0.50 | 1.00 |
damping | 0.00 | 0.25 | 1.00 |
blend | 0.00 | 0.25 | 1.00 |
This reverb processor is an adaptation of the design discussed in [dat97a].  Tuned for a soft attack and smooth ambience, it consists of a network of twelve delay lines of varying length.  At its heart, two of these are modulated very subtly, in a chorus-like fashion. The `bandwidth` control reduces high-frequency content before it enters the 'reverb tank' while `damping` controls how quickly the reverberating tail darkens. ### PlateX2 1795 #### Versatile plate reverb, stereo inputs #### ⇉⚫⇉ This version of the Plate reverberator comes with stereo inputs. ### Saturate 1771 #### Various static nonlinearities, 8x oversampled #### →⚫→ Output for 250 Hz sine wave input at 24 dB `gain` and `bias` 0.3 Spectrum of the above
mode | 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.00 | 0.00 | 72.00 | dB
bias | 0.00 | 0.00 | 1.00 |
Please note that this 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.  The "`clip`" preset results in what is usually called a limiter.  "`rectify`" is a full-wave rectification function. 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 #### →⚫→ Harmonic synthesis for mixed 100 and 150 Hz sine input, note the appearance of the fundamental at 50 Hz
lo.f | 50.00 | 141.42 | 400.00 | Hz
lo.compress | 0.00 | 0.50 | 1.00 |
lo.gain | 0.00 | 0.25 | 1.00 |
hi.f | 400.00 | 1414.21 | 5k.00 | Hz
hi.gain | 0.00 | 0.25 | 1.00 |
This effect plugin is useful when more bass register definition or more treble presence is called for and generic equalisation does not work without also emphasising noise or raising the signal's total level.  A common application is refreshing of material that has been subjected to low-fidelity analog transmission. 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, further supported by the generation of additional overtones through intermodulation distortion.  Treble band processing applies analog-style saturation with only marginal antialiasing measures.  Synthesised harmonic content is shaped through bandpass and highpass filters and mixed back into the source sum out of the crossover. A stereo version is available as SpiceX2. ### SpiceX2 2607 #### Not an exciter either #### ⇉⚫⇉ Stereo version of Spice.  Bass compression is governed by the sum of both channels, as in CompressX2.  However, the amount of harmonic generation in both bass and treble differing between the two stereo channels can result in subtle changes to the spatial image. ### ChorusI 1767 #### Mono chorus/flanger #### →⚫→
t | 2.50 | 10.00 | 40.00 | ms
width | 0.50 | 2.88 | 10.00 | ms
rate | 0.02 | 0.08 | 5.00 | Hz
blend | 0.00 | 0.25 | 1.00 |
feedforward | 0.00 | 0.25 | 1.00 |
feedback | 0.00 | 0.25 | 1.00 |
A standard mono chorus with optional feedback.  The parameter range suits subtle effects as well as all-out flanging. ### PhaserII 2586 #### Mono phaser #### →⚫→
rate | 0.00 | 0.25 | 1.00 |
lfo | 0.00 | sine |
| 1.00 | fractal
depth | 0.00 | 0.75 | 1.00 |
spread | 0.00 | 0.75 | 1.00 |
resonance | 0.00 | 0.25 | 1.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 #### Self-modulating resonant filter #### →⚫→
mode | 0.00 | low pass |
| 1.00 | band pass
filter | 0.00 | breathy |
| 1.00 | fat
f | 20.00 | 941.60 | 3k.00 | Hz
Q | 0.00 | 0.25 | 1.00 |
depth | 0.00 | 1.00 | 1.00 |
lfo/env | 0.00 | 0.25 | 1.00 |
rate | 0.00 | 0.25 | 1.00 |
x/z | 0.00 | 1.00 | 1.00 |
A filter whose cutoff can be modulated by both the input signal envelope and a fractal low-frequency oscillator.  The default settings provide an automatic wah effect.  The filter output is routed through a soft saturation effect, an emulation of the behaviour of similar analog hardware. The total extent of cutoff modulation is set through the `range` parameter.  The shape of the modulation is mixed from the LFO and the envelope according to the `lfo/env` balance. The LFO speed is controlled by the `rate` parameter; the shape of its oscillation through `x/z` (waveform samples for the Lorenz attractor are shown with the Fractal plugin). ### Scape 2588 #### Stereo delay with chromatic resonances #### →⚫⇉
bpm | 30.00 | 97.00 | 164.00 |
divider | 2.00 | eighths |
| 3.00 | triplets
| 4.00 | sixteenths
feedback | 0.00 | 0.75 | 1.00 |
dry | 0.00 | 0.50 | 1.00 |
blend | 0.00 | 1.00 | 1.00 |
tune | 415.00 | 440.00 | 467.00 | Hz
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 #### →⚫→
31 Hz | -48.00 | 0.00 | 24.00 | dB
63 Hz |  |  |  |
125 Hz | -48.00 | 0.00 | 24.00 | dB
250 Hz |  |  |  |
500 Hz |  |  |  |
1 kHz | -48.00 | 0.00 | 24.00 | dB
2 kHz |  |  |  |
4 kHz |  |  |  |
8 kHz | -48.00 | 0.00 | 24.00 | dB
16 kHz |  |  |  |
A classic octave-band constant-Q second-order filter design, basically a direct digital translation of an analog original.  There's also a stereo version (Eq10X2). Frequency bands centered above Nyquist are automatically disabled. ### Eq10X2 2594 #### Stereo 10-band equaliser #### ⇉⚫⇉ The controls of this stereo version of Eq apply to both channels. ### Eq4p 2608 #### 4-band parametric shelving equaliser #### →⚫→ `a.f=150 a.Q=.9 a.gain=4   b.Q=.5 b.gain=-24   c.f=1.2k c.Q=1 c.gain=-12   d.gain=24`
a.mode | -1.00 | off |
| 0.00 | lowshelve
| 1.00 | band
| 2.00 | hishelve
a.f | 20.00 | 102.87 | 14k.00 | Hz
a.Q | 0.00 | 0.25 | 1.00 |
a.gain | -48.00 | 0.00 | 24.00 | dB
b.mode | 1.00 | band |
b.f | 20.00 | 529.15 | 14k.00 | Hz
b.Q |  | 0.50 |  |
b.gain |  | 0.00 |  |
c.mode | 1.00 | band |
c.f | 20.00 | 529.15 | 14k.00 | Hz
c.Q |  | 0.25 |  |
c.gain |  | 0.00 |  |
d.mode | 2.00 | hishelve |
d.f | 20.00 | 2721.78 | 14k.00 | Hz
d.Q |  | 0.25 |  |
d.gain |  | 0.00 |  |
Four adjustable biquad filters in series, in 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.  High-Q resonance may cause the filter to oscillate audibly regardless of the `gain` setting. Parallelisation of the serial filter organisation causes the output to lag by three samples. Control response is smoothened by crossfading between two filter banks, but it's not as smooth as that provided by EqFA4p. ### EqFA4p 2609 #### 4-band parametric eq #### →⚫→ 24 dB gain at 120 Hz with minimum bandwidth
a.act | 0.00 | off |
| 1.00 | on
a.f | 20.00 | 102.87 | 14k.00 | Hz
a.bw | 0.12 | 1.00 | 8.00 |
a.gain | -24.00 | 0.00 | 24.00 | dB
b.act | 0.00 | off |
b.f | 20.00 | 529.15 | 14k.00 | Hz
b.bw |  | 1.00 |  |
b.gain |  | 0.00 |  |
c.act | 0.00 | off |
c.f | 20.00 | 529.15 | 14k.00 | Hz
c.bw |  | 1.00 |  |
c.gain |  | 0.00 |  |
d.act | 0.00 | off |
d.f | 20.00 | 2721.78 | 14k.00 | Hz
d.bw |  | 1.00 |  |
d.gain |  | 0.00 |  |
gain | -24.00 | 0.00 | 24.00 |
Four Mitra-Regalia peaking equaliser filters in series; a vector arithmetic re-implementation of Fons Adriaensens "Parametric1" equaliser[fafil] with minor differences. Parallelisation of the serial filter organisation causes the output to lag by three samples. The `bw` control sets the bandwidth of a single filter, lower values corresponding to increasing resonance. ### Wider 1788 #### Stereo image synthesis #### →⚫⇉ Left and right output channels at maximum `width`
pan | -1.00 | 0.00 | 1.00 |
width | 0.00 | 1.00 | 1.00 |
In addition to providing a basic panorama control, a perception of stereo width is created using complementary filters on the two output channels. The output always sums to a flat frequency response. The design of this plugin owes to the Orban 245F Stereo Synthesizer[orban93]. ### Narrower 2595 #### Stereo image width reduction #### ⇉⚫⇉
mode | 0.00 | crossfeed mixing |
| 1.00 | mid/side processing
strength | 0.00 | 0.25 | 1.00 |
This plugin reduces the width of a stereophonic signal.  Its primary use is for preventing fatigue from listening to 'creatively panned' music on headphones. 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 or others from that time). ### Sin 1781 #### Sine wave generator #### ⚫→
f | 0.00 | 440.00 | 20k.00 | Hz
volume | 0.00 | 0.50 | 1.00 |
The old friend, indispensable for testing and tuning. ### White 1785 #### Noise generator #### ⚫→
volume | 0.00 | 0.75 | 1.00 |
Mostly white pseudonoise, mixed and filtered from the output of two Dattorro multibit generators[dat02]. ### Fractal 1774 #### Audio stream from deterministic chaos #### ⚫→ `lorenz`, only `x` (`y` similar) `lorenz`, only `z` `lorenz`, default parameters `roessler`, only `x` (`y` similar) `roessler`, only `z` `roessler`, default parameters
rate | 0.00 | 0.25 | 1.00 |
mode | 0.00 | lorenz |
| 1.00 | roessler
x | 0.00 | 1.00 | 1.00 |
y | 0.00 | 0.00 | 1.00 |
z | 0.00 | 0.50 | 1.00 |
hp | 0.00 | 0.50 | 1.00 |
volume | 0.00 | 0.50 | 1.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.  It was 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 #### ⚫→ Spectrum of default click `beep` model
model | 0.00 | box |
| 1.00 | stick
| 2.00 | beep
| 3.00 | dirac
bpm | 4.00 | 63.00 | 240.00 |
volume | 0.00 | 0.75 | 1.00 |
damping | 0.00 | 0.75 | 1.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 immediately musical use. All click sounds are synthesised once when the plugin is loaded and then played back from memory. ### CEO 1770 #### Chief Executive Oscillator #### ⚫→
ppm | 30.00 | 80.50 | 232.00 |
volume | 0.00 | 0.75 | 1.00 |
damping | 0.00 | 0.00 | 1.00 |
The Chief Executive Oscillator forever calls for more profit. Sound data created with the flite[flite] application. ### Download CAPS comes with no guarantees, in particular no guarantee of fitness for a particular purpose. The library is available here in source code, under the terms of the GNU Public License, version 3. `caps_0.9.24.tar.bz2` Please feel free to inquire in case you'd prefer a different licensing agreement. ### Install To build from source code, a modern UNIX environment with the GNU C++ compiler[gcc] is required.
    $ tar xfj caps_0.9.24.tar.bz2
    $ cd caps-0.9.24
    $ ./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. Prior to updating an installation, it is a good idea to issue
    $ sudo make uninstall
in the directory containing the source to the previous installation. ### Recent Changes
    0.9.24
      * documentation updates including switch to 48k for all spectra
      * "twin" and "stanford" tonestack models swap places
      * ChorusI feedback changed to interpolation, softens zipper noise on t changes
      * use vestigial FPTruncateMode only on pre-SSE2 hardware
      * 4x128 oversampling option removed from Compress plugins
      * state port displaying current gain reduction on Compress plugins
      * _latency port for parallel Eq
      * Saturate fade-in bug eliminated
      * Noisegate hysteresis interval lengthened
      * Click sounds "stick" brightened and "beep" shortened
      * run_adding() removed, reducing binary size by 30 % and compile time similarly
      * JVRev tail modified, low-passed
      * all ports reordered to consistent ctrl i/o audio i/o order
      * Eq4p crossfade reimplemented as equal-power squared cosine, smoother now
      * EqFA4p added
      * non-SSE v4f_shuffle surrogate fixed
        (fixes Eq4p on ARM, reported by Jens Dreske)
      * dropped 44.1 kHz ToneStackLT
      * OnePole header renamed IIR1, filters renamed LP1 and HP1
      * BiQuad header and filter renamed IIR2, SIMD *4f filters renamed *v4
      * CabinetIII (less demanding loudspeaker emulation resurrected again)
      * ChorusI port ranges and defaults adjusted
      * Compress parameter mappings and defaults adjusted

    0.9.23
      * ChorusI hp filter denormal protection added

    0.9.22
      * ChorusI blend behaviour changed
      * ChorusI parameters adjusted
      * ChorusI hp filter before delay added
      * AutoFilter parameters adjusted
      * AutoFilter 'range' port becomes 'depth'

    0.9.21
      * Eq10 Q increased
      * AmpVTS bright/compression/gain mappings adjusted
      * AutoFilter reverted to 0.9.1 version with adjusted parameters

    0.9.20
      * ToneStack ports rearranged (following "control before audio" convention)
      * ToneStack LT model selection fixed

    0.9.19
      * Noisegate partially rewritten, defaults adjusted
      * Noisegate bug causing spurious gain fluctuations in closed state eliminated
      * AmpVTS compression controls adjusted
      * influence of total gain on compression in AmpVTS reduced
      * documentation polish

    0.9.18
      * restored ToneStack presets to present the full list
      * AmpVTS 'bright' filter given slight resonance
      * AmpVTS compression control range widened

    0.9.17
      * multiple inclusion header guards changed to comply with ISO/IEC 9899:2011
        (at the insistence of Markus Elfring)
      * PlateX2 fixed to read correct port for damping parameter
        (reported by James Morris)
      * uninstall removes rdf
      * DSP::FIR4f::set_kernel size overflow in default parameter fixed
        (reported and isolated by Ricardo Crudo)
      * AmpVTS "lowcut" filter changed from 2- to 1-pole
      * "HK 20" tonestack renamed to "AK 20"
      * AmpVTS lowcut mapping changed, default lowered
      * AmpVTS highpass 1 cutoff raised
      * lowpass filter added to Noisegate's opening peak detector
      * Noisegate not NoiseGate
      * Click normal addition limited to idle loop
      * NoiseGate logic loop bug fixed, hysteresis added
      * documentation polish

    0.9.16
      * NoiseGate simplified, sped up, gain lowpassed, click bug eliminated
      * Sin smoothened, defaults updated
      * PhaserII defaults updated
      * Fractal defaults updated
      * documentation polish

    0.9.15
      * no-vector-arithmetic compilation fixed

    0.9.14
      * AutoFilter x/y parameter eliminated
      * Fractal hp changed to be configurable, attractors recalibrated
      * DSP::Lorenz instantly initialises to useful state
      * 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

    0.9.11
      * DSP::Roessler instantly initialises to useful state
      * Logarithmic port bounds and values fixed to reflect actual intent,
        affecting Spice, AutoFilter and ChorusI
      * clicking automatic gain fade on activate() eliminated in Saturate
      * Dirac merged into Click
      * Lorenz and Roessler merged into Fractal
      * JVRev removed
      * running plugins for zero frames returns without touching state
      * CabinetII and III removed
      * PhaserII sine LFO and LFO choice port added
      * PhaserII fractal modulation extensively revised
      * ChorusI rate lower bound slightly increased
      * ChorusI delay line length adjusted to accommodate full t+width range
      * all Chorus and Phaser plugins removed save for ChorusI and PhaserII
      * major documentation revision
      * Eq4p parametric equaliser plugin
      * RBJ shelving filter prototype implementation fixed
      * "2x2" stereo plugin label postfix changed to "X2"
      * Eq renamed Eq10
      * SIMD implementation updates
      * DSP::RBJ coefficient calculation rearranged
      * Click bpm range changed, default lowered substantially

    0.9.10
      * DSP::RMS protected against negative sum of squares
      * documentation updates

    0.9.9
      * OSX compilation configuration refinements

    0.9.8
      * Spice enabled by default, Spice2x2 added
      * AmpVTS default oversampling ratio changed to 4x
      * JVRev refinements
      * Cabinet gain upper limit reinstated to 24 dB
      * AutoFilter modulation slightly adjusted
      * more *ChorusII modulation smoothness
      * 1st-order IIR lp set_f fix part 2
      * 1st-order IIR lp set_f fix part 1
      * 1st order low-pass for AutoFilter modulation LFO
      * DelayTapA removed
      * README updated
      * Click 'stick' sound brightened
      * moved processor_specific_denormal_measures() to activate(), speedup

    0.9.7
      * ChorusI is back
      * AutoFilter modulation range and default parameter updates

    0.9.6
      * Click fixed to compile by older g++ versions

    0.9.5
      * AmpVTS model port moved, renamed to the more apt 'tonestack'
      * documentation refinements
      * appreciable AmpVTS speedup by going back to sample_t for accumulator
      * NoiseRatio attack time control
      * sample rate dependencies in NoiseGate removed, time constants revised
      * Tonestacks reordered
      * Plugin::over_fs
      * AmpVTS model setting fixed to follow the correct input
      * CabinetIII resurrected
      * AmpVTS 'ratio' port renamed to 'over'
      * more filters for AutoFilter, ladder stage gain control
      * AutoFilter oversampling
      * AmpVTS bias in poweramp, dcblock before output
      * AutoFilter envelope calculation fixed for fs > 153.6 kHz
      * peak/rms selection for Compress
      * AmpVTS tuning
### References and Acknowledgements I would like to thank David T. Yeh for the ToneStack contribution and related discussion, and express my gratitude to Sampo Savolainen, Klaus Tenner, Fons Adriaensen, Pete Leigh, Paul Davis, Paul Winkler, Ricardo Crudo, Jens Dreske, Damon Chaplin, Jonathan Liles, James Morris and Niclas Wretström for bug reports, fixes or related 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. #### [fafil] Fons Adriaensen, Parametric1 – 4-band parametric filter, http://kokkinizita.linuxaudio.org/linuxaudio/downloads/FIL-plugins-0.3.0.tar.bz2 #### [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", http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt #### [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. #### [zol09] Manfred Zollner, Physik der Elektrogitarre, Regensburg 2009 (Vorveröffentlichung)