17.3. Pattern algebra, combinators, and fluent control API

Module strudel_pattern

17.3.1. Type aliases

Pattern = lambda<(span:TimeSpan const):array<Hap>>

A Pattern is a pure function from a query TimeSpan to the Hap`s (events with timing info) that fall within it. No side effects, no audio — just data. All combinators in this module take and return `Pattern.

PatternTransform = lambda<(var pat:lambda<(span:TimeSpan const):array<Hap>>):lambda<(span:TimeSpan const):array<Hap>>>

A function pattern → pattern. Passed to combinators like jux and off to describe how the transformed copy of a pattern should differ from the original. Use @(x) => rev(x) for a lambda literal at call sites.

17.3.2. Pattern construction

atom(name: string): Pattern

Shorthand for pure(Event(s=name)) — a pattern with one event per cycle using the named sound. Example: atom(“bd”).

Arguments:
  • name : string

pure(value: Event): Pattern

Lifts an Event into a Pattern that emits that value once per cycle, spanning the entire cycle.

Arguments:
silence(): Pattern

The empty pattern — produces no haps for any query span.

17.3.3. Time manipulation

cat(pats: array<Pattern>): Pattern

Sequences patterns across cycles — with N patterns, pattern i plays during cycle i mod N, each stretched to one cycle. Example: cat([s(“bd”), s(“sd”)]).

Arguments:

17.3.3.1. fast

fast(pat: Pattern; factor_pat: Pattern): Pattern

Patternified fast — speed factor varies per cycle from factor_pat’s note values. Example: fast(pat, n(“<1 2 4>”)).

Arguments:
fast(pat: Pattern; n: double): Pattern

fastcat(pats: array<Pattern>): Pattern

Like cat but squeezes all patterns into a single cycle, side by side. Example: fastcat([s(“bd”), s(“sd”), s(“hh”)]).

Arguments:
fmap(pat: Pattern; fn: lambda<(e:Event):Event>): Pattern

Applies fn to the Event value of every hap produced by pat, preserving timing. The functor-map over patterns.

Arguments:

17.3.3.2. slow

slow(pat: Pattern; n: double): Pattern

Slows down pat by factor npat takes n cycles to complete once. Example: s(“bd sd”) |> slow(2.0lf).

Arguments:
slow(pat: Pattern; factor_pat: Pattern): Pattern

stack(pats: array<Pattern>): Pattern

Layers all patterns simultaneously — every pattern plays at once. Example: stack([s(“bd”), s(“hh”), s(“sd”)]).

Arguments:
weighted_fastcat(pats: array<Pattern>; weights: array<float>): Pattern

Like fastcat but each element’s cycle slice is proportional to its weight. Example: weighted_fastcat([a, b], [3.0, 1.0])a fills 3/4, b fills 1/4.

Arguments:
  • pats : array< Pattern>

  • weights : array<float>

17.3.4. Combinators

add(pat: Pattern; semitones: float): Pattern

Alias for transpose — adds semitones to each event’s note. Matches strudel naming.

Arguments:
bjorklund(k: int; n: int): array<bool>

Bjorklund’s algorithm — distributes k onsets as evenly as possible across n slots. Example: bjorklund(3, 8) gives [x . . x . . x .].

Arguments:
  • k : int

  • n : int

choose(pats: array<Pattern>): Pattern

Randomly (deterministically) picks one pattern from pats per cycle. Example: choose([s(“bd”), s(“cp”), s(“sd”)]).

Arguments:
chooseCycles(pats: array<Pattern>): Pattern

Alias for choose — one random pick per cycle. Present for pattern libraries where choose is a continuous rand signal.

Arguments:
chunk(pat: Pattern; n: int; transform: PatternTransform): Pattern

Divides each cycle into n chunks, applying transform to a different chunk each cycle (rotating). Example: pat |> chunk(4, @@(x) => fast(x, 2.0lf)).

Arguments:
combineWith(pat: Pattern; val_pat: Pattern; fn: lambda<(e:Event;val:float):Event>): Pattern

For each hap in pat, samples val_pat at the hap’s onset and applies fn(event, sampledValue) to produce the output event. Core primitive for pattern-modulated setters.

Arguments:
combineWithStr(pat: Pattern; val_pat: Pattern; fn: lambda<(e:Event;val:string):Event>): Pattern

Like combineWith but samples a string from val_pat’s event.s field. Used for string-typed parameters (e.g. vowel, s).

