Posted on

WaveBoy 0.59 Firmware Released!

Yes I know it’s only been a few days since I released 0.58. I hit my 0.59 goals faster than I expected (though I’ve been rather hard at work at it). This version builds on the foundation of 0.58 which is another reason it was easy to add the wanted features. In brief, the features and changes are:

  • Realtime Bit/Sample Crusher and Envelope Follower,
  • Improved V/Oct Performance
  • Attenuation for LFO and Follower
  • New Volume Attenuation Mode
  • Improved Knob Ramps

This release itself is a good foundation for what I want to do in 0.60, which is to expand the Envelope Follower a bit. I would like it to support internal audio as an option with being able to route the output either to the Step or Audio outputs. This simple routing enables being able to use other things with the follower. You can run the follower with external audio on CV with the envelope on the audio out while using the LFO on the step output, for example. Or you can use the realtime bitcrusher on the main audio and have the follower operate on the incoming audio and sending the envelope out the Step.

This is technically easy enough to do without making many internal changes. It’s handling the UI behavior in a way that is sensible which will take some thought and why I decided to release 0.59 since things seem to be in a good place.

And yes, I promise, I will get back to the feature that is the WaveBoy’s namesake (the Wave mode). The above features were ones I was getting requests for, including from my band-mate.

You can find more details on the features and changes in the manual.

If you want to pick up a WaveBoy, we have both the assembled and kit versions available!

Posted on

WaveBoy 0.58 Firmware Released!

While I didn’t quite get all the features I wanted, given some of the refactoring, I felt like it was a good time to cut a release. The changes include:

  • Sample Streaming from SD (no more 64k limit)
  • Sample-Rate Reducer (“Skips”)
  • Free-running LFO Step Mode, with optional Gate/CV control

There have also been some internal changes and a few potential compatibility changes, though these should be minor. The Wave mode no longer has alt-audio configuration options. Instead those have been moved to a new Step output menu (which is also where the LFO can be enabled and configured).

The sample metadata files now have an additional Skip setting. This will automatically get added to the files on save for existing patch sets.

I am already beginning work on 0.59. I would like to start work on the realtime audio tests, which include a real-time bit/sample-crusher and an envelope follower. So stay tuned for those!

Until then, Happy Synthing!

Posted on

What to expect in the WaveBoy 0.58 firmware

I’ve been working quite a bit on getting enough materials in hand for both the DIY and Production editions of WaveBoy and this has caused the firmware to take a bit of a back seat. I recently started working on a number of things for the next firmware release (0.58) and thought I might go through some of these. Of note there isn’t any guarantees all of these might make it in though that is generally the plan.

Streaming Samples

Something I have been wanting to work on for quite some time is to see if I can stream samples directly off the SD card in “realtime.” I recently gave this a go, initially using a naive implementation. This worked most of the time, but not all of the time. This is because reading just a few bytes off the SD card is usually fast, but when it’s not, it’s slow enough to where updates to the DAC get missed and this causes artifacts.

You can see in the above that weird slope in the middle. That’s not supposed to be there. The beauty of the simple solution is that loops were easy to manage. But it’s not really a solution if it doesn’t sound and work the way I want. Another limitation was the sample rate could not go as high as with the previous solution.

So plan B has been to use a simple set of 512-byte buffers where one is being read while the other is being written. This seems to work very very well. Not only can I play files of several megabytes in size without any discernible artifacts, I can also support higher pitches similar to the original solution. All while taking up far far less SRAM (which is fairly precious).

The one big issue at present is looping is now more difficult to implement, but certainly doable. The looping will end up being moved to the buffer routine such that the read-routine that sends data to the DAC can remain simple. I not sure if 0.58 will have looping functions or not. That would be a regression from how things are today but only until I sort out how to do at least forward loops.

LFOs

My band-mate has been wanting more modulation options for his guitar-centric Eurorack. While he’s been trying to figure out what LFOs to get, I realized it wouldn’t take too much work to setup an LFO mode on the Step output and would like to have at least a basic LFO in 0.58 (even if it’s just a triangle).

Envelope Follower and Realtime Bitcrushing

Another thing my band-mate’s been trying to sort out is an envelope follower. Specifically an asymetric one (where the up and down slopes can be independent). This, I think, is doable by using the CV input (since it’s bipolar) as a sample source and then output the enveloped on the Step out (which at some point I’ll probably rename to simply “Aux” or something similar).

But if I can do that, I can also do realtime bitcrushing. I find the Sampler’s crunch is really fun and the variable rate DAC seems like a great solution for adding an interesting flavor of bit-crush and sample reduction. As with the follower, the audio would be sampled via the CV in, mangled, and then sent out probably the main audio out.

What’s Not Making It

