chuap
Abstract
Simulates Chua's oscillator
Description
chuap
Simulates Chua's oscillator, an LRC oscillator with an active resistor, proved
capable of bifurcation and chaotic attractors, with k-rate control of circuit elements.
The oscillator can be driven into period bifurcation, and thus to chaos, because of the nonlinear response of the active resistor.
The circuit is described by a set of three ordinary differential equations called Chua's equations:
dI3 R0 1
--- = - -- I3 - - V2
dt L L
dV2 1 G
--- = -- I3 - -- (V2 - V1)
dt C2 C2
dV1 G 1
--- = -- (V2 - V1) - -- f(V1)
dt C1 C1
where f() is a piecewise discontinuity simulating the active resistor:
f(V1) = Gb V1 + - (Ga - Gb)(|V1 + E| - |V1 - E|)
A solution of these equations (I3,V2,V1)(t)
starting from an initial state (I3,V2,V1)(0)
is called a
trajectory of Chua's oscillator. The Csound implementation is a difference equation simulation of
Chua's oscillator with Runge-Kutta integration.
Note
This algorithm uses internal non linear feedback loops which causes audio result to depend on the orchestra sampling rate. For example, if you develop a project with sr=48000Hz and if you want to produce an audio CD from it, you should record a file with sr=48000Hz and then downsample the file to 44100Hz
Warning
Be careful! Some sets of parameters will produce amplitude spikes or positive feedback that could damage your speakers.
Syntax
aI3, aV2, aV1 chuap kL, kR0, kC2, kG, kGa, kGb, kE, kC1, iI3, iV2, iV1, ktime_step
Arguments
- iI3: Initial current at G
- iV2: Initial voltage at C2
- iV1: Initial voltage at C1
- kR0: Resistor R0 (R0 in the diagram)
- kC1: Capacitor C1
- kL: Inductor L (L1 in the diagram)
- kC2: Capacitor C2
- kG: Resistor G (part of the active resistor, R1 in the diagram). The G parameter is the time step, which is needed to get the same slope of the piecewise discontinuity from Ga and Gb for all sampling rates.
- kGa: Resistor V (nonlinearity term of the active resistor, one of the R2's in the diagram)
- kGb: Resistor V (nonlinearity term of the active resistor, one of the R2's in the diagram)
- kE: Size of the piecewise discontinuity simulating the active resistor
- ktime_step Delta time in the difference equation, can be used to more or less control pitch.
Output
- aI3: ??
- aV2: ??
- aV1: ??
Execution Time
- Performance
Examples
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac ;;;RT audio out
;-iadc ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o chuap.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
gibuzztable ftgen 1, 0, 16384, 10, 1
instr 1
istep_size = p4
iL = p5
iR0 = p6
iC2 = p7
iG = p8
iGa = p9
iGb = p10
iE = p11
iC1 = p12
iI3 = p13
iV2 = p14
iV1 = p15
iattack = 0.02
isustain = p3
irelease = 0.02
p3 = iattack + isustain + irelease
iscale = 1.0
adamping linseg 0.0, iattack, iscale, isustain, iscale, irelease, 0.0
aguide buzz 0.5, 440, sr/440, gibuzztable
aI3, aV2, aV1 chuap iL, iR0, iC2, iG, iGa, iGb, iE, iC1, iI3, iV2, iV1, istep_size
asignal balance aV2, aguide
outs asignal*adamping, asignal*adamping
endin
</CsInstruments>
<CsScore>
; Adapted from ABC++ MATLAB example data.
// time_step kL kR0 kC2 kG kGa kGb kE kC1 iI3 iV2 iV1
; torus attractor ( gallery of attractors )
i 1 0 20 .1 -0.00707925 0.00001647 100 1 -.99955324 -1.00028375 1 -.00222159 -2.36201596260071 3.08917625807226e-03 3.87075614929199
; heteroclinic orbit
i 1 + 20 .425 1.3506168 0 -4.50746268737 -1 2.4924 .93 1 1 -22.28662665 .009506608 -22.2861576
; periodic attractor (torus breakdown route)
i 1 + 20 .05 0.00667 0.000651 10 -1 .856 1.1 1 .06 -20.200590133667 .172539323568344 -4.07686233520508
; torus attractor (torus breakdown route)'
i 1 + 20 0.05 0.00667 0.000651 10 -1 0.856 1.1 1 0.1 21.12496758 0.03001749 0.515828669
</CsScore>
</CsoundSynthesizer>
See also
Credits
- Author of MATLAB simulation: James Patrick McEvoy MATLAB Adventures in Bifurcations and Chaos (ABC++)
- Author of Csound port: Michael Gogins, michael dot gogins at gmail dot com
- New in Csound version 5.09