I develop and contribute to software tools and libraries supporting research, development, and experimentation in digital audio.
Some of these tools are production-ready and licensed for industrial use; others are experimental or for internal use only. Many are released under open-source licenses.
Plugin and application development
Tibia is a template-based generator of audio applications and plugins, producing complete projects from a small amount of JSON metadata and C code. It supports multiple targets, including VST3, LV2, mobile apps, WebAudio (via WebAssembly), embedded platforms such as Electrosmith's Daisy, and command-line interface. Despite being well-tested and used in products, it remains largely undocumented and subject to change.
It is currently available under the GPLv3. Further templates were developed that have not yet been publicly revealed.
PIPES is an experimental and networked protocol for rapid development and deployment of audio applications. It allows you to code on one machine, compile on another, and deploy to one or more other nodes with hot-swapping.
A proof-of-concept implementation is available under the GPLv3.
Like Ciaramella, it was developed by Paolo Marrone as part of his doctoral studies, this time also with the support of Elk Audio and their CTO, Stefano Zambon, in particular.
Related papers
audioWidgets.js is a minimal JavaScript library providing HTML5 Canvas-based GUI widgets for audio applications. It supports simultaneous mouse and multi-touch interaction, different and pluggable control mappings (e.g., radial or vertical, absolute or differential knob mapping), redefinition of widget functionality — including drawing — by monkey patching, and Web Components encapsulation.
It is released under an ISC-style license.
canvasPlot.js is a minimal JavaScript library for 2D data plotting over HTML5 Canvas. It is designed for maximum extensibility and supports different axis scales (linear, logarithmic), manually- and automatically-defined grids, and data resampling, making it suitable for waveform and spectrum visualization.
It is released under an ISC-style license.
vinci is a tiny, unsupported, cross-platform windowing library, currently used to test GUI support in Tibia and released under the GPLv3 license.
Other development tools
During the years I have scratched my own itches, technology-wise, whenever it made sense (or so I thought). Some of the items I created that I always keep in my toolbox include:
- vino — cross-platform plugin GUI library based on system web views and facilitating UI-DSP communication
- erwin — plugin preset/state storage library using tarballs of multiple key-value pair dictionaries
- dedukt — JavaScript library that extracts key-value pairs from plain text and source code, used for generating the official documentation of Brickworks algorithms
None of which has been publicly released.