wterrain2

wterrain2 — Un opcode de synthèse par terrain d'onde utilisant différentes courbes.

Description

Un opcode de synthèse par terrain d'onde qui améliore l'opcode wterrain en fournissant plus de courbes, des paramètres de table de taux-k et un paramètre pour faire une rotation de la courbe.

Syntaxe

aout wterrain2 kamp, kcps, kx, ky, krx, kry, krot, \
      ktab0, ktab1, kcurve, kcurveparam
    

Exécution

ktabx, ktaby -- Les deux tables définissant le terrain - on peut les changer au taux-k.

La sortie est le résultat de la traversée à la fréquence kcps de la courbe kcurve avec le paramètre kcurveparam (voir ci-dessous), pondérée par krx et kry et centrée en kx, ky sur le terrain et tournée autour du centre de krot radians.

kcurve=0 : ellipse comme dans l'opcode wterrain mais avec une extension spéciale. kcurveparam contrôle une variation de la vitesse du point traversant. La formule est :


         fx(t) = kx + krx * sin( t + kcurveparam * sin(t) )
         fy(t) = ky + kry * cos( t + kcurveparam * sin(t) )
      

kcurve=1 : lemniscate - c'est un simple 8. Ici aussi kcurveparam contrôle une variation de la vitesse du point traversant. La formule est :


         fx(t) = kx + krx * cos( t + kcurveparam * sin(t) )
         fy(t) = ky + kry * sin( t + kcurveparam * sin(t) )  * cos( t + kcurveparam * sin(t) )
      

kcurve=2 : limaçon


        fx(t) = kx + krx * sin(t) * (cos(t) + kcurveparam);
        fy(t) = ky + kry * cos(t) * (cos(t) + kcurveparam);
      

limaçon avec différents paramètres
limaçon avec différents paramètres

kcurve=3 : cornoïde


        fx(t) = kx + krx * sin(t) * (cos(t) + kcurveparam);
        fy(t) = ky + kry * cos(t) * (cos(t) + kcurveparam);
      

cornoïde avec différents paramètres
cornoïde avec différents paramètres

kcurve=4 : trisectrice (Ceva)


       fx(t) = kx + krx * cos(t) * (1+kcurveparam*sin(2*t));
       fy(t) = ky + kry * sin(t) * (1+kcurveparam*sin(2*t));
      

trisectrice avec différents paramètres
trisectrice avec différents paramètres

kcurve=5 : scarabée


       fx(t) = kx + krx * cos(t) * (1+kcurveparam*sin(2*t));
       fy(t) = ky + kry * sin(t) * (1+kcurveparam*sin(2*t));
      

scarabée avec différents paramètres
scarabée avec différents paramètres

kcurve=6 : folium


        fx(t) = kx + krx * cos(t) * cos(t) * (sin(t)*sin(t) - kcurveparam);
        fy(t) = ky + kry * sin(t) * cos(t) * (sin(t)*sin(t) - kcurveparam);
      

folium avec différents paramètres
a folium avec différents paramètres

kcurve=7 : courbe de Talbot


        fx(t) = kx + krx * cos(t) * (1 + kcurveparam * sin(t)*sin(t));
        fy(t) = ky + kry * sin(t) * (1 - kcurveparam - kcurveparam*cos(t)*cos(t)); 
        
      

courbe de Talbot avec différents paramètres
courbe de Talbot avec différents paramètres

Exemples

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

Exemple 1227. Exemple de l'opcode wterrain2.

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>
-odac -d
</CsOptions>

<CsInstruments>
sr     = 48000
ksmps  = 32
nchnls = 2
0dbfs  = 1

gisine ftgen 0,0,2^12,10,1
gScurves[] fillarray "ELLIPSE ", "LEMNISKATE ", "LIMACON ","CORNOID ","TRISEXTIC ","SCARABEUS ","FOLIUM ","TALBOT "

instr 1 
prints gScurves[p4]
kdclk init 0
kdclk   linsegr  0, 0.1, 1, p3-0.02, 1, 0.9, 0
kparam init 0
krot init 0
krot linseg 0,p3,6.28 ; ROTATE THE CURVE SLOWLY
kparam linseg 0,p3,4 ; INCREASE CURVEPARAMETER

asigL wterrain2 0.5, 110, 0.5, 0.5, 0.8, 0.4, krot, gisine, gisine, p4, kparam
; LET THE POINT FOR RIGHT RUNNING BACKWARDS FOR A LITTLE STEREO EFFECT
asigR wterrain2 0.5, -110, 0.5, 0.5, 0.8, 0.4, krot, gisine, gisine, p4, kparam
asigR dcblock asigL
asigL dcblock asigR
asigL*=kdclk
asigR*=kdclk
aL,aR reverbsc asigL, asigR, 0.6, 15000, 44100, 0.5, 1
outs aL,aR

endin

</CsInstruments>

<CsScore>

i 1 0 40 0 ; ELLIPSE
i 1 41 40 1; LEMNSIKATE
i 1 82 40 2; LIMACON
i 1 123 40 3; CORNOID
i 1 164 40 4; TRISEXTIC
i 1 205 40 5; SCARABEUS
i 1 246 40 6; FOLIUM
i 1 287 40 7; TALBOT

e
</CsScore>
</CsoundSynthesizer>


Voici un autre exemple de l'opcode wterrain2 - une fugue sonore. Il utilise le fichier wterrain2_2.csd.

Exemple 1228. Un autre exemple de l'opcode wterrain2 - une fugue sonore.

<CsoundSynthesizer>
<CsOptions>
-odac -d
</CsOptions>

<CsInstruments>
sr     = 48000
ksmps  = 32
nchnls = 2
0dbfs  = 1

gisine ftgen 0,0,2^12,10,1

instr 1

kamp adsr 0.1,0.01,1,10

; THE MODULATION PARAMETERS 
krot linseg 0,p3,6.28 ; ROTATE
kparam randc 2.5,0.1,0.993 ; CONTROL CURVEPARAMETER WITH CUBIC RANDOM 
kx linseg 0,p3/2,1,p3/2,0 ; MOVE HORIZONTAL THROUGH THE TERRAIN
ky linseg 0,p3,1 ; MOVE VERTICAL THROUGH THE TERRAIN

; TRY THE OTHER CURVES AS WELL 
asigL wterrain2 0.2, 55*p4, kx, ky, 0.5, 0.4, krot, gisine, gisine, 5, kparam
asigR wterrain2 0.2, -55*p4, kx, ky, 0.5, 0.4, krot, gisine, gisine, 5, kparam

asigR dcblock asigL
asigL dcblock asigR
asigL butterlp asigL,9000
asigR butterlp asigR,9000
aL,aR reverbsc asigL, asigR, 0.7, 15000, 44100, 0.5, 1
outs aL*kamp*p5,aR*kamp*p5

endin

</CsInstruments>

<CsScore>

i 1 0 300 1 1
i 1 1 300 7 0.4
i 1 2 299 [9/2] 0.4
i 1 3.1 296.9 [16/3] 0.45
i 1 4.3 295.7 [27/4] 0.5
i 1 6.9 292.1 6 0.5 

e
</CsScore>
</CsoundSynthesizer>


Voir aussi

wterrain, sterrain

Crédits

Author : Christian Bacher
Nouveau dans la version 6.15