/scorpiano

System for automatic music transcription (AMT) for monophonic piano music, based on digital signal processing techniques.

Primary LanguageTeX

Scorpiano

Scorpiano is a system for automatic music transcription (AMT) for monophonic piano music, based on digital signal processing techniques.

The system is implemented using Python 3.

System Architecture

The system consists of five modules for:

  • onset detection - determining the starting times of musical notes, using the energy novelty function
  • tempo estimation - using beat.tempo function from librosa,
  • beat detection - assuming no breaks, multiplying the difference between two subsequent onset moments with the tempo,
  • pitch detection - using the YIN algorithm, and
  • music score generation.

For more details about the system, refer to the paper.

Prerequisites

The application is developed on Linux, and there may be problems on Windows.

  • Python 3
  • Numpy
  • Scipy - for loading wav files
  • Librosa - for tempo estimation
  • Music21 - for music score generation (Important: install version 6.7.1)
  • MIDIUtil - for MIDI file generation
  • Lilypond - for rendering the music score in PNG format

For the GUI:

Optional:

  • MuseScore - free open-source music notation software, perfect for editing MusicXML files generated using Scorpiano

The python dependencies can be installed by running pip install -r requirements.txt. GTK3, pygobject and Lilypond should be installed based on the operating system. If using conda, GTK3 and pygobject can be installed with conda install gtk3 pygobject.

After installing the required packages, inside the python interpreter, run the following commands:

from music21 import *
environment.UserSettings()['lilypondPath'] = 'path/to/lilypond executable'

Usage

To run the GUI, execute python gui.py.

Scorpiano GUI

After loading the GUI:

  1. Load audio file (wav file)
  2. Modify the parameters if needed
  3. Click on the Transcribe button
  4. Export the generated score as PNG or MusicXML format, or export MIDI file, via File menu.

The samples folder contains 10 monophonic piano melodies, generated using MuseScore and played on digital piano.