Mini Neural Nets for Guitar Results with Microcontrollers | by Keith Bloemer | Apr, 2023

Much less is extra
I’ve come to understand that constraint drives creativity and innovation. The extra choices an artist has, the harder it may be to consider a strong thought. With out guidelines in music, the chances are so overwhelming that it could be close to not possible to jot down one thing listenable. It’s the principles and restrictions that give construction to an thought. In fact figuring out when to interrupt these guidelines is simply as essential as figuring out what they’re.
Over the previous three years I’ve been fascinated with utilizing deep neural networks for emulating analog guitar amps and results. I’ve written a handful of audio plugins and examined numerous variations of neural networks for emulating guitar gear. Neural networks are CPU intensive, however with PCs you’ll be able to typically throw extra laptop energy at it to attain a extra correct sound.
For more information on how this works see my articles on neural networks for real-time audio.
However what in the event you needed to run a neural internet on an affordable microcontroller, with a small (guitar pedal dimension) machine, devoted to simply working an audio impact and nothing else? Small challenge computer systems just like the Raspberry Pi are highly effective sufficient to run an working system, supporting functions, and a guitar impact, and have room to spare, which implies wasted assets at larger value. All these computer systems use microprocessors, versus microcontrollers. A micro-processor has exterior reminiscence and I/O, and a micro-controller is a self contained computing system that may run packages on it’s personal. Microcontrollers typically don’t should be as highly effective as a PC or smartphone, as a result of it’s totally devoted to doing one particular factor. Microcontrollers are perfect for a digital guitar pedal, however writing software program for them is completely different from a smartphone or PC, and one thing I had by no means completed earlier than.
Enter, the Daisy Seed! The Daisy Seed is a $30 embedded platform for music, using the Cortex-M7 ARM microcontroller. It has its personal software program library (libDaisy) and a DSP library for audio (DaisySP), all open supply. For a guitar pedal, you need an enter audio buffer for connecting your analog guitar sign to the digital {hardware}, and an output buffer for matching impedance along with your amplifier. This ensures that your tone is preserved going by means of the impact. PedalPCB sells an interface board referred to as Terrarium ($12) particularly for the Daisy Seed, and it even supplies connections for as much as 6 knobs, 4 switches, 2 footswitches, enter/output mono audio jacks, and 9 volt energy (frequent to guitar results).
At $42 for the audio {hardware}, I’m already nicely beneath the price of the Raspberry Pi4 utilized in my earlier NeuralPi guitar pedal. I purchased the boards, and due to my earlier obsession with analog results, had the remaining {hardware} available to construct the Terrarium pedal. Whole value was round $100 (with enclosure, electrical parts, knobs/switches), and required primary soldering abilities to place collectively. The existing projects different folks had developed for guitar results labored and sounded nice on the finished Terrarium pedal.
BUT, my NeuralPi plugin can’t run on a microcontroller, so I wanted to get artistic. I made a decision to make use of the RTNeural engine to run the neural fashions and develop minimal c++ code round it utilizing libDaisy and DaisySP. There are a number of codebases on the market for growing on the M-series microcontrollers, however I had no expertise with these, so if in any respect potential I needed to stay with what I already knew.
Now for these constraints I discussed: processing energy, and reminiscence. The M7 chip operates at a max of 480MHz, and at that pace can solely make the most of Flash reminiscence, a tiny 128KB! (However to be honest, landing on the moon only took 74KB.) There are different reminiscence areas you’ll be able to entry on the Daisy Seed, however I needed to maximise my processing pace to run the largest neural networks potential, to supply the very best sound.
After I initially compiled my minimal c++ program with RTNeural, I blew previous the 128KB restrict. So then I reached out to the creator of RTNeural for assist (as I’ve many instances earlier than!). He was capable of scale back the compiled footprint by a big quantity, permitting for loads of area for the required code and mannequin recordsdata.
As soon as my program would load onto the Daisy Seed, I used to be actually curious what dimension mannequin it may deal with. I began with the NeuralPi fashions (LSTM dimension 20), however it was an excessive amount of. It induced the pedal to be unresponsive. Then I figured I’d begin low and work my method as much as the restrict, so I used a LSTM dimension 4, and success! It could run the impact (a seize of my TS-9 overdrive pedal) however I wasn’t proud of the accuracy. I made up my mind that probably the most it may deal with was an LSTM dimension 7, which is respectable sufficient for many pedals, and would possibly get some OK sounds on capturing decrease achieve amps. Needless to say the Daisy Seed runs at 48kHz audio, which implies 48,000 passes by means of the neural internet every second!
This sort of neural internet sampling fee is spectacular on any system, however I needed it to sound even higher. Guitarists of current years are accustomed to digital modelling that’s indiscernible from the actual factor. Merchandise like NeuralDSP’s Quad Cortex, IK Multimedia’s ToneX, and the more moderen Headrush Prime have given guitarists choices to do what was beforehand solely potential utilizing a Kemper. Simply because my work is tailor-made to the DIY group doesn’t imply it must be any much less succesful! (Because the current open supply Neural Amp Modeler has confirmed.)
There may be one other type of Recurrent Neural Community (RNN) apart from LSTM that I had not examined, the GRU (Gated Recurrent Unit). This community makes use of roughly 33% much less processing energy than LSTM for a similar inner dimension. I by no means did a lot testing with it as a result of on a PC, the additional processing wasn’t as a lot of a priority.
The preliminary check with GRU was promising, I used to be getting even decrease loss values on GRU’s than the identical dimension LSTM. Along with working sooner, the GRU fashions used up much less reminiscence. I made up my mind by means of trial and error {that a} GRU of dimension 10 was in regards to the max I may run by means of RTNeural on the Daisy seed (vs. 8 with LSTM), and that distinction improved loss values by half in some instances. I used to be getting loss values of lower than 0.01 for distortion pedals, and fewer than 0.02 for low achieve amplifiers.
With the present launch, NeuralSeed (as I named it) can precisely seize most distortion/overdrive pedals (as much as 3 parameterized knobs) and low achieve amps. Utilizing no parameterized knobs stays probably the most correct, however the flexibility of controls for achieve and tone is a cool possibility for my part. Methods I beforehand realized have benefitted the general sound high quality. These embody enhancements in my recording tools, akin to utilizing load packing containers to document amps and re-amp packing containers for pedals. Ranging from a pre-trained mannequin (switch studying) and utilizing specialised enter indicators have helped enhance accuracy within the mannequin coaching. Through the use of a method referred to as “distillation” (coaching a small mannequin from a bigger mannequin), I used to be capable of seize the advanced distortion of tube amplifiers at low to medium achieve.
Right here is the open supply code on Github. When loaded on the Terrarium pedal, it has enter/output degree knobs, moist/dry mixer, 4 EQ enhance switches, and as much as 3 knobs for controlling a parameterized neural mannequin (achieve, bass, and treble, for instance). The left footswitch both bypasses or engages the impact. The fitting footswitch cycles by means of the obtainable neural amp/pedal fashions.
Growing for the Daisy Seed has made me recognize the facility of recent day computer systems. The constraints of the M7 processor (which is a really succesful microcontroller!) made me suppose outdoors the field to attain extra utilizing much less. The NeuralSeed code is open supply for anybody to check out on the Daisy Seed / Terrarium pedal, in addition to mod and make their very own tweaks and enhancements. There may be additionally a Colab script for coaching your individual fashions to run with the NeuralSeed software program. Here’s a video demo of the completed Neural Seed pedal working a number of neural community fashions of precise guitar amps and pedals.
Particular because of Jatin of ChowDSP for minimizing the RTNeural footprint and serving to me remedy the GRU implementation! Additionally because of the oldsters on the Daisy Discord for serving to me perceive the Daisy Seed and associated software program, and the Neural Amp Modeler Fb group for offering coaching knowledge.