tablemix

tablemix — Mélange deux tables.

Description

Mélange deux tables.

Syntaxe

tablemix kdft, kdoff, klen, ks1ft, ks1off, ks1g, ks2ft, ks2off, ks2g

Exécution

kdft -- Table de fonction destination.

kdoff -- Décalage de l'origine de l'écriture. Peut être négatif.

klen -- Nombre d'opérations d'écriture à réaliser. Une valeur négative signifie écrire avec des indices descendants.

ks1ft, ks2ft -- Tables de fonction sources. Peuvent être identique à la table destination, si l'on fait attention au sens d'écriture lors de la copie des données.

ks1off, ks2off -- Décalages de l'origine de la lecture dans les tables sources.

ks1g, ks2g -- Gains à appliquer lors de la lecture dans les tables source. Les résultats sont additionnés et la somme est écrite dans la table destination.

tablemix -- Cet opcode mélange deux tables, avec des gains séparés dans une table destination. L'écriture se fait sur klen positions, habituellement en avançant dans la table si klen est positif. S'il est négatif, l'écriture et la lecture se font avec des indices décroissants dans les tables. Cet option bi-directionnelle permet de déplacer facilement le contenu d'une table en lisant et en écrivant dans celle-ci avec un décalage différent.

Si klen vaut 0, il n'y a pas d'écriture. Noter que la valeur entière interne de klen est obtenue de la fonction floor() du C ANSI qui retourne l'entier négatif directement inférieur. Ainsi avec une valeur fractionnaire négative de klen de -2.3 on aura une longueur interne de 3, et la copie commencera à partir des positions décalées et se fera sur deux positions vers la gauche.

L'indice résultant pour la lecture et l'écriture dans les tables est calculé à partir du décalage de l'origine pour chaque table auquel est additionnée la valeur de l'index, qui commence à 0 et augmente ou diminue d'un pas unité tout au long du mixage.

Ces indices résultants peuvent devenir très grands, car il n'y a aucune restriction pour le décalage ou klen. Cependant l'indice résultant pour chaque table subit un ET logique avec un masque de longueur (tel que 0000 0111 pour une table de longueur 8) pour former l'indice final qui sera utilisé pour la lecture ou l'écriture. Ainsi il ne peut y avoir aucune lecture ou écriture en dehors des tables. C'est la même chose que le mode « wrap » (cyclique) dans la lecture et l'écriture de table. Ces opcoces ne lisent pas ou n'écrivent pas le point de garde. Si une table a été réécrite par l'un de ceux-ci et si elle a un point de garde sensé contenir la même valeur que la position 0, il faut ensuite appeler tablegpw afterwards.

Les indices et les décalages sont exprimés en pas de table - ils ne sont pas normalisés entre 0 et 1. Ainsi pour une table de longueur 256, klen doit être fixé à 256 si toute la table doit être lue ou écrite.

Il n'est pas nécessaire que les tables soient de même longueur - le parcours cyclique se fait individuellement pour chaque table.

Exemples

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

Exemple 980. Exemple de l'opcode tablemix.

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

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

gisinoid ftgen 1, 0, 256, 10, 1, 0, 0, .4		;sinoid
gisaw    ftgen 2, 0, 1024, 7, 0, 256, 1			;saw
gimix    ftgen 100, 0, 256, 7, 0, 256, 1		;destination table

instr 1

kgain linseg 0, p3*.5, .5, p3*.5, 0
      tablemix 100, 0, 256, 1, 0, 1, 2, 0, kgain
asig  poscil .5, 110, gimix			;mix table 1 & 2			
      outs   asig, asig

endin
</CsInstruments>
<CsScore>

i1 0 10

e
</CsScore>
</CsoundSynthesizer>


Voir aussi

tablecopy, tablegpw, tableicopy, tableigpw, tableimix

Crédits

Auteur : Robin Whittle
Australie
Mai 1997

Nouveau dans la version 3.47