Skip to content

TurboWave-88

The TurboWave-88 is, at present, just a somewhat ethereal proof of concept for an 8-bit 8-voice cyclic wavetable sound card. It blends the concepts of the WaveBoy, itself taking a lot of inspiration from the GameBoy/LSDJ wave-channel; and the Turbo-Grafix 16 / PC-Engine.

The current target is the Commander X16 but other platforms are possible, such as the Foenix/Wildbits F256, as well as even a standalone MIDI-based hardware synthesizer.

The specification is planned to be complete enough that it can be used for others to create a soft-core (for Furnace, MiSTer, etc.). The official hardware will use a variable clocked DAC to derive the pitch (just like our WaveBoy). That may require some work for software implementations to approximate and will give a different sound profile.

Reasoning

Given the WaveBoy, I have a fascination with the variable clocked DAC concept and these "drawn" waveforms. The TG16 sound solution is my favorite among the chiptune options for this reason. It still has a chippy sound while having a lot of flexibility with its own unique sound. I feel like PSGs, especially the SID, are well represented on the retro/chiptune space - as is Yamaha FM. These are fun, but I think the cyclic-waveform approach is under-represented.

I also wanted reasonable limitation. Some of these retro platforms have many sound chips available in a big FPGA and it kind of defeats one of the points of chiptunes: exploiting limitations. While the TurboWave-99 can be added in with these, my own personal idea is to focus on just this soundchip.

Initially I was planning on using memory-mapped IO (MMIO) to interact with the solution in a very 6502-esque way, but decided to focus on a UART solution. This makes interfacing with the X16, F256 or any many other modern or retro computers easier. It also allows for an external standalone MIDI version too.

On the X16 side, I may end up forking my current tracker project, DreamTracker, to create a tracker that is just for the TW-88. And/or I may look at a similar solution for the F256 systems.

Modes

There are currently three modes planned:

Cyclic Mode

In this mode, channels operate over 256 available frames in a cyclic mode. Each frame is 32-bytes which usually will represent one period of a wave cycle. Frames can be selected directly or can be "flipped through" via automation (such as an LFO or Envelope).

Noise Mode

Again much like WaveBoy, TW-88 will have various noise modes, both typical (LFSR, random) but also a-typical like some of the WaveBoy modes (drip, etc.).

Sample Mode

In this mode, channels operate over a 256k sample space. This idea is still being work-shopped but for memory efficiency, samples can be loaded in of any length and will be packed together one after another with start pointers into the array.

256k may be optimistic as this depends on how much RAM is needed for operation of the TW88 itself. See below for RAM estimates.

This mode is similar to the WaveBoy sampler implementation, although 8-bit instead of 12-bit and without streaming support. Streaming support would require an SD card or some other storage, which is possible in a later release, though the focus is mainly on the cyclic modes with this being a sort of bonus.

Current State

I am begun working on both the firmware and schematic and (very rough) PCB and have likely settled on the major components. The MCU will likely be a Raspberry RP2350, specifically the Pico 2 in the first iteration. The RP2350 was chosen in part because of its cost and the plethora of timer options it provides.