Turn a Game Boy Into a Chiptune Synthesizer
Adil Soubki has a guide on how to utilize the Nintendo Game Boy’s audio capabilities to make chiptune music.
Chiptune is a genre of music made using the sound chips from vintage computers and video game consoles. In the 8-bit and 16-bit eras, those chips were rudimentary and could only produce basic bleeps and bloops. The result was very distinct sound, and that sonic signature is now nostalgic for many of us. By composing new music and playing it through those vintage chips, you get music that tickles our nostalgic fancy. Chiptune music can be created with just about any of those old chips, but Adil Soubki has a guide on how to utilize the Nintendo Game Boy’s audio capabilities specifically.
The original Nintendo Game Boy did not have a separate, dedicated sound chip. Instead, the sound generation is handled within the main MCU (MicroController Unit). It has two pulse wave generators, a 4-bit PCM wave sample, and a noise generator. The device itself only has a single monaural speaker, but stereo is available through the headphone port. Because there isn’t a dedicated chip to access, commands have to be sent to the MCU to produce specific sounds. Normally, those would come from the game cartridge. To make it possible to send commands on-demand, Soubki built a special cartridge adapter.
The three primary components of that adapter are a Teensy 3.5 board, a TinyFPGA BX, and an AT28C256 EEPROM chip. The FPGA is configured to act as dual-port RAM. That means data can be sent to it from the Teensy and also accessed by the Game Boy to load commands. The Game Boy cartridge code is stored on the EEPROM chip. Whenever the user wants (such as when a keyboard button is pressed), the Teensy can inject data into the FPGA dual-port RAM where it can be read by the Game Boy. That data can be a command to produce a desired sound. Soubki currently has it setup to load MIDI music from a computer connected to the Teensy, but it would also be possible to set it up to work with a MIDI keyboard to play music in real time.