vcopy — Copie entre deux signaux vectoriels de contrôle.
ifn1 - numéro de la table dans laquelle le signal vectoriel sera copié (destination).
ifn2 - numéro de la table hébergeant le signal vectoriel à copier (source).
kelements - nombre de composantes du vecteur.
kdstoffset - décalage d'indexation pour la table de destination ifn1 (vaut 0 par défaut).
ksrcoffset - décalage d'indexation pour la table source ifn2 (vaut 0 par défaut).
kverbose - Indique si les avertissements sont affichés (vaut 0 par défaut).
vcopy copie kelements éléments de ifn2 (à partir de la position ksrcoffset) vers ifn1 (à partir de la position kdstoffset). Utile pour conserver les valeurs de l'ancien vecteur en les stockant dans une autre table.
Des valeurs négatives pour kdstoffset et ksrcoffset sont acceptables. Si kdstoffset est négatif, la partie du vecteur hors-limites est ignorée. Si ksrcoffset est négatif, les éléments hors-limites seront supposés valoir 1 (c'est-à-dire que les éléments de destination ne seront pas changés). Si des éléments pour le vecteur de destination sont au-delà de la taille de la table (point de garde inclus), ces éléments sont ignorés (les éléments ne sont pas repliés autour des tables). Si des éléments pour le vecteur source sont au-delà de la longueur de la table, ces éléments sont supposés valoir 1 (le vecteur de destination ne sera pas changé pour ces éléments).
Si l'argument facultatif kverbose est différent de 0, l'opcode affichera des messages d'avertissement à chaque passe-k si les longueurs de table sont dépassées.
Avertissement | |
---|---|
L'utilisation de la même table comme source et comme destination dans les versions antérieures à la 5.04 peut induire un comportement imprévu. A utiliser avec précaution. |
Cet opcode travaille au taux-k (cela signifie qu'à chaque passe-k les vecteurs sont copiés). Il y a une version de taux-i de cet opcode appelée vcopy_i.
Note | |
---|---|
Prière de noter que l'argument elements a changé dans la version 5.03 du taux-i au taux-k. Cela change le comportement de l'opcode dans le cas inhabituel où la variable de taux-i ielements est modifiée à l'intérieur de l'instrument, par exemple dans : instr 1 ielements = 10 vadd 1, 1, ielements ielements = 20 vadd 2, 1, ielements turnoff endin
|
Tous ces opérateurs (vaddv, vsubv, vmultv, vdivv, vpowv, vexp, 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 vcopy. Il utilise le fichier vcopy.csd.
Exemple 1165. Exemple de l'opcode vcopy.
<CsoundSynthesizer> <CsOptions>; Select audio/midi flags here according to platform ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o vcopy.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr=44100 kr=4410 ksmps=10 nchnls=2 instr 1 ;table playback ar lposcil 1, 1, 0, 262144, 1 outs ar,ar endin instr 2 vcopy 2, 1, 20000 ;copy vector from sample to empty table vmult 5, 20000, 262144 ;scale noise to make it audible vcopy 1, 5, 20000 ;put noise into sample turnoff endin instr 3 vcopy 1, 2, 20000 ;put original information back in turnoff endin </CsInstruments> <CsScore> f1 0 262144 -1 "beats.wav" 0 4 0 f2 0 262144 2 0 f5 0 262144 21 3 30000 i1 0 4 i2 3 1 s i1 0 4 i3 3 1 s i1 0 4 </CsScore> </CsoundSynthesizer>