Skip to content

TurboWave X1688

The TurboWave X1688 is an 8-bit 8-voice cyclic wavetable sound card in early devleopment. 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 a standalone MIDI-based hardware synthesizer.

TurboWave X1688

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 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'm making a companion tracker called TurboTracker which was forked from my other X16 tracker, DreamTracker.

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 64-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).

Generator Mode

These are modes that generate classic waveforms (currently PWM and Saw) to avoid eating up space in the wavetable for more creative sounds.

Noise Mode

Again much like WaveBoy, TW-1688 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. The initial implementation is planned to support 16 16k samples but a future implementation may allow for more flexible variable length samples.

The actual amount of sample space depends on how much RAM is needed for operation of the TW88 itself (see below for RAM estimates). I also plan on evaluating PSRAM which is available in some Pico 2 packages.

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

A few prototypes have been made for the X16 and are working at both 8MHz and 2MHz speeds with running the UART at 1.5mbit. You can track the current state in a few places. One place is this YouTube playlist which is on my band's YouTube channel.