GEN17 — Crée une fonction en escalier à partir des paires x-y données.
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.
x1, x2, x3, etc. -- valeurs d'abscisse x, en ordre ascendant, commençant par 0.
a, b, c, etc. -- valeurs y à ces valeurs d'abscisse x, maintenues jusqu'à la valeur d'abscisse x suivante.
![]() |
Note |
---|---|
Ce sous-programme crée une fonction en escalier de paires x-y dont les valeurs y sont maintenues vers la droite. La valeur de y la plus à droite est ensuite maintenue jusqu'à la fin de la table. Cette fonction est utile pour mettre en correspondance un ensemble de données avec un autre, tel que des numéros de notes MIDI avec des numéros de ftables de sons échantillonés. (voir loscil). |
f 1 0 128 -17 0 1 12 2 24 3 36 4 48 5 60 6 72 7 84 8
Ceci décrit une fonction en escalier avec huit niveaux croissants successifs, chacun occupant 12 positions sauf pour le dernier qui étend sa valeur jusqu'à la fin de la table. La normalisation est empêchée. En indexant cette table avec un numéro de note MIDI, on retrouvera une valeur différente pour chaque octave jusqu'à la huitième, au-delà de laquelle la valeur retournée restera la même.
Voici un exemple complet de la routine GEN17. Il utilise le fichier gen17.csd.
Exemple 1077. Un exemple de la routine GEN17.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac -M0 -+rtmidi=virtual ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o gen17.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 inote cpsmidi iveloc ampmidi .5 ictl midictrl 5 ;move slider of controller 5 to change ftable itab table ictl, 2 aout poscil iveloc, inote, itab outs aout, aout endin </CsInstruments> <CsScore> f 1 0 8193 10 1 f 2 0 128 -17 0 10 32 20 64 30 96 40 ;inhibit rescaling f 10 0 16384 10 1 ; Sine f 20 0 16384 10 1 0.5 0.3 0.25 0.2 0.167 0.14 0.125 .111; Sawtooth f 30 0 16384 10 1 0 0.3 0 0.2 0 0.14 0 .111; Square f 40 0 16384 10 1 1 1 1 0.7 0.5 0.3 0.1 ; Pulse f 0 30 ;run for 30 seconds e </CsScore> </CsoundSynthesizer>
Voici le diagramme de la forme d'onde de la routine GEN17 utilisée
dans l'exemple :
f 2 0 128 -17 0 10 32 20 64 30 96 40 - une fonction en escalier avec quatre niveaux égaux, chacun ayant une largeur de 32 positions, sauf le dernier qui va jusqu'à la fin de la table