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.


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published.