The Faust programming language provides a generic way to implement signal processing algorithms for sound synthesis and processing towards professional audio applications. Thanks to its architecture system, Faust can be used to generate a wide range of ready-to-use elements such as audio plug-ins (e.g., VST, AU, etc.), externals for other computer music environments (e.g., ChucK, Max/MSP, PD, CSOUND, SuperCollider, etc.), standalone applications, mobile apps, web apps, etc. Additionally, it is a great tool to make DSP engines embeddable in larger projects. This course provides an in-depth overview to the Faust programming language including fundamentals of functional programming. Students will implement a wide range of audio effects and synthesizers from scratch and learn how to turn them into various “finished” audio products. It also emphasizes the use of Faust to create DSP engines usable in existing projects.
The various programming assignments will help students solidify their understanding of the language. They will also give them the opportunity to use Faust in a creative way to implement professional-grade audio applications.
Session 1: Faust Overview And Language Basics (March 3, 2021)
This session gives an overview of the Faust ecosystem and of its various features. Simple high-level programming examples are provided towards making audio plug-ins, mobile and web apps, and externals for PureData and Max/MSP. It also begins a detailed survey of the Faust language that will be continued in Session 2.
Session 2: Programming With Faust (March 10, 2021)
This lecture extends the review of the Faust language. Its goal is to present a detailed description of Faust’s semantics through a series of examples. In particular students will learn how to code any visual block diagram in Faust, and express the corresponding mathematical semantics. By the end of this lecture, students should be aware of all the syntactical element of the language and have a basic understanding of them. They will have implemented various simple sound synthesizers and effects from scratch.
Session 3: Sound Synthesis And Processing I: Oscillators, AM, FM, And Subtractive Synthesis (March 17, 2021)
The goal of this session is to implement various sound synthesis techniques (e.g., AM, FM, subtractive, sampling, basic physical modeling, granular) from scratch in Faust. A strong emphasis will be given to making “finished products,” (advanced user interfaces, polyphony and MIDI compatibility, etc.) ready to be converted to some of the platforms presented later.
Session 4: Sound Synthesis And Processing II: Filters, Echo, Basic Physical Modeling, Sampling And Granular Synthesis (March 24, 2021)
In this session, various sound processing techniques/audio effects (basic filters, ring modulation, distortion, compressor, Schroeder reverb, flanger, phaser, pitch shifter, etc.) are implemented from scratch in Faust. As for Session 4, a strong emphasis will be given to implementing “finished products” that are “ready to be shipped”.
Session 5: Deploying Faust Programs (March 31, 2021)
This lecture provides a survey of the different Faust targets and shows how audio plug-ins, musical mobile and web apps, standalone applications, etc. can be generated with Faust. It also demonstrates how DSP engines can be embedded in other projects for a wide range of platforms, frameworks, and standards (e.g., web, mobile, VR, etc.).