Inspiration

The theme of "Composition" immediately set us on the track of music, and when we saw the dataset by SGX FX providing their currency trading data, we immediately thought of generating music out of it.

What it does

Our project lets you select data for a particular range of time and turn it into a procedurally generated music piece using various different algorithms. TODO: Add decode stuff

How we built it

We used a Flask webserver to handle requests and access our SQLite database which we loaded all of the data into. The server takes data for a given range and returns the corresponding mp3 file.

Challenges we ran into

A big challenge was finding a library for music software. The library we ended up using, musicpy, has many of the features we need, but by default can only play music using the pygame sound engine, not export the music to an mp3 file. In order to fix it, we needed to add the extension DAW module for the library as well as learn all about soundfonts and midi files to be able to pipe the MIDI output from musicpy into an actual MP3. In the end, our music passed through 3 different libraries before turning into an MP3, but we were able to do all of this processing in memory, which significantly saves file I/O times for large chunks of data like our audio processing. Another challenge we faced is handling the scale of the data in reasonable time frames. We had to consider optimisations carefully and for example utilise python's iterator handling as much as possible so as to keep processing times down when processing tens of thousands of datapoints.

Accomplishments that we're proud of

We are very happy with how the project turned out overall, but we are particularly happy with...

What we learned

...

What's next for Face the Music

...

Built With

Share this project:

Updates

Submission history