polynomial
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## polynomial

polynomial — Evalue efficacement un polynôme d'ordre arbitraire.

## Description

L'opcode polynomial calcule un polynôme à une seule variable d'entrée de taux-a. Le polynôme est la somme de n'importe quel nombre de termes de la forme kn*x^n où kn est le nième coefficient de l'expression. Ces coefficients sont des valeurs de taux-k.

## Syntaxe

    aout polynomial ain, k0 [, k1 [, k2 [...]]]

## Exécution

ain -- le signal d'entrée jouant le rôle de la variable indépendante du polynôme ("x").

aout -- le signal de sortie ("y").

k0, k1, k2, ... -- les coefficients pour chaque terme du polynôme.

Si l'on considère que le paramètre d'entrée ain est "x" et que la sortie aout est "y", alors l'opcode polynomial calcule l'équation suivante :

y = k0 + k1*x + k2*x^2 + k3*x^3 + ...

## Voir aussi

chebyshevpoly, mac maca

## Exemples

Voici un exemple de l'opcode polynomial. Il utilise le fichier polynomial.csd.

Exemple 759. Exemple de l'opcode polynomial.

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
    ;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o polynomial.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    ; The polynomial y=x^n where n is odd always produces a curve
    ; that traverses the range [-1, 1] when the input is within
    ; the same range.  Therefore, we can use one of these curves
    ; to make a nonlinear phasor that repeatedly reads a table
    ; from beginning to end like a linear phasor (maintaining
    ; continuity) but that distorts the waveform in the table.

    instr 4	; This instrument demonstrates phase distortion with x^3

    idur   = p3
    iamp   = p4
    ifreq  = p5
    itable = p6

    aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0	; declicking envelope
    aosc phasor ifreq					; create a linear phasor
    apd  polynomial aosc, 0, 0, 0, 1			; distort the phasor with x^3
    aout tablei apd, itable, 1				; read a sine table with the nonlinear phasor
         outs aenv*aout*iamp, aenv*aout*iamp

    endin

    instr 5	; This instrument demonstrates phase distortion with x^11

    idur   = p3
    iamp   = p4
    ifreq  = p5
    itable = p6

    aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0	; declicking envelope
    aosc phasor ifreq					; create a linear phasor
    apd  polynomial aosc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; distort the phasor with x^11
    aout tablei apd, itable, 1				; read a sine table with the nonlinear phasor
         outs aenv*aout*iamp, aenv*aout*iamp

    endin

    instr 6 ; This instrument crossfades between a pure sine and one distorted with x^11

    idur   = p3
    iamp   = p4
    ifreq  = p5
    itable = p6

    aenv	linseg	0, .001, 1.0, idur - .051, 1.0, .05, 0	; declicking envelope
    aosc	phasor	ifreq					; create a linear phasor
    aout3	tablei	aosc, itable, 1				; read a sine table without the linear phasor
    apd11	polynomial aosc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; distort the phasor with x^11
    aout11	tablei	apd11, itable, 1			; read a sine table with the nonlinear phasor
    kamount	linseg	1.0, 0.05, 0.9, 1.0, 0.0		; crossfade between two outputs
    aout	= aout3*kamount + aout11*(1.0 - kamount)
            outs aenv*aout*iamp, aenv*aout*iamp

    endin
    </CsInstruments>
    <CsScore>
    f1 0 16385 10 1	; sine wave

    ; descending "just blues" scale

    t 0 100
    i4 0 .333 .7 512     1
    i. + .    .  448
    i. + .    .  384
    i. + .    .  360
    i. + .    .  341.33
    i. + .    .  298.67
    i. + 2    .  256
    s

    t 0 100
    i5 0 .333 .7 512     1
    i. + .    .  448
    i. + .    .  384
    i. + .    .  360
    i. + .    .  341.33
    i. + .    .  298.67
    i. + 2    .  256
    s

    t 0 100
    i6 0 .333 .7 512     1
    i. + .    .  448
    i. + .    .  384
    i. + .    .  360
    i. + .    .  341.33
    i. + .    .  298.67
    i. + 2    .  256

    e

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

chebyshevpoly, mac maca

## Crédits

Auteur : Anthony Kozar
Janvier 2008

Nouveau dans la version 5.08 de Csound.

Précédent | Niveau supérieur | Suivant
polyaft | Sommaire | port