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. 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:
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 compilation. However, the software has not been maintained in a while.
Faust Libraries
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.