Ever wondered what technology lies behind Alive Drumming’s smart web services? Here’s the gist –
Alive Drumming’s innovative web services have been engineered in the Elixir programming language. The web service supplies Alive Drumming’s fully arranged rhythm tracks constructed from multiple takes of long-form audio of very talented drummers.
Simply put, this service –
- Parses a web request,
- Determines the arrangement structure of the requested track,
- Creates the audio-engineering scripts to splice slices of the long-form audio into the result, and finally,
- Executes these scripts, delivering the resulting audio as the output of the service.
Language Compiler as Web Service
Much of this is the textual lexical analysis and classic compiler design. The track description is a simple LR1 language, and the ejected audio-engineering scripts are optimised with a peep-hole optimisation phase. Step 3 above, “Creating the audio-engineering scripts”, additionally involved parsing textual meta-data relating to the long-form audio’s location of differing drumming intensities, fills, pre- and post-fills, drumming breaks, pushes, count-ins and endings. Each has multiple ‘takes’, and algorithms apply a weighting in pseudo-random selections. Initially, languages strong in textual manipulation were considered with the early algorithms prototyped in GAWK, but it became clear a language suitable for massively scalable web services was needed.