vmap
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## vmap

vmap — Permute les éléments d'un vecteur selon les indices contenus dans un autre vecteur.

## Description

Transfert les éléments d'un vecteur vers un autre selon les indices contenus dans ce dernier.

## Syntaxe

    vmap  ifn1, ifn2, ielements [,idstoffset, isrcoffset]

## Initialisation

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.

## Exécution

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.

## Exemples

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

Exemple 1041. 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>

## Crédits

Ecrit par Gabriel Maldonado.

Nouveau dans Csound 5 (Auparavant seulement disponible dans CsoundAV)

Précédent | Niveau supérieur | Suivant
vlowres | Sommaire | vmirror