Arguments:
compress(pat: Pattern; b: double; e: double): Pattern

Squeezes pat into the cycle-time window [b, e]. Example: pat |> compress(0.25lf, 0.75lf) plays the pattern in the middle half.

Arguments:
  • pat : Pattern

  • b : double

  • e : double

degrade(pat: Pattern; prob: float): Pattern

Randomly drops events from pat with probability prob (0..1). Deterministic — same time yields same result. Example: s(“bd*8”) |> degrade(0.3).

Arguments:
degradeBy(pat: Pattern; prob: float): Pattern

Alias for degrade with explicit probability. Randomly drops events with probability prob. Example: pat |> degradeBy(0.3).

Arguments:
echo(pat: Pattern; times: int; time: double; feedback: float): Pattern

Repeats every event times times, offset by time cycles each, with each repeat scaled by feedback. Example: pat |> echo(3, 0.25lf, 0.5).

Arguments:
  • pat : Pattern

  • times : int

  • time : double

  • feedback : float

euclid(pat: Pattern; k: int; n: int): Pattern

Euclidean rhythm — pat plays at k evenly-spaced onsets over n subdivisions of each cycle. Example: atom(“bd”) |> euclid(3, 8) → hits on steps 0, 3, 6.

Arguments:
every(n: int; pat_on: Pattern; pat_off: Pattern): Pattern

Plays pat_on on every n-th cycle, pat_off otherwise. Example: every(4, s(“cp”), s(“bd”)) — clap every 4th cycle.

Arguments:
hurry(pat: Pattern; factor: double): Pattern

Combined fast + set_speed — speeds up both pattern timing AND sample playback by factor. Example: pat |> hurry(2.0lf).

Arguments:
innerJoin(param_pat: Pattern; fn: lambda<(val:float):Pattern>): Pattern

Pattern monadic join — for each hap in param_pat, builds an inner pattern via fn(hap.note) and intersects its haps with the outer hap’s part. Core mechanism for patternified parameters.

Arguments:
iter(pat: Pattern; n: int): Pattern

Rotates pat left by 1/n cycle each cycle. Example: pat |> iter(4) — cycle 0 original, cycle 1 shifted 1/4, etc.

Arguments:
iterBack(pat: Pattern; n: int): Pattern

Like iter but rotates pat right by 1/n cycle each cycle. Example: pat |> iterBack(4).

Arguments:
jux(pat: Pattern; transform: PatternTransform): Pattern

Stereo split: original is panned left, transform(pat) is panned right. Example: s(“bd sd”) |> jux(@@(x) => rev(x)).

Arguments:
layer(pats: array<Pattern>; base: Pattern): Pattern

Stacks pats on top of base, all playing simultaneously. Example: s(“bd”) |> layer([s(“bd”) |> transpose(7.0), s(“bd”) |> transpose(12.0)]).

Arguments:
linger(pat: Pattern; t: double): Pattern

Loops the first t-cycle fraction of pat to fill each cycle. Example: pat |> linger(0.25lf) loops the first quarter.

Arguments:
mask(pat: Pattern; mask_pat: Pattern): Pattern

Keeps only events from pat whose timespan overlaps an event in mask_pat. Example: pat |> mask(s(“t t f t”)).

Arguments:
off(pat: Pattern; time: double; transform: PatternTransform): Pattern

Overlays pat with a time-shifted copy transformed by transform. Example: s(“bd sd”) |> off(0.125, @@(x) => transpose(x, 7.0)) — canon at the fifth.

Arguments:
often(pat: Pattern; transform: PatternTransform): Pattern

Applies transform to each event with 75% probability. Shorthand for sometimesby(pat, 0.75, transform).

Arguments:
palindrome(pat: Pattern): Pattern

Plays pat forward on even cycles, reversed on odd cycles. Example: s(“bd sd cp”) |> palindrome().

Arguments:
ply(pat: Pattern; n: int): Pattern

Repeats each event n times within its own timespan. Example: s(“bd sd”) |> ply(3) plays each hit as a triplet.

Arguments:
randcat(pats: array<Pattern>): Pattern

Alias for choose — randomly picks one pattern per cycle.

Arguments:
rev(pat: Pattern): Pattern

Reverses event positions within each cycle. Example: s(“bd sd cp”) |> rev() plays cp sd bd.

Arguments:
scramble(pat: Pattern; n: int): Pattern

