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

## ftset

ftset — Fixe plusieurs éléments d'une table à une valeur donnée.

## Description

Fixe plusieurs éléments d'une table à une valeur donnée. Tous les éléments de la table (début:fin:pas) peuvent être fixés en une fois. Si tous les paramètres sont des variables de taux-i, il ne s'exécute que pendant l'initialisation. Sinon ftset est exécuté à chaque cycle.

Opcode de greffon dans emugens.

## Syntaxe

    ftset ktablenum, kvalue [, kstart=0, kend=0, kstep=1 ]

    ftset itablenum, ivalue [, istart=0, iend=0, istep=1 ]

## Initialisation

## Exécution

ktablenum -- le numéro de la table à modifier

kvalue -- la valeur à écrire dans la table

kstart -- l'indice de la première position à modifier (0 par défaut)

kend -- l'indice de la dernière position à modifier. Vaut 0 par défaut, ce qui indique la fin de la table. On peut utiliser un indice négatif pour compter à partir de la fin, ainsi, par exemple -1 modifiera la table sans changer le dernier élément.

kstep -- l'incrément à utiliser entre les indices des positions à modifier. Vaut 1 par défaut, ce qui signifie la modification de chaque élément entre start et end

## Exemples

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

Exemple 396. Exemple de l'opcode ftset.

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>
    </CsOptions>
    <CsInstruments>

    ; Example file ftset

    /*

    ftset:

    Write a value to the whole table, or a slice of it.

    Syntax:

    ftset ktablenum, kvalue, kstart=0, kend=0, kstep=1
    ftset itablenum, ivalue, istart=0, iend=0, istep=1

    ktablenum / itablenum:
    table to be modified

    kvalue / ivalue:
    value to write to the table

    kstart / istart:
        the index to start modifying

    kend / iend:
       the end index to stop modifying. This is NOT inclusive. 0=end of table
       Any negative index will be interpreted as counting from the end of the
       table, so -2 will modify the whole table but the last two elements

    kstep / istep:
        how many elements to skip

    See also: tablecopy, tableicopy, tab2array
    */

    instr 1
      ; clear the table
      itable ftgentmp 0, 0, 13, -2,  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
      ftset itable, 0
      ; print it at perf-time
      ftprint itable, -1
      turnoff
    endin

    instr 2
      ; Set all elements but the last 5 to 99
      itable ftgentmp 0, 0, 13, -2,  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

      ftset itable, 99, 0, -5
      ftprint itable, -1
      turnoff
    endin

    instr 3
      ; ftset works at k-time so it can be used inside an if clause
      ; Set all even elements to 0 at the 10th k-cycle
      itable ftgentmp 0, 0, 10, -2,  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
      kcycle = timeinstk()
      if kcycle == 10 then
        ftset itable, 0, 0, 0, 2
      endif
      println "cycle num: %d", kcycle
      ftprint itable, -1  ; print at each cycle
      ; turnoff the instrument if table was indeed modified
      if tab:k(6, itable) == 0 then
        println "Table was modified, turning off"
        turnoff
      endif
    endin

    </CsInstruments>
    <CsScore>
    i 1 0   0.1
    i 2 +   0.1
    i 3 +   0.1

    </CsScore>
    </CsoundSynthesizer>

## Crédits

Par : Eduardo Moguillansky 2020

Précédent | Niveau supérieur | Suivant
ftsavek | Sommaire | ftslice