Instrument Control: Conditional Values

## > , < , >= , <= , == , != , ?

(a **>** b **?** v1 **:** v2)
(a **<** b **?** v1 **:** v2)
(a **>=** b **?** v1 **:** v2)
(a **<=** b **?** v1 **:** v2)
(a **==** b **?** v1 **:** v2)
(a **!=** b **?** v1 **:** v2)

### Description

where *a*, *b*, *v1* and *v2* may be expressions, but *a*, *b*
not audio-rate.

In the above conditionals, *a* and *b* are first compared. If the indicated relation is true (*a* greater than *b*, *a* less than *b*, *a* greater than or equal to *b*, *a* less than or equal to *b*, *a* equal to *b*, *a* not equal to *b*), then the conditional expression has the value of *v1*; if the relation is false, the expression has the value of *v2*. (For convenience, a sole "**=**" will function as "**= =**".)

NB.: If *v1* or *v2* are expressions, these will be evaluated before the conditional is determined.

In terms of binding strength, all conditional operators (i.e. the relational operators (**<**, etc.), and **?**, and **:** ) are weaker than the arithmetic and logical operators (**+**, **-**, *****, **/**, **&** and **||**).

These are *operators* not *opcodes*. Therefore, they can be used within orchestra statements, but do not form complete statements themselves.

### Example

k2 = (k1 < p5/2 + p6 ? k1 : p7)

binds the terms p5/2 and p6. It will return the value k1 below this threshold, else the value p7.

Instrument Control: Conditional Values