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

## GEN06

GEN06 — Génère une fonction composée de morceaux de polynômes cubiques.

## Description

Ce sous-programme génèrera une fonction composée de morceaux de polynômes cubiques, couvrant les points spécifiés trois par trois.

## Syntaxe

    f  #   date   taille   6   a   n1   b   n2   c   n3   d ...

## Initialisation

taille -- nombre de points dans la table. Doit être une puissance de 2 ou une puissance-de-2 plus 1 (voir l'instruction f).

a, c, e, ... -- les maxima ou les minima locaux des morceaux successifs, dépendant de la relation de ces points avec les inflexions adjacentes. Peuvent être positifs ou négatifs.

b, d, f, ... -- ordonnées des points d'inflexion aux extrémités des segments curvilignes successif. Peuvent être positifs ou négatifs.

n1, n2, n3 ... -- nombre de valeurs stockées entre les points spécifiés. Ne peuvent pas être négatifs, mais un zéro est significatif pour spécifier des discontinuités. La somme n1 + n2 + ... sera normalement égale à taille pour les fonctions complètement spécifiées. (Pour des détails, voir GEN05).

| Note
GEN06 construit une fonction stockée à partir de fonctions polynomiales cubiques. Les morceaux groupent les valeurs d'ordonnée par groupes de 3 : point d'inflexion, maximum/minimum, point d'inflexion. Le premier segment complet comprend b, c, d et il a pour longueur n2 + n3, le suivant comprend d, e, f et il a pour longueur n4 + n5, etc. Le premier morceau (a, b de longueur n1) est incomplet avec seulement une inflexion ; le dernier morceau peut être incomplet aussi. Bien que les points d'inflexion b, d, f ... figurent chacun dans deux segments (un à gauche et un à droite), les pentes des deux segments restent indépendantes à ce point commun (c'est-à-dire que la dérivée première sera probablement discontinue). Quand a, c, e... sont alternativement maximum et minimum, les jointures des inflexions seront relativement douces ; pour des maxima successifs ou des minima successifs les inflexions seront en peigne.

## Exemples

Voici un exemple de la routine GEN06. Il utilise le fichier gen06.csd.

Exemple 1133. Un exemple de la routine GEN06.

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

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

    instr 1

    ifn  = p4				;choose between tables
    kcps init 1/p3				;create index over duration of note.
    kndx phasor kcps
    ixmode = 1
    kval table kndx, ifn, ixmode		;normalize mode

    kfreq = kval * 30			;scale frequency to emphasixe effect
    asig  poscil .7, 220 + kfreq, 1		;add to frequency
          outs asig, asig

    endin
    </CsInstruments>
    <CsScore>
    f 1 0 16384 10 1 ;sine wave.
    f 2 0 513 6 1 128 -1 128 1 64 -.5 64 .5 16 -.5 8 1 16 -.5 8 1 16 -.5 84 1 16 -.5 8 .1 16 -.1 17 0
    f 3 0 513 6 0 128 0.5 128 1 128 0 129 -1

    i 1 0 3 2
    i 1 4 3 3
    e
    </CsScore>
    </CsoundSynthesizer>

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

f 2 0 513 6 1 128 -1 128 1 64 -.5 64 .5 16 -.5 8 1 16 -.5 8 1 16 -.5 84 1 16 -.5 8 .1 16 -.1 17 0 - une courbe pas trop lisse

f 3 0 513 6 0 128 0.5 128 1 128 0 129 -1 - une courbe allant de 0 à 1 puis à -1, avec respectivement un minimum, un maximum et un minimum à ces valeurs. Les points d'inflection sont à 0.5 et à 0 et sont relativement lisses

## Voir aussi

GEN05, GEN07 et GEN08

Précédent | Niveau supérieur | Suivant
GEN05 | Sommaire | GEN07