Arithmetic operators perform operations of change-sign (negate), do-no-change-sign, logical AND logical OR, add, subtract, multiply and divide. Note that a value or an expression may fall between two of these operators, either of which could take it as its left or right argument, as in
\[
a + b * c.
\]
In such cases three rules apply:
\(*\) and \(/\) bind to their neighbors more strongly than \(+\) and \(-\). Thus the above expression is taken as: \(a + (b * c)\) with \(*\) taking \(b\) and \(c\) and then \(+\) taking \(a\) and \(b * c\).
\(+\) and \(-\) bind more strongly than &&, which in turn is stronger than ||: \(a \;\&\&\; b - c \;||\; d\) is taken as \((a \;\&\&\; (b - c))\;||\; d\)
When both operators bind equally strongly, the operations are done left to right: \(a - b - c\) is taken as \((a - b) - c\)
Parentheses may be used as above to force particular groupings.
Syntax
+a(noraterestriction)a+b(noraterestriction)
where the arguments \(a\) and \(b\) may be further expressions.
Arguments
The arguments of \(+\) can be scalar values or k-rate one dimensional arrays (vectors), or any combination. If one of the arguments is an array, so is the value.
Examples
Here is an example of the + operator. It uses the file adds-modern.csd.
<CsoundSynthesizer><CsOptions>; Select audio/midi flags here according to platform-odac ;;;realtime audio out-d ;;;no display;-iadc ;;;uncomment -iadc if realtime audio input is needed too; For Non-realtime ouput leave only the line below:; -o adds.wav -W ;;; for file output any platform</CsOptions><CsInstruments>sr=44100ksmps=32nchnls=20dbfs=1instr1; add unipolar square to oscilamp:k=p4cps:k=1type:i=3klfo=lfo(amp,cps,type)printk2(klfo)sig:a=poscil(0.7,440+klfo,1)outs(sig,sig)endin</CsInstruments><CsScore>;sine wave.f1032768101i1021;adds 1 Hz to frequencyi1+210;adds 10 Hz to frequencyi1+2220;adds 220 Hz to frequencye</CsScore></CsoundSynthesizer>
Here is an example of the + operator. It uses the file adds.csd.
<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 adds.wav -W ;;; for file output any platform</CsOptions><CsInstruments>sr=44100ksmps=32nchnls=20dbfs=1instr1; add unipolar square to oscilkamp=p4kcps=1itype=3klfolfokamp,kcps,itypeprintk2klfoasigoscil0.7,440+klfo,1outsasig,asigendin</CsInstruments><CsScore>;sine wave.f1032768101i1021;adds 1 Hz to frequencyi1+210;adds 10 Hz to frequencyi1+2220;adds 220 Hz to frequencye</CsScore></CsoundSynthesizer>