FAUSTFAUST (
Functional Audio Stream) is a functional programming language for sound synthesis and audio processing, working at sample level, and with a strong focus on the design of synthesizers, musical instruments and audio effects. The core component of FAUST is its compiler, which translate any FAUST digital signal processing (DSP) specification to a wide range of non-domain specific languages such as C++, C, JAVA, LLVM bit code or WebAssembly. Thanks to a wrapping system called "architectures" codes generated by FAUST can be easily compiled into a wide variety of objects ranging from audio plugins to standalone applications or smartphone and Web applications.
SOULThe SOUL (
SOUnd Language ) platform is a language and an API. The language is a small, carefully crafted DSL for writing the real-time parts of an audio algorithm. The API is designed to deploy that SOUL code to heterogeneous CPUs and DSPs, both locally and remotely. The SOUL language is secure by design and can be safely executed on remote devices, inside drivers, or inside bare-metal or realtime kernels, even without a sandbox. SOUL programs are structured in a graph-like form. They can be JIT compiled and dynamically redeployed onto target processors with different parallelisation characteristics.
Hybridizing FAUST and SOULBoth approaches share common ideas: sample level DSP computation, fixed memory and CPU footprints, dynamic JIT compilation, CPU efficiency, multi-targets deployment (native and embedded platforms, web...).
After a possible Brexit, should each language and its developer community remain on their own territory? We do not think so: each approach has its advantages and disadvantages. Depending of the needs, some programmers prefer the imperative SOUL approach, others prefer the more declarative FAUST mathematical specification.
I will show how the two languages can be used together, and even possibly « hybridized », thanks to several tools developed this year with a close collaboration with SOUL developers: the Faust => SOUL backend now part of the Faust compilation chain, and several tools to help combining the two languages. Several working examples will then be demonstrated, during this 25 mins session, as well as during the "
Build a synth with SOUL" worskop.