chuap
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## chuap

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.

## Description

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.

## Syntaxe

    aI3, aV2, aV1 chuap kL, kR0, kC1, kG, kGa, kGb, kE, kC2, iI3, iV2, iV1, ktime_step

## Initialisation

iI3 -- Courant initial dans G

iV2 -- Tension initiale aux bornes de C2

iV1 -- Tension initiale aux bornes de C1

## Exécution

kL -- Inductance L

kR0 -- Résistance R0

kC1 -- Capacité C1

kG -- Résistance G

kGa -- Résistance V (terme non linéaire)

kGb -- Résistance V (terme non linéaire)

kGb -- Résistance V (terme non linéaire)

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.

Diagramme du Circuit de l'Oscillateur de Chua

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 srconv.

| Avertissement
Attention ! Certains jeux de paramètres produiront des pics d'amplitude ou une rétroaction positive pouvant endommager vos haut-parleurs.

## Exemples

Voici un exemple de l'opcode chuap. Il utilise le fichier chuap.csd.

Exemple 123. 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 chuas_oscillator.wav.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
    ; sys_variables = system_vars(5:12); % L,R0,C2,G,Ga,Gb,E,C1 or p8:p15
    ; integ_variables = [system_vars(14:16),system_vars(1:2)]; % x0,y0,z0,dataset_size,step_size or p17:p19, p4:p5
    istep_size    =       p5
    iL            =       p8
    iR0           =       p9
    iC2           =       p10
    iG            =       p11
    iGa           =       p12
    iGb           =       p13
    iE            =       p14
    iC1           =       p15
    iI3           =       p17
    iV2           =       p18
    iV1           =       p19
    ignore        =       p21
    ignore        =       p22
    ignore        =       p23
    ignore        =       p24
    ignore        =       p25
    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    adamping * asignal, adamping * asignal
    endin
    </CsInstruments>
    <CsScore>
    ;        Adapted from ABC++ MATLAB example data.
    i 1 0 20 1500 .1   -1 -1 -0.00707925 0.00001647 100  1 -.99955324 -1.00028375 1 -.00222159 204.8 -2.36201596260071 3.08917625807226e-03 3.87075614929199 7 .4 .004 1 86 30; torus attractor ( gallery of attractors )
    i 1 + 20 1500 .425  0 -1  1.3506168  0              -4.50746268737 -1 2.4924 .93 1 1 0 -22.28662665 .009506608 -22.2861576 32 10 2 20 86 30 ; heteroclinic orbit
    i 1 + 20 1024 .05  -1 -1  0.00667    0.000651    10 -1 .856 1.1 1 .06 51.2 -20.200590133667 .172539323568344 -4.07686233520508 2.5 10 .2 1 66 81 ; periodic attractor (torus breakdown route)
    i 1 + 20 1024 0.05 -1 -1 0.00667 0.000651 10 -1 0.856 1.1 1 0.1 153.6 21.12496758 0.03001749 0.515828669 2.5 10 0.2 1 66 81  ; torus attractor (torus breakdown route)'
    </CsScore>
    </CsoundSynthesizer>

## Crédits

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

Précédent | Niveau supérieur | Suivant
chnset | Sommaire | cigoto