TuttiDAW Musik mit CodeTuttiDAW Code guide

Function reference

Every function, method and signal TuttiDAW Code knows, with an example.

This page has not been translated yet, so it is shown in English.

Generated from TuttiDAW's pattern engine: every function, method and signal it knows, with a short description and an example that compiles. Names marked (TuttiDAW only) are extensions that strudel.cc does not have.

Functions

all(fn)

Applies one transformation to every program voice.

all(x => x.fast(2)); $: note("60 64")
Open in /code

arrange([cycles, pat], ...)

Sections played back to back for the given cycles, looping.

arrange([4, note("c e")], [2, note("f a")])
Open in /code

cat(a, b, ...)

One pattern per cycle, in turn.

cat(note("c e"), note("g b"))
Open in /code

chooseCycles(a, b, ...)

Picks one pattern at random each cycle.

chooseCycles(s("bd"), s("hh"), s("sd")).fast(4)
Open in /code

chord(symbols)

Sets chord symbols; also available as .chord(symbols) or .chord().

chord("<Bbm9 Fm9>/4").dict("ireal").voicing()
Open in /code

hush()

Silence.

stack(s("bd").hush(), s("hh*4"))
Open in /code

irand(n)

Random whole numbers from 0 to n-1 (continuous).

n(irand(8).segment(4)).scale("C:minor")
Open in /code

n(pattern)

Numbers: scale degrees with .scale(), sample variants with s().

n("0 2 4").scale("C:minor")
Open in /code

note(pattern)

Plays pitches: note names (c4, eb3) or MIDI numbers (60).

note("c3 e3 g3 b3")
Open in /code

pure(value)

One event per cycle with the value.

note(pure(60))
Open in /code

register(name, (args..., pat) => pattern)

Defines a new method (and a function) from your own code; the pattern comes last.

register('dub', (pat) => pat.room(0.5))
$: note("c3 e3").dub()
Open in /code

run(n)

The numbers 0 to n-1 in one cycle.

n(run(4)).scale("C:major")
Open in /code

s(pattern)

Picks the sound: drum names (bd sd hh) or a synth (sawtooth, piano).

s("bd sd [~ bd] sd")
Open in /code

samples(mapOrManifest, base?)

Declares external sample references; browser consumers load audio explicitly.

samples('github:user/repo')
Open in /code

seq(a, b, ...)

Squeezes all patterns into one cycle, one after another.

seq(s("bd"), s("sd sd"))
Open in /code

setcpm(cpm)

Asks for a tempo in cycles per minute (one cycle = one bar).

setcpm(30)
Open in /code

setcps(cps)

Asks for a tempo in cycles per second.

setcps(0.5)
Open in /code

setDefaultVoicings(name)

Sets the default voicing dictionary for this program only.

setDefaultVoicings('ireal'); chord("Cm9").voicing()
Open in /code

silence

A pattern with no events.

cat(s("bd"), silence)
Open in /code

slider(value, min = 0, max = 1, step?)

A numeric pattern with an inline literal control.

note(slider(60, 48, 72, 1))
Open in /code

squeeze(indices, listOrObject)

Squeezes selected cycles into selector events; also a method.

note(squeeze("0 1", ["60 64", "67 72"]))
Open in /code

stack(a, b, ...)

Plays patterns at the same time.

stack(s("bd*4"), note("c2 g2"))
Open in /code

timeCat([w, a], [w, b], ...)

Sequence in one cycle with relative lengths; a bare "..." pattern weighs its number of steps.

timeCat([3, s("bd")], [1, s("sd")])
Open in /code

toggle(value) (TuttiDAW only)

A value pattern with an inline on/off control (Tutti extension, not in Strudel).

note("60 64").mask(toggle(1))
Open in /code

Methods

.add(x)

Adds to every value; on note()/n() patterns add note(...) / n(...).

n("0 2 4".add("<0 3>")).scale("C:major")
Open in /code

.almostAlways(f)

