GEN16 — Crée une table depuis une valeur initiale jusqu'à une valeur terminale.
taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f). La valeur normale est une puissance-de-2 plus 1.
Note | |
---|---|
La dernière valeur n'est atteinte que lorsque la longueur de la table est une puissance-de-2 plus 1. (Cette longueur est cruciale dans l'utilisation de l'opcode tab). |
deb -- valeur de départ
dur -- nombre de segments
type -- si 0, une ligne droite est produite. Si différent de zéro, alors GEN16 crée la courbe suivante sur dur pas :
deb + (fin - deb) * (1 - exp( i*type/(dur-1) )) / (1 - exp(type))
fin -- valeur après dur segments
Voici quelques exemples de courbes générées pour différentes valeurs de type :
Note | |
---|---|
Si type > 0, on a une courbe montant lentement (concave) ou décroissant lentement (convexe), tandis que si type < 0, la courbe monte rapidement (convexe) ou décroit rapidement (concave). Voir aussi transeg. |
Exemple 1290. Un exemple simple de la routine GEN16.
<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 gen16.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 128 nchnls = 1 instr 1 kcps init 1/p3 kndx phasor kcps ifn = p4 ixmode = 1 kval table kndx, ifn, ixmode ibasefreq = 440 kfreq = kval * ibasefreq a1 oscil 20000, ibasefreq + kfreq, 1 out a1 endin </CsInstruments> <CsScore> f 1 0 16384 10 1 f 2 0 1024 16 1 1024 1 0 f 3 0 1024 16 1 1024 2 0 f 4 0 1024 16 1 1024 10 0 f 5 0 1024 16 1 1024 -1 0 f 6 0 1024 16 1 1024 -2 0 f 7 0 1024 16 1 1024 -10 0 i 1 0 2 2 i 1 + . 3 i 1 + . 4 i 1 + . 5 i 1 + . 6 i 1 + . 7 e </CsScore> </CsoundSynthesizer>