For people who are unfamiliar, can you tell us the story of Elk - what is Elk,and how is it useful for developers?
Elk Audio OS was born in a way similar to most middleware / frameworks. In the company's early days, while creating the SENSUS Smart Guitar, we saw the need for a framework like Elk to support our work, and set out to create it. When I first met our founder Michele and he explained his visionary idea for a product as advanced as the SENSUS, I immediately knew that the first task was to come up with a new Linux-based platform for realizing it. I guess it’s a similar story to JUCE which was initially developed as a framework for Tracktion, although the SENSUS guitar hasn’t been released as a product while Tracktion is still rocking today. However, Matt Bellamy from MUSE is using an Elk Powered "smart guitar", which is a better use case than what I could have hoped for the SENSUS.
Elk Audio OS is a Linux-based Operating System for Audio, developed from the ground up to deliver very low latency and optimal DSP performance on generic ARM and x86 embedded CPUs. It comes with everything needed to build industrial-strength audio devices with modern features like connectivity of every sort, advanced UIs and integration with many standards such as VST plugins.
If you are a plugin developer, Elk can greatly reduce the barrier to get your code running on hardware. You don’t need to learn new languages or frameworks, set up complicated toolchains and having to deal with all the intricacies of dedicated processors. Elk takes care of all the “boring”, time-consuming aspects of setting up an embedded platform, so you can just focus on the fun aspects and developing a great product in a similar way as you write applications for desktop computers.
You’ve recently made a decision to make Elk open source. What has led to this decision?
This is something that we always had in mind for Elk, the questions were when and how. We wanted Elk to be accessible by all sorts of developers and makers, so they can build a new generation of connected instruments that can spur new kinds of musical creativity. But in order for that to happen, we needed to have Elk mature enough to support an open-source community, and we needed an affordable development kit that independent developers could buy easily.
Elk will be dual-licensed, the open-source license being of the copyleft kind. We want people to use the open-source version to contribute to the community with their code.
Our open-source release comes together with a development kit for the Raspberry Pi, which is the most diffused system for these kind of products. We have open-sourced the full hardware project for that kit, too, so everyone will be able to design and produce Elk- compatible hardware devices.
How do plug-in developers work with Elk?
Developing plugins for Elk is very similar to working on a normal desktop platform. You just need a plugin in one of the formats that we support like VST 2 or VST 3, making sure that it can be built for Linux without dependencies on graphical libraries and then… well, that’s actually all of it! You just recompile the plugin with our toolchain and it’s ready to be tested on the real hardware.
The cool thing is that you can spend most of your time on your computer without the usual lengthy “write-compile-transfer-run-debug” cycles involved in embedded development. We even provide a version of our audio host, SUSHI, that you can run on a normal PC. Then, of course, you will want to test it on the hardware to measure performance, solving real-time issues and other things, for which we added dedicated tools to make your job easier. Oh, and Elk is not just for plugin developers! We are preparing a large collections of prebuilt plugins taken from the open-source communities, many of which are built with JUCE. Even makers and people experienced only with high-level languages like Python, can put together interesting products without writing a single line of C++ or DSP code.
How can Elk be used with JUCE?
Elk doesn’t use JUCE internally but it was very important for us to support JUCE developers as they are the large majority of those who have ported plugins for Elk. For that reason, we are currently maintaining a JUCE fork you can use to build VST plugins, which will run on Elk without changes to your codebase. In the future, it could be possible to use the mainline JUCE distribution for an even easier integration.
Thank you for your time! Is there anything else you’d like to mention?
Thank you for this interview! The ADC is such an important event for our community, that we decided to have our release during it. If you’re coming to the ADC, please visit us at our table, attend our talk or participate in our hands-on workshop where you’ll be using JUCE together with Elk on real hardware.