wterrain2 — Un opcode de synthèse par terrain d'onde utilisant différentes courbes.
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.
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);
kcurve=3 : cornoïde
fx(t) = kx + krx * sin(t) * (cos(t) + kcurveparam);
fy(t) = ky + kry * cos(t) * (cos(t) + kcurveparam);
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));
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));
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);
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));
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>