GEN03

GEN03 — Génère une table de fonction en évaluant un polynôme.

Description

Ce sous-programme génère une table de fonction en évaluant un polynôme en x sur un intervalle fixe et avec des coefficients spécifiés.

Syntaxe

f  #  date  taille  3  xval1  xval2  c0  c1  c2  ...  cn

Initialisation

taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1.

xval1, xval2 -- limites gauche et droite de l'intervalle x sur lequel le polynôme est défini (xval1 < xval2). Celles-ci produiront la 1ère valeur stockée et la (puissance-de-2 plus 1)ème valeur stockée respectivement dans la table de la fonction générée.

c0, c1, c2, ..., cn -- coefficients du polynôme d'ordre n

C0 + C1x + C2x2 + . . . + Cnxn

Les coefficients peuvent être des nombres réels positifs ou négatifs ; un zéro dénote un terme manquant dans le polynôme. La liste de coefficients commence en p7, avec une limite maximale actuelle de 144 termes.

[Note] Note

  • Le segment défini [fn(xval1), fn(xval2)] est distribué également. Ainsi une table de 512 points sur l'interval [-1,1] aura son origine à la cellule 257 (au début de la seconde moitié). Si le point de garde est requis, les deux valeurs fn(-1) et fn(1) existeront dans la table.

  • GEN03 est utile en conjonction avec table ou tablei pour le waveshaping audio (modification du son par distortion non-linéaire). Les coefficients pour produire un formant particulier à partir d'un index de lecture sinusoïdal d'amplitude connue peuvent être déterminés avant le traitement en utilisant des algorithmes tels que les formules de Tchebychev. Voir aussi GEN13.

Exemples

Voici un exemple de la routine GEN03. Il utilise le fichier gen03.csd.

Exemple 1181. Exemple de la routine GEN03.

Voir les sections Audio en Temps Réel et Options de la 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 gen03.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100 
ksmps = 32 
nchnls = 2 
0dbfs  = 1
;example by Russell Pinkston - Univ. of Texas  (but slightly modified)

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

instr   1

ihertz = cpspch(p4)
ipkamp = p5
iwsfn  = p6									;waveshaping function
inmfn  = p7									;normalization function
aenv    linen  1, .01, p3, .1        						;overall amp envelope
actrl   linen  1, 2, p3, 2							;waveshaping index control
aindex  poscil actrl/2, ihertz, gisine						;sine wave to be distorted
asignal tablei .5+aindex, iwsfn, 1						;waveshaping
anormal tablei actrl, inmfn,1							;amplitude normalization
asig    =      asignal*anormal*ipkamp*aenv	
asig    dcblock2  asig								;get rid of possible DC						
        outs   asig, asig
           
endin
</CsInstruments>
<CsScore>
; first four notes are specific Chebyshev polynomials using gen03. The values were obtained from Dodge page 147

f4 0 513 3 -1 1 0 1			; First-order Chebyshev: x
f5 0 257 4 4 1				; Normalizing function for fn4

f6 0 513 3 -1 1 -1 0 2			; Second-order Chebyshev: 2x2 - 1
f7 0 257 4 6 1				; Normalizing function for fn6

f8 0 513 3 -1 1 0 -3 0 4		; Third-order Chebyshev: 4x3 - 3x
f9 0 257 4 8 1				; Normalizing function for fn8

f10 0 513 3 -1 10 0 -7 0 56 0 -112 0 64	; Seventh-order Chebyshev: 64x7 - 112x5 + 56x3 - 7x
f11 0 257 4 10 1			; Normalizing function for fn10

f12 0 513 3 -1 1 5 4 3 2 2 1		; a 4th order polynomial function over the x-interval -1 to 1
f13 0 257 4 12 1			; Normalizing function for fn12

; five notes with same fundamental, different waveshape & normalizing functions
;        pch	 amp	wsfn	nmfn
i1 0  3 8.00     .7      4	 5
i1 +  .  .	 .	 6	 7    
i1 +  .  .	 .	 8	 9     
i1 +  .  .       .	 10	 11   
i1 +  .  .       .	 12	 13 

e
</CsScore>
</CsoundSynthesizer>


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

f4 0 513 3 1 1 0 1 - Tchebychev du premier ordre : x

f4 0 513 3 1 1 0 1 - Tchebychev du premier ordre : x

f6 0 513 3 -1 1 -1 0 2 - Tchebychev du second ordre : 2x2 - 1

f6 0 513 3 -1 1 -1 0 2 - Tchebychev du second ordre : 2x2 - 1

f8 0 513 3 -1 1 0 -3 0 4 - Tchebychev du troisième ordre : 4x3 - 3x

f8 0 513 3 -1 1 0 -3 0 4 - Tchebychev du troisième ordre : 4x3 - 3x

f10 0 513 3 -1 10 0 -7 0 56 0 -112 0 64 - Tchebychev du septième ordre : 64x7 - 112x5 + 56x3 - 7x

f10 0 513 3 -1 10 0 -7 0 56 0 -112 0 64 - Tchebychev du septième ordre : 64x7 - 112x5 + 56x3 - 7x

f12 0 513 3 -1 1 5 4 3 2 2 1 - une fonction polynomiale du quatrième ordre, x compris entre -1 et 1

f12 0 513 3 -1 1 5 4 3 2 2 1 - une fonction polynomiale du quatrième ordre, x compris entre -1 et 1

Voir aussi

GEN13, GEN14 et GEN15.

Information au sujet des polynômes de Tchebychev sur Wikipedia : http://fr.wikipedia.org/wiki/Polynôme_de_Tchebychev