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

## GEN08

GEN08 — Génère une courbe spline cubique par morceaux.

## Description

Ce sous-programme génèrera une courbe spline cubique par morceaux, la plus lisse possible le long de tous les points spécifiés.

## Syntaxe

    f # date taille 8 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 instruction f).

a, b, c, etc. -- valeurs d'ordonnée de la fonction.

n1, n2, n3 ... -- longueur de chaque segment mesurée en valeurs mémorisées. Ne peuvent pas être nulles, mais peuvent être fractionnaires. Un segment particulier peut stocker ou non des valeurs ; les valeurs stockées seront générées à des points entiers à partir de début de la fonction. La somme n1 + n2 + ... sera normalement égale à taille pour les fonctions complètement spécifiées.

| Note
GEN08 construit une table stockée à partir de morceaux d'une fonction polynomiale cubique. Chaque segment s'étend entre deux points spécifiés mais dépend aussi de leurs voisins de chaque côté. Les segments voisins coïncideront en valeur et en pente à leur point commun. (La pente commune est celle d'une parabole passant par ce point et ses deux voisins). La pente aux deux extrémités de la fonction est forcée à zéro (plate). Conseil : pour créer une discontinuité de pente ou de valeur dans la fonction stockée, disposer une série de points dans l'intervalle entre deux valeurs stockées ; faire de même pour une pente non nulle à l'une des extrémités.

## Exemples

Voici un exemple de la routine GEN08. Il utilise le fichier gen08.csd.

Exemple 1273. Un exemple de la routine GEN08.

    <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 gen08.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, 2, ixmode		;normalize index data

    ibasefreq = 440
    kfreq = kval * 100			;scale
    asig  poscil .7, ibasefreq + kfreq, 1	;and add to frequency
          outs asig, asig

    endin
    </CsInstruments>
    <CsScore>
    f 1 0 16384 10 1	;sine wave.
    f 2 0 65 8 0 16 1 16 1 16 0 17 0
    f 3 0 65 8 -1 32 1 2 0 14 0 17 0

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

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

f 2 0 65 8 0 16 1 16 1 16 0 17 0 - une courbe avec une bosse régulière au milieu, brièvement négative sur les bords et plate aux extrémités

f 3 0 65 8 -1 32 1 2 0 14 0 17 0 - à partir d'une valeur négative, une courbe avec une bosse régulière, puis négative créant une petite bosse et enfin plate

## Voir aussi

GEN05, GEN06 et GEN07

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