Neural Networks allow us to learn the different intricacies and details that underly a certain processes. From basic representations of a deep network to convolutional networks to recurrent networks, we are able to learn features that define a certain object or process. Significant research has been done to generate music using recurrent networks and this project explores possibilities and experiments regarding such discoveries.
This project draws heavy inspiration from this article and this. Some of the code represented here are built on top of the code found in the previously mentioned articles. However, instead of only training notes, chords, and rest-durations, I will also train durations and use them as learned offsets when writing to midi files. This allows for the network to also understand the style of pacing and note durations that can define a genre of music. The project will also focus on Long Short-Term Memory (LSTM) architecture of Recurrent Neural Networks (RNN) -- more information on this can be found in Andrej Karpathy's very informational and simple blog. Some models will contain Bidirectional architectures as well as Attention architectures as well.