diff --git a/CHANGELOG.md b/CHANGELOG.md index b5d2a8b8db..d78d2205d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## [2.7.1] - 2020-05-22 +* Fix bug with mensural clefs not displaying + ## [2.7.0] - 2020-05-13 * Support for `@pname.ges` and `@pnum` in MIDI output (@rettinghaus) * Support for `@xml:space` in MusicXML import (@rettinghaus) diff --git a/README.md b/README.md index c291bf29de..01aaa7ce67 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Verovio is a fast, portable and lightweight library for engraving [Music Encodin See the JavaScript toolkit running in the [MEI Viewer](http://www.verovio.org/mei-viewer.xhtml) and check out the [app](http://www.verovio.org/app.html) or the [tutorial](http://www.verovio.org/tutorial.xhtml) for its web integration and for enabling user interaction. -![Choice interaction](https://raw.githubusercontent.com/rism-ch/verovio/gh-pages/movies/reflow.gif) +![Choice interaction](https://raw.githubusercontent.com/rism-ch/verovio.org/gh-pages/movies/reflow.gif) Verovio can also render [Plaine & Easie Code](https://www.iaml.info/plaine-easie-code) and imports MusicXML, Humdrum data, and ABC notation. It is designed as a tool usable as a one-step conversion tool and it is written in pure standard C++. diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml index 9407c10f97..2aed3bdbc3 100644 --- a/bindings/java/pom.xml +++ b/bindings/java/pom.xml @@ -4,7 +4,7 @@ org.rism.verovio VerovioToolkit - 2.7.0 + 2.7.1 jar VerovioToolkit diff --git a/bindings/python/setup.py b/bindings/python/setup.py index f43e82132f..8c19db5f71 100755 --- a/bindings/python/setup.py +++ b/bindings/python/setup.py @@ -61,7 +61,7 @@ ) setup(name='verovio', - version='2.7.0', + version='2.7.1', url="www.verovio.org", description="""A library and toolkit for engraving MEI music notation into SVG""", ext_modules=[verovio_module], diff --git a/codemeta.json b/codemeta.json index eac68522b8..dcfff8791d 100644 --- a/codemeta.json +++ b/codemeta.json @@ -4,8 +4,8 @@ "identifier": "Verovio", "name": "Verovio", "description": "Verovio is a fast, portable and lightweight open-source library for engraving Music Encoding Initiative (MEI) music scores into SVG.", - "softwareVersion": "2.7.0", - "datePublished": "2020-05-13", + "softwareVersion": "2.7.1", + "datePublished": "2020-05-22", "license": "https://www.gnu.org/licenses/lgpl-3.0", "programmingLanguage": [{ "@type": "ComputerLanguage", diff --git a/emscripten/npm/package.json b/emscripten/npm/package.json index c493d83b4d..621b93c7df 100644 --- a/emscripten/npm/package.json +++ b/emscripten/npm/package.json @@ -1,6 +1,6 @@ { "name": "verovio", - "version": "2.7.0", + "version": "2.7.1", "description": "This is the stable version of the verovio package", "main": "index.js", "keywords": [ diff --git a/include/vrv/vrvdef.h b/include/vrv/vrvdef.h index e7e39652b2..81cc52ddcd 100644 --- a/include/vrv/vrvdef.h +++ b/include/vrv/vrvdef.h @@ -35,7 +35,7 @@ namespace vrv { #define VERSION_MAJOR 2 #define VERSION_MINOR 7 -#define VERSION_REVISION 0 +#define VERSION_REVISION 1 // Adds "-dev" in the version number - should be set to false for releases #define VERSION_DEV false diff --git a/src/view_element.cpp b/src/view_element.cpp index 9b8ea28c48..6e4c3ac177 100644 --- a/src/view_element.cpp +++ b/src/view_element.cpp @@ -613,6 +613,43 @@ void View::DrawClef(DeviceContext *dc, LayerElement *element, Layer *layer, Staf bool isMensural = Att::IsMensuralType(staff->m_drawingNotationType); bool isNeume = staff->m_drawingNotationType == NOTATIONTYPE_neume; + // cmn clefs + int shapeOctaveDis = Clef::ClefId(clef->GetShape(), 0, clef->GetDis(), clef->GetDisPlace()); + // G clef + if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) + sym = SMUFL_E050_gClef; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) + sym = SMUFL_E052_gClef8vb; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_15, STAFFREL_basic_below)) + sym = SMUFL_E051_gClef15mb; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_8, STAFFREL_basic_above)) + sym = SMUFL_E053_gClef8va; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_15, STAFFREL_basic_above)) + sym = SMUFL_E054_gClef15ma; + // C clef + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_C, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) + sym = SMUFL_E05C_cClef; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_C, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) + sym = SMUFL_E05D_cClef8vb; + else if (clef->GetShape() == CLEFSHAPE_C) + sym = SMUFL_E05C_cClef; + // F clef + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) + sym = SMUFL_E062_fClef; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) + sym = SMUFL_E064_fClef8vb; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_15, STAFFREL_basic_below)) + sym = SMUFL_E063_fClef15mb; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_8, STAFFREL_basic_above)) + sym = SMUFL_E065_fClef8va; + else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_15, STAFFREL_basic_above)) + sym = SMUFL_E066_fClef15ma; + else if (clef->GetShape() == CLEFSHAPE_F) + sym = SMUFL_E062_fClef; + // Perc clef + else if (clef->GetShape() == CLEFSHAPE_perc) + sym = SMUFL_E069_unpitchedPercussionClef1; + // mensural clefs if (isMensural) { if (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black) { @@ -640,44 +677,6 @@ void View::DrawClef(DeviceContext *dc, LayerElement *element, Layer *layer, Staf else if (clef->GetShape() == CLEFSHAPE_F) sym = SMUFL_E902_chantFclef; } - // cmn clefs - else { - int shapeOctaveDis = Clef::ClefId(clef->GetShape(), 0, clef->GetDis(), clef->GetDisPlace()); - // G clef - if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) - sym = SMUFL_E050_gClef; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) - sym = SMUFL_E052_gClef8vb; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_15, STAFFREL_basic_below)) - sym = SMUFL_E051_gClef15mb; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_8, STAFFREL_basic_above)) - sym = SMUFL_E053_gClef8va; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_G, 0, OCTAVE_DIS_15, STAFFREL_basic_above)) - sym = SMUFL_E054_gClef15ma; - // C clef - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_C, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) - sym = SMUFL_E05C_cClef; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_C, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) - sym = SMUFL_E05D_cClef8vb; - else if (clef->GetShape() == CLEFSHAPE_C) - sym = SMUFL_E05C_cClef; - // F clef - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_NONE, STAFFREL_basic_NONE)) - sym = SMUFL_E062_fClef; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_8, STAFFREL_basic_below)) - sym = SMUFL_E064_fClef8vb; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_15, STAFFREL_basic_below)) - sym = SMUFL_E063_fClef15mb; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_8, STAFFREL_basic_above)) - sym = SMUFL_E065_fClef8va; - else if (shapeOctaveDis == Clef::ClefId(CLEFSHAPE_F, 0, OCTAVE_DIS_15, STAFFREL_basic_above)) - sym = SMUFL_E066_fClef15ma; - else if (clef->GetShape() == CLEFSHAPE_F) - sym = SMUFL_E062_fClef; - // Perc clef - else if (clef->GetShape() == CLEFSHAPE_perc) - sym = SMUFL_E069_unpitchedPercussionClef1; - } if (sym == 0) { clef->SetEmptyBB();