The FAUST programming language

Emerging Languages
Location: E144
Average rating: **...
(2.75, 4 ratings)

FAUST (Functional AUdio STreams) is a programming language for real-time signal processing and synthesis that targets high-performance DSP applications and audio plugins. Various principles have guided the design of Faust :

- Faust is a specification language. It aims at providing an adequate notation to describe signal processors from a mathematical point of view. It is, as much as possible, free from implementation details.

- Faust programs are fully compiled, not interpreted. The compiler translates FAUST programs into equivalent C++ programs taking care of generating the most efficient code. The result can generally compete with, and sometimes even outperform, C++ code written by seasoned programmers. Moreover, advanced compilation techniques allow to generate parallel code automatically taking advantage of multicore machines.

- The generated code works at the sample level. It is therefore suited to implement low-level DSP functions like recursive filters. Moreover the code can be easily embedded. It is self-contained and doesn’t depend of any DSP library or runtime system. It has a very deterministic behavior and a constant memory footprint.

- The semantic of FAUST is simple and well defined. This is not just of academic interest. It allows the FAUST compiler to be semantically driven. Instead of compiling a program literally, it compiles the mathematical function it denotes. This feature is useful for example to promote components reuse while preserving optimal performance.

- FAUST is a textual language but with a very innovative, block-diagram oriented, syntax. It actually combines two approaches: functional programming and algebraic block-diagrams. The key idea is to view block-diagram construction as an extension of the mathematical notion of function composition. For that purpose, FAUST relies on a block-diagram algebra of composition operations.

- Thanks to the notion of architecture, FAUST programs can be easily deployed on a large variety of audio platforms and plugin formats (MaxMSP, PD, CSOUND, SC, VST, JACK,…) without any changes to the FAUST code.

The talk will be the opportunity to discover Faust and its applications in the musical and audio domains.

Resources :

Yann Orlarey

GRAME, Centre National de Creation Musicale

Yann Orlarey was born in 1959. While studying economics and computing at university, he also attended electroacoustic music classes at the conservatory in Saint-Etienne. He has been a member of Grame since 1983, and is currently a scientific director of this organization. His own research is concerned mainly with formal languages for musical composition, and real-time operating systems. He has created, alone or as part of a team, a number of musical systems and programs. His repertoire includes music on tape, interactive pieces, and instrumental pieces for soloists, small groups and orchestras. Most of his works bring in computing techniques, either for the performers’ instrumental playing situations or in the compositional process as such. He has co-written several pieces within the Grame framework, for example with the clarinettist and composer Jérôme Dorival. Works by him have been played in Europe (both eastern and western), the US and Canada; and China is shortly to be added to the list.