GEN06 — Génère une fonction composée de morceaux de polynômes cubiques.
Ce sous-programme génèrera une fonction composée de morceaux de polynômes cubiques, couvrant les points spécifiés trois par trois.
taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f).
a, c, e, ... -- les maxima ou les minima locaux des morceaux successifs, dépendant de la relation de ces points avec les inflexions adjacentes. Peuvent être positifs ou négatifs.
b, d, f, ... -- ordonnées des points d'inflexion aux extrémités des segments curvilignes successif. Peuvent être positifs ou négatifs.
n1, n2, n3 ... -- nombre de valeurs stockées entre les points spécifiés. Ne peuvent pas être négatifs, mais un zéro est significatif pour spécifier des discontinuités. La somme n1 + n2 + ... sera normalement égale à taille pour les fonctions complètement spécifiées. (Pour des détails, voir GEN05).
Note | |
---|---|
GEN06 construit une fonction stockée à partir de fonctions polynomiales cubiques. Les morceaux groupent les valeurs d'ordonnée par groupes de 3 : point d'inflexion, maximum/minimum, point d'inflexion. Le premier segment complet comprend b, c, d et il a pour longueur n2 + n3, le suivant comprend d, e, f et il a pour longueur n4 + n5, etc. Le premier morceau (a, b de longueur n1) est incomplet avec seulement une inflexion ; le dernier morceau peut être incomplet aussi. Bien que les points d'inflexion b, d, f ... figurent chacun dans deux segments (un à gauche et un à droite), les pentes des deux segments restent indépendantes à ce point commun (c'est-à-dire que la dérivée première sera probablement discontinue). Quand a, c, e... sont alternativement maximum et minimum, les jointures des inflexions seront relativement douces ; pour des maxima successifs ou des minima successifs les inflexions seront en peigne. |
Voici un exemple de la routine GEN06. Il utilise le fichier gen06.csd.
Exemple 1279. Un exemple de la routine GEN06.
<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 gen06.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ifn = p4 ;choose between tables kcps init 1/p3 ;create index over duration of note. kndx phasor kcps ixmode = 1 kval table kndx, ifn, ixmode ;normalize mode kfreq = kval * 30 ;scale frequency to emphasixe effect asig poscil .7, 220 + kfreq, 1 ;add to frequency outs asig, asig endin </CsInstruments> <CsScore> f 1 0 16384 10 1 ;sine wave. f 2 0 513 6 1 128 -1 128 1 64 -.5 64 .5 16 -.5 8 1 16 -.5 8 1 16 -.5 84 1 16 -.5 8 .1 16 -.1 17 0 f 3 0 513 6 0 128 0.5 128 1 128 0 129 -1 i 1 0 3 2 i 1 4 3 3 e </CsScore> </CsoundSynthesizer>
Voici les diagrammes des formes d'onde des routines GEN06 utilisées
dans l'exemple :