vmap — Permute les éléments d'un vecteur selon les indices contenus dans un autre vecteur.
Transfert les éléments d'un vecteur vers un autre selon les indices contenus dans ce dernier.
ifn1 - numéro de la table dans laquelle le signal vectoriel sera copié et qui contient le vecteur d'indices.
ifn2 - numéro de la table hébergeant le signal vectoriel à copier.
ielements - nombre d'éléments à traiter.
idstoffset - décalage d'indexation pour la table de destination ifn1.
isrcoffset - décalage d'indexation pour la table source ifn2.
vmap permute les éléments de ifn2 selon les valeurs de la table ifn1. Les éléments de ifn1 sont traités comme indices de la table ifn2, si bien que les valeurs des éléments de ifn1 ne doivent pas dépasser la longueur de la table ifn2, sinon Csound rapportera une erreur. Les éléments de ifn1 sont traités comme des entiers, chaque partie décimale étant tronquée. Il n'y a aucune interpolation lors de cette opération.
En pratique, les éléments de ifn1 sont utilisés comme indices pour ifn2, et sont ensuite remplacés par les éléments correspondants de ifn2. ifn1 doit être différente de ifn2, sinon les résultats sont imprévisibles. Csound générera une erreur d'initialisation si elles ne sont pas différentes.
Tous ce opérateurs (vaddv, vsubv, vmultv, vdivv, vpowv, vexpv, vcopy et vmap) sont conçus pour être utilisés avec d'autres opcodes qui opèrent sur des signaux vectoriels tels que vcella, adsynt, adsynt2, etc.
Voici un exemple de l'opcode vmap. Il utilise le fichier vmap.csd.
Exemple 1187. Exemple de l'opcode vmap.
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 ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o vmap.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ksmps = 256 nchnls = 2 gisize = 64 gitable ftgen 0, 0, gisize, 10, 1 ;Table to be processed gimap1 ftgen 0, 0, gisize, -7, gisize-1, gisize-1, 0 ; Mapping function to reverse table gimap2 ftgen 0, 0, gisize, -5, 1, gisize-1, gisize-1 ; Mapping function for PWM gimap3 ftgen 0, 0, gisize, -7, 1, (gisize/2)-1, gisize-1, 1, 1, (gisize/2)-1, gisize-1 ; Double frequency instr 1 ;Hear an oscillator using gitable asig oscil 10000, 440, gitable outs asig,asig endin instr 2 ;Reverse the table (no sound change, except for a single click vmap gimap1, gitable, gisize vcopy_i gitable, gimap1, gisize turnoff endin instr 3 ;Non-interpolated PWM (or phase waveshaping) vmap gimap2, gitable, gisize vcopy_i gitable, gimap2, gisize turnoff endin instr 4 ;Double frequency vmap gimap3, gitable, gisize vcopy_i gitable, gimap3, gisize turnoff endin </CsInstruments> <CsScore> i 1 0 8 i 2 2 1 i 3 4 1 i 4 6 1 e </CsScore> </CsoundSynthesizer>