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:
value : Event
- 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:
pats : array< Pattern>
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>”)).
- 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:
pats : array< Pattern>
- 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.
17.3.3.2. slow
- slow(pat: Pattern; n: double): Pattern
Slows down pat by factor n — pat takes n cycles to complete once. Example: s(“bd sd”) |> slow(2.0lf).
- Arguments:
pat : Pattern
n : double
- 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:
pats : array< Pattern>
- 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
chunk (var pat: Pattern; n: int; transform: PatternTransform) : Pattern
echo (var pat: Pattern; times: int; time: double; feedback: float) : Pattern
every (n: int; var pat_on: Pattern; var pat_off: Pattern) : Pattern
innerJoin (var param_pat: Pattern; var fn: lambda<(val:float):Pattern>) : Pattern
jux (var pat: Pattern; transform: PatternTransform) : Pattern
layer (var pats: array<Pattern>; var base: Pattern) : Pattern
off (var pat: Pattern; time: double; transform: PatternTransform) : Pattern
often (var pat: Pattern; transform: PatternTransform) : Pattern
sometimes (var pat: Pattern; transform: PatternTransform) : Pattern
sometimesby (var pat: Pattern; prob: float; transform: PatternTransform) : Pattern
stut (var pat: Pattern; times: int; feedback: float; time: double) : Pattern
superimpose (var pat: Pattern; transform: PatternTransform) : Pattern
wchoose (var pats: array<Pattern>; var weights: array<float>) : Pattern
- add(pat: Pattern; semitones: float): Pattern
Alias for transpose — adds semitones to each event’s note. Matches strudel naming.
- Arguments:
pat : Pattern
semitones : float
- 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:
pats : array< Pattern>
- 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:
pats : array< Pattern>
- 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:
pat : Pattern
n : int
transform : PatternTransform
- 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.
- 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).
- 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:
pat : Pattern
prob : float
- degradeBy(pat: Pattern; prob: float): Pattern
Alias for degrade with explicit probability. Randomly drops events with probability prob. Example: pat |> degradeBy(0.3).
- Arguments:
pat : Pattern
prob : float
- 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:
pat : Pattern
k : int
n : int
- 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.
- 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:
pat : Pattern
factor : double
- 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.
- 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:
pat : Pattern
n : int
- iterBack(pat: Pattern; n: int): Pattern
Like iter but rotates pat right by 1/n cycle each cycle. Example: pat |> iterBack(4).
- Arguments:
pat : Pattern
n : int
- 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:
pat : Pattern
transform : PatternTransform
- 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)]).
- 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:
pat : Pattern
t : double
- 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”)).
- 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:
pat : Pattern
time : double
transform : PatternTransform
- often(pat: Pattern; transform: PatternTransform): Pattern
Applies transform to each event with 75% probability. Shorthand for sometimesby(pat, 0.75, transform).
- Arguments:
pat : Pattern
transform : PatternTransform
- palindrome(pat: Pattern): Pattern
Plays pat forward on even cycles, reversed on odd cycles. Example: s(“bd sd cp”) |> palindrome().
- Arguments:
pat : Pattern
- 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:
pat : Pattern
n : int
- randcat(pats: array<Pattern>): Pattern
Alias for choose — randomly picks one pattern per cycle.
- Arguments:
pats : array< Pattern>
- rev(pat: Pattern): Pattern
Reverses event positions within each cycle. Example: s(“bd sd cp”) |> rev() plays cp sd bd.
- Arguments:
pat : Pattern
- 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:
pat : Pattern
n : int
- shuffle(pat: Pattern; n: int): Pattern
Randomly permutes n equal subdivisions of each cycle (Fisher-Yates, deterministic per cycle). Example: pat |> shuffle(4).
- Arguments:
pat : Pattern
n : int
- sometimes(pat: Pattern; transform: PatternTransform): Pattern
Applies transform to each event with 50% probability. Shorthand for sometimesby(pat, 0.5, transform).
- Arguments:
pat : Pattern
transform : PatternTransform
- 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:
pat : Pattern
prob : float
transform : PatternTransform
- 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:
pat : Pattern
n : int
- 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”)).
- 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:
pat : Pattern
transform : PatternTransform
- transpose(pat: Pattern; semitones: float): Pattern
Shifts every event’s MIDI note by semitones. Example: pat |> transpose(7.0) transposes up a fifth.
- Arguments:
pat : Pattern
semitones : float
- 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:
pat : Pattern
cond : lambda<(cycle:int):bool>
transform : PatternTransform
17.3.5. Setter primitives
set_attack (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_begin (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_chorus (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_compressor (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_compressor_attack (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_compressor_knee (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_compressor_ratio (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_compressor_release (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_crush (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_decay (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_delay (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_delayfeedback (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_delaytime (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_phaser (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_phasercenter (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_phaserdepth (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_phasersweep (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_release (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_roomsize (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_sf2_expression (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_sf2_mod_wheel (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_sf2_pitch_bend (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_shape (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_sound (var pat: Pattern; var sound_pat: Pattern) : Pattern
set_speed (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_sustain (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_tremolo (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_tremolodepth (var pat: Pattern; var mod_pat: Pattern) : Pattern
set_velocity (var pat: Pattern; var mod_pat: Pattern) : Pattern
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:
pat : Pattern
a : float
- 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).
- 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).
- 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.
- set_chorus(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_chorus — samples mod_pat at each event onset to set chorus send.
- set_compressor(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_compressor — samples mod_pat at each event onset to set compressor threshold (dB).
- 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).
- 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).
- 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.
- 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).
- set_crush(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_crush — samples mod_pat at each event onset to set bit-crush amount.
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.
- 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:
pat : Pattern
d : float
- 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.
- 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.
- 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).
- 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).
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:
pat : Pattern
f : float
- 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:
pat : Pattern
f : float
- 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()).
- 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:
pat : Pattern
freq : float
- 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:
pat : Pattern
q : float
- 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)).
- 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:
pat : Pattern
q : float
- 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)).
- 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:
pat : Pattern
o : int
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.
- 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).
- set_phasercenter(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_phasercenter — samples mod_pat at each event onset to set phaser center frequency.
- set_phaserdepth(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_phaserdepth — samples mod_pat at each event onset to set phaser depth.
- set_phasersweep(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_phasersweep — samples mod_pat at each event onset to set phaser sweep range.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- set_shape(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_shape — samples mod_pat at each event onset to set waveshape/distortion amount.
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:
pat : Pattern
snd : string
- 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.
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.
- 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).
- set_tremolodepth(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_tremolodepth — samples mod_pat at each event onset to set tremolo depth.
- set_velocity(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-valued set_velocity — samples mod_pat at each event onset to set velocity.
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.
- 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:
pat : Pattern
c : int
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:
pat : Pattern
e_val : float
- 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.
- 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:
pat : Pattern
n : float
- 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:
pat : Pattern
o : int
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:
pat : Pattern
p : float
- 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:
pat : Pattern
snd : string
- 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:
pat : Pattern
spd : float
- speed(pat: Pattern; mod_pat: Pattern): Pattern
17.3.6.8. vel
- vel(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated velocity.
- 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.
- 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.
- 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:
pat : Pattern
d : float
- 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:
pat : Pattern
d : float
- 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:
pat : Pattern
d : float
17.3.7.4. delaytime
- delaytime(pat: Pattern; d: float): Pattern
Fluent shorthand for set_delaytime. Sets delay time in seconds.
- Arguments:
pat : Pattern
d : float
- delaytime(pat: Pattern; mod_pat: Pattern): Pattern
17.3.7.5. dfb
- dfb(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated delayfeedback.
- dfb(pat: Pattern; d: float): Pattern
17.3.7.6. dt
- dt(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated delaytime.
- 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.
- 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.
- roomsize(pat: Pattern; r: float): Pattern
17.3.7.9. size
- size(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated roomsize.
- 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.
- 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:
pat : Pattern
q : float
- 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:
pat : Pattern
d : float
- djf(pat: Pattern; mod_pat: Pattern): Pattern
17.3.8.4. hp
- hp(pat: Pattern; freq: float): Pattern
Alias for hpf.
- Arguments:
pat : Pattern
freq : float
- 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.
- 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:
pat : Pattern
q : float
- hpq(pat: Pattern; mod_pat: Pattern): Pattern
17.3.8.7. lp
- lp(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated lpf.
- 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.
- 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:
pat : Pattern
q : float
- lpq(pat: Pattern; mod_pat: Pattern): Pattern
17.3.8.10. resonance
- resonance(pat: Pattern; q: float): Pattern
Alias for lpq.
- Arguments:
pat : Pattern
q : float
- 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:
pat : Pattern
a : float
- 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:
pat : Pattern
a : float
- attack(pat: Pattern; mod_pat: Pattern): Pattern
17.3.9.3. dec
- dec(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated decay.
- 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.
- decay(pat: Pattern; d: float): Pattern
17.3.9.5. rel
- rel(pat: Pattern; r: float): Pattern
Alias for release.
- Arguments:
pat : Pattern
r : float
- 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:
pat : Pattern
r : float
- release(pat: Pattern; mod_pat: Pattern): Pattern
17.3.9.7. sus
- sus(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated sustain.
- 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.
- 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:
pat : Pattern
c : int
17.3.10.1. crush
- crush(pat: Pattern; c: float): Pattern
Fluent shorthand for set_crush. Sets bit-crush amount.
- Arguments:
pat : Pattern
c : float
- 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:
pat : Pattern
f : float
- 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:
pat : Pattern
f : float
- 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:
pat : Pattern
s : float
- shape(pat: Pattern; mod_pat: Pattern): Pattern
17.3.11. Fluent control: modulation FX
compressor (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressorAttack (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressorKnee (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressorRatio (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressorRelease (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressor_attack (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressor_knee (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressor_ratio (var pat: Pattern; var mod_pat: Pattern) : Pattern
compressor_release (var pat: Pattern; var mod_pat: Pattern) : Pattern
phasercenter (var pat: Pattern; var mod_pat: Pattern) : Pattern
phaserdepth (var pat: Pattern; var mod_pat: Pattern) : Pattern
phasersweep (var pat: Pattern; var mod_pat: Pattern) : Pattern
tremdepth (var pat: Pattern; var mod_pat: Pattern) : Pattern
tremolodepth (var pat: Pattern; var mod_pat: Pattern) : Pattern
17.3.11.1. compressor
- compressor(pat: Pattern; mod_pat: Pattern): Pattern
Pattern-modulated compressor threshold — sampled from mod_pat per event.
- 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.
- 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.
- 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.
- 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:
pat : Pattern
r : float
- 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.
- 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.
- 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:
pat : Pattern
r : float
- 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.
- compressor_release(pat: Pattern; r: float): Pattern
17.3.11.10. ph
- ph(pat: Pattern; r: float): Pattern
Alias for phaser.
- Arguments:
pat : Pattern
r : float
- 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:
pat : Pattern
r : float
- 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:
pat : Pattern
c : float
- 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.
- 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:
pat : Pattern
s : float
- phasersweep(pat: Pattern; mod_pat: Pattern): Pattern
17.3.11.15. phc
- phc(pat: Pattern; c: float): Pattern
Alias for phasercenter.
- Arguments:
pat : Pattern
c : float
- phc(pat: Pattern; mod_pat: Pattern): Pattern
17.3.11.16. phd
- phd(pat: Pattern; mod_pat: Pattern): Pattern
Alias for pattern-modulated phaserdepth.
- phd(pat: Pattern; d: float): Pattern
17.3.11.17. phs
- phs(pat: Pattern; s: float): Pattern
Alias for phasersweep.
- Arguments:
pat : Pattern
s : float
- phs(pat: Pattern; mod_pat: Pattern): Pattern
17.3.11.18. trem
- trem(pat: Pattern; r: float): Pattern
Alias for tremolo.
- Arguments:
pat : Pattern
r : float
- trem(pat: Pattern; mod_pat: Pattern): Pattern
17.3.11.19. tremdepth
- tremdepth(pat: Pattern; d: float): Pattern
Alias for tremolodepth.
- Arguments:
pat : Pattern
d : float
- 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.
- 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.
- 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:
pat : Pattern
name : string
- 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:
pat : Pattern
bank : int
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:
pat : Pattern
v : float
- 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.
- 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:
pat : Pattern
v : float
- 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.