tabmorphi
Prev | Opcodes et opérateurs de l'orchestre | Next

## tabmorphi

tabmorphi — Permet le fondu enchaîné entre un ensemble de tables avec interpolation.

## Description

tabmorphi permet le fondu enchaîné entre un ensemble de tables de la même taille au moyen d'une moyenne pondérée entre deux tables sélectionnées dans l'ensemble.

## Syntaxe

    kout tabmorphi kindex, kweightpoint, ktabnum1, ktabnum2, \
          ifn1, ifn2 [, ifn3, ifn4, ... ifnN]

## Initialisation

ifn1, ifn2 [, ifn3, ifn4, ..., ifnN] -- numéros des tables de fonction. C'est un ensemble de tables choisies par l'utilisateur pour le fondu enchaîné. Toutes les tables doivent avoir la même longueur. Il faut être conscient que seulement deux de ces tables peuvent être choisies en même temps pour le fondu enchaîné. Comme il est possible d'utiliser des nombres non-entiers pour les arguments ktabnum1 et ktabnum2, le fondu enchaîné est le résultat d'une interpolation entre des tables adjacentes consécutives de l'ensemble.

## Exécution

kout -- la valeur retournée pour l'indice kindex, résultant du fondu enchaîné de deux tables (voir ci-dessous).

kindex -- indice principal de la table résultant du fondu enchaîné. L'intervalle va de 0 à la longueur de la table (exclue).

kweightpoint -- le poids de l'influence d'une paire de tables sélectionnées dans le fondu enchaîné. Cet argument est compris entre 0 et 1. 0 provoque la sortie de la première table inchangée, 1 provoque la sortie de la seconde table de la paire inchangée. Toutes les valeurs intermédiaires entre 0 et 1 déterminent la gradation du fondu enchaîné entre les deux tables de la paire.

ktabnum1 -- la première table choisie pour le fondu enchaîné. Ce nombre n'exprime pas directement le numéro de la table mais la position de celle-ci dans la séquence de l'ensemble (de 0 à N-1). Si ce nombre est entier, la table correspondante est choisie inchangée. S'il contient une partie fractionnaire, alors une interpolation avec la table adjacente suivante a lieu.

ktabnum2 -- la deuxième table choisie pour le fondu enchaîné. Ce nombre n'exprime pas directement le numéro de la table mais la position de celle-ci dans la séquence de l'ensemble (de 0 à N-1). Si ce nombre est entier, la table correspondante est choisie inchangée. S'il contient une partie fractionnaire, alors une interpolation avec la table adjacente suivante a lieu.

La famille d'opcodes tabmorphi est semblable à la famille table, mais elle permet un fondu enchaîné entre deux tables choisies dans un ensemble de tables. D'abord, l'utilisateur doit fournir un ensemble de tables d'égale longueur (ifn1, ifn2 [, ifn3, ifn4, ..., ifnN]). Ensuite, il peut choisir une paire de tables dans l'ensemble afin d'effectuer le fondu enchaîné : ktabnum1 et ktabnum2 reçoivent des nombres (0 représente la première table dans l'ensemble, 1 la seconde, 2 la troisième et ainsi de suite). Puis il détermine le fondu enchaîné entre les deux tables choisies, avec le paramètre kweightpoint. Après cela, la table résultante peut être indéxée avec le paramètre kindex comme pour un opcode table normal. Si la valeur de ce paramètre dépasse la longueur de table (qui doit être la même pour toutes les tables), elle est repliée cycliquement.

tabmorphi est identique à tabmorph, mais il effectue une interpolation linéaire pour les valeurs non entières de kindex, à l'instar de tablei.

## Exemples

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

Example 915. Exemple de l'opcode tabmorphi.

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

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

    giSine   ftgen 0, 0, 8193, 10, 1				;sine wave
    giSquare ftgen 0, 0, 8193, 7, 1, 4096, 1, 0, -1, 4096, -1	;square wave
    giTri    ftgen 0, 0, 8193, 7, 0, 2048, 1, 4096, -1, 2048, 0	;triangle wave
    giSaw    ftgen 0, 0, 8193, 7, 1, 8192, -1			;sawtooth wave, downward slope

    instr    1

    iamp   = .7
    kindex phasor 440			;read table value at this index
    kindex = kindex*8192			;for all 8192 index points
    kweightpoint = 0.5			;set weightpoint
    ktabnum1 line 0, p3, 3			;morph through all tables
    ktabnum2 = 2				;set to triangle wave
    ksig tabmorphi kindex, kweightpoint, ktabnum1, ktabnum2, giSine, giSquare, giTri, giSaw
    ksig = ksig*iamp
    asig interp ksig			;convert to audio signal
    outs asig, asig

    endin
    </CsInstruments>
    <CsScore>

    i1 0 5
    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

table, tabmorph, tabmorpha, tabmorphak, ftmorf,

## Crédits

Auteur : Gabriel Maldonado

Nouveau dans version 5.06

Prev | Up | Next
tabmorphak | Home | tabplay