PianoFingering.jl
PianoFingering.jl is an automatic fingering generator for piano scores, written in the Julia language.
There is no "best fingering", the fingerings generated by PianoFingering.jl are for reference only.
THIS PACKAGE ONLY TESTED ON LINUX.
Future Works:
-
Support input of recorded MIDI. (This requires training neural networks to split notes for the left hand and right hand.)
-
Replace the annotation algorithm to combine data-driven and rule-based methods.
-
Remove the music21. (Maintain MusicXML.jl)
How to use it
Pre-requirement
Prompt: You can copy all following commands start with β―
Install Python (>3.11) and Julia (>1.9).
Make sure:
β― python -V
Python 3.11.3
β― julia -v
julia version 1.9.0
Install music21
(>9.1.0):
β― pip3 install music21
Clone this project to your computer and change directory to PianoFingering.jl
folder, then:
β― julia
β― using Pkg
β― Pkg.activate(".")
β― Pkg.instantiate()
Now you have installed all the dependency. Close your terminal.
Run Programe
-
Put your
.musicxml
file tomusicxml
folder, suppose we have anexample.musicxml
file right now. -
Change directory to
PianoFingering.jl
folder:
β― julia -t auto
β― using Pkg
β― Pkg.activate(".")
β― using PianoFingering
β― fingering("example.musicxml")
Wait for the program to complete, annotated piano score example_output.musicxml
will be stored in output
folder, this may take a few minutes.
PIG Dataset
PIG is publicly available data for academic research on piano fingering.
If you want to fingering a PIG format .txt
file, just put .txt
in pig
folder. Then after using PianoFingering
:
β― fingering("pig_example.txt")
Musicxml to PIG
Fingering a .musicxml
file to PIG format:
β― xml_to_pig("example.musicxml")
Feedback
If you encounter error, or musicxml file can't fingering correctly. Please open a issue and upload your musicxml file.