Screaming in the IO Monad A Realtime Audio Processing and Control Experiment in Haskell - Archive ouverte HAL Accéder directement au contenu
Communication Dans Un Congrès Année : 2019

Screaming in the IO Monad A Realtime Audio Processing and Control Experiment in Haskell

David Janin

Résumé

We investigate in this paper the applicability of the notion monad streams to media stream programming, and, more specifically, audio processing and control. Simply said, a monad stream is sort of a list guarded by a monad action that returns either nothing when the stream is over, or, otherwise, just the current value of the stream and the guarding action of its continuation. Applied to the IO monad, it appears that monad streams can be used for modeling both input streams and output streams, with full control of the possibly synchronism between input and output streams in stream functions. This allows for defining both synchronous or asynchronous functions , or any combination of both notions. In the abstract, this opens quite intriguing and generic solutions towards programming systems that are globally asynchronous and locally synchronous (GALS). In the concrete , applied to real-time audio, this allows for combining, in a fairly simple and unified way, both (synchronous) audio processing and (asynchronous) audio control. As far as performance are concerned, our proposal allows non-trivial transformation of audio streams at 44100 Hz with a 10 ms latency, a performance comparable to functional pro-graming languages dedicated to real-time audio processing such as Faust.
Fichier principal
Vignette du fichier
full.pdf (592.57 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-02368138 , version 1 (18-11-2019)

Identifiants

Citer

David Janin. Screaming in the IO Monad A Realtime Audio Processing and Control Experiment in Haskell. 7th ACM SIGPLAN International Workshop on Functional Art, Music, Modeling, and Design (FARM), Aug 2019, Berlin, Germany. ⟨10.1145/3331543.3342585⟩. ⟨hal-02368138⟩

Collections

CNRS INSMI
54 Consultations
326 Téléchargements

Altmetric

Partager

Gmail Facebook X LinkedIn More