GEN28 — Lit un fichier texte qui contient une trajectoire paramétrée par le temps.
Ce générateur de fonction lit un fichier texte qui contient des ensembles de trois valeurs représentant des coordonnées xy et un paramètre temporel indiquant quand placer le signal à cette position, permettant à l'utilisateur de définir une trajectoire paramétrée par le temps. Le format du fichier est de la forme :
temps1 X1 Y1
temps2 X2 Y2
temps3 X3 Y3
La configuration des coordonnées xy dans l'espace place le signal de la manière suivante :
a1 est -1, 1
a2 est 1, 1
a3 est -1, -1
a4 est 1, -1
Cela suppose des haut-parleurs disposés avec a1 en avant gauche, a2 en avant droite, a3 en arrière gauche, a4 en arrière droite. Les valeurs supérieures à 1 provoqueront une atténuation des sons comme s'ils étaient distants. GEN28 crée les valeurs avec une résolution de 10 millisecondes.
taille -- nombre de points dans la table. Doit être 0. GEN28 prend une taille de 0 et alloue la mémoire automatiquement.
codfic -- chaîne de caractères dénotant le nom du fichier source. Une chaîne de caractères (entre apostrophes doubles, espaces autorisés) donne le nom du fichier lui-même, optionnellement un nom de chemin complet. Si le chemin n'est pas complet, le fichier nommé est cherché dans le répertoire courant.
f1 0 0 28 "move"
Le fichier "move" ressemblera à ceci :
0 -1 1
1 1 1
2 4 4
2.1 -4 -4
3 10 -10
5 -40 0
Puisque GEN28 crée les valeurs avec une résolution de 10 millisecondes, il y aura 500 valeurs créées en interpolant entre X1 et X2, X2 et X3, etc., et entre Y1 et Y2, Y2 et Y3, etc., sur le nombre approprié de valeurs qui sont stockées dans la table de fonction. Le son démarrera à l'avant gauche, il bougera pendant 1 seconde vers l'avant droite, durant la seconde suivante il s'éloignera mais toujours à l'avant droite, ensuite il bougera vers l'arrière gauche en seulement 1/10 de seconde, un peu éloigné. Enfin, pendant les 0,9 secondes restantes le son bougera vers l'arrière droite, modérément éloigné, et il viendra s'arrêter entre les deux canaux gauche (plein ouest !), assez éloigné.
Voici un exemple de la routine GEN28. Il utilise le fichier gen28.csd.
Exemple 1300. Exemple de la routine GEN28.
Voir les sections Audio en Temps Réel et Options de 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 -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o gen28.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 0dbfs = 1 nchnls = 4 ga1 init 0 ga2 init 0 ga3 init 0 ga4 init 0 instr 1 ;uses GEN28 file "move", as found in /manual/examples kx init 0 ky init 0 ktime line 0, 5, 5 ;same time as in table 1 (="move") asig diskin2 "beats.wav", 1, 0, 1 ;sound source is looped a1, a2, a3, a4 space asig, 1, ktime, .1, kx, ky ;use table 1 = GEN28 ar1, ar2, ar3, ar4 spsend ;send to reverb ga1 = ga1+ar1 ga2 = ga2+ar2 ga3 = ga3+ar3 ga4 = ga4+ar4 outq a1, a2, a3, a4 endin instr 99 ; reverb instrument a1 reverb2 ga1, 2.5, .5 a2 reverb2 ga2, 2.5, .5 a3 reverb2 ga3, 2.5, .5 a4 reverb2 ga4, 2.5, .5 outq a1, a2, a3, a4 ga1=0 ga2=0 ga3=0 ga4=0 endin </CsInstruments> <CsScore> f1 0 0 28 "move" i1 0 5 ;same time as ktime i 99 0 10 ;keep reverb active e </CsScore> </CsoundSynthesizer>