Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

orpheus-osmd

opensheetmusicdisplay91BSD-3-Clause0.2.2TypeScript support: included

An open source JavaScript engine for displaying MusicXML based on VexFlow.

sheet, music, vexflow, musicxml

readme

OSMD logo

OpenSheetMusicDisplay

Greenkeeper badge Travis Build Status Appveyor Build status Dependency Status Gitter Commitizen friendly

opensheetmusicdisplay.org

OpenSheetMusicDisplay renders MusicXML sheet music in the browser. It is the missing link between MusicXML and VexFlow. 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.

MusicXML is the de facto standard for sharing sheet music on the internet. VexFlow is widely used for rendering sheet music. It features an extensive note sign library attributable to its open source nature.

OpenSheetMusicDisplay brings the two together and offers an open source turnkey solution for your digital sheet music project.

Written in TypeScript and released under BSD license.

Try the Demo to see what OSMD can do.

See the Wiki for information about the source code and how to use OSMD.

If you have further technical questions, you can browse through our Issues or open a new one.

Brought to you by PhonicScore (Creators of PracticeBird for iOS and PhonicScore for Android)
and our Github Contributors

To contact us directly, you can use the Contact form on opensheetmusicdisplay.org, or
join the chat on Gitter.

If you'd like to support OSMD and our ongoing work, you can donate via PayPal:
paypal
Any support is highly appreciated.

changelog

0.7.3 (2020-01-15)