Applies f to about 90% of the events.

s("hh*8").almostAlways(x => x.gain(0.7))
Open in /code

.almostNever(f)

Applies f to about 10% of the events.

s("hh*8").almostNever(x => x.ply(2))
Open in /code

.always(f)

Always applies f.

s("hh*4").always(x => x.fast(2))
Open in /code

.anchor(note)

Aligns the voicing to a note name or MIDI pitch (default C5).

chord("C").anchor("D5").voicing()
Open in /code

.arp(indices)

Sequences chord tones inside each event, wrapping indices without octaving.

chord("C").voicing().arp("0 1 2 3")
Open in /code

.attack(value)

Envelope attack time in seconds.

note("c e").s("sawtooth").attack(0.1)
Open in /code

.bank(value)

Drum machine bank for s(), e.g. "RolandTR909".

s("bd sd").bank("RolandTR909")
Open in /code

.begin(value)

Where a sample starts, 0..1 of its length.

s("hh*4").begin("<0 0.25>")
Open in /code

.bpf(value)

Band-pass filter center in Hz ("1000:4" also sets its Q).

s("hh*8").bpf(2000)
Open in /code

.bpq(value)

Band-pass filter Q.

s("hh*8").bpf(1500).bpq(4)
Open in /code

.chop(parts)

Cuts each event and its sample into equal parts played in turn.

s("bd sd").chop(4)
Open in /code

.chorus(value)

Chorus amount, 0..1.

note("c e g").s("sawtooth").chorus(0.5)
Open in /code

.chunk(n, f)

Applies f to one of n slices of the cycle, a different slice each cycle.

note("c d e f").chunk(4, x => x.add(note(12)))
Open in /code

.clip(value)

Multiplies note length (1 = full step); a sample stops at the note end.

note("c a f e").clip(0.5)
Open in /code

.coarse(value)

Sample-rate reduction: higher is coarser.

s("bd sd").coarse(8)
Open in /code

.compressor(value)

Compressor threshold in dB ("thr:ratio:knee:attack:release").

s("bd sd").compressor("-20:20:10:.002:.02")
Open in /code

.compressorAttack(value)

Compressor attack in seconds.

s("bd sd").compressor(-20).compressorAttack(0.01)
Open in /code

.compressorKnee(value)

Compressor knee in dB.

s("bd sd").compressor(-20).compressorKnee(6)
Open in /code

.compressorRatio(value)

Compressor ratio.

s("bd sd").compressor(-20).compressorRatio(8)
Open in /code

.compressorRelease(value)

Compressor release in seconds.

s("bd sd").compressor(-20).compressorRelease(0.2)
Open in /code

.cpm(cyclesPerMinute)

Plays the pattern at this many cycles per minute, relative to the program tempo.

note("c e g").cpm(45)
Open in /code

.crush(value)

Bit crusher: lower is crunchier.

s("bd sd").crush(4)
Open in /code

.cut(value)

Cut group: a hit stops the playing samples of its group.

s("[oh hh]*4").cut(1)
Open in /code

.decay(value)

Envelope decay time in seconds.

note("c e").s("square").decay(0.2)
Open in /code

.degrade()

Drops half of the events at random.

s("hh*8").degrade()
Open in /code

.degradeBy(amount)

Drops events at random with the given probability.

s("hh*8").degradeBy(0.3)
Open in /code

.delay(value)

Delay wet amount, 0..1 ("0.5:0.25:0.7" also sets time and feedback).

s("cp").delay(0.5)
Open in /code

.delayfeedback(value)

Delay feedback, 0..1.

s("cp").delay(0.5).delayfeedback(0.6)
Open in /code

.delaytime(value)

Delay time in cycles.

s("cp").delay(0.5).delaytime(0.125)
Open in /code

.detune(value)

Unison detune of the voice (supersaw).

note("c3 e3").s("supersaw").detune(0.3)
Open in /code

.dict(name)

Selects default, ireal, lefthand or legacy voicing shapes.

