GEN06

GEN06 — Génère une fonction composée de morceaux de polynômes cubiques.

Description

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.

Syntaxe

f  #   date   taille   6   a   n1   b   n2   c   n3   d ...

Initialisation

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] 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.

Exemples

Voici un exemple de la routine GEN06. Il utilise le fichier gen06.csd.

Exemple 1184. 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 :

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 - une courbe pas trop lisse

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 - une courbe pas trop lisse

f 3 0 513 6 0 128 0.5 128 1 128 0 129 -1 - une courbe allant de 0 à 1 puis à -1, avec respectivement un minimum, un maximum et un minimum à ces valeurs. Les points d'inflection sont à 0.5 et à 0 et sont relativement lisses

f 3 0 513 6 0 128 0.5 128 1 128 0 129 -1 - une courbe allant de 0 à 1 puis à -1, avec respectivement un minimum, un maximum et un minimum à ces valeurs. Les points d'inflection sont à 0.5 et à 0 et sont relativement lisses

Voir aussi

GEN05, GEN07 et GEN08