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.