Math Functions

Simple mathematical functions that can be applied on any numeric expression. They are very often the typical generic operations that you can find on digital calculators:

sin

Apply the sinus function to all the provided arguments.

Arguments:

  • ... (any number of arguments)

Example:

(sin 1 2 3)
(sin time)

usin

Unipolar version of the sin function.

Arguments:

  • ... (any number of arguments)

Example:

(usin 1 2 3)
(usin time)

cos

Apply the cosinus function to all the provided arguments.

Arguments:

  • ... (any number of arguments)

Example:

(cos 4 5 6)
(cos bar)

ucos

Unipolar version of the cos function.

Arguments:

  • ... (any number of arguments)

Example:

(cos 4 5 6)
(cos bar)

tan

Apply the tangent function to all the provided arguments.

Arguments:

  • ... (any number of arguments)

Example:

(tan (abs -0.25))
(tan (sin (time)))
(tan 2)

saw

Sawtooth wave generator, in a range from -1 to 1.

Arguments:

  • ... (any number of arguments)

Example:

(saw (time))
(saw (phase))/4

usaw

Unipolar variant (from 0 to 1) of the saw function.

Arguments:

  • ... (any number of arguments)

Example:

(usaw (time))
(usaw (phase))/4

rect

Square wave generator, in a range from -1 to 1. The pulse width can be modulated using a special argument.

Arguments:

  • ... (any number of arguments)
  • pwm: pulse width modulation (0 to 1).

Example:

(rect (time))
(rect (phase))/4

urect

Unipolar variant (from 0 to 1) of the rect function. The pulse width can be modulated using a special argument.

Arguments:

  • ... (any number of arguments)
  • pwm: pulse width modulation (0 to 1).

Example:

(urect (time))
(urect (phase))/8

abs

Returns the absolute value of all the provided arguments.

Arguments:

  • ... (any number of arguments)

Example:

(abs [1:-5, 1])
(abs -10)

max

Returns the maximum value in all the numbers provided as argument.

Arguments:

  • ... (any number of arguments)

Example:

(max 1 2 3)
(max [rand rand rand rand])

min

Returns the minimum value in all the numbers provided as argument.

Arguments:

  • ... (any number of arguments)

Example:

(min 1 2 3)
(min [rand rand rand rand])

mean

Returns the mean of all the numbers provided as argument.

Arguments:

  • ... (any number of arguments)

Example:

(mean 1.5 3 2 10.4)

scale

Scale a number z from the range x y to the range x1, y1.

Arguments:

  • None

Example:

(scale (bar) 0 4 0 10)

clamp

Clamp a value a in between b and c. This means that the number a will be limited and range and will never be able to be set lower than b or higher than c.

Arguments:

  • None

Example:

(clamp 1000 0 127) # -> returns 127

drunk

The drunk walk function will return +1 or -1 to any provided integer with a 50% chance for either of them. It is frequent to see this function used for writing generative melodies or parameter trajectories. This version of drunk also features a keyword argument to specify by how much a step should increment or decrement.

Arguments:

  • span: increment span, from 0 to x.

Example:

(drunk (get a) ::span 4) # -> returns 127

More examples and applications

@swim
def demo(p=1/4, i=0):
    D('moog:5', lpf='(sin (time)*2500)', res='(cos (time))/2', i=i, legato=0.1)
    D('cp', speed='0+(abs -rand*5)', d=8, i=i)
    again(demo, p=1/8, i=i+1)

These functions are the bread and butter of a good high-speed Sardine pattern. They will allow you to create signal-like value generators (e.g Low frequency oscillators). They are also very nice to use in conjunction with (time) or any time function. You will find many creative ways to use them (especially by combining with arithmetic operators).