2010

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... Lire la suite

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

Automatic Paralllelization of Audio Applications with Faust

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

Faust (Functional AUdio STreams) [1] stands for both a programming language and its compiler. Being fully compiled allows Faust to be used as an alternative to C/C++ to develop high-performance audio signal processing applications, DSP libraries and plug-ins for a variety of audio platforms and standards.

Yann Orlarey, Stéphane Letz, Dominique Fober

Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal

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... Lire la suite

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

Partitions musicales augmentées

Journées d'Informatique Musicale, 2010, Rennes, France. pp.97-103

Une partition musicale augmentée est une partition mettant en relation un objet musical symbolique avec différentes représentations de son interprétation. La partition musicale est à considérer au sens large, comme un objet graphique permettant de représenter un objet temporel. L'interprétation représente une instance sonore ou gestuelle particulière de la partition. Nous présenterons les fondements théoriques qui sous-tendent la partition augmentée, ainsi qu'u... Lire la suite

Une partition musicale augmentée est une partition mettant en relation un objet musical symbolique avec différentes représentations de son interprétation. La partition musicale est à considérer au sens large, comme un objet graphique permettant de représenter un objet temporel. L'interprétation représente une instance sonore ou gestuelle particulière de la partition. Nous présenterons les fondements théoriques qui sous-tendent la partition augmentée, ainsi qu'une application sous forme d'afficheur mettant en oeuvre les solutions proposées.

Dominique Fober, Christophe Daudin, Stéphane Letz, Yann Orlarey

Mots-clés :
Graphique, Interprétation, Musicale, Partition, Signal, Synchronization

INTERLUDE - A FRAMEWORK FOR AUGMENTED MUSIC SCORES

Sound and Music Computing Conference, 2010, Barcelona, Spain. pp.233-240

An Augmented Music Score is a graphic space providing the representation, composition and manipulation of het- erogeneous music objects (music scores but also images, text, signals...), both in the graphic and time domains. In addition, it supports the representation of the music perfor- mance, considered as a specific sound or gestural instance of the score. This paper presents the theoretical foundation of the augmented music score as well as an application -... Lire la suite

An Augmented Music Score is a graphic space providing the representation, composition and manipulation of het- erogeneous music objects (music scores but also images, text, signals...), both in the graphic and time domains. In addition, it supports the representation of the music perfor- mance, considered as a specific sound or gestural instance of the score. This paper presents the theoretical foundation of the augmented music score as well as an application - an augmented score viewer - that implements the proposed solutions.

Dominique Fober, Christophe Daudin, Yann Orlarey, Stéphane Letz

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

Work Stealing Scheduler for Automatic Parallelization in Faust

Linux Audio Conference, 2010, Utrecht, Netherlands

Faust 0.9.10 introduces an alternative to OpenMP based parallel code generation using a Work Steal- ing Scheduler and explicit management of worker threads. This paper explains the new option and presents some benchmarks.

Stéphane Letz, Yann Orlarey, Dominique Fober

Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal

Time Synchronization in Graphic Domain - A new paradigm for Augmented Music Scores

International Computer Music Conference, 2010, New York, United States. pp.458-461

We propose a simple method for synchronization of arbitrary graphic objects, based on their time relations. This method relies on segmentation and mappings that are relations between segmentations. The paper gives a formal description of segmentations and mappings and presents Interlude, a framework that implements the proposed method under the form of an augmented music score viewer, opening a new space to music notation.

Dominique Fober, Christophe Daudin, Yann Orlarey, Stéphane Letz

Mots-clés :
Music, Notation, Synchronization

2009

PARALLELIZATION OF AUDIO APPLICATIONS WITH FAUST

Proceedings of the SMC 2009 - 6th Sound and Music Computing Conférence, Jul 2009, Porto, Portugal. pp.99-112

Faust 0.9.9.6 introduces new compilation options to automatically parallelize audio applications. This paper explains how the automatic parallelization is done and presents some benchmarks.

Yann Orlarey, Dominique Fober, Stephane Letz

Adding Automatic Parallelization to Faust

Linux Audio Conference, 2009, Parma, Italy

Faust 0.9.9.5 introduces new compilation options to do automatic parallelization of code using OpenMP. This paper explains how the automatic parallelization is done and presents some benchmarks.

