{"id":14006805,"url":"https://github.com/opensheetmusicdisplay/opensheetmusicdisplay","last_synced_at":"2026-01-19T03:03:50.033Z","repository":{"id":37768278,"uuid":"51307118","full_name":"opensheetmusicdisplay/opensheetmusicdisplay","owner":"opensheetmusicdisplay","description":"OpenSheetMusicDisplay renders sheet music in MusicXML format in your web browser based on VexFlow. OSMD is brought to you by PhonicScore.com.","archived":false,"fork":false,"pushed_at":"2025-04-04T16:21:52.000Z","size":22778,"stargazers_count":1590,"open_issues_count":120,"forks_count":303,"subscribers_count":47,"default_branch":"develop","last_synced_at":"2025-05-12T07:41:52.124Z","etag":null,"topics":["digital-sheet-music","music","music-notation","musicxml","mxl","sheet-music","sheet-music-viewer","sheetmusic","typescript","vexflow"],"latest_commit_sha":null,"homepage":"https://opensheetmusicdisplay.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opensheetmusicdisplay.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"opensheetmusicdisplay"}},"created_at":"2016-02-08T15:47:01.000Z","updated_at":"2025-05-08T22:45:44.000Z","dependencies_parsed_at":"2023-10-10T21:34:49.582Z","dependency_job_id":"c2aa0214-d6ba-4138-8716-db7cf0ca8567","html_url":"https://github.com/opensheetmusicdisplay/opensheetmusicdisplay","commit_stats":{"total_commits":2309,"total_committers":52,"mean_commits":44.40384615384615,"dds":"0.46686877436119534","last_synced_commit":"aae428e6b880d08b65e21822a635525049c8d204"},"previous_names":[],"tags_count":95,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensheetmusicdisplay%2Fopensheetmusicdisplay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensheetmusicdisplay%2Fopensheetmusicdisplay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensheetmusicdisplay%2Fopensheetmusicdisplay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensheetmusicdisplay%2Fopensheetmusicdisplay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensheetmusicdisplay","download_url":"https://codeload.github.com/opensheetmusicdisplay/opensheetmusicdisplay/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254010822,"owners_count":21999003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["digital-sheet-music","music","music-notation","musicxml","mxl","sheet-music","sheet-music-viewer","sheetmusic","typescript","vexflow"],"created_at":"2024-08-10T10:01:39.149Z","updated_at":"2026-01-19T03:03:50.027Z","avatar_url":"https://github.com/opensheetmusicdisplay.png","language":"TypeScript","funding_links":["https://github.com/sponsors/opensheetmusicdisplay","https://github.com/sponsors/opensheetmusicdisplay/","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=FPHCYVV2HH8VU"],"categories":["TypeScript","Music Notation"],"sub_categories":[],"readme":"\n\u003c!--img alt=\"Brought to you by PhonicScore\" src=\"https://phonicscore.com/neu/wp-content/uploads/2018/06/phonicscore_brown.svg\"/--\u003e\n\n\n# \u003cimg alt=\"OSMD logo\" align=\"center\" height=\"40\" src=\"https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/assets/33069673/a83dc850-65c2-4c7a-8836-eb75cefc006f\"/\u003e OpenSheetMusicDisplay (OSMD)\n\u003c!--# \u003cimg alt=\"OSMD logo\" align=\"center\" src=\"https://opensheetmusicdisplay.org/wp-content/uploads/2016/05/OSMD_3_icon_only.svg\"/\u003e OpenSheetMusicDisplay (OSMD)--\u003e\n\u003c!--- # \u003cimg alt=\"OSMD logo\" align=\"center\" src=\"https://opensheetmusicdisplay.org/wp-content/uploads/sites/2/2021/02/OSMD_logo_box.svg\" height=\"40\"/\u003e OpenSheetMusicDisplay (OSMD) --\u003e\n\n\u003c!--table style=\"table-layout: fixed; width:100%; border: none; border-collapse: collapse;\"\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg id=\"osmdlogo\" alt=\"OpenSheetMusicDisplay (OSMD)\" src=\"https://opensheetmusicdisplay.org/wp-content/uploads/2016/05/OSMD_3_icon_only.svg\"/\u003e\u003c/td\u003e\n   \u003ctd style=\"text-align: center\"\u003e\u003ch1\u003eOpenSheetMusicDisplay (OSMD)\u003c/h1\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table--\u003e\n\n### A MusicXML renderer for the Browser\n[opensheetmusicdisplay.org](https://opensheetmusicdisplay.org/)\u003cbr\u003e\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/opensheetmusicdisplay/opensheetmusicdisplay?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/r88lnffso55nq1ko?svg=true)](https://ci.appveyor.com/project/sebastianhaas/opensheetmusicdisplay/branch/master)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\u003cbr\u003e\n\n\u003c!-- [![Greenkeeper badge](https://badges.greenkeeper.io/opensheetmusicdisplay/opensheetmusicdisplay.svg)](https://greenkeeper.io/) --\u003e \u003c!-- move to Snyk --\u003e\n\u003c!-- [![Dependency Status](https://david-dm.org/opensheetmusicdisplay/opensheetmusicdisplay/status.svg)](https://david-dm.org/opensheetmusicdisplay/opensheetmusicdisplay) --\u003e \u003c!-- often returns error \"no healthy upstream\" --\u003e\n\u003c!-- [![Travis Build Status](https://travis-ci.org/opensheetmusicdisplay/opensheetmusicdisplay.svg?branch=master)](https://travis-ci.org/opensheetmusicdisplay/opensheetmusicdisplay) --\u003e \u003c!-- Migrate to travis-ci.com --\u003e\n[About OSMD](#about-osmd) • [Demo](#demo) • [Key Features](#key-features) • [Limitations](#limitations) • [How to Use OSMD](#how-to-use-osmd) • [Sponsor OSMD](#sponsor-osmd) • [About Us](#about-us) • [Get In Touch](#get-in-touch)\n\n:star: - Star us on Github - It really helps us a lot!\u003cbr\u003e\n:pray: - [Become our Sponsor](#sponsor-osmd) - Support our work and receive awesome perks!\n\n## About OSMD\n\n\u003cimg title=\"How OSMD can look in the browser\u0026#xA;(Mockup, OSMD on its own does not support playback)\" src=\"https://user-images.githubusercontent.com/33069673/106186552-bd191300-61a4-11eb-8814-07019fcf1d5b.png\" style=\"max-width: 100%; max-height: 100vh; width: auto; margin: auto;\"\u003e\n\nOpenSheetMusicDisplay renders MusicXML sheet music in the browser. It is the missing link between [MusicXML](https://www.musicxml.com/) and [VexFlow](https://www.vexflow.com/). Built upon many years of experience in both sheet music interactivity and engraving, it is the perfect solution for app developers seeking to build digital sheet music services.\n\n[MusicXML](https://www.musicxml.com/) is the de facto standard for exchanging sheet music between music software.\u003cbr\u003e\n[VexFlow](https://www.vexflow.com/) is widely used for rendering sheet music. It features an extensive library of musical elements, but each measure and symbol has to be created and positioned by hand in Javascript.\n\nOpenSheetMusicDisplay brings the two together and offers an open source turnkey solution for your digital sheet music project.\n\n## Demo\n\nTry the [Public Demo](https://opensheetmusicdisplay.github.io/demo/) to see what OSMD can do.\u003cbr\u003e\n[Learn more about the demo](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/wiki/Exploring-the-Demo) and OSMD in [the OSMD Wiki](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/wiki).\n\nDevelopers can also run a [local development demo (see Wiki)](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/wiki/Debugging-(VSCode)):\n\n\u003cimg title=\"Local OSMD Development/Debug demo\" alt=\"Local OSMD Developer Demo\" src=\"https://user-images.githubusercontent.com/33069673/106189263-5695f400-61a8-11eb-901f-aafc853af497.png\" style=\"max-width: 100%; max-height: 100vh; width: auto; margin: auto;\"\u003e\n\n\n## Key Features\n\n* Displays MusicXML sheet music in a browser(less) environment (Javascript, Typescript, server-side: browserless NodeJS script)\n* *Soon: Audio Playback (work in progress, early access build available for [Github sponsors](https://github.com/sponsors/opensheetmusicdisplay))*\n* Uses [Vexflow](https://www.vexflow.com/) for rendering and (partly) layout\n* Parses most MusicXML tags and integrates it into an accessible and modifiable data model (e.g. to change a note's color)\n* Offers many options ([OSMDOptions](https://opensheetmusicdisplay.github.io/classdoc/classes/OSMDOptions.html) / [EngravingRules](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/blob/master/src/MusicalScore/Graphical/EngravingRules.ts)): Page Format, Font Family, Positioning, not rendering certain elements like the title or lyrics, etc.\n* Allows modification of the displayed score, like hiding parts or instruments, hiding instrument names, title or composer, a more compact layout, or coloring notes\n* Outputs SVG or PNG, also via nodejs script in the command line, completely browserless (e.g. for server-side rendering)\n* Written in [Typescript](https://www.typescriptlang.org/) with complete type information, 100% compatible with Javascript (minified build is .js)\n* Can display tablature (guitar tabs) from MusicXML, including effects like bends and glissandi. Can be combined with treble clef.\n\u003cimg src=\"https://user-images.githubusercontent.com/33069673/127324371-b7c5f137-a1b8-4127-95b0-38e6a185c906.png\" height=\"130\"\u003e\n\n\n\u003cp align=\"left\"\u003e\n  \u003cimg title=\"OSMD in the Browser\"  src=\"https://user-images.githubusercontent.com/33069673/106321958-64fe1180-6275-11eb-8632-3b22beaa0829.jpg\" width=\"66.4%\"\u003e\n\u0026nbsp;\n  \u003cimg title=\"OSMD on Mobile (or server-side rendering)\" src=\"https://user-images.githubusercontent.com/33069673/106321963-67606b80-6275-11eb-8fdd-2acf273586df.jpg\" width=\"25%\"\u003e\n\u003c/p\u003e\n\n## Limitations\n\nNot all MusicXML tags are (fully) supported:\n* Pedal marks (currently in early access for sponsors)\n* Glissando lines\n* Wavy-line (currently in early access for sponsors)\n* Etc, see [OSMD 1.0 Project](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/projects/3)\n\nAlso, **OSMD is a renderer, not an interactive sheet music editor.** Rendering takes some time, and you can't easily/quickly move notes, place new notes, etc.\u003cbr\u003e\n(You can, however, manipulate the SVG nodes for instant changes like note re-coloring, see [Exploring the Demo | Wiki](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/wiki/Exploring-the-Demo))\n\n## How to Use OSMD\n\n* Available as [NPM module](https://www.npmjs.com/package/opensheetmusicdisplay), can be used with plain javascript or module managers like webpack\n* [Getting Started: Detailed instructions in our Wiki](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/wiki/Getting-Started)\n* If you have further technical questions, you can:\n  * [Leave a comment in our Discussions section](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/discussions/950) (especially for questions of understanding)\n  * [Browse through our Issues](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/issues?\u0026q=is%3Aissue)\n  * [Open a new issue](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/issues/new/choose) (may be moved to Discussions).\n\n## Sponsor OSMD and get early access to the audio player and more\n\n\u003ca href=\"https://github.com/sponsors/opensheetmusicdisplay/\" alt=\"OSMD on Github Sponsors\"\u003e\n\u003c!--img src=\"https://user-images.githubusercontent.com/33069673/104042293-99ccfa80-51da-11eb-9dc9-fac075a33224.png\" height=\"200\" alt=\"OSMD on Github Sponsors\"--\u003e\u003cimg src=\"https://user-images.githubusercontent.com/33069673/109203612-a9150100-77a4-11eb-9b91-6692850dccab.png\" style=\"max-width: 100%; max-height: 100vh; width: auto; margin: auto;\"\u003e\n\u003c/a\u003e\u003cbr\u003e\n\nIt would be great if free software were sustainable on its own. But to keep on improving and developing OpenSheetMusicDisplay we need your support. Your monthly sponsorship subscription - especially if you are already actively using OSMD - would mean everything to us - it’s a stable way of enabling us to continue our work, and improve and expand OSMD.\u003cbr\u003e\nFeatures already available in early access:\n* OSMD Audio Player\n* Native modules + example projects (React Native, Kotlin/Android, Swift/iOS) - NEW!\n* Jianpu Display (Numbered Musical Notation), with playback\n\nFeatures in the making, potentially available in future:\n\n* Annotations (Add custom text, music symbols, etc. to the score and export to and import from XML)\n* and more (we're always working on OSMD improvements or additional features, just look at our release history / [changelog](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/blob/develop/CHANGELOG.md)!)\n\nBesides the early access features, you can get other perks like a personal postcard from the team in Vienna. Check them out at [our GitHub sponsors page](https://github.com/sponsors/opensheetmusicdisplay).\n\n\u003cp align=\"left\"\u003e\n  \u003cimg title=\"OSMD Sponsor perks like this t-shirt\" src=\"https://user-images.githubusercontent.com/33069673/106322343-084f2680-6276-11eb-985b-3aaa483db206.jpg\" width=\"35%\"\u003e\n\u0026nbsp;\n  \u003cimg title=\"OSMD button sponsor perk\" src=\"https://user-images.githubusercontent.com/33069673/106320576-5a427d00-6273-11eb-96b0-d2c7c4b19927.jpg\" width=\"28.5%\"\u003e\n\u003c/p\u003e\n\nAnd there are other ways to contribute to the community - we plan on starting a blog and newsletter, and sharing our knowledge. We encourage our sponsors to bring up their desired features and pitch blog post ideas.\n\nThough we highly recommend the sponsor route, you can also donate via Paypal:\u003cbr\u003e\n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=FPHCYVV2HH8VU)\u003cbr\u003e\nAny support is highly appreciated.\n\n## About Us\n\nOSMD is made by [Phonicscore](https://phonicscore.com/) - a music-tech company based in Vienna. We create solutions for musicians, sheet music publishers, app developers, music stores and researchers:\n\n* Open source software\n* Sheet Music Rendering Software\n* Native \u0026 web apps: [PracticeBird for iOS](https://itunes.apple.com/us/app/practice-bird-pro/id1253492926?ls=1\u0026mt=8) and [Android](https://play.google.com/store/apps/details?id=phonicscore.phonicscore_lite)\n\nOur mission is to provide state of the art software solutions for building MusicXML apps and to include the community in a constant thrive for improvement. We want to take away the pain of building music software from scratch and offer a shortcut when it comes to building your next MusicXML sheet music application.\n\nWe also want to thank [our Github Contributors](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/graphs/contributors), who show that with open source many people come together to not only share but improve software.\n\n## Get In Touch\n\n\u003ca href=\"https://twitter.com/osmdengine\"\u003e\u003cimg title=\"OSMD on Twitter\" src=\"https://img.shields.io/twitter/url?label=%40osmdengine\u0026style=social\u0026url=https%3A%2F%2Ftwitter.com%2Fosmdengine\" align=\"center\"\u003e\u003c/a\u003e \u003ca alt=\"OSMD on Facebook\" href=\"https://www.facebook.com/opensheetmusicdisplay/\"\u003e\u003cimg title=\"OSMD on Facebook\" src=\"https://img.shields.io/twitter/url?label=Facebook\u0026logo=facebook\u0026style=social\u0026url=https%3A%2F%2Fwww.facebook.com%2Fopensheetmusicdisplay%2F\" align=\"center\"\u003e\u003c/a\u003e \u003ca href=\"https://www.instagram.com/open_sheet_music_display/\"\u003e\u003cimg title=\"OSMD on Instagram\" src=\"https://img.shields.io/twitter/url?label=Instagram\u0026logo=instagram\u0026style=social\u0026url=https%3A%2F%2Fwww.instagram.com%2Fopen_sheet_music_display%2F\" align=\"center\"\u003e\u003c/a\u003e \u003ca href=\"https://fwd.osmd.org/discord\"\u003e\u003cimg title=\"OSMD Discord (chat) Server\" src=\"https://img.shields.io/twitter/url?label=Discord\u0026logo=discord\u0026style=social\u0026url=https%3A%2F%2Ffwd.osmd.org%2Fdiscord\" align=\"center\"\u003e\u003c/a\u003e\n\u003c!-- the social button images were created via https://shields.io, search twitter in the top search bar, click on twitter url, set named logo e.g. to facebook --\u003e\n\nTo contact us directly, you can:\n* Use the [Contact form on opensheetmusicdisplay.org](https://opensheetmusicdisplay.org/contact/) to send a mail\n* Send a mail to support@opensheetmusicdisplay.org\n* Leave a (public) comment in our [Discussions section](https://github.com/opensheetmusicdisplay/opensheetmusicdisplay/discussions)\n* [Join our Discord (chat) Server](https://fwd.osmd.org/discord)\n* [Join the chat on Gitter](https://gitter.im/opensheetmusicdisplay/opensheetmusicdisplay).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensheetmusicdisplay%2Fopensheetmusicdisplay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensheetmusicdisplay%2Fopensheetmusicdisplay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensheetmusicdisplay%2Fopensheetmusicdisplay/lists"}