The FAUST programming language1 by Yann Orlarey et al. at Grame [3,7,8,4] generates C++ for real-time signal-processing applications and plugins from a high-level specification. In addition to generating efficient inner loops in C++, FAUST supports Graphical User Interface (GUI) specification in the source code. Moreover, FAUST can generate easy-to-read block diagrams directly from the source, illustrating signal flow and processing graphically.
This tutorial provides some basic getting-started info for FAUST, a brief overview of main aspects of the language, and example applications and plugins generated from a simple FAUST program specifying a resonator driven by white noise. It was written before most of the FAUST online documentation, so there is naturally overlap in content, but the styles are quite different. In part because FAUST is always evolving forward, this section is incomplete, but it is updated when anything addressed needs revision (please report suggestions and errata to the author). The most up-to-date specification of the language has been the FAUST Quick Reference manual.
The FAUST compiler translates the FAUST language into C++ files (and other back-end languages that will not be considered here). These C++ files must then be compiled and installed somewhere for use. The reader is therefore assumed to have elementary proficiency in UNIX operating environments such as any Linux distributions or Mac OS.2Such proficiency includes familiarity with a Command-Line Interface (CLI) such as a UNIX shell (principally tcsh or bash in this tutorial), source-code version control using git, and elementary compiling, linking, and installation using make, some C++ compiler, the standard linker ld, and so on. For text editing, Emacs is recommended, but any will do.