vtablei — Lit des vecteurs (à partir de tables, ou tableaux de vecteurs).
indx - Index dans la ftable, soit un nombre positif inférieur à la longueur de la table (ixmode = 0) soit un nombre compris entre 0 et 1 (ixmode != 0).
ifn - numéro de la table.
iout1...ioutN - composantes du vecteur de sortie.
ixmode - mode d'indexation. Vaut 0 par défaut.
== 0 l'index est traité comme une position brute dans la table,
== 1 l'index est normalisé (entre 0 et 1).
interp - bascule entre sortie interpolée ou non-interpolée. 0 -> pas d'interpolation, différent de zéro -> interpolation activée.
Cet opcode est utile dans tous les cas où il faut accéder à des ensembles de valeurs associés à des indices uniques (par exemple, des échantillons multi-canaux, des trames de bin de TFCT, des formants spectraux, des partitions basées sur des p-champs, etc). Le nombre de composantes de chaque vecteur (longueur du vecteur) est déterminé par le nombre d'arguments facultatifs à droite (iout1, iout2, iout3, ..., ioutN).
La famille d'opcodes vtable (vector table) permet à l'utilisateur de basculer entre sortie interpolée ou non-interpolée au moyen de l'argument interp.
Noter qu'aucun mode de repliement ou de limitation d'indexation n'est implémenté. Si l'index tente d'accéder à une zone non allouée par la table, il est probable que Csound plante. Cependant on peut facilement éviter cet écueil en utilisant des opcodes de repliement ou de limitation appliqués à l'index avant l'utilisation de vtablei, afin de corriger d'éventuelles valeurs hors-limites.
Voici un exemple de l'opcode vtablei. Il utilise le fichier vtablei.csd
Exemple 1205. Exemple de l'opcode vtablei.
<CsoundSynthesizer> <CsOptions> -odac -B441 -b441 </CsOptions> <CsInstruments> sr = 44100 kr = 100 ksmps = 441 nchnls = 2 gindx init 0 instr 1 kindex init 0 ktrig metro 0.5 if ktrig = 0 goto noevent event "i", 2, 0, 0.5, kindex kindex = kindex + 1 noevent: endin instr 2 iout1 init 0 iout2 init 0 iout3 init 0 iout4 init 0 indx = p4 vtablei indx, 1, 1, 0, iout1,iout2, iout3, iout4 print iout1, iout2, iout3, iout4 turnoff endin </CsInstruments> <CsScore> f 1 0 32 10 1 i 1 0 20 </CsScore> </CsoundSynthesizer>