Faust, the DSP language
August 22, 2016 — January 16, 2022
FaustDSP is an academic functional programming language for DSP algorithms. Source is on github. Multi-platform in a broad sense:
The core component of Faust is its compiler. It allows you to “translate” any Faust digital signal processing (DSP) specification to a wide range of non-domain specific languages such as C++, C, LLVM bit code, WebAssembly, Rust, etc. In this regard, Faust can be seen as an alternative to C++ but is much simpler and intuitive to learn.
Comes with category-theoretic rationale, and an optional IDE. I could also file it under “patchers,” but the patcher-style visualisation is strictly isomorphic to the code version, so that’s not actually a negative for once.
- Julius O. Smith has some intro lectures (Alternate version)
- Romain Michon’s Stanford chipper little Faust Course is hands-on
- has a python interface because why not.
- polyphony is
trickyfine
It can also be controlled over the internet:
I think the design of this language is elegant, but I’m not sure this solves the problems I am facing. I would like to integrate sophisticated ML algorithms into my DSP code, which means that I would benefit from my DSP being conducted inside my ML framework.
1 tips
It’s not clear how you access buffers in Faust at first glance. The keyword is table
. See stream looper for one example and Mayank Sanganeria’s classic granulator for another.
🏗 work out how to fill buffers from the disk via the hosting application (e.g. VST infrastructure).
2 community
Slack is probably the fastest way to get help with Faust: https://faustaudio.slack.com.
The Audio Programmer community discord community has a #faust channel.