chord("C7").dict("lefthand").voicing()
Open in /code

.distort(value)

Distortion amount.

note("c2*4").s("sawtooth").distort(2)
Open in /code

.div(x)

Divides every value.

n("8 4".div(2)).scale("C:major")
Open in /code

.early(cycles)

Shifts the pattern earlier by a fraction of a cycle.

s("hh*2").early(0.125)
Open in /code

.echo(times, time, feedback)

Repeats each event, quieter each time.

s("bd sd").echo(3, 1/8, 0.7)
Open in /code

.echoWith(times, time, f)

Repeats the pattern, applying f(pattern, index) to each copy.

note("c").echoWith(3, 1/8, (p, i) => p.add(i * 2))
Open in /code

.end(value)

Where a sample stops, 0..1 of its length.

s("oh*4").end(0.3)
Open in /code

.euclid(pulses, steps)

Euclidean rhythm: pulses spread evenly over steps.

note("c3").euclid(3, 8)
Open in /code

.euclidLegato(pulses, steps)

Euclidean rhythm where each pulse lasts until the next.

note("c3").euclidLegato(3, 8)
Open in /code

.euclidLegatoRot(pulses, steps, rotation)

Rotated euclidean rhythm where each pulse lasts until the next, across the cycle boundary.

note("c3").euclidLegatoRot(3, 8, 1)
Open in /code

.euclidRot(pulses, steps, rotation)

Euclidean rhythm, rotated by some steps.

note("c3").euclidRot(3, 8, 2)
Open in /code

.every(n, f)

Applies f on the first of every n cycles.

note("c d e g").every(4, x => x.rev())
Open in /code

.fast(factor)

Speeds the pattern up by the factor (may be a pattern).

note("c e g").fast("<1 2>")
Open in /code

.firstOf(n, f)

Applies f on cycle 0, n, 2n, ...

note("c d e g").firstOf(4, x => x.rev())
Open in /code

.fit()

Plays each sample (its begin..end window) at the speed that fills its event.

s("bd/2").fit()
Open in /code

.fm(value)

FM modulation index.

note("c e g").fm(2)
Open in /code

.fmap(fn)

Maps each raw event value, retaining its times and source ranges.

note("60 64".fmap(x => x + 12))
Open in /code

.fmattack(value)

FM envelope attack in seconds.

note("c e").fm(4).fmattack(0.1)
Open in /code

.fmdecay(value)

FM envelope decay in seconds.

note("c e").fm(4).fmdecay(0.2)
Open in /code

.fmh(value)

FM modulator-to-carrier ratio.

note("c e g").fm(2).fmh(1.5)
Open in /code

.fmsustain(value)

FM envelope sustain level, 0..1.

note("c e").fm(4).fmdecay(0.2).fmsustain(0.3)
Open in /code

.fx(name, params) (TuttiDAW only)

TuttiDAW extension, not in Strudel: adds an audio effect after the instrument of the voice, in call order.

note("c4 e4").fx("Reverb:Large Hall", {decayTime: "4s"})
Open in /code

.gain(value)

Volume, 0..1 and up.

s("hh*8").gain(0.6)
Open in /code

.hpf(value)

High-pass filter cutoff in Hz.

s("hh*8").hpf(2000)
Open in /code

.hpq(value)

High-pass filter resonance.

s("hh*8").hpf(1200).hpq(4)
Open in /code

.inhabit(listOrObject)

Squeezes one selected cycle into each selector event.

note("0 1".inhabit(["60 64", "67 72"]))
Open in /code

.inside(n, f)

Applies f as if the cycle were n cycles long.

note("c d e f").inside(2, rev)
Open in /code

.inst(name, params) (TuttiDAW only)

TuttiDAW extension, not in Strudel: plays the voice on a TuttiDAW instrument ("Device" or "Device:Preset"), params in the device units.

note("c2 eb2").inst("Drift:Deep Bass", {cutoff: 600})
Open in /code

