Inspiration

Initially, we wanted to create an Esolang that was unique and interesting. While searching for ways to implement a unique Esolang, we came across other Esolangs such as Image, a 2D image-based Esolang, and realised that there were not many examples of Esolangs that utilised audio as its primary medium of communicating computational processes, which is why we wanted to give it a go.

What it does

Earf_ck is primarily an Audio-based language that compiles to Brainfuck programming language. It is also able to map a given Brainfuck program into its audio version.

How we built it

As we wanted to have a clean web interface that ran entirely on the front-end, so that users can reliably create and experiment with the language that we built, we decided to build the project in JavaScript as it has a robust system of modules and libraries that we could make use of.

Challenges we ran into

During the implementation of Earf_ck, we realised that trying to formulate our own set of instructions that could execute all the kinds of programs we wanted to run (i.e. prove turing completeness) was a challenging task. Furthermore, the resulting sound would have been that much more harder to create and/or analyse. Hence, as a first iteration, we decided to work on a language that had a simple set of instructions that would be easy to encode (and subsequently, decode) such as Brainfuck. As it turns out, this first iteration took us longer than anticipated, and we eventually decided to center our project around this idea, since it did ultimately achieve our goals (in a nonsensical sort of way).

Accomplishments that we're proud of

Being able to implement an idea concretely, even if it was only the first iteration.

What we learned

We learnt that some aspects of the project which we initially thought to be intuitive and easy to implement could end up being one of the most tedious and challenging tasks to solve in practice! E.g. Fast-Fourier Transforms (FFT) in JavaScript or working with different file formats.

What's next for Earf_ck

We want to introduce more variations in tone & pitch, note durations, instrumentation, etc., which would allow us to create a more robust set of instructions that might possibly be easier to use than one that is based on Brainfuck, which would be more intuitive and easier to learn for the average programmer.

Also, more funky bops(TM) would be nice.

Built With

Share this project:

Updates