I wanted to jot down some notes about where I’m at with this thing, on writing the title realised a peculiar coincidence. Bit of tech stuff below, but first…
For a kind-of fork of my own project, Chatterbox (a speech-like synth) I am making another version of the hardware without all the manual controls. It’s common to call software without a GUI ‘headless’, near enough.
There’s a pub about 5 miles from my mother’s house, the Quiet Woman in Earl Sterndale, Derbyshire, England, with a gruesome legend attached. The landlord’s wife used to nag him too much, so he cut her head off. Er, yeah, that’s basically it. Except he wasn’t held to account for his actions, instead praised by the pubgoers who had a whip-round for her headstone. Traditional values, eh.
Decapitation figures in another local legend to which I’m personally attached. Tidza Sawyeds is the sobriquet given to people like me that come from Tideswell. The story there goes that a cow got it’s head stuck in a gate so the farmers sawed the cow’s head off.
There have been arguments that it wasn’t foolish, that a gate might have been more valuable than a gate at the time. Just nah. It’s a smear by people of Bradda (Bradwell), about 5 miles away. In another reflection of traditional values, I grew up calling anyone that came from that far away a foreigner. Even in my generation there were differences between the dialects/accents between villages over that kind of distance. But you knew they were foreigners anyway, because you weren’t closely related. (Image above lifted from Phil’s old blog, er, cousin Phil).
Anyway, one Wakes (carnival) a Bradda woman was noted for lifting her pig up on the wall so it could see the brass band go by. [That does actually speak of more humane animal husbandry down there, hey ho].
I am daft. Spent over a year on the Chatterbox project (based around an ESP32 microcontroller) without really getting tooled up properly. I started knowing virtually zero C++, still very vague, so quick debugging would be at a premium. Even just a computer better than the minimal laptop I’ve been plodding by on would have been a huge time saver.
I’m finally getting there. Best : a new computer, flies. Flows! But there’s a lot more.
I was sussed enough to start using PlatformIO (on VSCode on Ubuntu) rather than the Arduino IDE early on. (That’s excellent for small projects, but as the codebase increases, the productivity plummets). Only recently found out there are things a step better than debugging over serial [can’t see link right now – but there are], also found out the JTAG interface cards are really cheap.
Ok, if you’ve read this far you’ll know this, but just in case. The processor in the microcontroller ain’t the same as the one in the computer that’s doing the compilation. There’s no direct way of examining what’s going on inside. I’m not aware of any ESP32 emulator on a x64 PC (unlike with Android devices).
But, there’s an interface called JTAG that can provide this, via a cheap little card:
USB connector on the right to the host computer, hook up a couple of jump leads from the sockets on the left to the microcontroller, you have full debugging facilities. Can halt a program mid-run and examine the variables.
Only snag for me, all the IO on the Chatterbox ESP32 is spoken for:
GPIO 12-15, that JTAG use, are already taken up by some of the switches.
Now, I had thought since before I started that what I was doing was making a microcontroller-based synth. All the human control was novelty, everything could be controlled by MIDI. The ESP32 is plenty fast enough to do DSP on audio, all you really need is a sensible DAC for output, and they are cheap & easy to code in.
Also, although my main motivation is to have something I can play with (and learn all this shit), it would be good if other people could play with one too.
My brother Nigel would be very much up for having a machine that makes sounds like no other. But I haven’t the will to make another machine like the one above. But everything can be controlled by MIDI, hence the notion of a Headless Chatterbox. An unquiet woman.
All that’s really needed is :
From left, clockwise: ESP32 module, UDA1334A DAC module, stereo jack out, DIN MIDI in, power regulator.
Also the 3 or 4 components for wired MIDI in (just needs an opto-isolator and a couple of resistors) and a box.
(MIDI over BLE is definitely doable, but I haven’t played yet).
You will also note that I’m only going to need a couple of GPIO pins on the ESP32 for I2S to run the DAC, another for the MIDI in. Which means I can hook up the JTAG debugger, code a lot faster!!
Oh yeah, forgot to mention, instead of the switches & pots for control, could also have a browser-based UI. I’ve got proof-of-concept very much working. Only hassle there is the thing of IP addresses. Ideally this will run just as another host on your local network. But giving it the creds is a pain. Can be configured as an access point, but when I’m doing stuff I want to have an external Web connection not just to this lump.
That part might take some time.
But I reckon, with the aid of the JTAG card, if I focus on the headless version for a bit, can find the answers relatively quickly, and find the DSP algorithms I really want much faster.
Getting the headless thing together as a little module would be very sweet, might even have commercial potential. I do need to sort out all that ^^ first, but an obvious step after would be to make up a PCB, they’re so cheap to have made now (and even soldered up).