Skip to content

Generation of a dynamic visualization based on rhythmic audio tracks or real-time musical events

Notifications You must be signed in to change notification settings

michele-perrone/synesthetic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Synesthetic

What is Synesthetic?

The goal of Synesthetic is to create a colorful and dynamic visual representation of a rhythmic musical piece. The user is required to upload an audio file containing of a rhythmic recording, e.g. a drum recording. A rhythmic analysis then is performed on the track, which separates the contributions of the different periodicities present in the rhythm, so that each periodicity can give a separate contribution to the visualization. This makes Synesthetic an informative tool for rhythm visualization. We encourage the user to upload polyrhythmic and polymetric tracks for a more interesting visual experience.

How does this "colorful representation" actually look?

We chose to take inspiration from the famouse painter Piet Mondrian. We imagined our representation as a Mondrian-like composition which reacts to the rhythmic events by vibrating, pulsating in color, and so on. We prepared a demo which shows you the representation based on drum track of "Sound of Muzak" by Porcupine Tree.

Give me some implementative details!

The code of Synesthetic is divided into two main parts:

  1. Backend (implemented in Python): receives the audio track uploaded by the user, performs the rhythmic analysis and stores a compact representation of the rhythmic content inside a JSON file. Polyrhythms and polymeters are supported. Both the audio track and the JSON file are then retrieved by the frontend.
  2. Frontend (implemented in JavaScript): takes in the data generated by the backend and generates the representation. The various animations of the representation are triggered in sync with the rhythmic events of the musical piece.

Python and Javascript are integrated using Flask, which instantiates a web server (see https://flask.palletsprojects.com/en/1.1.x/installation/ and https://palletsprojects.com/p/flask/)

How to run Synesthetic / I want to know more details about the code!

To run synesthetic, you'll have to instantiate the Flask server, either locally or on a server. Please follow the instructions located in the README in the source code folder. The README also contains further details of the implementation, to make your journey through the code easier.

About

Generation of a dynamic visualization based on rhythmic audio tracks or real-time musical events

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages