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.
I am providing some examples that demonstrate how to use Faust
Further information can be found in the Wiki of the AudioTools project.