About this project

PianoPlayer is an automatic piano fingering generator for MusicXML and MIDI scores. It searches for a low-effort fingering sequence for one or both hands by minimizing finger speed and movement, taking into account physical finger positions, note durations, and hand size rather than relying on static lookup tables. The tool supports MusicXML, compressed MusicXML, MuseScore, MIDI, and PIG input formats. It can annotate scores with fingering numbers, preserve pre-existing fingering marks as anchors, and output annotated MusicXML or tabular text. A command-line interface offers options for hand routing, search depth, hand size presets, colorization by hand or computed cost, and opening results in MuseScore. A Tkinter GUI is also available for importing scores and generating fingerings interactively. Optional extras enable 3D visualization and playback with vedo, MIDI input support, sound playback, and standalone executable builds. The algorithm is dynamic and aims to suggest an optimal fingering combination that minimizes unnecessary hand movement, though it excludes some unlikely finger combinations and assumes hands are independent.