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
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.
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.
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
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
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
Jack audio server for multi-processor machines
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.
Mots-clés :
Audio, Lock-free, Multi-processor, Parallelism, Real-time
Real Time Clock Skew Estimation over Network Delays
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.
Mots-clés :
Clock, Networking, Real, Skew, Time
IMUTUS Score Processing Components
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.
jackdmp: Jack server for multi-processor machines
jackdmp is a C++ version of the Jack low-latency audio server for multi-processor machines. It is a new implementation of the jack server core features that aims in 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 to have a more dynamic and robust system. We present the new design and the implementation for MacOSX.
Mots-clés :
Audio, Lock-free, Multi-processor, Parallelism, Real-time
Optimized Lock-Free FIFO Queue continued
We have proposed algorithms for lock-free lifo and fifo queue management. This technical report proposes an improved version of the lock-free fifo management algorithm previously defined.
Mots-clés :
Concurrency, Fifo, Lifo, Lock-free
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
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.
2004
Jack Audio Server: MacOSX port and multi-processor version
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 the port for Apple's MacOS X, and new developments to take advantage of multi-processor architecture.
Mots-clés :
Architecture, Audio, Real-time
Open source tools for music representation and notation
Although numerous systems and applications exist for music representation and graphic notation, there are few resources available to developers. We present two open source projects that aim at making up for this lack of components: 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, based on the GUIDO music notation format.
Mots-clés :
GUIDO, Language, Music, MusicXML, Representation
MidiShare : une architecture logicielle pour la musique
Le développeur d'une application musicale est souvent confronté à des problèmes difficiles à résoudre, notamment parce qu'ils sont relatifs à la maîtrise du temps. Le manque de support des systèmes déxploitations courants, l'absence de standard, les problèmes de portabilité qui en résultent ne facilitent pas la tâche du programmeur. Nous présentons MidiShare, une architecture logicielle qui a été conçue dans le but de couvrir les besoins des applications musica... Lire la suite
Le développeur d'une application musicale est souvent confronté à des problèmes difficiles à résoudre, notamment parce qu'ils sont relatifs à la maîtrise du temps. Le manque de support des systèmes déxploitations courants, l'absence de standard, les problèmes de portabilité qui en résultent ne facilitent pas la tâche du programmeur. Nous présentons MidiShare, une architecture logicielle qui a été conçue dans le but de couvrir les besoins des applications musicales de manière homogène, durable et portable. Nous montrons également à travers plusieurs exemples, comment cette architecture facilite le développement, notamment grâce à des mécanismes simples et efficaces de gestion du temps et de communication en temps réel.
Mots-clés :
Communication, Network, Real-time, Wireless
Syntactical and Semantical Aspects of Faust
This paper presents some syntactical and semantical aspects of FAUST (Functional AUdio STreams), a programming language for real-time sound processing and synthesis. The programming model of FAUST combines two approaches : functional programming and block-diagrams composition. It is based on a block-diagram algebra. It has a well defined formal semantic and can be compiled into efficient C/C++ code.
Mots-clés :
Compiler, Dataflow, Functional programming, Real-time, Signal, Processing
IMUTUS - an Interactive Music Tuition System
IMUTUS is a European project that aims at the development of an open platform for training students on non-MIDI musical instruments, as well as to acquire theoretical music knowledge. The project involves many components oriented towards a new approach of music learning. After a brief overview of the system, the performance evaluation module and the music score processing components are described to show how they enforce the pedagogical approach.
Les normes MIDI et MIDIFiles
2003
Automatic vectorization in Faust
Faust is a Block-Diagram language for sound signal processing and synthesis. It implements a new algebraic representation of block-diagrams and adopts a functional model of semantics instead of a data flow model. Based on these elements, a compiler able to translate DSP block diagram specification into C code is briefly presented. The code produced proves to be efficient and can compete with a hand written code. The optimization process is even pushed further:... Lire la suite
Faust is a Block-Diagram language for sound signal processing and synthesis. It implements a new algebraic representation of block-diagrams and adopts a functional model of semantics instead of a data flow model. Based on these elements, a compiler able to translate DSP block diagram specification into C code is briefly presented. The code produced proves to be efficient and can compete with a hand written code. The optimization process is even pushed further: the C code produced can be automatically vectorized to address Altivec extension for PowerPC (instruction-motorola) and SSE and SSE2 extensions for Intel architecture (instruction-intel). A method is proposed to determine whether or not a Faust expression can be vectorized by crossing a type information (synthesized during an upward run-around in the syntactic tree to be compiled) and a contextual information (inherited during a downward run-around in the syntactic tree). Thanks to this method, we are able to find expressions that can be vectorized inside recursive expressions that are not supposed to be vectorizable. The quality of the code produced by Faust is evaluated. On one hand, scalar code produced by Faust is compared to vector code produced by Faust, on the other hand, scalar and vector code are compared to code optimized by hand. In the end, we briefly present code transformations to vectorize the expressions classed as non-vectorizable by the previous method so that even better performances can be achieved in the future.
Mots-clés :
Audio, Compiler, Processing, Signal, Vectorization
Evaluation des performances de 802.11b
L'utilisation de réseaux sans fil dans le domaine musical ouvre des perspectives prometteuses, tant d'un point de vue artistique que technique. Ce domaine d'application impose cependant des contraintes de fiabilité et de temps réel spécifiques. Nous avons donc mesuré les performances de 802.11b en fonction de ces contraintes et nous présentons les résultats correspondants ainsi que leur analyse.
Mots-clés :
Communication, Network, Real-time, Wireless
A FAUST Tutorial
This document presents the language FAUST, its syntax and grammar as well as several commented examples. FAUST (the name stands for Functional Audio Streams) is a programming language specifically designed to develop and implement efficient real time digital signal processors.
Mots-clés :
Audio, Block-diagrams, Functionnal, Processing, Programming, Real, Signal, Time
2002
An Algebra for Block Diagram Languages
We propose an algebraic approach to block diagram construction as an alternative to the classical graph approach inspired by dataflow models. The proposed algebra is based on three binary operations of construction : sequential, parallel and recursive constructions. These operations can be seen as high level connection schemes that set several connections at once in order to combine two block diagrams to form a new one. Algebraic representations have interestin... Lire la suite
We propose an algebraic approach to block diagram construction as an alternative to the classical graph approach inspired by dataflow models. The proposed algebra is based on three binary operations of construction : sequential, parallel and recursive constructions. These operations can be seen as high level connection schemes that set several connections at once in order to combine two block diagrams to form a new one. Algebraic representations have interesting application for visual languages based on block diagrams and are useful to specify the formal semantic of these languages.
Mots-clés :
Algebra, Block-diagram, Dataflow, Denotational, DSP, Graph, Semantic
Lock-Free Techniques for Concurrent Access to Shared Objects
Concurrent access to shared data in preemptive multi-tasks environment and in multi-processors architecture have been subject of many works. Proposed solutions are commonly based on semaphores which have several drawbacks. For many cases, lock-free techniques constitute an alternate solution and avoid the disadvantages of semaphore based techniques. We present the principle of these lock-free techniques with the simple example of a LIFO stack. Then, based on Mi... Lire la suite
Concurrent access to shared data in preemptive multi-tasks environment and in multi-processors architecture have been subject of many works. Proposed solutions are commonly based on semaphores which have several drawbacks. For many cases, lock-free techniques constitute an alternate solution and avoid the disadvantages of semaphore based techniques. We present the principle of these lock-free techniques with the simple example of a LIFO stack. Then, based on Michael-Scott previous work, we propose a new algorithm to implements lock-free FIFO stacks with a simple constraint on the data structure.
Mots-clés :
Access, Computation, Concurrent, Lock-free, Parallel, Real-time
An Algebraic approach to Block Diagram Constructions
We propose an algebraic approach to block diagram construction as an alternative to the classical graph approach inspired by dataflow models. This block diagram algebra is based on three binary operations : sequential, parallel and recursive constructions. These operations can be seen as high level connection schemes that set several connections at once in order to combine two block diagrams to form a new one. Such algebraic representations have interesting app... Lire la suite
We propose an algebraic approach to block diagram construction as an alternative to the classical graph approach inspired by dataflow models. This block diagram algebra is based on three binary operations : sequential, parallel and recursive constructions. These operations can be seen as high level connection schemes that set several connections at once in order to combine two block diagrams to form a new one. Such algebraic representations have interesting applications for visual languages based on block diagrams. In particular they are very useful to specify the formal semantic of these languages.
Mots-clés :
Algebra, Block-diagram, Dataflow, Denotational, DSP, Graph, Semantic
Etude de l'extension de la notion d'abstraction du lambda-calcul.
Le programme Elody repose principalement sur les concepts du lambda-calcul, notamment les notions d'abstraction et d'application. L'abstraction classique a été étendue dans [leplatre] afin de permettre des manipulations plus puissantes de lambda-termes. Cette extension reposait sur une relation de généralité définie entre deux termes. Nous étudions ici plus précisément comment définir une relation de généralité entre deux termes, dans un but un peu différent du... Lire la suite
Le programme Elody repose principalement sur les concepts du lambda-calcul, notamment les notions d'abstraction et d'application. L'abstraction classique a été étendue dans [leplatre] afin de permettre des manipulations plus puissantes de lambda-termes. Cette extension reposait sur une relation de généralité définie entre deux termes. Nous étudions ici plus précisément comment définir une relation de généralité entre deux termes, dans un but un peu différent du précédent: nous souhaitons pouvoir représenter des ensembles de termes, avec comme intuition qu'un terme représente lénsemble de tous les termes moins généraux que lui. On cherche donc d'abord à obtenir une définition précise à partir de cette idée intuitive, en envisageant différentes définitions possibles, et on étudie les conséquences du choix qui semble le plus logique. La définition adoptée permet de définir une relation d'ordre et une relation d'équivalence qu'il convient de caractériser. On montre ensuite qu'il est possible de définir la borne supérieure et la borne inférieure d'un ensemble fini de termes, ce qui correspond à l'union et à l'intersection pour les ensembles de termes. On obtient finalement un cadre théorique assez net autour de la notion de généralité, qui permet dénvisager d'autres développements en manipulant des ensembles de termes. A titre déxemple, on présente les algorithmes permettant déffectuer les opérations sur les termes discutées précédemment, et enfin le code source commenté d'une implémentation simple en Caml.
Mots-clés :
Elody, Lambda-calcul, Language, Music, Programming
Audio Cards Clock Skew Compensation over a Local Network
This paper is the continuation of a previous work done on clock skew compensation over a high latency network. It evaluates the efficiency of the EPTMA clock skew detection algorithm applied to real-time audio streaming over a local network. The presented results include real world apparent deviations of audio card clocks and acuracy of the skew detection. It appears that EPMTA is very suitable to measure clocks deviation in the context of audio transport. Fina... Lire la suite
This paper is the continuation of a previous work done on clock skew compensation over a high latency network. It evaluates the efficiency of the EPTMA clock skew detection algorithm applied to real-time audio streaming over a local network. The presented results include real world apparent deviations of audio card clocks and acuracy of the skew detection. It appears that EPMTA is very suitable to measure clocks deviation in the context of audio transport. Finally, a simple method to compensate for the clock skew is presented, mainly to evaluate a complete solution for audio streaming.
Clock Skew Compensation over a High Latency Network
Exchange of time stamped events between different stations raises the problem of the clock frequencies difference as soon as one station try to compensate for the transmission delay and to render the events with a minimum time distortion. We propose a simple, efficient and low cost method to compensate for the clock frequencies difference. This method rely only on regular time stamped packets transmissions and may be used in many cases. It provides good perform... Lire la suite
Exchange of time stamped events between different stations raises the problem of the clock frequencies difference as soon as one station try to compensate for the transmission delay and to render the events with a minimum time distortion. We propose a simple, efficient and low cost method to compensate for the clock frequencies difference. This method rely only on regular time stamped packets transmissions and may be used in many cases. It provides good performances to the receiver station in regard of the sender reference time even on a heavily loaded communication channel. It operates also very efficiently on a low latency local network
Mots-clés :
Clock, Communication, Music, Network, Real-time, Synchronization