MixerSend
Prev | Orchestra Opcodes and Operators | Next

## MixerSend

MixerSend — Mixes an arate signal into a channel of a buss.

## Syntax

    MixerSend asignal, isend, ibuss, ichannel

## Description

Mixes an arate signal into a channel of a buss.

## Initialization

isend -- The number of the send, for example the number of the instrument sending the signal. The gain of the send is controlled by the MixerSetLevel opcode. The reason that the sends are numbered is to enable different levels for different sends to be set independently of the actual level of the signals.

ibuss -- The number of the buss, for example the number of the instrument receiving the signal.

ichannel -- The number of the channel. Each buss has `nchnls` channels.

## Performance

asignal -- The signal that will be mixed into the indicated channel of the buss.

Use of the mixer requires that instruments setting gains have smaller numbers than instruments sending signals, and that instruments sending signals have smaller numbers than instruments receiving those signals. However, an instrument may have any number of sends or receives. After the final signal is received, MixerClear must be invoked to reset the busses to 0 before the next kperiod.

## Examples

    instr 100 ; Fluidsynth output
    ; INITIALIZATION
    ; Normalize so iamplitude for p5 of 80 == ampdb(80).
    iamplitude 		= 			ampdb(p5) * 2.0
    ; AUDIO
    aleft, aright 		fluidAllOut		giFluidsynth
    asig1 			= 			aleft * iamplitude
    asig2 			= 			aright * iamplitude
    			; To the chorus.
    			MixerSend		asig1, 100, 200, 0
    			MixerSend		asig2, 100, 200, 1
    			; To the reverb.
    			MixerSend		asig1, 100, 210, 0
    			MixerSend		asig2, 100, 210, 1
    			; To the output.
    			MixerSend		asig1, 100, 220, 0
    			MixerSend		asig2, 100, 220, 1
    endin

Here is a complete example of the MixerSend opcode. It uses the file Mixer.csd

Example 621. Complete example of the MixerSend opcode.

    <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>

## Credits

Michael Gogins (gogins at pipeline dot com).

Prev | Up | Next
MixerGetLevel | Home | MixerReceive