Skip to content

=

Performs a simple assignment.

Syntax

ares = xarg
ires = iarg
kres = karg
fres = farg
ires, ... = iarg, ...
kres, ... = karg, ...
table [ kval] = karg

Initialization

= (simple assignment) - Put the value of the expression iarg (karg, xarg) into the named result. This provides a means of saving an evaluated result for later use.

From version 5.13 onwards the i- and k-rate versions of assignment can take a number of outputs, and an equal or less number of inputs. If there are less the last value is repeated as necessary.

From version 5.14 values can be assigned to elements of a vector with the square bracket form.

For an f-signal, assignment copies the source's properties and current data at initialization. The destination has its own data, including for sliding signals and partial tracks. Assigning an f-signal to itself leaves it unchanged.

Performance

F-signal assignment copies new source frames whenever the statement runs. If a conditional skips the statement, the destination keeps its last copy. When assignment resumes, it copies the current source frame; it does not replay missed frames. Sliding signals copy the current block of sample frames each time the statement runs.

When several statements assign to the same f-signal, their sources must have the same FFT size, hop size, window size, window type, format and sliding mode. Assignment does not convert between these properties. To change them, reinitialize the source, destination and any opcodes that use the destination.

Examples

Here is an example of the assign opcode. It uses the file assign-modern.csd.

Example of the assign opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o assign.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

instr 1
  ; Assign a value to the variable i1.
  i1 = 1234

  ; Print the value of the i1 variable.
  print(i1)
endin


</CsInstruments>
<CsScore>

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

</CsScore>
</CsoundSynthesizer>

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

Example of the assign opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o assign.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1

instr 1
  ; Assign a value to the variable i1.
  i1 = 1234

  ; Print the value of the i1 variable.
  print i1
endin


</CsInstruments>
<CsScore>

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

</CsScore>
</CsoundSynthesizer>

Its output should include a line like this:

instr 1:  i1 = 1234.000

See also

Initialization and Reinitialization

Array opcodes

Credits

Example written by Kevin Conder.

The extension to multiple values is by

Author: John ffitch
University of Bath, and Codemist Ltd.
Bath, UK
February 2010

New in version 5.13