1.7.0 (2022-12-12)
- Fermata: Fix inverted fermata placement/overlap with multiple voices (#1278, PR #1279) (15e4015)
- OctaveShift: Fix rare error when startX greater stopX (#1281, PR #1282) (e8d89a0)
- Overlap: Fix overlap with implicit / pickup measure after repeat with single note pickup (#1286, #1236) (f667f67)
- Overlap: Fix overlap with implicit / pickup measure without repeat with single note pickup (#1286, #1236) (700be56)
- Tempo: Increase TempoYSpacing from 0 to 0.5 (prevents (near-)overlaps, no apparent downside) (#1243) (9e584d0)
- Articulation: Add breath mark support (#527, PR #1285). Add EngravingRules.BreathMarkDistance (default 0.8 = 80%) (f98b9a2)
- Cursor: Add getter and setter for CursorOptions (#1276) (b1b6492)
- Pedal: Support pedal. Show (piano) pedal signs and brackets (#347). Add EngravingRule RenderPedals (393b25f)
1.6.1 (2022-11-14)
- Cursor: cursor.next(): Skip positions that only contain invisible notes (#1264) (9805f09)
- Error: Fix error when dynamics node has no elements, leading to an empty measure (#1269) (5f98841)
- Repetitions: Fix D.C. Al Coda read as DalSegnoAlCoda (#920) (8ab2a00)
- Repetitions: Fix repetition symbols like D.C. or Coda too far left (#920, PR #1265). Add EngravingRules.RepetitionEndInstructionXShiftAsPercentOfStaveWidth (4ff0226)
- Slur: Fix double slur with different placement ignored as "duplicate" (#1275) (fa14941)
- Cursor: Add cursor.previous(), moving back to previous note, counterpart to next() (#1266) (ddb0189)
1.6.0 (2022-10-28)
- Brackets text: Ignore [ ] square brackets (originally around notes) too with EngravingRules.IgnoreBracketsWords (#1251) (e5b9047)
- Marcato: Always place above staff (#1261), in line with Gould - Behind Bars (0e7421d)
- Ties: Set downward tie direction for downward ties split over two systems in vexflow (#1262) (5a155ef)
- Ties: Use downward arc for ties in secondary voices (#1262) (01398b9)
- Wedges: Ignore duplicate wedges given in MusicXML (e.g. crescendo) (#1259, PR #1260) (7f235fe)
1.5.8 (2022-10-14)
- BoundingBox: Fix bounding box of MusicSystem and SystemLeftLine too large (#1245) (62cd3fa)
- BoundingBox: Fix bounding box of voice entries of whole notes with many ledger lines too large (#1245) (30676bf)
- BoundingBox: Fix PageTopMargin also partly added to a bottom margin / container size in certain cases (#1245) (fa5fa7c)
- Brackets: Ignore brackets = '( )' words/text by default (#1251) supposed to be around a note, but can't be matched to the note. (32060b7)
- Margins: Fix page bounding box too long. Respect EngravingRules.PageLeftMargin and PageRightMargin for renderSingleHorizontalStaffline (#643) (dbb1f18), closes #1244
1.5.7 (2022-09-28)
- Options: Add EngravingRules.TempoYSpacing (#1243) to be able to set spacing/padding for tempo (e.g. beginning "Allegro") (194e765)
- Performance: Marginal speedup potential for getImageData by using willReadFrequently attribute for CanvasContext. Fix Chrome warning (#1242) (c60c0d6), closes #1241
1.5.6 (2022-09-22)
- Canvas: Fix rehearsal marks not rendered in browser with Canvas backend (a4d5a3b)
- DefaultColorLyrics: Fix not applied on re-render (aa1945a)
- DefaultColorMusic: Fix CanvasBackend overwriting and not using DefaultColorMusic (#1218) (285878e)
- DefaultColorMusic: Fix EngravingRules.DefaultColorMusic not applying to octave brackets, crescendo/decrescendo wedges (#1218) (145e715)
- DefaultColorMusic: Fix rehearsal marks ignoring defaultColorMusic (#1218) (svgcontext.rect ignoring stroke) (2702667)
- EngravingRules: Fix GraphicalVoiceEntries creating their own EngravingRules. Reduce EngravingRules creations also via DrawingParameters. (1a96112)
- Spacing: Fix implicit measure spacing after repeat (#1236). Add EngravingRules.PickupMeasureRepetitionSpacing (3da2244), closes #1234
- DefaultColorLyrics: Add EngravingRules.DefaultColorLyrics, independent from DefaultColorMusic (#1218) (3445343)
1.5.5 (2022-09-15)
- Drums: Fix Slash notehead overwriting other noteheads in chord/VoiceEntry (#1228) (66390b1), closes #1229
- Measure Numbers: Fix EngravingRules.RenderMeasureNumbersOnlyAtSystemStart not showing measure number 1 after pickup measure (2e7011f)
1.5.4 (2022-09-12)
- Layout: Fix hiding first instrument causing shift of lyrics, dynamics, etc (#1222) (280075c), closes #1223
- Slurs: Fix overlap of slurs with accents on slur start note (part of #1224) (229f0dd), closes #1226
- Slurs: Fix slurs overlapping with articulations like staccato on slur end note (part of #1224) (336b0ad), closes #1225
1.5.3 (2022-09-05)
- Tuplets: Fix rest notes not having TypeLength set. EngravingRules.TupletNumberLimitConsecutiveRepetitions: Fix tuplet count not reset for next voice (rare issue) (#1207) (8d55514)
- GraceNotes: Reduce unnecessary margin/spacing to main note (#1221). Add EngravingRules.GraceNoteGroupXMargin (default 0) (332d625)
- Lyrics: Add EngravingRules.LyricsYMarginToBottomLine (#389). New default 0.2 prevents overlap of stems with lyrics. (fd6868d)
1.5.2 (2022-08-29)
- Accents: Support soft-accent as crescendo+decrescendo wedge on one note/entry (#1214, merge #1215) (db340ac)
- Tuplets: Add EngravingRules.TupletNumberLimitConsecutiveRepetitions (default true) etc. (breaking change) #1207, merge #1208 (0744bcd)
1.5.1 (2022-07-18)
- generateImages: Fix rehearsal marks not having a box around them due to node canvas restriction. (48799ba)
- Layout: Fix 12/8 rhythm with rest measures overflowing notes, other rest measure issues (#1187, merge #1188) (b524d77)
- Rehearsal Mark: Position correctly when EngravingRules.RehearsalMarkFontSize is increased (#1176) (d32bc1a)
1.5.0 (2022-04-22)
- Cursor: Fix undefined errors when drawFromMeasureNumber changed after cursor was shown (5a13bfb)
- Tabs: AutoBeamNotes no longer beams tab notes by default. Add EngravingRule AutoBeamTabs (c5fa3eb)
- Ties: Fix note.NoteTie undefined for tie end note in different voice than start note (8f9c373)
- ChordSymbols: Can replace accidentals via e.g. osmd.rules.ChordAccidentalTexts.setValue(1, "♭") (PR #1154) (ced5cb4)
- Performance: 30-60% performance boost: Compute SkyBottomLines with WebGL and in batches depending on browser and number of measures (#1158) (66ab7ce)
- Performance: Add EngravingRules SkyBottomLineWebGLMinMeasures and AlwaysSetPreferredSkyBottomLineBackendAutomatically (#1158) (e1c8826)
- Performance: Prefer Plain over WebGL in Firefox (and Safari) for performance (#1158) (1ac2bd5)
- Performance: Add EngravingRules.DisableWebGLInFirefox and DisableWebGLInSafariAndIOS for options (#1158) (c48f66d)
- SVG: Create SVG group with class for beamed note stems, put beam SVG into node (67f6ac3)
- TimeSignatures: Can disable time signature for GraphicalMeasure (#1150) with measure.ShowTimeSignature = false (411a35c)
1.4.5 (2022-01-28)
- Wedges: Simultaneous wedges possible, start/stop corrected (#1131), respect xml number attribute (44a0dce), closes #1134
- OctaveShift: Fix octave-shift not rendered when type attribute (e.g. "down") not given (even though required) (44a0dce)
1.4.4 (2022-01-27)
- Release: Fix types pointing at wrong (sub-)folder. Could solve type/import problems. (2a18295)
- Options: Able to set osmd.EngravingRules.SheetMaximumWidth > 32767 for SVG / renderSingleHorizontalStaffline (6ef37db)
1.4.3 (2022-01-18)
- SVG: Add group and class to SVG DOM for Clef (7c218e2), KeySignature (#1128) (1f7e710), TimeSignature (#1129) (6a95483), GraphicalTie
- Ties: GraphicalTie.SVGElement() gets SVG node (#1127) (84406d6)
1.4.2 (2022-01-17)
- Release: Fix typings location for npm release (8171984)
1.4.1 (2022-01-17)
- Credit Error: Fix NaN error when element has justify attribute (dec2f1f)
- Release: Fix typings not included in release (1.4.0) (5829be3)
- Color: Able to set the option {defaultColorMusic: string} (#1125) to apply a color to the whole sheet (2b3ea16)
- Cursor: Visible with PageBackgroundColor set (SVG) (#1125), transparency dependent on PageBackgroundColor (a10f779)
- Options: Add darkMode option (#1125) (d5a2d70)
1.4.0 (2022-01-14)
- Beam SVG: VexFlowGraphicalNote.getBeamSVGs() gets SVGs of all beams starting on the note (#1108) (f4675fd)
- Clefs: Fix specific end of measure clef missing (#1120)
- Cursor: Fix follow for multiple cursors, can set cursor.cursorOptions.follow for each (#1111) (37f9002)
- Grace Notes: Don't draw multiple grace note slashes for a set of grace notes (#1107) (89394db)
- GroupBrackets: Don't draw if only one instrument visible (b72ef4e)
- Note overlaps: Fix notes overlapping / not staggering sometimes (#1098) (05c1ca7)
- Cross Stave Notes: Fix ghost notes only created for first few notes in measure, fixing cross stave positioning (#1062) (0507917)
- Rehearsal Marks: Fix undefined error with multi-measure rests and rehearsal marks (76d5252)
- Ties: Fix ties missing/doubled, orientations (#1097)
- ChordSymbols: Add EngravingRules.DefaultColorChordSymbol (#1106) (7f00a9b)
- Note: Store TransposedPitch (for API access) (72633da)
- Options: Add EngravingRules.StaggerSameWholeNotes option to x-shift whole notes on same line (#1098) (dc04dc5)
- Slurs: GraphicalSlurs save their SVGElement (but not GraphicalTies) (5686daa)
- SVG: Stems and beams have an id in the DOM (#1108) (a9b2c10)
- Transposing: Able to transpose single instrument (#1115) independently of other instruments (e997df9)
- VexFlowGraphicalNote: Add getStemSVG() and getBeamSVGs() helper methods (#1108) (79b28c8) (f4675fd)
1.3.1 (2021-11-26)
- Clefs: Fix in-staff clefs missing or misplaced (2nd voice or with backup/forward tags) (#1102) (acdf8b0), closes #1103
- Metronome: Fix some measures with very long metronome numbers not rendering (70e1654)
- OctaveShift: Fix incorrect display octave for first of two octave shifts in measure (#1099) (c090c71)
- GraphicalStaffEntry: Add helper functions getHighestYAtEntry, getSkylineMin, same for bottomline, getAbsoluteStartAndEnd (2b364a8). For usage see Wiki | Exploring the Demo
1.3.0 (2021-11-13)
- Accidentals: Render Slash-flat correctly (#1074) (2394de7)
- Fingerings: Fix Fingerings collisions above/below notes (#1081), improve performance, implement as Labels with correct bboxes (df9b441), closes #1086
- Infinite Loop: Fix rare infinite loop with certain rhythms (#1073) (a09f702)
- Multiple Rest Measures: Display clef at end of multirest measure and fix wrong clef in following measures (#1064) (53a57fe)
- MusicSystemBuilder: Prevent index error when MinMeasureToDrawIndex > 0 (#1069) (293cfb4)
- OctaveShift: Fix ExtraGraphicalMeasure used as last measure, no endnote (#1080) (08640e7)
- Rests: Fix rest collisions with notes (y coordinate) (#621, #1076). Add EngravingRules.RestCollisionYPadding (32b649a)
- Slash-Flat Accidentals: Fix quarter flats shown after slash-flat accidentals (#1075) (87b681f)
- Slurs: Fix slur starting on tie end note not shown (#1092) (265fa73)
- Tuplets: Fix dots not corresponding to XML (#1082) (3899031)
- Accidentals: Support remaining microtonal accidentals available in MusicXML and Vexflow (#1084) (9ccc215)
- ChordSymbols: Fix collision with notes, add staffline/measure alignment options (#1087, #934) (d814986)
- Cursor: Add GNotesUnderCursor() function, returning GraphicalNotes (8c0e2d1)
- Labels: Always save SVG Node as a reference for GraphicalLabel, allowing SVG manipulation without re-render (f888939), closes #711
1.2.0 (2021-09-23)
- Note X-Positions: Fix Cross Stave Note Position X-Shift and Ghost Notes for complex fractions (#1063) (a04fd58), closes #1062
- Repeats: Fix Repeat end+start (:||:) collision (#1061) by adding padding (88d7467). Add EngravingRule RepeatEndStartPadding (previous default 0.0, now 2.0)
- Undefined errors: (#1051) Add some more safeguards for undefined variables in complex/messy midi scores (e0d70bc)
- Dependencies: Update JSZip to 3.7.1
1.1.0 (2021-07-27)
- BPM: Correctly parse float BPM and dotted beats (#1045, merge #1046) (aa2a0e7)
- ChordSymbols: Prevent multiple rest measure generated over rest measures with chords (#955) (d1e454b)
- GetNearestNote: Handle undefined parentStaffEntry (#1029, PR #1031) (6ca4a05)
- Multirest: Fix repetition measures included in multiple rest measure (#901) (e624f6a)
- Note Alignment: Fix notes not sharing stems/note heads (#414), voices not aligned (#947). Fix visual differences on re-render. (d9aabab)
- Slurs: Ignore measure numbers, improve staff split slurs, add optional softening mechanism (bc71de7)
- Tabs: Correctly read number of stafflines if staff-details node is given for multiple staves (#1041) (341b696)
1.0.0 (2021-05-06)
- Barlines: Correctly place thin double line as end barline/StaveConnector (#1019), instead of beginning (eee1c03)
- Error: Fix error when sorting unpitched note in a chord (#995) (47d7beb)
- GraphicalNote: Fix getSVGElement throwing exception instead of returning undefined for MultiRestMeasure (b38693d)
- RepetitionSymbols: Fix d.c., d.s. x position (#990) (eae08cd)
- SingleStaffline: FollowCursor: Don't center the vertical axis (#1014) (f3bc721)
- Skyline: Fix bottom line values undefined (#992), fixes issues with PageFormat for tabs (8559527)
- Tabs: Correctly set number of stafflines, e.g. 4 for bass guitar (#991) (8d83c90)
- Ties: Highest tie goes upwards (orientation), lower ties downwards (in same location) (d8af331)
- Ties: Read orientation from XML, reliably set it above/below for chords (#1020) (070de0f)
- Tuplet/Repeat: Fix tuplet number placement, fix repeat lines across multiple stafflines (StaveConnector) (#1016)
- Wedges: Fix crescendo/decresc. lengths, positioning, etc (3e65761)
- Accidentals: Add support for three-quarter flats and sharps (#999) (98a5793)
- Options: Add osmd.rules.FingeringPositionFromXML (#993), can be auto by setting false now. (d864b9e)
- Cursors: Can now add multiple cursors, with new options like highlighting the current measure, color and alpha value, see PR 972 and #1005 (comment) for usage.
- TransposeCalculator: Add TransposeCalculator, allowing arbitrary transposing of sheets by x semitones. Now out of early access and open source thanks to our Github Sponsors. See #733 (comment).
Before 1.0: See CHANGELOG_old.md - the changelog was too big for Github to render, see #1227.