Posted on

ADCs and Noise

For the past week or so I’ve been spending much of my spare time trying to improve pitch tracking in WaveBoy. I made some pretty giant strides by adopting a per-note tuning approach. This works well, but it uncovered and ugly problem I haven’t noticed before – certain pitches were “noisy” when sampling from the ADC. This noise was heard as audible steps which was both unpleasing to the ear and made it hard to tune.

To improve things where I want, I suspect I will need to make another WaveBoy PCB revision to add a low-pass filter to at least the V/Oct input (and maybe the Tune input, though I’m not sure on that one). There’s noise coming from somewhere and one way to improve things is to use a low-pass filter at the ADC input. Since the V/Oct is a slow changing value (relative to audio for instance), the low-pass can be pretty low. But I need to do more work there to see.

Even without a PCB update, I was able to greatly improve things by using both hardware and software averaging. In the software case, I’m using floating-point math so I can have more precise results when averaged. While not perfect it’s pretty good. And some imperfection is kind of part of the purpose of WaveBoy anyway.

This now unblocks actual feature development again, with the next thing I want to work on being “Manipulators”. These let you manipulate the selected wave frame by a number of algorithms which allows one to build a sequence of frames much more easily and right on the module rather than having to edit a text file externally (something I know many folks found not fun).

Once I have those out, the next step is full wave generators (which may themselves manipulate the Manipulators). This will allow one to start with a basic calculated or drawn wave and produce a full set of frames with parameters. It will be very similar to the LSDJ way of doing things, something that’s always been on my list. Until recently I just wasn’t sure how to tackle that.

What does all this mean? It may mean the full production version of WaveBoy may take a little longer to produce. Not because of the Manipulators (those can be added later) but because having good pitch tracking is pretty important and if I can make that better/easier with a few minor hardware additions, I should do that.