2014

Providing Music Notation Services over Internet

Linux Audio Conference, May 2014, Karlsruhe, Germany. pp.91-96

The GUIDO project gathers a textual format for music representation, a rendering engine operating on this format, and a library providing a high level support for all the services related to the GUIDO format and it's graphic rendering. The project includes now an HTTP server that allows users to access the musical-score-related functions in the API of the GUIDOEngine library via uniform resource identifiers (URIs). This article resumes the core tenants of the R... read_more

The GUIDO project gathers a textual format for music representation, a rendering engine operating on this format, and a library providing a high level support for all the services related to the GUIDO format and it's graphic rendering. The project includes now an HTTP server that allows users to access the musical-score-related functions in the API of the GUIDOEngine library via uniform resource identifiers (URIs). This article resumes the core tenants of the REST architecture on which the GUIDO server is based, going on to explain how the server ports a C/C++ API to the web. It concludes with several examples as well as a discussion of how the REST architecture is well suited to a web-API that serves as a wrapper for another API.

Mike Solomon, Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Guido, Music score, Restful web service

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

Technique et Science Informatiques

Lavoisier. France. 33 (7-8), 2014, Revue des Sciences et Technologies de l'Information, 978-2-7462-4686-7

Jean Bresson, Dominique Fober

Mots-clés :
Informatique, Musique

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

This project introduces a recently developed prototype for real-time processing and control of complex piano notation through the pianist’s gesture. The tool materializes an embodied cognition-influenced paradigm of interaction of pianists with complex notation (embodied or corporeal navigation), drawing from latest developments in the computer music fields of musical representation (augmented and interactive musical scores via INScore) and of multimodal intera... read_more

This project introduces a recently developed prototype for real-time processing and control of complex piano notation through the pianist’s gesture. The tool materializes an embodied cognition-influenced paradigm of interaction of pianists with complex notation (embodied or corporeal navigation), drawing from latest developments in the computer music fields of musical representation (augmented and interactive musical scores via INScore) and of multimodal interaction (Gesture Follower). Gestural, video, audio and MIDI data are appropriately mapped on the musical score, turning it into a personalized, dynamic, multimodal tablature. This tablature may be used for efficient learning, performance and archiving, with potential applications in pedagogy, composition, improvisation and score following. The underlying metaphor for such a tool is that instrumentalists touch or cut through notational complexity using performative gestures, as much as they touch their own keyboards. Their action on the instrument forms integral part of their understanding, which can be represented as a gestural processing of the notation. Next to the already mentioned applications, new perspectives in piano performance of post-1945 complex notation and in musicology (‘performative turn’), as well as the emerging field of ‘embodied and extended cognition’, are indispensable for this project.

Pavlos Antoniadis, Frédéric Bevilacqua, Dominique Fober

FaustLive : Un compilateur à la volée pour Faust... et bien plus encore

Journées d'Informatique Musicale, 2014, Bourges, France

FaustLive est une application qui, grâce à son compilateur Faust embarqué, se propose de réunir le confort d'un langage interprété avec l\éfficacité d'un langage compilé. Basée sur libfaust, une librairie qui offre une chaîne de compilation complète en mémoire, FaustLive ne requiert aucun outil externe (compilateur, éditeur de lien, ...) pour traduire du code FAUST en code machine exécutable. Par l'intermédiaire de cette technologie, FaustLive offre de multiple... read_more

FaustLive est une application qui, grâce à son compilateur Faust embarqué, se propose de réunir le confort d'un langage interprété avec l\éfficacité d'un langage compilé. Basée sur libfaust, une librairie qui offre une chaîne de compilation complète en mémoire, FaustLive ne requiert aucun outil externe (compilateur, éditeur de lien, ...) pour traduire du code FAUST en code machine exécutable. Par l'intermédiaire de cette technologie, FaustLive offre de multiples fonctionnalités. Par exemple, il est possible de glisser un nouveau fichier DSP sur une application FAUST en fonctionnement pour remplacer son comportement et ce, sans interruption du son. Il est aussi possible de transférer une application qui fonctionne en local, sur une autre machine, même si celle-ci utilise un système d\éxploitation différent.

Sarah Denoux, Stéphane Letz, Yann Orlarey

Mots-clés :
Audio, Contrôle et calculs à distance, FAUST, Programmation de DSP

2013

