2017
Faust audio DSP language for JUCE
Faust [Functional Audio Stream] is a functional programming language specifically designed for real- time signal processing and synthesis [1]. It consists of a compiler that translates a Faust program into an equivalent C++ program, taking care of generat- ing the most efficient code. JUCE is an open-source cross-platform C++ application framework devel- oped since 2004, and bought by ROLI1 in Novem- ber 2014, used for the development of desktop and mobile appl... Lire la suite
Faust [Functional Audio Stream] is a functional programming language specifically designed for real- time signal processing and synthesis [1]. It consists of a compiler that translates a Faust program into an equivalent C++ program, taking care of generat- ing the most efficient code. JUCE is an open-source cross-platform C++ application framework devel- oped since 2004, and bought by ROLI1 in Novem- ber 2014, used for the development of desktop and mobile applications. A new feature to the Faust environnement is the addition of architectures files to provide the glue between the Faust C++ output and the JUCE framework. This article presents the overall design of the architecture files for JUCE.
2015
Faust audio DSP language in the Web
With the advent of both HTML5 and the Web Audio API (a high-level JavaScript API for audio process- ing and synthesis) interesting audio applications can now be developed for the Web. The Web Audio API offers a set of fast predefined audio nodes as well as customizable ScriptProcessor node, allowing developers to add their own javascript audio processing code. Several projects are developing abstractions on top of the Web Audio API to extend its capabilities, a... Lire la suite
With the advent of both HTML5 and the Web Audio API (a high-level JavaScript API for audio process- ing and synthesis) interesting audio applications can now be developed for the Web. The Web Audio API offers a set of fast predefined audio nodes as well as customizable ScriptProcessor node, allowing developers to add their own javascript audio processing code. Several projects are developing abstractions on top of the Web Audio API to extend its capabilities, and offer more complex unit generators, DSP effects libraries, or adapted syntax. This paper brings an- other approach based on the use of the Faust audio DSP language to develop additional nodes to be used as basic audio DSP blocks in the Web Audio graph. Different methods have been explored: going from an experimental version that embeds the complete Faust native compilation chain (based on libfaust + LLVM) in the browser, to more portable solutions using JavaScript or the much more efficient asm.js version. Embedding the Faust compiler it- self as a pure JavaScript library (produced using Emscripten) will also be described.The advantages and issues of each approach will be discussed and some benchmarks will be given.
Mots-clés :
Domain Specific Language, DSP, FAUST, Real-time, Web Audio API
2012
Real-Time Score Notation from Raw MIDI Inputs
This paper describes tools designed and experiments conducted in the context of MIROR, a European project investigating adaptive systems for early childhood music education based on the paradigm of reflexive interaction. In MIROR, music notation is used as the trace of both the user and the system activity, produced from MIDI instruments. The task of displaying such raw MIDI inputs and outputs is difficult as no a priori information is known concerning the unde... Lire la suite
This paper describes tools designed and experiments conducted in the context of MIROR, a European project investigating adaptive systems for early childhood music education based on the paradigm of reflexive interaction. In MIROR, music notation is used as the trace of both the user and the system activity, produced from MIDI instruments. The task of displaying such raw MIDI inputs and outputs is difficult as no a priori information is known concerning the underlying tempo or metrical structure. We describe here a completely automatic processing chain from the raw MIDI input to a fully-fledge music notation. The low level music description is first converted in a score level description and then automatically rendered as a graphic score. The whole process is operating in real-time. The paper describes the various conversion steps and issues, including extensions to support score annotations. The process is validated using about 30,000 musical sequences gathered from MIROR experiments and made available for public use.
Mots-clés :
MIDI, Music score, Real-time
2010
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
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
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
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.
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.
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
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
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
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
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
2003
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
2002
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
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
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.
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 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.
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.
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.
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
1999
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
1997
Distributed Musical Rehearsal
Bringing together a group of musicians and a conductor for a musical rehearsal requires advance planning and an important budget in order to cover travel and subsidiary costs. We have developed an ATM based telepresence environment allowing small groups of musicians that are located in different sites to rehearse as if they were present in the same room and have organized a first distributed musical rehearsal trial. The trial allowed us to test and evaluate the... Lire la suite
Bringing together a group of musicians and a conductor for a musical rehearsal requires advance planning and an important budget in order to cover travel and subsidiary costs. We have developed an ATM based telepresence environment allowing small groups of musicians that are located in different sites to rehearse as if they were present in the same room and have organized a first distributed musical rehearsal trial. The trial allowed us to test and evaluate the system, according to a methodology we developed and to draw first conclusions regarding its performance and usability.
Mots-clés :
Distributed system, Music, Real-time
1996
Recent developments of MidiShare
MidiShare is a real-time multi-tasks musical operating system first presented at the ICMC 89. Based on a client/server model, MidiShare offers fast and accurate real-time performances, multi-platform support, powerful inter-application communications, while considerably simplifying the development of complex real-time musical applications. MidiShare has been used by our institution for internal developments for more than 7 years. It was awarded by the Apple Tro... Lire la suite
MidiShare is a real-time multi-tasks musical operating system first presented at the ICMC 89. Based on a client/server model, MidiShare offers fast and accurate real-time performances, multi-platform support, powerful inter-application communications, while considerably simplifying the development of complex real-time musical applications. MidiShare has been used by our institution for internal developments for more than 7 years. It was awarded by the Apple Trophy 89 and the Paris-Cité 90 prize. Today, it is evolving toward a distributed multi-platform environment. The poster session will present and demonstrate its recent developments: the MidiShare environment, the developer's kit and documentation, multi-platform development issues, libraries, Ethernet support, compatibility with other systems and third parties applications.
1995
Real Time Functional Languages
This paper introduces two real-time functional programming languages. The first one aims to describe temporal trajectories. The second allows the manipulation of both real-time and deferred time streams. We shall describe the architecture of the real-time reduction machine used for evaluation. We shall also review the expected consequences of this approach.
Mots-clés :
Functional programming, Real-time
1994
Real-Time Midi data flow on Ethernet and the software architecture of MidiShare
We propose a way to transmit real-time musical data flow on Ethernet. The presented implementation is based on the software archi-tecture of MidiShare. After some reminders about Ethernet and MidiShare, we shall present an overview of the intended solution. Then we shall examine the chosen protocols, the implementa-tion and its performance.
Mots-clés :
Communication, Ethernet, Real-time