Paolo Marrone, Stefano D'Angelo, Federico Fontana, Gennaro Costagliola, Gabriele Puppis
Ciaramella: A Synchronous Data Flow Programming Language For Audio DSP
in Sound and Music Computing Conference, 2022
Ciaramella is a new audio DSP programming language, featuring a fully declarative syntax and the synchronous data flow computational model. We developed a compiler, Zampogna, which translates Ciaramella code to C++ and MATLAB. We demonstrate that our solution allows to naturally represent and correcly schedule highly-interdependent DSP systems such as Wave Digital Filters.
PDF
Paolo Marrone
A Web Playground for Ciaramella
in Colloqui di Informatica Musicale, 2022
We implemented a web playground for coding in Ciaramella, compiling and instantly generating working web audio plugin prototypes. In order to obtain that, its compiler, Zampogna, which is written in JavaScript, has been embedded in a web page, and it has been augmented for the production of JavaScript code. We developed a simple graphical user interface targeting both domain experts and newcomers.
Paolo Marrone, Stefano D'Angelo, Federico Fontana
Introducing stateful conditional branching in Ciaramella
in Sound and Music Computing Conference, 2023
Mixing control and data flow comes with both theoretical and practical problems. We found a solution to implement conditional blocks in the SDF model, and we designed a syntax to express if-then-elses blocks in Ciaramella while respecting the declarative and data flow paradigms. Additionally, the branches can have internal state/memory, which is a rare feature in this kind of language.
PIPES: A Networked Rapid Development Protocol for Sound Applications
in Proceedings of the 27th International Conference on Digital Audio Effects (DAFx24) Guildford, Surrey, UK, September 3-7, 2024
PIPES is an experimental, networked, and distributed model designed for rapid development, compilation, and deployment of audio applications. A key feature of PIPES is its strict separation of roles, which is achieved through three specialized node types: orchestration, compilation, and execution. Each node type focuses exclusively on its designated task, ensuring a streamlined process. PIPES also includes features such as audio module abstraction and hot-swapping capabilities, enabling real-time adaptability. As a proof of concept, a PIPES network was implemented with a Ciaramella node.