Programming Interactive Music Scores with INScore

Sound and Music Computing, Jul 2013, Stockholm, Sweden. pp.185-190

INScore is an environment for the design of interactive music scores that includes an original event-based interaction system and a scripting language for associating arbitrary messages to these events. We extended the previous version by supporting scripting languages offering a great flexibility in the description of scores and in the interactions with scores. The textual format is directly derived from the OSC message format that was defined in the original... read_more

INScore is an environment for the design of interactive music scores that includes an original event-based interaction system and a scripting language for associating arbitrary messages to these events. We extended the previous version by supporting scripting languages offering a great flexibility in the description of scores and in the interactions with scores. The textual format is directly derived from the OSC message format that was defined in the original INScore version. This article presents the scripting language and illustrates its ability to describe interactions based on events, while remaining in the temporal space. It also introduces the IRCAM gesture follower and how it is embedded into INScore to provide gestural interaction capabilities.

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

Dominique Fober, Stéphane Letz, Yann Orlarey, Frédéric Bevilacqua

Mots-clés :
Interaction, Synchronization, Music, Score, Graphic, Programming

COMMENT EMBARQUER LE COMPILATEUR FAUST DANS VOS APPLICATIONS ?

Journées d'Informatique Musicale, May 2013, Paris, France. pp.137-140

Le compilateur Faust est désormais disponible sous la forme d'une librairie nommée libfaust. Associée à la technologie LLVM, cette librairie peut être embarquée dans n'importe quelle application ou plugin audio, leur permettant ainsi de compiler et d'exécuter dynamiquement du code Faust de manière native, aussi efficacement que du code compilé traditionnel. L'article présente la libraire libfaust, l'infrastructure de compilation LLVM, et deux applications de ce... read_more

Le compilateur Faust est désormais disponible sous la forme d'une librairie nommée libfaust. Associée à la technologie LLVM, cette librairie peut être embarquée dans n'importe quelle application ou plugin audio, leur permettant ainsi de compiler et d'exécuter dynamiquement du code Faust de manière native, aussi efficacement que du code compilé traditionnel. L'article présente la libraire libfaust, l'infrastructure de compilation LLVM, et deux applications de cette technologie : faustgen un plugin Max/MSP permettant d'éditer, de compiler et d'exécuter du code Faust depuis Max, et FaustNode, une extension de la WebAudio API permettant de compiler et d'exécuter du code Faust depuis un navigateur Web.

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

Stéphane Letz, Dominique Fober, Yann Orlarey

Programmation événementielle de partitions musicales interactives

Journées d'Informatique Musicale, May 2013, Paris, France. pp.91-95

INSCORE est un environnement pour la conception de partitions musicales interactives qui intègre un système original d'interaction basé sur des événements et sur un langage de script permettant d'associer des messages arbitraires à ces événements. Initialement conçu pour être piloté via OSC, la version textuelle des messages OSC s'est rapidement constituée en format de stockage, puis étendue en un langage de script permettant une plus grande souplesse dans la d... read_more

INSCORE est un environnement pour la conception de partitions musicales interactives qui intègre un système original d'interaction basé sur des événements et sur un langage de script permettant d'associer des messages arbitraires à ces événements. Initialement conçu pour être piloté via OSC, la version textuelle des messages OSC s'est rapidement constituée en format de stockage, puis étendue en un langage de script permettant une plus grande souplesse dans la description des partitions et des interactions avec ces partitions. Cet article présente ce langage de script et illustre notamment ses capacités à décrire des interactions sous forme événementielle, tout en restant dans l'espace temporel.

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

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Partitions musicales, Interaction, Programmation

Ce rapport présente une étude préliminaire réalisée dans le cadre du projet ANR INEDIT. L'objectif est de définir les éléments de caractérisation des processus musicaux et la manière de les représenter, pouvant servir notamment à une représentation des processus musicaux au sein de la partition musicale.

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

Dominique Fober

Mots-clés :
Processus musical, Interaction, Représentation, Partition musicale

In the field of music system programming, the T-calculus is a proposal for combining space modeling and time programming into a single programming feature: spatiotemporal tiled programming. Based on a solid algebraic model, it aims at decomposing every operation on musical objects into the sequence of a synchronization operation that describes how objects are positioned one with respect the other, and a fusion operation that describes how their values are then... read_more

