Opcodes définis par l'utilisateur (UDO)

Csound permet la définition d'opcodes dans l'en-tête de l'orchestre au moyen des opcodes opcode et endop. L'opcode défini peut fonctionner avec un nombre d'échantillons par période de contrôle (ksmps) différent en utilisant setksmps.

Pour connecter les entrées et les sorties de l'UDO, on utilise xin et xout.

Un UDO ressemble à ceci :

        opcode Lowpass, a, akk

        setksmps 1              ; nécessite sr=kr
ain, ka1, ka2   xin             ; lire les paramètres d'entrée
aout    init 0                  ; initialiser la sortie
aout    =  ain*ka1 + aout*ka2   ; filtre simple comme tone
        xout aout               ; écrire la sortie

        endop

Cet UDO appelé Lowpass reçoit trois entrées (la première au taux-a, et les deux autres au taux-k), et délivre une sortie au taux-a. Noter l'utilisation de xin pour recevoir les entrées et de xout pour délivrer les sorties. Noter aussi l'utilisation de setksmps, qui est nécessaire pour que le filtre fonctionne correctement.

Pour utiliser cet UDO depuis un instrument, on écrirait quelque chose comme :

afiltre Lowpass asource, kvaleur1, kvaleur2

voir l'entrée opcode pour des informations détaillées sur la définition d'UDO.

On peut trouver plusieurs UDO déjà rédigés (ou apporter sa propre contribution) à User Defined Opcode Database sur Csounds.com.