chuap — Simule un oscillateur de Chua, un oscillateur RLC avec une résistance active, qui peut avoir bifurcation et attracteurs chaotiques, avec un contrôle de taux-k des éléments du circuit.
Opcode du greffon chua. Ce greffon se trouve dans le répertoire des greffons et il doit être installé séparément. Le répertoire des greffons est ici : https://github.com/csound/plugins
Simule un oscillateur de Chua, un oscillateur RLC avec une résistance active, qui peut avoir bifurcation et attracteurs chaotiques, avec un contrôle de taux-k des éléments du circuit.
iI3 -- Courant initial dans G
iV2 -- Tension initiale aux bornes de C2
iV1 -- Tension initiale aux bornes de C1
kL -- Inductance L (L1 dans le schéma)
kR0 -- Résistance R0 (R0 dans le schéma)
kC1 -- Capacité C1
kC2 -- Capacité C2
kG -- Résistance G (fait partie de la résistance active, R1 dans le schéma). Le paramètre G est le pas temporel, qui est nécessaire pour obtenir la même pente de la discontinuité par segment de Ga et Gb pour tous les taux d'échantillonnage.
kGa -- Résistance V (terme non linéaire de la résistance active, une des R2 dans le schéma)
kGb -- Résistance V (terme non linéaire de la résistance active, une des R2 dans le schéma)
kE -- Taille de la discontinuité par segment simulant la résistance active.
ktime_step -- Pas temporel de l'équation aux différences, permet de contrôler plus ou moins la hauteur.
L'oscillateur de Chua est un simple oscillateur RLC avec une résistance active. L'oscillateur peut être amené à une bifurcation de période, et ainsi vers le chaos, à cause de la réponse non linéaire de la résistance active.
Le circuit est décrit par un ensemble de trois équations différentielles ordinaires appelées équations de Chua :
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
où f() est une fonction dsicontinue par morceaux simulant la résistance active :
f(V1) = Gb V1 + - (Ga - Gb)(|V1 + E| - |V1 - E|)
Une solution (I3,V2,V1)(t) de ces équations partant d'un état initial (I3,V2,V1)(0) est appelée une trajectoire de l'oscillateur de Chua. L'implémentation dans Csound est une simulation de l'oscillateur de Chua par une équation aux différences avec intégration de Runge-Kutta.
Note | |
---|---|
Cet algorithme utilise des boucles de rétroaction internes non linéaires ce qui fait dépendre le résultat audio du taux d'échantillonnage de l'orchestre. Par exemple, si l'on développe un projet avec sr=48000Hz et si l'on veut produire un CD audio de ce projet, il faut enregistrer un fichier avec sr=48000Hz, puis sous-échantillonner ce fichier à 44100Hz avec l'utilitaire src_conv. |
Avertissement | |
---|---|
Attention ! Certains jeux de paramètres produiront des pics d'amplitude ou une rétroaction positive pouvant endommager vos haut-parleurs. |
Voici un exemple de l'opcode chuap. Il utilise le fichier chuap.csd.
Exemple 140. Exemple de l'opcode chuap.
<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>
Inventeur de l'oscillateur de Chua : Leon O. Chua |
Auteur de la simulation dans MATLAB : James Patrick McEvoy MATLAB Adventures in Bifurcations and Chaos (ABC++) |
Auteur du portage dans Csound : Michael Gogins |
Nouveau dans la version 5.09 de Csound
Note ajoutée par François Pinot, août 2009