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

## tablecopy

tablecopy — Opcode de copie de table simple et rapide.

## Description

Opcode de copie de table simple et rapide.

## Syntaxe

    tablecopy kdft, ksft

## Exécution

kdft -- Table de fonction destination.

ksft -- Numéro de la table de fonction source.

tablecopy -- Opcode de copie de table simple et rapide. Il prend la longueur de la table destination et lit à partir du début de la table source. Pour aller vite, il ne teste pas la longueur de la source - il copie quoiqu'il arrive - en mode « cyclique ». Ainsi, la table source peut-être lue plusieurs fois. Avec une table source de longueur 1, toutes les positions de la tables destination recevront son unique valeur.

tablecopy ne peut pas lire ou écrire le point de garde. Pour le lire, il faut utiliser table, avec ndx = la longueur de la table. De même, il faut utiliser une écriture de table pour l'écrire.

Pour écrire le point de garde avec la valeur de la position 0, utiliser tablegpw.

Cet opcode sert principalement à changer les tables de fonction rapidement dans une situation de temps réel.

## Exemples

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

Exemple 1054. Exemple de l'opcode tablecopy.

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

    sr  = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1
    ;after an example from Jonathan Murphy

    gilen = 7
    gilist  ftgen 1, 0, gilen + 1, -2, 2, 3, 4, 5, 6, 7	;only 6 elements, so 1 is doubled
    gitmp   ftgen 2, 0, gilen + 1, -2, 0			;empty table
    gkmax   init gilen

    seed 0							;each time different

    instr 1

    ktrig metro 3						;trigger values
    krnd  random 0, gkmax

    if (ktrig == 1) then
      kval    table  krnd, gilist
              tablew 0, krnd, gilist
      kread   = 0
      kwrite  = 0
    start:
      knew    table kread, gilist
    if (knew != 0) then
              tablew knew, kwrite, gitmp
      kwrite    =  kwrite + 1
    endif
      kread   = kread + 1
    if (kread <= gilen) kgoto start
              tablecopy gilist, gitmp			;fill with zeroes
      gkmax   = gkmax - 1
    endif

    printk2 kval

    if (gkmax < 0) then
              event "i", 2, 0, 1/kr				;when ready, then stop
    endif

    asig vco2 .5, 40*kval					;sound generation
    outs asig, asig

    endin

    instr 2

    exitnow

    endin
    </CsInstruments>
    <CsScore>
    i1 0 5
    e
    </CsScore>
    </CsoundSynthesizer>

Sa sortie contiendra des lignes comme celles-ci :

    i1     5.00000
    i1     3.00000
    i1     2.00000
    i1     4.00000
    i1     7.00000
    i1     6.00000
    i1     7.00000

## Voir aussi

tablegpw, tablemix, tableicopy, tableigpw, tableimix

## Crédits

Auteur : Robin Whittle
Australie
Mai 1997

Nouveau dans la version 3.47

Précédent | Niveau supérieur | Suivant
table3 | Sommaire | tablefilter