Chiptable
Chiptable is, at present, just an ethereal proof of concept for a multi-channel WaveBoy-like soundcard for the Commander X16 or similar 6502 computer.
The idea is a multi-channel audio solution combining the variable clocked DAC of the WaveBoy and applying to a sort of hybrid between LSDJ wave frames and the TG16 sound solution.
The idea is to support 8 voices (channels) with each channel having 256 bytes of sample data divided into 8 frames. Two modes will be supported:
A frame/window mode, which mirrors that of the WaveBoy in that it repeatedly cycles through the 32 samples providing a cyclic waveform. This can be either at fixed 8 block sections or in a free frame mode, where the frame window can move across all 256 bytes (looking at a 32 byte slice).
Or a jumbo frame mode, which operates across the full 256 byte sample and can be used for very short audio clips or long cycles.
Why 256 bytes and 8 frames instead of 512 and 16? This is to be determined but on 8-bit platforms, like those using a 6502 CPU, this presents a nice boundary for efficient loops.
To provide more flexibility, similar to the WaveBoy, there will be a loadable bank of frames/samples which can be loaded directly onto the sound card. How many samples depends on the capability of the microcontroller/FPGA but if looking at the RP2040, up to 256 samples (of 256 bytes) are possible, perhaps more.
Memory Usage
RAM Usage
Sample Banks: (256 * 256) 64k
ROM LUTs
Note/Semi to Timer Value: (64k * 3 bytes) 192k LFO Sine: ??
Proposed Microcontrollers
RP2040
- Clock Freq: 133 MHz
- SRAM: 264k
- Flash: 2MB
- Timers:
- 1x 64-bit global
- 8x PWM 16-bit
- 8x PIO 32-bit
- 4x DMA
- 2x Cortex (microsecond)
RP2350
- Clock Freq: 150 MHz
- SRAM: 520k
- Flash: 4MB
- Timers:
- 2x 64-bit global
- 12x PWM 16-bit
- 12x PIO 32-bit
- 4x DMA
- 2x Cortex (microsecond)
- 1x RISCV SIO
Ideas
- Consider a UART instead of MMIO? (See: https://discord.com/channels/547559626024157184/547560914744901644/1439781003370561657)