Project Portfolio
Here are some of the projects I've worked on:
Midigen
Midigen is a Machine Learning model to generate MIDI music, using the LSTM architecture. It's still under development.
Midigen started as a dream to generate cozy JRPG style music like that in Pokemon and old Final Fantasy games. It is way far from that and I don't think that will get to that point, but it has been a fun experiment to learn more about Machine Learning development. I've come soon to realize that the hard part is not the code but the data processing.
I started the project with some classical music MIDI files that I downloaded from Kaggle, since there were simpler than the JRPG music. I manually edited the files so that only one instrument is used, so I could focus on creating a melody. My initial struggle was thinking how should I approach the duration of the notes, whether it should be absolute or relative to the previous note. I ended up using the latter, since it assured my that the notes would be in the correct order. I also switched latter to duration categories instead of using floating numbers, which gave me more robustness.
But now I had a different problem, the notes were converging to the same pitch. I switched to one-hot encoding features, but the problem persisted. This brought me a lot of frustration, until I eventually abandoned the project. After AI-assisted coding tools became better, I decided to give it another try. I switched to a multiple-head attention model, which gave me better results, but not much.
Here's a sample of the generated music:
Technologies: Python, Tensorflow, Keras