In this project we will be building a model capable of generating notes and chords after learning from the dataset of songs we provide to our recurrent neural network and create songs. Before we start, let us recall few of the basic concepts and terminologies we will be using in this project and add to that knowledge the concepts required to successfully train our model to be an excellent composer.
-
Recurrent Neural Networks (RNN): A recurrent neural network is a class of artificial neural networks that make use of sequential information. They are called recurrent because they perform the same function for every single element of a sequence, with the result being dependent on previous computations.
-
Long Short-Term Memory (LSTM): A type of Recurrent Neural Network that can efficiently learn via gradient descent. Using a gating mechanism, LSTMs are able to recognise and encode long-term patterns. LSTMs are extremely useful to solve problems where the network has to remember information for a long period of time.
-
Music21: A Python toolkit used for computer-aided musicology. It allows us to teach the fundamentals of music theory, generate music examples and study music.
-
Keras: A high-level neural networks API that simplifies interactions with Tensorflow.
-
Note: Note is a small bit of sound, similar to a syllable in spoken language.
-
Chord: Any harmonic set of pitches/frequencies consisting of multiple notes that are heard as if sounding simultaneously.
-
Pitch: The frequency of the sound, or how high or low it is and is represented with the letters [A, B, C, D, E, F, G], with A being the highest and G being the lowest.
-
Octave: Which set of pitches you use on a piano.
-
Offset: Where the note is located in the piece.
-
Lofi Hip/Hop: Lo-fi Hip Hop refers to a subliminal genre of music that fuses traditional hip-hop and jazz elements to create an atmospheric, soothing, instrumental soundscape. It is characterized by the high-utilization of elements such as introspection, mellow tunes, and Japanese anime.