In August 2020, we released the Desmodus Versio, Noise Engineering’s reverb. Maybe you heard about it. We were pretty excited about a lot of things about it:
It’s a pretty kick-ass reverb.
It’s a DSP platform that users can update via USB, so we could create lots of alt firmwares for people (more on that soon. Very soon.).
It’s based on an open platform, so from the beginning, we knew we wanted to open it up so people could create their own firmwares too.
So we asked the software engineers at NE to help us less programming savvy folks talk about how this works.
First thing to note: writing custom firmware requires basic understanding of the C / C++ programming language. If you are not proficient in C / C++, there are plenty of resources or even other modular platforms to get started on!
Ok, onward.
Under the hood - Daisy!
If you look at the back of your Versio module, you should see a mounted yellow board with a micro-USB port. This is the Daisy Seed, an embedded audio platform created by Electrosmith. It is the main processing unit on the Versio hardware, i.e., where programs are downloaded, or “flashed.”
We opted for the Daisy platform for a lot of reasons, but the biggest was that it would be the best customer experience. At the time that the Daisy Seed became a contender for us, we had been developing, in parallel, a similar board (called George). Moving to the Daisy Seed board allowed us to speed development, decrease cost for our users, and take advantage of the large (and growing) community behind the Daisy ecosystem
Daisy is powerful and handles stereo in/stereo out with ease with up to 24-bit, 192 kHz audio processing, 64 MB SDRAM, and 8 MB of flash memory. Got an idea that you want in Eurorack? If any embedded processor can handle it, it’s probably this one.
To create your own firmware, you can use LibDaisy, Electro-smith’s hardware abstraction library for the Daisy board. LibDaisy is the absolute resource for all your Daisy development needs. Also, there’s a pretty amazing and active user base/forum there to support you should you have questions in your development journey. Consider this forum the official support spot for questions about developing your firmware. Our support team only has the capacity (and knowledge!) to help you with officially released firmware -- most of us here at NE don’t speak C/C++ and won’t be able to review your code. But the activity we see at the Daisy forum assures us that this is a good fit. And of course, if you mess something up while you’re developing, you can just flash your Versio back to one of our firmwares with our flash app.
The library includes code for a configurable audio callback, MIDI drivers, peripheral drivers and a DSP library (DaisySP). It also includes a header file specific to the Versio hardware, to help you interface with the 7 knobs, 2 toggle switches, momentary switch, and jacks when you build your own firmware for Versio.
For those of you interested in this sort of thing, we’ve also created a blank panel for ease of abstraction. You can grab one as a replacement, or you can opt for that version if you pick up a Versio module in the future to play with.
The Libdaisy Getting Started Wiki contains the documentation you need to get started with writing your own firmware to the Daisy. For reference, check out the Libdaisy Versio example project here!
We hope you enjoy writing your own firmware for the Versio! We’re very excited to see what you come up with. If you make something you think is especially cool, send us an email or post a clip on Instagram to let the world see.