GEN07

GEN07 — Construit des fonctions à partir de morceaux de lignes droites.

Description

Construit des fonctions à partir de morceaux de lignes droites.

Syntaxe

f  #    date    taille   7   a   n1   b   n2   c  ...

Initialisation

taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir instruction f).

a, b, c, etc. -- valeurs d'ordonnée, dans les p-champs de numéros impairs p5, p7, p9, . . .

n1, n2, etc. -- longueur de segment (nombre de positions en mémoire), dans les p-champs de numéros pairs. Ne peuvent pas être négatifs, mais un zéro est significatif pour spécifier des formes d'onde discontinues (comme dans l'exemple ci-dessous). La somme n1 + n2 + .... sera normallement égale à taille pour les fonctions complètement spécifiées. Si la somme est inférieure, les positions de la fonction non comprises seront mises à zéro ; si la somme est supérieure, seules les premières taille positions seront stockées.

[Note] Note

  • Si p4 est positif, les fonctions sont post-normalisées (reproportionnées avec une valeur absolue maximale de 1 après génération). Une valeur de p4 négative empêche cette opération.

  • Une interpolation linéaire sur des points discrets implique une augmentation ou une diminution le long d'un segment par des sauts égaux entre des positions adjacentes ; une interpolation exponentielle implique une progression par rapports égaux. Dans les deux formes l'interpolation de a à b suppose que la valeur b sera atteinte à la (n + 1)ème position. Pour les fonctions discontinues, et pour les segments dépassant la dernière position, cette valeur ne sera pas atteinte, bien qu'elle puisse éventuellement apparaître comme résultat d'une mise à l'échelle finale.

Exemples

Voici un exemple de la routine GEN07. Il utilise le fichier gen07.csd.

Exemple 1280. Un exemple de la routine GEN07.

<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 gen07.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100 
ksmps = 32 
nchnls = 2 
0dbfs  = 1 

instr 1	;use GEN07 to alter frequency

ifn  = p4						;use different GEN07 tables
kcps init 10/p3						;index ftable 10 times over the duration of entire note
kndx phasor kcps
ixmode = 1						;normalize index data
kfrq tablei kndx, ifn, ixmode
kfrq = kfrq*1000					;scale
asig poscil .8, 1220+kfrq, 1				;add to frequency
     outs asig, asig
  
endin
</CsInstruments>
<CsScore>
f 1 0 8192 10 1				;sine wave
f 2 0 1024 7 0 512 1 0 -1 512 0		;sawtooth up and down
f 3 0 1024 7 1 512 1 0 -1 512 -1	;square
f 4 0 1024 7 1 1024 -1 			;saw down

i 1 0 2 2
i 1 + 2 3
i 1 + 1 4
e
</CsScore>
</CsoundSynthesizer>


Voici les diagrammes des formes d'onde des routines GEN07 utilisées dans l'exemple :

f 2 0 1024 7 0 512 1 0 -1 512 0 - dent de scie ascendante commençant et finissant à 0

f 2 0 1024 7 0 512 1 0 -1 512 0 - dent de scie ascendante commençant et finissant à 0

f 3 0 1024 7 1 512 1 0 -1 512 -1 - onde carrée positive puis négative

f 3 0 1024 7 1 512 1 0 -1 512 -1 - onde carrée positive puis négative

f 4 0 1024 7 1 1024 -1 - dent de scie descendante, positive puis négative

f 4 0 1024 7 1 1024 -1 - dent de scie descendante, positive puis négative

Voir aussi

GEN05, GEN06 et GEN08