Recently I've been listening to a lot of music, and even making some virtually (but creating it myself). When Dr. Wolfram showed some audio-related functionality in his Wolfram Notebook, I realized I should do something music-related, and decided on this. So I began looking for libraries to use and ways to implement this.

What it does

It randomly generates a tempo, key, and scale, and figures out the notes in key. Then, out of that it randomly creates chords (length of one measure) and a melody (random length of each note). It mixes them and plays the audio.

How we built it

I built it by finding libraries for the purposes I needed, like editing and synthesizing MIDI, gathering Soundfont samples that sounded good. Then, I added features step by step until it all worked as it does now.

Challenges we ran into

It was difficult to find libraries that worked for me, especially for synthesizing and editing MIDI. Also, making the animation was challenging as I had never used the website before.

Accomplishments that we're proud of

I'm quite proud that it works this consistently well, and sounds pretty good based on the loose limitations I put in place.

What we learned

I learned about creating, editing, and synthesizing MIDI with Python, and how to create pixel art animations online.

What's next for Virtual Pianist

I would like to be able to add drums; I had planned to do that but I was unable to find any good drum Soundfont samples. Also, I would like to add better and more advanced graphics, maybe with PyGame.

Built With

Share this project: