setksmps

setksmps — Fixe la valeur locale de ksmps dans un bloc d'opcode défini par l'utilisateur.

Description

Fixe la valeur locale de ksmps dans un bloc d'opcode défini par l'utilisateur.

Syntaxe

setksmps iksmps

Initialisation

iksmps -- fixe la valeur locale de ksmps.

Si iksmps vaut zéro, le ksmps de l'instrument ou de l'opcode appelant est utilisé (c'est le comportement par défaut).

[Note] Note

Le ksmps local est implémenté en divisant une période de contrôle en sous-périodes-k plus petites et en modifiant temporairement les variables globales internes de Csound. Ceci nécessite également de convertir le taux des entrées de taux-k et des arguments de sortie (les variables d'entrée reçoivent la même valeur durant toutes les sous-périodes-k, tandis que les sorties ne sont écrites que dans la dernière). Cela signifie aussi que l'on ne peut pas utiliser un ksmps local supérieur au ksmps global.

[Avertissement] Avertissement au sujet du ksmps local

Lorsque le ksmps local est différent de celui de l'orchestre (défini dans l'en-tête de l'orchestre), il ne faut pas utiliser d'opérations globales de taux-a dans le bloc d'opcode défini par l'utilisateur.

Ça comprend :

  • tout accès aux variables « ga »

  • les opcodes zak de taux-a (zar, zaw, etc.)

  • tablera et tablewa (en fait, ces deux opcodes peuvent fonctionner, mais il faut prendre des précautions)

  • La famille d'opcodes in et out (ceux-ci lisent et écrivent dans des tampons globaux de taux-a)

En général, le ksmps local doit être utiliser avec précaution car c'est un dispositif expérimental. Bien qu'il fonctionne dans la plupart des cas.

On peut utiliser l'instruction setksmps pour fixer la valeur locale de ksmps dans un bloc d'opcode défini par l'utilisateur. Il a un paramètre de taux-i définissant la nouvelle valeur de ksmps (qui reste inchangée si l'on utilise zéro). setksmps doit être utilisé avant tout autre opcode (mais on peut le mettre après xin), sinon il y aura des résultats imprévisibles.

Exécution

La syntaxe d'un bloc d'opcode défini par l'utilisateur est la suivante :

opcode  name, outtypes, intypes
xinarg1 [, xinarg2] [, xinarg3] ... [xinargN]  xin
[setksmps  iksmps]
... the rest of the instrument's code.
xout  xoutarg1 [, xoutarg2] [, xoutarg3] ... [xoutargN]
endop
      

On peut alors utiliser le nouvel opcode avec la syntaxe usuelle :


[xinarg1] [, xinarg2] ... [xinargN]  name  [xoutarg1] [, xoutarg2] ... [xoutargN] [, iksmps]
      

Exemples

Voir l'exemple de l'opcode opcode.

Voir aussi

endop, opcode, xin, xout

Crédits

Auteur : Istvan Varga, 2002 ; basé sur du code par Matt J. Ingalls

Nouveau dans la version 4.22