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. The language works well with physical models and features many components for different physical approaches.
Tools for Working with Faust
Faust offers a large toolbox for different levels of expertise. Downloads are found here:
The Faust IDE is the fastest way to develop and test .dsp code: https://faustide.grame.fr/
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:
- faust2alsaconsole : ALSA command line program
- faust2alqt : ALSA application with Qt UI
- faust2alsa : ALSA application with GTK UI
- 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
- 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
- faust2esp32 : ESP32 board
faust2juce : JUCE Procects
... and more ...
Compiling the first example as a PD external would be:
$ faust2puredata sine.dsp
FaustWorks is an integrated development environment for Faust. It includes an editor and manages compilation. However, the software has not been maintained in a while.
Faust comes with a large set of libraries: Faust Library Website
They can be included individually with the import(delays.lib) command. Most examples in this class import all standard libraries with the import("stdfaust.lib"); command.