38 interactive sound-design demonstrations based on the procedural audio techniques from Andy Farnell's Designing Sound (MIT Press, 2010). Every demo is a self-contained HTML page running Faust DSP compiled to WebAssembly — no server, no samples, no external dependencies. Pure procedural audio, in your browser.
The hub index — 38 demonstrations organized by section, each linking to a self-contained interactive page.
| Part | Section | Demonstrations |
|---|---|---|
| I | Theory & Synthesis Techniques | Additive Synthesis, Wavetable Synthesis, Waveshaping, AM/FM Synthesis, Granular Synthesis |
| II | Fundamental DSP Concepts | Aliasing, Bitcrushing, Masking, Doppler Effect, Room Modes, Consonance |
| III | Envelopes & Modulation | ADSR Envelope, Pulse Code Modulation, Cascade PM |
| IV | Artificial & Electronic | Pedestrian Crossing, Telephone Ringing, DTMF Dial Tones, Alarm Bells |
| IV | Objects & Materials | Bouncing Ball, Rolling, Creaking Door, Toys, Utensils, Impacts, Breaking Glass, Scraping & Grinding |
| IV | Nature | Fire & Crackling, Water & Bubbles, Rain, Wind |
| IV | Machines | Motors, Cars, Fans, Jet Engine, Helicopter |
| IV | Lifeforms & Mayhem | Footsteps, Gunshot, Explosion |
Each demo is a single page with:
- Slider controls for real-time parameter adjustment (frequency, rate, gain, spread, etc.)
- Start button to activate the Faust WASM audio engine
- Live DSP source display with copy-to-clipboard
The Impacts demo — pitch, hardness, and rate sliders controlling a triggered resonant bandpass impact model, with full Faust source below.
Granular Synthesis — four overlapping grain streams controlled by frequency, rate, duration, spread, and gain parameters.
No build required for deployment — all deploy directories are pre-built, self-contained HTML+WASM pages.
# Clone the repo
git clone https://github.com/materializepath/designing-sound-experiments.git
cd designing-sound-experiments
# Serve locally (Python or any static server)
python3 -m http.server 8000 --directory deploy-hub
# Open http://localhost:8000 in your browserOr serve any individual demo:
python3 -m http.server 8000 --directory deploy-impactsIf you have the Faust compiler installed, you can rebuild the WASM modules:
# Build a single demo
faust -lang wasm -ct 1 -o deploy-my-demo/module.wasm dsp/my-demo.dsp
# Or use a build script
./build-single.sh dsp/impacts.dsp deploy-impacts/module.wasmPrerequisites:
- Faust compiler (v2.60+ recommended)
- Python 3 (for page generation scripts)
- Basic familiarity with Faust DSP language
The gen_pages.py script auto-generates individual HTML pages from a template for the machine/lifeform demos:
python3 gen_pages.pyThis reads .dsp source, .dsp.json UI metadata, and the compiled .wasm binary for each demo, then produces a standalone HTML page with:
- Correct slider definitions and parameter ranges
- Base64-encoded WASM fallback (future use)
- Full DSP source code embedded
designing-sound-experiments/
├── dsp/ # Faust DSP source files (.dsp + .dsp.json metadata)
├── deploy-hub/ # Main index page (hub/index of all demos)
├── deploy-*/ # Pre-built demo directories (index.html + .wasm)
├── boilerplate/ # Template HTML for new demos
├── assets/ # Screenshots and media
│ └── screenshots/
├── gen_pages.py # Auto-generates HTML pages from DSP source
├── generate_pages.py # Legacy page generator
├── deploy-demo.sh # DreamHost deployment script
├── docs/ # Documentation
│ ├── ARCHITECTURE.md
│ ├── BUILD.md
│ ├── DEMO_CATALOG.md
│ ├── DSP_REFERENCE.md
│ └── PLANNING.md
├── AGENTS.md # AI agent context
├── CLAUDE.md # Claude-specific instructions
├── CONTRIBUTING.md
└── LICENSE
- Faust DSP — Domain-specific language for real-time audio synthesis and processing
- WebAssembly — Faust compiles directly to WASM for in-browser execution
- Web Audio API —
AudioContext+ScriptProcessorNodefor real-time audio output - Vanilla HTML/CSS/JS — No frameworks, no build step for the deployed demos
Faust's -lang wasm -ct 1 compiler mode produces extremely compact WebAssembly modules (typically 3–12 KB) with deterministic real-time performance. Each demo is a single <canvas>-free HTML file that works offline and requires nothing but a modern browser. The DSP source is displayed and copyable on every page — the code is the documentation.
The project includes a deployment script for DreamHost (or any rsync target):
./deploy-demo.sh deploy-additive additive-synthesisThis pushes the demo directory to a remote host. The hub is available at:
https://mcv09.materialize.fun/
- Andy Farnell — Designing Sound (MIT Press, 2010). The foundational text on procedural audio that inspired every demo in this collection.
- GRAME — The Faust team for creating an extraordinary DSP compilation framework.
- MIT Press — For publishing and supporting open-access models for technical knowledge.
MIT — see LICENSE. The Faust DSP code, HTML pages, and build scripts in this repository are freely available for use, modification, and distribution.


