01000011 01101111 01101111 01101100 00100001! Binary Synth runs in your browser, and translates any binary file from its zeros and ones into audio synthesis and MIDI messages. The code is available under an MIT license, too, if you want to play with it.
Max Alyokhin, the developer behind this, has a haunting series of performances working with these materials and found files. Working with minimal materials gives it a Ryoji Ikeda vibe:
You get more complex results with bigger files so — trying different kinds of content (including images with particular patterns, etc.) will create different results. Here’s a more involved binary from the Huawei app market:
Maybe the best result is working with silence — MP3 silence, to be exact, which produces this hypnotic rhythm:
And here’s what happens if you output to an instrument like Simpler — so this actually can be thought of as a way of generating rhythms and variations, not only synthesizing sounds directly, as you hear in this case. (.su top level domain is not something you see every day, and not something I’ll personally be registering, but it has an intriguing life and conflicted cultural identity at the moment. Its survival is the main surprise, though for instance the Yugoslavia TLD remained in service until 2008. I’m not endorsing any countries dead or alive with this post.)
Use the interface directly at: https://bs.stranno.su/
Code: https://github.com/MaxAlyokhin/binary-synth
More explanation:
ll data on any computer or smartphone is in the form of files (which are, in essence, texts). The contents of these files are ultimately just zeros and ones. And these zeros and ones are basically all the same, so we need an interpreter to extract meaning from these texts. Basically, the file format (.mp3, .docx, etc.) is just a pointer to which interpreter we need to pass the text in order to extract meaning from it.
But what if the file format and the interpreter don\\\’t match?
In the case of musical experimentation, there have been earlier attempts, for example, to \\\”play\\\” a file through an audio editor (known as databending).
We could go further and write our own interpreter that would look at the files without regard to format, use its own \\\”manner of reading\\\” the original zeros and ones, and on that basis provide a complete system for controlled synthesis of sounds:
– We can interpret files as an array of numbers. That is, we divide continuous machine code into words of some information capacity (bitness): 8 bits (numbers from 0 to 255) and 16 bits (numbers from 0 to 65 535)
– Then, each word is a command that defines the frequency of the sound.
– At the level of the whole system, we set global parameters: speed of interpretation, musical scale (or lack thereof), range of notes/frequencies, looping, MIDI mode, smooth or abrupt transition between commands, settings of virtual devices required for synthesis (oscillator, filter, LFO) or MIDI settings
– To reduce the load on the device, we divide the file into chunks of 500 commands each.
– Recursively schedule the synthesis control by reading 500 instructions per iteration and using global parameters.
– If we have reached the end of the file, stop execution or start againMore interesting sound is obtained with several independent instances of BS in different tabs.