Operators


SuperCollider supports operator overloading. Operators can thus be applied to a variety of different objects; Numbers, Ugens, Collections, and so on. When operators are applied to ugens they result in BinaryOpUGens or UnaryOpUGens. See the BinaryOpUGen overview helpfile for details.


Unary Operators


neg .. inversion

reciprocal .. reciprocal

abs .. absolute value

floor .. next lower integer

ceil .. next higher integer

frac .. fractional part

sign .. -1 when a < 0, +1 when a > 0, 0 when a is 0

squared .. a*a

cubed .. a*a*a

sqrt .. square root

exp .. exponential

midicps .. MIDI note number to cycles per second

cpsmidi .. cycles per second to MIDI note number

midiratio .. convert an interval in MIDI notes into a frequency ratio

ratiomidi .. convert a frequency ratio to an interval in MIDI notes

dbamp .. decibels to linear amplitude

ampdb .. linear amplitude to decibels

octcps .. decimal octaves to cycles per second

cpsoct .. cycles per second to decimal octaves

log .. natural logarithm

log2 .. base 2 logarithm

log10 .. base 10 logarithm

sin .. sine

cos .. cosine

tan .. tangent

asin .. arcsine

acos .. arccosine

atan .. arctangent

sinh .. hyperbolic sine

cosh .. hyperbolic cosine

tanh .. hyperbolic tangent

distort .. distortion

softclip .. distortion

isPositive .. 1 when a >= 0, else 0

isNegative .. 1 when a < 0, else 0

isStrictlyPositive .. 1 when a > 0, else 0

(36)


Binary Operators


+ .. addition

- .. subtraction

* .. multiplication

/ .. division

% .. float modulo

** .. exponentiation

<  .. less than

<= .. less than or equal

>  .. greater than

>= .. greater than or equal

== .. equal

!= .. not equal

<! .. return first argument

min .. minimum of two

max .. maximum of two

round .. quantization by rounding

trunc .. quantization by truncation

atan2 .. arctangent

hypot .. hypotenuse   sqrt(a*a + b*b)

hypotApx .. hypotenuse approximation

ring1 .. a*b + a   or equivalently:   a*(b + 1)

ring2 .. a*b + a + b

ring3 .. a*a*b

ring4 .. a*a*b - a*b*b

sumsqr .. a*a + b*b

difsqr .. a*a - b*b

sqrsum .. (a + b)**2

sqrdif .. (a - b)**2

absdif .. fabs(a - b)

thresh .. threshholding   { 0 when a < b, a when a >= b }

amclip .. two quadrant multiply   { 0 when b <= 0, a*b when b > 0 }

scaleneg .. nonlinear amplification   { a when a >= 0, a*b when a < 0 }

clip2  .. bilateral clipping { b when a > b, -b when a < -b, else a }

wrap2  .. bilateral wrapping

fold2  .. bilateral folding

excess .. residual of clipping   a - clip2(a,b)

(36)