Roadmap

Done (OSMD 0.6.8):

(list may be incomplete, see Changelog)

  • Draw layouted measures
  • Draw Beams
  • Draw Key, Clef, Rhythm Instructions
  • Draw accidentals
  • Draw System Lines
  • at least the first connecting line.
  • Draw Labels (Title, Composer, Instruments, …) → MusicSheetDrawer
  • implement TextMeasurer correctly
  • implement renderLabel in VexFlowMusicSheetDrawer
  • Create npm Package
  • Draw play Cursor line → MusicSheetDrawer
  • port new MusicSheetDrawer to TS
  • implement renderRectangle in VexFlowMusicSheetDrawer
  • implement simple iterator.moveNext() loop for demo.
  • for redraw of cursor: call musicSheetDrawer.drawSheet(gms); again.
  • Implement adapting to screen size. → call .calculate() of MusicSheetCalculator
  • zooming
  • Implement piece selector of 5 pre-selected pieces and file upload
  • Inhouse: Refactor parameters of
    • createInstrumentBracket (upper, lower stave)
    • createGroupBracket (upper, lower stave)
  • Draw Dots
  • Draw Ties
  • Draw Tuplets
  • Fix wrong Tuplets x spacing (data not correctly given to Vexflow?)
  • Draw Chord Symbols
  • Draw Lyrics
    • Words
    • Connecting dashes
  • Draw Repetitions
    • Barlines
    • Words (Segno, Fine)
  • Draw Articulations (staccato, accent…)
  • Draw Instrument Braces
  • Draw Group Brackets
  • Inhouse: Convert Stem Direction calculator code to TS
  • Draw Tabs
    • read from Xml
    • draw Tabs
  • Draw Measure numbers
  • Draw Repetition Endings (horizontal brackets with Number-Label)
  • Draw In-Staff Clefs
  • Draw Grace notes (as small notes)
  • Draw Slurs
  • Draw Word Expressions (mostly done)
    • Dynamics
    • Tempo
    • Other
  • Draw Lyrics
    • extending underscores
  • Draw Ornaments (trill, turn, …)
  • Draw Arpeggios
  • Draw Wedges

ToDo

(list may be incomplete, see OSMD Issues and try filtering for the Feature Label)

  • 1.0 feature set: See OSMD 1.0 Github project

  • Fix drawing multiple ties of chords all above each other resulting in only one visible tie
  • Fix Tabs x-layout for rest notes for correct x alignment with normal notes

  • Ability to combine two notes into one notehead (e.g. one notehead with two stems, one up, one down)
  • Implement Plugin Infrastructure
  • Inhouse: Convert Tuplet label placement code to TS
  • Inhouse: Refactor and Convert SkyBottomLineCalculator for systems y-size calculation to TS
  • adapt y-layout code for using SkyBottomLineCalculator
  • Inhouse: Refactor and convert Slur Handling (handling special cases from tied and beamed notes)

ToDo - Plugins (licensable?)

  • Implement Playback Plugin
    • Set start position (via click onto a note on the score)
    • Set end position (for looping)
    • Set speed in BPM
    • Play back a metronome together with the music (with pre-count)
    • Playback of given chord symbols
    • Solo, Mute switches and volume settings for all instruments, the metronome and the chords (if avaliable)
    • React on repetitions (backjumps), on dynamics (p, ff) and tempo instructions
  • Implement Transposition Plugin
    • Transpose whole score by a given number of semitones
    • Key signatures will be transposed
  • Implement Midi Import Plugin
    • Read in a midi file for score rendering