The team decided that we wanted to make music autonomously and explore how difficult it was to make something that sounds pleasing.

What it does & How we built it

This program uses data from a website called Hook Theory to statistically determine the next chord progression. The data was obtained using the java selenium library and compiled into a database. Then during program execution the data is compiled into a trie, a tree with three layers per root. Using statistics we weighted each node in the tree. Then when a new key had to be obtained, the previous three keys played are taken into consideration and their statistical probabilities in order to determine the next key. Additionally, we made a nice interface to go along with it.

Challenges we ran into

As expected and as usual we ran into a lot of problems. Especially obtaining information from the hook theory website was difficult. This is because no database on chord progressions exists. Therefore we had to write up a script to obtain the data. Additionally, learning about tries and applying them proved to be very difficult. We also had to write up threads in order to play notes in different channels.

Accomplishments that we're proud of

Getting the application to work and producing decently sounding music in just a few days.

What we learned

We learned a lot about threads and timing problems in Java. We also learned a lot about music theory as we browsed the internet on how to generate music.

What's next for Procedural Music Generator

Improvements to complexity and improving the data used. Applying a neural net would be awesome and we believe that we could learn a lot from that.

Built With

+ 19 more
Share this project: