GEN04

GEN04 — Génère une fonction de normalisation.

Description

Ce sous-programme génère une fonction de normalisation en examinant le contenu d'une table existante.

Syntaxe

f  #  temps  taille  4  source#  modesource

Initialisation

taille -- nombre de points dans la table. Une puissance-de-2 plus 1. Ne doit pas dépasser (sauf de 1) la taille de la table source examinée ; limitée à exactement la moitié de cette taille si modesource est de type décalage (voir ci-dessous).

source # -- numéro de table de la fonction stockée à examiner.

modesource -- une valeur codée, spécifiant comment la table source doit être parcourue pour obtenir la fonction de normalisation. Zéro indique que la source doit être parcourue de gauche à droite. Une valeur non nulle indique que la source a une structure bipolaire ; la lecture commencera au point médian et progressera vers les extrémités, par paires de points équidistants du centre.

[Note] Note

  • La fonction de normalisation dérive de la progression des maxima absolus de la table source parcourue. La nouvelle table est créée de gauche à droite, en stockant des valeurs égales à 1/(maximum absolu lu jusque là). Les valeurs stockées commenceront ainsi par 1/(première valeur lue), et deviendront progressivement plus petites lorsque de nouveaux maxima seront rencontrés. Pour une table source normalisée (valeurs <= 1), les valeurs dérivées descendront de 1/(première valeur lue) jusqu'à 1. Si la première valeur lue est zéro, son inverse sera fixé à 1.

  • la fonction de normalisation générée par GEN04 n'est pas elle-même normalisée.

  • GEN04 est utile pour modifier l'échelle d'un signal dérivé d'une table afin qu'il ait une amplitude de crête consistante. On l'utilise particulièrement en waveshaping quand la porteuse (ou fonction d'indexation) a une amplitude inférieure à la moitié de l'échelle complète.

Exemples

Voici un exemple de la routine GEN04. Il utilise le fichier gen04.csd.

Exemple 1277. Un exemple de la routine GEN04.

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

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

gisine   ftgen 0, 0, 16384, 10, 1						;sine wave

instr   1

ihertz = cpspch(p4)
ipkamp = p5
iwsfn  = p6									;waveshaping function	
inmfn  = p7									;normalization function 								
agate   linen   1, .01, p3, .1            					;overall amp envelope
kctrl   linen  	.9, 2, p3, 2							;waveshaping index control
aindex  poscil  kctrl/2, ihertz, gisine						;sine wave to be distorted
asignal tablei  .5+aindex, iwsfn, 1						;waveshaping
knormal tablei  1/kctrl, inmfn , 1						;amplitude normalization
        outs    asignal*knormal*ipkamp*agate, asignal*knormal*ipkamp*agate
           
endin
</CsInstruments>
<CsScore>
f1 0 64 21 6	;Gaussian (random) distribution
f2 0 33 4 1 1	;normalizing function with midpoint bipolar offset

s
;	st	dur	pch	amp   wsfn inmfn
i1      0       4      6.00    .7      1     2
i1      4       .      7.00    .
i1      8       .      8.00    .
;-------------------------------------------------------------------------------------
f3 0 1025 13 1 1 0 5 0 5 0 10	;Chebyshev algorithm
f4 0 513 4 3 1			;normalizing function with midpoint bipolar offset
s
;	st	dur	pch	amp   wsfn inmfn
i1      0       4      6.00    .9      3     4
i1      4       .      7.00    .
i1      8       .      8.00    .
e
</CsScore>
</CsoundSynthesizer>


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

f1 0 64 21 6 - distribution (aléatoire) gaussienne

f1 0 64 21 6 - distribution (aléatoire) gaussienne

f2 0 33 4 1 1 - et sa fonction de normalisation avec décalage bipolaire du point central

f2 0 33 4 1 1 - et sa fonction de normalisation avec décalage bipolaire du point central

f3 0 1025 13 1 1 0 5 0 5 0 10 - algorithme de Tchebychev

f3 0 1025 13 1 1 0 5 0 5 0 10 - algorithme de Tchebychev

f4 0 513 4 3 1 - et sa fonction de normalisation avec décalage bipolaire du point central

f4 0 513 4 3 1 - et sa fonction de normalisation avec décalage bipolaire du point central