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.