GEN20 — Génère les fonctions de différentes fenêtres.
Ce sous-programme génère les fonctions de différentes fenêtres. Ces fenêtres sont utilisées habituellement pour l'analyse spectrale ou pour des enveloppes de grain.
taille -- nombre de points dans la table. Doit être une puissance de 2 ( + 1).
fenêtre -- Type de la fenêtre à générer :
1 = Hamming
2 = Hanning
3 = Bartlett (triangle)
4 = Blackman (3-termes)
5 = Blackman - Harris (4-termes)
6 = Gaussienne
7 = Kaiser
8 = Rectangle
9 = Sync
max -- Pour p4 négatif ce sera la valeur absolue au pic de la fenêtre. Si p4 est positif ou si p4 est négatif et p6 est absent la table sera post-normalisée à une valeur maximale de 1.
opt -- Argument facultatif nécessaire pour la fenêtre gaussienne et pour la fenêtre de Kaiser.
f 1 0 1024 20 5
Crée une fonction qui contient une fenêtre de Blackman - Harris à 4 termes avec une valeur maximale de 1.
f 1 0 1024 -20 2 456
Crée une fonction qui contient une fenêtre de Hanning avec une valeur maximale de 456.
f 1 0 1024 -20 1
Crée une fonction qui contient une fenêtre de Hamming avec une valeur maximale de 1.
f 1 0 1024 20 7 1 2
Crée une fonction qui contient une fenêtre de Kaiser avec une valeur maximale de 1. L'argument supplémentaire spécifie comment la fenêtre est "ouverte", par exemple une valeur de 0 donne une fenêtre rectangulaire et une valeur de 10 donne une fenêtre semblable à une fenêtre de Hamming.
f 1 0 1024 20 6 1 2
Crée une fonction qui contient une fenêtre gaussienne avec une valeur maximale de 1. L'argument supplémentaire spécifie la largeur de la fenêtre, comme l'écart type de la courbe ; dans cette exemple l'écart type vaut 2. La valeur par défaut est 1.
Pour tous les diagrammes, voir les Fonctions fenêtre
Voici un exemple de la routine GEN20. Il utilise le fichier gen20.csd.
Exemple 1294. Exemple de la routine GEN20.
Voir les sections Audio en Temps Réel et Options de Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<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 gen20.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 insnd = 10 ;"fox.wav" ibasfrq = 44100 / ftlen(insnd) ;use original sample rate of insnd file kamp expseg .001, p3/2, .7, p3/2, .8 ;envelope kpitch line ibasfrq, p3, ibasfrq * .8 kdens line 600, p3, 10 kaoff line 0, p3, .1 kpoff line 0, p3, ibasfrq * .5 kgdur line .04, p3, .001 ;shorten duration of grain during note imaxgdur = .5 igfn = p4 ;different windows asigL grain kamp, kpitch, kdens, kaoff, kpoff, kgdur, insnd, igfn, imaxgdur, 0.0 asigR grain kamp, kpitch, kdens, kaoff, kpoff, kgdur, insnd, igfn, imaxgdur, 0.0 outs asigL, asigR endin </CsInstruments> <CsScore> f1 0 512 20 2 ;Hanning window f2 0 512 20 6 1 ;Gaussian window f10 0 16384 1 "fox.wav" 0 0 0 i1 0 5 1 ;use Hanning window i1 + 5 2 ;use Gaussian window e </CsScore> </CsoundSynthesizer>
Voici les diagrammes des formes d'onde des routines GEN20 utilisées
dans l'exemple :