Symbolic Melody Identification

This repository is an unofficial PyTorch implementation of the paper:A Convolutional Approach to Melody Line Identification in Symbolic Scores.

Its official version can be found here, which is written in Theano and Lasagne.

This repo is trained and evaluated on POP909 Dataset (in 4/4 time signature), to serve as a baseline of MIDI-BERT.

Note that some modifications have been made to improve the performance (different from the paper):

  • Adagrad -> Adam
  • Sigmoid -> ReLU
  • mean square error -> binary cross entropy
  • Add dropout layers
  • I didn’t add regularization for the loss function, since the L2 regularization is already included in most optimizers and can be controlled with the weight_decay parameter, as being pointed out here.

Evaluation

python3 predict.py --ckpt=result/$name/CNN-melody-identification.pth

The result (result.txt) will be saved, you may analyze its accuracy, precision, recall, f1-score later.

I’ve already provided the checkpoint at result/1118/CNN-melody-identification.pth and its result at result/1118/result.txt.

Plot the predicted pianoroll from test set 343.mid

python3 pianoroll.py --ckpt=result/$name/CNN-melody-identification.pth

pianoroll

Train

python3 main.py --name=$name

GitHub

View Github