Simple Bytebeat GB ROM

On this page we will look at making a simple Game Boy ROM, as a way to get familiar with using GB dev toolkits. Obviously if you are new to programming some parts will remain obscure as this is not meant to be an exhaustive programming tutorial, but more like an opportunity to peak into the potential of this approach and give enough pointers so that you can explore this path further if you're interested.

Short history
On the 26 September 2011, Ville-Matias Heikkilä (AKA viznut) publishes a YouTube video showcasing experiments with C oneliners so as to "[f]ind simple math that generates interesting and varying musical output". The original collection is a documentation of these experiments by viznut and friends. On the 27 September 2011, someone posts about the video on the pouet.net directory/forum used by the demoscene. The thread attracts lot of feedback and a plethora of new C oneliners written/modified by forum participants. Everyone tries to discover new interesting musical patterns, use the technique to implement known mathematical formulas with interesting properties, or simply find ways to transform, modify and combine the finding of others.

Eventually on the 2nd of October 2011, viznut publishes the article "Algorithmic symphonies from one line of code -- how and why?" to provide some context and insights about these experiments. He explains that bytebeat had emerged as part of a research on very small (few bytes big) demos. The article also serves to point to variations that have also started, at time of writing, to happen both in terms of programming environments (some people started to create JS web application to experiment with the oneliners in the browser) and the generated media, namely turning the C oneliners also into images and audiovisual experiments (we did some as well, like using mplayer to generate both audio an video, or how to implement bytebeats in Pure Data).

From this point on, the whole thing exploded in all sorts of directions, and even though the bytebeat movement has obviously lost its early days impulse, it still resurfaces every now and then, with the same excitement and energy. Next to that it has became the most stimulating way to experiment with 8bit musical structures that is both playful in its constraint writing approach, and perfect for devices where computational power is limited... like a GB :)

Why such a simple way of making sound was not something already widely known or experimented with before, remains a puzzle. viznut provides his own theory about this:

"We've had the technology for all this for decades. People have been building musical circuits that operate on digital logic, creating short pieces of software that output music, experimenting with chaotic audiovisual programs and trying out various algorithms for musical composition. Mathematical theory of music has a history of over two millennia. Based on this, I find it quite mind-boggling that I have never before encountered anything similar to our discoveries despite my very long interest in computing and algorithmic sound synthesis. I've made some Google Scholar searches for related papers but haven't find anything. Still, I'm quite sure that at many individuals have come up with these formulas before, but, for some reason, their discoveries remained in obscurity."

"Maybe it's just about technological mismatch: to builders of digital musical circuits, things like LFSRs may have been more appealing than very wide sequential counters. In the early days of the microcomputer, there was already enough RAM available to hold some musical structure, so there was never a real urge to simulate it with simple logic. Or maybe it's about the problems of an avant-garde mindset: if you're someone who likes to experiment with random circuit configurations or strange bit-shifting formulas, you're likely someone who has learned to appreciate the glitch esthetics and never really wants to go far beyond that."

Preparation

 * GBDK 2020
 * Optional: flashcard + flasher

What's next

 * cable sync up with other bytebeat and/or LSDJ
 * extra online resources