Mot-clé : Domain Specific Language

2018

This paper demonstrates how FAUST, a functional programming language for sound synthesis and audio processing, can be used to develop efficient audio code for the Web. After a brief overview of the language, its compiler and the architecture system allowing to deploy the same program as a variety of targets, the generation of WebAssembly code and the deployment of specialized WebAudio nodes will be explained. Several use cases will be presented. Extensive bench... read_more

This paper demonstrates how FAUST, a functional programming language for sound synthesis and audio processing, can be used to develop efficient audio code for the Web. After a brief overview of the language, its compiler and the architecture system allowing to deploy the same program as a variety of targets, the generation of WebAssembly code and the deployment of specialized WebAudio nodes will be explained. Several use cases will be presented. Extensive benchmarks to compare the performance of native and WebAssembly versions of the same set of DSP have be done and will be commented

Stéphane Letz, Yann Orlarey, Dominique Fober

Mots-clés :
Audio, Compilation, Domain Specific Language, DSP, FAUST, Signal processing, Webassembly, Webaudio

2017

Faust audio DSP language for JUCE

Linux Audio Conference, 2017, Saint-Etienne, France. pp.61-68

Faust [Functional Audio Stream] is a functional programming language specifically designed for real- time signal processing and synthesis [1]. It consists of a compiler that translates a Faust program into an equivalent C++ program, taking care of generat- ing the most efficient code. JUCE is an open-source cross-platform C++ application framework devel- oped since 2004, and bought by ROLI1 in Novem- ber 2014, used for the development of desktop and mobile appl... read_more

Faust [Functional Audio Stream] is a functional programming language specifically designed for real- time signal processing and synthesis [1]. It consists of a compiler that translates a Faust program into an equivalent C++ program, taking care of generat- ing the most efficient code. JUCE is an open-source cross-platform C++ application framework devel- oped since 2004, and bought by ROLI1 in Novem- ber 2014, used for the development of desktop and mobile applications. A new feature to the Faust environnement is the addition of architectures files to provide the glue between the Faust C++ output and the JUCE framework. This article presents the overall design of the architecture files for JUCE.

Adrien Albouy, Stéphane Letz

Mots-clés :
Audio, Domain Specific Language, DSP, FAUST, JUCE, Real-time

2015

Faust audio DSP language in the Web

Linux Audio Conference, 2015, Mainz, Germany. pp.29-36

With the advent of both HTML5 and the Web Audio API (a high-level JavaScript API for audio process- ing and synthesis) interesting audio applications can now be developed for the Web. The Web Audio API offers a set of fast predefined audio nodes as well as customizable ScriptProcessor node, allowing developers to add their own javascript audio processing code. Several projects are developing abstractions on top of the Web Audio API to extend its capabilities, a... read_more

With the advent of both HTML5 and the Web Audio API (a high-level JavaScript API for audio process- ing and synthesis) interesting audio applications can now be developed for the Web. The Web Audio API offers a set of fast predefined audio nodes as well as customizable ScriptProcessor node, allowing developers to add their own javascript audio processing code. Several projects are developing abstractions on top of the Web Audio API to extend its capabilities, and offer more complex unit generators, DSP effects libraries, or adapted syntax. This paper brings an- other approach based on the use of the Faust audio DSP language to develop additional nodes to be used as basic audio DSP blocks in the Web Audio graph. Different methods have been explored: going from an experimental version that embeds the complete Faust native compilation chain (based on libfaust + LLVM) in the browser, to more portable solutions using JavaScript or the much more efficient asm.js version. Embedding the Faust compiler it- self as a pure JavaScript library (produced using Emscripten) will also be described.The advantages and issues of each approach will be discussed and some benchmarks will be given.

Stéphane Letz, Sarah Denoux, Yann Orlarey, Dominique Fober

Mots-clés :
Domain Specific Language, DSP, FAUST, Real-time, Web Audio API