MixerSetLevel
Prev | Orchestra Opcodes and Operators | Next

## MixerSetLevel

MixerSetLevel — Sets the level of a send to a buss.

## Syntax

    MixerSetLevel isend, ibuss, kgain

## Description

Sets the level at which signals from the send are added to the buss. The actual sending of the signal to the buss is performed by the MixerSend opcode.

## Initialization

isend -- The number of the send, for example the number of the instrument sending the signal (but any integer can be used).

ibuss -- The number of the buss, for example the number of the instrument receiving the signal (but any integer can be used).

Setting the gain for a buss also creates the buss.

## Performance

kgain -- The level (any real number) at which the signal from the send will be mixed onto the buss. The default is 0.

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 before the next kperiod.

## Examples

In the orchestra, define an instrument to control mixer levels:

    instr 1
    	MixerSetLevel		p4, p5, p6
    endin

In the score, use that instrument to set mixer levels:

    ; SoundFonts
    ; to Chorus
    i 1  0  0 100  200  0.9
    ; to Reverb
    i 1  0  0  100  210  0.7
    ; to Output
    i 1  0  0  100  220  0.3

    ; Kelley Harpsichord
    ; to Chorus
    i 1  0  0  3  200  0.30
    ; to Reverb
    i 1  0  0  3  210  0.9
    ; to Output
    i 1  0  0  3  220  0.1

    ; Chorus to Reverb
    i 1  0  0  200  210  0.5
    ; Chorus to Output
    i 1  0  0  200  220  0.5
    ; Reverb to Output
    i 1  0  0  210  220  0.2

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

Example 479. Complete example of the MixerSetLevel 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 nicereverb
    	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
mirror | Home | MixerSetLevel_i