tur/transform

stdlib/transform.tur
defn

add

(add [p amount])

add a constant or pattern to a numeric pattern.

pbase NumPattern
amountconstant float or NumPattern to add
NumPattern returning p(t) + amount.

  ((add my-pat 1.0) 0.5)
defn

sub

(sub [p amount])

subtract a constant or pattern from a numeric pattern.

pbase NumPattern
amountconstant float or NumPattern to subtract

NumPattern returning p(t) - amount.

defn

mul

(mul [p factor])

multiply a numeric pattern by a constant or pattern.

pbase NumPattern
factorconstant float or NumPattern
NumPattern returning p(t) * factor.

  ((mul my-pat 0.5) 0.5)  ; halve the values
defn

div

(div [p divisor])

divide a numeric pattern by a constant or pattern.

pbase NumPattern
divisorconstant float or NumPattern (returns 0 if divisor is zero)

NumPattern returning p(t) / divisor.

defn

range

(range [p from-low from-high to-low to-high])

map pattern values from one range to another.

pNumPattern with input values
from-lowlower bound of input range
from-highupper bound of input range
to-lowlower bound of output range
to-highupper bound of output range
NumPattern with values linearly mapped and clamped to [to-low, to-high].

  ((range my-pat 0.0 1.0 440.0 880.0) 0.5)  ; => 660.0
defn

clamp

(clamp [p low high])

clamp pattern values to [low, high].

pNumPattern
lowminimum output value
highmaximum output value

NumPattern with values clamped.

defn

normalize

(normalize [p min max])

map pattern values to [0, 1].

pNumPattern
minexpected minimum of p
maxexpected maximum of p

NumPattern with values normalised to [0, 1].

defn

mod-pat

(mod-pat [p mod])

apply modulo to pattern values.

pNumPattern
modmodulo divisor

NumPattern with values wrapped to [0, mod).

defn

wrap

(wrap [p low high])

wrap pattern values to stay within [low, high].

pNumPattern
lowlower bound
highupper bound

NumPattern with values wrapped into [low, high].

defn

exp-pat

(exp-pat [p])

apply exp() to pattern values.

pNumPattern (values in radians or raw)

NumPattern with e^p(t).

defn

log-pat

