https://github.com/rism-digital/verovio
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)
https://github.com/rism-digital/verovio
digital-scores javascript mei music music-notation musicxml notation pypi sheetmusic svg
Last synced: about 2 months ago
JSON representation
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)
- Host: GitHub
- URL: https://github.com/rism-digital/verovio
- Owner: rism-digital
- License: lgpl-3.0
- Created: 2014-01-09T09:44:10.000Z (about 12 years ago)
- Default Branch: develop
- Last Pushed: 2025-05-08T06:22:35.000Z (9 months ago)
- Last Synced: 2025-05-08T07:27:07.979Z (9 months ago)
- Topics: digital-scores, javascript, mei, music, music-notation, musicxml, notation, pypi, sheetmusic, svg
- Language: C++
- Homepage: https://www.verovio.org
- Size: 87.9 MB
- Stars: 730
- Watchers: 47
- Forks: 191
- Open Issues: 176
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: COPYING
- Codemeta: codemeta.json
Awesome Lists containing this project
README
[](https://www.gnu.org/licenses/lgpl-3.0)
[](https://pypi.org/project/verovio/)
[](https://pypi.org/project/verovio/)
[](https://ci.appveyor.com/project/LaurentPugin/verovio-r1t6l)
[](https://github.com/rism-digital/verovio/actions?query=workflow%3A%22Verovio+CI+Build%22)
[](https://pypi.org/project/verovio/)
[](https://www.npmjs.com/package/verovio)
[](https://zenodo.org/doi/10.5281/zenodo.10544792)
[](https://deepwiki.com/rism-digital/verovio)
Verovio is a fast, portable and lightweight library for engraving [Music Encoding Initiative (MEI)](http://www.music-encoding.org) digital scores into SVG images. Verovio also contains on-the-fly converters to render [Plaine & Easie Code](https://www.iaml.info/plaine-easie-code), [Humdrum](https://www.humdrum.org), [Musedata](https://musedata.org), [MusicXML](https://www.musicxml.com), [EsAC](http://esac-data.org), and [ABC](https://en.wikipedia.org/wiki/ABC_notation) digital scores.
Verovio is written in standard C++20 and is available in several bindings (JavaScript, Python, Java, Swift). It
can be compiled as a standalone command-line tool or as a music-rendering library for applications. Check out the JavaScript toolkit version of Verovio running in the [Verovio Online Editor / Viewer](http://editor.verovio.org), or the [tutorials](https://book.verovio.org/first-steps/) to know more about web integration and user interaction.

### Minimal sample applications
| C++ with Qt | Java binding on Android | Swift binding on iOS |
| --- | --- | --- |
| [Code repository](https://github.com/rism-digital/verovio-qt-demo) | [Code repository](https://github.com/rism-digital/verovio-android-demo) - [GooglePlay](https://play.google.com/store/apps/details?id=org.verovio.android.demo) | [AppStore](https://apps.apple.com/app/verovio-mei-viewer/id6747756332) |
| |  |  |
Verovio uses the [Standard Music Font Layout (SMuFL)](http://www.smufl.org) specification and the font can be changed for personalizing the output.
### License
Verovio is available under the LGPL license (see [COPYING](https://github.com/rism-digital/verovio/blob/develop/COPYING) and [COPYING.LESSER](https://github.com/rism-digital/verovio/blob/develop/COPYING.LESSER)).
## Building and use instructions by environment
See the [Reference book](https://book.verovio.org/installing-or-building-from-sources/command-line.html)
## Libraries
### LibMEI
The code for the attribute classes of Verovio are generated from the MEI schema using a modified version of LibMEI available [here](https://github.com/rism-digital/libmei). The code generated is included in the Verovio repository and the LibMEI repository does not need to be cloned for building Verovio.
### Embedded libraries
The following libraries are embedded in Verovio:
| library | purpose |
| ------- | ------- |
| [humlib](https://github.com/craigsapp/humlib) | Humdrum file import/export |
| [JSON++](https://github.com/hjiang/jsonxx) | JSON data parser |
| [MidiFile](https://github.com/craigsapp/midifile) | Standard MIDI file export |
| [pugixml](https://pugixml.org/) | XML data parser |
| [MINIZ-CPP](https://github.com/kkzi/miniz-cpp) | ZIP files reading/writing |
## Contributing
See the [Reference book](https://book.verovio.org/contributing/guidelines.html)