Posted on

WaveBoy 0.54 Firmware and Pre-Release 2

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!

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.

Posted on

WaveBoy 0.53 Firmware

I spent a good chunk of the Holiday break working on a new feature for WaveBoy I’m rather excited about – internal volume envelopes! These plus some bugfixes and feature tweaks are available on the newest firmware. Head over to the WaveBoy manual for more information and to take it for a spin!

Folks may have noticed the WaveBoy is currently out of stock. I am working on the production version and hope to have it at least available for pre-order very soon. I am not yet sure if it will be available only as a kit or if we will also have fully built and tested versions available.

Posted on

EuroPower Prototype

It’s a project that’s been sitting around for 2 years, partly because I haven’t really needed it until more recently, and partly just doing other things. I wanted to design my own active bus board. While this could be used in nearly all my Eurorack cases. because it requires a bipolar 13.5-15V DC supply, I suspect it may be a solution for my own rack. However, I do plan on offering the bare PCBs and perhaps kits as well as releasing the schematics (probably under OSHW).

Active bus board on the left powering a pre-release WaveBoy on the right. Yes the red LEDs on the active bus board are way too bright.

It only accepts bipolar DC input (not AC) as it’s meant to be used with an unregulated AC/DC supply (which is what I do) but seems to work with the common Meanwell -/+ 13.5VDC switching supply (which is what I’m testing with). This was for cost, simplicity, and to some degree safety. I didn’t want to sell PCBs or kits that work with mains voltage. Also to keep costs lower, it only supports -/+ 12VDC output (no +5VDC). I personally do not own a single module that runs off 5V bus power. I might design an add-on board that can plug into one of the headers to provide 5VDC for those rare cases. The design also uses non-adjustable 7812/7912 regulators. I found I haven’t really needed to adjust voltages in my current power solution and supporting that adds quite a few parts (and thus cost).

Point is, the design is meant to be good. Maybe not the best, but good. The design can support up to 1.5A (depending on the regulators used) but more realistically 1A as a practical max. My entire rack pulls around 1.8A off +12V in total. I plan on using six of these so each board would be handling somewhere around 300mA on average.

Not sure if this will be a product and, if so, whether just a PCB or kit but I’ll probably at least offer the spare PCBs up for sale as I’ll have to order more PCBs than I actually need. If interested in this, let us know! Knowing there is interest will help us decide if/how to offer these up for folks to buy.

Posted on

New WaveBoy Front Panel

While I’m glad I was able to 3D print panels as part of my design process, now that I have a layout that’s good with what should be the final PCB design, I decided to look at using a more common material in the Eurorack space for nice but reasonably cost front panels: FR4. They just came in today and, well, see for yourself!

I think they look stellar! This was the last major piece before being able to declare at least the WaveBoy hardware fully ready to go! There is still software to work on, but I expect that will be a continual process. I mentioned in my last update the idea of a tracker. While I haven’t written much code for that yet, I think it will be a great addition though I do expect it to take some time. Especially for being able to use it as both a step sequencer to drive other modules and internally where it can be used more like LSDJ to manipulate the waveforms. I think both add a ton of value to a module I’m already proud of.

Posted on

WaveBoy Tracker? Maybe!

As the band looks towards going DAWless, I find myself having to look at Eurorack sequencers quite a bit more. There’s lots of DAW-none ways to do that. Ornament & Crime (particularly the Phazerville firmware) has some nice options for doing that. Also CV keyboards, like the Arturia Keystep have a sequencer.

But since I’m also writing a tracker for the Commander X16, I got to thinking, why not write a tiny tracker module onto WaveBoy! The main problem I see is that the screen is quite small for being able to read letters. This tied to the display library in use can also make updating the display potentially problematic. I can solve for this to a degree by enlarging the current row of the view.

The sequencer could be controlled via the following inputs:

  • V/Oct = Base Pitch
  • Trig/Gate = Advance Sequence
  • CV = Select 1 of 16 sequences
  • Step = Gate (or a VCA?)
  • Audio = Pitch

V/Oct sets the base pitch so the sequence can be tuned/transposed. The trigger advances the sequence, just as it would using the sequencer in wave mode. The CV flips through 16 sequences. The step output could be a gate but I could also do all sorts of things, like volume slides, gate length, etc. That could make it function as a basic gate or more like a VCA.

The pattern view might look something like this:

00 C-4 80
01 ... ..
02 D#4 40
03 ... ..
04 F-4 30
05 G-4 80
06 ... ..
07 ... ..
08 END ..

Recording a sequence could be done via the knobs and optionally using CV and Trigger to fill in the note at the current played note (which might require quantization). Similar to the Sampler mode, each “song” would have its own named directory on the SD card with 16 text files that would comprise each pattern. Meaning that I can probably find a suitable file format that allows for making sequences externally by editing a text file where each line in the file corresponds to a row. That also allows for the potential for external tools. Of course the SD card is mounted at the back of the module, so moving these to/from can be a bit annoying. I did this by design. While it might not be a popular move, I really don’t like seeing card slots on my Eurorack modules. And keeping it in the back avoids it from getting popped out during a live performance and such. Perhaps I can solve that by adding a header for folks to panel mount the SD card slot somewhere, but that’s a thought for another day.

