setksmps — Fixe la valeur locale de ksmps dans un bloc d'opcode défini par l'utilisateur.
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 | |
---|---|
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 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 :
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.
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]