zawm
Prev | Orchestra Opcodes and Operators | Next

## zawm

zawm — Writes to a za variable at a-rate with mixing.

## Description

Writes to a za variable at a-rate with mixing.

## Syntax

    zawm asig, kndx [, imix]

## Initialization

imix (optional, default=1) -- indicates if mixing should occur.

## Performance

asig -- value to be written to the za location.

kndx -- points to the za location to which to write.

These opcodes are fast, and always check that the index is within the range of zk or za space. If not, an error is reported, 0 is returned, and no writing takes place.

zawm is a mixing opcode, it adds the signal to the current value of the variable. If no imix is specified, mixing always occurs. imix = 0 will cause overwriting like ziw, zkw, and zaw. Any other value will cause mixing.

Caution: When using the mixing opcodes ziwm, zkwm, and zawm, care must be taken that the variables mixed to, are zeroed at the end (or start) of each k- or a-cycle. Continuing to add signals to them, can cause their values can drift to astronomical figures.

One approach would be to establish certain ranges of zk or za variables to be used for mixing, then use zkcl or zacl to clear those ranges.

## Examples

Here is an example of the zawm opcode. It uses the file zawm.csd.

Example 1249. Example of the zawm 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
    ; Audio out   Audio in    No messages
    -odac           -iadc     -d     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o zawm.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Initialize the ZAK space.
    ; Create 1 a-rate variable and 1 k-rate variable.
    zakinit 1, 1

    ; Instrument #1 -- a basic instrument.
    instr 1
      ; Generate a simple sine waveform.
      asin oscil 15000, 440, 1

      ; Mix the sine waveform with za variable #1.
      zawm asin, 1
    endin

    ; Instrument #2 -- another basic instrument.
    instr 2
      ; Generate another waveform with a different frequency.
      asin oscil 15000, 880, 1

      ; Mix this sine waveform with za variable #1.
      zawm asin, 1
    endin

    ; Instrument #3 -- generates audio output.
    instr 3
      ; Read za variable #1, containing both waveforms.
      a1 zar 1

      ; Generate the audio output.
      out a1

      ; Clear the za variables, get them ready for
      ; another pass.
      zacl 0, 1
    endin

    </CsInstruments>
    <CsScore>

    ; Table #1, a sine wave.
    f 1 0 16384 10 1

    ; Play Instrument #1 for one second.
    i 1 0 1
    ; Play Instrument #2 for one second.
    i 2 0 1
    ; Play Instrument #3 for one second.
    i 3 0 1
    e

    </CsScore>
    </CsoundSynthesizer>

## See also

Zak Patch System

## Credits

Author: Robin Whittle
Australia
May 1997

New in version 3.45

Example written by Kevin Conder.

Prev | Up | Next
zaw | Home | zdf_1pole