.iter(n)

Starts each cycle one subdivision later in the pattern.

note("c d e f").iter(4)
Open in /code

.iterBack(n)

Like .iter(), going the other way.

note("c d e f").iterBack(4)
Open in /code

.jux(f)

Original panned left, f of it panned right.

s("bd sd hh").jux(rev)
Open in /code

.lastOf(n, f)

Applies f on the last of every n cycles.

note("c d e g").lastOf(4, x => x.fast(2))
Open in /code

.late(cycles)

Shifts the pattern later by a fraction of a cycle.

s("hh*2").late(0.125)
Open in /code

.layer(f, ...)

Plays f of the pattern for each f, without the original.

note("c e").layer(x => x.add(7), x => x.add(12))
Open in /code

.loopAt(cycles)

Slows the pattern down and plays the sample at the speed that makes it last that many cycles.

s("bd").loopAt(2)
Open in /code

.lpattack(value)

Filter envelope attack in seconds.

note("c2 e2").s("sawtooth").lpf(300).lpenv(4).lpattack(0.2)
Open in /code

.lpdecay(value)

Filter envelope decay in seconds.

note("c2 e2").s("sawtooth").lpf(300).lpenv(4).lpdecay(0.2)
Open in /code

.lpenv(value)

Low-pass filter envelope depth.

note("c2 e2").s("sawtooth").lpf(300).lpenv(4)
Open in /code

.lpf(value)

Low-pass filter cutoff in Hz ("800:4" also sets resonance).

note("c2*4").s("sawtooth").lpf(800)
Open in /code

.lpq(value)

Low-pass filter resonance.

note("c2*4").s("sawtooth").lpf(600).lpq(8)
Open in /code

.lprelease(value)

Filter envelope release in seconds.

note("c2 e2").s("sawtooth").lpf(300).lpenv(4).lprelease(0.5)
Open in /code

.lpsustain(value)

Filter envelope sustain level, 0..1.

note("c2 e2").s("sawtooth").lpf(300).lpenv(4).lpsustain(0.3)
Open in /code

.mask(pattern)

Silences the parts where the mask is 0 or ~.

note("c d e f").mask("1 0 1 1")
Open in /code

.midifx(name, params) (TuttiDAW only)

TuttiDAW extension, not in Strudel: adds a MIDI effect before the instrument of the voice; the notes stay as written.

note("[c3,e3,g3]").midifx("Arpeggiator", {style: "UpDown", rate: "1/16"})
Open in /code

.mode(alignment[:note])

Aligns above, below, duck or root; oldabove and oldroot are legacy modes.

chord("C").mode("root:g2").voicing()
Open in /code

.mul(x)

Multiplies every value.

n("1 2 3".mul(2)).scale("C:major")
Open in /code

.never(f)

Never applies f.

s("hh*4").never(x => x.fast(2))
Open in /code

.off(time, f)

Adds a copy shifted later by time with f applied.

note("c3 eb3 g3").off(1/8, x => x.add(7))
Open in /code

.offset(n)

Moves by whole voicing positions; wrapping the dictionary changes octave.

chord("C*4").offset("0 1 2 3").voicing()
Open in /code

.often(f)

Applies f to about 75% of the events.

s("hh*8").often(x => x.gain(0.4))
Open in /code

.outside(n, f)

Applies f as if n cycles were one.

note("<c d> e").outside(2, rev)
Open in /code

.palindrome()

Forwards on even cycles, backwards on odd ones.

note("c d e g").palindrome()
Open in /code

.pan(value)

Stereo position, 0 = left, 1 = right.

s("hh*4").pan("<0 1>")
Open in /code

.pattack(value)

Pitch envelope attack in seconds.

note("c3").penv(12).pattack(0.1)
Open in /code

.pdecay(value)

Pitch envelope decay in seconds.

note("c2*4").penv(24).pdecay(0.1)
Open in /code

.penv(value)

Pitch envelope amount in semitones.

