tableikt

tableikt — Permet de contrôler au taux-k les numéros de table.

Description

Contrôle des numéros de table au taux-k. La lecture dans la table se fait avec interpolation linéaire.

L'opcode standard tablei de Csound, bien que produisant un résultat au taux-k ou au taux-a, ne peut utiliser qu'une variable de taux-i pour choisir le numéro de la table. tableikt accepte un contrôle au taux-k aussi bien qu'au taux-i. Pour le reste, il est semblable à l'opcode original.

Syntaxe

ares tableikt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
kres tableikt kndx, kfn [, ixmode] [, ixoff] [, iwrap]

Initialisation

ixmode -- s'il vaut 0, xndx et ixoff couvrent toute la longueur de la table. S'il est différent de zéro, xndx et ixoff varient de 0 à 1. La valeur par défaut est 0.

ixoff -- s'il vaut 0, l'indice résultant est directement contrôlé par xndx,, démarrant au début de la table. S'il est différent de zéro, l'indexation démarre à l'intérieur de la table. Sa valeur doit être positive et inférieure à la longueur de la table (ixmode = 0) ou inférieure à 1 (ixmode différent de 0). La valeur par défaut est 0.

iwrap -- si iwrap = 0, mode Limite : lorsque l'indice résultant est inférieur à 0, l'indice final vaut 0. Un indice résultant dépassant la longueur de la table donne un indice final égal à la longueur de la table : les indices résultants trop grands se limitent à l'index supérieur de la table. Si iwrap est différent de 0, mode Cyclique : l'indice résultant est replié modulo la longueur de la table de façon à ce que tous les indices résultants tombent dans la table. Par exemple, dans une table de longueur 8, xndx = 5 et ixoff = 6 donnent un indice résultant de 11, qui se replie en un indice final de 3. La valeur par défaut est 0.

Exécution

kndx -- Indice dans la table, un nombre positif compris entre 0 et la longueur de la table (ixmode = 0) ou entre 0 et 1 (ixmode différent de 0).

xndx -- varie sur la longueur de la table (ixmode = 0) ou dans l'intervalle allant de 0 à 1 (ixmode différent de 0).

kfn -- Numéro de table. Doit être >= 1. Les valeurs flottantes sont arrondies à un entier. Si un numéro de table n'indique pas une table valide, ou si la table n'a pas encore été chargée (GEN01) une erreur se produit et l'instrument est désactivé.

[Attention] Attention avec les numéros de table au taux-k

Au taux-k, si un numéro de table < 1 est donné, ou si le numéro de table indique une table inexistante ou une table de longueur nulle (devant être chargée à partie d'un fichier ultérieurement), une erreur se produit et l'instrument est désactivé. kfn doit être initialisé au taux approprié en utilisant init. Si l'on essaie de charger un valeur de taux-i dans kfn, il y aura une erreur.

Exemples

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

Exemple 933. Exemple de l'opcode tableikt.

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 RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o tableikt.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1

ilowfn	= p4					;lowest ftable wave
ihighfn	= p5					;highest ftable wave

kswpenv	line 1, p3, 0				;sweep envelope, calculate current table pair and interpolation amount
inumtables = ihighfn - ilowfn			;1 less than number of tables
kfn1	= int(kswpenv*inumtables) + ilowfn
        printks "play table no: %d\n", 1, kfn1
kfn2	= kfn1 + 1
kinterp	= frac(kswpenv*inumtables)		
ixmode  = 1					;read tables with phasor
aphase	phasor	40	
asig	tableikt aphase, kfn1, ixmode		;normalized index
   if kswpenv == 1.0 kgoto skipfn2		;if kfn1 is last table, there is no kfn2
	asig2	tableikt aphase, kfn2, ixmode
   skipfn2:
   amix	ntrpol	asig, asig2, kinterp		;interpolate between tables and output
	outs	amix*.5, amix*.5
	
endin
</CsInstruments>
<CsScore>
f 1  0 16384 10 1  
f 2  0 16384 10 1 .5  
f 3  0 16384 1 "fox.wav" 0 0 0				;a sample
f 4  0 16384 10 1 .5 .3 .25 .2 .16 .14 .125 .111	;sawtooth 
f 5  0 16384 10 1 .4 .3 .25 .2
f 6  0 16384 10 1 .3 .3 .25 .2 .16 
f 7  0 16384 10 1  1  1  1  .7 .5  .3  .1		;pulse
f 8  0 16384 1 "beats.wav" 0 0 0			;a sample

i 1 0 10 1 8
e
</CsScore>
</CsoundSynthesizer>


Sa sortie comprendra des lignes comme celles-ci :

play table no: 8
play table no: 7
play table no: 6
.....
play table no: 2
play table no: 1

Voir aussi

tablekt

Crédits

Auteur: Robin Whittle
Australie
Mai 1997

Nouveau dans la version 3.47