Yann Orlarey, Stéphane Letz, Dominique Fober

Mots-clés :
FAUST, OpenMP, Parallelism, Processing, Signal

FAUST : an Efficient Functional Approach to DSP Programming

Editions DELATOUR FRANCE. NEW COMPUTATIONAL PARADIGMS FOR COMPUTER MUSIC, pp.65-96, 2009

FAUST is a programming language that provides a purely functional approach to signal processing while offering a high level of performance. FAUST aims at being complementary to existing audio languages by offering a viable and efficient alternative to C/C++ to develop signal processing libraries, audio plug-ins or standalone applications. The language is based on a simple and well defined formal semantics. A FAUST program denotes a signal processor, a mathemati... Lire la suite

FAUST is a programming language that provides a purely functional approach to signal processing while offering a high level of performance. FAUST aims at being complementary to existing audio languages by offering a viable and efficient alternative to C/C++ to develop signal processing libraries, audio plug-ins or standalone applications. The language is based on a simple and well defined formal semantics. A FAUST program denotes a signal processor, a mathematical function that transforms input signals into output signals. Being able to know precisely what a program computes is important not only for programmers, but also for compilers needing to generate the best possible code. Moreover these semantics questions are crucial for the long term preservation of music programs. The following paragraphs will give an overview of the language as well as a description of the compiler, including the generation of parallel code.

Yann Orlarey, Dominique Fober, Stéphane Letz

Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal

Entre Calcul, Programmation et Création

PU Saint Etienne. Le Calcul de la Musique : Composition, Modèles et Outils, pp.331-365, 2009

L'objectif de ce texte est déssayer de répondre à la question suivante: qu'est-ce qui fait qu'un ordinateur et un langage de programmation deviennent des outils d'aide à la création ?

Semantics for multirate Faust

[Technical Report] GRAME. 2009

Faust is a functional programming language dedicated to the specification of executable monorate musical applications. We present here a multirate extension of the core of the Faust language, called MR Faust, together with a typing semantics, a denotational semantics and correctness theorems that link them together.

Pierre Jouvelot, Yann Orlarey

Mots-clés :
FAUST, Multirate, Processing, Signal

What's new in JACK2?

Linux Audio Conference, 2009, Parma, Italy

JACK2 is the future JACK version based on the C++ multi-processors Jackdmp version. This paper presents recent developments: the D-Bus based server control system, NetJack2 the redesigned network components for JACK and profiling tools developed during port on Solaris.

Stéphane Letz, Nedko Arnaudov, Romain Moret

Mots-clés :
Audio, D-Bus, Networked, Real-time, Server

The Guido Engine - A toolbox for music scores rendering

Linux Audio Conference, 2009, Parma, Italy. pp.105-111

The Guido Music Notation format (GMN) is a general purpose formal language for representing score level music in a platform independent plain text and human readable way. Based on this music representation format, the Guido Lib provides a generic, portable library and API for the graphical rendering of musical scores. This paper gives an introduction to the music notation format and to the Guido graphic score rendering engine. An example of application, the Gui... Lire la suite

The Guido Music Notation format (GMN) is a general purpose formal language for representing score level music in a platform independent plain text and human readable way. Based on this music representation format, the Guido Lib provides a generic, portable library and API for the graphical rendering of musical scores. This paper gives an introduction to the music notation format and to the Guido graphic score rendering engine. An example of application, the GuidoSceneComposer, is next presented.

Christophe Daudin, Dominique Fober, Stéphane Letz, Yann Orlarey

Mots-clés :
GUIDO, Layout, Music, Notation, Score

TIMING MEASUREMENTS IN JACK2

[Technical Report] GRAME. 2009

Timing measurements allow developers to help under- standing the behaviour of their JACK based applications. The server code base now allows to record various tim- ing while the server and clients are running and generate scripts to interpret them.

Stéphane Letz, Dominique Fober, Yann Orlarey

Mots-clés :
Audio, Profiling, Real-time, Server, Timing

La librairie GUIDO - Une boite à outils pour le rendu de partitions musicales.

Journées d'Informatique Musicale, 2009, Grenoble, France. pp.59-64

Le format GUIDO Music Notation (GMN) est un langage textuel et lisible de représentation de partitions musicales. Basée sur ce format, la GUIDOLib est une librairie multi-plateformes offrant une API de rendu graphique de partitions musicales. Cet article présente le format GMN et le moteur de rendu GUIDO. Un exemple d'application, le GUIDO Scene Composer, est ensuite décrit.