Folks may notice something glaring lacking from this release. The Generators feature, which allows for generating full Wave patches (all 16 frames) using Manipulators and/or algorithms. This is coming! But the above features I thought were a bit more in reach and I really wanted to improve the sampler. Yes, this is partly selfish since I tend to use one of my own WaveBoy’s as a sampler to augment drums among other things. The 12-bit variable clocked DAC gives it a nice LinnDrum-like sound that I really like.

Also a sequencer/tracker is something I’d like to do. The Sampler updates help realize this by freeing up more RAM for things like pattern storage. Of note this is not a near term feature necessarily (in part due to needing to figure out how to work with the limited size of the display as well as its overhead in updating the display).

I’m not sure when 0.58 will come out but I’m actively working it! That’s all for now! Of note both the DIY and Production versions of WaveBoy are now available for purchase if you want to pick one up!

For now, Happy Synthing!

Tim

Posted on

WaveBoy 0.55 Firmware Released!

It took longer than anticipated between working on the PCB update (news on that hopefully soon!) and a bit of feature creep, but I’m happy to say 0.55 is now out and available!

If you want to hear what it sounds like on the context of a song, you can check out the latest video I released on my Band’s YouTube. The primary purpose of the video was to show how I’ve been testing using an MPC One as an alternative to a computer based DAW for making music (with modular included) but it uses two WaveBoys. One is for the lead using the Trixor patch with the frames being modulated by an envelope; and the other is using the Sampler for playing our personally sampled cowbell. It’s not the best example of the Sampler since I didn’t use CV to change the samples. This was, in part, because of an unfortunate bug in MPC 3 which will require some thought on how to work-around. We actually use WaveBoy’s quite a bit in the band.

Anyways, here are the big changes in some detail:

    Manipulators

    These are a new feature for the Wave Mode which lets you perturb the selected wave using a number of algorithms. For 0.55 there are for algorithms but I hope to add more in future updates. This makes it much much easier to craft different waves and sounds without having to resort to manually placing pixels (which you can still do via the Edit Wave feature) or editing the waves using a text editor on a computer.

    A future feature that builds off these will be called Generators. They will take the same idea but allow you to operate across all 16 wave-frames as well as generating waveforms directly. So, for example, you can start with a standard saw and then use the Jitter manipulator with increasing jitters for each of the frames to go from a saw to buzzy noise. Or you can use Wrap to start with a base waveform and then successively wrap to get ever-increasing harmonics.

    Sampler

    The Sampler got a bit of an overhaul. The patch structure has changed to be a bit more flexible. The format of the metadata textfiles also changed, but is now easier to read and use. All but the sample and patch names can also be edited directly on the module. The edit mode also lets you disable CV to manually select a sample to play meaning you only need to send the WaveBoy a gate. Future revisions will allow for using a trigger instead of a gate for further simplification along with a ping-pong loop mode and, eventually, a sample wave viewer (for making it easier to set loop points).

    The biggest change here though is moving from 8-bit to 16-bit WAV files. This just made things easier, especially for building a new Patch as waves don’t have to first be converted to 8-bit. In 0.55, only 16-bit waves are supported, but I plan on re-introducing 8-bit file handling again so users can have the choice. Either way, the Sampler now offers a bit-crush mode. Even though 16-bit waves are supported, in reality, the max resolution is only 12-bit. This can now be configured on a per-sample based from 12 down to 1-bit for some truly crunched sounds.

    One nagging bug has been fixed where switching samples via CV could cause unwanted jumps. This has been vastly improved by changing how waves are loaded on demand off the SD card and also paves the way for being able to stream longer WAVs direct from the SD card rather than relying on a fairly long chunk of RAM to buffer an entire sample. This also leads the way for a “Slicer” mode which lets you use CV to jump around set points within the same wave (such as one might want to do in order to chop up a drumloop) though I probably won’t start work on a Slicer until I have a good way to visualize the samples on the module and a nice way of handling setting loop points. That will be very important for a slicer.

    Finally setting the loop points now uses a “smart” knob feature (see below).

    Control Surface Rework

    This is a behind the scenes change. The control surface (display and encoders) have been put into their own Class to make it easier to import these as well as provide extra functionality. For instance, as noted above, setting the loop points for the Sampler makes use of a smart knob feature where turning the knob fast increases the update rate which allows you to quickly coarsely set the points and then refine them by turning the knob more slowly. This also allowed for some space savings in the firmware and, in particular, RAM.

    I’m very excited about the new firmware and WaveBoy as a whole and want to also thank everyone who helped test, offered feedback, and ultimately spent your hard earned money on buying one. It means a ton to me and it’s great to know I’m not the only one that enjoy the quirky sound of chiptune, chippy-waves, and variable clocked DACs! So thank you so very much!

    – Tim

    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

    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

    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.