GEN03
Précédent | Instructions de partition et routines GEN | Suivant

## 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
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 1125. 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

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

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

## 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

Précédent | Niveau supérieur | Suivant
GEN02 | Sommaire | GEN04