Christophe Daudin, Dominique Fober, Stéphane Letz, Yann Orlarey

Mots-clés :
Musicale, Notation

2008

Multicore technologies in Jack and Faust

International Computer Music Conference, 2008, Belfast, Ireland

Two ongoing research projects at Grame aim at providing efficient solution for audio applications on many/multi core systems. The first one is Jack- dmp, a C++ version of the Jack low-latency audio server for multi-core machines. The second is Faust, a compiled DSP language with auto parallelization features. This paper will briefly describe these two projects focusing on multi-core related questions.

Yann Orlarey, Stéphane Letz, Dominique Fober

Mots-clés :
Jack

2007

VEMUS - Feedback and Groupware Technologies for Music Instrument Learning

Sound and Music Computing Conference, 2007, Lefkada, Greece. pp.117-123

VEMUS is a european research project that aims at developing and validating an open music tuition framework for popular wind instruments such as the flute, the saxophone, the clarinet and the recorder. The system will address students of beginning to intermediate level. It proposes an innovative approach both at technological and pedagogical levels. This paper presents the project with a specific focus on the feedback technologies developed to extend the instru... Lire la suite

VEMUS is a european research project that aims at developing and validating an open music tuition framework for popular wind instruments such as the flute, the saxophone, the clarinet and the recorder. The system will address students of beginning to intermediate level. It proposes an innovative approach both at technological and pedagogical levels. This paper presents the project with a specific focus on the feedback technologies developed to extend the instrumental and pedagogic practices.

Dominique Fober, Stéphane Letz, Yann Orlarey

Mots-clés :
Feedback, Instrument, Learning, Music, Pedagogy

Visualisation du jeu instrumental

Journées d'Informatique Musicale, 2007, Lyon, France. pp.64-72

Nous abordons la visualisation du jeu instrumental sous l'angle de la représentation objective du son, avec pour objectif de rendre apparentes des caractéristiques du signal en termes d'interprétation musicale. Cet article expose les différentes stratégies mises en oeuvre pour exploiter voire amplifier la complémentarité des perceptions visuelles et sonores, avec un point de vue particulier sur les applications dans le domaine de la pédagogie de la pratique ins... Lire la suite

Nous abordons la visualisation du jeu instrumental sous l'angle de la représentation objective du son, avec pour objectif de rendre apparentes des caractéristiques du signal en termes d'interprétation musicale. Cet article expose les différentes stratégies mises en oeuvre pour exploiter voire amplifier la complémentarité des perceptions visuelles et sonores, avec un point de vue particulier sur les applications dans le domaine de la pédagogie de la pratique instrumentale.

Christophe Daudin, Dominique Fober, Stéphane Letz, Yann Orlarey, Yannick Chapuis

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

VEMUS - Une école de musique européenne virtuelle

Journées d'Informatique Musicale, 2007, Lyon, France. pp.57-63

VEMUS est un projet de recherche européen qui a pour objectif le développement et la validation d'un système ouvert et interactif d'apprentissage de la pratique instrumentale. Il traite d'instruments à vent tels que la flûte traversière, le saxophone, la clarinette et la flûte à bec. Il s'adresse à des étudiants de niveau débutant à intermédiaire. Il propose une démarche innovante, tant d'un point de vue technologique que sur un plan pédagogique. L'article prés... Lire la suite

VEMUS est un projet de recherche européen qui a pour objectif le développement et la validation d'un système ouvert et interactif d'apprentissage de la pratique instrumentale. Il traite d'instruments à vent tels que la flûte traversière, le saxophone, la clarinette et la flûte à bec. Il s'adresse à des étudiants de niveau débutant à intermédiaire. Il propose une démarche innovante, tant d'un point de vue technologique que sur un plan pédagogique. L'article présente le projet avec un accent particulier sur les technologies de feedback mises en oeuvre pour étendre les pratiques instrumentales et pédagogiques.

Dominique Fober, Stéphane Letz, Yann Orlarey

Mots-clés :
Feedback, Musicale, Pédagogie, Pratique

Annotation de partitions musicales dynamiques

Journées d'Informatique Musicale, 2007, Lyon, France. pp.18-27

