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

## tablexkt

tablexkt — Lit des tables de fonction avec interpolation linéaire, cubique ou sinc.

## Description

Lit des tables de fonction avec interpolation linéaire, cubique ou sinc.

## Syntaxe

    ares tablexkt xndx, kfn, kwarp, iwsize [, ixmode] [, ixoff] [, iwrap]

## Initialisation

iwsize -- Ce paramètre contrôle le type d'interpolation à utiliser :

- 2 : Interpolation linéaire. C'est la qualité la plus faible, mais aussi le mode le plus rapide.

- 4 : Interpolation cubique. Qualité légèrement meilleure qu'avec iwsize = 2, au prix d'un traitement moins rapide.

- 8 et au-dessus (jusqu'à 1024) : interpolation sinc avec une taille de fenêtre égale à iwsize (doit être un multiple entier de 4). Meilleure qualité que l'interpolation linéaire ou cubique, mais très lent. Lorsque l'on transpose vers le haut, on peut utiliser une valeur de kwarp supérieure à 1 pour un meilleur lissage (c'est encore plus lent).

ixmode (facultatif) -- mode d'indexation. La valeur par défaut est 0.

- 0 : indices bruts

- valeur différente de 0 : normalisé (0 à 1)

| Notes
Si l'on utilise tablexkt pour reproduire des échantillons avec boucle (par exemple avec un indice de table généré par lphasor), il faut qu'il y ait au moins iwsize / 2 échantillons après la fin de la boucle pour l'interpolation, sinon il pourra y avoir des clics audibles (il doit y avoir aussi au moins iwsize / 2 échantillons avant le début de la boucle).

ixoff (facultatif) -- valeur de décalage de l'indice. Pour une table dont l'origine est au centre, il faut utiliser taille_table / 2 (indices bruts) ou 0.5 (indices normalisés). La valeur par défaut est 0.

iwrap (facultatif) -- indicateur de parcours cyclique des indices. La valeur par défaut est 0.

- 0 : Pas de lecture cyclique (les indices < 0 sont ramenés à 0 ; les indices >= à la taille de la table (ou 1.0 en mode normalisé) restent bloqués sur le point de garde).

- valeur différente de 0 : l'indice est replié dans l'intervalle autorisé (sans inclure le point de garde dans ce cas).

| Note
iwrap s'applique aussi aux échantillons supplémentaires pour l'interpolation.

## Exécution

ares -- sortie audio.

xndx -- index de la table.

kfn -- numéro de la table de fonction.

kwarp -- s'il est supérieur à 1, on utilise la fonction sin(x / kwarp) / x pour l'interpolation sinc au lieu de la fonction par défaut sin(x) / x. C'est utile pour lisser lorque l'on transpose vers le haut (kwarp doit être fixé au facteur de transposition dans ce cas, par exemple 2.0 pour une octave), cependant le rendu peut-être jusqu'à deux fois plus lent. De plus, iwsize doit valoir au moins kwarp * 8. Cette possibilité est expérimentale et pourra être améliorée à la fois en termes de vitesse et de qualité dans de nouvelles versions.

| Note
kwarp n'a aucun effet s'il est inférieur ou égal à 1, ou si l'interpolation linéaire ou cubique est utilisée.

## Exemples

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

Exemple 1065. Exemple de l'opcode tablexkt.

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
    ; Audio out   Audio in
    -odac           -iadc     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o tablexkt.wav -W ;;; for file output any platform
    </CsOptions>

    <CsInstruments>
    ;Example by Jonathan Murphy

      sr	    =  44100
      ksmps	    =  10
      nchnls    =  1

        instr 1

      ifn	    =  1    ; query f1 as to number of samples
      ilen	    =  nsamp(ifn)

      itrns	    =  4   ; transpose up 4 octaves
      ilps	    =  16  ; allow iwsize/2 samples at start
      ilpe	    =  ilen - 16   ; and at end
      imode	    =  3  ; loop forwards and backwards
      istrt	    =  16  ; start 16 samples into loop

      alphs	    lphasor   itrns, ilps, ilpe, imode, istrt
    	; use lphasor as index
      andx	    =  alphs

      kfn	    =  1   ; read f1
      kwarp	    =  4 ; anti-aliasing, should be same value as itrns above
      iwsize    =  32  ; iwsize must be at least 8 * kwarp

      atab	    tablexkt  andx, kfn, kwarp, iwsize

      atab	    =  atab * 10000

    	    out	      atab

        endin

    </CsInstruments>

    <CsScore>
    f 1 0 262144 1 "beats.wav" 0 4 1
    i1 0 60
    e
    </CsScore>

    </CsoundSynthesizer>

## Crédits

Auteur : Istvan Varga
Janvier 2002
Exemple par Jonathan Murphy 2006

Nouveau dans la version 4.18

Précédent | Niveau supérieur | Suivant
tablewkt | Sommaire | tablexseg