lorenz — Implémente le système d'équations de Lorenz.
Implémente le système d'équations de Lorenz. Le système de Lorenz est un système dynamique chaotique qui fut utilisé à l'origine pour simuler le mouvement d'une particule dans des courants de convection et des systèmes météorologiques simplifiés. De petites différences dans les conditions initiales conduisent rapidement à des valeurs divergentes. C'est ce qu'on appelle parfois l'effet papillon. Si un papillon bat des ailes en Australie, cela aura des conséquences sur le temps en Alaska. Ce système est l'un des éléments fondateurs du développement de la théorie du chaos. Il est utile comme source audio chaotique ou comme source de modulation basse fréquence.
ix, iy, iz -- les coordonnées initiales de la particule.
iskip -- utilisé pour sauter des valeurs générées. Si iskip vaut 5, seulement une valeur sur cinq sera retournée. Utile pour générer des sons de hauteur plus élévée.
iskipinit (facultatif, 0 par défaut) -- s'il est non nul, l'initialisation du filtre sera ignorée. (Nouveau dans les versions 4.23f13 et 5.0 de Csound)
ksv -- le nombre de Prandtl ou sigma
krv -- le nombre de Rayleigh
kbv -- le rapport entre la longueur et la largeur de la boîte dans laquelle les courants de convection sont générés
kh -- le pas de progression utilisé pour le calcul approché de l'équation différentielle. On peut l'utiliser pour contrôler la hauteur du système. Des valeurs comprises entre 0,1 et 0,001 sont typiques.
Le calcul approché des équations se fait comme suit :
x = x + h*(s*(y - x))
y = y + h*(-x*z + r*x - y)
z = z + h*(x*y - b*z)
Les valeurs historiques des paramètres sont :
ks = 10
kr = 28
kb = 8/3
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. |
Voici un exemple de l'opcode lorenz. Il utilise le fichier lorenz.csd.
Exemple 536. Exemple de l'opcode lorenz.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o lorenz.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 ; Instrument #1 - a lorenz system in 3D space. instr 1 ; Create a basic tone. kamp init 25000 kcps init 1000 ifn = 1 asnd oscil kamp, kcps, ifn ; Figure out its X, Y, Z coordinates. ksv init 10 krv init 28 kbv init 2.667 kh init 0.0003 ix = 0.6 iy = 0.6 iz = 0.6 iskip = 1 ax1, ay1, az1 lorenz ksv, krv, kbv, kh, ix, iy, iz, iskip ; Place the basic tone within 3D space. kx downsamp ax1 ky downsamp ay1 kz downsamp az1 idist = 1 ift = 0 imode = 1 imdel = 1.018853416 iovr = 2 aw2, ax2, ay2, az2 spat3d asnd, kx, ky, kz, idist, \ ift, imode, imdel, iovr ; Convert the 3D sound to stereo. aleft = aw2 + ay2 aright = aw2 - ay2 outs aleft, aright endin </CsInstruments> <CsScore> ; Table #1 a sine wave. f 1 0 16384 10 1 ; Play Instrument #1 for 5 seconds. i 1 0 5 e </CsScore> </CsoundSynthesizer>