Cet article traite de l'annotation visuelle à main levée de partitions musicales dynamiques : par dynamique, nous entendons la possibilité de recomposer, à la volée, les différents objets graphiques à l'intérieur de la page, ce qui nécessite de représenter les différentes annotations en conséquence. Nous décrivons ici les difficultés rencontrées et les solutions apportées au fil du développement de cet outil.

Yannick Chapuis, Dominique Fober, Stéphane Letz, Yann Orlarey, Christophe Daudin

Mots-clés :
Annotation, Musique, Partition

2006

DEMONSTRATION OF FAUST SIGNAL PROCESSING LANGUAGE

International Computer Music Conference (ICMC-2005), Sep 2006, Barcelona, Spain

FAUST is a compiled language designed for real-time audio signal processing. It is a free software published under the terms of the GNU General Public License. Sources and binaries are available at source forge : http://faudiostream.sourceforge.net. The demonstration will give an overview of the main features of the language and the compiler through several simple and practical examples.

Yann Orlarey, Dominique Fober, Stephane Letz

USING FAUST FOR FPGA PROGRAMMING

International Conference on Digital Audio Effects, 2006, Montreal, Canada. pp.287-290

In this paper we show the possibility of using FAUST (a programming language for function based block oriented programming) to create a fast audio processor in a single chip FPGA environment. The produced VHDL code is embedded in the on-chip processor system and utilizes the FPGA fabric for parallel processing. For the purpose of implementing and testing the code a complete System-On-Chip framework has been created. We use a Digilent board with a XILINX Virtex... Lire la suite

In this paper we show the possibility of using FAUST (a programming language for function based block oriented programming) to create a fast audio processor in a single chip FPGA environment. The produced VHDL code is embedded in the on-chip processor system and utilizes the FPGA fabric for parallel processing. For the purpose of implementing and testing the code a complete System-On-Chip framework has been created. We use a Digilent board with a XILINX Virtex 2 Pro FPGA. The chip has a PowerPC 405 core and the framework uses the on chip peripheral bus to interface the core. The content of this paper presents a proof-of-concept implementation using a simple two pole IIR filter. The produced code is working, although more work has to be done for implementing complex arithmetic operations support.

Robert Trausmuth, Christian Dusek, Yann Orlarey

Mots-clés :
FAUST

Miroirs technologiques pour la pratique instrumentale

Rencontres Musicales Pluridisciplinaires, 2006, Lyon, France. pp.87-92

La pratique d'un instrument de musique, le travail instrumental, son apprentissage, peuvent être vus comme des activités où le feedback joue un rôle prépondérant. Les technologies actuelles permettent d'envisager l'extension des pratiques instrumentales comme une extension du feedback fournit à l'instrumentiste, aussi bien dans les domaines sonores que visuels. Ce sont ces perspectives nouvelles qui sont présentées, avec leurs implications pour le travail instr... Lire la suite

La pratique d'un instrument de musique, le travail instrumental, son apprentissage, peuvent être vus comme des activités où le feedback joue un rôle prépondérant. Les technologies actuelles permettent d'envisager l'extension des pratiques instrumentales comme une extension du feedback fournit à l'instrumentiste, aussi bien dans les domaines sonores que visuels. Ce sont ces perspectives nouvelles qui sont présentées, avec leurs implications pour le travail instrumental et leurs applications dans le domaine pédagogique.

Dominique Fober

Mots-clés :
Feedback, Musicale, Pédagogie, Pratique

This document is a quick-reference to the Faust language (version 0.9.8), a programming language for real-time signal processing and synthesis that targets high-performance signal processing applications and audio plugins.

DSP Programming with Faust, Q and SuperCollider

Linux Audio Conference, 2006, Karlsruhe, Germany

Faust is a functional programming language for realtime signal processing and synthesis that targets high-performance signal processing applications and audio plugins. The paper gives a brief introduction to Faust and discusses its interfaces to Q, a general purpose functional programming language, and SuperCollider, an object-oriented sound synthesis language and engine.

Yann Orlarey, Albert Graef, Stefan Kersten

Mots-clés :
Computer, Digital, FAUST, Functional, Language, Music, Processing, Programming, Q, Signal, SuperCollider

2005

Implémentation d'un flot de données MIDI sur RTP

