# FaustWave > FaustWave is a code-first sound design IDE built on Faust, the functional DSP language from GRAME. Instruments are node graphs (the Builder) or hand-written Faust (.dsp) that compile to WebAssembly and run live; around them sit a multi-track sequencer, mixer with master FX, patchbay routing, a recorder, a community Hub, and an AI assistant with full read/write access to the IDE. Every UI gesture is an action in one registry, exposed over MCP (Model Context Protocol), so anything a user can do an agent can do. Runs as a desktop app (Windows, macOS, Linux) and in the browser at https://faustwave.io/ide/. The documentation below is the complete set of FaustWave books (15 books). Each link is the chapter as plain markdown; the same chapter as a web page is at the URL without `.md`. Boxes marked "🔘 MCP" name the exact action behind a UI gesture. All chapters in one file: https://faustwave.io/llms-full.txt ## Start here - [Getting Started: What is FaustWave?](https://faustwave.io/docs/getting-started/what-is-faustwave.md): FaustWave is a code-first sound design IDE built on top of Faust, the high-level DSP language from GRAME. It's a desktop app you run… - [Getting Started: Meet the workspace (2 minutes)](https://faustwave.io/docs/getting-started/meet-the-workspace.md): Every button in this chapter opens the surface it describes, live — click it, look at what appeared, read the two sentences, move on.… - [Getting Started: Your first instrument (5 minutes)](https://faustwave.io/docs/getting-started/your-first-instrument.md): By the end of this chapter you'll hear a sine wave you wrote by wiring two nodes. That's intentionally trivial — the same workflow scales… - [Getting Started: Your first pattern (10 minutes)](https://faustwave.io/docs/getting-started/your-first-pattern.md): You have a sine wave DSP from § Your first DSP. It plays a steady 440 Hz tone. In this chapter we'll make it MIDI-responsive, then drive… - [Getting Started: Your first recording (5 minutes)](https://faustwave.io/docs/getting-started/your-first-recording.md): You have a sequencer pattern driving your Builder (§ Your first pattern). Now capture it to a WAV file you can share, archive, or… ## Build sound - [Builder: The Builder in depth](https://faustwave.io/docs/builder/builder.md): The Builder is FaustWave's visual graph editor. You build node graphs; the Builder generates Faust source from them in real time, compiles… - [Builder: Two ways to build a DSP — Builder vs .dsp, version control, sharing](https://faustwave.io/docs/builder/building-a-dsp.md): A DSP is the thing that makes sound: a compiled Faust worklet, running. Two kinds of document produce one, and FaustWave keeps them apart… - [Builder: Loading samples](https://faustwave.io/docs/builder/loading-samples.md): You have an audio file (a kick drum, a vocal phrase, a synth bounce) and you want to use it in a Builder — in a soundfile node, in a… - [Faust DSP (.dsp): Faust DSP: the second abstraction](https://faustwave.io/docs/faust-dsp/what-is-a-faust-dsp.md): FaustWave gives you two ways to build sound, and both end in the same place: a DSP — a compiled Faust worklet, running. The Builder is the… - [Faust DSP (.dsp): Anatomy of a DSP — and your first one](https://faustwave.io/docs/faust-dsp/anatomy-and-first-dsp.md): A minimal generator DSP is three lines: - [Faust DSP (.dsp): MIDI & polyphony: nvoices and the magic sliders](https://faustwave.io/docs/faust-dsp/midi-and-polyphony.md): A mono DSP ignores note events. To make a .dsp a playable instrument, declare polyphony in the source — the source is the single source of… - [Faust DSP (.dsp): The MIDI channel filter: one sequencer, many instruments](https://faustwave.io/docs/faust-dsp/midi-channel-filter.md): By default a .dsp is Omni — it reacts to notes on every MIDI channel. That's fine for one instrument; with several DSPs on the bus, every… - [Faust DSP (.dsp): Transport, Run/Stop and file lifecycle](https://faustwave.io/docs/faust-dsp/transport-and-lifecycle.md): Opting out is source-driven, like everything else about a DSP: - [Faust DSP (.dsp): Hearing is proof: testing sound without fooling yourself](https://faustwave.io/docs/faust-dsp/hearing-is-proof.md): "It compiles and runs" is not the same as "it makes sound". FaustWave's house rule — for humans AND the assistant — is hearing is the… - [Faust DSP (.dsp): Live params, modulation and observability](https://faustwave.io/docs/faust-dsp/live-params-and-modulation.md): Every Faust UI element in your source is live twice over: as a knob in the module panel, and as a param path for actions. - [Faust DSP (.dsp): Sharing your work: from assets/ to the Hub](https://faustwave.io/docs/faust-dsp/sharing-and-hub.md): A .dsp is a text file, which makes it the most shareable artifact in FaustWave. - [Node-Pack Authoring: Authoring a node-pack](https://faustwave.io/docs/node-pack-authoring/overview.md): A node-pack is a JSON manifest (.nodepack.json) shipping a set of Builder node-kinds. Install via the Hub (hub.install kind:"node-pack")… - [Node-Pack Authoring: The Box-DSL — toBox syntax](https://faustwave.io/docs/node-pack-authoring/box-dsl.md): The Box-DSL is a tiny declarative expression language pack authors write inside toBox.outputs[port] (and optionally toBox.defs[name])… - [Node-Pack Authoring: Per-kind imports + paired-port stereo](https://faustwave.io/docs/node-pack-authoring/imports-and-paired-port.md): Two declarative metadata fields on a kind extend toBox with the surrounding-environment bookkeeping the generator needs: - [Node-Pack Authoring: Sound-Quality Conventions for pack authors](https://faustwave.io/docs/node-pack-authoring/sound-quality-conventions.md): The Sound-Quality Conventions Welle (PR #196, v0.51.0) shipped a set of orthogonal Faust DSP conventions: param-level smoothing,… - [Node-Pack Authoring: Publishing a node-pack](https://faustwave.io/docs/node-pack-authoring/publishing.md): Once your .nodepack.json validates locally (every kind shows in the picker + compiles cleanly), publish to the Hub for others to install.… ## Play & arrange - [Sequencer: The grid + the master clock](https://faustwave.io/docs/sequencer/sequencer.md): The Sequencer is a multi-track step grid — piano-roll horizontally, one row per pitch, one column per step — driven by a shared Faust… - [Sequencer: Composing on the grid](https://faustwave.io/docs/sequencer/composing-patterns.md): You have a grid, a key, a clock. Time to fill it with notes. The Sequencer's edit surface has two tools (Paint and Select), per-step… - [Sequencer: Patterns + scenes — the live-arrangement model](https://faustwave.io/docs/sequencer/patterns-and-scenes.md): Everything you've done so far in the grid lives in ONE pattern per track. The pattern model lets each track carry up to 8 patterns… - [Sequencer: Scripting the Sequencer via MCP](https://faustwave.io/docs/sequencer/scripting-via-mcp.md): The full Sequencer surface is MCP-callable — every UI gesture has an action behind it, plus a few that only show up here (sequencer.state,… - [Keyboard: The Keyboard](https://faustwave.io/docs/keyboard/keyboard.md): The Keyboard is FaustWave's virtual MIDI input — a clickable on-screen keyboard registered as a routing-table source (keyboard-default).… - [Pads: Pads — the composable controller surface](https://faustwave.io/docs/pads/pads.md): The Pads panel is an on-screen MIDI controller you can compose yourself: a list of widgets — pads, knobs, faders, buttons — each with its… - [Modulation & Live Control: A modulator is a file](https://faustwave.io/docs/modulation-live/modulators-are-files.md): FaustWave has no "LFO feature". A modulator is an ordinary .dsp document with a bargraph tagged [modout]; while it runs, that output is a… - [Modulation & Live Control: The three writes, and what an amount means](https://faustwave.io/docs/modulation-live/three-writes-and-amounts.md): A parameter that is modulated has three values that look like one knob, and FaustWave gives each its own verb. Getting this wrong is the… - [Modulation & Live Control: Controller bindings, pads, and live effects](https://faustwave.io/docs/modulation-live/controller-bindings-and-live-fx.md): Modulation moves a parameter from inside the machine. A controller binding moves it from a hand — a pad, a knob, a hardware controller —… ## Mix, route & record - [Mixer & Master: Mixer tracks](https://faustwave.io/docs/mixer-master/mixer-and-master.md): The Mixer is the strip section of the right-side Master Control panel. One MixerTrack per channel — gain / mute / solo / sends + its own… - [Mixer & Master: The Master FX rack](https://faustwave.io/docs/mixer-master/master-fx.md): The Master Control panel's middle section is the FX rack — a chain of effect slots applied to the summed master bus. Each slot is a Faust… - [Mixer & Master: Master volume, meter, softclip](https://faustwave.io/docs/mixer-master/master-volume-meter.md): The bottom of the Master Control panel is the final stage: the master volume (last gain before the output device), the stereo peak meter,… - [Patchbay & Routing: The routing model](https://faustwave.io/docs/patchbay/routing-model.md): FaustWave's audio + MIDI topology is a single declarative routing table, JACK-style. Every signal-producing entity is a Source, every… - [Patchbay & Routing: The Patchbay matrix](https://faustwave.io/docs/patchbay/matrix-editor.md): The routing table from § 1 has a UI: the Patchbay rail panel renders the routing table as a JACK-style Sources × Sinks matrix. One row per… - [Patchbay & Routing: Cable kinds: audio, MIDI, modulation](https://faustwave.io/docs/patchbay/cable-kinds.md): The routing table carries three kinds of cable. They share the same from / to / id shape but their per-cable controls and their behaviour… - [Patchbay & Routing: Scripting routing via MCP](https://faustwave.io/docs/patchbay/scripting-via-mcp.md): Every click in the matrix routes through an action. Every action is also MCP-callable. So the assistant (or a headless MCP client like… - [Patchbay & Routing: External clock sync & controller actions](https://faustwave.io/docs/patchbay/external-clock-sync.md): FaustWave can follow an external MIDI clock — a hardware sequencer, groovebox, or another DAW acts as the tempo master, and FaustWave's… - [Patchbay & Routing: MIDI Monitor — see every byte on the bus](https://faustwave.io/docs/patchbay/midi-monitor.md): The MIDI Devices panel has a MONITOR section: a live, decoded tail of every MIDI message crossing the bus — hardware inputs and internal… - [Recorder: The Recorder — the tap, the file, the library](https://faustwave.io/docs/recorder/recorder.md): The Recorder taps the master output and writes it to a lossless WAV file. One button to start, one button to stop. It's how you capture… - [Recorder: Workflows + scripting](https://faustwave.io/docs/recorder/workflows-and-scripting.md): You know what the Recorder is and what it writes. Time for the real-world flows: the 30-second take, the DSP → sample round-trip,… - [Analysis: Measure, don't guess](https://faustwave.io/docs/analysis/measure-dont-guess.md): Every sound decision in FaustWave can be a number before it is an opinion. The Analysis tools record what reaches the master, or read a… - [Analysis: Reading the report](https://faustwave.io/docs/analysis/the-report.md): One report, seven blocks. The numbers below are from a real capture of the Around-the-World PARTY scene, four bars, so you can see what a… - [Analysis: The live node, and three workflows](https://faustwave.io/docs/analysis/live-node-and-workflows.md): Offline is for decisions; live is for watching. The Bass Analyzer node (analysisbass, category Analyzers) is a stereo passthrough with… ## Share & automate - [Hub: The Hub model — items, kinds, versions](https://faustwave.io/docs/hub/hub.md): The Hub is FaustWave's community-publishing surface. You publish DSPs, sample packs, knowledge packs, full projects. Other users install… - [Hub: Browsing + installing](https://faustwave.io/docs/hub/browsing-and-installing.md): The Hub tab is the entry point for finding + installing other people's work. Search, filter by kind, open an item card, hit install. The… - [Hub: Publishing + iterating](https://faustwave.io/docs/hub/publishing-and-iterating.md): You have an instrument, a sample, a knowledge bundle, a full project. You want to share it. This section covers the publish flow, version… - [AI Assistant: The AI Assistant](https://faustwave.io/docs/ai-assistant/assistant.md): FaustWave ships an in-app AI assistant pane with full read + write access to the IDE. It's not a chat sandbox — when you ask it to add a… - [AI Assistant: The Command Palette](https://faustwave.io/docs/ai-assistant/palette.md): The Command Palette is the human-facing surface to the same action registry that powers § 1 (the AI Assistant) and § 3 (the MCP server).… - [AI Assistant: MCP — driving FaustWave from external clients](https://faustwave.io/docs/ai-assistant/mcp.md): The Model Context Protocol (MCP) is the open standard for "LLMs talking to applications." FaustWave exposes its action registry as an MCP… - [Reference: Keyboard shortcuts](https://faustwave.io/docs/reference/keyboard-shortcuts.md): The shortcut table here covers the high-frequency stuff; the full catalogue lives in the codebase + may evolve. Use the Command Palette… - [Reference: MCP actions — full catalog](https://faustwave.io/docs/reference/mcp-actions.md): The live catalog is always one MCP call away, and the codebase is the source of truth. This section explains how to navigate it, not… - [Reference: File formats](https://faustwave.io/docs/reference/file-formats.md): Every file format FaustWave reads, writes, or distributes — in one place. - [Reference: Themes](https://faustwave.io/docs/reference/themes.md): FaustWave ships four theme modes: Dark, Light, Cyberpunk, Auto. Switch via Settings → Appearance, via the Command Palette (Theme: Dark /… ## Optional - [FaustWave website](https://faustwave.io/): download, feature overview, showcase projects - [Faust language](https://faust.grame.fr/): the DSP language FaustWave compiles - [Faust libraries](https://faustlibraries.grame.fr/): standard library reference Text: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/), Mani Weber / FaustWave.