Generating MIDI music with Recurrent Neural Networks
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Generate MIDI Music with Recurrent Neural Networks

The project consists of the following files:

  • More than 600 songs in text format converted from MIDI format.
  • Generator of the neural recurrent network model based on
  • Program that will load the model generated by and generate a MIDI file.
  • rnn_midi_25_100_50000.dat : Model saved with 50,000 iterations.
  • rnn_midi_25_100_200000.dat : Model saved with 200,000 iterations.
  • rnn_midi_25_100_250000.dat : Model saved with 250,000 iterations.

The requirements to use this project are:

  • Python 2.7or higher.
  • Numpy:Mathematical library for python.
  • Mido: MIDI file library for python.

Model Training

Although the project contains several models already trained with different number of iterations we can train it ourselves.
This generates the trained model in a file with .dat extension.

Generate MIDI Files with the trained model

This generates a file with .mid extension.

Play MIDI files

To play MIDI files we have several options, although one of the simplest in timidity, which in addition to playing MIDI can convert them to WAV.
timidity song1.mid

Generate MIDI file, convert it to wav and play it on a single line.

python; timidity --output-24bit --output-mono -A120 song1.mid -Ow -o song1.wav; aplay song1.wav

Convert MIDI files to MP3

ffmpeg -i song1.wav -acodec libmp3lame song1.mp3

Tests performed

These are several of the tests generated by our Artificial Intelligence.

Trumpet song created by Artificial Intelligence:

Harp song created by Artificial Intelligence:

Violin song created by Artificial Intelligence:


Generar música MIDI con Redes Neuronales Recurrentes

El proyecto está formado por los siguientes archivos:

  • Más de 600 caciones en formato texto convertidas desde formato MIDI.
  • Generador del modelo de red recurrente neuronal basado en
  • Programa que cargará el modelo generado por y genera un archivo MIDI.
  • rnn_midi_25_100_50000.dat : Modelo guardado con 50.000 iteraciones.
  • rnn_midi_25_100_200000.dat : Modelo guardado con 200.000 iteraciones.
  • rnn_midi_25_100_250000.dat :Modelo guardado con 250.000 iteraciones.

Los requisitos necesarios para poder utilizar este proyecto son:

  • Python 2.7 o superior.
  • Numpy: Librería matemática para python.
  • Mido: Librería de archivos MIDI para python

Entrenamiento del modelo

Aunque el proyecto contiene varios modelos ya entrenados con diferentes número de iteraciones podemos entrenarlo nosotros.
Esto genera el modelo entrenado en un archivo con extensión .dat.

Generar Archivos MIDI con el modelo entrenado

Esto genera un archivo con la extensión .mid.

Reproducir archivos MIDI

Para reproducir archivos MIDI tenemos varias opciones, aunque una de las más sencillas en timidity, que además de reproducir MIDI puede convertirloas a WAV.
timidity song1.mid

Generar archivo MIDI, covertirlo a WAV y reproducirlo en una sola línea.

python; timidity --output-24bit --output-mono -A120 song1.mid -Ow -o song1.wav; aplay song1.wav

Convertir archivos MIDI a MP3

ffmpeg -i song1.wav -acodec libmp3lame song1.mp3

Pruebas realizadas

Estas son varias de las pruebas generadas por nuesta Inteligencia Artificial.

Canción de trompeta creada por Inteligencia Artificial:

Canción de harpa creada por Inteligencia Artificial:

Canción de violín creada por Inteligencia Artificial: