spsend
Prev | Orchestra Opcodes and Operators | Next

## spsend

spsend — Generates output signals based on a previously defined space opcode.

## Description

spsend depends upon the existence of a previously defined space. The output signals from spsend are derived from the values given for xy and reverb in the space and are ready to be sent to local or global reverb units (see example below).

## Syntax

    a1, a2, a3, a4 spsend

## Performance

The configuration of the xy coordinates in space places the signal in the following way:

- a1 is -1, 1

- a2 is 1, 1

- a3 is -1, -1

- a4 is 1, -1

This assumes a loudspeaker set up as a1 is left front, a2 is right front, a3 is left back, a4 is right back. Values greater than 1 will result in sounds being attenuated, as if in the distance. space considers the speakers to be at a distance of 1; smaller values of xy can be used, but space will not amplify the signal in this case. It will, however balance the signal so that it can sound as if it were within the 4 speaker space. x=0, y=1, will place the signal equally balanced between left and right front channels, x=y=0 will place the signal equally in all 4 channels, and so on. Although there must be 4 output signals from space, it can be used in a 2 channel orchestra. If the xy's are kept so that Y>=1, it should work well to do panning and fixed localization in a stereo field.

## Examples

Here is a stereo example of the spsend opcode. It uses the file spsend.csd.

Example 1004. Example of the spsend opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

    <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 spsend.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    0dbfs  = 1
    nchnls = 2	;stereo output

    ga1 init 0
    ga2 init 0

    instr 1	;sends different amounts to reverb

    irev = p6
    asig diskin2 "fox.wav", 1
    a1, a2, a3, a4 space asig, 0, 0, irev, p4, p5	;take position values from p4, p5
    ar1, ar2, ar3, ar4 spsend			;send to reverb

    ga1 = ga1+ar1
    ga2 = ga2+ar2
        outs a1, a2

    endin

    instr 99 ; reverb instrument

    a1 reverb2 ga1, 2.5, .5
    a2 reverb2 ga2, 2.5, .5
       outs	a1, a2

    ga1=0
    ga2=0

    endin

    </CsInstruments>
    <CsScore>
    ;WITH REVERB
    ;place the sound in the left speaker and near
    i1 0 1 -1 1 .1
    ;place the sound in the right speaker and far
    i1 1 1 45 45 .1
    ;place the sound equally between left and right and in the middle ground distance
    i1 2 1 0 12 .1

    ;NO REVERB
    ;place the sound in the left speaker and near
    i1 6 1 -1 1 0
    ;place the sound in the right speaker and far
    i1 7 1 45 45 0
    ;place the sound equally between left and right and in the middle ground distance
    i1 8 1 0 12 0

    i 99 0 12	;keep reverb active all the time
    e
    </CsScore>
    </CsoundSynthesizer>

## See also

Panning and Spatialization: Amplitude spatialization

## Credits

Author: Richard Karpen
Seattle, WA USA
1998

New in Csound version 3.48

Prev | Up | Next
sprintfk | Home | sqrt