/h0b0-redo

H0b0 redo album experience

Primary LanguageJavaScript

โ™ช h0b0 ๐“ป๐“ฎ๐“ญ๐“ธ โ™ซ

Welcome to the repository for the online audiovisual experience of h0b0's ๐“ป๐“ฎ๐“ญ๐“ธ album. This project is inspired by the underlying circularity of the album's concept. As ๐“ป๐“ฎ๐“ญ๐“ธ implies, this circle is ever present โ€” a loop. Each song is a circle by itself, loopable, infinite. Join these pieces and compose the larger circle, the album.


You can find more on h0b0 in the following places:

You can also listen to it in the usual platforms:


Development

This project was developed using p5.js, a JavaScript library for creative coding. If you would like to learn more, we suggest you look at the official p5.js website and references, along with The Coding Train's tutorials and content.

We can decompose the project into two layers.

Interface

The interface gives the user the controls and information on the musical component. The circles allow the tracks to be changed. Below that, you have the display. There you can see the track name, time, loop status, and playback speed.

Visuals

The background images can be regarded as a separate layer, although still related to the musical component. These visualisations are done through the use of glsl shaders.

You can learn more about shaders in p5js in this guide by Casey Conchinha and Louise Lessรฉl. Aferriss has a great collection of heavily commented p5js Shader Examples. And for even more examples and inspiration you can check Shadertoy.

In this project the following shaders were ported and modified:


Issues

Mobile

  • issue: MusicController stop() not working;
  • issue: webapp not working in landscape mode;
  • issue: speed buttons stay highlighted on click;

Desktop

  • issue: looping songs and changing with keyboard arrows does not remove looping state of previous track;

Technical

Web:

  • download music to cache (faster loading if page is refreshed, save data);