! — Logical NOT operator.
Arithmetic operators perform operations of change-sign (negate), don't-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:
1. * 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.
2. + and − bind more strongly than &&, which in turn is stronger than ||:
a && b - c || d
is taken as
(a && (b - c)) || d
3. 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.
Here is an example of the Logical NOT operator. Play opnot.csd
Example 32. Example of the opnot 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 opand.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 kval randomh 0, 1.2, 20 ;choose between 0 and 1.2 if !(kval >0 && kval<=.5) then ;3 possible outcomes kval = 1 elseif !(kval >.5 && kval<=1) then kval =2 elseif !(kval >1) then kval =3 endif printk2 kval ;print value when it changes asig poscil .7, 440*kval, 1 outs asig, asig endin </CsInstruments> <CsScore> f1 0 16384 10 1 i 1 0 5 e </CsScore> </CsoundSynthesizer>
Its output should include lines like these:
i1 1.00000 i1 2.00000 i1 1.00000 i1 2.00000 i1 1.00000 i1 2.00000 i1 1.00000 .....