(log-pat [p & [base math/E])

apply logarithm to pattern values.

pNumPattern (must be > 0)
baselogarithm base (default: math/E)

NumPattern with log_base(p(t)).

defn

pow-pat

(pow-pat [p exponent])

raise pattern values to a constant exponent.

pNumPattern (base)
exponentpower to raise to

NumPattern with p(t)^exponent.

defn

sqrt-pat

(sqrt-pat [p])

square root of pattern values.

pNumPattern (values must be >= 0)

NumPattern with sqrt(p(t)).

defn

sin-pat

(sin-pat [p])

apply sin() to pattern values.

pNumPattern in radians

NumPattern with sin(p(t)).

defn

cos-pat

(cos-pat [p])

apply cos() to pattern values.

pNumPattern in radians

NumPattern with cos(p(t)).

defn

tan-pat

(tan-pat [p])

apply tan() to pattern values.

pNumPattern in radians

NumPattern with tan(p(t)).

defn

sine

(sine [& [freq 1.0 amp 1.0 phase 0.0])

sine wave pattern oscillating at a given frequency.

freqfrequency in cycles per beat (default: 1.0)
ampamplitude (default: 1.0)
phasephase offset in radians (default: 0.0)
NumPattern generating values in [-amp, amp].

  ((sine 0.5 1.0 0.0) 0.25)
defn

square

(square [& [freq 1.0 amp 1.0 duty 0.5])

square wave pattern.

freqfrequency in cycles per beat (default: 1.0)
ampamplitude (default: 1.0)
dutyduty cycle (0-1, default: 0.5)

NumPattern returning amp or -amp.

defn

saw

(saw [& [freq 1.0 amp 1.0])

sawtooth wave pattern.

freqfrequency in cycles per beat (default: 1.0)
ampamplitude (default: 1.0)

NumPattern descending from amp to 0 each cycle.

defn

tri

(tri [& [freq 1.0 amp 1.0])

triangle wave pattern.

freqfrequency in cycles per beat (default: 1.0)
ampamplitude (default: 1.0)

NumPattern rising and falling symmetrically within [-amp, amp].

defn

pulse

(pulse [& [freq 1.0 amp 1.0 width 0.5])

pulse wave pattern.

freqfrequency in cycles per beat (default: 1.0)
amppulse height (default: 1.0)
widthpulse width 0-1 (default: 0.5)

NumPattern returning amp during pulse, 0.0 otherwise.

defn

jitter

(jitter [p amount])

add random noise to pattern values.

pbase pattern
amountmaximum jitter magnitude added to each float value

Pattern<T> with random perturbation added to numeric values.

defn

rand-select

(rand-select [& patterns])

randomly pick one of several patterns on each evaluation.

patternspatterns to choose from

Pattern<T> delegating to a randomly selected sub-pattern each beat.

defn

rand-value

(rand-value [& values])

randomly select a constant value on each evaluation.

valuesvalues to choose from

Pattern<T>.

defn

white-noise

(white-noise)

white noise pattern returning random floats in [0, 1).

NumPattern with uniform random values.

defn

pink-noise

(pink-noise)

approximate pink noise pattern.

NumPattern producing spectrally shaped noise.

defn

perlin-noise

(perlin-noise [& [scale 1.0 offset 0.0])

simplified Perlin-style noise pattern.

scaletime scale (higher = more detail, default: 1.0)
offsettime offset (default: 0.0)

NumPattern with smooth random values.

defn

adsr

(adsr [attack decay sustain release & [gate (pattern/const true)])

ADSR envelope pattern.

attackattack time in beats
decaydecay time in beats
sustainsustain level (0-1)
releaserelease time in beats
gateBoolPattern for gate (default: const true)
NumPattern producing ADSR envelope values.

  ((adsr 0.1 0.2 0.7 0.3) 0.5)
defn

ar

(ar [attack release & [gate (pattern/const true)])

simple attack-release envelope pattern.

attackattack time in beats
releaserelease time in beats
gateBoolPattern (default: const true)

NumPattern.

defn

decay-exp

(decay-exp [decay & [gate (pattern/const true)])

exponential decay envelope pattern.

decaytime constant in beats
gateBoolPattern (default: const true)

NumPattern returning e^(-t/decay).

defn

decay-lin

(decay-lin [decay & [gate (pattern/const true)])

linear decay envelope pattern.

decaydecay duration in beats
gateBoolPattern (default: const true)

NumPattern returning max(0, 1 - t/decay).

defn

and-bit

(and-bit [p1 p2])

bitwise AND of two integer patterns.

p1first IntPattern
p2IntPattern or integer constant

IntPattern with bitwise AND applied.

defn

or-bit

(or-bit [p1 p2])

bitwise OR of two integer patterns.

p1first IntPattern
p2IntPattern or integer constant

IntPattern with bitwise OR applied.

defn

xor-bit

(xor-bit [p1 p2])

bitwise XOR of two integer patterns.

p1first IntPattern
p2IntPattern or integer constant

IntPattern with bitwise XOR applied.

defn

not-bit

(not-bit [p])

bitwise NOT of an integer pattern.

pIntPattern

IntPattern with bitwise NOT applied.

defn

floor-pat

(floor-pat [p])

floor each pattern value.

pNumPattern

NumPattern with floor(p(t)).

defn

ceil-pat

(ceil-pat [p])

ceiling each pattern value.

pNumPattern

NumPattern with ceil(p(t)).

defn

round-pat

(round-pat [p])

round each pattern value to the nearest integer.

pNumPattern

NumPattern with round(p(t)).

defn

quantize-int

(quantize-int [p])

quantize pattern values to nearest integer (alias for round-pat).

pNumPattern

NumPattern.

defn

quantize-step

(quantize-step [p step])

quantize pattern values to multiples of a step size.

pNumPattern
stepquantization step size
NumPattern with values snapped to step multiples.

  ((quantize-step my-pat 0.25) 0.0)
defn

concat-str

(concat-str [p1 p2])

concatenate two string patterns.

p1first StrPattern
p2StrPattern or string constant

StrPattern with concatenated strings.

defn

upper-pat

(upper-pat [p])

convert string pattern values to uppercase.

pStrPattern

StrPattern with uppercased values.

defn

lower-pat

(lower-pat [p])

convert string pattern values to lowercase.

pStrPattern

StrPattern with lowercased values.