All books

Transport, Run/Stop and file lifecycle

~1 min read · updated 2026-08-25 · markdown

Every generator-shaped .dsp follows the global transport by default. Master-Control Play starts its engine, Stop stops it — exactly like a Builder. This is usually what you want: press Play, the whole rig comes up.

Opting out is source-driven, like everything else about a DSP:

declare options "[transport:off]";

The footer Link-toggle and dsp.transport.follow.set { module_id, enabled } edit that token for you. A DSP with the token runs independently — drive it via its own Run button or dsp.run, and a global Stop leaves it playing.

Nuances worth knowing:

  • Modules opened after the transport already started do not auto-join — deliberate "open a tab to inspect, not to interrupt" behavior. Hit Run yourself or cycle the transport.
  • dsp.run on an already-running DSP recompiles cleanly — it stops the prior worklet first. Use it as the "apply my edits" verb.
  • A follow-run that errors blocks re-runs until the source changes — no repeated error banners on every Play for a broken DSP.
  • FX-shape sources never auto-start regardless of the flag (they can't run standalone at all).

Files, autosave, projects

A .dsp module created via documents.add IS a project file from birth — assets/<title>.dsp, autosaved on every edit, restored with the project. documents.save { module_id } forces a write (or writes to an explicit path); project.file.rename renames it. A project export (project.export → .fwproject.zip) bundles every DSP with the project's project.json, so mixer strips, routings and sequencer content travel together.

Try it yourself — the IDE runs in your browser. Open the IDE → Get the desktop app

Text licensed under CC BY 4.0 — Mani Weber / FaustWave. For language models: llms.txt · llms-full.txt

AUDIO · 48k · 48.0ms FAUST · 3 KB · 1171 docs CPU · 8.4% BPM · 120.0 UTF-8 BETA· v0.90.0