Jeffrey Morris


Bytebeat: Deterministic and Undeterminable

Bytebeat is an intensely digital-native approach to coding music that yields rich results from only basic math performed on 8-bit integers in just a single line (Heikkilä, 2011), simply twisting an ever-rising ramp t into audible waveforms and musical structures. My experiences learning and teaching bytebeat have led to several useful perspectives on the nature of software, computational creativity, and human–machine collaboration.


Bytebeat is an anachronism unto itself: although it was not introduced until 2011, it was feasible the 1950s, and in retrospect, it would seem like an attractive avenue compared to Markov chains (Hiller & Isaacson, 1956) and physical modeling (Mathews, 1957). However, it seems to have required a twenty-first-century perspective in order to fully see the value of exploring it as a creative practice. Bytebeat coding would have been possible in 1951, after Alan Turing and Geoff Hill (working separately), made melodies by controlling the speed of the computer’s alert buzzer. Instead, the first programming languages for music, created by Max Mathews at Bell Labs in 1957, imposed the centuries-old orchestra–score paradigm of acoustic music upon the digital platform, dominating digital audio ever since.

Steven Holtzman, G. M. Koenig, and Paul Berg did desire to escape artificial metaphors in the 1960s and 1970s, and while their work is like bytebeat in its use of restricted instruction sets, they still used more traditional, controlling mindsets. Koenig had the vision to pursue “a new field of sound, not speech sounds, not instrumental sound” (interviewed in Roads, 1978, p. 12), free from “the classical descriptions of sound” (p. 13), and Roads acknowledges their “idiomatic use of computer instructions, with no acoustic model” (Roads, 1996, p. 328). However, their work involved longer programs than bytebeat’s single line, they rely heavily on random number generators (RNGs), whereas even creating one in bytebeat is a significant task in itself, and their work betrays more of a mind to dictate musical structure over time rather than letting it unfold generatively and natively.


Perhaps it is because of this corruption of ideas that later twentieth-century composers did not appreciate the potential of this approach: “early work. . . demonstrated the inadequacy of abstract mathematical models that generate musical sounds without accounting for our ears’ cultural conditioning” (Miranda, 1995, p. 64). Today, it appears that Koenig was correct in thinking “it would be the task of a later time or other people to map the new possibilities to the old experiences” (Roads, 1978, p. 13).

{kind: paragraph, function: introduction, keywords: [synthesis, sound, production, 8-bit, coding, non standard, single line, generative, possibilities, experience]}

Threshold of Autonomy

Programmers readily acknowledge that a digital RNG is actually only pseudo-random, but bytebeat helps us further unpack this concept and gain another perspective on computer autonomy. Even without RNGs, the mathematical principles at work in bytebeat are so abstract that it keeps the programmer in an exploratory, rather than deterministic, mindset. The results of even simple changes to the code are often as surprising as if they were truly random. Viewed this way, it reminds us that this is true of all pseudo-RNGs: bytebeat coding makes it easier to recognize that at some level of complexity, we simply give up on determinism and might call it agency. Here, I am reminded of Wolfram’s principle of computational equivalence (Wolfram, 2002): perhaps it is more useful to discuss agency as being in the eye of the beholder, when the complexity of the beheld approaches that of the beholder.


{kind: paragraph, keywords: [synthesis, random, number, autonomy, computer, deterministic, agency, complexity, Wolfram, computational equivalence]}


There is no RNG in the simplest form of bytebeat; when building your own, and especially when seeking ways to build more complex timbres and formal structures than the idiomatic sawtooth wave and the seconds-long loop, one comes to appreciate and value different types of “impurities” in quasi-RNGs that would otherwise be dismissed as shoddy attempts at autonomy. This is just one of the ways bytebeat keeps the programmer mindful of the machine’s true nature.

