chn — Déclare un canal du bus logiciel nommé.
Déclare un canal du bus logiciel nommé, en donnant des paramètres facultatifs dans le cas d'un canal de contrôle. Si le canal n'existe pas encore, il est créé avec une valeur initiale de zéro ou une chaîne de caractères vide. Sinon le type (contrôle, audio ou chaînes de caractères) du canal existant doit correspondre à la déclaration ou bien il y aura une erreur d'initialisation. Le mode entrée/sortie d'un canal existant est mis à jour de façon à représenter le OU binaire entre la valeur précédente et la nouvelle.
chn_k Sname, imode[, itype, idflt, imin, imax, ix, iy, \
iwidth, iheight, Sattributes]
chn_a Sname, imode
chn_S Sname, imode
chn_S Sname, Smode
imode -- somme d'au moins un des nombres suivants : 1 pour entrée et 2 pour sortie.
Smode -- le mode peut aussi être fixé par une chaîne de caractères : "r" pour entrée, "w" pour sortie ou "rw" pour entrée/sortie.
itype (facultatif, 0 par défaut) -- sous-type du canal, seulement pour les canaux de contrôle. Les valeurs possibles sont :
0 : par défault / indéfini (idflt, imin et imax sont ignorés)
1 : seulement des valeurs entières
2 : échelle linéaire
3 : échelle exponentielle
idflt (facultatif, 0 par défaut) -- valeur par défaut, seulement pour les canaux de contrôle avec itype différent de zéro. Doit être supérieur ou égal à imin et inférieur ou égal à imax.
imin (facultatif, 0 par défaut) -- valeur minimale, seulement pour les canaux de contrôle avec itype différent de zéro. Doit être différent de zéro pour l'échelle exponentielle (itype = 3).
imax (facultatif, 0 par défaut) -- valeur maximale, seulement pour les canaux de contrôle avec itype différent de zéro. Doit être supérieur à imin. Dans le cas d'une échelle exponentielle, il doit également avoir le même signe que imin.
ix -- position x suggérée pour le contrôleur.
iy -- position y suggérée pour le contrôleur.
iwidth -- position suggérée de la largeur pour le contrôleur.
iheight -- position suggérée de la hauteur pour le contrôleur.
Sattributes -- attributs pour le contrôleur.
Les paramètres du canal (imode, itype, idflt, imin et imax) ne sont que des indications pour l'application hôte ou un logiciel externe accédant au bus par l'API, et ils ne restreignent en rien la lecture ou l'écriture sur le canal. De plus, la valeur initiale d'un nouveau canal de contrôle est zéro, quelque soit la valeur de idflt.
Il peut être préférable d'utiliser chnexport pour communiquer avec un logiciel externe, car il permet un accès direct aux variables de l'orchestre exportées comme des canaux du bus, ce qui évite l'utilisation de chnset et de chnget pour envoyer ou recevoir des données.
chn_k, chn_a, et chn_S déclarent respectivement un canal de contrôle, un canal audio ou un canal de chaînes de caractères.
L'exemple montre l'utilisation du bus logiciel comme signal de contrôle asynchrone pour fixer la fréquence de coupure du filtre. On suppose qu'un programme externe utilisant l'API fournit les valeurs.
sr = 44100 kr = 100 ksmps = 1 chn_k "cutoff", 1, 3, 1000, 500, 2000 instr 1 kc chnget "cutoff" a1 oscil p4, p5, 100 a2 lowpass2 a1, kc, 200 out a2 endin