tablei

tablei — Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.

Description

Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.

Syntaxe

ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]

Initialisation

ifn -- numéro de la table de fonction. tablei nécessite un point de garde.

ixmode (facultatif) -- type de l'index. La valeur par défaut est 0.

  • 0 = index brut

  • 1 = normalisé (de 0 à 1)

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

iwrap (facultatif) -- indicateur d'indexation cyclique. La valeur par défaut est 0.

  • 0 = indexation normale (index < 0 traité comme index=0 ; index > taille_table ramené à index=taille_table)

  • 1 = indexation cyclique.

Exécution

tablei est une unité avec interpolation dans laquelle la partie fractionnaire de l'index est utilisée pour interpoler entre les entrées adjacentes de la table. La régularité apportée par l'interpolation se paie par une légère augmentation du temps d'exécution (voir aussi oscili, etc.), mais sinon les unités avec ou sans interpolation sont interchangeables. Noter que lorsque tablei utilise un index périodique dont la valeur modulo n est inférieure à la puissance de 2, longueur de la table, l'interpolation nécessite qu'il existe une (n + 1)ème valeur dans la table qui est une copie de la première valeur (voir l'instruction f de la partition).

[Avertissement] Avertissement
La lecture de tables contenant une information stéréo ou multicanaux causera probablement du bruit non désiré car l'opcode interpole entre des positions successives de la table sans tenir compte de l'origine de son contenu. Habituellement seul le contenu d'un canal est attendu. Il faut plutôt considérer l'utilisation de loscilx.

Exemples

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

Exemple 1067. Exemple de l'opcode tablei.

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

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

seed 0	;generate new values every time the instr is played

instr 1

ifn = p4
isize = p5
ithresh = 0.5
    
itemp ftgen ifn, 0, isize, 21, 2

iwrite_value = 0
i_index = 0
    
loop_start:
    iread_value tablei i_index, ifn
    
    if iread_value > ithresh then
         iwrite_value = 1
    else
         iwrite_value = -1
    endif
tableiw iwrite_value, i_index, ifn
loop_lt i_index, 1, isize, loop_start        
    turnoff

endin

instr 2

ifn = p4
isize = ftlen(ifn)    
prints "Index\tValue\n"
    
i_index = 0
loop_start:
    ivalue tablei i_index, ifn
    prints "%d:\t%f\n", i_index, ivalue

  loop_lt i_index, 1, isize, loop_start		;read table 1 with our index

aout oscili .5, 100, ifn			;use table to play the polypulse
     outs   aout, aout

endin
</CsInstruments>
<CsScore>
i 1 0 1 100 16
i 2 0 2 100
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

table, table3, oscil1, oscil1i, osciln

Plus d'information sur cet opcode : http://www.csoundjournal.com/issue12/genInstruments.html , écrit par Jacob Joaquin.