Journées d'Informatique Musicale, Association Française d'Informatique Musicale, Jun 2005, Paris, France. pp.13-19

RTP MIDI est une extension du protocole RTP (Real-Time Transport Protocol) pour la transmission de flux MIDI. Ce standard décrit un format permettant la paquetisation de toute commande pouvant apparaître légalement sur un câble DIN MIDI 1.0. Il utilise le cadre générique fourni par RTP et les outils qui lui sont associés afin de permettre une transmission de ces données MIDI en temps réel. Un tel protocole pourrait être utilisé dans le cadre d'applications inte... Lire la suite

RTP MIDI est une extension du protocole RTP (Real-Time Transport Protocol) pour la transmission de flux MIDI. Ce standard décrit un format permettant la paquetisation de toute commande pouvant apparaître légalement sur un câble DIN MIDI 1.0. Il utilise le cadre générique fourni par RTP et les outils qui lui sont associés afin de permettre une transmission de ces données MIDI en temps réel. Un tel protocole pourrait être utilisé dans le cadre d'applications interactives ou pour le streaming de fichiers. Le format propose également un mécanisme de réparation en cas de pertes de paquets lorsque le flux est transmis à travers un environnement réseau incertain. Après une brève présentation de MIDI et de RTP, l'article présente le domaine et les enjeux de RTP MIDI puis le format des paquets et les mécanismes de réparation décrits dans ce standard ainsi que, pour finir, nos travaux d'implémentation d'une bibliothèque permettant la création et l'analyse de payloads au format RTP MIDI et pouvant s'intégrer au système MidiShare.

Nicolas Falquet, Dominique Fober

Mots-clés :
Communication, MidiShare, Real-time, RTP

Jack audio server for multi-processor machines

International Computer Music Conference, 2005, Barcelona, Spain. pp.1-4

Jack is a low-latency audio server, written for POSIX conformant operating systems such as GNU/Linux. It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. We present a new C++ version for multi-processor machines that aims at removing some limitations of the current design: the activation system has been changed for a data flow model and lock-free programming techniques for graph acces... Lire la suite

Jack is a low-latency audio server, written for POSIX conformant operating systems such as GNU/Linux. It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. We present a new C++ version for multi-processor machines that aims at removing some limitations of the current design: the activation system has been changed for a data flow model and lock-free programming techniques for graph access have been used.

Stéphane Letz, Yann Orlarey, Dominique Fober

Mots-clés :
Audio, Lock-free, Multi-processor, Parallelism, Real-time

IMUTUS Score Processing Components

International Computer Music Conference, 2005, Barcelona, Spain. pp.427-430

IMUTUS is an IST European project that aims at the development of an open platform for training students on the recorder. Among the results of the project are two open source libraries for music representation and graphic notation: the MusicXML library, intended to support the MusicXML format and to provide music notation exchange capabilities, and the GUIDO library that provides a powerful graphic score engine. This paper introduces both libraries and describe... Lire la suite

IMUTUS is an IST European project that aims at the development of an open platform for training students on the recorder. Among the results of the project are two open source libraries for music representation and graphic notation: the MusicXML library, intended to support the MusicXML format and to provide music notation exchange capabilities, and the GUIDO library that provides a powerful graphic score engine. This paper introduces both libraries and describes their use in IMUTUS system.

Dominique Fober, Stéphane Letz, Yann Orlarey

Mots-clés :
GUIDO, Layout, Music, MusicXML, Score

Clock skew is one of the significant issues of real-time networking. We have previously proposed a new algorithm for clock skew detection that operates one a one-way measurement, simply based on time stamped packets. This algorithm was initially targeted to Internet transport context. It has been showed that it is also suitable to low latency transport conditions using an adequate parameters set. This report presents improvements to the algorithm as well as as... Lire la suite

Clock skew is one of the significant issues of real-time networking. We have previously proposed a new algorithm for clock skew detection that operates one a one-way measurement, simply based on time stamped packets. This algorithm was initially targeted to Internet transport context. It has been showed that it is also suitable to low latency transport conditions using an adequate parameters set. This report presents improvements to the algorithm as well as as well as parameters characterization, along with the corresponding performance measurements.

Dominique Fober, Yann Orlarey, Stéphane Letz

Mots-clés :
Clock, Networking, Real, Skew, Time