Faust, the DSP language

August 22, 2016 — January 16, 2022

making things
music
signal processing

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.

It can also be controlled over the internet:

faust2jaqt - httpd mix4 . dsp

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.