ArneodoCoulletTresser:
Filter:
Classes (extension) | UGens > Generators > Chaotic

ArneodoCoulletTresser : MultiOutUGen : UGen : AbstractFunction : Object
ExtensionExtension

2-species Predator-Prey model
Source: PredPrey.sc

Description

UGen implementing 4th order Runge-Kutta approximation of a 3-species Predator-Prey model as specified by Arneodo Coullet and Tresser:

x' = x * (1.1 - x / 2 - y / 2 - z / 10)
y' = y * (-0.5 + x / 2 + y / 10 - z / 10)
z' = z * (alpha + 0.2 - alpha * x - y / 10 - z / 10)

with

alpha = Range(0, 2)

Implemented by Till Bovermann inspired by Gary William Flake's Book "The Computational Beauty of Nature". Implementation following on Lance Putnam's chaos UGens and MCLDs ChaosUGens.

http://tai-studio.org

Class Methods

ArneodoCoulletTresser.categories

ArneodoCoulletTresser.ar(freq: 22050, alpha: 1.5, h: 0.05, xi: 0.5, yi: 0.5, zi: 0.5, mul: 1, add: 0)

Arguments:

freq

update frequency, best set to Nyquist frequency. To modulate tonal qualities, use h.

alpha

meta parameter (shoud be between 0 and 2)

h

step size for the approximation

xi

initial value for x, resets the UGen when changed

yi

initial value for y, resets the UGen when changed

zi

initial value for z, resets the UGen when changed

mul

multiply withthis

add

add that

ArneodoCoulletTresser.equation

returns

x' = x * (a - b * y)
y' = y * (c * x - d)

Inherited class methods

Instance Methods

Inherited instance methods

Examples

{Splay.ar(ArneodoCoulletTresser.ar(SampleRate.ir*0.5, alpha: MouseX.kr(1.2, 1.7, 4), h: MouseY.kr(0.2, 0.4, 2)) * [1, 1, 0.1])}.play
(
Ndef(\pp).addSpec(\freq, [0.1, 24000, \exp]);
Ndef(\pp).addSpec(\h, [0.01, 1, \exp]);
Ndef(\pp).addSpec(\which, [0, 2, \lin]);
Ndef(\pp).addSpec(\alpha, [1, 1.7, \lin]);

Ndef(\pp, {
    var which = \which.kr(0, 0.1);
    var x, y, z;
    # x, y, z = ArneodoCoulletTresser.ar(SampleRate.ir*0.5, alpha: \alpha.kr(1.5), h: \h.kr(0.01));
    # x, y, z = [x, y, z] - 0.5 * 0.1;
    [[x, y, z], [y, z, x]].collect{|chan|
        SelectX.ar(which, chan);
    }

});
)

Ndef(\pp).scope;

Ndef(\pp).gui;