Bug Fixes

  • Arpeggio: fix up/down direction (wrong in Vexflow), remove Vexflow dependency (450b2d9), closes #645
  • Dynamics, drawing range: fix crescendo crashing when partially out of drawing range (#644) (8105270)

Etc

  • Imports: Remove many Vexflow dependencies in core OSMD classes (Arpeggio, MusicSheetCalculator, other /Graphical/ classes) (450b2d9, 90d93b9)
  • Cursor: Improve Follow Cursor performance (thanks to @praisethemoon) (#639)

0.7.2 (2019-12-13)

Bug Fixes

  • Arpeggio: don't draw one-note arpeggios (#617) (5f7e183)
  • Arpeggios: prevent infinite height bug, arpeggio always going across voices (#546) (3fbed99)
  • autoBeam: don't beam over half notes or beat, prevent separate beams connecting (da464aa), closes #574
  • autoBeamOption: don't beam notes of type quarter or longer in tuplets (c3b3b5a)
  • barline: don't automatically end piece with final barline if not specified (#569) (8ae7938)
  • barlines: fix left barline added to end barline (#588) (6608f17)
  • ChordSymbols: save and show all chords on single note (#599) (2d7e265)
  • credits placement: fix title and composer label placement, now in relation to Staffline width (b7af9b8), closes #578
  • Cursor: starts and ends at selected range of measures to draw (#566) (3fe770e)
  • demo: set and reset options for specific test samples correctly (b28b5dc)
  • empty measures: not filled with whole rests by default anymore. new option fillEmptyMeasuresWithWholeRest (#625) (00522db)
  • exports: export Vexflow graphical classes (e.g. VexflowGraphicalNote) (06ef2f3), closes #549
  • Fractions: add gt and gte methods, replace some > and < occurences (#518) (c80fea6)
  • lyrics Placement: fix support for Sibelius format (#583) (084f308)
  • octaveShift, drawRange: start and end at within draw range, fix error (9f6bb82), closes #586
  • SkyBottomLineCalculator: prevent infinity bug with startIndex = endIndex and .slice (554d277), closes #575
  • stemColor: respect ColoringEnabled, re-color to default if disabled (#614) (52928cb)
  • whole rest bbox: fix whole rest bounding box in non-4/4 time (#609) (2b91655), closes #616 #605

Features

  • alignRests: add auto option (alignRests: 2) which only aligns rests if measure contains simultaneous voices (1c8de9f), closes #621
  • API: Allow updating the graphical sheet from the music sheet (#622) (55c3d8a)
  • API: save ActiveTimeSignature in SourceMeasure (4927727)
  • barline: able to not draw barlines (fix barline none) (#391) (7524287)
  • ChordSymbols: show all chordsymbols over a single note/staffEntry (spacing WIP) (#599) (6eb97fa)
  • exports: Add module exports for VoiceData (#631) (a2ce3a2)
  • open same-origin xml url: supported (#603) (0ac0132), closes #576
  • options: add option to (not) draw slurs (#602) (1333195)
  • options: add option to align rests and avoid rest collisions, which also aligns rests with voices (#621) (ca6d730)
  • options: can set font family for labels (default Times New Roman) (35ee9e2), closes #477
  • options: offer options to disable measure numbers, set their interval (0d5af7a)
  • Options: add drawLyrics option (#602) (9d09586)

0.7.1 (2019-08-19)

Bug Fixes

  • part names: drawPartNames = false does not leave left x-spacing in first line anymore (595f8ab), closes #515
  • stemColor: respect colorStemsLikeNoteheads option in XML color mode as well (6548c57), closes #486
  • Ties: fix not displaying ties because measure to graphicalMeasure dictionary didn't work (27d3645), closes #503

Features

  • drawFromMeasureNumber: can now specify first measure to draw from as well as last, closes #528 #482
  • bar lines: Add support for double and final bar lines (#519) (e05b99a)
  • color: add colorStemsLikeNoteheads option, color beams like stems as well if matching (b631879), closes #486
  • tempo: Save measures' BPM (#558) (cf199ad), closes #557
  • transparency: add invisible notes as transparent StaveNotes instead of GhostNotes (d0211a7)
  • transparency: allow transparency after re-render with Note.PrintObject = false (52212d6), closes #509
  • demo: add option to follow cursor (, add function test selectMeasuresToDraw)

0.7.0 (2019-03-25)

Bug Fixes

  • Ajax Timeout: Ajax timeout was not handled for IE and node (2a66245), closes #479
  • Octava display error: Fixed the octave shift bracket to be shown over the note line (0e7f9f7), closes #490
  • options: fix drawing parameters always being created in setOptions, causing some options to be reset with {} arguments (419c39d)
  • partAbbreviations: don't draw part abbreviations for solo parts, add option to not draw abbreviations (945d6a1)
  • partNames: fix showing only one of multiple parts with same instrument name (3bee67e)
  • ties: fix error in tie handling when no end note found (3757db5)
  • tremolo: enable half note tremolo between two different half notes. (eefadf8), closes #472
  • tuplet: correct tuplet label for number of notes not equal to tuplet label (bf5aaa1), closes #485
  • tuplet: fix duplet, quadruplet, tuplet layout (596e794), closes #488

Features

  • Coloring: Add automatic Boomwhacker coloring scheme (#494) (adaecc4), closes #486
  • Instrument label abbreviations: Add instrument label abbreviations (a67dc00), closes #466
  • Types: OSMD uses TS types from Definitely typed now, improved Vexflow compatibility in TS (53f2c44)
  • Options: implement DrawCredits (8c6df97)
  • Parts: read and display XML part abbreviations (e.g. Vln for Violin) (9fe031e)
  • Tremolo: display single note tremolos (db1840c), closes #431

0.6.8 (2019-02-08)

Bug Fixes

  • alignment: fix alignment of notes following dotted rest (a7eb53d), closes #484

0.6.7 (2019-01-16)

Bug Fixes

  • beams: ignore beams between notes => quarter (tremolo) causing error (2eb2a92), closes #472

Various

  • added osmd.Version getter to check OSMD version
  • exported more classes for TS import (/Graphical/*) (#454)
  • Packages updated (webpack-dev-server, etc.)

0.6.6 (2018-12-04)

Package

  • devDependencies: Remove browserify and tsify dependencies. Fixes unnecessary npm audit warnings.

Bug Fixes

  • color: use color instead of colorXml for coloring notehead, stem. (590e281), export missing TS classes - closes #462

0.6.5 (2018-11-29)

Features

  • ChordSymbols: Chord symbols update their bounding box in the skyline. (#467) (70ffe0b), closes #464
  • options: add drawUpToMeasureNumber option (f319541), closes #409
  • tempo: Add Graphical metronome mark (#468) (6ff4fcb)

0.6.4 (2018-11-14)

Features

  • export: export all classes for TS import (#458) (3364b52)

0.6.3 (2018-11-08)

Bug Fixes

  • color: correctly parse XML color with alpha channel. (0c28816)
  • color: notes are re-colored during render() (3e3d9b3), closes #440 #448
  • color: set default colors during render(). (298632f), closes #440

Features

  • color: can set defaultColorLabel, defaultColorTitle (91a6b1f), closes #440
  • osmd: Grant public access to osmd and cursor member elements (#452))

0.6.2 (2018-10-25)

Bug Fixes

  • noteheadshape: add color attribute null check (3d8da1e)

Features

  • color: enable defaultColor options for notehead, stem, rest, (3323664), closes #438, (f1b33ab)

0.6.1 (2018-10-25)

Bug Fixes

  • cue notes: parse cue element (9443163)
  • grace notes: fix stem direction for beamed grace note connected to beamed main note (28fc01e)

Features

  • color: color Notehead/Stem, flags, beams. parsed by XML (#436) (4126133) add options to enable or disable coloring (f78524e) demo: add function test color (abfd252)

0.6.0 (2018-10-18)

Bug Fixes

  • accidentalOctaveShift: place notes with octave brackets correctly (#424) (43f13d5)
  • ChordSymbolReader: replace old <AccidentalEnum> conversions. fixes chord symbol reading (e.g. Ab). (b8d41de), closes #418
  • ChordSymbols: add y spacing so stems don't collide (78cd2ed)
  • cue notes: add as VF.GraceNote instead of VF.StaveNote (8d1371f)
  • grace notes: can be at end of measure, after main note (37f145d)
  • grace notes: grace note beams handled like other beams now, can have any grace note beams (94cc6b5)
  • invisible notes: invisible rests formatting partly fixed by adding ghost notes (3b0e19d)
  • resize: handling, set autoResize at runtime, add osmd.clear(), demo null checks (#428) (cf2111e), closes #403 #387
  • stemDirection: fix beam with grace note in middle bug (#413) (a71496c)
  • tests: fix null pointer in setStemDirection (Haydn test fail) (ad89d96)
  • VexFlowUpdate: update to 1.2.87, fixes npm audit vulnerabilities

Features

  • Expressions/Dynamics: Add Crescendo wedges, texts, spacing, etc. (#410)
  • Arpeggios: Display arpeggios (#411) (90ae82f)
  • autoBeam: add option to automatically beam notes (09170a2)
  • cue notes: add cue notes as smaller notes. grace notes can have articulations (0094f1f), closes #349
  • fingering: add fingerings to right, above, below, auto (#406) (0e50f89), closes #350
  • fingering: draw fingering using Vexflow, can be disabled by option (628562b)
  • NoteHeadShapes: add square, rectangle note head (b6a15ef), closes #404
  • options: Options now settable during runtime: public setOptions() (76bd9bf), closes #407
  • stemDirection: use xml stem direction. (optionally) (6373d58), closes #415

0.5.1 (2018-09-26)

Bug Fixes

  • Bbox/Cursor: fix bbox and cursor position for whole rests (#383) (3d1894d), closes #380
  • Cursor: Fix Cursor jumping incorrectly on Next() (#377) (f43e305), closes #376
  • DrawingParameters: switching default and compact mode during runtime correctly renders each mode after re-render. (96bf081)
  • Error handling: Fix error loading empty score, improve error handling (#367) (aa65792), closes #358
  • Invisible notes: do not display invisible notes and double rests. (a6ac78c)
  • NoteHead: info instead of warn for unsupported NoteHead, use triangle for "do" (f1d4b47)
  • Zooming on mobile devices crashed OSMD: Skip Bottomline Update if the zoom gets too much for vexflow (#375) (c562a96), closes #373

Features

  • Invisible notes: Do not display invisible time signature. (af0770a)
  • Invisible notes: Do not display invisible notes. Invisible notes are parsed, with invisible (printObject) flag (ccf860e)
  • Options: add options interface for osmd constructor (#368) (9da9cb4)
  • Options: implement compact mode, drawPartNames, drawTitle, drawSubtitle, drawComposer, drawLyricist (9cec507)
  • Tuplets: Read and display tuplet bracket setting from XML. Do not display tuplet ratios by default. (f568e51)
  • Demo: Add Re-render button, add column to layout (#361)

0.5.0 (2018-09-05)

Bug Fixes

  • Skyline: Labels affect height of skyline now. Start and end (b5f3bcd)
  • Cursor: Fix x-position of cursor (6887f20)
  • Demo: Fix console warning on init (#332) (0845c6d)
  • Demo: Sample file names more consistent (c9fcbae)
  • Expressions: Octaveshift line breaks work now (e2b1780), closes #309
  • In-measure clef layout: add as NoteSubGroup instead of ClefNote directly. (97a0043), closes #307 #311
  • LyricsSpacing: eliminate overlap between lyrics labels by extending measures (622f346)
  • LyricsSpacing/Dashes: reduce lyrics spacing and number of dashes (7565bb0)
  • Lyrics: Shorten lyrics y offset (0c8eb28)
  • Demo: add OSMD function test files to index.js (fe260c0)
  • Relative Bounding Positions: Relative x positions in bounding boxes were not adjusted to note head (af21d7e), closes #309
  • VexFlowMusicSheetCalculator: fix vexflow formatting error caused by align_rests = true (4fa7b4e)
  • TimeSignatures: Display Common/Alla Breve time symbols instead of numbers, fix key signature without mode (6e99997), closes #305
  • VexFlow: Update to VexFlow version 1.2.85, fixes rerender issues with grace notes, ornaments, etc. (a840ea3)
  • Repetitions: Fix drawing repetition endings using VexFlow Voltas (c32ba9d)

Features

  • Slurs: Display Slurs (1123251) #359
  • Ornaments: Display Ornaments (7032fdc)
  • GraceNotes: Display GraceNotes (3412e9a), closes #293
  • GraceNotes: Display Grace slur (boolean) (2525e92), closes #293
  • Accidentals: Display quarter tones, triple sharps/flats (024b95e), closes #215 #284
  • In-Measure Clefs: Display in-measure clefs (3158eb4)
  • NoteHeads: Add Note Head Shapes (Percussion: Slash, Triangle, Diamond, X) (#337) (4599d51), closes #327 #325
  • Lyrics: Draw LyricsExtends (_), fix lyricsSpacing (#322) (e9da9e1)
  • Dynamics: Display Dynamics (Instantaneous expressions) (29337c9)
  • Lyrics: Left-Alignment (default), Center optional, fix lyricsSpacing (#356) (6205fe3)
  • Tempo Expressions: Add all tempo expressions (83d59c8), closes #309

0.3.1 (2018-06-25)

Bug Fixes

  • Fixed a bug where vexflow does not support having 8va and the bass type (ad0630d)
  • Added fix in repetition comparer (from #251) (9c7e164)
  • Fixed UTF-8 encoding in AJAX loader. Fixes #252 #254
  • Fixed ajax loader for mxl using old mimetype. (ae8c5e1)
  • Fixed a little bug at the extra instruction measure (da0ba9d)
  • Fixed tie drawing bug - now all ties of a chord are drawn. (4021833)
  • Fixed whole notes not being in the middle of a measure, see #260) (ee2f706)

Features

  • Improved ghostnote positioning and a ghost note converter (6dc0460)
  • Added GraphicalVoiceEntry for displaying lyrics (471ee19)

0.3.0 (2018-05-03)

Bug Fixes

  • logging: fixed problems connected to loglevel type definition changes (eea535d)
  • corrected begin instructions width (begin modifiers) to work also for extra instruction measures. (1509a81)
  • fixed a bug in stem calculation which made all stems up for a single voice. (aeb670e)
  • fixed all broken file references in demo file selector. (3659fec)
  • fixed showing the staveconnector of multi-staved instruments at the end of the system. (46ca911)
  • refined position of Articulations (always close to note head). Remaining problem: Beam calculations change initial stem direction. Articulation positions need to be set after beams. (22de162)
  • using backend select value already for initial OSMD constructor (97aad81)

Features

  • Articulations: Added ArticulationReader - articulations are read from xml (f529f45)
  • clef: Improved conversion of ClefInstructions to VexFlow clefs. Lines are now respected during (473c85a), closes #110
  • engraving: allow to change system labels' right margin (#131) (be03289)
  • implemented setting stem direction automatically from voice type (main or linked voice) (e7f9e10)
  • optional element mode in key signature (e85117a), closes #108

Styles

  • moved linting from grunt to npm script (8dafc27)

BREAKING CHANGES

  • Running grunt lint is no longer possible.

0.2.0 (2017-04-08)

0.1.0 (2016-09-23)

Added

  • Added Reset button for cursor for demo
  • Added more xml files for demo and testing
  • Added unit tests for reading and calculating the xml files
  • Added logo as favicon and as img for demo site

Changed

  • html site layout of demo

Bugfixes

  • Fixed cursor functionality in demo

0.1.0-beta.5 - 2016-09-21

Changed

  • Updated Github pages deployment (645c428)

0.1.0-beta.4 - 2016-09-21

Changed

  • Updated Github pages deployment (e5a8771)

0.1.0-beta.3 - 2016-09-21

Changed

  • Updated Github pages deployment (64a332c)

0.1.0-beta.2 - 2016-09-21

Changed

  • Updated Github pages deploy script (4ac4dbb)

0.1.0-beta.1 - 2016-09-21

Changed

  • Changed Travis CI deploy configuration (a550e48)

0.1.0-beta - 2016-09-21

Added

  • Prepared for brace and bracket generation with VexFlow (fd40c22)
  • Class documentation (73d319f)
  • OSMD is now usable via script tags (091dab9)
  • Set up loglevel as logging framework (c00b5a8)
  • Support for ocatvated clefs (567b3b3)
  • Demo is now automatically built and published to https://opensheetmusicdisplay.github.io/demo/ (1c63f82)
  • Class documentation generated with typedoc, published to https://opensheetmusicdisplay.github.io/ (bc91091)
  • Added rendering tuplets
  • Added rendering ties
  • Added rendering dots
  • Added documentation for VexFlow and other graphical objects
  • Proper title display
  • Cursor on first StaffEntry by default
  • Better grunt tasks
  • Included demo for better debugging
  • Added tests for container's width
  • Small fixes for correct x-layouting
  • Support for loading MusicXML files by URL
  • Support for Promises in loading sheet music
  • Better tests for OSMD

Changed

  • Compiled files are no longer under version control (6b01a8f)
  • Renamed test files according to '_Test' convention
  • Removed workaround for title labels
  • Renamed files to reflect class names

Bugfixes

  • Measure and clef size fixes (aa7c96d)
  • MusicXML reader exception due to wrong file encodings (9af59d6)
  • Fixed bug in measure number calculation
  • Fixed a bug in calculator
  • Fixed bug with beginInstructionWidth
  • Fixed bug with response HTTP status

0.0.1-alpha.1 - 2016-07-15

Added

  • Auto resize to window width
  • Preliminary MXL support from URLs
  • Tests for OSMD
  • Implemented a basic cursor object to browse the sheet
  • Public API: Rename MusicSheetAPI (renamed to OSMD)
  • Fallback title display
  • Better usage of VexFlow measure size
  • Fixed duplicated beams when redrawing

[0.0.1-alpha.0] - 2016-07-08

Added

  • First public pre-release