tab

tab — Opcodes de table rapides.

Description

Opcodes de table rapides. Plus rapides que table et que tablew parce qu'ils fonctionnent sans indexation cyclique et sans limite et qu'ils ne testent pas la validité des index. Ils ont été implémentés pour fournir un accès rapide aux tableaux. Ils supportent les tables dont la longueur n'est pas une puissance de deux (pouvant être générées par n'importe quelle fonction GEN en lui donnant une valeur de longueur négative).

Syntaxe

ir tab_i indx, ifn[, ixmode]
kr tab kndx, ifn[, ixmode]
ar tab xndx, ifn[, ixmode]
tabw_i isig, indx, ifn [,ixmode]
tabw ksig, kndx, ifn [,ixmode]
tabw asig, andx, ifn [,ixmode]

Initialisation

ifn -- numéro de la table.

ixmode -- zéro par défaut. S'il est nul, l'intervalle de variation de xndx et de ixoff est la longueur de la table ; s'il est non nul, xndx et ixoff varient entre 0 et 1.

isig -- valeur d'entrée à écrire.

indx -- index de la table.

Exécution

asig, ksig -- signal d'entrée à écrire.

andx, kndx -- index de la table.

Les opcodes tab et tabw sont semblables à table et à tablew, mais ils sont plus rapides et supportent des tables dont la longueur n'est une puissance de deux.

Il faut apporter une attention spéciale aux valeurs de l'index. Des valeurs d'index en dehors de l'espace alloué pour la table provoqueront un plantage de Csound.

Exemples

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

Exemple 969. Exemple de l'opcode tab.

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

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

gifn1 ftgen 1, 0, 0, 1, "flute.aiff", 0, 4, 0	;deferred-size table

instr 1 

atab  init 0 
isize tableng 1					;length of table?
print isize
andx  phasor 1 / (isize / sr) 
asig  tab andx, 1, 1				;has a 0 to 1 range
      outs asig, asig

endin 
</CsInstruments> 
<CsScore> 

i 1 0 2.3
e
</CsScore> 
</CsoundSynthesizer>


Crédits

Ecrit par Gabriel Maldonado.