TuttiDAW Musik mit CodeTuttiDAW Code guide

Sounds

Drum kits and banks, synth waveforms, General MIDI instrument names, Ensemble sounds and your own samples.

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

A voice's sound decides which TuttiDAW instrument plays it. You can name sounds the Strudel way with s(...), or load any TuttiDAW instrument by name with .inst(...) (next chapters).

Drum kits

Drum names (bd sd rim cp hh oh cr rd ht mt lt sh cb) play the pads of a Drum Rack. Without a bank the voice uses the 808 Core Kit; .bank(...) chooses another factory kit by its machine (tr909, tr707, tr606, tr505, linn, dmx, cr78).

setcpm(30)
kit: s("bd [~ bd] sd ~, [~ hh]*4, ~ ~ ~ oh").bank("tr909")
Open in /code

Strudel's banked names such as RolandTR909_bd are read as that drum. A number after a colon (bd:2) or .n(...) picks another variant of the same drum where the kit has one.

Synth waveforms

sine, triangle, square and sawtooth (short: sin, tri, sqr, saw) play on a TuttiDAW synth whose envelope is set to match Strudel's built-in synth. supersaw is a detuned stack of saws.

note("c2 [~ c2] eb2 [g1 bb1]").s("sawtooth").lpf(700)
Open in /code
note("<[c3,eb3,g3] [ab2,c3,eb3]>").s("supersaw").gain(0.6)
Open in /code

Instrument names

piano plays TuttiDAW's sampled grand piano. General MIDI names in Strudel's gm_ style play the closest TuttiDAW instrument: for example gm_piano, gm_epiano1, gm_acoustic_bass, gm_violin, gm_vibraphone, gm_flute, gm_pad_warm, and the Asian instruments gm_koto, gm_dulcimer and gm_shakuhachi.

setcpm(22)
koto: n("0 2 4 <7 5> 4 2").scale("D:minor:pentatonic").s("gm_koto")
bass: note("<d2 a1 bb1 c2>").s("gm_acoustic_bass")
Open in /code

A name TuttiDAW does not know still plays: drum-like names fall back to a drum pad, everything else to a synth, with a warning in the diagnostics.

Ensemble sounds

Ensemble is TuttiDAW's multi-engine sound module (Physical, Sample, Duo, FM6 and more). Its factory sounds are named <Engine> <SOUND>, for example Physical PLUCK or Sample FLUTE, and are loaded with .inst:

setcpm(24)
pluck: n("0 2 4 6 4 2").scale("E:minor").inst("Ensemble:Physical PLUCK")
flute: note("<b4 a4 g4 e4>").inst("Ensemble:Sample FLUTE")
Open in /code

Ensemble parts play inside an Ensemble Set with its own chorus, delay and reverb. On the /code page up to four Ensemble voices share one Set; Open in TuttiDAW builds the same Set in your project. The device catalogue lists every Ensemble sound.

Your own samples

samples(...) declares audio files hosted on the web (HTTPS). The names you declare then work in s(...) like the built-in ones. A github:user/repo shortcut reads the strudel.json sample map at the root of that repository.

samples({ stab: "https://example.com/sounds/stab.wav" })
s("stab ~ stab [~ stab]")
Open in /code

What TuttiDAW does with them:

  • Nothing is downloaded until you ask. The /code page loads new samples only when you press Play or Evaluate yourself; typing never starts a download, and Muse's edits never do either.
  • Files are fetched by your browser from where they are hosted, kept in memory for the session, and never uploaded to TuttiDAW. A saved project stores the links, not the audio.
  • Limits keep pages safe: at most 8 MB per file, 32 MB in total, 10 seconds per download, mono or stereo audio up to 120 seconds.
  • If a file cannot load, the voice plays a built-in sound and the diagnostics say which file failed.

Only use samples you are allowed to use; TuttiDAW plays them from their host and does not check their licence.