Like shuffle but with replacement — each of the n slots independently picks a random subdivision. Example: pat |> scramble(8).

Arguments:
shuffle(pat: Pattern; n: int): Pattern

Randomly permutes n equal subdivisions of each cycle (Fisher-Yates, deterministic per cycle). Example: pat |> shuffle(4).

Arguments:
sometimes(pat: Pattern; transform: PatternTransform): Pattern

Applies transform to each event with 50% probability. Shorthand for sometimesby(pat, 0.5, transform).

Arguments:
sometimesby(pat: Pattern; prob: float; transform: PatternTransform): Pattern

Applies transform to each event with probability prob (0..1). Example: s(“bd*8”) |> sometimesby(0.3, @@(x) => fast(x, 2.0lf)).

Arguments:
striate(pat: Pattern; n: int): Pattern

Cuts each sample into n slices and plays them in sequence. Slice i gets begin=i/n, end=(i+1)/n. Example: pat |> striate(4).

Arguments:
struct_(pat: Pattern; bool_pat: Pattern): Pattern

Restructures pat to the rhythmic positions of bool_pat’s truthy haps — values come from pat, timing from the mask. Example: pat |> struct_(s(“t f t t”)).

Arguments:
stut(pat: Pattern; times: int; feedback: float; time: double): Pattern

Alias for echo with argument order (times, feedback, time). Example: pat |> stut(3, 0.5, 0.125lf).

Arguments:
  • pat : Pattern

  • times : int

  • feedback : float

  • time : double

superimpose(pat: Pattern; transform: PatternTransform): Pattern

Stacks pat with transform(pat), both playing simultaneously. Example: pat |> superimpose(@@(x) => fast(x, 2.0lf)).

Arguments:
transpose(pat: Pattern; semitones: float): Pattern

Shifts every event’s MIDI note by semitones. Example: pat |> transpose(7.0) transposes up a fifth.

Arguments:
wchoose(pats: array<Pattern>; weights: array<float>): Pattern

Weighted random pick from pats per cycle using parallel weights array. Example: wchoose([s(“bd”), s(“cp”)], [3.0, 1.0])bd 75% of the time.

Arguments:
  • pats : array< Pattern>

  • weights : array<float>

when_cycle(pat: Pattern; cond: lambda<(cycle:int):bool>; transform: PatternTransform): Pattern

Applies transform to pat on cycles where cond(cycle) is true, leaving others untouched. Example: pat |> when_cycle(@(c) => c % 4 == 0, @@(x) => fast(x, 2.0lf)).

Arguments:

17.3.5. Setter primitives

17.3.5.1. set_attack

set_attack(pat: Pattern; a: float): Pattern

Sets the amp-envelope attack time (seconds) on every event in pat.

Arguments:
set_attack(pat: Pattern; mod_pat: Pattern): Pattern

