FAUST (langage)

Un article de Wikipédia, l'encyclopédie libre.

FAUST (langage)
Logo.

Date de première version Voir et modifier les données sur Wikidata
Écrit en C++Voir et modifier les données sur Wikidata
Licence Licence publique générale GNUVoir et modifier les données sur Wikidata
Site web faust.grame.frVoir et modifier les données sur Wikidata

FAUST (acronyme anglais de Functional AUdio STream) est un langage de programmation dédié purement fonctionnel, conçu pour les applications de traitement du signal audio sous différentes formes comme les bibliothèques logicielles, les plugins audio ou les logiciels. Ce langage est développé par le GRAME depuis 2002, l'implémentation principale est un logiciel libre sous licence GPLv2[1].

Un programme en FAUST traduit un processeur de signal, c'est-à-dire une fonction mathématique qui transforme un signal d'entrée en un signal de sortie.

Le Faust Playground est une application web en ligne, permettant d'assembler simplement des programmes écrits en Faust avec une interface graphique. Il peut exporter vers les différentes plateformes compatibles FAUST et créer des plugins[2].

Vue d'ensemble[modifier | modifier le code]

La modèle de programmation FAUST associe l'approche d'une programmation fonctionnelle avec une syntaxe de schéma fonctionnel.

Un programme FAUST ne décrit pas un son ou un groupe de sons mais un traitement du signal audio numérique. Le programme source est organisé comme un ensemble de définitions, comprenant au minimum la définition du mot clé process, équivalent au main en C, qui opère sur les données d'entrée.

Exemples[modifier | modifier le code]

Le premier exemple décrit une fonction qui génère du silence :

code diagramme fonction
process = 0;

Le second exemple copie le signal d'entrée en sortie. Il utilise la primitive _ qui est la fonction identité :

code diagramme fonction
process = _;

L'addition de deux signaux d'entrée est réalisée par la primitive + :

code diagramme fonction
process = +;

La plupart des primitives en FAUST sont identiques à leur équivalent en C pour les nombres, mais appliquées à des signaux. Par exemple la primitive sin applique la fonction C sin à chaque échantillon du signal d'entrée :

code diagramme fonction
process = sin;

Certaines sont spécifiques à FAUST, comme l'opérateur de retard @ qui retarde le signal d'entrée d'un certain délai, dans cet exemple, de 10 échantillons :

code diagramme fonction
process = _ @ 10;

Génération d'applications musicales[modifier | modifier le code]

À partir de fichiers d'architecture logicielle spécifiques, un programme FAUST peut générer un code informatique pour une grande diversité de plates-formes logicielles et de formats de plugins. Ces fichiers d'architecture sont définis comme des encapsuleurs et décrivent les interactions entre l'hôte logiciel et l'interface graphique. En 2015, plus de 10 architectures sont gérées, avec la possibilité d'en créer de nouvelles.

Fichiers d'architecture disponibles pour FAUST
Nom du fichier Nom de l'architecture Type d'architecture
alsa-gtk.cpp ALSA + GTK application
alsa-qt.cpp ALSA + Qt4 application
android.cpp Android application
au.cpp Audio Unit plug-in
ca-qt.cpp Core Audio + Qt4 application
ios-coreaudio.cpp iOS pour iPhone et iPad
application
jack-gtk.cpp JACK + GTK application
jack-qt.cpp JACK + QT4 application
ladspa.cpp LADSPA plug-in
max-msp.cpp Max/MSP plug-in
pd.cpp Puredata plug-in
q.cpp langage Q plug-in
supercollider.cpp SuperCollider plug-in
vst.cpp VST plug-in
vsti-mono.cpp Instrument monophonique VST plug-in
vsti-poly.cpp Instrument polyphonique VST plug-in

Annexes[modifier | modifier le code]

Références[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Articles externes[modifier | modifier le code]