In the field of music system programming, the T-calculus is a proposal for combining space modeling and time programming into a single programming feature: spatiotemporal tiled programming. Based on a solid algebraic model, it aims at decomposing every operation on musical objects into the sequence of a synchronization operation that describes how objects are positioned one with respect the other, and a fusion operation that describes how their values are then combined. A first simple version of such a tiled calculus is presented and studied in this paper. 1 Introduction

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

David Janin, Florent Berthaut, Myriam Desainte-Catherine, Yann Orlarey, Sylvain Salvati

Mots-clés :
Tiled programing, Interactive music, Synchronous programing, Event based programing

Etudier et jouer une oeuvre musicale en manipulant des objets.

Journées d'Informatique Musicale, 2013, Paris, France

Cet article présente trois expériences musicales et pédagogiques menées à l'Atelier des Feuillantines. Elles s'inscrivent dans le cadre de divers projets nationaux comme « Interlude » ou « Musique Lab 2 ». Certains de ces projets visent à préfigurer ce que pourrait être l'écoute d'une oeuvre au moyen de technologies de suivi de geste, dans des contextes allant de la pédagogie musicale aux installations grand public, d'autres sont explicitement axés sur le dével... read_more

Cet article présente trois expériences musicales et pédagogiques menées à l'Atelier des Feuillantines. Elles s'inscrivent dans le cadre de divers projets nationaux comme « Interlude » ou « Musique Lab 2 ». Certains de ces projets visent à préfigurer ce que pourrait être l'écoute d'une oeuvre au moyen de technologies de suivi de geste, dans des contextes allant de la pédagogie musicale aux installations grand public, d'autres sont explicitement axés sur le développement de nouveaux outils croisant pédagogie et création. Les trois expériences décrites dans cet article appartiennent à deux grandes catégories. La première concerne l'utilisation d'un outil associant des gestes, une partition et un enregistrement, la seconde consiste à jouer une oeuvre, en l'occurrence ici le canon par tons de l'Offrande Musicale de Bach, et une partie de la Rousserolle Effarvatte d'Olivier Messiaen à partir de leurs constituants de base matérialisés par des objets dont la manipulation coïncide avec des traitements reproduisant le « mouvement » de la composition.

Fabrice Guedy, Frédéric Bevilacqua, Dominique Fober, Loïc Robert

Mots-clés :
Interaction, Musique, Pédagogie

2012

We present a general theoretical framework to describe segments and the different possible mapping that can be established between them. Each segment can be related to different music representations, graphical scores, music signals or gesture signals. This theoretical formalism is general and is compatible with large number of problems found in sound and gesture computing. We describe some examples we developed in interactive score representation, superposed w... read_more

We present a general theoretical framework to describe segments and the different possible mapping that can be established between them. Each segment can be related to different music representations, graphical scores, music signals or gesture signals. This theoretical formalism is general and is compatible with large number of problems found in sound and gesture computing. We describe some examples we developed in interactive score representation, superposed with signal representation, and the description of synchronization between gesture and sound signals.

Dominique Fober, Frédéric Bevilacqua, Roland Assous

Mots-clés :
Gesture, Music, Music score, Synchronization

INScore - An Environment for the Design of Live Music Scores

Linux Audio Conference, 2012, Stanford, United States. pp.47-54

INScore is an open source framework for the design of interactive, augmented, live music scores. Augmented music scores are graphic spaces providing representation, composition and manipulation of heterogeneous and arbitrary music objects (music scores but also images, text, signals...), both in the graphic and time domains. INScore includes also a dynamic system for the representation of the music performance, considered as a specific sound or gesture instance... read_more

INScore is an open source framework for the design of interactive, augmented, live music scores. Augmented music scores are graphic spaces providing representation, composition and manipulation of heterogeneous and arbitrary music objects (music scores but also images, text, signals...), both in the graphic and time domains. INScore includes also a dynamic system for the representation of the music performance, considered as a specific sound or gesture instance of the score, and viewed as signals. It integrates an event based interaction mechanism that opens the door to original uses and designs, transforming a score as a user interface or allowing a score self-modification based on temporal events. This paper presents the system features, the underlying formalisms, and introduces the OSC based scripting language.

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Graphic, Interaction, Music, Score, Synchronization

SCORES LEVEL COMPOSITION BASED ON THE GUIDO MUSIC NOTATION

