![grame_publications.png](/assets/f1920x1200-q85-p1/b2c1f27d/grame_publications.png)
![grame_publication_motif.png](/assets/f1920x1200-q85-p1/dbb037b3/grame_publication_motif.png)
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
2001
Porting PortAudio API on ASIO
This document describes a port of the PortAudio API using the ASIO API on Macintosh and Windows. It explains technical choices used, buffer size adaptation techniques that guarantee minimal additional latency, results and limitations.
Mots-clés :
Audio, Portability, Techniques
Un pitchtracker monophonique
Nous présentons ici un détecteur de hauteur de note basé sur une amélioration du vocodeur de phase. Cette amélioration, permettant une meilleure précision en temps et en fréquence, est parfaitement adaptée à une utilisation en temps réel. Une attention particulière a été portée sur la possibilité d'intégration de ce détecteur dans différents systèmes.
Real Time Musical Events Streaming over Internet
We present a new protocol to transmit time ordered events in real-time over Internet and to operate a correct time rendering on the receiver side. This protocol provides solutions to compensate for the network latency, to optimize the bandwidth use and to take account of the clock drift of the different stations involved in a transmission. It is particularly suitable to transmit musical events such as MIDI events. The implementation is based on the User Datagra... Lire la suite
We present a new protocol to transmit time ordered events in real-time over Internet and to operate a correct time rendering on the receiver side. This protocol provides solutions to compensate for the network latency, to optimize the bandwidth use and to take account of the clock drift of the different stations involved in a transmission. It is particularly suitable to transmit musical events such as MIDI events. The implementation is based on the User Datagram Protocol (UDP) however, the proposed solution is independant of the underlying network layers.
Optimised Lock-Free FIFO Queue
Concurrent access to shared data in preemptive multi-tasks environment and in multi-processors architecture have been subject to many works. Based on these works, we present a new algorithm to implements lock-free fifo stacks with a minimum constraints on the data structure. Compared to the previous solutions, this algorithm is more simple and more efficient. We'll present its implementation and it's performances.
Mots-clés :
Concurrency, Fifo, Lifo, Lock-free
Callback adaptation techniques
This document describes a callback adaptation technique developed for the PortAudio port on ASIO. This method handle buffers of different sizes and guarantee lowest latency added by buffer size adaptation.
Mots-clés :
Audio, Techniques
Real-Time IPC on a client / server model: Multiple OS performances benchmark
This paper presents inter processus communication (IPC) real-time performances measured on different operating systems, including GNU/Linux, Windows 98, 2000, NT 4.0 and MacOS X. The adopted point of view is based on a client / server model. The operating systems behavior and message transmission latency times are evaluated in different contexts: with one to ten clients for the server, with systems more or less busy with alternate tasks. As we wanted to measure... Lire la suite
This paper presents inter processus communication (IPC) real-time performances measured on different operating systems, including GNU/Linux, Windows 98, 2000, NT 4.0 and MacOS X. The adopted point of view is based on a client / server model. The operating systems behavior and message transmission latency times are evaluated in different contexts: with one to ten clients for the server, with systems more or less busy with alternate tasks. As we wanted to measure real world performances, the benchmarks have been applied to operating systems running standard default configurations. Each time it was possible, we compared the different systems on the base of local Unix sockets communication way. But above all, we choose the most efficient communication way per system to evaluate the overall best performances that one can expect in a client / server model.
Transmission d'événements musicaux en temps réel sur Internet
Nous présentons un nouveau protocole s'appuyant sur UDP, permettant de transmettre des événements datés en temps réel et fournissant au récepteur, les moyens d'une restitution temporelle correcte. Ce protocole inclus des mécanismes permettant de compenser la latence du réseau et d'optimiser l'utilisation de la bande passante. Il prend également en compte les dérives d'horloges des différentes machines impliquées dans une transmission. Il est particulièrement ad... Lire la suite
Nous présentons un nouveau protocole s'appuyant sur UDP, permettant de transmettre des événements datés en temps réel et fournissant au récepteur, les moyens d'une restitution temporelle correcte. Ce protocole inclus des mécanismes permettant de compenser la latence du réseau et d'optimiser l'utilisation de la bande passante. Il prend également en compte les dérives d'horloges des différentes machines impliquées dans une transmission. Il est particulièrement adapté à la transmission d'événements musicaux tels que les messages MIDI.
MidiShare Server: a proposed new architecture for the MidiShare Kernel
MidiShare is a portable software architecture for musical applications, based on a client/server model. Up to now and along all the supported operating systems (GNU/Linux, MacOS, Windows), it has always been implemented at low level operating system layer. This choice was dictated by efficiency and time constraints. The main drawback of using low level layers is the lack of portability and the complexity of the kernel extensions design. Recent evolutions of ope... Lire la suite
MidiShare is a portable software architecture for musical applications, based on a client/server model. Up to now and along all the supported operating systems (GNU/Linux, MacOS, Windows), it has always been implemented at low level operating system layer. This choice was dictated by efficiency and time constraints. The main drawback of using low level layers is the lack of portability and the complexity of the kernel extensions design. Recent evolutions of operating systems, combined with important technology improvements, have made possible to consider a more portable architecture for MidiShare. This document presents a proposed new architecture, based on a user level design.
2000
Real-time Composition in Elody
Elody was initially an environment for musical composition allowing the description and algorithmic manipulation of non real-time musical structures. To allow the definition of real-time transformation processes, we have added a new primitive in the language : the real-time input stream. This object can be manipulated and transformed like non real-time objects even before being known. Evaluating a real-time expression gives as result a command sequence which dr... Lire la suite
Elody was initially an environment for musical composition allowing the description and algorithmic manipulation of non real-time musical structures. To allow the definition of real-time transformation processes, we have added a new primitive in the language : the real-time input stream. This object can be manipulated and transformed like non real-time objects even before being known. Evaluating a real-time expression gives as result a command sequence which drives a transformation engine. This one transforms a real-time input stream in an output stream.
Mots-clés :
Composition, Elody, Real-time
Le projet MidiShare / Open Source
MidiShare est un système d'exploitation musical temps-réel, dédié aux applications MIDI. Originellement conçu en 1989, il a été récompensé depuis du prix Apple Trophy (1989), du prix Paris-Cité (1990) et plus récemment du Max d'Or au concours international du logiciel musical de Bourges (1999). Parmi les éléments remarquables du système figurent sa disponibilité sur les principales plates-formes matérielles, son puissant système de communication inter-applicati... Lire la suite
MidiShare est un système d'exploitation musical temps-réel, dédié aux applications MIDI. Originellement conçu en 1989, il a été récompensé depuis du prix Apple Trophy (1989), du prix Paris-Cité (1990) et plus récemment du Max d'Or au concours international du logiciel musical de Bourges (1999). Parmi les éléments remarquables du système figurent sa disponibilité sur les principales plates-formes matérielles, son puissant système de communication inter-applications ainsi que ses performances temps réel. Il faut également mentionner la simplicité d'utilisation et de programmation de MidiShare qui ont certainement contribué à en faire un système supporté par un nombre grandissant de projets. L'ampleur actuelle du projet ainsi que l'évolution du contexte dans lequel MidiShare est amené à opérer nous ont conduit à en faire un projet 'Open Source' et à repenser l'architecture même du noyau, de telle sorte qu'elle permette une meilleure prise en compte des problèmes de portabilité ainsi qu'une plus grande souplesse dans le design de composants tels que les drivers. Ce sont ces évolutions qui sont présentées, notamment à travers une implémentation récente de MidiShare pour GNU/Linux, réalisée sur la base de cette nouvelle architecture.
1999
Modèles de structures tonales dans Elody
Les logiciels d'aide à la composition musicale
Le XXème siècle aura vu le champ d'action du domaine musical prodigieusement élargi, à la fois par l'apparition de nouveaux moyens techniques de production du son, que par l'apparition de nouveaux modes d'investigation de la pensée musicale. Celle-ci s'affranchit des procédés classiques de composition pour explorer une grande variété et une grande richesse de modèles de pensée qui naissent notamment de la confrontation et de l'échange avec des domaines scientif... Lire la suite
Le XXème siècle aura vu le champ d'action du domaine musical prodigieusement élargi, à la fois par l'apparition de nouveaux moyens techniques de production du son, que par l'apparition de nouveaux modes d'investigation de la pensée musicale. Celle-ci s'affranchit des procédés classiques de composition pour explorer une grande variété et une grande richesse de modèles de pensée qui naissent notamment de la confrontation et de l'échange avec des domaines scientifiques eux aussi en pleine mutation. C'est à la fin des années 50 que naîtra l'informatique musicale. Cette discipline créera progressivement des outils qui vont s'inscrire en prolongement de ces évolutions, mais vont surtout leur ouvrir des perspectives beaucoup plus vastes tout en modifiant radicalement les moyens d'action de la pensée musicale. Ce sont ces nouveaux outils, le contexte de leur apparition ainsi que leur lien avec la pensée musicale qui sont présentés avec un point de vue particulier sur les langages formels pour l'écriture musicale.
Mots-clés :
Composition, Formel, Langage, Musicale
The Distributed Musical Rehearsal Environment
We developed an asynchronous transfer mode-based environment for distributed musical rehearsals in an immersive teleconference environment. This article describes the technical specifications of the installations and the organization and studio setup of these rehearsals. We present our implementation of the environment and give the results obtained from the organized distributed musical rehearsal trials.
Mots-clés :
Distributed system, Music, Real-time
Lambda-Calcul, Programmabilité et Composition Musicale
MidiShare joins the Open Source Softwares
MidiShare is a realtime, multi-tasks operating system dedicated to musical MIDI applications. It was awarded the Apple Trophy (1989), the Paris-City price (1990) and more recently, the Max d'Or at the Bourges International Musical Software Competition (1999). Multi-platform support, powerful inter-applications communication, accurate realtime performances are among the significant services provided by the kernel. Freely available on the Internet to developers s... Lire la suite
MidiShare is a realtime, multi-tasks operating system dedicated to musical MIDI applications. It was awarded the Apple Trophy (1989), the Paris-City price (1990) and more recently, the Max d'Or at the Bourges International Musical Software Competition (1999). Multi-platform support, powerful inter-applications communication, accurate realtime performances are among the significant services provided by the kernel. Freely available on the Internet to developers since several years, MidiShare is now supported by a growing number of projects. Its developers mailing list count 250 members on average. The MidiShare project itself is reaching a state which requires a different management policy: the MidiShare source code is now publicly available to allow collaborative contributions over the Internet. The poster session will present this new project, including changes in the kernel architecture, the source code portability issues and the organization of the collaborative development over the Internet.
1998
Cristallisation d'applications musicales par collaboration
Le développement de la communication et de la collaboration inter-applications conduisent à l'élaboration de systèmes de plus en plus modulaires, basés sur des composants élémentaires et spécialisés qui sont amenés à collaborer pour produire des comportements émergents complexes. Dans le domaine musical, MidiShare fournit les fondements à de tels systèmes en prenant en compte les besoins spécifiques des applications musicales. L'étape ultérieure de la collabora... Lire la suite
Le développement de la communication et de la collaboration inter-applications conduisent à l'élaboration de systèmes de plus en plus modulaires, basés sur des composants élémentaires et spécialisés qui sont amenés à collaborer pour produire des comportements émergents complexes. Dans le domaine musical, MidiShare fournit les fondements à de tels systèmes en prenant en compte les besoins spécifiques des applications musicales. L'étape ultérieure de la collaboration entre applications consiste naturellement à fournir des systèmes permettant de la simplifier et de l'automatiser. C'est en ce sens que nous présentons un nouveau concept : la 'cristallisation de programme' qui consiste à assembler dynamiquement des applications séparées.
Mots-clés :
Collaboration, Architecture, Communication, Logicielle, Temps-reel, MidiShare
The Role of Lambda-Abstraction in Elody
The Elody music composition environment proposes lambda-abstraction on musical structures as a fundamental mechanism to represent user-defined musical concepts and compositional processes. The user can define new musical concepts either on top of concrete musical objects by generalizing them via an abstraction operation, or by composing and transforming previously defined abstractions. As the paper will show through several examples, this approach leads to a qu... Lire la suite
The Elody music composition environment proposes lambda-abstraction on musical structures as a fundamental mechanism to represent user-defined musical concepts and compositional processes. The user can define new musical concepts either on top of concrete musical objects by generalizing them via an abstraction operation, or by composing and transforming previously defined abstractions. As the paper will show through several examples, this approach leads to a quite natural formalization as well as a convenient active notation for many musical notions and compositional techniques.
Mots-clés :
Elody, Functional programming, Lambda calculus
le Son & l'Espace
Mots-clés :
Acoustique, Musicologie, Psychoacoustique, Techniques audio, Neurophysiologie
1997
Elody : a Java+MidiShare based Music Composition Environment
This paper introduces Elody, a MidiShare compatible music composition environment developed in Java. The heart of Elody is a visual functional language derived from the G-Calculus. The languages expressions are handled through visual constructors and Drag and Drop actions allowing the user to play in realtime with the language.
Mots-clés :
Composition, Elody, Functional programming, Music