Anyways! I dunno if I’ll end up doing this but I think it could end up being worth it. This wouldn’t be the only tracker in Eurorack, and it certainly won’t be the most complex. But I grew up on trackers and they have been a part of my life ever since, so it perhaps makes some sense to pay homage to them as an additional feature.

Posted on

Next WaveBoy PCB Revision

I’ve spent the weekend off and on working on another PCB revision to WaveBoy. The next revision will use purple PCBs to make the front panel. Not many people will see it (unless folks have transluscent cases, like my acrylic ones) but it’ll help identify the board revision.

Folks that have already purchased the Pre-Release, worry not! This version doesn’t add any features though I will have to keep multiple versions of the firmware around between the revisions, though that’s no big deal.

The main change is switching up the right encoder wiring to use pin 0 instead of pin 13 for one of the encoder pins. Pin 13 is used by an on board LED on the ItsyBitsy which has to be removed for the encoder to work properly. This update avoids that extra step which makes assembly easier but doesn’t otherwise change the functionality.

Otherwise it’s minor updates: The SD card slot has been moved over so the card is easier to remove. The protection diodes are moved to the opposite side for using a keyed connector for Europower and I cleaned up a bit of a layout. After the pre-release (I have one PCB left), I will probably settle on the yellow/blue OLED displays as well as I can get those in bulk.

I plan on doing a medium run of 50 PCBs which, along with looking at some alternative suppliers, should keep the module cost lower. To say I’m a boutique Eurorack store is perhaps an understatement so while this thing would be much cheaper if I were able to make thousands, as much as I love my quirkly little module, I don’t see it getting anywhere near that adoption. If it does, that’s a great problem to solve for another day. But that does mean the cost of the module probably won’t move too much.

Posted on

WaveBoy: Sampler CV

I don’t yet have a video demo of it. Partly because the UI could stand to provide more info and partly because I haven’t gotten to it yet; but I implemented the sample banks sort of idea for the WaveBoy Sampler I was toying with.

Each patch is now a collection of 16 samples. Just like with the Wave mode, you select which sample you want via the CV input. The menu then lets you select from different patches (each with their own 16 samples).

Samples are still 8-bit and up to 64k. The sample rate doesn’t really matter or is to taste based on the fidelity and sample length you want. Reading off the SD card seems fast enough to play samples of arbitrary length but I’m not yet sure if I should actually implement that. The limitation is kinda part of the game (noting for my DreamTracker program on the X16, samples are limited to 8k).

Still to do is adding meta-data (sample names, desired looping perhaps, sample-rate multiplier, etc.) and better nav of the patches but the foundational parts of the feature are there and I’ve already been able to jam out to some drums with it.

Posted on

WaveBoy: Now With a Sampler!

A sample player I suppose is more apt. This is just the initial minimum setup but it works! It uses the same approach as the Wave mode in that it uses a variable clock to the DAC to control the pitch and sample rate. This gives it a more unique sound with, yep, some intentional aliasing. The samples are 8-bit unsigned raw PCMs and can be up to 64k in length though I may be able to get well past that limit by using a buffer and reading off the SD card. I didn’t do that here since I wasn’t sure if it could properly keep up (it seems like it can).

https://youtube.com/shorts/RJeNhp6cbwE

I have some ideas on what I can do to make things more interesting though. For instance, I could use the CV input to control to change samples, I could add looping and ping-pong options, etc.

Curious what folks think and if you have any suggestions! This is sort of a bonus feature – the main purpose of WaveBoy is, well, the Waves! But since there’s plenty of space and horsepower on the microcontroller, I’ve been wanting to try my take on a lo-fi sample player and here it is!

Posted on

Panel and Screen Options for WaveBoy

I’ve been trying various screen, knob, and panel combinations for WaveBoy and will probably settle on the options seen here:

The two panel options I am looking at for the 3D printed panels are purple on white, white on purple. I may also offer black on white and white on black though I find those don’t pop quite as much and I plan on keeping at least a small inventory of panels due to the multi-color printing process I have to use. The tune knob options will be purple or grey and I’m sticking with rubbery black knobs for the top encoders for now. The OLED displays will be offered in white or the yellow/cyan. I find the white looks more aesthetically pleasing, but the yellow/cyan is easier to read.

I’m also still looking at FR4 and aluminum panels. So far those have been cost prohibitive for what I want though I am still evaluating options. If I do there’s a chance they won’t be available in the same colors as the 3D printed panels Folks may have also noticed I now have a documentation portal linked off our main website. The direct link is https://waveboy.bitbybitsynths.com.

All that to say, if indirectly, I am getting close to having at least a small number of WaveBoys available for purchase for early adopters. I may also set aside a few of these for some beta testing and might be looking for beta testers. There are still some features I want to work towards and a few bugs to sort out but it’s very usable already, both for its original purpose of the 4-bit wavetable stuff, as well as the noise algorithms. I have used both in my band with success.

If you’re interested in picking one of these up, I’d love to hear from you! You can use the contact form or send me a ping on our Instagram (@bitbybitsynths)!