2010
Automatic Parallelization of Audio Applications with Faust
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... Lire la suite
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}.
Time Synchronization in Graphic Domain - A new paradigm for Augmented Music Scores
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.
Mots-clés :
Music, Notation, Synchronization
First Steps Towards an Organology Of Virtual Instruments In Computer Music
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.
Mots-clés :
FAUST
Automatic Paralllelization of Audio Applications with Faust
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.
Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal
Dependent Vector Types for Multirate Faust
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.
Partitions musicales augmentées
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.
Mots-clés :
Graphique, Interprétation, Musicale, Partition, Signal, Synchronization
INTERLUDE - A FRAMEWORK FOR AUGMENTED MUSIC SCORES
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.
Mots-clés :
Graphic, Interaction, Music, Score, Synchronization
Work Stealing Scheduler for Automatic Parallelization in Faust
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.
Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal
2009
PARALLELIZATION OF AUDIO APPLICATIONS WITH FAUST
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.
La librairie GUIDO - Une boite à outils pour le rendu de partitions musicales.
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.
Adding Automatic Parallelization to Faust
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.
Mots-clés :
FAUST, OpenMP, Parallelism, Processing, Signal
FAUST : an Efficient Functional Approach to DSP Programming
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.
Mots-clés :
Compiler, Dataflow, Functional, Processing, Programming, Real-time, Signal
Semantics for multirate Faust
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.
Mots-clés :
FAUST, Multirate, Processing, Signal
What's new in JACK2?
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.
Entre Calcul, Programmation et Création
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 ?
Mots-clés :
Création, De, Language, Musique, Programmation
The Guido Engine - A toolbox for music scores rendering
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.
TIMING MEASUREMENTS IN JACK2
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.
2008
Multicore technologies in Jack and Faust
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.
Mots-clés :
Jack
2007
VEMUS - Feedback and Groupware Technologies for Music Instrument Learning
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.
Mots-clés :
Feedback, Instrument, Learning, Music, Pedagogy
Visualisation du jeu instrumental
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.
Mots-clés :
Visualisation, Musique, Pédagogie
VEMUS - Une école de musique européenne virtuelle
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.
Annotation de partitions musicales dynamiques
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.
Mots-clés :
Annotation, Musique, Partition
2006
DEMONSTRATION OF FAUST SIGNAL PROCESSING LANGUAGE
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.
DSP Programming with Faust, Q and SuperCollider
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.
Mots-clés :
Computer, Digital, FAUST, Functional, Language, Music, Processing, Programming, Q, Signal, SuperCollider
Faust 0.9.8 Quick Reference
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.
Mots-clés :
Digital, Functional, Processing, Programming, Signal
USING FAUST FOR FPGA PROGRAMMING
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.
Mots-clés :
FAUST
Miroirs technologiques pour la pratique instrumentale
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.
2005
Implémentation d'un flot de données MIDI sur RTP
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.
Mots-clés :
Communication, MidiShare, Real-time, RTP
IMUTUS - An effective practicing environment for music tuition.
This paper presents some major results from the IMUTUS project. IMUTUS was an RTD project that aimed at the development of an open platform for training students on the recorder. The paper focuses on one of the most important and innovative parts of the IMUTUS system, the practicing environment. This environment integrates technological tools for the automatic analysis and evaluation of student performances along with enhanced interaction schemes to provide an... Lire la suite
This paper presents some major results from the IMUTUS project. IMUTUS was an RTD project that aimed at the development of an open platform for training students on the recorder. The paper focuses on one of the most important and innovative parts of the IMUTUS system, the practicing environment. This environment integrates technological tools for the automatic analysis and evaluation of student performances along with enhanced interaction schemes to provide an effective approach to music learning. Testing and validation activities that have been carried out indicate that the IMUTUS approach is appreciated by both students and teacher, and that it clearly has a strong potential.
RTP MIDI : Recovery Journal Evaluation and Alternative Proposal
An RTP payload for MIDI commands is under development. As a part of this draft, a default resiliency mechanism for the transport over lossy networks defines a journalling method called recovery journal. But the theoretical size of this recovery journal can be very large and its format is complex. This report will present an empirical evaluation of the recovery journal size based on a few MidiFiles. We will also propose an alternative solution for the resiliency... Lire la suite
An RTP payload for MIDI commands is under development. As a part of this draft, a default resiliency mechanism for the transport over lossy networks defines a journalling method called recovery journal. But the theoretical size of this recovery journal can be very large and its format is complex. This report will present an empirical evaluation of the recovery journal size based on a few MidiFiles. We will also propose an alternative solution for the resiliency of RTP MIDI streams based on the combined use of redundancy and retransmissions. Our solution is simpler and might be interesting for some scenarios, typically: short grouping times, complex streams or unconventional semantics.
Mots-clés :
Communication, MidiShare, Real-time, RTP