MixerReceive — Reçoit un signal de taux-a depuis un canal d'un bus.
ibuss -- Le numéro du bus, par exemple, le numéro de l'instrument recevant le signal.
ichannel -- Le numéro du canal. Chaque bus a
nchnls
canaux.
asignal -- Le signal qui a été mélangé sur le canal indiqué du bus.
L'utilisation du mélangeur nécessite que les instruments fixant les gains aient des numéros inférieurs à ceux des instruments envoyant des signaux, et que les intruments envoyant des signaux aient des numéros inférieurs à ceux des instruments recevant ces signaux. Cependant, un instrument peut avoir n'importe quel nombre de départs et de retours. Après la réception du dernier signal, il faut invoquer MixerClear pour réinitialiser les bus à 0 avant le k-cycle suivant.
instr 220 ; Master output ; It applies a bass enhancement, compression and fadeout ; to the whole piece, outputs signals, and clears the mixer. a1 MixerReceive 220, 0 a2 MixerReceive 220, 1 ; Bass enhancement al1 butterlp a1, 100 al2 butterlp a2, 100 a1 = al1*1.5 + a1 a2 = al2*1.5 + a2 ; Global amplitude shape kenv linseg 0., p5 / 2.0, p4, p3 - p5, p4, p5 / 2.0, 0. a1=a1*kenv a2=a2*kenv ; Compression a1 dam a1, 5000, 0.5, 1, 0.2, 0.1 a2 dam a2, 5000, 0.5, 1, 0.2, 0.1 ; Remove DC bias a1blocked dcblock a1 a2blocked dcblock a2 ; Output signals outs a1blocked, a2blocked MixerClear endin
Voici un exemple complet de l'opcode MixerReceive. Il utilise le fichier Mixer.csd
Exemple 624. Exemple complet de l'opcode MixerReceive.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac ; -iadc ;;;RT audio out ; For Non-realtime ouput leave only the line below: ; -o Mixer.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 katt expon 0.01, p3, 1 ;create an attack aout poscil .7, 440,1 MixerSetLevel 1, 3, katt ;impose attack on the gain level MixerSend aout, 1, 3, 0 ;send to channel 0 endin instr 2 aout vco2 .5, 110 ;saw wave MixerSetLevel 2, 3, .25 ;set level to .25 of vco2 MixerSend aout, 2, 3, 1 ;send to channel 1 endin instr 3 ;mix instr.1 and 2 with reverb kgain1 MixerGetLevel 1,3 ;get level form buss 3 kgain2 MixerGetLevel 2,3 ;get level form buss 3 a1 MixerReceive 3,0 ;receive channel 0 a2 MixerReceive 3,1 ;receive channel 1 aout = a1*kgain1+a2*kgain2 ;mix them aoutL, aoutR reverbsc aout, aout, 0.85, 12000 ;add a nice reverb outs aoutL, aoutR MixerClear endin </CsInstruments> <CsScore> f1 0 4096 10 1 i1 0 2 i2 0 2 i3 0 8 ;reverb stays on for 8 sec. e </CsScore> </CsoundSynthesizer>