End-to-end Piano Performance-MIDI to Score Conversion with Transformers

Tim Beyer, Angela Dai
9/30/2024
cs.SDcs.LGeess.AS

Official code: TimFelixBeyer/MIDI2ScoreTransformer (105 stars, last commit 2024-10-11).

Abstract

The automated creation of accurate musical notation from an expressive human performance is a fundamental task in computational musicology. To this end, we present an end-to-end deep learning approach that constructs detailed musical scores directly from real-world piano performance-MIDI files. We introduce a modern transformer-based architecture with a novel tokenized representation for symbolic music data. Framing the task as sequence-to-sequence translation rather than note-wise classification reduces alignment requirements and annotation costs, while allowing the prediction of more concise and accurate notation. To serialize symbolic music data, we design a custom tokenization stage based on compound tokens that carefully quantizes continuous values. This technique preserves more score information while reducing sequence lengths by $3.5\times$ compared to prior approaches. Using the transformer backbone, our method demonstrates better understanding of note values, rhythmic structure, and details such as staff assignment. When evaluated end-to-end using transcription metrics such as MUSTER, we achieve significant improvements over previous deep learning approaches and complex HMM-based state-of-the-art pipelines. Our method is also the first to directly predict notational details like trill marks or stem direction from performance data. Code and models are available at https://github.com/TimFelixBeyer/MIDI2ScoreTransformer

View on arXivView PDF

Code Implementations(1)

Code for the ISMIR 2024 paper "End-to-end Piano Performance-MIDI to Score Conversion with Transformers"

10511PythonJun 29, 20242 years ago

Similar Papers

Cite this paper

@article{beyer2024endtoend,
  title  = {End-to-end Piano Performance-MIDI to Score Conversion with Transformers},
  author = {Tim Beyer and Angela Dai},
  year   = {2024},
  eprint = {2410.00210},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2410.00210v1}
}

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/2410.00210.svg)](https://codeofpaper.com/paper/2410.00210)

Discussion