Faust: Quick Introduction
Faust is a functional audio programming language, developed at GRAME, Lyon. It is a community-driven, free open source project. Faust is specifically suited for quickly designing musical synthesis and processing software and compiling it for a large variety of targets.
Tools for Working with Faust
Working with Faust offers a large toolbox. Downloads are found here:
https://faust.grame.fr/downloads/index.html
Faust IDE
The Faust IDE is the fastest way to develop and test .dsp code: https://faustide.grame.fr/
Faust Compiler
The Faust compiler is the center-piece of the Faust development tools. Faust code is written in *.dsp files, which are converted to C++ code and then compiled for the desired system. The Faust compiler can be called directly from the command line or by other programs, such as the IDE FaustWorks. When called from the command line, Faust is compiled to the desired target using a faust2* command, which actually calls a build script.
Depending on your operating system and build target, additional libraries or tools may be required. Targets of interest can be:
Linux
- faust2alsaconsole : ALSA command line program
- faust2alqt : ALSA application with Qt UI
- faust2alsa : ALSA application with GTK UI
Plugins
- faust2ladspa : LADSPA plug-in
- faust2lv2 : LV2 plug-in
- faust2faustvst : VST plug-in
- faust2au : Audio Unit plugin
Music Programming Environments
- faust2supercollider : SuperCollider external
- faust2puredata : PureData external
- faust2max6 : MaxMSP 6 (and later) external and patch
- faust2csound : CSOUND Opcode
Jack
- faust2jackconsole : JACK command line program
- faust2jack : JACK application with GTK UI
- faust2jaqt : JACK application with Qt UI
MAC / IOS
- faust2ios : iOS app
- faust2caqt : CoreAudio application with Qt UI
- faust2caqtios : iOS app with Qt UI
PI $ Co
- faust2rpialsaconsole : Raspberry Pi ALSA command line program
- faust2bela : BELA program
Microcontroller
- faust2esp32 : ESP32 board
- faust2teensy
JUCE
-
faust2juce : JUCE Procects
-
faust2unity
... and more ...
Compiling the first example as a PD external would be:
$ faust2puredata sine.dsp
FaustWorks
FaustWorks is an integrated development environment for Faust. It includes an editor and manages complilation.
Online Editor
First steps and small programs can be experienced using the online editor for Faust: