Sunday, January 24, 2021

AudioDiWHY: Son of Manifesto and a Return to Digital

 Another year, another month of COVID lockdown. It's time for reflection, right? Rereading the first post of this blog (here), which I haven't done for a while: a main focus of AudioDiWhy was to get away from computers/networking/automation (which is the crux of my day job) and learn more about the great analog circuits of old. 

The SH5 remains one of my favorite electronic instruments of all time, and is all analog (no MPUs on board). One reason I started down the audioDiWhy path: a humble attempt to understand what makes the SH5 sound so damn good.

But I have found that any idea once realized with analog circuitry can be done easily and probably for less money using digital.  That doesn't mean the design will sound as good as a analog circuit circa 1975, but at the end of the day, the digital approximation can probably be built.

And for us makers, the rapid improvements in affordable MPUs and MCUs makes a digital approach even more self-evident?   

To wit: I recently read about the Raspberry Pi Pico (here). Cool! 

This MPU is fast (but....other MCUs are as well--Teensie 4.1 for instance is apparently faster) and  inexpensive ($4USD, are you kidding me? but you can get Nano clones for less). However, the Pico has a breakthrough feature for Makers: PIO, read about that here; I will have to dive into this in a later post. Apparently there are things PIO can easily do (such as accurately controlling NeoPixels regardless of CPU speed) that I find really interesting. 

I will use C to program it, and assenbly language for the PIO part, I hope, since that seems to be the way my maker life is heading.

Wait! there's more: I have had in the back of my mind a four to six v/oct-LFOs/VCOs design that fit behind a 1u Frac panel (1u because I am seriously running out of room for anything new in my studio). With analog SMD tech, op amps, tempcos, FETS etc., forget it, maybe? Even with Curtis VCO ICs it would take a lot of design work to debug and get 4x LFO/VCOs to fit into a space this small. Using analog discreet components would take even more PCB space and might not be possible.

But with a high powered super tiny MPU, 4x AD9833 ICs (already messed with using python and FTDIchips; post here) some op amps to buffer input and output--yes, knowing some analog design is very useful--and embracing SMT on the DIY bench (post here)--this is doable as I see it.

Unimaginable a few years ago, for me anyway, with the skill set I had before 2018. Today, four years later, sure.

But! the main thing I have to remind myself: make sure it doesn't sound crappy.  Digital designs replacing the great sounding circuits of old makes sense economically, but AudioDiwhy isn't about saving money (and often, saving time). Perhaps a wobbly triangle wave from an old school LFO sounds better than the pristine output from a AD's function generator chip. I need to keep this in mind.

So--I am teaching myself more about C, C++, and drilling further into Python and Javascript than I thought I ever would. The masterful work by Mutable Instruments proves to me you can design audio in an almost all digital domain and make your project sound damn great. You just have to be smart about it and like so many other things in  life, be willing to dig in, think about things, experiment, make mistakes, and work hard.

Digital again.  Crap. I keep wanting to beat back my need for the elegance of ones and zeros, and it keeps coming back like an STD.  You can't fight city hall right?        

Here are some of the projects I am considering in the coming months (some are already underway; some are new).  All are digitally based. 

  • The PNG based CV sequencer. Already started--post is here.
  • An AD98933 based FM VCO.  4 carriers, 6 is better. Bonus points--make it track v/octave.  Again already started--I have one osc working, but need to build more. Read about it here; I have a ways to go.
  • Find and verify, cobble together, and/or write basic C libraries for my favorite I2C and SPI chips (already started, go here).
  • A digital LFO to compete with one of the first circuits I ever "designed", that project is already started, part I is here. Update 4-10-21 PCBs are out for fab. 
  • A random voltage generator based on the API you find here.  
  • Redo the random gate (here) but make the reset feature work--I like the way this circuit came out but it can get stuck on a "long step".  Use AVR-C to fix this or maybe just improve the existing sketch code now that I have a slightly better understanding of timers and interrupts.
  • The video here  describes using Lava Lamps to generate randomness. I love lavalamps! Do the same for a home studio using an SBC and a digital camera.
  • A digital delay. Of course it's been done but I'd like to know how it really works, and no better way to do that then design and build one myself.'
  • Same delay idea, but a simple digital circuit for replaying control voltages.
  • A device that injects WAV sound effects into audio calls (burps and farts?  Laff track?  Applause). Endless fun for Zoom calls, right? Drive your family and friends nuts!!
  • Like everyone, I get tons of spam emails and texts. Turn them into music (sad?) somehow.
I will add to this list from time to time, but that's the roadmap for the next few months.  I won't be posting as often in the next several weeks as I try to amass better skills to pull off some of these projects. As per my pychiatrist girlfriend: maybe that isn't the worst thing. 

OK that's it for now, for the updated manifesto. I don't get a lot of comments since I figure my blog is so self centered, but I will say it anyway: if you have cool digital audio things you'd like to see me build leave a comment and I might design and build it.  Thanks for reading my blog and making it this far.

ProMicro HID Keyboard Emulator

Quick one this time. The Arduino ProMicro (examples here and here ) is based on an Atmel 16u4 MCU and has HID keyboard emulation ready to go...