chnset — Ecrit des données vers le bus logiciel nommé.
Ecrit sur un canal du bus logiciel nommé. Cela implique la déclaration du canal avec imod=2 (voir aussi chn_k, chn_a et chn_S).
chnset ival, Sname
chnset kval, Sname
chnset aval, Sname
chnset Sval, Sname
chnsetks Sval, Sname
chnseti ival[], []Sname
chnsetk kval[], []Sname
chnseta aval[], []Sname
chnsets Sval[], []Sname
Sname -- une chaîne de caractères indiquant le canal nommé du bus logiciel sur lequel écrire.
Sname[] -- un tableau de chaînes de caractères indiquant sur quels canaux nommés du bus logiciel écrire.
ival -- la valeur de contrôle écrite à l'initialisation.
ival[] -- un tableau de valeurs de contrôle à écrire à l'initialisation.
Sval -- la chaîne de caractères écrite à l'initialisation.
Sval[] -- un tableau de chaînes de caractères à écrire à l'initialisation.
kval -- la valeur de contrôle écrite pendant l'exécution.
aval -- le signal audio écrit pendant l'exécution.
Sval -- la chaîne de caractères à écrire au taux-k. L'opcode chnset avec des chaînes de caractères fonctionne au temps-i et durant l'exécution, tandis que chnsetks ne fonctionne que pendant l'exécution. Le contenu du canal n'est mis à jour que si la variable chaîne de caractères est modifiée.
kval[] -- un tableau de valeurs de contrôle à écrire pendant l'exécution.
aval[] -- un tableau de vecteurs audio à écrire pendant l'exécution.
Note | |
---|---|
Bien qu'il soit possible de boucler sur les noms de canaux d'un tableau avec chnget et chnset, l'utilisation de la variante basée sur des tableaux est plus efficace. |
L'exemple montre l'utilisation du bus logiciel pour écrire une information de hauteur vers un programme de contrôle.
sr = 44100 kr = 100 ksmps = 1 instr 1 a1 in kp,ka pitchamdf a1 chnset kp, "pitch" endin
Voici un autre exemple de l'opcode chnset. Il utilise le fichier chnset.csd.
Exemple 139. Exemple de l'opcode chnset.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o chnset.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ;Example by Joachim Heintz sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1; send i-values chnset 1, "sio" chnset -1, "non" endin instr 2; send k-values kfreq randomi 100, 300, 1 chnset kfreq, "cntrfreq" kbw = kfreq/10 chnset kbw, "bandw" endin instr 3; send a-values anois rand .1 chnset anois, "noise" loop: idur random .3, 1.5 timout 0, idur, do reinit loop do: ifreq random 400, 1200 iamp random .1, .3 asig oscils iamp, ifreq, 0 aenv transeg 1, idur, -10, 0 asine = asig * aenv chnset asine, "sine" endin instr 11; receive some chn values and send again ival1 chnget "sio" ival2 chnget "non" print ival1, ival2 kcntfreq chnget "cntrfreq" kbandw chnget "bandw" anoise chnget "noise" afilt reson anoise, kcntfreq, kbandw afilt balance afilt, anoise chnset afilt, "filtered" endin instr 12; mix the two audio signals amix1 chnget "sine" amix2 chnget "filtered" chnmix amix1, "mix" chnmix amix2, "mix" endin instr 20; receive and reverb amix chnget "mix" aL, aR freeverb amix, amix, .8, .5 outs aL, aR endin instr 100; clear chnclear "mix" endin </CsInstruments> <CsScore> i 1 0 20 i 2 0 20 i 3 0 20 i 11 0 20 i 12 0 20 i 20 0 20 i 100 0 20 </CsScore> </CsoundSynthesizer>