International Computer Music Conference, 2012, Ljubljana, Slovenia. pp.383-386

Based on the Guido Music Notation format, we have developed tools for music score ”composition”, i.e. operators that take scores both as target and arguments of high level transformations, applicable for example to the time domain (e.g. cutting the head or the tail of a score) or to the structural domains (e.g. putting scores in sequence or in parallel). Providing these operations at score level is particularly convenient to express music ideas and to compose t... read_more

Based on the Guido Music Notation format, we have developed tools for music score ”composition”, i.e. operators that take scores both as target and arguments of high level transformations, applicable for example to the time domain (e.g. cutting the head or the tail of a score) or to the structural domains (e.g. putting scores in sequence or in parallel). Providing these operations at score level is particularly convenient to express music ideas and to compose these ideas in an homogeneous representation space. However, scores level composition gives raise to a set of issues related to the music notation consistency. This paper introduces the GUIDO Music Notation format, presents the score com- position operations, the notation issues and a proposal to solve them.

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Composition, Music score

Composition de partitions musicales

Journées d'Informatique Musicale, 2012, Mons, Belgique. pp.263-267

Basé sur le format de notation musicale Guido , nous avons développé un ensemble d'outils pour la composition de partitions musicales. Il s'agit d'opérations de transformation de haut niveau, prenant des partitions en entrée pour en générer de nouvelles en sortie. Ces opérations peuvent par exemple s'appliquer au domaine temporel (e.g. couper le début ou la fin d'une partition) ou concerner la structure de la partition (mise en séquence, en parallèle).

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Processing, Score

The Faust Online Compiler is a PHP/JavaScript based web application that provides a cross-platform and cross-processor programming environment for the Faust language. It allows to use most of Faust features directly in a web browser and it integrates an editable catalog of examples making it a platform to easily share and use Faust objects.

FAUST est un langage de programmation fonctionnel pour le traitement du signal et la synthèse de sons en temps réel. Grâce à un système de fichiers d’architectures, un seul et unique programme FAUST peut être utilisé pour générer du code pour un ensemble de types d’applications et de plug-ins. Le compilateur en ligne de FAUST ici présenté est une application Web écrite en PHP et en JavaScript offrant un environnement de développement multiplateforme et multipro... read_more

FAUST est un langage de programmation fonctionnel pour le traitement du signal et la synthèse de sons en temps réel. Grâce à un système de fichiers d’architectures, un seul et unique programme FAUST peut être utilisé pour générer du code pour un ensemble de types d’applications et de plug-ins. Le compilateur en ligne de FAUST ici présenté est une application Web écrite en PHP et en JavaScript offrant un environnement de développement multiplateforme et multiprocesseur pour le langage FAUST. Cet outil rend possible l’utilisation de la plupart des fonctionnalités de FAUST dans un navigateur Web et intègre un catalogue d’exemples évolutif faisant de lui une plate-forme pour utiliser et échanger facilement tout objet FAUST. Le fonctionnement du compilateur en ligne de FAUST est présenté en détail dans cet article. Les possibilités offertes par cet outil sont discutées et une brève ouverture sur les enjeux de l’utilisation des technologies Web pour l’informatique musicale est faite.

Romain Michon, Yann Orlarey

Mots-clés :
DSP, FAUST, Programming, Web

This paper describes tools designed and experiments conducted in the context of MIROR, a European project investigating adaptive systems for early childhood music education based on the paradigm of reflexive interaction. In MIROR, music notation is used as the trace of both the user and the system activity, produced from MIDI instruments. The task of displaying such raw MIDI inputs and outputs is difficult as no a priori information is known concerning the unde... read_more

This paper describes tools designed and experiments conducted in the context of MIROR, a European project investigating adaptive systems for early childhood music education based on the paradigm of reflexive interaction. In MIROR, music notation is used as the trace of both the user and the system activity, produced from MIDI instruments. The task of displaying such raw MIDI inputs and outputs is difficult as no a priori information is known concerning the underlying tempo or metrical structure. We describe here a completely automatic processing chain from the raw MIDI input to a fully-fledge music notation. The low level music description is first converted in a score level description and then automatically rendered as a graphic score. The whole process is operating in real-time. The paper describes the various conversion steps and issues, including extensions to support score annotations. The process is validated using about 30,000 musical sequences gathered from MIROR experiments and made available for public use.

Dominique Fober, François Pachet, Jürgen Kilian

Mots-clés :
MIDI, Music score, Real-time

Abstraction du processus temps réel : une stratégie pour la préservation à long terme

Revue Francophone d'Informatique et Musique, Association Francophone d'Informatique Musicale, 2012

Les recherches décrites ici abordent la problématique de la préservation à long terme du processus temps réel dans la création contemporaine utilisant le numérique. En effet, nous avons développé une stratégie d' abstraction, laquelle consiste à générer automatiquement une documentation mathématique qui explicite la sémantique d'un processus, représentée uniquement à l'aide de la notation mathématique et du langage naturel. L'objectif et lénjeu de cette approch... read_more

Les recherches décrites ici abordent la problématique de la préservation à long terme du processus temps réel dans la création contemporaine utilisant le numérique. En effet, nous avons développé une stratégie d' abstraction, laquelle consiste à générer automatiquement une documentation mathématique qui explicite la sémantique d'un processus, représentée uniquement à l'aide de la notation mathématique et du langage naturel. L'objectif et lénjeu de cette approche sont à situer dans le statut auto-suffisant de cette documentation, en tant que support autonome pour la réimplémentation.

2011

Dependent vector types for data structuring in multirate Faust

Computer Languages, Systems and Structures, Elsevier, 2011, Volume 37 (Issue 3), pp.113-131. ⟨10.1016/j.cl.2011.03.001⟩

Faust is a functional programming language dedicated to the specification of ex- ecutable monorate synchronous musical applications. To extend Faust capabil- ities to important domains such as FFT-based spectral processing, we introduce here a multirate extension of the core Faust language. The novel idea is to link rate changes to data structure manipulation operations. Creating a vector-valued output signal divides the rate of input signals by the vector size... read_more

Faust is a functional programming language dedicated to the specification of ex- ecutable monorate synchronous musical applications. To extend Faust capabil- ities to important domains such as FFT-based spectral processing, we introduce here a multirate extension of the core Faust language. The novel idea is to link rate changes to data structure manipulation operations. Creating a vector-valued output signal divides the rate of input signals by the vector size, while serializ- ing vectors multiplies rates accordingly. As duals to vectors, we also introduce record-like data structures, which are used to gather data but do not change sig- nal rates. This interplay between data structures and rates is made possible in the language static semantics by the introduction of dependent types. We present a typing semantics, a denotational semantics and correctness theorems that show that this data structuring/multirate extension preserves the language synchronous characteristics. This new design is under implementation in the Faust compiler.

INScore scripting API version 0.96. INScore is a system for the design of live music scores. It is basically driven by OSC messages. This document describes the set of OSC messages supported by the system.

Dominique Fober

Mots-clés :
Inscore, Reference

FAUST Architectures Design and OSC Support.

International Conference on Digital Audio Effects, 2011, Paris, France. pp.231-216

FAUST [Functional Audio Stream] is a functional programming language specifically designed for real-time signal processing and synthesis. It consists in a compiler that translates a FAUST program into an equivalent C++ program, taking care of generating the most efficient code. The FAUST environment also includes various architecture files, providing the glue between the FAUST C++ output and the host audio and GUI environments. The combination of architecture f... read_more

FAUST [Functional Audio Stream] is a functional programming language specifically designed for real-time signal processing and synthesis. It consists in a compiler that translates a FAUST program into an equivalent C++ program, taking care of generating the most efficient code. The FAUST environment also includes various architecture files, providing the glue between the FAUST C++ output and the host audio and GUI environments. The combination of architecture files and FAUST output gives ready to run applications or plugins for various systems, which makes a single FAUST specification available on different platforms and environments without additional cost. This article presents the overall design of the architecture files and gives more details on the recent OSC architecture.

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Architecture, FAUST

Auto-documentation mathématique pour le traitement du signal avec Faust

Journées d'Informatique Musicale, 2011, Saint-Etienne, France

L'article aborde le problème de la préservation à long terme des processus numériques temps réel utilisés dans la création musicale contemporaine. Nous présentons une stratégie de préservation par abstraction mathématique. Elle consiste à générer automatiquement une documentation mathématique qui décrit de manière précise la sémantique complète de tels processus.

Karim Barkati, Yann Orlarey

Mots-clés :
DSP, FAUST, Heritage, Preservation, Programming

2010

Automatic Parallelization of Audio Applications with Faust

10ème Congrès Français d'Acoustique, Apr 2010, Lyon, France

FAUST est un langage de programmation fonctionnel spécifiquement conçu pour la synthèse et le traitement du signal en temps réel. L'une des particularités du langage est de concilier une syntaxe textuelle avec une approche par composition algébrique de bloc-diagrammes. Une autre particularité de FAUST est de pouvoir être compilé de manière très efficace. Le code C++ produit par le compilateur Faust peut généralement rivaliser avec du code écrit à la main par un... read_more

FAUST est un langage de programmation fonctionnel spécifiquement conçu pour la synthèse et le traitement du signal en temps réel. L'une des particularités du langage est de concilier une syntaxe textuelle avec une approche par composition algébrique de bloc-diagrammes. Une autre particularité de FAUST est de pouvoir être compilé de manière très efficace. Le code C++ produit par le compilateur Faust peut généralement rivaliser avec du code écrit à la main par un développeur expérimenté. Faust offre une alternative de haut niveau au C pour l'écriture de plugins, de bibliothèques et d'applications audio sans pour autant sacrifier les performances. En outre, grâce à son système d'architectures, le code Faust peut être facilement déployé sur plus d'une dizaine de plateformes audio (VST, MAX/MSP, PD, SC, CSOUND, JACK, etc.). Nous avons récemment étendu le compilateur avec de nouvelles options permettant de générer automatiquement du code parallelisé. L'objectif de l'exposé sera de présenter ces techniques de génération de code et les gains de performances que l'on peut espérer sur les machines multicore actuelles. La présentation sera accompagnée de démonstrations et d'exemples concrets. Signalons que le projet est accessible sur sourceforge (\url{http://sourceforge.net/projects/faudiostream/}). Il est également possible d'utiliser le compilateur FAUST en ligne, à l'adresse suivante : \url{http://faust.grame.fr}.

Yann Orlarey, Stéphane Letz, Dominique Fober

Mots-clés :
Langage de programmation, Compilateur, Parallélisme, Programmation fonctionnelle

Dependent Vector Types for Multirate Faust

Proceedings of the Sound and Music Computing Conference, 2010, SMC'10 2010, pp.Pages 345--352

Faust is a functional programming language dedicated to the specification of executable monorate synchronous mu- sical applications. To extend Faust capabilities to domains such as spectral processing, we introduce here a multi- rate extension of the core Faust language. The key idea is to link rate changes to data structure manipulation op- erations: creating a vector-valued output signal divides the rate of input signals by the vector size, while serializing... read_more

Faust is a functional programming language dedicated to the specification of executable monorate synchronous mu- sical applications. To extend Faust capabilities to domains such as spectral processing, we introduce here a multi- rate extension of the core Faust language. The key idea is to link rate changes to data structure manipulation op- erations: creating a vector-valued output signal divides the rate of input signals by the vector size, while serializing vectors multiplies rates accordingly. This interplay be- tween vectors and rates is made possible in the language static semantics by the introduction of dependent types. We present a typing semantics, a denotational semantics and a correctness theorem that show that this extension preserves the language synchonous characteristics. This new design is under implementation in the Faust compiler.

Pierre Jouvelot, Yann Orlarey

First Steps Towards an Organology Of Virtual Instruments In Computer Music

International Computer Music Conference, 2010, New York, United States. pp.369-372

In this paper, we will first take assess of 25 years of interactive real-time music, and introduce the problem of preservation of this music for the future generations, that is to say its ability to be re-performed, and not only to preserve the recordings. We present the state of the art in the field of active preservation of real-time works. We then give an overview of the solutions developed by IRCAM and its partners Grame, Armines ParisTech and CIEREC, in th... read_more

In this paper, we will first take assess of 25 years of interactive real-time music, and introduce the problem of preservation of this music for the future generations, that is to say its ability to be re-performed, and not only to preserve the recordings. We present the state of the art in the field of active preservation of real-time works. We then give an overview of the solutions developed by IRCAM and its partners Grame, Armines ParisTech and CIEREC, in the framework of the ASTREE project, and explain the possibilities envisioned in a case study that is En Echo by Philippe Manoury.

Jérôme Barthélemy, Alain Bonardi, Yann Orlarey, Serge Lemouton, Raffaele Ciavarella, Karim Barkati

Mots-clés :
FAUST