note("c2*4").s("sine").penv(24).pdecay(0.1)
Open in /code

.phaser(value)

Phaser speed in Hz.

note("c e g").s("sawtooth").phaser(2)
Open in /code

.phasercenter(value)

Phaser center frequency in Hz.

note("c e g").s("sawtooth").phaser(2).phasercenter(2000)
Open in /code

.phaserdepth(value)

Phaser depth, 0..1.

note("c e g").s("sawtooth").phaser(2).phaserdepth(0.5)
Open in /code

.pick(listOrObject)

Selects a pattern, preserving its timing; list indices clamp to the ends.

note("<0 1>".pick(["60 64", "67 72"]))
Open in /code

.pickOut(listOrObject)

Keeps each selector event and plays the selected pattern value at its start.

note("<0 1>".pickOut(["60 64", "67 72"]))
Open in /code

.pickRestart(listOrObject)

Selects a pattern and restarts it at each selector onset.

note("0 1".pickRestart(["60 64", "67 72"]))
Open in /code

.ply(n)

Repeats every event n times within its own length.

s("bd ~ sd cp").ply(2)
Open in /code

.postgain(value)

Volume after the effects.

s("bd").postgain(0.8)
Open in /code

.prelease(value)

Pitch envelope release in seconds.

note("c3").penv(12).prelease(0.3)
Open in /code

.psustain(value)

Pitch envelope sustain level, 0..1.

note("c3").penv(12).pdecay(0.1).psustain(0.5)
Open in /code

.range(min, max)

Maps a 0..1 signal to min..max.

s("hh*8").lpf(sine.range(300, 3000))
Open in /code

.range2(min, max)

Maps a -1..1 signal to min..max.

note("c*4").pan(sine2.range2(0, 1))
Open in /code

.rangex(min, max)

Like .range() on an exponential curve (good for frequencies).

s("hh*8").lpf(saw.rangex(200, 4000))
Open in /code

.rarely(f)

Applies f to about 25% of the events.

note("c*8").rarely(x => x.add(7))
Open in /code

.release(value)

Envelope release time in seconds.

note("c e").s("sawtooth").release(0.5)
Open in /code

.rev()

Plays each cycle backwards.

note("c d e g").rev()
Open in /code

.room(value)

Reverb amount, 0..1 ("0.5:3" also sets size).

s("cp").room(0.5)
Open in /code

.rootNotes(octave = 2)

Plays each chord root in the requested scientific octave.

chord("C Am F G").rootNotes(2)
Open in /code

.scale(name)

Turns n degrees into notes of a scale like "C:minor" (root in octave 3).

n("0 2 4 6").scale("<C:major A:minor>")
Open in /code

.scrub(positions)

Starts the sample at each position (0..1); "position:speed" sets the speed too.

s("bd").scrub("0 0.5:2 0.25")
Open in /code

.segment(n)

Samples the pattern n times per cycle (turns signals into notes).

n(saw.range(0, 7).segment(8)).scale("C:major")
Open in /code

.set(pattern)

Merges values from another pattern while retaining this pattern rhythm.

n("0 1 2 3").set(chord("<C Am>")).voicing()
Open in /code

.shape(value)

Waveshaping drive, 0..1.

s("bd*4").shape(0.4)
Open in /code

.size(value)

Reverb room size.

s("cp").room(0.5).size(4)
Open in /code

.slice(count, indices)

Plays slice i of count equal slices of the sample for each index event (or a list of 0..1 cut points).

s("bd").slice(4, "0 2 1 3")
Open in /code

.slow(factor)

Stretches the pattern over more cycles.

note("c e g b").slow(2)
Open in /code

.someCycles(f)

Applies f to about half of the cycles.

s("bd*4").someCycles(x => x.fast(2))
Open in /code

.someCyclesBy(p, f)

Applies f to whole cycles with probability p.

s("bd*4").someCyclesBy(0.3, x => x.fast(2))
Open in /code

