Faust, the DSP language

2016-08-22 — 2022-01-15

Wherein the language’s compiler is described as translating DSP specifications into C, C++, WebAssembly, Rust and LLVM, and optional IDE and Python bindings are noted, while buffer access via the table keyword is highlighted.

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.