Faust is a functional language for describing signal-processing networks. It has obvious applications in audio, but also has great potential for software-defined radio, subatomic physics, or any other situation where one might want to efficiently analyze streams of information.
Faust uses a floating-point paradigm that avoids many of the pitfalls of digitization; it operates on streams of floating point or integer values. Normalization and digital headroom issues can usually be ignored until the final output stage.
The Faust compiler is mathematically deep; it employs Lambda calculus to analyze and reduce Faust code, producing well-optimized output in a variety of languages including C, C++ and the LLVM compiler suite. Researchers at Stanford University’s reaped huge gains in the performance of their Synthesis Toolkit libraries after translating them from hand-optimized C++ to simpler, high-level Faust!
Because the entire Stanford Synthesis Toolkit is ported to Faust, there’s a cornucopia of easy to use processors and signal generators available: oscillators, compressors, filters, translators, delays, simulations of analog circuits and vacuum tubes, and more.
I plan to demonstrate Faust in the context of its companion app, FaustLive, which is an IDE for Faust. If there’s interest, we could get into how to cross-compile Faust to any of the many different audio environments it supports: PD, VST, CoreAudio, WebAudio, et cetera.
I decided to teach this workshop in order to give myself an excuse to dive deeper into the language. I still am by no means an expert Faust programmer, nor am I a very deep mathematician, or well-schooled in the higher arts of digital signal processing. But if I can bring you all quickly up to my level, I’m hoping you can all take it from there. =) Together we will learn how to construct useful networks of signal processing components using a functional, concise and curious text-based language, instead of having to draw giant diagrams of interconnected black boxes — although we will get diagrams too, for free!
Attendees should bring a laptop with FaustLive installed; I’ll provide installation instructions. If you’re interested, please let me know your target operating system so I can be sure it’s covered. I also encourage you to bring decent computer speakers if possible, the better to hear what Faust can do.