File: RosslerL.schelp

package info (click to toggle)
supercollider-sc3-plugins 3.7.1~repack-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 14,332 kB
  • ctags: 11,704
  • sloc: cpp: 140,180; lisp: 14,746; ansic: 2,133; xml: 86; makefile: 82; haskell: 21; sh: 8
file content (73 lines) | stat: -rw-r--r-- 1,535 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
CLASS:: RosslerL
summary:: Rossler chaotic generator
categories:: UGens>Generators>Chaotic

DESCRIPTION::
A strange attractor discovered by Otto Rossler based on work in chemical kinetics.
The system is composed of three ordinary differential equations:
	
	x' = - y - z
	y' = x + ay
	z' = b + z(x - c)

The time step amounthdetermines the rate at which the ODE is evaluated.  Higher values will increase the
rate, but cause more instability.  A safe choice is the default amount of 0.05.


CLASSMETHODS::

METHOD:: ar
argument:: in

argument:: freq
iteration frequency in Hertz

argument::a, b, c
equation variables

argument::h
integration time step

argument::xi
initial value of x

argument::yi
initial value of y

argument::zi
initial value of z


EXAMPLES::

These first examples treat RosslerL as a single-output UGen (i.e. using x only):

code::
// vary frequency - these parameters are for "one-pulse" orbit
{ RosslerL.ar(MouseX.kr(20, SampleRate.ir), 0.36, 0.35, 4.5) * 0.3 }.play(s);

// randomly modulate params
(
{ RosslerL.ar(
	SampleRate.ir, 
	0.2, // First variable tends to lead to NaN if modulated in this example
	LFNoise0.kr(1, 0.01, 0.2),
	LFNoise0.kr(1, 0.2, 0.7)
) * 0.2 }.play(s);
)

// as a frequency control
{ SinOsc.ar(Lag.ar(RosslerL.ar(MouseX.kr(1, 200)))*800+900)*0.4 }.play(s);
::

An example utilising the three different outputs as pitch, PWM and pan values (respectively):

code::
(
{
# x,y,z = RosslerL.ar(MouseX.kr(1, 200));
Pan2.ar(Pulse.ar(x.range(100,1000), y.range(0,1), 0.3), z)
}.play(s)
)
::