The ESTEREL synchronous programming language: design, semantics, implementation
Science of Computer Programming
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
ChucK: a programming language for on-the-fly, real-time audio synthesis and multimedia
Proceedings of the 12th annual ACM international conference on Multimedia
ReactiveML: a reactive extension to ML
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Psychoacoustics: Facts and Models
Psychoacoustics: Facts and Models
Rethinking the Computer Music Language: SuperCollider
Computer Music Journal
Execution Strategies for PTIDES, a Programming Model for Distributed Embedded Systems
RTAS '09 Proceedings of the 2009 15th IEEE Symposium on Real-Time and Embedded Technology and Applications
Hi-index | 0.00 |
Antescofo is recently developed software for musical score following and mixed music: it automatically, and in real-time, synchronizes electronic instruments with a musician playing on a classical instrument. Therefore, it faces some of the same major challenges as embedded systems. The system provides a programming language used by composers to specify musical pieces that mix interacting electronic and classical instruments. This language is developed with and for musicians and it continues to evolve according to their needs. Yet its semantics has only recently been formally defined. This paper presents a synchronous semantics for the core language of Antescofo and an alternative implementation based on an embedding inside an existing synchronous language, namely ReactiveML. The semantics reduces to a few rules, is mathematically precise and leads to an interpretor of only a few hundred lines. The efficiency of this interpretor compares well with that of the actual implementation: on all musical pieces we have tested, response times have been less than the reaction time of the human ear. Moreover, this embedding permitted the prototyping of several new programming constructs, some of which are described in this paper.