I managed to provide a simple Interface class to use Faust in my Arduino Audio Tools.

Faust (Functional Audio Stream) is a functional programming language for sound synthesis and audio processing with a strong focus on the design of synthesizers, musical instruments, audio effects, etc. Faust targets high-performance signal processing applications and audio plug-ins for a variety of platforms and standards.

The core component of Faust is its compiler. It allows 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.

So we can just generate our DSP C++ Class and use it with the Arduino Audio Tools. A pinch of salt: I noticed that some implementations however are generating arrays that are too big for Microcontrollers!

Faust Compile Options

I suggest to use the following options:

  • -lang CPP –language select output language,
  • -single –single-precision-floats use single precision floats for internal computations (default).
  • -inpl –in-place generates code working when input and output buffers are the same (scalar mode only).
  • -scal –scalar generate non-vectorized code.

See https://faustdoc.grame.fr/manual/options/

Examples

I am providing some examples that demonstrate how to use Faust

Further information can be found in the Wiki of the AudioTools project.


1 Comment

Viska · 28. June 2026 at 10:10

What makes this article especially valuable is that it bridges high-level DSP design with resource-constrained embedded hardware. Demonstrating how Faust-generated code can integrate with Arduino Audio Tools shows that sophisticated audio processing is becoming increasingly accessible to embedded developers. It’s an inspiring example of practical innovation

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *