Mot-clé : Faust

2018

An Overview of the FAUST Developer Ecosystem

International Faust Conference, 2018, Mainz, Germany

The FAUST language has been designed to provide developers an alternative to C/C++ code, to easily develop and deploy DSP algorithms, effects, instruments etc. The ecosystem is composed of the language and its compiler, as well as different components that help test, benchmark and optimize, and run the resulting code on a large variety of platforms. In this paper we present various architectures files, optimization and testing tools, that have been developed ov... read_more

The FAUST language has been designed to provide developers an alternative to C/C++ code, to easily develop and deploy DSP algorithms, effects, instruments etc. The ecosystem is composed of the language and its compiler, as well as different components that help test, benchmark and optimize, and run the resulting code on a large variety of platforms. In this paper we present various architectures files, optimization and testing tools, that have been developed over the years as part of the FAUST ecosystem, in order to expand the use of the compiler on various targets, and help developers optimize their DSP code. Some of them were publicly announced and can help when deploying DSPs, some are more experimental to be tested by more adventurous developers.

Stéphane Letz, Yann Orlarey, Dominique Fober

Mots-clés :
Faust, Ecosystem, DSP

2016

Signal Rate Inference for Multi-Dimensional Faust

The 28th symposium on Implementation and Application of Functional Languages (IFL 2016), Aug 2016, Leuven, Belgium. pp.1:1--1:12, ⟨10.1145/3064899.3064902⟩

We introduce a new signal-level, type-and rate-based semantic framework for describing a multi-rate version of the functional , domain-specific Faust language, dedicated to audio signal processing, and here extended to support array-valued samples. If Faust is usually viewed as a formalism for combining signal processors, which are expressions mapping input signals to output signals, we provide here the first formal, lower-level semantics for Faust based on sig... read_more

We introduce a new signal-level, type-and rate-based semantic framework for describing a multi-rate version of the functional , domain-specific Faust language, dedicated to audio signal processing, and here extended to support array-valued samples. If Faust is usually viewed as a formalism for combining signal processors, which are expressions mapping input signals to output signals, we provide here the first formal, lower-level semantics for Faust based on signals instead. In addition to its interest in understanding the inner workings of the Faust compiler, which uses symbolic evaluation of signal expressions, this approach turns out to be useful when introducing a language extension targeting multi-rate and multi-dimensional (array-valued) processing. More precisely, we provide (1) new syntax and dynamic semantics for (recursive) Faust-based signals, (2) a type and, more interestingly, rational rate static semantics and (3) a new rate inference algorithm, together with its soundness and (relative) completeness theorems. Preliminary experiments in a prototype implementation of this extension in the Faust compiler are underway.

Yann Orlarey, Pierre Jouvelot

Mots-clés :
Type systems, Audio signal processing, Faust

2015

Composing a Web of Audio Applications

1st Web Audio Conference, IRCAM, Mozilla Foundation, Jan 2015, Paris, France

The Web offers a great opportunity to share, deploy and use programs without installation difficulties. In this article we explore the idea of freely combining/composing real-time audio applications deployed on the Web using Faust audio DSP language.

Faust Environment Everyware : une solution ubiquitaire pour le traitement audionumérique portable et multiplateforme

Sarah Denoux, Yann Orlarey, Stephane Letz, Dominique Fober

Mots-clés :
Composability, Faust, Web, DSP programming

2014

FAUSTLIVE, Just-In-Time Faust Compiler... and much more

Linux Audio Conference, ZKM, May 2014, Karlsruhe, Germany

FaustLive is a standalone just-in-time Faust compiler. It tries to bring together the conve- nience of a standalone interpreted language with the e ciency of a compiled language. Based on libfaust, a library that provides a full in- memory compilation chain, FaustLive doesn't require any external tool (compiler, linker, etc.) to translate Faust source code into binary ex- ecutable code. Thanks to this technology FaustLive provides several advanced features. For... read_more

FaustLive is a standalone just-in-time Faust compiler. It tries to bring together the conve- nience of a standalone interpreted language with the e ciency of a compiled language. Based on libfaust, a library that provides a full in- memory compilation chain, FaustLive doesn't require any external tool (compiler, linker, etc.) to translate Faust source code into binary ex- ecutable code. Thanks to this technology FaustLive provides several advanced features. For example it is possible, while a Faust application is running, to modify its behavior on-the- y without any sound interruption. It is also possible to mi- grate a running application from one machine to another, etc.

INteractivité dans l'Ecriture De l'Interaction et du Temps

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

Mots-clés :
DSP programming, Audio, Faust, Remote processing and interfacing

LibAudioStream est un moteur de rendu audionumérique disponible sous forme de librairie, permettant de manipuler des ressources audio à travers le concept de flux. Ce moteur est facilement intégrable dans des applications qui nécessitent de jouer des fichiers son, des montages audio, et d'appliquer des effets et des traitements DSP en temps-réel. Une algèbre de description, de composition et de transformation des flux audio permet de construire des expressions... read_more

LibAudioStream est un moteur de rendu audionumérique disponible sous forme de librairie, permettant de manipuler des ressources audio à travers le concept de flux. Ce moteur est facilement intégrable dans des applications qui nécessitent de jouer des fichiers son, des montages audio, et d'appliquer des effets et des traitements DSP en temps-réel. Une algèbre de description, de composition et de transformation des flux audio permet de construire des expressions complexes, que l'on va pouvoir ordonnancer à des dates précises dans le futur, et dont le rendu sera ensuite exécuté en temps réel le moment venu. L'application a un contrôle à l'échantillon près de ce qui est fait et à quelmoment, tout en étant déchargée des calculs audio temps réel proprement dit. Ce rapport donne une description formelle du langage d'expressions et des fonctionnalités de LibAudioStream.

INteractivité dans l'Ecriture De l'Interaction et du Temps

Stéphane Letz

Mots-clés :
Audio, Faust

synthèse et le traitement du signal audio-numérique en temps-réel. L'objectif de WP3.4 est de développer une version embarquable du compilateur Faust (appelée libfaust) pouvant être intégrée aux différentes applications du projet INEDIT. L'intérêt pour ces applications est de disposer ainsi d'une chaîne de compilation complète, permettant de traduire les traitements synchrones, écrites en Faust, en code binaire exécutable fonctionnant donc à vitesse native. En... read_more

synthèse et le traitement du signal audio-numérique en temps-réel. L'objectif de WP3.4 est de développer une version embarquable du compilateur Faust (appelée libfaust) pouvant être intégrée aux différentes applications du projet INEDIT. L'intérêt pour ces applications est de disposer ainsi d'une chaîne de compilation complète, permettant de traduire les traitements synchrones, écrites en Faust, en code binaire exécutable fonctionnant donc à vitesse native. En s'appuyant sur la technologie LLVMcette chaîne de compilation est totalement autonome et ne dépend d'aucun outil de développement extérieur. Ceci facilite grandement le deploiement auprès d'utilisateurs non informaticiens. Elle est en outre très rapide, rendant ainsi dans de nombreux cas la phase de compilation transparente pour l'utilisateur. Le rapport présente la libraire libfaust, l'infrastructure de compilation LLVM, et trois applications de cette technologie : faustgen˜ un plugin Max/MSP permettant d'éditer, de compiler et d'exécuter du code Faust depuis Max, FaustNode, une extension de laWebAudio API permettant de compiler et d'exécuter du code Faust depuis un navigateur Web et faustcsound, un ensemble de quatre opcodes pour intégrer Faust dans le langage Csound.

INteractivité dans l'Ecriture De l'Interaction et du Temps

Yann Orlarey

Mots-clés :
Faust, Langage de programmation, Traitement du signal

Programmation and Control of Faust Sound Processing in OpenMusic

Joint International Computer Music / Sound and Music Computing Conferences (ICMC-SMC), 2014, Athens, Greece

We introduce OM-Faust, an OpenMusic library including objects and functions to write, compile and control Faust programs. Faust is a domain-specific functional programming language designed for DSP. The integration of Faust in OpenMusic enables composers to program and compile their own audio effects and synthesizers, controllable both in real-time or deferred time contexts. This implementation suggests a more general discussion regarding the relationship betwe... read_more

We introduce OM-Faust, an OpenMusic library including objects and functions to write, compile and control Faust programs. Faust is a domain-specific functional programming language designed for DSP. The integration of Faust in OpenMusic enables composers to program and compile their own audio effects and synthesizers, controllable both in real-time or deferred time contexts. This implementation suggests a more general discussion regarding the relationship between real-time and off-line processing in computer-aided composition.

Extended Framework for "In-time" Computer-Aided Composition

Dimitri Bouche, Jean Bresson, Stéphane Letz

Mots-clés :
Computer-aided composition, Faust, OpenMusic