Posted on

Improving the GB Wave Step Sequencer

I’ve been hard at work adding features to my GameBoy Wave Oscillator module. It still needs a cool name. I originally called it GAVE (GB + Wave) but I think I can do better. At any rate, I’ve now nearly rewritten the codebase almost from scratch while switching over to C++. There were some bumps but it has vastly simplified things. Oddly my approach with C++ feels not too dissimilar to how I organize 6502 assembly programs (for the Commander X16 music tracker I’m writing, but that’s a blog for another day).

This has allowed me to add some nice features rather quickly. The step sequencer now has 4 modes: forward, backward, ping-ping, and random. The position of the step sequencer (as well as the edit position for adjusting the waveform manually) are now part of the main display. The default step sequence setting is stored within each patch as well.

There are still some features I want to add but I think the module is nearly ready as a minimum viable product, at least to folks that might not mind editing text files to mess around with waves. I want to have a means to generate waves using parameters via Python scripts initially and then plan to add that into the module directly, though I’ll want a better in-module patch UI first.

I plan on building at least one more prototype, in part so I can have two of these in my own rack, giving me 2 step sequences but also letting me do weirdo things with detune and/or using one as a dedicated step sequencer while using the other for audio (and a mix of both).