Description #
Faust (Functional Audio Stream) is a compiled functional programming language for designing real-time audio signal processing applications. It’s built specifically for audio engineers and developers, focusing on synthesizers, effects, and audio plugins.
History #
Faust was developed in the early 2000s by Yann Orlarey, Dominique Fober, and Stéphane Letz at GRAME (France). It was designed to combine the high-level abstraction of functional programming with the performance needs of real-time audio processing. Its compiler generates highly optimized C++, LLVM IR, WebAssembly, and other targets.
Hello World Code #
process = "Hello, World!";
Note: This doesn’t produce audio — it’s illustrative. Faust is typically used to define signal processing pipelines, not text output.
How to Run #
Option 1: Online
https://faustide.grame.fr
Option 2: Local
- Install Faust from https://faust.grame.fr/download
- Compile to C++:
faust -a minimal.cpp -o myeffect.cpp myeffect.dsp
Key Concepts #
- Syntax style: Functional DSL using math-like notation
- Typing discipline: Strong static typing
- Execution model: Compiled to DSP-ready native code
- Common use cases: Audio plugins (VST, AU), standalone synths, embedded DSP
- Toolchain or ecosystem: Faust compiler, online IDE, integration with JUCE
- Paradigms supported: Purely functional, stream-based
- Compilation details: Faust → C++/WASM/LLVM IR → Binary
- Strengths or quirks: Mathematical syntax, block-diagram composition, ultra-low latency
- Libraries/frameworks: DSP standard library, integration with Max/MSP, Pure Data
- Community/adoption: Niche but popular in audio DSP circles and research labs
Try It Online #
Fun Facts #
Faust programs can be compiled directly to native audio plugins (VST, AU) or embedded targets like Teensy boards. The language uses arrows and composition operators (:
and ~
) to represent audio routing in a visual, functional way.