ChordAL icon indicating copy to clipboard operation
ChordAL copied to clipboard

Code accompanying ICCC 2019 Creative Submission paper - "ChordAL: A Chord-Based Approach for Music Generation using Bi-LSTMs".

ChordAL - A chord-based approach for AI music generation

Extended abstract: TBA
Full thesis: TBA

SoundCloud
Check out ChordAL's music on Soundcloud!

Introduction

It seems to be very intuitive for human composers to write songs based on chord progressions. However, not much work is done on exploring how we could generate melodies based on given chord progressions.

Here we propose ChordAL, which is a chord-based learning system for music composition using deep learning.

Architecture

The generation process is divided into 3 parts: chord generation, chord-to-note generation, and music styling. For more information, please refer to our extended abstract.

We see chord-to-note generation tasks to be similar as neural machine translation tasks, which trains on a large amount of parallel datasets between chords and notes.

File Structure

Each folder is structured to be a component of ChordAL's system:

  • chord: chord generation
  • dataset: data-loading related functions
  • evaluation: automated evaluation test on generated piece
  • generator: combines chord and melody with music styling
  • models: models used / experimented in ChordAL
  • note: melody generation based on chords
  • visualizer: Flask web application for demonstration

Dependencies

P.S.: According to the installation versions of dependencies, it is recommended that the python version is the latest Python 3.6(3.6.8 maybe?)

Try ChordAL yourself!

pip install -r requirements.txt
cd visualizer
python3 main.py

You can then try it on your browser at localhost:5000. Enjoy and hope you like it!

References

For training, we use McGill Chord Dataset, Nottingham dataset cleaned by Jukedeck, and CSV leadsheet database published by MARG Seoul, Korea. These are the more-established parallel dataset of chords and notes, to the best of our knowledge.

Some code references from Keras and Tensorflow tutorials are being used during development.

Author

Tan Hao Hao
Nanyang Technological University, School of Computer Science and Engineering
tanh0207 (at) e.ntu.edu.sg

Code is licensed under the MIT License.