In this online workshop, participants will learn how to design sound synthesis and processing objects in the Faust programming language and then port these algorithms as cross platform plugins using C++ and JUCE.
The first part of the week will be dedicated to learning Faust (Functional Audio Stream), a functional programming language for sound synthesis and audio processing with a strong focus on the design of synthesizers, musical instruments and audio effects. Faust targets high-performance signal processing applications and audio plug-ins for a variety of platforms and standards.
Faust promotes designing the block diagram, and then automates the porting of the DSP graph to efficient C++. This high level approach makes Faust ideal for designing audio plugins that can be used in a variety of workflows and DAWS.
JUCE will be used in the latter part of the week to port our DSP algorithms to cross-platform audio plugins with custom UI design. Participants will leave the workshop with their own audio plugin as well as an understanding of the essential workflow to continue designing custom audio tools.
- Faust programming
- Digital Signal Processing for sound synthesis and audio effects (i.e., band-limited oscillators, filters, tremolo, physical modeling, reverb, chorus, flanger, phaser, distortion, echo, etc.)
- JUCE fundamentals (i.e., project management, export to different plug-in formats, audio engine architecture, MIDI support, etc.)
- Graphical user interface design with JUCE and C++
- Romain Michon — Researcher and Lecturer — GRAME-CNCM, Lyon (France) & CCRMA, Stanford University (USA)
- John Granzow — Associate Professor — University of Michigan (USA)
This workshop is intended for musicians, makers, engineers, computer scientists, etc. Previous background in computer programming (ideally with some knowledge in C++) and sound synthesis/processing is recommended. Participants will use their own laptop. Feel free to contact the workshop instructors for additional information.
Classes will take place on Zoom, 9am-12:30 (PST). The rest of the time will be dedicated to exercises and mini-projects. Communication between the instructors and the students will be ensured outside of class time through Slack. Students will have the option to make a final project which will be due a week after the end of the workshop (on August 6th, 2021).
- For technical questions about the workshop, feel free to contact Romain Michon (rmichon_at_ccrma_dot_stanford_dot_edu) or John Granzow (jgranzow_at_umich_dot_edu).
- For questions about registration, feel free to contact Nette Worthey (networth_at_ccrma_dot_stanford_dot_edu).
- Follow this link to register to the workshop!
- SimpleSawtooth: a simple plugin implementing a sawtooth wave oscillator in C++ from scratch with a controllable frequency.
- MonoSynth: a plugin based on a Faust synthesizer with a simple user interface.
- PolySynth: a plugin based on a polyphonic Faust synthesizer with a piano keyboard interface.
- MonoSynthFancy: a plugin similar to MonoSynth but with an advanced user interface.