While the premise of bytebeat seems straightforward: a single line of basic 8-bit math inside a for-loop that also increments t (the clock) with each loop, surprisingly, working in different bytebeat interpreters will expose developers’ different approaches to realizing this premise, which can make one bytebeat expression sound very different in different interpreters (Morris, 2019). This keeps the coder mindful of the “wrapper,” aware of exactly what stage the 8-bit truncation is done, for example. Something as simple as external variables (i.e., initialized in the wrapper, outside the for-loop) unlocks a powerful new tier of abilities, including sample-and-hold and Euclidean rhythms.


{kind: paragraph, keywords: [bytebeat, sawtooth, waveform, timbre, structure, impurities, random, machine, computer, recursion, iteration, 8-bit]}

Palpable Coding

More intentional developer features make the coder mindful of further outside layers. Bitwiz (Liljedahl, n.d.) allows the bytebeat code to change the sample rate over time—usually treated like an immutable constant. Greggman (Tavares, n.d.) assigns the window height and width to variables. This not only allows the coder to resize the program window as a means of continuous control input but it allows these variables to be repurposed, since they are external variables. Here, the awareness starts to become physical as well. The need to change values rapidly during performance led me and my students to recognize valuable techniques of typing dexterity such as the backspace flam (Morris, 2019).


{kind: paragraph, persons: [Jonatan Liljedahl], keywords: [bytebeat, sample rate, variables, awareness, typing]}

The User and the Black Box

Bytebeat is a black box that can be opened wide, only to reveal dark-grey insides. Screen sharing and tutorials are not a full solution here. While it may be disheartening at first to recognize that you may never “master” it—that it is at the same time deterministic and also undeterminable, herein lies a much-needed mindset for our species as it encounters any technology whose behavior lies outside our full grasp: a brave exploratory mindset that is comfortable with the undeterminable, empowered to explore and collaborate with it (rather than surrendering control to it) and to look past any labels, seeing our technology for what it is, at a more basic, native level—and better to see what we can become together.

{kind: paragraph, keywords: [bytebeat, black box, deterministic, undeterminable, control, technology, synthesis]}

All Links

{kind: reference, persons: [Terry Tavares, Jeffrey Morris], keywords: [bytebeat, tutorial, performance, programming, sound studies]}



  • Liljedahl, Jonatan. n.d. Bitwiz Audio Synth. iOS. Kymatica.
  • Hiller, Lejaren, and Leonard Isaacson. 1956. Illiac Suite. Musical composition. Champaign, Illinois: University of Illinois.
  • Mathews, Max. 1957. “Daisy Bell.” Recording of music composed by Harry Dacre (1892). Murray Hill, New Jersey: Bell Labs.
  • Miranda, Eduardo Reck. 1995. “An Artificial Intelligence Approach to Sound Design.” Computer Music Journal 19, no. 2: 59–75.
  • Morris, Jeffrey M. 2019. “Metagaming Concepts for Analysing Techniques and Aesthetics in Bytebeat Performance: The Technology Tree, the Tier List, and the Overpowered.” In Proceedings of the XXII Generative Art Conference, Rome, Italy, December 19–21, 2019.
  • Roads, Curtis. 1978. “An Interview with Gottfried Michael Koenig.” Computer Music Journal 2, no. 3: 11–15.
  • Roads, Curtis. 1996. The Computer Music Tutorial. Cambridge, Massachusetts: MIT Press.
  • Tavares, Gregg. HTML5 Bytebeat. Web application.
  • Heikkilä, Ville-Mattias. 2011. “Discovering novel computer music techniques by exploring the space of short computer programs.”
{kind: reference, keywords: [_]}


Heikkilä, Bytebeat: Music from Very Short Programs—The 3rd Iteration

Adding, Mixing, and Artifacts in Bytebeat Prorgamming

Sample Tutorial & Musical Study: Replacing Constants with Ramps

Morris, Study 1

Morris, Study 2

Playlist of Student Performances and Tutorials

meta: true
event: almat2020
kind: essay

date: 200919
author: Jeffrey Morris
place: Online

keywords: [algorithm, bytebeat, sound, synthesis, coding, 8-bit]


{kind: link}