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
|
class:: DoubleWell3
summary:: Forced DoubleWell Oscillator
categories:: UGens>Generators>Chaotic
related:: Classes/DoubleWell, Classes/DoubleWell2
//SLUGens released under the GNU GPL as extensions for SuperCollider 3, by Nick Collins, http://composerprogrammer.com/index.html
keyword:: SLUGens
Description::
Runge-Kutta ODE solver implementation of the chaotic Forced Double Well Oscillator (see Strogatz, Steven H. (1994) Nonlinear Dynamics and Chaos. Addison-Wesley, Reading, MA. pp441-7).
D2x +delta*Dx-x+x^3 = F
y = Dx
All inputs can have .kr rate UGens plugged in. F is itself an arbitrary audio rate UGen input forcing term
classmethods::
method::ar
argument::reset
restart with new initial conditions sampled from initx, inity
argument::rate
update rate for x and y
argument::f
forcing term, an arbitrary audio rate input
argument::delta
equation constant
argument::initx
reset value for x
argument::inity
reset value for y
Examples::
code::
//bass synth
{Out.ar(0,Pan2.ar(DoubleWell3.ar(f:SinOsc.ar(MouseX.kr(0,200),0,MouseY.kr(0.5,4.0))),0.0))}.play
//plotting check of first samples
{DoubleWell3.ar}.plot(0.05, minval:-1, maxval:1)
//gradually changing
{Pan2.ar(DoubleWell3.ar(0,0.05,LFSaw.ar(Line.kr(10,1000,10)),Line.kr(0.0,0.3,20)),0.0)}.play
//controlled - midscreen amplitude jump
{Pan2.ar(DoubleWell3.ar(0,0.05,LFSaw.ar(MouseX.kr(10,1000)),MouseY.kr(0.0,0.5)),0.0)}.play
//triggering
{DoubleWell3.ar(Impulse.kr(MouseY.kr(0.01,100, 'exponential')),0.1,LFCub.ar(MouseX.kr(10,1000, 'exponential')),MouseY.kr(0.0,1.0),LFNoise0.kr(2.3,0.2,0.8),LFNoise1.kr(2.37,0.2,0.8))}.play
//AudioIn as forcing
{Pan2.ar(DoubleWell3.ar(0,0.05,LPF.ar(AudioIn.ar(1),100,MouseX.kr(0,1000)),MouseY.kr(0.0,0.5)),0.0)}.play
::
|