tableikt — Permet de contrôler au taux-k les numéros de table.
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.
ares tableikt xndx, kfn [, ixmode] [, ixoff] [, iwrap]
kres tableikt kndx, kfn [, ixmode] [, ixoff] [, iwrap]
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.
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 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. |
Voici un exemple de l'opcode tableikt. Il utilise le fichier tableikt.csd.
Exemple 1068. 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