.sometimes(f)

Applies f to about half of the events.

s("hh*8").sometimes(x => x.gain(0.5))
Open in /code

.sometimesBy(p, f)

Applies f to events with probability p.

note("c*8").sometimesBy(0.3, x => x.add(12))
Open in /code

.speed(value)

Sample playback speed; 2 is an octave up, negative plays backwards.

s("bd*4").speed("1 2 -1 0.5")
Open in /code

.splice(count, indices)

Like slice, with each slice sped up or slowed down to fill its event.

s("bd").splice(4, "0 2 1 3")
Open in /code

.striate(parts)

Plays the pattern parts times per cycle, a further part of each sample each time.

s("bd sd").striate(4)
Open in /code

.struct(pattern)

Plays the values on the rhythm of a pattern of x / ~.

note("c,e,g").struct("x ~ x x")
Open in /code

.stut(times, feedback, time)

Like .echo() with the last two arguments swapped.

s("bd sd").stut(3, 0.7, 1/8)
Open in /code

.sub(x)

Subtracts from every value.

n("7 5 3".sub(1)).scale("C:minor")
Open in /code

.superimpose(f)

Adds f of the pattern on top of the original.

note("c e g").superimpose(x => x.add(12))
Open in /code

.sustain(value)

Envelope sustain level, 0..1.

note("c e").s("square").sustain(0.3)
Open in /code

.swingBy(amount, slices)

Splits each cycle into slices and delays events in the second half of each slice (0 = straight, 1/3 = triplet swing).

s("hh*8").swingBy(1/3, 4)
Open in /code

.transpose(semitones)

Moves notes up or down by semitones.

note("c e g").transpose("<0 5>")
Open in /code

.undegrade()

Keeps exactly the events .degrade() drops.

s("hh*8").undegrade()
Open in /code

.undegradeBy(amount)

Keeps exactly the events .degradeBy(amount) drops.

s("hh*8").undegradeBy(0.3)
Open in /code

.unison(value)

Number of unison voices (supersaw).

note("c3 e3").s("supersaw").unison(5)
Open in /code

.unit(value)

With "c", speed counts whole samples per cycle (as loopAt and fit set it).

s("bd").speed(0.5).unit("c")
Open in /code

.velocity(value)

Note velocity, 0..1.

note("c e g").velocity("<1 0.5>")
Open in /code

.vib(value)

Vibrato rate in Hz ("5:0.5" also sets its depth).

note("a e").vib(5)
Open in /code

.vibmod(value)

Vibrato depth in semitones.

note("a e").vib(5).vibmod(0.3)
Open in /code

.voicing()

Turns chord symbols into pitched voicings, or indexes them with n.

n("0 1 2 3").chord("<C Am F G>").voicing()
Open in /code

.voicings(dictionary?)

Voicing with an optional dictionary (legacy spelling).

"C7 G7".voicings("lefthand").note()
Open in /code

.vowel(value)

Formant filter: a, e, i, o or u.

note("c2*4").s("sawtooth").vowel("<a e i o>")
Open in /code

Signals

cosine

Sine shifted a quarter cycle: starts at 1.

note("c*8").pan(cosine)
Open in /code

cosine2

Cosine from -1 to 1.

note("c*4").pan(cosine2.range2(0, 1))
Open in /code

isaw

Ramp from 1 down to 0 every cycle.

s("hh*8").gain(isaw)
Open in /code

isaw2

Falling saw from -1 to 1.

note("c*4").pan(isaw2.range2(0, 1))
Open in /code

perlin

Smooth random values from 0 to 1.

s("hh*8").lpf(perlin.range(500, 4000))
Open in /code

rand

Random values from 0 to 1 (seeded, repeatable).

s("hh*8").gain(rand.range(0.4, 1))
Open in /code

rand2

Random values from -1 to 1.

note("c*4").pan(rand2.range2(0, 1))
Open in /code

saw

Ramp from 0 up to 1 every cycle.

