My main reason for Chatterbox was to have something with a well-defined target that I could focus on for a few weeks and get my head away from all the open-ended projects I was being overwhelmed by. About a year on I realise it wasn’t the best choice. Making noises with microcontrollers turns out to also be open-ended. But I have at least got the hardware done.
But I’m still not remotely happy with the DSP algorithms I have in place and there’s still a huge amount to do when it comes to MIDI & Web interface.
So I wasn’t stuck in my own little bubble it occurred to me that making a version my brother could use would be a good idea. He’s tech-savvy, does music but isn’t a coder. But because he lives on the other side of the world (Lostwithiel) a stripped-down version of the hardware seemed a good idea. Basically:
An ESP32 module, a reasonable DAC, MIDI in and audio out.
If I can get something that’s useful/fun out of this that Nigel can use then I’ll have fulfilled my imaginary remit. I don’t know, maybe even consider making it a commercial product (it’ll all remain open source whatever).
A major pain with coding for microcontrollers that, without assistance, you can’t properly debug because that device’s system is a different processor than the machine you’re coding on. But those delightful Espressif folks already have it covered.
What’s prompted me now to go in this direction is hearing about JTAG and just receiving an ESP-Prog module:
It is such a misery trying to debug audio stuff via printing to a serial console. You want things to happen around 20k times a second, serial takes a lot of ticks. Added to which is the drag of the edit/compile/upload cycle. Can really be plodding through mud.
On the plus side, it has forced me to understand better what the code is actually doing, C++ is effectively new to me. But there are limits to my patience.
This module, apparently, attached to the appropriate I/O on the ESP32 allows proper debugging – pause, examine value of variables etc. – within PlatformIO (which I use on VSCode on Ubuntu).
Now funnily enough, building on impulse, I’ve used every available GPIO line on the ESP32 for controls (+DAC +MIDI) for Chatterbox. The pins JTAG uses are attached to switches. But, a headless Chatterbox doesn’t have that issue. So I can focus on the other bits, try and get good sounds out of it, then dump the exact same code down to the version with knobs on.
Haven’t tried it yet, so fingers crossed.