MidiNet: A Convolutional Generative Adversarial Network for Symbolic-domain Music Generation

Li-Chia Yang, Szu-Yu Chou, Yi-Hsuan Yang
3/31/2017
cs.SDcs.AI

Official code: RichardYang40148/MidiNet (186 stars, last commit 2018-10-22).

Abstract

Most existing neural network models for music generation use recurrent neural networks. However, the recent WaveNet model proposed by DeepMind shows that convolutional neural networks (CNNs) can also generate realistic musical waveforms in the audio domain. Following this light, we investigate using CNNs for generating melody (a series of MIDI notes) one bar after another in the symbolic domain. In addition to the generator, we use a discriminator to learn the distributions of melodies, making it a generative adversarial network (GAN). Moreover, we propose a novel conditional mechanism to exploit available prior knowledge, so that the model can generate melodies either from scratch, by following a chord sequence, or by conditioning on the melody of previous bars (e.g. a priming melody), among other possibilities. The resulting model, named MidiNet, can be expanded to generate music with multiple MIDI channels (i.e. tracks). We conduct a user study to compare the melody of eight-bar long generated by MidiNet and by Google's MelodyRNN models, each time using the same priming melody. Result shows that MidiNet performs comparably with MelodyRNN models in being realistic and pleasant to listen to, yet MidiNet's melodies are reported to be much more interesting.

View on arXivView PDF

Code Implementations(1)

This repository contains the source code of MdidNet : A Convolutional Generative Adversarial Network for Symbolic-domain Music Generation

18646PythonJul 11, 20178 years ago

Similar Papers

Cite this paper

@article{yang2017midinet,
  title  = {MidiNet: A Convolutional Generative Adversarial Network for Symbolic-domain Music Generation},
  author = {Li-Chia Yang and Szu-Yu Chou and Yi-Hsuan Yang},
  year   = {2017},
  eprint = {1703.10847},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1703.10847}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1703.10847.svg)](https://codeofpaper.com/paper/1703.10847)

Discussion