ASCIIplayer
About
ASCIIplayer is a music web player, developed during the first italian Music Hack Day in 2013 whose interface is made entirely by ASCII characters.
It won the Soundcloud prize and it featured a search engine, play / pause controls and a real 'graphic' eq.
History
Back in 2013 Musixmatch, in collaboration with Robot festival, had organized the first Italian Music Hack Day: a 24 hour music-themed coding event similar to what was happening at the time in other major cities across the globe. It was a time with lots of excitement for digital music services and those kind of event were very frequent.
Many companies offered their APIs to create hacks in which different services were mixed together creating something original.
It was my first HackDay experience, I had just joined Rockol and we were there as one of the sponsor of the event, so I took the opportunity to join the challenge.
Why?
The concept of the ASCIIplayer was inspired by the fantastic work of cmd.fm which is a CLI interface, that at the time interfaced with the Soundcloud API. My idea was to develop a complete ASCII text-based GUI instead.
At the end the result was good and I ultimately won the Soundcloud prize.
How?
The work usually takes place in 24H. The developer or team can manage the time as they see fit and send their realization within the established deadline.
I really wanted to have a graphic equalizer and I knew that surely would have been the most difficult challenge. To accomplish that I needed to rely on APIs that would allow me to access the actual MP3 file so I could use a good sound analysis library on it. In the end Soundcloud proved to be the only choice, even if with an extremely limited catalog (Deezer and Spotify did not allow at the time to direct access their audio files - and things are still like this at the time of this writing).
The creation of the search engine and the recovery of the files by Soundcloud was quite simple; most of the work was spent on creating the equalizer which made it necessary to use and configure a sound analysis library (at that time Web Audio Api wasn't available in all the browsers).
After completing the display part of the eq in its simplest form, I decided to add two other display modes:
- the first one that feature an eq with the ability to display the lyrics of the current playing song (thanks to the use of the Musixmatch API).
- the second one that featured an equalizer version tributing the famous scene of the repeated text from the movie The Shining