tablei — Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.
ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
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.
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 | |
---|---|
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. |
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>