set_begin(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_begin — samples mod_pat at each event onset to set sample start position (0..1).

Arguments:
set_bpf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_bpf — samples mod_pat at each event onset to set band-pass filter cutoff (Hz).

Arguments:
set_bpq(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_bpq — samples mod_pat at each event onset to set band-pass filter Q.

Arguments:
set_chorus(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_chorus — samples mod_pat at each event onset to set chorus send.

Arguments:
set_compressor(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_compressor — samples mod_pat at each event onset to set compressor threshold (dB).

Arguments:
set_compressor_attack(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_compressor_attack — samples mod_pat at each event onset to set compressor attack (seconds).

Arguments:
set_compressor_knee(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_compressor_knee — samples mod_pat at each event onset to set compressor knee (dB).

Arguments:
set_compressor_ratio(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_compressor_ratio — samples mod_pat at each event onset to set compressor ratio.

Arguments:
set_compressor_release(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_compressor_release — samples mod_pat at each event onset to set compressor release (seconds).

Arguments:
set_crush(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_crush — samples mod_pat at each event onset to set bit-crush amount.

Arguments:

17.3.5.2. set_decay

set_decay(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_decay — samples mod_pat at each event onset to set envelope decay.

Arguments:
set_decay(pat: Pattern; d: float): Pattern

17.3.5.3. set_delay

set_delay(pat: Pattern; d: float): Pattern

Sets the delay send amount (delay_amount, 0..1) on every event in pat.

Arguments:
set_delay(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.4. set_delayfeedback

set_delayfeedback(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_delayfeedback — samples mod_pat at each event onset to set delay feedback.

Arguments:
set_delayfeedback(pat: Pattern; d: float): Pattern

17.3.5.5. set_delaytime

set_delaytime(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_delaytime — samples mod_pat at each event onset to set delay time.

Arguments:
set_delaytime(pat: Pattern; d: float): Pattern

set_djf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_djf — samples mod_pat at each event onset to set DJ-filter position (<0.5 = LP, >0.5 = HP).

Arguments:
set_end(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_end — samples mod_pat at each event onset to set sample end position (0..1).

Arguments:

17.3.5.6. set_fm

set_fm(pat: Pattern; f: float): Pattern

Sets the FM modulation depth fm (modulator amplitude) on every event in pat.

Arguments:
set_fm(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.7. set_fmh

set_fmh(pat: Pattern; f: float): Pattern

Sets the FM harmonicity ratio fmh (modulator frequency / carrier frequency) on every event in pat.

Arguments:
set_fmh(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.8. set_gain

set_gain(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_gain — samples mod_pat at each event onset to set gain. Example: pat |> set_gain(sine()).

Arguments:
set_gain(pat: Pattern; g: float): Pattern

17.3.5.9. set_hpf

set_hpf(pat: Pattern; freq: float): Pattern

Sets the high-pass filter cutoff hpf (Hz) on every event in pat.

Arguments:
set_hpf(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.10. set_hpq

set_hpq(pat: Pattern; q: float): Pattern

Sets the high-pass filter resonance hpq (Q factor) on every event in pat.

Arguments:
set_hpq(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.11. set_lpf

set_lpf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_lpf — samples mod_pat at each event onset to set lpf cutoff. Example: pat |> set_lpf(sine() |> range(200.0, 4000.0)).

Arguments:
set_lpf(pat: Pattern; freq: float): Pattern

17.3.5.12. set_lpq

set_lpq(pat: Pattern; q: float): Pattern

Sets the low-pass filter resonance lpq (Q factor) on every event in pat.

Arguments:
set_lpq(pat: Pattern; mod_pat: Pattern): Pattern

17.3.5.13. set_note

set_note(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_note — samples mod_pat at each event onset to set note. Example: pat |> set_note(saw() |> range(48.0, 72.0)).

Arguments:
set_note(pat: Pattern; n: float): Pattern

set_orbit(pat: Pattern; o: int): Pattern

Sets the effect-bus routing index orbit on every event in pat. Different orbits have independent FX chains.

Arguments:

17.3.5.14. set_pan

set_pan(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_pan — samples mod_pat at each event onset to set pan.

Arguments:
set_pan(pat: Pattern; p: float): Pattern

set_phaser(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_phaser — samples mod_pat at each event onset to set phaser rate (Hz).

Arguments:
set_phasercenter(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_phasercenter — samples mod_pat at each event onset to set phaser center frequency.

Arguments:
set_phaserdepth(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_phaserdepth — samples mod_pat at each event onset to set phaser depth.

Arguments:
set_phasersweep(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_phasersweep — samples mod_pat at each event onset to set phaser sweep range.

Arguments:

17.3.5.15. set_release

set_release(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_release — samples mod_pat at each event onset to set envelope release.

Arguments:
set_release(pat: Pattern; r: float): Pattern

17.3.5.16. set_room

set_room(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_room — samples mod_pat at each event onset to set reverb send amount.

Arguments:
set_room(pat: Pattern; r: float): Pattern

17.3.5.17. set_roomsize

set_roomsize(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_roomsize — samples mod_pat at each event onset to set reverb roomsize.

Arguments:
set_roomsize(pat: Pattern; r: float): Pattern

set_sf2_expression(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_sf2_expression — samples mod_pat at each event onset to set SF2 expression CC11.

Arguments:
set_sf2_mod_wheel(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_sf2_mod_wheel — samples mod_pat at each event onset to set SF2 mod wheel CC1.

Arguments:
set_sf2_pitch_bend(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_sf2_pitch_bend — samples mod_pat at each event onset to set SF2 pitch bend.

Arguments:
set_shape(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_shape — samples mod_pat at each event onset to set waveshape/distortion amount.

Arguments:

17.3.5.18. set_sound

set_sound(pat: Pattern; snd: string): Pattern

Sets the sound name s on every event in pat. Example: pat |> set_sound(“sawtooth”).

Arguments:
set_sound(pat: Pattern; sound_pat: Pattern): Pattern

set_speed(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_speed — samples mod_pat at each event onset to set sample playback speed.

Arguments:

17.3.5.19. set_sustain

set_sustain(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_sustain — samples mod_pat at each event onset to set envelope sustain.

Arguments:
set_sustain(pat: Pattern; s: float): Pattern

set_tremolo(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_tremolo — samples mod_pat at each event onset to set tremolo rate (Hz).

Arguments:
set_tremolodepth(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_tremolodepth — samples mod_pat at each event onset to set tremolo depth.

Arguments:
set_velocity(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-valued set_velocity — samples mod_pat at each event onset to set velocity.

Arguments:

17.3.6. Fluent control: dynamics and routing

17.3.6.1. begin

begin(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated sample begin — sampled from mod_pat per event.

Arguments:
begin(pat: Pattern; b: float): Pattern

cut(pat: Pattern; c: int): Pattern

Fluent shorthand for set_cut. Sets the cut group (new voice kills previous in same group).

Arguments:

17.3.6.2. end_pos

end_pos(pat: Pattern; e_val: float): Pattern

Fluent shorthand for set_end. Sets sample end position (0..1).

Arguments:
end_pos(pat: Pattern; mod_pat: Pattern): Pattern

17.3.6.3. gain

gain(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated gain — sampled from mod_pat per event.

Arguments:
gain(pat: Pattern; g: float): Pattern

17.3.6.4. note

note(pat: Pattern; n: float): Pattern

Fluent shorthand for set_note. Sets MIDI note number on every event.

Arguments:
note(pat: Pattern; mod_pat: Pattern): Pattern

orbit(pat: Pattern; o: int): Pattern

Fluent shorthand for set_orbit. Sets the effect-bus routing index.

Arguments:

17.3.6.5. pan

pan(pat: Pattern; p: float): Pattern

Fluent shorthand for set_pan. Sets stereo position (0=L, 0.5=C, 1=R).

Arguments:
pan(pat: Pattern; mod_pat: Pattern): Pattern

17.3.6.6. sound

sound(pat: Pattern; snd: string): Pattern

Fluent shorthand for set_sound. Sets the sound name.

Arguments:
sound(pat: Pattern; sound_pat: Pattern): Pattern

17.3.6.7. speed

speed(pat: Pattern; spd: float): Pattern

Fluent shorthand for set_speed. Sets sample playback speed.

Arguments:
speed(pat: Pattern; mod_pat: Pattern): Pattern

17.3.6.8. vel

vel(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated velocity.

Arguments:
vel(pat: Pattern; v: float): Pattern

17.3.6.9. velocity

velocity(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated velocity — sampled from mod_pat per event.

Arguments:
velocity(pat: Pattern; v: float): Pattern

17.3.7. Fluent control: effects sends

17.3.7.1. chorus

chorus(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated chorus send — sampled from mod_pat per event.

Arguments:
chorus(pat: Pattern; c: float): Pattern

17.3.7.2. delay

delay(pat: Pattern; d: float): Pattern

Fluent shorthand for set_delay. Sets delay send amount (0..1).

Arguments:
delay(pat: Pattern; mod_pat: Pattern): Pattern

17.3.7.3. delayfeedback

delayfeedback(pat: Pattern; d: float): Pattern

Fluent shorthand for set_delayfeedback. Sets delay feedback (0..<1).

Arguments:
delayfeedback(pat: Pattern; mod_pat: Pattern): Pattern

delaysync(pat: Pattern; d: float): Pattern

Fluent shorthand for set_delaysync. Sets delay time in cycles (tempo-synced delay).

Arguments:

17.3.7.4. delaytime

delaytime(pat: Pattern; d: float): Pattern

Fluent shorthand for set_delaytime. Sets delay time in seconds.

Arguments:
delaytime(pat: Pattern; mod_pat: Pattern): Pattern

17.3.7.5. dfb

dfb(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated delayfeedback.

Arguments:
dfb(pat: Pattern; d: float): Pattern

17.3.7.6. dt

dt(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated delaytime.

Arguments:
dt(pat: Pattern; d: float): Pattern

17.3.7.7. room

room(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated room — sampled from mod_pat per event.

Arguments:
room(pat: Pattern; r: float): Pattern

17.3.7.8. roomsize

roomsize(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated roomsize — sampled from mod_pat per event.

Arguments:
roomsize(pat: Pattern; r: float): Pattern

17.3.7.9. size

size(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated roomsize.

Arguments:
size(pat: Pattern; r: float): Pattern

17.3.8. Fluent control: filters

17.3.8.1. bpf

bpf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated band-pass cutoff bpf — sampled from mod_pat per event.

Arguments:
bpf(pat: Pattern; freq: float): Pattern

17.3.8.2. bpq

bpq(pat: Pattern; q: float): Pattern

Fluent shorthand for set_bpq. Sets band-pass filter Q.

Arguments:
bpq(pat: Pattern; mod_pat: Pattern): Pattern

17.3.8.3. djf

djf(pat: Pattern; d: float): Pattern

Fluent shorthand for set_djf. Sets DJ-filter position (<0.5 = LP, >0.5 = HP).

Arguments:
djf(pat: Pattern; mod_pat: Pattern): Pattern

17.3.8.4. hp

hp(pat: Pattern; freq: float): Pattern

Alias for hpf.

Arguments:
hp(pat: Pattern; mod_pat: Pattern): Pattern

17.3.8.5. hpf

hpf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated hpf cutoff — sampled from mod_pat per event.

Arguments:
hpf(pat: Pattern; freq: float): Pattern

17.3.8.6. hpq

hpq(pat: Pattern; q: float): Pattern

Fluent shorthand for set_hpq. Sets high-pass filter resonance.

Arguments:
hpq(pat: Pattern; mod_pat: Pattern): Pattern

17.3.8.7. lp

lp(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated lpf.

Arguments:
lp(pat: Pattern; freq: float): Pattern

17.3.8.8. lpf

lpf(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated lpf cutoff — sampled from mod_pat per event.

Arguments:
lpf(pat: Pattern; freq: float): Pattern

17.3.8.9. lpq

lpq(pat: Pattern; q: float): Pattern

Fluent shorthand for set_lpq. Sets low-pass filter resonance.

Arguments:
lpq(pat: Pattern; mod_pat: Pattern): Pattern

17.3.8.10. resonance

resonance(pat: Pattern; q: float): Pattern

Alias for lpq.

Arguments:
resonance(pat: Pattern; mod_pat: Pattern): Pattern

17.3.9. Fluent control: envelope

17.3.9.1. att

att(pat: Pattern; a: float): Pattern

Alias for attack.

Arguments:
att(pat: Pattern; mod_pat: Pattern): Pattern

17.3.9.2. attack

attack(pat: Pattern; a: float): Pattern

Fluent shorthand for set_attack. Sets envelope attack (seconds).

Arguments:
attack(pat: Pattern; mod_pat: Pattern): Pattern

17.3.9.3. dec

dec(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated decay.

Arguments:
dec(pat: Pattern; d: float): Pattern

17.3.9.4. decay

decay(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated envelope decay — sampled from mod_pat per event.

Arguments:
decay(pat: Pattern; d: float): Pattern

17.3.9.5. rel

rel(pat: Pattern; r: float): Pattern

Alias for release.

Arguments:
rel(pat: Pattern; mod_pat: Pattern): Pattern

17.3.9.6. release

release(pat: Pattern; r: float): Pattern

Fluent shorthand for set_release. Sets envelope release (seconds).

Arguments:
release(pat: Pattern; mod_pat: Pattern): Pattern

17.3.9.7. sus

sus(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated sustain.

Arguments:
sus(pat: Pattern; s: float): Pattern

17.3.9.8. sustain

sustain(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated envelope sustain — sampled from mod_pat per event.

Arguments:
sustain(pat: Pattern; s: float): Pattern

17.3.10. Fluent control: synthesis and shaping

coarse(pat: Pattern; c: int): Pattern

Fluent shorthand for set_coarse. Sets sample-rate reduction factor.

Arguments:

17.3.10.1. crush

crush(pat: Pattern; c: float): Pattern

Fluent shorthand for set_crush. Sets bit-crush amount.

Arguments:
crush(pat: Pattern; mod_pat: Pattern): Pattern

17.3.10.2. fm

fm(pat: Pattern; f: float): Pattern

Fluent shorthand for set_fm. Sets FM modulation depth.

Arguments:
fm(pat: Pattern; mod_pat: Pattern): Pattern

17.3.10.3. fmh

fmh(pat: Pattern; f: float): Pattern

Fluent shorthand for set_fmh. Sets FM harmonicity ratio.

Arguments:
fmh(pat: Pattern; mod_pat: Pattern): Pattern

17.3.10.4. shape

shape(pat: Pattern; s: float): Pattern

Fluent shorthand for set_shape. Sets waveshape/distortion amount.

Arguments:
shape(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11. Fluent control: modulation FX

17.3.11.1. compressor

compressor(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor threshold — sampled from mod_pat per event.

Arguments:
compressor(pat: Pattern; thr_db: float): Pattern

17.3.11.2. compressorAttack

compressorAttack(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor attack (camelCase) — sampled from mod_pat per event.

Arguments:
compressorAttack(pat: Pattern; a: float): Pattern

17.3.11.3. compressorKnee

compressorKnee(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor knee (camelCase) — sampled from mod_pat per event.

Arguments:
compressorKnee(pat: Pattern; k: float): Pattern

17.3.11.4. compressorRatio

compressorRatio(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor ratio (camelCase) — sampled from mod_pat per event.

Arguments:
compressorRatio(pat: Pattern; r: float): Pattern

17.3.11.5. compressorRelease

compressorRelease(pat: Pattern; r: float): Pattern

camelCase fluent shorthand for set_compressor_release. Sets compressor release (seconds).

Arguments:
compressorRelease(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.6. compressor_attack

compressor_attack(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor attack (snake_case) — sampled from mod_pat per event.

Arguments:
compressor_attack(pat: Pattern; a: float): Pattern

17.3.11.7. compressor_knee

compressor_knee(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor knee (snake_case) — sampled from mod_pat per event.

Arguments:
compressor_knee(pat: Pattern; k: float): Pattern

17.3.11.8. compressor_ratio

compressor_ratio(pat: Pattern; r: float): Pattern

snake_case fluent shorthand for set_compressor_ratio. Sets compressor ratio.

Arguments:
compressor_ratio(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.9. compressor_release

compressor_release(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated compressor release (snake_case) — sampled from mod_pat per event.

Arguments:
compressor_release(pat: Pattern; r: float): Pattern

17.3.11.10. ph

ph(pat: Pattern; r: float): Pattern

Alias for phaser.

Arguments:
ph(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.11. phaser

phaser(pat: Pattern; r: float): Pattern

Fluent shorthand for set_phaser. Sets phaser rate in Hz (0 disables).

Arguments:
phaser(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.12. phasercenter

phasercenter(pat: Pattern; c: float): Pattern

Fluent shorthand for set_phasercenter. Sets phaser center frequency.

Arguments:
phasercenter(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.13. phaserdepth

phaserdepth(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated phaser depth — sampled from mod_pat per event.

Arguments:
phaserdepth(pat: Pattern; d: float): Pattern

17.3.11.14. phasersweep

phasersweep(pat: Pattern; s: float): Pattern

Fluent shorthand for set_phasersweep. Sets phaser sweep range.

Arguments:
phasersweep(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.15. phc

phc(pat: Pattern; c: float): Pattern

Alias for phasercenter.

Arguments:
phc(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.16. phd

phd(pat: Pattern; mod_pat: Pattern): Pattern

Alias for pattern-modulated phaserdepth.

Arguments:
phd(pat: Pattern; d: float): Pattern

17.3.11.17. phs

phs(pat: Pattern; s: float): Pattern

Alias for phasersweep.

Arguments:
phs(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.18. trem

trem(pat: Pattern; r: float): Pattern

Alias for tremolo.

Arguments:
trem(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.19. tremdepth

tremdepth(pat: Pattern; d: float): Pattern

Alias for tremolodepth.

Arguments:
tremdepth(pat: Pattern; mod_pat: Pattern): Pattern

17.3.11.20. tremolo

tremolo(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated tremolo rate — sampled from mod_pat per event.

Arguments:
tremolo(pat: Pattern; r: float): Pattern

17.3.11.21. tremolodepth

tremolodepth(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated tremolo depth — sampled from mod_pat per event.

Arguments:
tremolodepth(pat: Pattern; d: float): Pattern

17.3.12. Fluent control: SF2

17.3.12.1. sf2

sf2(pat: Pattern; name: string): Pattern

Fluent shorthand for set_sf2 by GM instrument name. Example: pat |> sf2(“piano”).

Arguments:
sf2(pat: Pattern; program: int): Pattern

sf2_bank(pat: Pattern; bank: int): Pattern

Fluent shorthand for set_sf2_bank. Sets SF2 bank (0 = melodic, 128 = percussion).

Arguments:

17.3.12.2. sf2_expression

sf2_expression(pat: Pattern; v: float): Pattern

Fluent shorthand for set_sf2_expression. Sets SF2 expression CC11 (0..1).

Arguments:
sf2_expression(pat: Pattern; mod_pat: Pattern): Pattern

17.3.12.3. sf2_mod_wheel

sf2_mod_wheel(pat: Pattern; mod_pat: Pattern): Pattern

Pattern-modulated SF2 mod wheel (CC1) — sampled from mod_pat per event.

Arguments:
sf2_mod_wheel(pat: Pattern; v: float): Pattern

17.3.12.4. sf2_pitch_bend

sf2_pitch_bend(pat: Pattern; v: float): Pattern

Fluent shorthand for set_sf2_pitch_bend. Sets SF2 pitch bend (0..1, 0.5 = center).

Arguments:
sf2_pitch_bend(pat: Pattern; mod_pat: Pattern): Pattern

17.3.13. Signals

cosine(): Pattern

Unipolar cosine signal 0..1. Alias for signal_cosine.

cosine2(): Pattern

Bipolar cosine signal -1..1.

irand(n: int): Pattern

Random integer signal in 0..n-1, deterministic.

Arguments:
  • n : int

isaw(): Pattern

Inverted unipolar sawtooth signal — falls from 1.0 to 0.0 each cycle.

isaw2(): Pattern

Bipolar inverted sawtooth signal -1..1.

itri(): Pattern

Inverted unipolar triangle signal — starts at 1.0, dips to 0.0 at midpoint.

itri2(): Pattern

Bipolar inverted triangle signal -1..1.

perlin(): Pattern

Unipolar Perlin-noise signal 0..1. Alias for signal_perlin.

rand(): Pattern

Unipolar deterministic random signal 0..1 — hash-based, same time yields same value.

rand2(): Pattern

Bipolar deterministic random signal -1..1 — hash-based.

range(pat: Pattern; lo: float; hi: float): Pattern

Scales a signal pattern from 0..1 to lo..hi. Alias for signal_range. Example: sine() |> range(200.0, 4000.0).

Arguments:
  • pat : Pattern

  • lo : float

  • hi : float

run(n: int): Pattern

Discrete ramp 0..n-1 within each cycle — n haps per cycle with values 0, 1, …, n-1.

Arguments:
  • n : int

saw(): Pattern

Unipolar sawtooth signal 0..1. Alias for signal_saw.

saw2(): Pattern

Bipolar sawtooth signal -1..1.

signal(fn: lambda<(t:double):float>): Pattern

Builds a continuous-signal pattern from fn(t) : float. Produces one hap per query with has_whole=false and value stored in note. Foundation for sine, saw, perlin, etc.

Arguments:
  • fn : lambda<(t:double):float>

signal_cosine(): Pattern

Unipolar cosine signal, mapped to 0..1 over one cycle. Same as signal_sine shifted left by 0.25 cycles.

signal_perlin(): Pattern

Deterministic Perlin-style noise mapped to 0..1. Uses smootherstep interpolation between hashed random values at integer cycle boundaries.

signal_range(pat: Pattern; lo: float; hi: float): Pattern

Scales a signal pattern from 0..1 to lo..hi. Example: sine() |> signal_range(200.0, 4000.0) for a 200..4000 Hz filter sweep.

Arguments:
  • pat : Pattern

  • lo : float

  • hi : float

signal_saw(): Pattern

Sawtooth signal — ramps 0..1 linearly within each cycle.

signal_sine(): Pattern

Unipolar sine signal, mapped to 0..1 over one cycle. At t=0 → 0.5, t=0.25 → 1.0, t=0.5 → 0.5, t=0.75 → 0.0.

signal_tri(): Pattern

Triangle signal — rises 0→1 in the first half of each cycle, falls 1→0 in the second half.

sine(): Pattern

Unipolar sine signal 0..1. Alias for signal_sine.

sine2(): Pattern

Bipolar sine signal -1..1.

square(): Pattern

Unipolar square signal (1.0 first half, 0.0 second half).

square2(): Pattern

Bipolar square signal -1..1.

tri(): Pattern

Unipolar triangle signal 0..1. Alias for signal_tri.

tri2(): Pattern

Bipolar triangle signal -1..1.