At long last, WaveBoy 0.54 is now available! This version focuses on improving tuning and pitch tracking. It took quite a lot of work, hence why I didn’t do much in the way of other feature development (some but mostly UI polish).
The problem is that certain incoming voltages on V/Oct end up being “noisy” – the value the analog-to-digital converter (ADC) provides for said voltages moves around. This was causing audible artifacts, especially in wave mode. While the raw noise is still there, it has been tamed by doing a few things:
- The sample rate in Wave mode is only updated after each full wave cycle completes
- Using a timer to read analog inputs at a fixed rate (currently 400Hz)
- Using a software 2-pole filter and floating point math for the V/Oct values into the pitch function
- Moving to per-note tuning
These things took a lot of reading up on techniques, bug squashing, and trial and error but I am happy to say that pitch tracking is improved across the board. For Wave mode it’s actually pretty great and for noise and sampler modes, it’s pretty good but could be improved and something I’ll be looking at in the future.
The per-note tuning is a somewhat big change. Folks moving to 0.54 will also want to grab the sdcard.zip and at least grab the updated tuning.txt file. This will be a good starting baseline and should work for most of the WaveBoy’s currently out in the wild but it may require tweaks to get the pitch tracking perfect for yours.
While looking into all this I did discover a design of the microcontroller I had not considered which may be contributing to the noise. The microcontroller (a SAMD51) uses what is known as a SAR ADC (Successive Approximation Analog-to-Digital Converter). This is both a cost effective and flexible ADC. It works well for multiplexing (being able to use a single ADC to read multiple input pins) but the trade-off is when using an op-amp in front, it can require additional parts to avoid shenanigans. Basically it’s an RC filter after the op-amp to help charge the ADC’s small capacitor used to ultimately read the given voltage. Without this filter, the op-amp needs to have a much higher bandwidth.
This all gets pretty deep in the weeds but I suspect it is a source of some of the incoming noise on the V/Oct input. This affects CV too but since CV is used for pretty coarse ranges, it’s not really a problem. And while the software solutions fro V/Oct are working well, I have decided that there will need to be another PCB revision. Fortunately, I do not expect that this will not require different firmware. But it does push back the larger production run of WaveBoy’s I was hoping for.
I went back and forth on whether this was needed due to the software improvements, but it’s a very marginal increase in part count (and cost) and is more “to-spec” which I expect should improve the pitch tracking. While it’s great now, these additions will make it even better and it makes sense to do if I want to start cranking these out in larger numbers.
That said, I do have a small handful of PCBs of the current revision available. I will be making these available in another pre-release round which will be at the cheaper price as compared to production (just like the last pre-release). Even though the next revision will be improved, this one is still great. It might even have more character than the improved version. For all intents and purpose, it is a production WaveBoy save for the above change. So for folks that have been wanting a WaveBoy, you can grab this version up soon (within a few weeks hopefully) or you can wait for the next PCB revision (which will probably be a few months away).
In the meantime, I will be finally working on the Manipulators feature I’ve been talking about. I’ve been super excited to start work on it but of course a module isn’t very good if it can’t track pitch well, so that was quite important to remedy first. Expect to see Manipulators hopefully in 0.55!