n(saw.range(0, 7).segment(8)).scale("C:major")
Open in /code

saw2

Saw from -1 to 1.

note("c*4").pan(saw2.range2(0, 1))
Open in /code

sine

Smooth wave from 0 to 1, starting at 0.5.

note("c*8").lpf(sine.range(300, 2000))
Open in /code

sine2

Sine from -1 to 1.

note("c*4").add(sine2.range2(0, 12).segment(4))
Open in /code

square

0 for the first half of the cycle, 1 for the second.

s("hh*8").gain(square.range(0.3, 1))
Open in /code

square2

Square from -1 to 1.

note("c*4").pan(square2.range2(0, 1))
Open in /code

tri

Up from 0 to 1 and back in each cycle.

note("c*8").pan(tri)
Open in /code

tri2

Triangle from -1 to 1.

note("c*4").pan(tri2.range2(0, 1))
Open in /code

Other names for the same thing

  • att: Same as .attack().
  • bandf: Same as .bpf().
  • bandq: Same as .bpq().
  • bp: Same as .bpf().
  • ctf: Same as .lpf().
  • cutoff: Same as .lpf().
  • dec: Same as .decay().
  • delayfb: Same as .delayfeedback().
  • delayt: Same as .delaytime().
  • density: Same as .fast().
  • dfb: Same as .delayfeedback().
  • dist: Same as .distort().
  • dt: Same as .delaytime().
  • echowith: Same as .echoWith().
  • fastcat: Same as seq().
  • firstof: Same as .firstOf().
  • fmatt: Same as .fmattack().
  • fmdec: Same as .fmdecay().
  • fmi: Same as .fm().
  • fmsus: Same as .fmsustain().
  • hcutoff: Same as .hpf().
  • hp: Same as .hpf().
  • hresonance: Same as .hpq().
  • iterback: Same as .iterBack().
  • lastof: Same as .lastOf().
  • legato: Same as .clip().
  • lp: Same as .lpf().
  • lpa: Same as .lpattack().
  • lpd: Same as .lpdecay().
  • lpe: Same as .lpenv().
  • lpr: Same as .lprelease().
  • lps: Same as .lpsustain().
  • patt: Same as .pattack().
  • pdec: Same as .pdecay().
  • ph: Same as .phaser().
  • phasdp: Same as .phaserdepth().
  • phc: Same as .phasercenter().
  • phd: Same as .phaserdepth().
  • pickSqueeze: Same as inhabit.
  • prel: Same as .prelease().
  • randcat: Same as chooseCycles().
  • rel: Same as .release().
  • resonance: Same as .lpq().
  • roomsize: Same as .size().
  • seg: Same as .segment().
  • sequence: Same as seq().
  • slowcat: Same as cat().
  • sound: Same as s().
  • sparsity: Same as .slow().
  • stepcat: Same as timeCat().
  • stutwith: Same as .echoWith().
  • stutWith: Same as .echoWith().
  • sus: Same as .sustain().
  • swing: Same as .swingBy(1/3, slices).
  • sz: Same as .size().
  • timecat: Same as timeCat().
  • v: Same as .vib().
  • vel: Same as .velocity().
  • vibrato: Same as .vib().
  • vmod: Same as .vibmod().
  • withValue: Same as fmap: maps raw values, not the pattern itself.

Accepted for Strudel compatibility

These names are accepted so that Strudel code runs, but they do not change what TuttiDAW plays yet (the diagnostics say so): _pianoroll, _punchcard, _scope, _spectrum, _spiral, accelerate, amp, analyze, bpenv, channel, color, colour, djf, dry, fanchor, fmenv, freq, ftype, hpattack, hpdecay, hpenv, hprelease, hpsustain, id, ir, iresponse, kcutoff, krush, leslie, log, loop, markcss, noise, orbit, panchor, pcurve, phasersweep, pianoroll, punchcard, scope, spectrum, spiral, spread, squiz, tag, tremolo, tremolodepth.