GutterSynth:
Filter:
guttersynth-sc/plugins/GutterSynth (extension) | UGens  >  Generators  >  Chaotic

GutterSynth
ExtensionExtension

A chaotic physical modelling synth

Description

GutterSynth is a physical modelling synthesizer based on chaotic, coupled duffing oscillators resonating through a modal synthesis type of physical modelling system. The oscillators are used to excite two banks of (fairly expensive but nicely sounding biquad) resonant bandpass filters to create the impression of acoustics.

Gutter Synth was originally written in Java and Max/MSP by Tom Mudd. It was ported to C++ and SuperCollider by Scott Carver and Mads Kjeldgaard.

WARNING: Be careful when modulating the bank parameters (all the ones that are supplied by arrays). If you want to change these values after init, you must use a lag to avoid filter explosions.

Differences from the original GutterSynth

The overall design of Tom Mudd's original algorithm have generally been kept faithful to the original, but in the process of porting the code from the original GutterSynth written in Java, a number of smaller and bigger tweaks were made.

Some of the expensive functions were replaced by more effective approximations, the distortion algorithms were cleaned up and some of them replaced with new ones and variable oversampling was added as well.

The original had two outputs: One for the sound and one for the modulation signal but the latter was removed in this port to improve safety (sometimes these values were between +/- 100).

Internal flushing was added to the duffing oscillator to avoid a build up of NaN's that would cause it to stop oscillating as well as the Biquad filters to avoid them recirculating bad values (that would make them explode or blast out DC).

Class Methods

.ar

Arguments:

gamma

One of the chaotic parameters. Values between 0 and 10 work nicely.

omega

One of the chaotic parameters. Values between 0.0000001 and 1.0 work nicely.

c

A sort of damping parameter. Values between 0 and 1 work nicely.

dt

The rate of the internal oscillator. High values result in a higher frequency.

singlegain

Gain of the synth overall

smoothing

Apply a low pass filter to the chaotic oscillator to interpolate it's values and make it more smooth. Values between 0 and 5 work nicely, but you can experiment beyond those values.

togglefilters

Turn filters on or off. You will most likely want this to be on. If set to off, you will get a clipped raw output from the duffing oscillator.

distortionmethod

Choose a distortion algorithm. This is set at init and cannot be changed at run time.

0 = Hard clipping 1 = A slightly softer clip, 2 = Tanh-based distortion, 3 = Atan approximated distortion, 4 = Tanh approximated distortion

oversampling

Amount of oversampling. More oversampling results in more CPU usage but reduces aliasing from the distortion.

0 = No oversampling, 1 = x2, 2 = x4, 3 = x8, 4 = x16

enableaudioinput

Boolean. If false, will use an internal, chaotic sine wave oscillator, if true it will use whatever audio is at the audioinput argument.

audioinput

An audio input that may be used to excite the synth.

gains1

A list of 24 values for the gains of bank 1.

gains2

A list of 24 values for the gains of bank 2.

freqs1

A list of 24 values for the resonant frequencies of bank 1.

NOTE: Use Classes/Lag if supplying control rate parameters here. Audio rate not allowed.
qs1

A list of 24 values for the q values of the filters of bank 1. Values between 10.0 and 1000 work nicely. Be careful around the low values. Depending on the other parameters, values under 10 may be dangerous and cause filter explosions.

NOTE: Use Classes/Lag if supplying control rate parameters here. Audio rate not allowed.
freqs2

A list of 24 values for the resonant frequencies of bank 2.

NOTE: Use Classes/Lag if supplying control rate parameters here. Audio rate not allowed.
qs2

A list of 24 values for the q values of the filters of bank 2. Values between 1.0 and 1000 work nicely. Be careful around the low values. Depending on the other parameters, values under 10 may be dangerous and cause filter explosions.

NOTE: Use Classes/Lag if supplying control rate parameters here. Audio rate not allowed.

Examples