diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 4d7384dd54d..329771ecf34 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -36,6 +36,7 @@ env: # build artifacts DOC_BUILD: doc-build TOOLKIT_BUILD: toolkit-build + FONTS: fonts # doxygen DOXYGEN_REPO: ${{ github.repository_owner }}/verovio-doxygen # works from rism-digital and from forks @@ -276,9 +277,9 @@ jobs: - name: Upload js build artifact (${{ matrix.toolkit.target }}) if: ${{ matrix.toolkit.upload == true }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.4.3 with: - name: ${{ env.TOOLKIT_BUILD }} + name: ${{ env.TOOLKIT_BUILD }}-${{ github.run_id }} path: ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ matrix.toolkit.filepath }} @@ -301,9 +302,9 @@ jobs: run: cp data/*.css $GITHUB_WORKSPACE/$TEMP_DIR/data/ - name: Upload font data artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.4.3 with: - name: ${{ env.TOOLKIT_BUILD }} + name: ${{ env.FONTS }}-${{ github.run_id }} path: ${{ github.workspace }}/${{ env.TEMP_DIR }} ################################## @@ -366,15 +367,25 @@ jobs: path: ${{ env.GH_PAGES_DIR }} - name: Download TOOLKIT_BUILD artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: - name: ${{ env.TOOLKIT_BUILD }} + name: ${{ env.TOOLKIT_BUILD }}-${{ github.run_id }} path: artifacts/${{ env.TOOLKIT_BUILD }} - - name: Copy artifacts to gh-pages + - name: Copy the toolkit artifacts to gh-pages run: | cp -r artifacts/$TOOLKIT_BUILD/* $GH_PAGES_DIR/javascript/develop/ + - name: Download FONTS artifacts + uses: actions/download-artifact@v4.1.7 + with: + name: ${{ env.FONTS }}-${{ github.run_id }} + path: artifacts/${{ env.FONTS }} + + - name: Copy the fonts artifacts to gh-pages + run: | + cp -r artifacts/$FONTS/* $GH_PAGES_DIR/javascript/develop/ + - name: Check git status before commit working-directory: ${{ env.GH_PAGES_DIR }} run: | @@ -455,9 +466,9 @@ jobs: run: (cat verovio.conf ; echo "OUTPUT_DIRECTORY = $GITHUB_WORKSPACE/$DOXYGEN_DIR") | doxygen - - name: Upload doxygen build artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.4.3 with: - name: ${{ env.DOC_BUILD }} + name: ${{ env.DOC_BUILD }}-${{ github.run_id }} path: ${{ github.workspace }}/${{ env.DOXYGEN_DIR }} ############################################### @@ -485,9 +496,9 @@ jobs: path: ${{ env.DOXYGEN_DIR }} - name: Download DOC_BUILD artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: - name: ${{ env.DOC_BUILD }} + name: ${{ env.DOC_BUILD }}-${{ github.run_id }} path: artifacts/${{ env.DOC_BUILD }} - name: Remove old doc and copy build artifacts to DOXYGEN_DIR diff --git a/.github/workflows/python-ci-wheel.yml b/.github/workflows/python-ci-wheel.yml index 2c337e47b39..57c4e1f0e57 100644 --- a/.github/workflows/python-ci-wheel.yml +++ b/.github/workflows/python-ci-wheel.yml @@ -24,7 +24,7 @@ jobs: # Build the wheels for Linux, Windows and macOS matrix: os: [macos-13, macos-14, windows-latest, ubuntu-latest] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] architecture: [x86, x64, arm64] include: - os: macos-13 @@ -96,19 +96,19 @@ jobs: #===============================================# # wheels - name: Build wheels - uses: pypa/cibuildwheel@8d945475ac4b1aac4ae08b2fd27db9917158b6ce # v2.17.0 + uses: pypa/cibuildwheel@7940a4c0e76eb2030e473a5f864f291f63ee879b # v2.21.3 with: output-dir: wheelhouse env: CIBW_BUILD: ${{ env.CIBW_BUILD_IDENTIFIER }} CIBW_ARCHS_MACOS: x86_64 arm64 CIBW_ENVIRONMENT_MACOS: - MACOSX_DEPLOYMENT_TARGET=10.15 + MACOSX_DEPLOYMENT_TARGET=11 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 CIBW_MANYLINUX_I686_IMAGE: manylinux2014 CIBW_BEFORE_ALL_MACOS: brew update && brew install swig CIBW_BEFORE_ALL_WINDOWS: choco install swig -f -y - CIBW_BEFORE_BUILD: swig -version && bash -c 'cd tools; ./get_git_commit.sh' && swig -c++ -python -py3 ./bindings/python/verovio.i + CIBW_BEFORE_BUILD: swig -version && bash -c 'cd tools; ./get_git_commit.sh' && swig -c++ -python -py3 -fastproxy -olddefs ./bindings/python/verovio.i #===============================================# # Check build @@ -256,7 +256,7 @@ jobs: #===============================================# # Prepare artifacts - name: Download artifacts - uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 + uses: actions/download-artifact@v4.1.7 # v4.1.7 with: path: bindings/python/artifacts/ diff --git a/Verovio.xcodeproj/project.pbxproj b/Verovio.xcodeproj/project.pbxproj index f5cdedb870d..758f6b8e369 100644 --- a/Verovio.xcodeproj/project.pbxproj +++ b/Verovio.xcodeproj/project.pbxproj @@ -182,6 +182,12 @@ 4D16945A1E3A44F300569BF4 /* dot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DC34BA719BC4A83006175CD /* dot.cpp */; }; 4D16946A1E3A455100569BF4 /* humlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40CA06581E351161009CFDD7 /* humlib.cpp */; }; 4D1694741E3A455200569BF4 /* humlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40CA06581E351161009CFDD7 /* humlib.cpp */; }; + 4D1788C22CB8FD0100FE9043 /* fraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1788C12CB8FD0100FE9043 /* fraction.h */; }; + 4D1788C32CB8FD0100FE9043 /* fraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1788C12CB8FD0100FE9043 /* fraction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D1788C52CB8FD7300FE9043 /* fraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1788C42CB8FD7300FE9043 /* fraction.cpp */; }; + 4D1788C62CB8FD7300FE9043 /* fraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1788C42CB8FD7300FE9043 /* fraction.cpp */; }; + 4D1788C72CB8FD7300FE9043 /* fraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1788C42CB8FD7300FE9043 /* fraction.cpp */; }; + 4D1788C82CB8FD7300FE9043 /* fraction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1788C42CB8FD7300FE9043 /* fraction.cpp */; }; 4D1AC9772B6A9BB200434023 /* filereader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1AC9762B6A9BB200434023 /* filereader.cpp */; }; 4D1AC9782B6A9BB200434023 /* filereader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1AC9762B6A9BB200434023 /* filereader.cpp */; }; 4D1AC9792B6A9BB200434023 /* filereader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1AC9762B6A9BB200434023 /* filereader.cpp */; }; @@ -326,6 +332,12 @@ 4D64137E2035F68600BB630E /* mdiv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64137D2035F68600BB630E /* mdiv.cpp */; }; 4D64137F2035F68600BB630E /* mdiv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64137D2035F68600BB630E /* mdiv.cpp */; }; 4D6413802035F68600BB630E /* mdiv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64137D2035F68600BB630E /* mdiv.cpp */; }; + 4D6479372C9881B800CD9539 /* iocmme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D6479362C9881B800CD9539 /* iocmme.cpp */; }; + 4D6479392C98825900CD9539 /* iocmme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D6479362C9881B800CD9539 /* iocmme.cpp */; }; + 4D64793A2C98825A00CD9539 /* iocmme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D6479362C9881B800CD9539 /* iocmme.cpp */; }; + 4D64793B2C98825A00CD9539 /* iocmme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D6479362C9881B800CD9539 /* iocmme.cpp */; }; + 4D64793C2C98826600CD9539 /* iocmme.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D6479382C9881DB00CD9539 /* iocmme.h */; }; + 4D64793D2C98826600CD9539 /* iocmme.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D6479382C9881DB00CD9539 /* iocmme.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4D64793F2C9C0F1C00CD9539 /* genericlayerelement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64793E2C9C0F1C00CD9539 /* genericlayerelement.cpp */; }; 4D6479412C9C0F4200CD9539 /* genericlayerelement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64793E2C9C0F1C00CD9539 /* genericlayerelement.cpp */; }; 4D6479422C9C0F4300CD9539 /* genericlayerelement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D64793E2C9C0F1C00CD9539 /* genericlayerelement.cpp */; }; @@ -1805,6 +1817,8 @@ 4D09D3EC1EA8AD8500A420E6 /* horizontalaligner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = horizontalaligner.cpp; path = src/horizontalaligner.cpp; sourceTree = ""; }; 4D14600F1EA8A913007DB90C /* horizontalaligner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = horizontalaligner.h; path = include/vrv/horizontalaligner.h; sourceTree = ""; }; 4D1694601E3A44F300569BF4 /* Verovio-Humdrum */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "Verovio-Humdrum"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D1788C12CB8FD0100FE9043 /* fraction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fraction.h; path = include/vrv/fraction.h; sourceTree = ""; }; + 4D1788C42CB8FD7300FE9043 /* fraction.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = fraction.cpp; path = src/fraction.cpp; sourceTree = ""; }; 4D1AC9762B6A9BB200434023 /* filereader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = filereader.cpp; path = src/filereader.cpp; sourceTree = ""; }; 4D1AC97B2B6A9BD000434023 /* filereader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = filereader.h; path = include/vrv/filereader.h; sourceTree = ""; }; 4D1BD1B421908D6B000D35B2 /* halfmrpt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = halfmrpt.cpp; path = src/halfmrpt.cpp; sourceTree = ""; }; @@ -1877,6 +1891,8 @@ 4D6413772035F58200BB630E /* pages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pages.cpp; path = src/pages.cpp; sourceTree = ""; }; 4D64137B2035F67C00BB630E /* mdiv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mdiv.h; path = include/vrv/mdiv.h; sourceTree = ""; }; 4D64137D2035F68600BB630E /* mdiv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = mdiv.cpp; path = src/mdiv.cpp; sourceTree = ""; }; + 4D6479362C9881B800CD9539 /* iocmme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = iocmme.cpp; path = src/iocmme.cpp; sourceTree = ""; }; + 4D6479382C9881DB00CD9539 /* iocmme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = iocmme.h; path = include/vrv/iocmme.h; sourceTree = ""; }; 4D64793E2C9C0F1C00CD9539 /* genericlayerelement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = genericlayerelement.cpp; path = src/genericlayerelement.cpp; sourceTree = ""; }; 4D6479402C9C0F2D00CD9539 /* genericlayerelement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = genericlayerelement.h; path = include/vrv/genericlayerelement.h; sourceTree = ""; }; 4D674B3E255F40AC008AEF4C /* plica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = plica.h; path = include/vrv/plica.h; sourceTree = ""; }; @@ -2836,6 +2852,8 @@ 4D1AC97B2B6A9BD000434023 /* filereader.h */, 4DF28A041A754DF000BA9F7D /* floatingobject.cpp */, 4D95D4F41D7185DE00B2B856 /* floatingobject.h */, + 4D1788C12CB8FD0100FE9043 /* fraction.h */, + 4D1788C42CB8FD7300FE9043 /* fraction.cpp */, 4D09D3EC1EA8AD8500A420E6 /* horizontalaligner.cpp */, 4D14600F1EA8A913007DB90C /* horizontalaligner.h */, 4DACC93F2990ED2600B55913 /* libmei.h */, @@ -2885,6 +2903,8 @@ 8F59291718854BF800FE51AD /* iobase.h */, 402197931F2E09DA00182DF1 /* ioabc.cpp */, 402197921F2E09CB00182DF1 /* ioabc.h */, + 4D6479382C9881DB00CD9539 /* iocmme.h */, + 4D6479362C9881B800CD9539 /* iocmme.cpp */, 8F086EC1188539540037FD8E /* iodarms.cpp */, 8F59291818854BF800FE51AD /* iodarms.h */, 4DA20ED01D0F151900706C4A /* iohumdrum.cpp */, @@ -3451,6 +3471,7 @@ E7901659298BCA97008FDB4E /* calcalignmentxposfunctor.h in Headers */, BDEF9ECC26725248008A3A47 /* caesura.h in Headers */, E7ADB3AB29D1921300825D5D /* adjustarticfunctor.h in Headers */, + 4D64793C2C98826600CD9539 /* iocmme.h in Headers */, E73E86252A069C640089DF74 /* transposefunctor.h in Headers */, 4DEC4DD921C8295700D1D273 /* rdg.h in Headers */, 4DB3D8D01F83D11800B5FC2B /* mordent.h in Headers */, @@ -3474,6 +3495,7 @@ 4DEBE6E12B36E78900B67DFB /* facsimilefunctor.h in Headers */, 4D94E0E22995411100F49F89 /* meibasic.h in Headers */, BD2E4D9B2875882200B04350 /* stem.h in Headers */, + 4D1788C22CB8FD0100FE9043 /* fraction.h in Headers */, 4DACC9EA2990F29A00B55913 /* attmodule.h in Headers */, 4DACC98E2990F29A00B55913 /* atts_externalsymbols.h in Headers */, 4D6413762035F57800BB630E /* pages.h in Headers */, @@ -3573,6 +3595,7 @@ 4D4CDEA82C079026005621E9 /* adjustneumexfunctor.h in Headers */, BB4C4B5222A932D7001F6AF0 /* ftrem.h in Headers */, E7E9C11329B0A1E200CFCE2F /* adjustaccidxfunctor.h in Headers */, + 4D64793D2C98826600CD9539 /* iocmme.h in Headers */, 4D88AD0B289673F50006D7DA /* symbol.h in Headers */, 4D1EB6A72A2A40CB00AF2F98 /* textlayoutelement.h in Headers */, 4D2E759022BC2B71004C51F0 /* course.h in Headers */, @@ -3750,6 +3773,7 @@ 4DC3B9EB239E2B23007F185E /* transposition.h in Headers */, BB4C4BC122A932FC001F6AF0 /* MidiMessage.h in Headers */, BB4C4B9222A932DF001F6AF0 /* textelement.h in Headers */, + 4D1788C32CB8FD0100FE9043 /* fraction.h in Headers */, BB4C4B5C22A932D7001F6AF0 /* mensur.h in Headers */, 4D79641E26C152400026288B /* pageelement.h in Headers */, BB4C4AEC22A932BC001F6AF0 /* editorial.h in Headers */, @@ -3875,7 +3899,8 @@ 8F086EA0188534680037FD8E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1420; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1600; TargetAttributes = { BB4C4A5122A930A3001F6AF0 = { CreatedOnToolsVersion = 10.2.1; @@ -4003,6 +4028,7 @@ E7F1C36929F03461007E12C1 /* savefunctor.cpp in Sources */, 4DF092A62497711800239195 /* phrase.cpp in Sources */, 4DB3D8D91F83D13C00B5FC2B /* turn.cpp in Sources */, + 4D1788C62CB8FD7300FE9043 /* fraction.cpp in Sources */, 4DA0EAC422BB779400A7EBEB /* surface.cpp in Sources */, 4D1694051E3A44F300569BF4 /* iodarms.cpp in Sources */, 4DEC4DAF21C81F0600D1D273 /* sic.cpp in Sources */, @@ -4096,6 +4122,7 @@ 40C2E4222052A6F60003625F /* pb.cpp in Sources */, 4DA0EAF322BB77C300A7EBEB /* facsimileinterface.cpp in Sources */, 4D1694241E3A44F300569BF4 /* positioninterface.cpp in Sources */, + 4D6479392C98825900CD9539 /* iocmme.cpp in Sources */, 4D1694251E3A44F300569BF4 /* timestamp.cpp in Sources */, 4D1694261E3A44F300569BF4 /* MidiEventList.cpp in Sources */, 4DA0EAC822BB779400A7EBEB /* facsimile.cpp in Sources */, @@ -4435,6 +4462,7 @@ 4D79642126C167100026288B /* pagemilestone.cpp in Sources */, 4D2073FB22A3BCE000E0765F /* tabgrp.cpp in Sources */, 4DEC4DBA21C8288900D1D273 /* choice.cpp in Sources */, + 4D6479372C9881B800CD9539 /* iocmme.cpp in Sources */, 4DACC9882990F29A00B55913 /* atts_mei.cpp in Sources */, 4D2073F522A3BCE000E0765F /* tuning.cpp in Sources */, 8F086F06188539540037FD8E /* view_beam.cpp in Sources */, @@ -4483,6 +4511,7 @@ 4DACC9F82990F29A00B55913 /* atts_figtable.cpp in Sources */, 400FEDD3206FA743000D3233 /* gracegrp.cpp in Sources */, 4D4FCD0C1F5455FF0009C455 /* staffgrp.cpp in Sources */, + 4D1788C82CB8FD7300FE9043 /* fraction.cpp in Sources */, 4DEC4DBE21C828AC00D1D273 /* corr.cpp in Sources */, 4D1BD1B521908D6B000D35B2 /* halfmrpt.cpp in Sources */, 4D1EB6A12A2A40B400AF2F98 /* textlayoutelement.cpp in Sources */, @@ -4582,6 +4611,7 @@ E7F1C36729F0345D007E12C1 /* savefunctor.cpp in Sources */, 4DEC4D8021C804C500D1D273 /* add.cpp in Sources */, 8F3DD36518854B390051330C /* view_tuplet.cpp in Sources */, + 4D1788C72CB8FD7300FE9043 /* fraction.cpp in Sources */, 4DF092A72497711800239195 /* phrase.cpp in Sources */, 4D20741422A708C600E0765F /* view_tab.cpp in Sources */, 4D1BE7861C6A40A80086DC0E /* pugixml.cpp in Sources */, @@ -4675,6 +4705,7 @@ 8F3DD35418854B2E0051330C /* slur.cpp in Sources */, 40C2E4232052A6F70003625F /* pb.cpp in Sources */, 4D64137A2035F58200BB630E /* pages.cpp in Sources */, + 4D64793A2C98825A00CD9539 /* iocmme.cpp in Sources */, 4D1694741E3A455200569BF4 /* humlib.cpp in Sources */, 4DB3D8C31F83D0EF00B5FC2B /* anchoredtext.cpp in Sources */, 4DB3D8E71F83D16A00B5FC2B /* ftrem.cpp in Sources */, @@ -4872,6 +4903,7 @@ E7F1C36829F0345D007E12C1 /* savefunctor.cpp in Sources */, BB4C4AC122A932B6001F6AF0 /* layer.cpp in Sources */, BB4C4B0522A932C3001F6AF0 /* pgfoot.cpp in Sources */, + 4D1788C52CB8FD7300FE9043 /* fraction.cpp in Sources */, 4DF092A82497711800239195 /* phrase.cpp in Sources */, BB4C4ABF22A932B6001F6AF0 /* labelabbr.cpp in Sources */, 4DA0EAC622BB779400A7EBEB /* surface.cpp in Sources */, @@ -4965,6 +4997,7 @@ BB4C4B6122A932D7001F6AF0 /* mrpt.cpp in Sources */, BB4C4AE722A932BC001F6AF0 /* damage.cpp in Sources */, 4DA0EACA22BB779400A7EBEB /* facsimile.cpp in Sources */, + 4D64793B2C98825A00CD9539 /* iocmme.cpp in Sources */, BB4C4B4B22A932D7001F6AF0 /* custos.cpp in Sources */, BB4C4BB822A932FC001F6AF0 /* Binasc.cpp in Sources */, BB4C4B7B22A932D7001F6AF0 /* tuplet.cpp in Sources */, @@ -5115,7 +5148,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "-"; DEAD_CODE_STRIPPING = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = ""; }; @@ -5126,7 +5159,7 @@ buildSettings = { CODE_SIGN_IDENTITY = "-"; DEAD_CODE_STRIPPING = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = ""; }; @@ -5161,6 +5194,7 @@ DEAD_CODE_STRIPPING = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; @@ -5220,6 +5254,7 @@ DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = "compiler-default"; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_NO_COMMON_BLOCKS = YES; @@ -5252,7 +5287,7 @@ "$(inherited)", NO_HUMDRUM_SUPPORT, ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = ""; }; @@ -5264,7 +5299,7 @@ CODE_SIGN_IDENTITY = "-"; DEAD_CODE_STRIPPING = YES; GCC_PREPROCESSOR_DEFINITIONS = NO_HUMDRUM_SUPPORT; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; USER_HEADER_SEARCH_PATHS = ""; }; @@ -5278,7 +5313,7 @@ EXECUTABLE_PREFIX = lib; HEADER_SEARCH_PATHS = ""; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; @@ -5292,7 +5327,7 @@ EXECUTABLE_PREFIX = lib; HEADER_SEARCH_PATHS = ""; MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; @@ -5319,6 +5354,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -5339,7 +5375,8 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 c++20"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.rism.VerovioFramework; @@ -5374,6 +5411,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; ENABLE_NS_ASSERTIONS = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -5392,7 +5430,8 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 11.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 c++20"; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.rism.VerovioFramework; diff --git a/Verovio.xcodeproj/xcshareddata/xcschemes/VerovioFramework.xcscheme b/Verovio.xcodeproj/xcshareddata/xcschemes/VerovioFramework.xcscheme index 6c30c3b7bec..4fdd95fb526 100644 --- a/Verovio.xcodeproj/xcshareddata/xcschemes/VerovioFramework.xcscheme +++ b/Verovio.xcodeproj/xcshareddata/xcschemes/VerovioFramework.xcscheme @@ -1,6 +1,6 @@ #import #import +#import #import #import #import @@ -28,6 +29,7 @@ #import #import #import +#import #import #import #import @@ -105,9 +107,11 @@ #import #import #import +#import #import #import #import +#import #import #import #import @@ -121,13 +125,14 @@ #import #import #import -#import #import +#import #import #import #import #import #import +#import #import #import #import @@ -167,6 +172,7 @@ #import #import #import +#import #import #import #import @@ -184,6 +190,7 @@ #import #import #import +#import #import #import #import diff --git a/bindings/python/py.typed b/bindings/python/py.typed new file mode 100644 index 00000000000..e69de29bb2d diff --git a/bindings/python/verovio.i b/bindings/python/verovio.i index 327f6478b50..b7caad02450 100644 --- a/bindings/python/verovio.i +++ b/bindings/python/verovio.i @@ -18,6 +18,10 @@ %ignore vrv::Toolkit::ResetLogBuffer( ); %ignore vrv::Toolkit::SetShowBoundingBoxes( bool ); %ignore vrv::Toolkit::SetCString( const std::string & ); +%ignore vrv::Toolkit::PrintOptionUsage; +%ignore vrv::Toolkit::GetHumdrum; +%ignore vrv::Toolkit::RenderToDeviceContext; +%ignore vrv::EnableLogToBuffer; %feature("autodoc", "1"); @@ -29,170 +33,179 @@ // Toolkit::Edit %feature("shadow") vrv::Toolkit::Edit( const std::string & ) %{ -def edit(toolkit, editor_action: dict) -> bool: +def edit(self, editor_action: dict) -> bool: """Edit the MEI data.""" - return $action(toolkit, json.dumps(editor_action)) + return $action(self, json.dumps(editor_action)) %} // Toolkit::EditInfo %feature("shadow") vrv::Toolkit::EditInfo() %{ -def editInfo(toolkit) -> dict: +def editInfo(self) -> dict: """Return the editor status.""" - return json.loads($action(toolkit)) + return json.loads($action(self)) %} // Toolkit::GetAvailableOptions %feature("shadow") vrv::Toolkit::GetAvailableOptions() const %{ -def getAvailableOptions(toolkit) -> dict: +def getAvailableOptions(self) -> dict: """Return a dictionary of all the options with their default value.""" - return json.loads($action(toolkit)) + return json.loads($action(self)) %} // Toolkit::GetDefaultOptions %feature("shadow") vrv::Toolkit::GetDefaultOptions() const %{ -def getDefaultOptions(toolkit) -> dict: +def getDefaultOptions(self) -> dict: """Return a dictionary of all the options with their default value.""" - return json.loads($action(toolkit)) + return json.loads($action(self)) %} // Toolkit::GetDescriptiveFeatures %feature("shadow") vrv::Toolkit::GetDescriptiveFeatures(const std::string &) %{ -def getDescriptiveFeatures(toolkit, options: Optional[dict] = None) -> dict: +def getDescriptiveFeatures(self, options: Optional[dict] = None) -> dict: """Return descriptive features as dictionary.""" if options is None: options = {} - return json.loads($action(toolkit, json.dumps(options))) + return json.loads($action(self, json.dumps(options))) %} // Toolkit::GetElementAttr %feature("shadow") vrv::Toolkit::GetElementAttr(const std::string &) %{ -def getElementAttr(toolkit, xml_id: str) -> dict: +def getElementAttr(self, xmlId: str) -> dict: """Return element attributes as dictionary.""" - return json.loads($action(toolkit, xml_id)) + return json.loads($action(self, xmlId)) %} // Toolkit::GetElementsAtTime %feature("shadow") vrv::Toolkit::GetElementsAtTime(int) %{ -def getElementsAtTime(toolkit, millisec: int) -> dict: +def getElementsAtTime(self, millisec: int) -> dict: """Return array of IDs of elements being currently played.""" - return json.loads($action(toolkit, millisec)) + return json.loads($action(self, millisec)) %} // Toolkit::GetExpansionIdsForElement %feature("shadow") vrv::Toolkit::GetExpansionIdsForElement(const std::string &) %{ -def getExpansionIdsForElement(toolkit, xml_id: str) -> dict: +def getExpansionIdsForElement(self, xmlId: str) -> dict: """Return a vector of ID strings of all elements (the notated and the expanded) for a given element.""" - return json.loads($action(toolkit, xml_id)) + return json.loads($action(self, xmlId)) %} // Toolkit::GetMEI %feature("shadow") vrv::Toolkit::GetMEI(const std::string & = "") %{ -def getMEI(toolkit, options: Optional[dict] = None) -> str: +def getMEI(self, options: Optional[dict] = None) -> str: """Get the MEI as a string.""" if options is None: options = {} - return $action(toolkit, json.dumps(options)) + return $action(self, json.dumps(options)) %} // Toolkit::GetMIDIValuesForElement %feature("shadow") vrv::Toolkit::GetMIDIValuesForElement(const std::string &) %{ -def getMIDIValuesForElement(toolkit, xml_id: str) -> dict: +def getMIDIValuesForElement(self, xmlId: str) -> dict: """Return MIDI values of the element with the ID (xml:id).""" - return json.loads($action(toolkit, xml_id)) + return json.loads($action(self, xmlId)) %} // Toolkit::GetOptions %feature("shadow") vrv::Toolkit::GetOptions() const %{ -def getOptions(toolkit) -> dict: +def getOptions(self) -> dict: """Return a dictionary of all the options with their current value.""" - return json.loads($action(toolkit)) + return json.loads($action(self)) %} // Toolkit::GetTimesForElement %feature("shadow") vrv::Toolkit::GetTimesForElement(const std::string &) %{ -def getTimesForElement(toolkit, xml_id: str) -> dict: +def getTimesForElement(self, xmlId: str) -> dict: """Return a dictionary with the following key values for a given note.""" - return json.loads($action(toolkit, xml_id)) + return json.loads($action(self, xmlId)) %} // Toolkit::RedoLayout %feature("shadow") vrv::Toolkit::RedoLayout(const std::string & = "") %{ -def redoLayout(toolkit, options: Optional[dict] = None) -> None: +def redoLayout(self, options: Optional[dict] = None) -> None: """Redo the layout of the loaded data.""" if options is None: options = {} - return $action(toolkit, json.dumps(options)) + return $action(self, json.dumps(options)) %} // Toolkit::RenderData %feature("shadow") vrv::Toolkit::RenderData(const std::string &, const std::string &) %{ -def renderData(toolkit, data, options: dict) -> str: +def renderData(self, data: str, options: dict) -> str: """Render the first page of the data to SVG.""" - return $action(toolkit, data, json.dumps(options)) + return $action(self, data, json.dumps(options)) %} // Toolkit::RenderToExpansionMap %feature("shadow") vrv::Toolkit::RenderToExpansionMap() %{ -def renderToExpansionMap(toolkit) -> list: +def renderToExpansionMap(self) -> list: """Render a document's expansion map, if existing.""" - return json.loads($action(toolkit)) + return json.loads($action(self)) %} // Toolkit::RenderToExpansionMapFile %feature("shadow") vrv::Toolkit::RenderToExpansionMapFile(const std::string &) %{ -def renderToExpansionMapFile(toolkit, filename: str) -> bool: +def renderToExpansionMapFile(self, filename: str) -> bool: """Render a document's expansion map and save it to a file.""" - return $action(toolkit, filename) + return $action(self, filename) %} // Toolkit::RenderToTimemap %feature("shadow") vrv::Toolkit::RenderToTimemap(const std::string & = "") %{ -def renderToTimemap(toolkit, options: Optional[dict] = None) -> list: +def renderToTimemap(self, options: Optional[dict] = None) -> list: """Render a document to a timemap.""" if options is None: options = {} - return json.loads($action(toolkit, json.dumps(options))) + return json.loads($action(self, json.dumps(options))) %} // Toolkit::RenderToTimemapFile %feature("shadow") vrv::Toolkit::RenderToTimemapFile(const std::string &, const std::string & = "") %{ -def renderToTimemapFile(toolkit, filename: str, options: Optional[dict] = None) -> bool: +def renderToTimemapFile(self, filename: str, options: Optional[dict] = None) -> bool: """Render a document to timemap and save it to the file.""" if options is None: options = {} - return $action(toolkit, filename, json.dumps(options)) + return $action(self, filename, json.dumps(options)) %} // Toolkit::SaveFile %feature("shadow") vrv::Toolkit::SaveFile(const std::string &, const std::string & = "") %{ -def saveFile(toolkit, filename: str, options: Optional[dict] = None) -> bool: +def saveFile(self, filename: str, options: Optional[dict] = None) -> bool: """Get the MEI and save it to the file.""" if options is None: options = {} - return $action(toolkit, filename, json.dumps(options)) + return $action(self, filename, json.dumps(options)) %} // Toolkit::Select %feature("shadow") vrv::Toolkit::Select(const std::string &) %{ -def select(toolkit, selection: dict) -> bool: +def select(self, selection: dict) -> bool: """Set the value for a selection.""" - return $action(toolkit, json.dumps(selection)) + return $action(self, json.dumps(selection)) %} // Toolkit::SetOptions %feature("shadow") vrv::Toolkit::SetOptions(const std::string &) %{ -def setOptions(toolkit, json_options: dict) -> bool: +def setOptions(self, json_options: dict) -> bool: """Set option values.""" - return $action(toolkit, json.dumps(json_options)) + return $action(self, json.dumps(json_options)) %} // Toolkit::ValidatePAE %feature("shadow") vrv::Toolkit::ValidatePAE(const std::string &) %{ -def validatePAE(toolkit, data: Union[str, dict]) -> dict: +def validatePAE(self, data: Union[str, dict]) -> dict: """Validate the Plaine and Easie code passed in the string data.""" if isinstance(data, dict): data = json.dumps(data); - return json.loads($action(toolkit, data)) + return json.loads($action(self, data)) +%} + +// Toolkit::ValidatePAEFile +%feature("shadow") vrv::Toolkit::ValidatePAEFile(const std::string &) %{ +def validatePAEFile(self, filename: str) -> dict: + """Validate the Plaine and Easie code passed in the string data.""" + if isinstance(data, dict): + data = json.dumps(data); + return json.loads($action(self, data)) %} %module(package="verovio") verovio @@ -203,7 +216,7 @@ def validatePAE(toolkit, data: Union[str, dict]) -> dict: %{ #include "../../include/vrv/toolkit.h" #include "../../include/vrv/toolkitdef.h" - + using namespace vrv; using namespace std; %} diff --git a/bindings/python/verovio.pyi b/bindings/python/verovio.pyi new file mode 100644 index 00000000000..599b9ef6c20 --- /dev/null +++ b/bindings/python/verovio.pyi @@ -0,0 +1,105 @@ +# This file was generated by mypy stubgen and then hand-edited +# to match the contents of verovio.py. It should be kept up-to-date +# when methods are added to the toolkit. + +from typing import Any + +class _SwigNonDynamicMeta(type): + def __setattr__(self, name: str, value: Any, /) -> None: ... + +class toolkit: + thisown: toolkit + def __init__(self, initFont: bool = True) -> None: ... + __swig_destroy__: None + def getID(self) -> str: ... + def getResourcePath(self) -> str: ... + def setResourcePath(self, path: str) -> None: ... + def getLog(self) -> str: ... + def getVersion(self) -> str: ... + def resetXmlIdSeed(self, seed: int) -> None: ... + def loadFile(self, filename: str) -> bool: ... + def loadData(self, data: str) -> bool: ... + def loadZipDataBase64(self, data: str) -> bool: ... + def loadZipDataBuffer(self, data: bytes, length: int) -> bool: ... + def validatePAEFile(self, filename: str) -> dict: ... + def validatePAE(self, data: str | dict) -> dict: ... + def getPageCount(self) -> int: ... + def getOptions(self) -> dict: ... + def getDefaultOptions(self) -> dict: ... + def getAvailableOptions(self) -> dict: ... + def setOptions(self, json_options: dict) -> bool: ... + def resetOptions(self) -> None: ... + def getOptionUsageString(self) -> str: ... + def setScale(self, scale: int) -> bool: ... + def getScale(self) -> int: ... + def setOutputTo(self, outputTo: str) -> bool: ... + def select(self, selection: dict) -> bool: ... + def edit(self, editor_action: dict) -> bool: ... + def editInfo(self) -> dict: ... + def renderData(self, data: str, options: dict) -> str: ... + def renderToSVG(self, pageNo: int = 1, xmlDeclaration: bool = False) -> str: ... + def renderToSVGFile(self, filename, pageNo: int = 1) -> bool: ... + def renderToMIDI(self) -> str: ... + def renderToMIDIFile(self, filename: str) -> bool: ... + def renderToPAE(self) -> str: ... + def renderToPAEFile(self, filename: str) -> bool: ... + def renderToTimemap(self, options: dict | None = None) -> list: ... + def renderToExpansionMap(self) -> list: ... + def renderToTimemapFile(self, filename: str, options: dict | None = None) -> bool: ... + def renderToExpansionMapFile(self, filename: str) -> bool: ... + def convertMEIToHumdrum(self, meiData: str) -> str: ... + def convertHumdrumToHumdrum(self, humdrumData: str) -> str: ... + def convertHumdrumToMIDI(self, humdrumData: str) -> str: ... + def getHumdrumFile(self, filename: str) -> bool: ... + def getMEI(self, options: dict | None = None) -> str: ... + def saveFile(self, filename: str, options: dict | None = None) -> bool: ... + def getDescriptiveFeatures(self, options: dict | None = None) -> dict: ... + def getElementsAtTime(self, millisec: int) -> dict: ... + def getPageWithElement(self, xmlId: str) -> int: ... + def getElementAttr(self, xmlId: str) -> dict: ... + def getNotatedIdForElement(self, xmlId: str) -> str: ... + def getExpansionIdsForElement(self, xmlId: str) -> dict: ... + def getTimeForElement(self, xmlId: str) -> int: ... + def getMIDIValuesForElement(self, xmlId: str) -> dict: ... + def getTimesForElement(self, xmlId: str) -> dict: ... + def redoLayout(self, options: dict | None = None) -> None: ... + def redoPagePitchPosLayout(self) -> None: ... + def setHumdrumBuffer(self, contents: bytes) -> None: ... + def getHumdrumBuffer(self) -> bytes: ... + def clearHumdrumBuffer(self) -> None: ... + def setInputFrom(self, format: str) -> bool: ... + def getInputFrom(self) -> int: ... + def getOutputTo(self) -> int: ... + def setLocale(self) -> None: ... + def resetLocale(self) -> None: ... + def initClock(self) -> None: ... + def resetClock(self) -> None: ... + def getRuntimeInSeconds(self) -> float: ... + def logRuntime(self) -> None: ... + +UNKNOWN: int +AUTO: int +MEI: int +HUMDRUM: int +HUMMEI: int +HUMMIDI: int +PAE: int +ABC: int +DARMS: int +VOLPIANO: int +MUSICXML: int +MUSICXMLHUM: int +MEIHUM: int +MUSEDATAHUM: int +ESAC: int +MIDI: int +TIMEMAP: int +EXPANSIONMAP: int +LOG_OFF: int +LOG_ERROR: int +LOG_WARNING: int +LOG_INFO: int +LOG_DEBUG: int + +def setDefaultResourcePath(path: str) -> None: ... +def enableLog(level: int) -> None: ... diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 5c6927714f9..fea1101476d 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -217,6 +217,8 @@ elseif (BUILD_AS_PYTHON) if(${SWIG_VERSION} VERSION_GREATER_EQUAL "4.1.0") list(APPEND CMAKE_SWIG_FLAGS "-doxygen") + list(APPEND CMAKE_SWIG_FLAGS "-fastproxy") + list(APPEND CMAKE_SWIG_FLAGS "-olddefs") else() list(APPEND CMAKE_SWIG_FLAGS "-py3;-DPY3") endif() @@ -234,7 +236,7 @@ elseif (BUILD_AS_PYTHON) swig_add_library(verovio_module_${OUTPUT_VERSION_STRING} LANGUAGE python TYPE MODULE SOURCES ../bindings/python/verovio.i) swig_link_libraries(verovio_module_${OUTPUT_VERSION_STRING} verovio ${Python_LIBRARIES}) - add_library(verovio STATIC ../tools/c_wrapper.cpp ${all_SRC}) + add_library(verovio STATIC ${all_SRC}) ##################### # Command-line tool # diff --git a/data/Gootville.xml b/data/Gootville.xml index c6c16d27491..66b3d6c07e3 100644 --- a/data/Gootville.xml +++ b/data/Gootville.xml @@ -1,74 +1,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -112,218 +66,61 @@ - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -367,27 +164,13 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + @@ -395,15 +178,9 @@ - - - - - - - - - + + + @@ -416,22 +193,10 @@ - - - - - - - - - - - - - - - - - - + + + + + + \ No newline at end of file diff --git a/emscripten/buildToolkit b/emscripten/buildToolkit index e3dc7dcf492..3a2f1304d96 100755 --- a/emscripten/buildToolkit +++ b/emscripten/buildToolkit @@ -122,6 +122,7 @@ if ($wasmQ) { $LFLAGS = " -s WASM=1"; $LFLAGS .= " -s INITIAL_MEMORY=512MB"; $LFLAGS .= " -s STACK_SIZE=256MB"; + $LFLAGS .= " -s ALLOW_MEMORY_GROWTH"; $LFLAGS .= " -s SINGLE_FILE=1"; $LFLAGS .= " -s INCOMING_MODULE_JS_API=onRuntimeInitialized"; if ($debug) { @@ -186,52 +187,7 @@ $cmake .= " -DNO_MUSICXML_SUPPORT=ON" if ($nomusicxml); my $embed = "--embed-file $DATA_DIR/"; my $output = "-o $BUILD_DIR/verovio.js"; -my $exports = "-s EXPORTED_FUNCTIONS=\"["; -$exports .= "'_enableLog',"; -$exports .= "'_enableLogToBuffer',"; -$exports .= "'_vrvToolkit_constructor',"; -$exports .= "'_vrvToolkit_destructor',"; -$exports .= "'_vrvToolkit_edit',"; -$exports .= "'_vrvToolkit_editInfo',"; -$exports .= "'_vrvToolkit_getAvailableOptions',"; -$exports .= "'_vrvToolkit_getDefaultOptions',"; -$exports .= "'_vrvToolkit_getDescriptiveFeatures',"; -$exports .= "'_vrvToolkit_getElementAttr',"; -$exports .= "'_vrvToolkit_getElementsAtTime',"; -$exports .= "'_vrvToolkit_getExpansionIdsForElement',"; -$exports .= "'_vrvToolkit_getHumdrum',"; -$exports .= "'_vrvToolkit_convertHumdrumToHumdrum',"; -$exports .= "'_vrvToolkit_convertHumdrumToMIDI',"; -$exports .= "'_vrvToolkit_convertMEIToHumdrum',"; -$exports .= "'_vrvToolkit_getLog',"; -$exports .= "'_vrvToolkit_getMEI',"; -$exports .= "'_vrvToolkit_getMIDIValuesForElement',"; -$exports .= "'_vrvToolkit_getNotatedIdForElement',"; -$exports .= "'_vrvToolkit_getOptions',"; -$exports .= "'_vrvToolkit_getPageCount',"; -$exports .= "'_vrvToolkit_getPageWithElement',"; -$exports .= "'_vrvToolkit_getTimeForElement',"; -$exports .= "'_vrvToolkit_getTimesForElement',"; -$exports .= "'_vrvToolkit_getVersion',"; -$exports .= "'_vrvToolkit_loadData',"; -$exports .= "'_vrvToolkit_loadZipDataBase64',"; -$exports .= "'_vrvToolkit_loadZipDataBuffer',"; -$exports .= "'_vrvToolkit_redoLayout',"; -$exports .= "'_vrvToolkit_redoPagePitchPosLayout',"; -$exports .= "'_vrvToolkit_renderData',"; -$exports .= "'_vrvToolkit_renderToExpansionMap',"; -$exports .= "'_vrvToolkit_renderToMIDI',"; -$exports .= "'_vrvToolkit_renderToPAE',"; -$exports .= "'_vrvToolkit_renderToSVG',"; -$exports .= "'_vrvToolkit_renderToTimemap',"; -$exports .= "'_vrvToolkit_resetOptions',"; -$exports .= "'_vrvToolkit_resetXmlIdSeed',"; -$exports .= "'_vrvToolkit_select',"; -$exports .= "'_vrvToolkit_setOptions',"; -$exports .= "'_vrvToolkit_validatePAE',"; -$exports .= "'_malloc',"; -$exports .= "'_free'"; -$exports .= "]\""; +my $exports = "-s EXPORTED_FUNCTIONS=\@exports.txt"; my $extra_exports = "-s EXPORTED_RUNTIME_METHODS='[\"cwrap\", \"HEAPU8\"]'"; diff --git a/emscripten/exports.txt b/emscripten/exports.txt new file mode 100644 index 00000000000..48f3977c61c --- /dev/null +++ b/emscripten/exports.txt @@ -0,0 +1,44 @@ +_enableLog +_enableLogToBuffer +_vrvToolkit_constructor +_vrvToolkit_destructor +_vrvToolkit_edit +_vrvToolkit_editInfo +_vrvToolkit_getAvailableOptions +_vrvToolkit_getDefaultOptions +_vrvToolkit_getDescriptiveFeatures +_vrvToolkit_getElementAttr +_vrvToolkit_getElementsAtTime +_vrvToolkit_getExpansionIdsForElement +_vrvToolkit_getHumdrum +_vrvToolkit_convertHumdrumToHumdrum +_vrvToolkit_convertHumdrumToMIDI +_vrvToolkit_convertMEIToHumdrum +_vrvToolkit_getLog +_vrvToolkit_getMEI +_vrvToolkit_getMIDIValuesForElement +_vrvToolkit_getNotatedIdForElement +_vrvToolkit_getOptions +_vrvToolkit_getPageCount +_vrvToolkit_getPageWithElement +_vrvToolkit_getTimeForElement +_vrvToolkit_getTimesForElement +_vrvToolkit_getVersion +_vrvToolkit_loadData +_vrvToolkit_loadZipDataBase64 +_vrvToolkit_loadZipDataBuffer +_vrvToolkit_redoLayout +_vrvToolkit_redoPagePitchPosLayout +_vrvToolkit_renderData +_vrvToolkit_renderToExpansionMap +_vrvToolkit_renderToMIDI +_vrvToolkit_renderToPAE +_vrvToolkit_renderToSVG +_vrvToolkit_renderToTimemap +_vrvToolkit_resetOptions +_vrvToolkit_resetXmlIdSeed +_vrvToolkit_select +_vrvToolkit_setOptions +_vrvToolkit_validatePAE +_malloc +_free \ No newline at end of file diff --git a/fonts/Gootville/gootville_metadata.json b/fonts/Gootville/gootville_metadata.json index 565f8ab9d00..dab76408d6a 100644 --- a/fonts/Gootville/gootville_metadata.json +++ b/fonts/Gootville/gootville_metadata.json @@ -1,37927 +1,2927 @@ { - "fontName": "Gootville", - "fontVersion": 1.2, - "engravingDefaults": { - "arrowShaftThickness": 0.16, - "barlineSeparation": 0.4, - "beamSpacing": 0.25, - "beamThickness": 0.5, - "bracketThickness": 0.5, - "dashedBarlineDashLength": 0.5, - "dashedBarlineGapLength": 0.25, - "dashedBarlineThickness": 0.16, - "hairpinThickness": 0.16, - "legerLineExtension": 0.4, - "legerLineThickness": 0.16, - "lyricLineThickness": 0.16, - "octaveLineThickness": 0.16, - "pedalLineThickness": 0.16, - "repeatBarlineDotSeparation": 0.16, - "repeatEndingLineThickness": 0.16, - "slurEndpointThickness": 0.1, - "slurMidpointThickness": 0.22, - "staffLineThickness": 0.13, - "stemThickness": 0.12, - "subBracketThickness": 0.16, - "textEnclosureThickness": 0.16, - "thickBarlineThickness": 0.5, - "thinBarlineThickness": 0.16, - "tieEndpointThickness": 0.1, - "tieMidpointThickness": 0.22, + "arrowShaftThickness": 0.16, + "barlineSeparation": 0.4, + "beamSpacing": 0.25, + "beamThickness": 0.5, + "bracketThickness": 0.5, + "dashedBarlineDashLength": 0.5, + "dashedBarlineGapLength": 0.25, + "dashedBarlineThickness": 0.16, + "hBarThickness": 1.0, + "hairpinThickness": 0.16, + "legerLineExtension": 0.27, + "legerLineThickness": 0.16, + "lyricLineThickness": 0.16, + "octaveLineThickness": 0.16, + "pedalLineThickness": 0.16, + "repeatBarlineDotSeparation": 0.18, + "repeatEndingLineThickness": 0.16, + "slurEndpointThickness": 0.1, + "slurMidpointThickness": 0.22, + "staffLineThickness": 0.08, + "stemThickness": 0.076, + "subBracketThickness": 0.16, + "textEnclosureThickness": 0.16, + "thickBarlineThickness": 0.5, + "thinBarlineThickness": 0.15, + "tieEndpointThickness": 0.1, + "tieMidpointThickness": 0.22, "tupletBracketThickness": 0.16 - }, - + }, + "fontName": "Gootville", + "fontVersion": "1.2", "glyphBBoxes": { - "4stringTabClef": { + "6stringTabClef": { "bBoxNE": [ - 1.088, - 2.016 - ], + 1.64, + 3.0 + ], "bBoxSW": [ - -0.012, - -2.032 + 0.0, + -3.0 ] - }, - "4stringTabClefSerif": { + }, + "accdnCombDot": { "bBoxNE": [ - 1.296, - 2.008 - ], + 0.24, + 0.48 + ], "bBoxSW": [ - 0.0, - -2.008 + -0.24, + 0.0 ] - }, - "4stringTabClefTall": { + }, + "accdnCombLH2RanksEmpty": { "bBoxNE": [ - 1.272, - 2.344 - ], + 1.04, + 2.08 + ], "bBoxSW": [ - 0.0, - -2.344 + -1.04, + 0.0 ] - }, - "6stringTabClef": { + }, + "accdnCombLH3RanksEmptySquare": { "bBoxNE": [ - 1.632, - 3.056 - ], + 1.04, + 3.08 + ], "bBoxSW": [ - -0.012, - -2.992 + -1.04, + 0.0 ] - }, - "6stringTabClefSerif": { + }, + "accdnCombRH3RanksEmpty": { "bBoxNE": [ - 1.948, - 3.02 - ], + 1.54, + 3.08 + ], "bBoxSW": [ - 0.0, - -3.016 + -1.54, + 0.0 ] - }, - "6stringTabClefTall": { + }, + "accdnCombRH4RanksEmpty": { "bBoxNE": [ - 2.164, - 4.028 - ], + 2.04, + 4.08 + ], "bBoxSW": [ - -0.024, - -4.02 + -2.04, + 0.0 ] - }, - "accSagittal11LargeDiesisDown": { + }, + "accidentalBakiyeFlat": { "bBoxNE": [ - 1.376, - 1.436 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.516, + -0.66 ] - }, - "accSagittal11LargeDiesisUp": { + }, + "accidentalBakiyeSharp": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.944, + 1.504 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.504 ] - }, - "accSagittal11MediumDiesisDown": { + }, + "accidentalBuyukMucennebFlat": { "bBoxNE": [ - 1.376, - 1.436 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.516, + -0.66 ] - }, - "accSagittal11MediumDiesisUp": { + }, + "accidentalBuyukMucennebSharp": { "bBoxNE": [ - 1.376, - 0.688 - ], + 1.144, + 1.504 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.504 ] - }, - "accSagittal11v19LargeDiesisDown": { + }, + "accidentalDoubleFlat": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.42, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.06, + -0.66 ] - }, - "accSagittal11v19LargeDiesisUp": { + }, + "accidentalDoubleFlatReversed": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.42, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.06, + -0.66 ] - }, - "accSagittal11v19MediumDiesisDown": { + }, + "accidentalDoubleSharp": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.08, + 0.54 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.54 ] - }, - "accSagittal11v19MediumDiesisUp": { + }, + "accidentalFilledReversedFlatArrowDown": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.316, + -1.488 ] - }, - "accSagittal11v49CommaDown": { + }, + "accidentalFilledReversedFlatArrowUp": { "bBoxNE": [ - 0.748, - 1.436 - ], + 0.74, + 2.492 + ], "bBoxSW": [ - -0.004, - -0.688 + -0.316, + -0.66 ] - }, - "accSagittal11v49CommaUp": { + }, + "accidentalFlat": { "bBoxNE": [ - 0.748, - 0.688 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.06, + -0.66 ] - }, - "accSagittal143CommaDown": { + }, + "accidentalKomaFlat": { "bBoxNE": [ - 0.624, - 1.436 - ], + 0.8, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.66 ] - }, - "accSagittal143CommaUp": { + }, + "accidentalKomaSharp": { "bBoxNE": [ - 0.624, - 0.688 - ], + 0.552, + 1.456 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.456 ] - }, - "accSagittal17CommaDown": { + }, + "accidentalKoron": { "bBoxNE": [ - 1.128, - 1.436 - ], + 1.016, + 0.4 + ], "bBoxSW": [ - 0.004, - -0.688 + 0.0, + -1.644 ] - }, - "accSagittal17CommaUp": { + }, + "accidentalKucukMucennebFlat": { "bBoxNE": [ - 1.124, - 0.688 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.06, + -0.66 ] - }, - "accSagittal17KleismaDown": { + }, + "accidentalKucukMucennebSharp": { "bBoxNE": [ - 0.624, - 1.436 - ], + 0.752, + 1.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.456 ] - }, - "accSagittal17KleismaUp": { + }, + "accidentalNatural": { "bBoxNE": [ - 0.624, - 0.688 - ], + 0.704, + 1.348 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.348 ] - }, - "accSagittal19CommaDown": { + }, + "accidentalNaturalReversed": { "bBoxNE": [ - 1.128, - 1.44 - ], + 0.704, + 1.348 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -1.348 ] - }, - "accSagittal19CommaUp": { + }, + "accidentalParensLeft": { "bBoxNE": [ - 1.124, - 0.688 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.068 ] - }, - "accSagittal19SchismaDown": { + }, + "accidentalParensRight": { "bBoxNE": [ - 0.5, - 1.436 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -1.068 ] - }, - "accSagittal19SchismaUp": { + }, + "accidentalQuarterToneFlatArrowUp": { "bBoxNE": [ - 0.5, - 0.688 - ], + 0.74, + 2.492 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.316, + -0.66 ] - }, - "accSagittal23CommaDown": { + }, + "accidentalQuarterToneFlatFilledReversed": { "bBoxNE": [ - 0.748, - 1.436 - ], + 0.8, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.66 ] - }, - "accSagittal23CommaUp": { + }, + "accidentalQuarterToneFlatNaturalArrowDown": { "bBoxNE": [ - 0.748, - 0.688 - ], + 0.96, + 1.348 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -2.0 ] - }, - "accSagittal23SmallDiesisDown": { + }, + "accidentalQuarterToneFlatPenderecki": { "bBoxNE": [ - 1.376, - 1.436 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.06, + -0.66 ] - }, - "accSagittal23SmallDiesisUp": { + }, + "accidentalQuarterToneFlatStein": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.8, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.66 ] - }, - "accSagittal25SmallDiesisDown": { + }, + "accidentalQuarterToneSharpArrowDown": { "bBoxNE": [ - 1.0, - 1.436 - ], + 0.944, + 1.504 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.04, + -2.368 ] - }, - "accSagittal25SmallDiesisUp": { + }, + "accidentalQuarterToneSharpBusotti": { "bBoxNE": [ - 1.0, - 0.688 - ], + 0.552, + 1.456 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.456 ] - }, - "accSagittal35LargeDiesisDown": { + }, + "accidentalQuarterToneSharpNaturalArrowUp": { "bBoxNE": [ - 1.5, - 1.436 - ], + 0.96, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.348 ] - }, - "accSagittal35LargeDiesisUp": { + }, + "accidentalQuarterToneSharpStein": { "bBoxNE": [ - 1.5, - 0.688 - ], + 0.552, + 1.456 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.456 ] - }, - "accSagittal35MediumDiesisDown": { + }, + "accidentalReversedFlatArrowDown": { "bBoxNE": [ - 1.124, - 1.436 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.316, + -1.488 ] - }, - "accSagittal35MediumDiesisUp": { + }, + "accidentalReversedFlatArrowUp": { "bBoxNE": [ - 1.124, - 0.688 - ], + 0.74, + 2.492 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.316, + -0.66 ] - }, - "accSagittal49LargeDiesisDown": { + }, + "accidentalSharp": { "bBoxNE": [ - 1.124, - 1.436 - ], + 0.944, + 1.504 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.504 ] - }, - "accSagittal49LargeDiesisUp": { + }, + "accidentalSharpOneHorizontalStroke": { "bBoxNE": [ - 1.124, - 0.688 - ], + 0.944, + 1.504 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.504 ] - }, - "accSagittal49MediumDiesisDown": { + }, + "accidentalSharpReversed": { "bBoxNE": [ - 1.0, - 1.436 - ], + 0.944, + 1.504 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.504 ] - }, - "accSagittal49MediumDiesisUp": { + }, + "accidentalSori": { "bBoxNE": [ - 1.0, - 0.688 - ], + 1.48, + 1.164 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.164 ] - }, - "accSagittal49SmallDiesisDown": { + }, + "accidentalThreeQuarterTonesFlatArrowDown": { "bBoxNE": [ - 1.124, - 1.436 - ], + 0.74, + 1.84 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.316, + -1.488 ] - }, - "accSagittal49SmallDiesisUp": { + }, + "accidentalThreeQuarterTonesFlatZimmermann": { "bBoxNE": [ - 1.124, - 0.688 - ], + 1.784, + 1.84 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.66 ] - }, - "accSagittal55CommaDown": { + }, + "accidentalThreeQuarterTonesSharpArrowUp": { "bBoxNE": [ - 0.876, - 1.436 - ], + 0.984, + 2.368 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.504 ] - }, - "accSagittal55CommaUp": { + }, + "accidentalThreeQuarterTonesSharpBusotti": { "bBoxNE": [ - 0.876, - 0.688 - ], + 1.336, + 1.552 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.552 ] - }, - "accSagittal5CommaDown": { + }, + "accidentalThreeQuarterTonesSharpStein": { "bBoxNE": [ - 0.624, - 1.436 - ], + 1.336, + 1.552 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.552 ] - }, - "accSagittal5CommaUp": { + }, + "arrowheadBlackDown": { "bBoxNE": [ - 0.624, - 0.688 - ], + 0.912, + 1.104 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v11SmallDiesisDown": { + }, + "arrowheadBlackLeft": { "bBoxNE": [ - 1.252, - 1.436 - ], + 1.104, + 0.912 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittal5v11SmallDiesisUp": { + }, + "arrowheadBlackRight": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.104, + 0.912 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v13LargeDiesisDown": { + }, + "arrowheadBlackUp": { "bBoxNE": [ - 1.752, - 1.44 - ], + 0.912, + 1.104 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + 0.0 ] - }, - "accSagittal5v13LargeDiesisUp": { + }, + "articAccentAbove": { "bBoxNE": [ - 1.748, - 0.688 - ], + 1.768, + 1.016 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v13MediumDiesisDown": { + }, + "articAccentBelow": { "bBoxNE": [ - 1.0, - 1.436 - ], + 1.768, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.016 ] - }, - "accSagittal5v13MediumDiesisUp": { + }, + "articMarcatoAbove": { "bBoxNE": [ - 1.0, - 0.688 - ], + 1.008, + 1.648 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v19CommaDown": { + }, + "articMarcatoBelow": { "bBoxNE": [ - 0.624, - 1.436 - ], + 1.008, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.648 ] - }, - "accSagittal5v19CommaUp": { + }, + "articStaccatissimoAbove": { "bBoxNE": [ - 0.624, - 0.688 - ], + 0.656, + 0.792 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v23SmallDiesisDown": { + }, + "articStaccatissimoBelow": { "bBoxNE": [ - 1.248, - 1.436 - ], + 0.656, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.792 ] - }, - "accSagittal5v23SmallDiesisUp": { + }, + "articStaccatissimoWedgeAbove": { "bBoxNE": [ - 1.248, - 0.688 - ], + 0.656, + 0.792 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v49MediumDiesisDown": { + }, + "articStaccatissimoWedgeBelow": { "bBoxNE": [ - 1.376, - 1.44 - ], + 0.656, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -0.792 ] - }, - "accSagittal5v49MediumDiesisUp": { + }, + "articStaccatoAbove": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.4, + 0.4 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal5v7KleismaDown": { + }, + "articStaccatoBelow": { "bBoxNE": [ - 0.628, - 1.436 - ], + 0.4, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.4 ] - }, - "accSagittal5v7KleismaUp": { + }, + "articStressAbove": { "bBoxNE": [ - 0.624, - 0.684 - ], + 0.472, + 1.116 + ], "bBoxSW": [ - 0.0, - -1.44 + 0.0, + 0.0 ] - }, - "accSagittal7CommaDown": { + }, + "articStressBelow": { "bBoxNE": [ - 0.624, - 1.436 - ], + 0.472, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.116 ] - }, - "accSagittal7CommaUp": { + }, + "articTenutoAbove": { "bBoxNE": [ - 0.624, - 0.688 - ], + 1.216, + 0.12 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal7v11CommaDown": { + }, + "articTenutoBelow": { "bBoxNE": [ - 0.748, - 1.436 - ], + 1.216, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.12 ] - }, - "accSagittal7v11CommaUp": { + }, + "articTenutoStaccatoAbove": { "bBoxNE": [ - 0.748, - 0.688 - ], + 1.216, + 0.78 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + 0.0 ] - }, - "accSagittal7v11KleismaDown": { + }, + "articTenutoStaccatoBelow": { "bBoxNE": [ - 0.88, - 1.436 - ], + 1.216, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -0.78 ] - }, - "accSagittal7v11KleismaUp": { + }, + "augmentationDot": { "bBoxNE": [ - 0.876, - 0.684 - ], + 0.48, + 0.24 + ], "bBoxSW": [ - -0.004, - -1.436 + 0.0, + -0.24 ] - }, - "accSagittal7v19CommaDown": { + }, + "bracketBottom": { "bBoxNE": [ - 1.0, - 1.44 - ], + 1.656, + 0.308 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -0.652 ] - }, - "accSagittal7v19CommaUp": { + }, + "bracketTop": { "bBoxNE": [ - 1.0, - 0.688 - ], + 1.656, + 0.652 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.308 ] - }, - "accSagittalAcute": { + }, + "brassMuteClosed": { "bBoxNE": [ - 0.5, + 1.0, 0.5 - ], + ], "bBoxSW": [ - 0.0, - -0.248 + 0.0, + -0.5 ] - }, - "accSagittalDoubleFlat": { + }, + "brassMuteOpen": { "bBoxNE": [ - 1.876, - 1.436 - ], + 1.0, + 0.5 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.5 ] - }, - "accSagittalDoubleFlat11v49CUp": { + }, + "breathMarkComma": { "bBoxNE": [ - 1.624, - 1.436 - ], + 0.568, + 1.048 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalDoubleFlat143CUp": { + }, + "cClef": { "bBoxNE": [ - 1.876, - 1.436 - ], + 2.568, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -2.0 ] - }, - "accSagittalDoubleFlat17CUp": { + }, + "cClef8vb": { "bBoxNE": [ - 1.748, - 1.436 - ], + 2.568, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -2.976 ] - }, - "accSagittalDoubleFlat17kUp": { + }, + "caesura": { "bBoxNE": [ - 1.748, - 1.436 - ], + 1.824, + 2.08 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalDoubleFlat19CUp": { + }, + "caesuraCurved": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.48, + 2.052 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalDoubleFlat19sUp": { + }, + "coda": { "bBoxNE": [ - 1.748, - 1.436 - ], + 1.856, + 1.264 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.264 ] - }, - "accSagittalDoubleFlat23CUp": { + }, + "codaSquare": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.856, + 1.264 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.264 ] - }, - "accSagittalDoubleFlat23SUp": { + }, + "dynamicFF": { "bBoxNE": [ - 1.5, - 1.436 - ], + 2.652, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat25SUp": { + }, + "dynamicFFF": { "bBoxNE": [ - 1.62, - 1.436 - ], + 3.76, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.684 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat49SUp": { + }, + "dynamicFFFF": { "bBoxNE": [ - 1.5, - 1.436 - ], + 4.868, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat55CUp": { + }, + "dynamicFFFFF": { "bBoxNE": [ - 1.5, - 1.436 - ], + 5.976, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat5CUp": { + }, + "dynamicFFFFFF": { "bBoxNE": [ - 1.624, - 1.436 - ], + 7.084, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat5v11SUp": { + }, + "dynamicForte": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.544, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat5v19CUp": { + }, + "dynamicFortePiano": { "bBoxNE": [ - 1.5, - 1.436 - ], + 2.492, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.576, + -0.72 ] - }, - "accSagittalDoubleFlat5v23SUp": { + }, + "dynamicForzando": { "bBoxNE": [ - 1.624, - 1.436 - ], + 2.268, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.684 + -0.576, + -0.588 ] - }, - "accSagittalDoubleFlat5v7kUp": { + }, + "dynamicMF": { "bBoxNE": [ - 1.624, - 1.436 - ], + 3.12, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.164, + -0.588 ] - }, - "accSagittalDoubleFlat7CUp": { + }, + "dynamicMP": { "bBoxNE": [ - 1.5, - 1.436 - ], + 2.96, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.164, + -0.72 ] - }, - "accSagittalDoubleFlat7v11CUp": { + }, + "dynamicMezzo": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.676, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.164, + -0.08 ] - }, - "accSagittalDoubleFlat7v11kUp": { + }, + "dynamicNiente": { "bBoxNE": [ - 1.748, - 1.436 - ], + 1.196, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.164, + -0.08 ] - }, - "accSagittalDoubleFlat7v19CUp": { + }, + "dynamicPF": { "bBoxNE": [ - 1.5, - 1.436 - ], + 2.928, + 1.8 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp": { + }, + "dynamicPP": { "bBoxNE": [ - 1.876, - 0.688 - ], + 2.768, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp11v49CDown": { + }, + "dynamicPPP": { "bBoxNE": [ - 1.624, - 0.688 - ], + 4.152, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp143CDown": { + }, + "dynamicPPPP": { "bBoxNE": [ - 1.876, - 0.688 - ], + 5.536, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp17CDown": { + }, + "dynamicPPPPP": { "bBoxNE": [ - 1.748, - 0.684 - ], + 6.92, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp17kDown": { + }, + "dynamicPPPPPP": { "bBoxNE": [ - 1.748, - 0.688 - ], + 8.304, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp19CDown": { + }, + "dynamicPiano": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.384, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.288, + -0.72 ] - }, - "accSagittalDoubleSharp19sDown": { + }, + "dynamicRinforzando": { "bBoxNE": [ - 1.748, - 0.688 - ], + 1.172, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.068, + -0.004 ] - }, - "accSagittalDoubleSharp23CDown": { + }, + "dynamicRinforzando1": { "bBoxNE": [ - 1.624, - 0.688 - ], + 2.716, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.068, + -0.588 ] - }, - "accSagittalDoubleSharp23SDown": { + }, + "dynamicRinforzando2": { "bBoxNE": [ - 1.5, - 0.688 - ], + 3.44, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.068, + -0.588 ] - }, - "accSagittalDoubleSharp25SDown": { + }, + "dynamicSforzando": { "bBoxNE": [ - 1.624, - 0.684 - ], + 0.904, + 1.088 + ], "bBoxSW": [ - 0.004, - -1.436 + 0.0, + -0.088 ] - }, - "accSagittalDoubleSharp49SDown": { + }, + "dynamicSforzando1": { "bBoxNE": [ - 1.5, - 0.684 - ], + 2.448, + 1.8 + ], "bBoxSW": [ - 0.004, - -1.44 + 0.0, + -0.588 ] - }, - "accSagittalDoubleSharp55CDown": { + }, + "dynamicSforzandoPianissimo": { "bBoxNE": [ - 1.5, - 0.688 - ], + 4.78, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalDoubleSharp5CDown": { + }, + "dynamicSforzandoPiano": { "bBoxNE": [ - 1.624, - 0.688 - ], + 3.396, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalDoubleSharp5v11SDown": { + }, + "dynamicSforzato": { "bBoxNE": [ - 1.624, - 0.688 - ], + 3.172, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.588 ] - }, - "accSagittalDoubleSharp5v19CDown": { + }, + "dynamicSforzatoFF": { "bBoxNE": [ - 1.5, - 0.688 - ], + 4.28, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.588 ] - }, - "accSagittalDoubleSharp5v23SDown": { + }, + "dynamicSforzatoPiano": { "bBoxNE": [ - 1.624, - 0.688 - ], + 4.556, + 1.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalDoubleSharp5v7kDown": { + }, + "dynamicZ": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.16, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.096, + 0.0 ] - }, - "accSagittalDoubleSharp7CDown": { + }, + "fClef": { "bBoxNE": [ - 1.5, - 0.688 - ], + 2.656, + 1.016 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -2.184 ] - }, - "accSagittalDoubleSharp7v11CDown": { + }, + "fClef15ma": { "bBoxNE": [ - 1.5, - 0.688 - ], + 2.656, + 1.992 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -2.184 ] - }, - "accSagittalDoubleSharp7v11kDown": { + }, + "fClef15mb": { "bBoxNE": [ - 1.748, - 0.688 - ], + 2.656, + 1.016 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -3.16 ] - }, - "accSagittalDoubleSharp7v19CDown": { + }, + "fClef8va": { "bBoxNE": [ - 1.5, - 0.688 - ], + 2.656, + 1.992 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -2.184 ] - }, - "accSagittalFlat": { + }, + "fClef8vb": { "bBoxNE": [ - 1.624, - 1.436 - ], + 2.656, + 1.016 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.16 ] - }, - "accSagittalFlat11LDown": { + }, + "fermataAbove": { "bBoxNE": [ - 1.876, - 1.436 - ], + 2.6, + 1.416 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat11MDown": { + }, + "fermataBelow": { "bBoxNE": [ - 1.876, - 1.436 - ], + 2.6, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.416 ] - }, - "accSagittalFlat11v19LDown": { + }, + "fermataLongAbove": { "bBoxNE": [ - 1.748, - 1.436 - ], + 2.288, + 1.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat11v19MDown": { + }, + "fermataLongBelow": { "bBoxNE": [ - 1.748, - 1.436 - ], + 2.288, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.456 ] - }, - "accSagittalFlat11v49CDown": { + }, + "fermataShortAbove": { "bBoxNE": [ - 1.248, - 1.436 - ], + 2.324, + 1.88 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat11v49CUp": { + }, + "fermataShortBelow": { "bBoxNE": [ - 1.376, - 1.436 - ], + 2.324, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.88 ] - }, - "accSagittalFlat143CDown": { + }, + "fermataVeryLongAbove": { "bBoxNE": [ - 1.248, - 1.436 - ], + 2.288, + 1.664 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + 0.0 ] - }, - "accSagittalFlat143CUp": { + }, + "fermataVeryLongBelow": { "bBoxNE": [ - 1.624, - 1.436 - ], + 2.288, + 0.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -1.664 ] - }, - "accSagittalFlat17CDown": { + }, + "flag128thDown": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.256, + 3.656 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -2.456 ] - }, - "accSagittalFlat17CUp": { + }, + "flag128thUp": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.136, + 2.576 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.448 ] - }, - "accSagittalFlat17kDown": { + }, + "flag16thDown": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.256, + 3.608 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.056 ] - }, - "accSagittalFlat17kUp": { + }, + "flag16thUp": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.136, + 0.056 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.52 ] - }, - "accSagittalFlat19CDown": { + }, + "flag32ndDown": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.256, + 3.664 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.816 ] - }, - "accSagittalFlat19CUp": { + }, + "flag32ndUp": { "bBoxNE": [ - 1.124, - 1.436 - ], + 1.136, + 0.936 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.456 ] - }, - "accSagittalFlat19sDown": { + }, + "flag64thDown": { "bBoxNE": [ - 1.128, - 1.436 - ], + 1.256, + 3.6 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -1.696 ] - }, - "accSagittalFlat19sUp": { + }, + "flag64thUp": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.136, + 1.696 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.512 ] - }, - "accSagittalFlat23CDown": { + }, + "flag8thDown": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.256, + 3.024 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.056 ] - }, - "accSagittalFlat23CUp": { + }, + "flag8thUp": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.136, + 0.056 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.024 ] - }, - "accSagittalFlat23SDown": { + }, + "gClef": { "bBoxNE": [ - 1.876, - 1.436 - ], + 2.504, + 4.32 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -2.532 ] - }, - "accSagittalFlat23SUp": { + }, + "gClef15ma": { "bBoxNE": [ - 1.0, - 1.436 - ], + 2.504, + 5.296 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -2.532 ] - }, - "accSagittalFlat25SDown": { + }, + "gClef15mb": { "bBoxNE": [ - 1.5, - 1.436 - ], + 2.504, + 4.32 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.508 ] - }, - "accSagittalFlat25SUp": { + }, + "gClef8va": { "bBoxNE": [ - 1.38, - 1.436 - ], + 2.504, + 5.296 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -2.532 ] - }, - "accSagittalFlat35LDown": { + }, + "gClef8vb": { "bBoxNE": [ - 2.0, - 1.436 - ], + 2.504, + 4.32 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.508 ] - }, - "accSagittalFlat35MDown": { + }, + "gClef8vbParens": { "bBoxNE": [ - 1.624, - 1.436 - ], + 2.504, + 4.32 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -3.628 ] - }, - "accSagittalFlat49LDown": { + }, + "guitarFadeIn": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.448, + 1.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat49MDown": { + }, + "guitarFadeOut": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.448, + 1.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat49SDown": { + }, + "guitarVibratoStroke": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.032, + 0.48 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.048, + 0.0 ] - }, - "accSagittalFlat49SUp": { + }, + "guitarVolumeSwell": { "bBoxNE": [ - 1.0, - 1.436 - ], + 2.896, + 1.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat55CDown": { + }, + "guitarWideVibratoStroke": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.032, + 0.48 + ], "bBoxSW": [ - 0.0, - -0.688 + -0.048, + 0.0 ] - }, - "accSagittalFlat55CUp": { + }, + "keyboardPedalD": { "bBoxNE": [ - 1.0, - 1.436 - ], + 1.36, + 1.728 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat5CDown": { + }, + "keyboardPedalE": { "bBoxNE": [ - 1.248, - 1.436 - ], + 0.852, + 1.1 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat5CUp": { + }, + "keyboardPedalP": { "bBoxNE": [ - 1.124, - 1.436 - ], + 1.616, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat5v11SDown": { + }, + "keyboardPedalPed": { "bBoxNE": [ - 1.748, - 1.436 - ], + 3.128, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.0 ] - }, - "accSagittalFlat5v11SUp": { + }, + "keyboardPedalUp": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.72, + 2.0 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.264 ] - }, - "accSagittalFlat5v13LDown": { + }, + "luteFingeringRHFirst": { "bBoxNE": [ - 2.0, - 1.44 - ], + 0.304, + 0.728 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + 0.424 ] - }, - "accSagittalFlat5v13MDown": { + }, + "luteFingeringRHSecond": { "bBoxNE": [ - 1.5, - 1.436 - ], + 0.8, + 0.728 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.424 ] - }, - "accSagittalFlat5v19CDown": { + }, + "luteFingeringRHThird": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.296, + 0.728 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + 0.424 ] - }, - "accSagittalFlat5v19CUp": { + }, + "luteFingeringRHThumb": { "bBoxNE": [ - 1.252, - 1.436 - ], + 0.12, + 1.216 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + 0.0 ] - }, - "accSagittalFlat5v23SDown": { + }, + "noteShapeDiamondBlack": { "bBoxNE": [ - 1.624, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat5v23SUp": { + }, + "noteShapeDiamondWhite": { "bBoxNE": [ - 1.124, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat5v49MDown": { + }, + "noteShapeMoonBlack": { "bBoxNE": [ - 1.876, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat5v7kDown": { + }, + "noteShapeMoonWhite": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - -0.004, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat5v7kUp": { + }, + "noteShapeRoundBlack": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.264, + 0.54 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.54 ] - }, - "accSagittalFlat7CDown": { + }, + "noteShapeRoundWhite": { "bBoxNE": [ - 1.248, - 1.44 - ], + 1.264, + 0.54 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -0.54 ] - }, - "accSagittalFlat7CUp": { + }, + "noteShapeSquareBlack": { "bBoxNE": [ - 1.0, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v11CDown": { + }, + "noteShapeSquareWhite": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v11CUp": { + }, + "noteShapeTriangleLeftBlack": { "bBoxNE": [ - 1.376, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v11kDown": { + }, + "noteShapeTriangleLeftWhite": { "bBoxNE": [ - 1.62, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.684 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v11kUp": { + }, + "noteShapeTriangleRightBlack": { "bBoxNE": [ - 1.248, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v19CDown": { + }, + "noteShapeTriangleRightWhite": { "bBoxNE": [ - 1.5, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalFlat7v19CUp": { + }, + "noteShapeTriangleRoundBlack": { "bBoxNE": [ - 1.0, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalGrave": { + }, + "noteShapeTriangleRoundWhite": { "bBoxNE": [ - 0.5, - 0.248 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.5 + 0.0, + -0.456 ] - }, - "accSagittalShaftDown": { + }, + "noteShapeTriangleUpBlack": { "bBoxNE": [ - 0.124, - 1.436 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -0.688 + 0.0, + -0.456 ] - }, - "accSagittalShaftUp": { + }, + "noteShapeTriangleUpWhite": { "bBoxNE": [ - 0.124, - 0.688 - ], + 1.32, + 0.456 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.456 ] - }, - "accSagittalSharp": { + }, + "noteheadBlack": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.264, + 0.54 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.54 ] - }, - "accSagittalSharp11LUp": { + }, + "noteheadCircleX": { "bBoxNE": [ - 1.876, - 0.688 - ], + 1.44, + 0.72 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalSharp11MUp": { + }, + "noteheadCircleXDoubleWhole": { "bBoxNE": [ - 1.876, - 0.688 - ], + 2.288, + 0.72 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalSharp11v19LUp": { + }, + "noteheadCircleXHalf": { "bBoxNE": [ - 1.748, - 0.688 - ], + 1.44, + 0.72 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalSharp11v19MUp": { + }, + "noteheadCircleXWhole": { "bBoxNE": [ - 1.748, - 0.688 - ], + 1.44, + 0.72 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.72 ] - }, - "accSagittalSharp11v49CDown": { + }, + "noteheadDiamondBlack": { "bBoxNE": [ - 1.376, - 0.688 - ], + 1.288, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp11v49CUp": { + }, + "noteheadDiamondBlackOld": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.288, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp143CDown": { + }, + "noteheadDiamondBlackWide": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.848, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp143CUp": { + }, + "noteheadDiamondHalf": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.288, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp17CDown": { + }, + "noteheadDiamondHalfOld": { "bBoxNE": [ - 1.5, - 0.684 - ], + 1.288, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp17CUp": { + }, + "noteheadDiamondHalfWide": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.848, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp17kDown": { + }, + "noteheadDiamondWhite": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.288, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp17kUp": { + }, + "noteheadDiamondWhiteWide": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.848, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp19CDown": { + }, + "noteheadDiamondWhole": { "bBoxNE": [ - 1.128, - 0.688 - ], + 1.848, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp19CUp": { + }, + "noteheadDiamondWholeOld": { "bBoxNE": [ - 1.5, - 0.688 - ], + 1.848, + 0.556 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.556 ] - }, - "accSagittalSharp19sDown": { + }, + "noteheadDoubleWhole": { "bBoxNE": [ - 1.624, - 0.688 - ], + 2.664, + 0.708 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.708 ] - }, - "accSagittalSharp19sUp": { + }, + "noteheadDoubleWholeSquare": { "bBoxNE": [ - 1.124, - 0.688 - ], + 2.096, + 0.92 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.92 ] - }, - "accSagittalSharp23CDown": { + }, + "noteheadHalf": { "bBoxNE": [ - 1.5, - 0.688 - ], + 1.264, + 0.54 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.54 ] - }, - "accSagittalSharp23CUp": { + }, + "noteheadParenthesisLeft": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.068 ] - }, - "accSagittalSharp23SDown": { + }, + "noteheadParenthesisRight": { "bBoxNE": [ - 1.0, - 0.688 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -1.44 + 0.0, + -1.068 ] - }, - "accSagittalSharp23SUp": { + }, + "noteheadSlashHorizontalEnds": { "bBoxNE": [ - 1.876, - 0.688 - ], + 0.848, + 0.984 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.984 ] - }, - "accSagittalSharp25SDown": { + }, + "noteheadSlashWhiteHalf": { "bBoxNE": [ - 1.376, - 0.684 - ], + 1.144, + 0.984 + ], "bBoxSW": [ - -0.004, - -1.436 + 0.0, + -0.984 ] - }, - "accSagittalSharp25SUp": { + }, + "noteheadSlashWhiteWhole": { "bBoxNE": [ - 1.5, - 0.688 - ], + 1.6, + 0.984 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.984 ] - }, - "accSagittalSharp35LUp": { + }, + "noteheadTriangleDownBlack": { "bBoxNE": [ - 2.0, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp35MUp": { + }, + "noteheadTriangleDownDoubleWhole": { "bBoxNE": [ - 1.624, - 0.688 - ], + 2.704, + 0.708 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.708 ] - }, - "accSagittalSharp49LUp": { + }, + "noteheadTriangleDownHalf": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp49MUp": { + }, + "noteheadTriangleDownWhite": { "bBoxNE": [ - 1.5, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp49SDown": { + }, + "noteheadTriangleDownWhole": { "bBoxNE": [ - 1.0, - 0.688 - ], + 1.856, + 0.592 + ], "bBoxSW": [ - -0.004, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp49SUp": { + }, + "noteheadTriangleUpBlack": { "bBoxNE": [ - 1.624, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp55CDown": { + }, + "noteheadTriangleUpDoubleWhole": { "bBoxNE": [ - 1.0, - 0.688 - ], + 2.704, + 0.708 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.708 ] - }, - "accSagittalSharp55CUp": { + }, + "noteheadTriangleUpHalf": { "bBoxNE": [ - 1.376, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp5CDown": { + }, + "noteheadTriangleUpWhite": { "bBoxNE": [ - 1.124, - 0.688 - ], + 1.288, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp5CUp": { + }, + "noteheadTriangleUpWhole": { "bBoxNE": [ - 1.248, - 0.688 - ], + 1.856, + 0.592 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.592 ] - }, - "accSagittalSharp5v11SDown": { + }, + "noteheadWhole": { "bBoxNE": [ - 1.376, - 0.684 - ], + 1.816, + 0.54 + ], "bBoxSW": [ - 0.0, - -1.44 + 0.0, + -0.54 ] - }, - "accSagittalSharp5v11SUp": { + }, + "noteheadXBlack": { "bBoxNE": [ - 1.748, - 0.684 - ], + 1.2, + 0.552 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.552 ] - }, - "accSagittalSharp5v13LUp": { + }, + "noteheadXHalf": { "bBoxNE": [ - 2.0, - 0.688 - ], + 1.2, + 0.536 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.536 ] - }, - "accSagittalSharp5v13MUp": { + }, + "noteheadXWhole": { "bBoxNE": [ - 1.5, - 0.688 - ], + 1.76, + 0.536 + ], "bBoxSW": [ - 0.0, - -1.44 + 0.0, + -0.536 ] - }, - "accSagittalSharp5v19CDown": { + }, + "octaveParensLeft": { "bBoxNE": [ - 1.248, - 0.688 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.068 ] - }, - "accSagittalSharp5v19CUp": { + }, + "octaveParensRight": { "bBoxNE": [ - 1.248, - 0.688 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -1.068 ] - }, - "accSagittalSharp5v23SDown": { + }, + "ornamentBottomLeftConcaveStroke": { "bBoxNE": [ - 1.124, - 0.688 - ], + 0.308, + 0.168 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.216, + -0.984 ] - }, - "accSagittalSharp5v23SUp": { + }, + "ornamentBottomRightConcaveStroke": { "bBoxNE": [ - 1.624, - 0.688 - ], + 0.308, + 0.256 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.896 ] - }, - "accSagittalSharp5v49MUp": { + }, + "ornamentLeftVerticalStroke": { "bBoxNE": [ - 1.876, - 0.688 - ], + 0.12, + 1.04 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.256 ] - }, - "accSagittalSharp5v7kDown": { + }, + "ornamentMiddleVerticalStroke": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.06, + 0.8 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.06, + -0.8 ] - }, - "accSagittalSharp5v7kUp": { + }, + "ornamentMordent": { "bBoxNE": [ - 1.248, - 0.684 - ], + 2.424, + 0.8 + ], "bBoxSW": [ - 0.0, - -1.444 + 0.0, + -0.8 ] - }, - "accSagittalSharp7CDown": { + }, + "ornamentPrecompSlide": { "bBoxNE": [ - 1.0, - 0.688 - ], + 3.256, + 0.968 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.512 ] - }, - "accSagittalSharp7CUp": { + }, + "ornamentShortTrill": { "bBoxNE": [ - 1.248, - 0.688 - ], + 2.424, + 0.512 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.512 ] - }, - "accSagittalSharp7v11CDown": { + }, + "ornamentTopRightConvexStroke": { "bBoxNE": [ - 1.376, - 0.688 - ], + 0.308, + 0.984 + ], "bBoxSW": [ - 0.0, - -1.436 + -0.216, + -0.168 ] - }, - "accSagittalSharp7v11CUp": { + }, + "ornamentTremblement": { "bBoxNE": [ - 1.376, - 0.688 - ], + 3.408, + 0.512 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.512 ] - }, - "accSagittalSharp7v11kDown": { + }, + "ornamentTrill": { "bBoxNE": [ - 1.248, - 0.688 - ], + 2.124, + 1.468 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.036 ] - }, - "accSagittalSharp7v11kUp": { + }, + "ornamentTurn": { "bBoxNE": [ - 1.624, - 0.684 - ], + 2.48, + 0.564 + ], "bBoxSW": [ - 0.004, - -1.436 + 0.0, + -0.564 ] - }, - "accSagittalSharp7v19CDown": { + }, + "ornamentTurnInverted": { "bBoxNE": [ - 1.0, - 0.688 - ], + 2.48, + 0.564 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.564 ] - }, - "accSagittalSharp7v19CUp": { + }, + "ornamentTurnSlash": { "bBoxNE": [ - 1.5, - 0.688 - ], + 2.48, + 0.8 + ], "bBoxSW": [ - 0.0, - -1.436 + 0.0, + -0.8 ] - }, - "accdnCombDot": { + }, + "ornamentZigZagLineNoRightEnd": { "bBoxNE": [ - 0.496, - 0.496 - ], + 1.132, + 0.512 + ], "bBoxSW": [ - 0.0, - 0.0 + -0.308, + -0.512 ] - }, - "accdnCombLH2RanksEmpty": { + }, + "ornamentZigZagLineWithRightEnd": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.132, + 0.512 + ], "bBoxSW": [ - 0.0, - 0.0 + -0.308, + -0.512 ] - }, - "accdnCombLH3RanksEmptySquare": { + }, + "ottava": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.656, + 1.944 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnCombRH3RanksEmpty": { + }, + "pluckedSnapPizzicatoAbove": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.88, + 1.252 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnCombRH4RanksEmpty": { + }, + "pluckedSnapPizzicatoBelow": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.88, + 1.252 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnDiatonicClef": { + }, + "quindicesima": { "bBoxNE": [ - 1.136, - 1.864 - ], + 2.644, + 1.944 + ], "bBoxSW": [ - 0.0, - -1.852 + 0.0, + 0.0 ] - }, - "accdnLH2Ranks16Round": { + }, + "repeatDot": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.4, + 0.7 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + 0.3 ] - }, - "accdnLH2Ranks8Plus16Round": { + }, + "repeatDots": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.4, + 2.68 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + 1.28 ] - }, - "accdnLH2Ranks8Round": { + }, + "rest128th": { "bBoxNE": [ - 3.128, - 3.128 - ], + 2.176, + 2.752 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -2.848 ] - }, - "accdnLH2RanksFullMasterRound": { + }, + "rest16th": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.312, + 0.8 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.872 ] - }, - "accdnLH2RanksMasterPlus16Round": { + }, + "rest32nd": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.6, + 1.776 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.872 ] - }, - "accdnLH2RanksMasterRound": { + }, + "rest64th": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.888, + 1.776 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -2.848 ] - }, - "accdnLH3Ranks2Plus8Square": { + }, + "rest8th": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.024, + 0.8 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.896 ] - }, - "accdnLH3Ranks2Square": { + }, + "restDoubleWhole": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.136, + 1.0 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnLH3Ranks8Square": { + }, + "restHalf": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.32, + 0.5 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnLH3RanksDouble8Square": { + }, + "restHalfLegerLine": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.744, + 0.5 + ], "bBoxSW": [ - 0.0, - 0.0 + -0.424, + -0.048 ] - }, - "accdnLH3RanksTuttiSquare": { + }, + "restLonga": { "bBoxNE": [ - 2.552, - 3.136 - ], + 1.136, + 1.0 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.0 ] - }, - "accdnPull": { + }, + "restQuarter": { "bBoxNE": [ - 0.92, - 2.3 - ], + 0.888, + 1.46 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.452 ] - }, - "accdnPush": { + }, + "restQuarterOld": { "bBoxNE": [ - 0.92, - 2.3 - ], + 1.024, + 0.8 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.896 ] - }, - "accdnPushAlt": { + }, + "restWhole": { "bBoxNE": [ - 0.776, - 2.304 - ], - "bBoxSW": [ - 0.0, + 1.32, 0.0 + ], + "bBoxSW": [ + 0.0, + -0.5 ] - }, - "accdnRH3RanksAccordion": { + }, + "restWholeLegerLine": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.744, + 0.048 + ], "bBoxSW": [ - 0.0, - 0.0 + -0.424, + -0.5 ] - }, - "accdnRH3RanksAuthenticMusette": { + }, + "reversedBracketBottom": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.656, + 0.308 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.652 ] - }, - "accdnRH3RanksBandoneon": { + }, + "reversedBracketTop": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.656, + 0.652 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.308 ] - }, - "accdnRH3RanksBassoon": { + }, + "segno": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.944, + 1.392 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.392 ] - }, - "accdnRH3RanksClarinet": { + }, + "segnoSerpent1": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.628, + 2.808 + ], "bBoxSW": [ - 0.0, - 0.0 + -0.628, + -1.208 ] - }, - "accdnRH3RanksDoubleTremoloLower8ve": { + }, + "stringsDownBow": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.344, + 1.408 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksDoubleTremoloUpper8ve": { + }, + "stringsDownBowTurned": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.344, + 1.408 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksFullFactory": { + }, + "stringsThumbPosition": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.712, + 1.116 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksHarmonium": { + }, + "stringsThumbPositionTurned": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.712, + 1.116 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksImitationMusette": { + }, + "stringsUpBow": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.008, + 1.648 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksLowerTremolo8": { + }, + "stringsUpBowTurned": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.008, + 1.648 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRH3RanksMaster": { + }, + "timeSig0": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.696, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksOboe": { + }, + "timeSig1": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.136, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksOrgan": { + }, + "timeSig2": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.504, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksPiccolo": { + }, + "timeSig3": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.348, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksTremoloLower8ve": { + }, + "timeSig4": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.536, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksTremoloUpper8ve": { + }, + "timeSig5": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.348, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksTwoChoirs": { + }, + "timeSig6": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.56, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksUpperTremolo8": { + }, + "timeSig7": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.452, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH3RanksViolin": { + }, + "timeSig8": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.6, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH4RanksAlto": { + }, + "timeSig9": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.56, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH4RanksBassAlto": { + }, + "timeSigCommon": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.704, + 0.972 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -0.972 ] - }, - "accdnRH4RanksMaster": { + }, + "timeSigCutCommon": { "bBoxNE": [ - 3.128, - 3.128 - ], + 1.704, + 1.648 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.648 ] - }, - "accdnRH4RanksSoftBass": { + }, + "timeSigParensLeft": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.068 ] - }, - "accdnRH4RanksSoftTenor": { + }, + "timeSigParensLeftSmall": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.068 ] - }, - "accdnRH4RanksSoprano": { + }, + "timeSigParensRight": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.416, + 1.068 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.068 ] - }, - "accdnRH4RanksTenor": { + }, + "timeSigParensRightSmall": { "bBoxNE": [ - 3.128, - 3.128 - ], + 0.48, + 1.068 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.064, + -1.068 ] - }, - "accdnRicochet2": { + }, + "unpitchedPercussionClef1": { "bBoxNE": [ - 1.552, - 2.94 - ], + 1.36, + 1.0 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.0 ] - }, - "accdnRicochet3": { + }, + "unpitchedPercussionClef2": { "bBoxNE": [ - 1.832, - 2.94 - ], + 1.08, + 1.68 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + -1.68 ] - }, - "accdnRicochet4": { + }, + "ventiduesima": { "bBoxNE": [ - 2.512, - 2.94 - ], + 3.168, + 1.944 + ], "bBoxSW": [ - 0.0, + 0.0, 0.0 ] - }, - "accdnRicochet5": { + }, + "wiggleArpeggiatoDown": { "bBoxNE": [ - 3.072, - 2.94 - ], + 1.08, + 0.696 + ], "bBoxSW": [ - 0.0, - 0.0 + 0.0, + 0.216 ] - }, - "accdnRicochet6": { + }, + "wiggleArpeggiatoDownArrow": { "bBoxNE": [ - 3.752, - 2.94 - ], + 1.0, + 0.912 + ], "bBoxSW": [ - 0.0, + -0.104, 0.0 ] - }, - "accdnRicochetStem2": { + }, + "wiggleArpeggiatoUp": { "bBoxNE": [ - 0.752, - 0.568 - ], + 1.08, + 0.696 + ], "bBoxSW": [ - -0.76, - -0.564 + 0.0, + 0.216 ] - }, - "accdnRicochetStem3": { + }, + "wiggleArpeggiatoUpArrow": { "bBoxNE": [ - 0.78, - 0.744 - ], + 1.0, + 0.912 + ], "bBoxSW": [ - -0.768, - -0.744 + -0.104, + 0.0 ] - }, - "accdnRicochetStem4": { + }, + "wiggleGlissando": { "bBoxNE": [ - 0.776, - 0.96 - ], + 1.032, + 0.48 + ], "bBoxSW": [ - -0.772, - -0.976 + -0.048, + 0.0 ] - }, - "accdnRicochetStem5": { + }, + "wiggleSawtooth": { "bBoxNE": [ - 0.776, - 1.188 - ], + 3.064, + 1.396 + ], "bBoxSW": [ - -0.772, - -1.184 + -0.064, + -0.732 ] - }, - "accdnRicochetStem6": { + }, + "wiggleSawtoothNarrow": { "bBoxNE": [ - 0.772, - 1.424 - ], + 2.064, + 1.396 + ], "bBoxSW": [ - -0.776, - -1.4 + -0.064, + -0.732 ] - }, - "accidental1CommaFlat": { + }, + "wiggleSawtoothWide": { "bBoxNE": [ - 1.076, - 1.976 - ], + 4.064, + 1.396 + ], "bBoxSW": [ - 0.0, - -0.7 + -0.064, + -0.732 ] - }, - "accidental1CommaSharp": { + }, + "wiggleTrill": { "bBoxNE": [ - 1.58, - 2.076 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -1.392 + -0.048, + 0.608 ] - }, - "accidental2CommaFlat": { + }, + "wiggleTrillFast": { "bBoxNE": [ - 1.368, - 1.944 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidental2CommaSharp": { - "bBoxNE": [ - 1.9, - 2.068 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidental3CommaFlat": { - "bBoxNE": [ - 1.276, - 1.912 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidental3CommaSharp": { - "bBoxNE": [ - 1.828, - 2.044 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidental4CommaFlat": { - "bBoxNE": [ - 1.368, - 1.968 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidental5CommaSharp": { - "bBoxNE": [ - 1.828, - 2.04 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalArrowDown": { - "bBoxNE": [ - 0.74, - 1.552 - ], - "bBoxSW": [ - 0.0, - -0.508 - ] - }, - "accidentalArrowUp": { - "bBoxNE": [ - 0.74, - 1.56 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalBakiyeFlat": { - "bBoxNE": [ - 1.144, - 1.756 - ], - "bBoxSW": [ - -0.004, - -0.7 - ] - }, - "accidentalBakiyeSharp": { - "bBoxNE": [ - 0.996, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalBuyukMucennebFlat": { - "bBoxNE": [ - 1.148, - 1.752 - ], - "bBoxSW": [ - 0.004, - -0.696 - ] - }, - "accidentalBuyukMucennebSharp": { - "bBoxNE": [ - 1.364, - 1.392 - ], - "bBoxSW": [ - 0.0, - -1.4 - ] - }, - "accidentalCombiningCloseCurlyBrace": { - "bBoxNE": [ - 0.548, - 1.328 - ], - "bBoxSW": [ - 0.0, - -0.492 - ] - }, - "accidentalCombiningLower17Schisma": { - "bBoxNE": [ - 0.792, - 0.88 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.504 + -0.048, + 0.608 ] - }, - "accidentalCombiningLower19Schisma": { + }, + "wiggleTrillFaster": { "bBoxNE": [ - 0.792, - 0.26 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.496 + -0.048, + 0.608 ] - }, - "accidentalCombiningLower23Limit29LimitComma": { + }, + "wiggleTrillFasterStill": { "bBoxNE": [ - 0.988, - 1.18 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.5 + -0.048, + 0.608 ] - }, - "accidentalCombiningLower31Schisma": { + }, + "wiggleTrillFastest": { "bBoxNE": [ - 1.188, - 0.332 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - 0.152 + -0.048, + 0.608 ] - }, - "accidentalCombiningOpenCurlyBrace": { + }, + "wiggleTrillSlow": { "bBoxNE": [ - 0.548, - 1.328 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.492 + -0.048, + 0.608 ] - }, - "accidentalCombiningRaise17Schisma": { + }, + "wiggleTrillSlower": { "bBoxNE": [ - 0.792, - 0.88 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.504 + -0.048, + 0.608 ] - }, - "accidentalCombiningRaise19Schisma": { + }, + "wiggleTrillSlowerStill": { "bBoxNE": [ - 0.792, - 0.26 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.496 + -0.048, + 0.608 ] - }, - "accidentalCombiningRaise23Limit29LimitComma": { + }, + "wiggleTrillSlowest": { "bBoxNE": [ - 0.988, - 1.02 - ], + 1.032, + 1.088 + ], "bBoxSW": [ - 0.0, - -0.66 + -0.048, + 0.608 ] - }, - "accidentalCombiningRaise31Schisma": { + }, + "wiggleVibrato": { "bBoxNE": [ - 1.188, - 0.836 - ], + 1.032, + 0.48 + ], "bBoxSW": [ - 0.0, - -0.352 + -0.048, + 0.0 ] - }, - "accidentalCommaSlashDown": { + }, + "wiggleVibratoLargeFaster": { "bBoxNE": [ - 1.2, - 0.512 - ], + 1.632, + 1.272 + ], "bBoxSW": [ - 0.0, + -0.128, -0.508 ] - }, - "accidentalCommaSlashUp": { + }, + "wiggleVibratoLargeSlowest": { "bBoxNE": [ - 1.2, - 0.512 - ], + 3.192, + 1.272 + ], "bBoxSW": [ - 0.0, + -0.136, -0.508 ] - }, - "accidentalDoubleFlat": { - "bBoxNE": [ - 1.644, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalDoubleFlatEqualTempered": { - "bBoxNE": [ - 1.668, - 1.808 - ], - "bBoxSW": [ - -0.396, - -0.728 - ] - }, - "accidentalDoubleFlatJoinedStems": { - "bBoxNE": [ - 1.644, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalDoubleFlatOneArrowDown": { - "bBoxNE": [ - 1.668, - 1.748 - ], - "bBoxSW": [ - 0.0, - -1.408 - ] - }, - "accidentalDoubleFlatOneArrowUp": { - "bBoxNE": [ - 1.668, - 2.136 - ], - "bBoxSW": [ - -0.28, - -0.732 - ] - }, - "accidentalDoubleFlatParens": { - "bBoxNE": [ - 2.772, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "accidentalDoubleFlatReversed": { - "bBoxNE": [ - 1.644, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalDoubleFlatThreeArrowsDown": { - "bBoxNE": [ - 1.668, - 1.748 - ], - "bBoxSW": [ - 0.0, - -2.292 - ] - }, - "accidentalDoubleFlatThreeArrowsUp": { - "bBoxNE": [ - 1.668, - 3.016 - ], - "bBoxSW": [ - -0.284, - -0.732 - ] - }, - "accidentalDoubleFlatTurned": { - "bBoxNE": [ - 1.644, - 0.724 - ], - "bBoxSW": [ - 0.0, - -1.724 - ] - }, - "accidentalDoubleFlatTwoArrowsDown": { - "bBoxNE": [ - 1.668, - 1.748 - ], - "bBoxSW": [ - 0.0, - -1.848 - ] - }, - "accidentalDoubleFlatTwoArrowsUp": { - "bBoxNE": [ - 1.668, - 2.576 - ], - "bBoxSW": [ - -0.284, - -0.732 - ] - }, - "accidentalDoubleSharp": { - "bBoxNE": [ - 0.988, - 0.508 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalDoubleSharpEqualTempered": { - "bBoxNE": [ - 0.984, - 1.036 - ], - "bBoxSW": [ - -0.004, - -0.5 - ] - }, - "accidentalDoubleSharpOneArrowDown": { - "bBoxNE": [ - 0.984, - 0.508 - ], - "bBoxSW": [ - -0.004, - -1.288 - ] - }, - "accidentalDoubleSharpOneArrowUp": { - "bBoxNE": [ - 0.984, - 1.324 - ], - "bBoxSW": [ - -0.004, - -0.496 - ] - }, - "accidentalDoubleSharpParens": { - "bBoxNE": [ - 1.992, - 0.988 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "accidentalDoubleSharpThreeArrowsDown": { - "bBoxNE": [ - 0.984, - 0.512 - ], - "bBoxSW": [ - -0.004, - -2.172 - ] - }, - "accidentalDoubleSharpThreeArrowsUp": { - "bBoxNE": [ - 0.984, - 2.208 - ], - "bBoxSW": [ - -0.004, - -0.5 - ] - }, - "accidentalDoubleSharpTwoArrowsDown": { - "bBoxNE": [ - 0.984, - 0.508 - ], - "bBoxSW": [ - -0.004, - -1.732 - ] - }, - "accidentalDoubleSharpTwoArrowsUp": { - "bBoxNE": [ - 0.984, - 1.764 - ], - "bBoxSW": [ - -0.004, - -0.496 - ] - }, - "accidentalFilledReversedFlatAndFlat": { - "bBoxNE": [ - 1.46, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalFilledReversedFlatAndFlatArrowDown": { - "bBoxNE": [ - 1.46, - 1.748 - ], - "bBoxSW": [ - 0.0, - -2.212 - ] - }, - "accidentalFilledReversedFlatAndFlatArrowUp": { - "bBoxNE": [ - 1.46, - 2.188 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalFilledReversedFlatArrowDown": { - "bBoxNE": [ - 1.216, - 1.748 - ], - "bBoxSW": [ - 0.004, - -1.932 - ] - }, - "accidentalFilledReversedFlatArrowUp": { - "bBoxNE": [ - 1.24, - 2.54 - ], - "bBoxSW": [ - 0.0, - -0.696 - ] - }, - "accidentalFiveQuarterTonesFlatArrowDown": { - "bBoxNE": [ - 1.652, - 1.768 - ], - "bBoxSW": [ - -0.24, - -1.672 - ] - }, - "accidentalFiveQuarterTonesSharpArrowUp": { - "bBoxNE": [ - 1.184, - 1.448 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalFlat": { - "bBoxNE": [ - 0.904, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalFlatEqualTempered": { - "bBoxNE": [ - 0.904, - 1.808 - ], - "bBoxSW": [ - -0.388, - -0.728 - ] - }, - "accidentalFlatJohnstonDown": { - "bBoxNE": [ - 1.196, - 1.756 - ], - "bBoxSW": [ - 0.0, - -1.288 - ] - }, - "accidentalFlatJohnstonEl": { - "bBoxNE": [ - 0.904, - 1.76 - ], - "bBoxSW": [ - 0.0, - -1.24 - ] - }, - "accidentalFlatJohnstonElDown": { - "bBoxNE": [ - 1.184, - 1.76 - ], - "bBoxSW": [ - 0.0, - -1.72 - ] - }, - "accidentalFlatJohnstonUp": { - "bBoxNE": [ - 1.204, - 1.76 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalFlatJohnstonUpEl": { - "bBoxNE": [ - 1.184, - 1.72 - ], - "bBoxSW": [ - 0.0, - -1.24 - ] - }, - "accidentalFlatOneArrowDown": { - "bBoxNE": [ - 0.904, - 1.748 - ], - "bBoxSW": [ - -0.284, - -1.408 - ] - }, - "accidentalFlatOneArrowUp": { - "bBoxNE": [ - 0.904, - 2.14 - ], - "bBoxSW": [ - -0.284, - -0.728 - ] - }, - "accidentalFlatParens": { - "bBoxNE": [ - 2.024, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "accidentalFlatSmall": { - "bBoxNE": [ - 1.052, - 1.772 - ], - "bBoxSW": [ - 0.004, - -0.708 - ] - }, - "accidentalFlatThreeArrowsDown": { - "bBoxNE": [ - 0.904, - 1.748 - ], - "bBoxSW": [ - -0.28, - -2.292 - ] - }, - "accidentalFlatThreeArrowsUp": { - "bBoxNE": [ - 0.904, - 3.024 - ], - "bBoxSW": [ - -0.284, - -0.728 - ] - }, - "accidentalFlatTurned": { - "bBoxNE": [ - 0.908, - 0.704 - ], - "bBoxSW": [ - 0.004, - -1.752 - ] - }, - "accidentalFlatTwoArrowsDown": { - "bBoxNE": [ - 0.904, - 1.748 - ], - "bBoxSW": [ - -0.28, - -1.852 - ] - }, - "accidentalFlatTwoArrowsUp": { - "bBoxNE": [ - 0.904, - 2.576 - ], - "bBoxSW": [ - -0.284, - -0.728 - ] - }, - "accidentalHalfSharpArrowDown": { - "bBoxNE": [ - 0.924, - 1.288 - ], - "bBoxSW": [ - -0.012, - -2.168 - ] - }, - "accidentalHalfSharpArrowUp": { - "bBoxNE": [ - 0.928, - 2.188 - ], - "bBoxSW": [ - -0.008, - -1.348 - ] - }, - "accidentalJohnston13": { - "bBoxNE": [ - 0.76, - 0.376 - ], - "bBoxSW": [ - 0.08, - -0.388 - ] - }, - "accidentalJohnston31": { - "bBoxNE": [ - 0.72, - 0.388 - ], - "bBoxSW": [ - 0.04, - -0.376 - ] - }, - "accidentalJohnstonDown": { + }, + "wiggleVibratoWide": { "bBoxNE": [ - 0.72, - 0.5 - ], + 1.032, + 0.48 + ], "bBoxSW": [ - 0.0, - -0.72 + -0.048, + 0.0 ] - }, - "accidentalJohnstonDownEl": { - "bBoxNE": [ - 0.94, - 1.02 - ], - "bBoxSW": [ - 0.0, - -0.72 - ] - }, - "accidentalJohnstonEl": { - "bBoxNE": [ - 0.64, - 0.52 - ], - "bBoxSW": [ - 0.0, - -0.74 - ] - }, - "accidentalJohnstonMinus": { - "bBoxNE": [ - 0.6, - 0.06 - ], - "bBoxSW": [ - 0.0, - -0.06 - ] - }, - "accidentalJohnstonPlus": { - "bBoxNE": [ - 0.6, - 0.3 - ], - "bBoxSW": [ - 0.0, - -0.3 - ] - }, - "accidentalJohnstonSeven": { - "bBoxNE": [ - 0.64, - 0.74 - ], - "bBoxSW": [ - 0.0, - -0.52 - ] - }, - "accidentalJohnstonSevenDown": { - "bBoxNE": [ - 0.94, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.22 - ] - }, - "accidentalJohnstonSevenFlat": { - "bBoxNE": [ - 1.38, - 1.74 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalJohnstonSevenFlatDown": { - "bBoxNE": [ - 1.376, - 1.74 - ], - "bBoxSW": [ - 0.0, - -1.22 - ] - }, - "accidentalJohnstonSevenFlatUp": { - "bBoxNE": [ - 1.396, - 1.72 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalJohnstonSevenSharp": { - "bBoxNE": [ - 1.316, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalJohnstonSevenSharpDown": { - "bBoxNE": [ - 1.412, - 1.396 - ], - "bBoxSW": [ - 0.0, - -1.72 - ] - }, - "accidentalJohnstonSevenSharpUp": { - "bBoxNE": [ - 1.412, - 1.72 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "accidentalJohnstonSevenUp": { - "bBoxNE": [ - 0.94, - 0.72 - ], - "bBoxSW": [ - 0.0, - -1.02 - ] - }, - "accidentalJohnstonUp": { - "bBoxNE": [ - 0.72, - 0.72 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalJohnstonUpEl": { - "bBoxNE": [ - 0.94, - 1.22 - ], - "bBoxSW": [ - 0.0, - -0.24 - ] - }, - "accidentalKomaFlat": { - "bBoxNE": [ - 0.908, - 1.756 - ], - "bBoxSW": [ - 0.004, - -0.7 - ] - }, - "accidentalKomaSharp": { - "bBoxNE": [ - 0.916, - 1.288 - ], - "bBoxSW": [ - 0.0, - -1.348 - ] - }, - "accidentalKoron": { - "bBoxNE": [ - 1.2, - 0.628 - ], - "bBoxSW": [ - 0.0, - -1.888 - ] - }, - "accidentalKucukMucennebFlat": { - "bBoxNE": [ - 0.904, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalKucukMucennebSharp": { - "bBoxNE": [ - 1.356, - 1.284 - ], - "bBoxSW": [ - -0.004, - -1.352 - ] - }, - "accidentalLargeDoubleSharp": { - "bBoxNE": [ - 1.376, - 0.688 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "accidentalLowerOneSeptimalComma": { - "bBoxNE": [ - 0.684, - 1.616 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalLowerOneTridecimalQuartertone": { - "bBoxNE": [ - 0.9, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.696 - ] - }, - "accidentalLowerOneUndecimalQuartertone": { - "bBoxNE": [ - 0.904, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.728 - ] - }, - "accidentalLowerTwoSeptimalCommas": { - "bBoxNE": [ - 0.684, - 2.28 - ], - "bBoxSW": [ - 0.0, - -0.496 - ] - }, - "accidentalNarrowReversedFlat": { - "bBoxNE": [ - 0.656, - 1.684 - ], - "bBoxSW": [ - 0.0, - -0.776 - ] - }, - "accidentalNarrowReversedFlatAndFlat": { - "bBoxNE": [ - 1.656, - 1.684 - ], - "bBoxSW": [ - 0.0, - -0.776 - ] - }, - "accidentalNatural": { - "bBoxNE": [ - 0.672, - 1.364 - ], - "bBoxSW": [ - 0.0, - -1.34 - ] - }, - "accidentalNaturalEqualTempered": { - "bBoxNE": [ - 0.672, - 1.432 - ], - "bBoxSW": [ - -0.396, - -1.332 - ] - }, - "accidentalNaturalFlat": { - "bBoxNE": [ - 1.836, - 1.756 - ], - "bBoxSW": [ - 0.0, - -1.34 - ] - }, - "accidentalNaturalOneArrowDown": { - "bBoxNE": [ - 0.952, - 1.372 - ], - "bBoxSW": [ - 0.0, - -1.68 - ] - }, - "accidentalNaturalOneArrowUp": { - "bBoxNE": [ - 0.676, - 1.704 - ], - "bBoxSW": [ - -0.28, - -1.328 - ] - }, - "accidentalNaturalParens": { - "bBoxNE": [ - 2.164, - 1.364 - ], - "bBoxSW": [ - 0.0, - -1.34 - ] - }, - "accidentalNaturalReversed": { - "bBoxNE": [ - 0.672, - 1.364 - ], - "bBoxSW": [ - 0.0, - -1.34 - ] - }, - "accidentalNaturalSharp": { - "bBoxNE": [ - 1.924, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalNaturalSmall": { - "bBoxNE": [ - 0.76, - 1.364 - ], - "bBoxSW": [ - 0.0, - -1.336 - ] - }, - "accidentalNaturalThreeArrowsDown": { - "bBoxNE": [ - 0.956, - 1.372 - ], - "bBoxSW": [ - 0.0, - -2.568 - ] - }, - "accidentalNaturalThreeArrowsUp": { - "bBoxNE": [ - 0.676, - 2.584 - ], - "bBoxSW": [ - -0.284, - -1.328 - ] - }, - "accidentalNaturalTwoArrowsDown": { - "bBoxNE": [ - 0.956, - 1.372 - ], - "bBoxSW": [ - 0.0, - -2.128 - ] - }, - "accidentalNaturalTwoArrowsUp": { - "bBoxNE": [ - 0.676, - 2.148 - ], - "bBoxSW": [ - -0.284, - -1.328 - ] - }, - "accidentalOneAndAHalfSharpsArrowDown": { - "bBoxNE": [ - 1.268, - 1.476 - ], - "bBoxSW": [ - -0.204, - -2.364 - ] - }, - "accidentalOneAndAHalfSharpsArrowUp": { - "bBoxNE": [ - 1.476, - 2.432 - ], - "bBoxSW": [ - 0.012, - -1.388 - ] - }, - "accidentalOneThirdToneFlatFerneyhough": { - "bBoxNE": [ - 0.752, - 0.508 - ], - "bBoxSW": [ - 0.0, - -2.136 - ] - }, - "accidentalOneThirdToneSharpFerneyhough": { - "bBoxNE": [ - 0.764, - 2.16 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalParensLeft": { - "bBoxNE": [ - 0.564, - 0.988 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "accidentalParensRight": { - "bBoxNE": [ - 0.564, - 0.988 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "accidentalQuarterToneFlat4": { - "bBoxNE": [ - 1.672, - 2.5 - ], - "bBoxSW": [ - 0.0, - -0.704 - ] - }, - "accidentalQuarterToneFlatArrowUp": { - "bBoxNE": [ - 0.992, - 2.316 - ], - "bBoxSW": [ - -0.168, - -0.708 - ] - }, - "accidentalQuarterToneFlatFilledReversed": { - "bBoxNE": [ - 0.908, - 1.748 - ], - "bBoxSW": [ - 0.008, - -0.696 - ] - }, - "accidentalQuarterToneFlatNaturalArrowDown": { - "bBoxNE": [ - 1.0, - 1.344 - ], - "bBoxSW": [ - 0.012, - -2.172 - ] - }, - "accidentalQuarterToneFlatPenderecki": { - "bBoxNE": [ - 0.908, - 1.748 - ], - "bBoxSW": [ - 0.008, - -0.696 - ] - }, - "accidentalQuarterToneFlatStein": { - "bBoxNE": [ - 0.908, - 1.756 - ], - "bBoxSW": [ - 0.004, - -0.7 - ] - }, - "accidentalQuarterToneFlatVanBlankenburg": { - "bBoxNE": [ - 0.94, - 1.76 - ], - "bBoxSW": [ - 0.0, - -0.696 - ] - }, - "accidentalQuarterToneSharp4": { - "bBoxNE": [ - 1.576, - 2.416 - ], - "bBoxSW": [ - 0.0, - -1.404 - ] - }, - "accidentalQuarterToneSharpArrowDown": { - "bBoxNE": [ - 0.996, - 1.396 - ], - "bBoxSW": [ - -0.112, - -2.136 - ] - }, - "accidentalQuarterToneSharpBusotti": { - "bBoxNE": [ - 0.668, - 1.22 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalQuarterToneSharpNaturalArrowUp": { - "bBoxNE": [ - 0.848, - 2.188 - ], - "bBoxSW": [ - -0.104, - -1.36 - ] - }, - "accidentalQuarterToneSharpStein": { - "bBoxNE": [ - 0.716, - 1.228 - ], - "bBoxSW": [ - 0.0, - -1.412 - ] - }, - "accidentalQuarterToneSharpWiggle": { - "bBoxNE": [ - 2.2, - 1.4 - ], - "bBoxSW": [ - 0.004, - -1.392 - ] - }, - "accidentalRaiseOneSeptimalComma": { - "bBoxNE": [ - 0.684, - 1.608 - ], - "bBoxSW": [ - 0.0, - -0.508 - ] - }, - "accidentalRaiseOneTridecimalQuartertone": { - "bBoxNE": [ - 1.076, - 1.524 - ], - "bBoxSW": [ - -0.004, - -1.3 - ] - }, - "accidentalRaiseOneUndecimalQuartertone": { - "bBoxNE": [ - 1.08, - 1.368 - ], - "bBoxSW": [ - 0.0, - -1.308 - ] - }, - "accidentalRaiseTwoSeptimalCommas": { - "bBoxNE": [ - 0.684, - 2.276 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "accidentalReversedFlatAndFlatArrowDown": { - "bBoxNE": [ - 1.54, - 1.748 - ], - "bBoxSW": [ - 0.0, - -2.212 - ] - }, - "accidentalReversedFlatAndFlatArrowUp": { - "bBoxNE": [ - 1.54, - 2.188 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalReversedFlatArrowDown": { - "bBoxNE": [ - 1.22, - 1.748 - ], - "bBoxSW": [ - 0.008, - -1.932 - ] - }, - "accidentalReversedFlatArrowUp": { - "bBoxNE": [ - 1.248, - 2.54 - ], - "bBoxSW": [ - 0.008, - -0.696 - ] - }, - "accidentalSharp": { - "bBoxNE": [ - 0.996, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalSharpEqualTempered": { - "bBoxNE": [ - 0.996, - 1.776 - ], - "bBoxSW": [ - -0.192, - -1.392 - ] - }, - "accidentalSharpJohnstonDown": { - "bBoxNE": [ - 1.096, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.732 - ] - }, - "accidentalSharpJohnstonDownEl": { - "bBoxNE": [ - 1.412, - 1.396 - ], - "bBoxSW": [ - 0.0, - -1.72 - ] - }, - "accidentalSharpJohnstonEl": { - "bBoxNE": [ - 1.324, - 1.396 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "accidentalSharpJohnstonUp": { - "bBoxNE": [ - 1.092, - 1.732 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalSharpJohnstonUpEl": { - "bBoxNE": [ - 1.312, - 1.72 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "accidentalSharpOneArrowDown": { - "bBoxNE": [ - 1.072, - 1.4 - ], - "bBoxSW": [ - 0.0, - -2.056 - ] - }, - "accidentalSharpOneArrowUp": { - "bBoxNE": [ - 0.996, - 2.036 - ], - "bBoxSW": [ - -0.08, - -1.392 - ] - }, - "accidentalSharpOneHorizontalStroke": { - "bBoxNE": [ - 0.996, - 1.428 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalSharpParens": { - "bBoxNE": [ - 2.24, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalSharpReversed": { - "bBoxNE": [ - 0.996, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalSharpSharp": { - "bBoxNE": [ - 2.076, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalSharpSmall": { - "bBoxNE": [ - 1.044, - 1.404 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "accidentalSharpThreeArrowsDown": { - "bBoxNE": [ - 1.076, - 1.4 - ], - "bBoxSW": [ - 0.0, - -2.944 - ] - }, - "accidentalSharpThreeArrowsUp": { - "bBoxNE": [ - 0.996, - 2.916 - ], - "bBoxSW": [ - -0.084, - -1.392 - ] - }, - "accidentalSharpTwoArrowsDown": { - "bBoxNE": [ - 1.076, - 1.4 - ], - "bBoxSW": [ - 0.0, - -2.5 - ] - }, - "accidentalSharpTwoArrowsUp": { - "bBoxNE": [ - 0.996, - 2.476 - ], - "bBoxSW": [ - -0.084, - -1.392 - ] - }, - "accidentalSims12Down": { - "bBoxNE": [ - 1.212, - 2.3 - ], - "bBoxSW": [ - 0.0, - -0.412 - ] - }, - "accidentalSims12Up": { - "bBoxNE": [ - 1.212, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.184 - ] - }, - "accidentalSims4Down": { - "bBoxNE": [ - 1.952, - 2.516 - ], - "bBoxSW": [ - 0.0, - -0.528 - ] - }, - "accidentalSims4Up": { - "bBoxNE": [ - 1.088, - 0.532 - ], - "bBoxSW": [ - -0.484, - -2.756 - ] - }, - "accidentalSims6Down": { - "bBoxNE": [ - 1.088, - 2.184 - ], - "bBoxSW": [ - 0.0, - -0.528 - ] - }, - "accidentalSims6Up": { - "bBoxNE": [ - 1.088, - 0.532 - ], - "bBoxSW": [ - 0.0, - -2.18 - ] - }, - "accidentalSori": { - "bBoxNE": [ - 1.684, - 1.312 - ], - "bBoxSW": [ - 0.0, - -1.272 - ] - }, - "accidentalTavenerFlat": { - "bBoxNE": [ - 2.452, - 1.752 - ], - "bBoxSW": [ - 0.0, - -0.704 - ] - }, - "accidentalTavenerSharp": { - "bBoxNE": [ - 2.22, - 1.396 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalThreeQuarterTonesFlatArrowDown": { - "bBoxNE": [ - 1.004, - 1.768 - ], - "bBoxSW": [ - -0.156, - -1.672 - ] - }, - "accidentalThreeQuarterTonesFlatArrowUp": { - "bBoxNE": [ - 1.644, - 2.492 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalThreeQuarterTonesFlatCouper": { - "bBoxNE": [ - 1.64, - 1.764 - ], - "bBoxSW": [ - 0.0, - -0.712 - ] - }, - "accidentalThreeQuarterTonesFlatGrisey": { - "bBoxNE": [ - 0.9, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.696 - ] - }, - "accidentalThreeQuarterTonesFlatTartini": { - "bBoxNE": [ - 1.376, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalThreeQuarterTonesFlatZimmermann": { - "bBoxNE": [ - 1.864, - 1.756 - ], - "bBoxSW": [ - 0.004, - -0.7 - ] - }, - "accidentalThreeQuarterTonesSharpArrowDown": { - "bBoxNE": [ - 0.992, - 0.488 - ], - "bBoxSW": [ - -0.192, - -1.46 - ] - }, - "accidentalThreeQuarterTonesSharpArrowUp": { - "bBoxNE": [ - 1.1, - 2.12 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalThreeQuarterTonesSharpBusotti": { - "bBoxNE": [ - 1.472, - 1.66 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "accidentalThreeQuarterTonesSharpStein": { - "bBoxNE": [ - 1.268, - 1.476 - ], - "bBoxSW": [ - 0.012, - -1.388 - ] - }, - "accidentalTripleFlat": { - "bBoxNE": [ - 2.384, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalTripleFlatJoinedStems": { - "bBoxNE": [ - 2.384, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalTripleSharp": { - "bBoxNE": [ - 2.076, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalTwoThirdTonesFlatFerneyhough": { - "bBoxNE": [ - 0.796, - 0.504 - ], - "bBoxSW": [ - 0.0, - -2.148 - ] - }, - "accidentalTwoThirdTonesSharpFerneyhough": { - "bBoxNE": [ - 0.784, - 2.16 - ], - "bBoxSW": [ - 0.0, - -0.496 - ] - }, - "accidentalWilsonMinus": { - "bBoxNE": [ - 1.124, - 0.744 - ], - "bBoxSW": [ - 0.0, - -0.744 - ] - }, - "accidentalWilsonPlus": { - "bBoxNE": [ - 1.124, - 0.812 - ], - "bBoxSW": [ - 0.0, - -0.812 - ] - }, - "accidentalWyschnegradsky10TwelfthsFlat": { - "bBoxNE": [ - 1.656, - 1.972 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalWyschnegradsky10TwelfthsSharp": { - "bBoxNE": [ - 1.576, - 1.988 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalWyschnegradsky11TwelfthsFlat": { - "bBoxNE": [ - 1.656, - 1.972 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalWyschnegradsky11TwelfthsSharp": { - "bBoxNE": [ - 1.576, - 2.572 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalWyschnegradsky1TwelfthsFlat": { - "bBoxNE": [ - 0.852, - 1.832 - ], - "bBoxSW": [ - 0.0, - -1.264 - ] - }, - "accidentalWyschnegradsky1TwelfthsSharp": { - "bBoxNE": [ - 0.652, - 1.404 - ], - "bBoxSW": [ - 0.0, - -1.452 - ] - }, - "accidentalWyschnegradsky2TwelfthsFlat": { - "bBoxNE": [ - 0.852, - 1.832 - ], - "bBoxSW": [ - 0.0, - -1.264 - ] - }, - "accidentalWyschnegradsky2TwelfthsSharp": { - "bBoxNE": [ - 0.652, - 1.404 - ], - "bBoxSW": [ - 0.0, - -1.452 - ] - }, - "accidentalWyschnegradsky3TwelfthsFlat": { - "bBoxNE": [ - 0.852, - 1.592 - ], - "bBoxSW": [ - 0.0, - -1.264 - ] - }, - "accidentalWyschnegradsky3TwelfthsSharp": { - "bBoxNE": [ - 0.652, - 1.228 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalWyschnegradsky4TwelfthsFlat": { - "bBoxNE": [ - 0.904, - 1.972 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalWyschnegradsky4TwelfthsSharp": { - "bBoxNE": [ - 0.904, - 1.464 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalWyschnegradsky5TwelfthsFlat": { - "bBoxNE": [ - 0.904, - 1.972 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalWyschnegradsky5TwelfthsSharp": { - "bBoxNE": [ - 0.9, - 2.044 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalWyschnegradsky6TwelfthsFlat": { - "bBoxNE": [ - 0.904, - 1.756 - ], - "bBoxSW": [ - 0.0, - -0.7 - ] - }, - "accidentalWyschnegradsky6TwelfthsSharp": { - "bBoxNE": [ - 0.996, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalWyschnegradsky7TwelfthsFlat": { - "bBoxNE": [ - 1.664, - 1.908 - ], - "bBoxSW": [ - 0.0, - -1.188 - ] - }, - "accidentalWyschnegradsky7TwelfthsSharp": { - "bBoxNE": [ - 1.324, - 2.008 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalWyschnegradsky8TwelfthsFlat": { - "bBoxNE": [ - 1.664, - 1.908 - ], - "bBoxSW": [ - 0.0, - -1.188 - ] - }, - "accidentalWyschnegradsky8TwelfthsSharp": { - "bBoxNE": [ - 1.324, - 2.588 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "accidentalWyschnegradsky9TwelfthsFlat": { - "bBoxNE": [ - 1.664, - 1.756 - ], - "bBoxSW": [ - 0.0, - -1.188 - ] - }, - "accidentalWyschnegradsky9TwelfthsSharp": { - "bBoxNE": [ - 1.256, - 1.476 - ], - "bBoxSW": [ - 0.0, - -1.388 - ] - }, - "accidentalXenakisOneThirdToneSharp": { - "bBoxNE": [ - 0.984, - 1.384 - ], - "bBoxSW": [ - 0.0, - -1.336 - ] - }, - "accidentalXenakisTwoThirdTonesSharp": { - "bBoxNE": [ - 1.224, - 1.384 - ], - "bBoxSW": [ - 0.0, - -1.336 - ] - }, - "analyticsChoralmelodie": { - "bBoxNE": [ - 5.008, - 3.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsEndStimme": { - "bBoxNE": [ - 1.192, - 3.0 - ], - "bBoxSW": [ - 0.0, - 2.0 - ] - }, - "analyticsHauptrhythmus": { - "bBoxNE": [ - 5.056, - 3.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsHauptrhythmusR": { - "bBoxNE": [ - 2.836, - 2.996 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsHauptstimme": { - "bBoxNE": [ - 2.828, - 3.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsInversion1": { - "bBoxNE": [ - 1.7, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsNebenstimme": { - "bBoxNE": [ - 2.828, - 3.004 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "analyticsStartStimme": { - "bBoxNE": [ - 1.192, - 3.0 - ], - "bBoxSW": [ - 0.0, - 2.0 - ] - }, - "analyticsTheme": { - "bBoxNE": [ - 2.972, - 2.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsTheme1": { - "bBoxNE": [ - 1.7, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsThemeInversion": { - "bBoxNE": [ - 2.972, - 2.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsThemeRetrograde": { - "bBoxNE": [ - 2.972, - 2.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "analyticsThemeRetrogradeInversion": { - "bBoxNE": [ - 2.972, - 2.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arpeggiatoDown": { - "bBoxNE": [ - 0.916, - 6.0 - ], - "bBoxSW": [ - 0.004, - -0.016 - ] - }, - "arpeggiatoUp": { - "bBoxNE": [ - 0.916, - 6.044 - ], - "bBoxSW": [ - 0.004, - 0.028 - ] - }, - "arrowBlackDown": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowBlackDownLeft": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowBlackDownRight": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowBlackLeft": { - "bBoxNE": [ - 2.108, - 1.452 - ], - "bBoxSW": [ - 0.0, - 0.54 - ] - }, - "arrowBlackRight": { - "bBoxNE": [ - 2.108, - 1.452 - ], - "bBoxSW": [ - 0.0, - 0.54 - ] - }, - "arrowBlackUp": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowBlackUpLeft": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowBlackUpRight": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowOpenDown": { - "bBoxNE": [ - 0.836, - 2.112 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowOpenDownLeft": { - "bBoxNE": [ - 1.544, - 1.804 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowOpenDownRight": { - "bBoxNE": [ - 1.544, - 1.804 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowOpenLeft": { - "bBoxNE": [ - 2.112, - 1.412 - ], - "bBoxSW": [ - 0.0, - 0.576 - ] - }, - "arrowOpenRight": { - "bBoxNE": [ - 2.112, - 1.412 - ], - "bBoxSW": [ - 0.0, - 0.576 - ] - }, - "arrowOpenUp": { - "bBoxNE": [ - 0.836, - 2.112 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowOpenUpLeft": { - "bBoxNE": [ - 1.544, - 1.804 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowOpenUpRight": { - "bBoxNE": [ - 1.544, - 1.804 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowWhiteDown": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowWhiteDownLeft": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowWhiteDownRight": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowWhiteLeft": { - "bBoxNE": [ - 2.108, - 1.508 - ], - "bBoxSW": [ - 0.0, - 0.596 - ] - }, - "arrowWhiteRight": { - "bBoxNE": [ - 2.108, - 1.508 - ], - "bBoxSW": [ - 0.0, - 0.596 - ] - }, - "arrowWhiteUp": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowWhiteUpLeft": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowWhiteUpRight": { - "bBoxNE": [ - 1.536, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.264 - ] - }, - "arrowheadBlackDown": { - "bBoxNE": [ - 0.912, - 1.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadBlackDownLeft": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadBlackDownRight": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadBlackLeft": { - "bBoxNE": [ - 1.196, - 0.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadBlackRight": { - "bBoxNE": [ - 1.196, - 0.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadBlackUp": { - "bBoxNE": [ - 0.912, - 1.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadBlackUpLeft": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadBlackUpRight": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadOpenDown": { - "bBoxNE": [ - 0.836, - 1.116 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenDownLeft": { - "bBoxNE": [ - 1.044, - 1.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenDownRight": { - "bBoxNE": [ - 1.044, - 1.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenLeft": { - "bBoxNE": [ - 1.116, - 0.836 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenRight": { - "bBoxNE": [ - 1.116, - 0.836 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenUp": { - "bBoxNE": [ - 0.836, - 1.116 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenUpLeft": { - "bBoxNE": [ - 1.044, - 1.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadOpenUpRight": { - "bBoxNE": [ - 1.044, - 1.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadWhiteDown": { - "bBoxNE": [ - 0.912, - 1.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadWhiteDownLeft": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadWhiteDownRight": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadWhiteLeft": { - "bBoxNE": [ - 1.196, - 0.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadWhiteRight": { - "bBoxNE": [ - 1.196, - 0.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadWhiteUp": { - "bBoxNE": [ - 0.912, - 1.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "arrowheadWhiteUpLeft": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "arrowheadWhiteUpRight": { - "bBoxNE": [ - 1.152, - 1.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "articAccentAbove": { - "bBoxNE": [ - 1.356, - 0.98 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "articAccentAboveLarge": { - "bBoxNE": [ - 1.716, - 1.22 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "articAccentAboveSmall": { - "bBoxNE": [ - 1.332, - 0.976 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articAccentBelow": { - "bBoxNE": [ - 1.356, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.976 - ] - }, - "articAccentBelowLarge": { - "bBoxNE": [ - 1.716, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.216 - ] - }, - "articAccentBelowSmall": { - "bBoxNE": [ - 1.332, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.976 - ] - }, - "articAccentStaccatoAbove": { - "bBoxNE": [ - 1.356, - 1.68 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articAccentStaccatoAboveSmall": { - "bBoxNE": [ - 1.332, - 1.856 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articAccentStaccatoBelow": { - "bBoxNE": [ - 1.352, - 0.0 - ], - "bBoxSW": [ - -0.004, - -1.644 - ] - }, - "articAccentStaccatoBelowSmall": { - "bBoxNE": [ - 1.332, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.792 - ] - }, - "articLaissezVibrerAbove": { - "bBoxNE": [ - 1.468, - 0.576 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "articLaissezVibrerBelow": { - "bBoxNE": [ - 1.46, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.572 - ] - }, - "articMarcatoAbove": { - "bBoxNE": [ - 0.94, - 1.012 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "articMarcatoAboveSmall": { - "bBoxNE": [ - 0.944, - 1.012 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "articMarcatoBelow": { - "bBoxNE": [ - 0.94, - 0.0 - ], - "bBoxSW": [ - -0.004, - -1.016 - ] - }, - "articMarcatoBelowSmall": { - "bBoxNE": [ - 0.944, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.016 - ] - }, - "articMarcatoStaccatoAbove": { - "bBoxNE": [ - 0.94, - 1.772 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "articMarcatoStaccatoAboveSmall": { - "bBoxNE": [ - 0.944, - 1.896 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articMarcatoStaccatoBelow": { - "bBoxNE": [ - 0.94, - 0.0 - ], - "bBoxSW": [ - -0.004, - -1.812 - ] - }, - "articMarcatoStaccatoBelowSmall": { - "bBoxNE": [ - 0.944, - -0.004 - ], - "bBoxSW": [ - 0.0, - -2.036 - ] - }, - "articMarcatoTenutoAbove": { - "bBoxNE": [ - 1.352, - 1.708 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "articMarcatoTenutoBelow": { - "bBoxNE": [ - 1.352, - 0.0 - ], - "bBoxSW": [ - -0.004, - -1.716 - ] - }, - "articStaccatissimoAbove": { - "bBoxNE": [ - 0.4, - 1.172 - ], - "bBoxSW": [ - 0.004, - -0.008 - ] - }, - "articStaccatissimoAboveSmall": { - "bBoxNE": [ - 0.528, - 1.18 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatissimoBelow": { - "bBoxNE": [ - 0.4, - 0.0 - ], - "bBoxSW": [ - 0.004, - -1.18 - ] - }, - "articStaccatissimoBelowSmall": { - "bBoxNE": [ - 0.528, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.18 - ] - }, - "articStaccatissimoStrokeAbove": { - "bBoxNE": [ - 0.192, - 1.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatissimoStrokeAboveSmall": { - "bBoxNE": [ - 0.256, - 1.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatissimoStrokeBelow": { - "bBoxNE": [ - 0.192, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.16 - ] - }, - "articStaccatissimoStrokeBelowSmall": { - "bBoxNE": [ - 0.256, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.16 - ] - }, - "articStaccatissimoWedgeAbove": { - "bBoxNE": [ - 0.356, - 1.16 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "articStaccatissimoWedgeAboveSmall": { - "bBoxNE": [ - 0.468, - 1.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatissimoWedgeBelow": { - "bBoxNE": [ - 0.356, - 0.0 - ], - "bBoxSW": [ - 0.004, - -1.16 - ] - }, - "articStaccatissimoWedgeBelowSmall": { - "bBoxNE": [ - 0.468, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.16 - ] - }, - "articStaccatoAbove": { - "bBoxNE": [ - 0.336, - 0.336 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatoAboveSmall": { - "bBoxNE": [ - 0.488, - 0.488 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articStaccatoBelow": { - "bBoxNE": [ - 0.336, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.336 - ] - }, - "articStaccatoBelowSmall": { - "bBoxNE": [ - 0.488, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.488 - ] - }, - "articStressAbove": { - "bBoxNE": [ - 0.932, - 0.948 - ], - "bBoxSW": [ - 0.0, - 0.02 - ] - }, - "articStressBelow": { - "bBoxNE": [ - 0.944, - 0.0 - ], - "bBoxSW": [ - 0.016, - -0.936 - ] - }, - "articTenutoAbove": { - "bBoxNE": [ - 1.352, - 0.192 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "articTenutoAboveSmall": { - "bBoxNE": [ - 1.356, - 0.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articTenutoAccentAbove": { - "bBoxNE": [ - 1.356, - 1.38 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "articTenutoAccentAboveSmall": { - "bBoxNE": [ - 1.356, - 1.536 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articTenutoAccentBelow": { - "bBoxNE": [ - 1.356, - 0.0 - ], - "bBoxSW": [ - -0.004, - -1.38 - ] - }, - "articTenutoAccentBelowSmall": { - "bBoxNE": [ - 1.356, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.576 - ] - }, - "articTenutoBelow": { - "bBoxNE": [ - 1.352, - 0.0 - ], - "bBoxSW": [ - -0.004, - -0.192 - ] - }, - "articTenutoBelowSmall": { - "bBoxNE": [ - 1.356, - 0.0 - ], - "bBoxSW": [ - 0.0, - -0.256 - ] - }, - "articTenutoStaccatoAbove": { - "bBoxNE": [ - 1.352, - 0.96 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "articTenutoStaccatoAboveSmall": { - "bBoxNE": [ - 1.356, - 1.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articTenutoStaccatoBelow": { - "bBoxNE": [ - 1.352, - 0.0 - ], - "bBoxSW": [ - -0.004, - -0.968 - ] - }, - "articTenutoStaccatoBelowSmall": { - "bBoxNE": [ - 1.356, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.144 - ] - }, - "articUnstressAbove": { - "bBoxNE": [ - 1.528, - 0.828 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "articUnstressBelow": { - "bBoxNE": [ - 1.532, - 0.0 - ], - "bBoxSW": [ - 0.004, - -0.828 - ] - }, - "augmentationDot": { - "bBoxNE": [ - 0.4, - 0.2 - ], - "bBoxSW": [ - 0.0, - -0.2 - ] - }, - "barlineDashed": { - "bBoxNE": [ - 0.144, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineDotted": { - "bBoxNE": [ - 0.196, - 3.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineDouble": { - "bBoxNE": [ - 0.576, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineFinal": { - "bBoxNE": [ - 0.912, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineHeavy": { - "bBoxNE": [ - 0.5, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineHeavyHeavy": { - "bBoxNE": [ - 1.372, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineReverseFinal": { - "bBoxNE": [ - 0.912, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineShort": { - "bBoxNE": [ - 0.148, - 4.0 - ], - "bBoxSW": [ - 0.004, - 2.0 - ] - }, - "barlineSingle": { - "bBoxNE": [ - 0.144, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "barlineTick": { - "bBoxNE": [ - 0.144, - 4.48 - ], - "bBoxSW": [ - 0.0, - 3.472 - ] - }, - "beamAccelRit1": { - "bBoxNE": [ - 4.864, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit10": { - "bBoxNE": [ - 2.244, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit11": { - "bBoxNE": [ - 1.944, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit12": { - "bBoxNE": [ - 1.644, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit13": { - "bBoxNE": [ - 1.344, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit14": { - "bBoxNE": [ - 1.044, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit15": { - "bBoxNE": [ - 0.744, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit2": { - "bBoxNE": [ - 4.564, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit3": { - "bBoxNE": [ - 4.264, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit4": { - "bBoxNE": [ - 4.044, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit5": { - "bBoxNE": [ - 3.744, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit6": { - "bBoxNE": [ - 3.444, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit7": { - "bBoxNE": [ - 3.144, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit8": { - "bBoxNE": [ - 2.844, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRit9": { - "bBoxNE": [ - 2.544, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "beamAccelRitFinal": { - "bBoxNE": [ - 0.128, - 3.064 - ], - "bBoxSW": [ - -0.136, - 0.0 - ] - }, - "brace": { - "bBoxNE": [ - 0.328, - 3.988 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "braceFlat": { - "bBoxNE": [ - 0.36, - 4.084 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "braceLarge": { - "bBoxNE": [ - 0.268, - 3.992 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "braceLarger": { - "bBoxNE": [ - 0.24, - 3.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "braceSmall": { - "bBoxNE": [ - 0.412, - 3.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "bracket": { - "bBoxNE": [ - 1.876, - 5.284 - ], - "bBoxSW": [ - 0.0, - -1.272 - ] - }, - "bracketBottom": { - "bBoxNE": [ - 1.876, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.18 - ] - }, - "bracketTop": { - "bBoxNE": [ - 1.876, - 1.18 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassBend": { - "bBoxNE": [ - 1.568, - 1.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassDoitLong": { - "bBoxNE": [ - 4.596, - 1.552 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassDoitMedium": { - "bBoxNE": [ - 1.956, - 1.544 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassDoitShort": { - "bBoxNE": [ - 1.28, - 1.532 - ], - "bBoxSW": [ - 0.004, - -0.012 - ] - }, - "brassFallLipLong": { - "bBoxNE": [ - 4.596, - 1.552 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallLipMedium": { - "bBoxNE": [ - 1.956, - 1.544 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallLipShort": { - "bBoxNE": [ - 1.172, - 1.528 - ], - "bBoxSW": [ - 0.004, - -0.02 - ] - }, - "brassFallRoughLong": { - "bBoxNE": [ - 4.78, - 4.944 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallRoughMedium": { - "bBoxNE": [ - 3.244, - 3.408 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallRoughShort": { - "bBoxNE": [ - 1.692, - 1.86 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallSmoothLong": { - "bBoxNE": [ - 5.456, - 5.448 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "brassFallSmoothMedium": { - "bBoxNE": [ - 3.588, - 3.588 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassFallSmoothShort": { - "bBoxNE": [ - 1.628, - 1.624 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "brassFlip": { - "bBoxNE": [ - 1.516, - 1.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassHarmonMuteClosed": { - "bBoxNE": [ - 1.468, - 1.408 - ], - "bBoxSW": [ - -0.296, - -0.28 - ] - }, - "brassHarmonMuteStemHalfLeft": { - "bBoxNE": [ - 1.428, - 1.436 - ], - "bBoxSW": [ - -0.216, - -0.256 - ] - }, - "brassHarmonMuteStemHalfRight": { - "bBoxNE": [ - 1.432, - 1.436 - ], - "bBoxSW": [ - -0.2, - -0.256 - ] - }, - "brassHarmonMuteStemOpen": { - "bBoxNE": [ - 1.432, - 1.432 - ], - "bBoxSW": [ - -0.232, - -0.232 - ] - }, - "brassJazzTurn": { - "bBoxNE": [ - 2.48, - 0.98 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassLiftLong": { - "bBoxNE": [ - 4.78, - 4.944 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassLiftMedium": { - "bBoxNE": [ - 3.244, - 3.408 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassLiftShort": { - "bBoxNE": [ - 1.692, - 1.86 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassLiftSmoothLong": { - "bBoxNE": [ - 5.456, - 5.448 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "brassLiftSmoothMedium": { - "bBoxNE": [ - 3.588, - 3.588 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassLiftSmoothShort": { - "bBoxNE": [ - 1.628, - 1.624 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "brassMuteClosed": { - "bBoxNE": [ - 1.088, - 1.088 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassMuteHalfClosed": { - "bBoxNE": [ - 1.22, - 1.216 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "brassMuteOpen": { - "bBoxNE": [ - 1.216, - 1.216 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "brassPlop": { - "bBoxNE": [ - 1.172, - 1.528 - ], - "bBoxSW": [ - 0.004, - -0.02 - ] - }, - "brassScoop": { - "bBoxNE": [ - 1.28, - 1.532 - ], - "bBoxSW": [ - 0.004, - -0.012 - ] - }, - "brassSmear": { - "bBoxNE": [ - 1.224, - 0.68 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "breathMarkComma": { - "bBoxNE": [ - 0.608, - 1.004 - ], - "bBoxSW": [ - 0.004, - 0.008 - ] - }, - "breathMarkSalzedo": { - "bBoxNE": [ - 2.112, - 1.732 - ], - "bBoxSW": [ - 0.0, - 0.008 - ] - }, - "breathMarkTick": { - "bBoxNE": [ - 2.0, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "breathMarkUpbow": { - "bBoxNE": [ - 0.996, - 1.98 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "bridgeClef": { - "bBoxNE": [ - 0.956, - 1.408 - ], - "bBoxSW": [ - 0.0, - -1.392 - ] - }, - "buzzRoll": { - "bBoxNE": [ - 0.624, - 0.464 - ], - "bBoxSW": [ - -0.62, - -0.464 - ] - }, - "cClef": { - "bBoxNE": [ - 2.796, - 2.024 - ], - "bBoxSW": [ - 0.0, - -2.024 - ] - }, - "cClef8vb": { - "bBoxNE": [ - 2.796, - 2.024 - ], - "bBoxSW": [ - 0.0, - -2.964 - ] - }, - "cClefArrowDown": { - "bBoxNE": [ - 2.796, - 2.024 - ], - "bBoxSW": [ - -0.132, - -3.644 - ] - }, - "cClefArrowUp": { - "bBoxNE": [ - 2.796, - 3.644 - ], - "bBoxSW": [ - -0.116, - -2.024 - ] - }, - "cClefChange": { - "bBoxNE": [ - 2.024, - 1.328 - ], - "bBoxSW": [ - 0.0, - -1.328 - ] - }, - "cClefCombining": { - "bBoxNE": [ - 0.908, - 2.148 - ], - "bBoxSW": [ - 0.0, - -2.148 - ] - }, - "cClefFrench": { - "bBoxNE": [ - 3.452, - 2.564 - ], - "bBoxSW": [ - 0.0, - -3.116 - ] - }, - "cClefReversed": { - "bBoxNE": [ - 2.796, - 2.024 - ], - "bBoxSW": [ - 0.0, - -2.024 - ] - }, - "cClefSmall": { - "bBoxNE": [ - 3.064, - 2.012 - ], - "bBoxSW": [ - 0.0, - -2.012 - ] - }, - "cClefSquare": { - "bBoxNE": [ - 2.336, - 1.996 - ], - "bBoxSW": [ - 0.0, - -1.996 - ] - }, - "caesura": { - "bBoxNE": [ - 1.536, - 2.128 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "caesuraCurved": { - "bBoxNE": [ - 1.492, - 2.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "caesuraShort": { - "bBoxNE": [ - 0.744, - 2.132 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "caesuraSingleStroke": { - "bBoxNE": [ - 0.896, - 2.128 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "caesuraThick": { - "bBoxNE": [ - 2.652, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "chantAccentusAbove": { - "bBoxNE": [ - 0.296, - 0.812 - ], - "bBoxSW": [ - 0.0, - 0.388 - ] - }, - "chantAccentusBelow": { - "bBoxNE": [ - 0.296, - -0.388 - ], - "bBoxSW": [ - 0.0, - -0.812 - ] - }, - "chantAuctumAsc": { - "bBoxNE": [ - 0.616, - 0.468 - ], - "bBoxSW": [ - 0.0, - -0.468 - ] - }, - "chantAuctumDesc": { - "bBoxNE": [ - 0.616, - 0.464 - ], - "bBoxSW": [ - 0.0, - -0.464 - ] - }, - "chantAugmentum": { - "bBoxNE": [ - 0.264, - 0.456 - ], - "bBoxSW": [ - 0.0, - 0.2 - ] - }, - "chantCaesura": { - "bBoxNE": [ - 0.572, - 2.0 - ], - "bBoxSW": [ - 0.0, - 1.04 - ] - }, - "chantCclef": { - "bBoxNE": [ - 0.536, - 0.884 - ], - "bBoxSW": [ - 0.0, - -0.884 - ] - }, - "chantCclefHufnagel": { - "bBoxNE": [ - 1.144, - 0.76 - ], - "bBoxSW": [ - 0.0, - -0.752 - ] - }, - "chantCirculusAbove": { - "bBoxNE": [ - 0.376, - 0.688 - ], - "bBoxSW": [ - 0.0, - 0.312 - ] - }, - "chantCirculusBelow": { - "bBoxNE": [ - 0.376, - -0.308 - ], - "bBoxSW": [ - 0.0, - -0.684 - ] - }, - "chantConnectingLineAsc2nd": { - "bBoxNE": [ - 0.056, - 0.6 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantConnectingLineAsc3rd": { - "bBoxNE": [ - 0.056, - 1.2 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantConnectingLineAsc4th": { - "bBoxNE": [ - 0.056, - 1.8 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantConnectingLineAsc5th": { - "bBoxNE": [ - 0.056, - 2.4 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantConnectingLineAsc6th": { - "bBoxNE": [ - 0.056, - 3.0 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantCustosStemDownPosHigh": { - "bBoxNE": [ - 0.24, - 0.404 - ], - "bBoxSW": [ - 0.0, - -1.76 - ] - }, - "chantCustosStemDownPosHighest": { - "bBoxNE": [ - 0.24, - 0.404 - ], - "bBoxSW": [ - 0.0, - -2.26 - ] - }, - "chantCustosStemDownPosMiddle": { - "bBoxNE": [ - 0.24, - 0.404 - ], - "bBoxSW": [ - 0.0, - -1.26 - ] - }, - "chantCustosStemUpPosLow": { - "bBoxNE": [ - 0.24, - 1.76 - ], - "bBoxSW": [ - 0.0, - -0.404 - ] - }, - "chantCustosStemUpPosLowest": { - "bBoxNE": [ - 0.24, - 2.26 - ], - "bBoxSW": [ - 0.0, - -0.404 - ] - }, - "chantCustosStemUpPosMiddle": { - "bBoxNE": [ - 0.24, - 1.26 - ], - "bBoxSW": [ - 0.0, - -0.404 - ] - }, - "chantDeminutumLower": { - "bBoxNE": [ - 0.056, - 0.5 - ], - "bBoxSW": [ - -0.248, - -0.256 - ] - }, - "chantDeminutumUpper": { - "bBoxNE": [ - 0.056, - 0.268 - ], - "bBoxSW": [ - -0.248, - -0.484 - ] - }, - "chantDivisioFinalis": { - "bBoxNE": [ - 0.48, - 1.5 - ], - "bBoxSW": [ - 0.0, - -1.5 - ] - }, - "chantDivisioMaior": { - "bBoxNE": [ - 0.064, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "chantDivisioMaxima": { - "bBoxNE": [ - 0.064, - 1.5 - ], - "bBoxSW": [ - 0.0, - -1.5 - ] - }, - "chantDivisioMinima": { - "bBoxNE": [ - 0.064, - 2.0 - ], - "bBoxSW": [ - 0.0, - 1.0 - ] - }, - "chantEntryLineAsc2nd": { - "bBoxNE": [ - 0.056, - 0.6 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantEntryLineAsc3rd": { - "bBoxNE": [ - 0.056, - 1.2 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantEntryLineAsc4th": { - "bBoxNE": [ - 0.056, - 1.8 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantEntryLineAsc5th": { - "bBoxNE": [ - 0.056, - 2.4 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantEntryLineAsc6th": { - "bBoxNE": [ - 0.056, - 3.0 - ], - "bBoxSW": [ - 0.0, - -0.6 - ] - }, - "chantEpisema": { - "bBoxNE": [ - 0.68, - 0.58 - ], - "bBoxSW": [ - -0.024, - 0.5 - ] - }, - "chantFclef": { - "bBoxNE": [ - 1.056, - 0.884 - ], - "bBoxSW": [ - 0.0, - -0.924 - ] - }, - "chantFclefHufnagel": { - "bBoxNE": [ - 1.156, - 0.64 - ], - "bBoxSW": [ - 0.004, - -1.656 - ] - }, - "chantIctusAbove": { - "bBoxNE": [ - 0.128, - 0.536 - ], - "bBoxSW": [ - 0.0, - 0.112 - ] - }, - "chantIctusBelow": { - "bBoxNE": [ - 0.128, - -0.112 - ], - "bBoxSW": [ - 0.0, - -0.536 - ] - }, - "chantLigaturaDesc2nd": { - "bBoxNE": [ - 1.86, - 0.416 - ], - "bBoxSW": [ - 0.0, - -0.912 - ] - }, - "chantLigaturaDesc3rd": { - "bBoxNE": [ - 2.316, - 0.416 - ], - "bBoxSW": [ - 0.0, - -1.6 - ] - }, - "chantLigaturaDesc4th": { - "bBoxNE": [ - 2.316, - 0.416 - ], - "bBoxSW": [ - 0.0, - -2.212 - ] - }, - "chantLigaturaDesc5th": { - "bBoxNE": [ - 2.316, - 0.416 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "chantOriscusAscending": { - "bBoxNE": [ - 0.616, - 0.456 - ], - "bBoxSW": [ - 0.0, - -0.46 - ] - }, - "chantOriscusDescending": { - "bBoxNE": [ - 0.616, - 0.456 - ], - "bBoxSW": [ - 0.0, - -0.46 - ] - }, - "chantOriscusLiquescens": { - "bBoxNE": [ - 0.612, - 0.456 - ], - "bBoxSW": [ - 0.0, - -0.984 - ] - }, - "chantPodatusLower": { - "bBoxNE": [ - 0.616, - 0.656 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "chantPodatusUpper": { - "bBoxNE": [ - 0.056, - 0.78 - ], - "bBoxSW": [ - -0.508, - -0.012 - ] - }, - "chantPunctum": { - "bBoxNE": [ - 0.64, - 0.408 - ], - "bBoxSW": [ - 0.0, - -0.404 - ] - }, - "chantPunctumCavum": { - "bBoxNE": [ - 0.64, - 0.388 - ], - "bBoxSW": [ - 0.0, - -0.392 - ] - }, - "chantPunctumDeminutum": { - "bBoxNE": [ - 0.364, - 0.232 - ], - "bBoxSW": [ - 0.0, - -0.228 - ] - }, - "chantPunctumInclinatum": { - "bBoxNE": [ - 0.6, - 0.452 - ], - "bBoxSW": [ - 0.0, - -0.452 - ] - }, - "chantPunctumInclinatumAuctum": { - "bBoxNE": [ - 0.648, - 0.376 - ], - "bBoxSW": [ - 0.0, - -0.456 - ] - }, - "chantPunctumInclinatumDeminutum": { - "bBoxNE": [ - 0.36, - 0.272 - ], - "bBoxSW": [ - 0.0, - -0.272 - ] - }, - "chantPunctumLinea": { - "bBoxNE": [ - 1.064, - 0.456 - ], - "bBoxSW": [ - 0.0, - -0.456 - ] - }, - "chantPunctumLineaCavum": { - "bBoxNE": [ - 1.064, - 0.456 - ], - "bBoxSW": [ - 0.0, - -0.456 - ] - }, - "chantPunctumVirga": { - "bBoxNE": [ - 0.64, - 0.408 - ], - "bBoxSW": [ - 0.0, - -1.604 - ] - }, - "chantPunctumVirgaReversed": { - "bBoxNE": [ - 0.64, - 0.408 - ], - "bBoxSW": [ - 0.0, - -1.604 - ] - }, - "chantQuilisma": { - "bBoxNE": [ - 0.616, - 0.46 - ], - "bBoxSW": [ - 0.0, - -0.46 - ] - }, - "chantSemicirculusAbove": { - "bBoxNE": [ - 0.376, - 0.48 - ], - "bBoxSW": [ - 0.0, - 0.292 - ] - }, - "chantSemicirculusBelow": { - "bBoxNE": [ - 0.376, - -0.288 - ], - "bBoxSW": [ - 0.0, - -0.476 - ] - }, - "chantStaff": { - "bBoxNE": [ - 2.0, - 1.532 - ], - "bBoxSW": [ - 0.0, - -1.532 - ] - }, - "chantStaffNarrow": { - "bBoxNE": [ - 1.0, - 1.532 - ], - "bBoxSW": [ - 0.0, - -1.532 - ] - }, - "chantStaffWide": { - "bBoxNE": [ - 3.0, - 1.532 - ], - "bBoxSW": [ - 0.0, - -1.532 - ] - }, - "chantStrophicus": { - "bBoxNE": [ - 0.496, - 0.372 - ], - "bBoxSW": [ - 0.0, - -0.368 - ] - }, - "chantStrophicusAuctus": { - "bBoxNE": [ - 0.608, - 0.376 - ], - "bBoxSW": [ - 0.0, - -0.468 - ] - }, - "chantStrophicusLiquescens2nd": { - "bBoxNE": [ - 0.644, - 0.84 - ], - "bBoxSW": [ - 0.0, - -0.148 - ] - }, - "chantStrophicusLiquescens3rd": { - "bBoxNE": [ - 0.652, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.156 - ] - }, - "chantStrophicusLiquescens4th": { - "bBoxNE": [ - 0.676, - 1.772 - ], - "bBoxSW": [ - 0.0, - -0.148 - ] - }, - "chantStrophicusLiquescens5th": { - "bBoxNE": [ - 0.712, - 2.34 - ], - "bBoxSW": [ - 0.004, - -0.16 - ] - }, - "chantVirgula": { - "bBoxNE": [ - 0.364, - 2.0 - ], - "bBoxSW": [ - 0.0, - 1.02 - ] - }, - "clef15": { - "bBoxNE": [ - 1.436, - 1.02 - ], - "bBoxSW": [ - 0.0, - -0.012 - ] - }, - "clef8": { - "bBoxNE": [ - 0.82, - 0.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "coda": { - "bBoxNE": [ - 3.82, - 3.592 - ], - "bBoxSW": [ - -0.016, - -0.632 - ] - }, - "codaJapanese": { - "bBoxNE": [ - 3.828, - 3.6 - ], - "bBoxSW": [ - 0.0, - -0.612 - ] - }, - "codaSquare": { - "bBoxNE": [ - 3.288, - 3.612 - ], - "bBoxSW": [ - 0.0, - -0.616 - ] - }, - "conductorBeat2Compound": { - "bBoxNE": [ - 2.876, - 2.012 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorBeat2Simple": { - "bBoxNE": [ - 2.868, - 2.012 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "conductorBeat3Compound": { - "bBoxNE": [ - 2.44, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorBeat3Simple": { - "bBoxNE": [ - 2.44, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorBeat4Compound": { - "bBoxNE": [ - 2.02, - 2.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorBeat4Simple": { - "bBoxNE": [ - 2.024, - 2.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorLeftBeat": { - "bBoxNE": [ - 0.796, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorRightBeat": { - "bBoxNE": [ - 0.796, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorStrongBeat": { - "bBoxNE": [ - 1.596, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "conductorWeakBeat": { - "bBoxNE": [ - 1.6, - 4.1 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "csymAugmented": { - "bBoxNE": [ - 1.9, - 1.9 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "csymBracketLeftTall": { - "bBoxNE": [ - 1.244, - 8.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "csymBracketRightTall": { - "bBoxNE": [ - 1.244, - 8.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "csymDiminished": { - "bBoxNE": [ - 1.892, - 1.892 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "csymHalfDiminished": { - "bBoxNE": [ - 1.948, - 1.94 - ], - "bBoxSW": [ - -0.076, - -0.06 - ] - }, - "csymMajorSeventh": { - "bBoxNE": [ - 2.228, - 1.904 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "csymMinor": { - "bBoxNE": [ - 1.9, - 1.076 - ], - "bBoxSW": [ - 0.0, - 0.82 - ] - }, - "csymParensLeftTall": { - "bBoxNE": [ - 1.484, - 7.976 - ], - "bBoxSW": [ - 0.012, - 0.0 - ] - }, - "csymParensRightTall": { - "bBoxNE": [ - 1.484, - 7.976 - ], - "bBoxSW": [ - 0.012, - 0.0 - ] - }, - "curlewSign": { - "bBoxNE": [ - 2.808, - 0.792 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daCapo": { - "bBoxNE": [ - 4.328, - 1.768 - ], - "bBoxSW": [ - 0.044, - -0.036 - ] - }, - "dalSegno": { - "bBoxNE": [ - 4.328, - 1.768 - ], - "bBoxSW": [ - 0.044, - -0.036 - ] - }, - "daseianExcellentes1": { - "bBoxNE": [ - 2.616, - 3.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianExcellentes2": { - "bBoxNE": [ - 2.412, - 2.292 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianExcellentes3": { - "bBoxNE": [ - 2.272, - 1.432 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianExcellentes4": { - "bBoxNE": [ - 2.436, - 2.408 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "daseianFinales1": { - "bBoxNE": [ - 2.616, - 3.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianFinales2": { - "bBoxNE": [ - 2.412, - 2.292 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianFinales3": { - "bBoxNE": [ - 1.26, - 1.432 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianFinales4": { - "bBoxNE": [ - 2.436, - 2.408 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "daseianGraves1": { - "bBoxNE": [ - 2.616, - 3.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianGraves2": { - "bBoxNE": [ - 2.412, - 2.292 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianGraves3": { - "bBoxNE": [ - 2.66, - 1.432 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianGraves4": { - "bBoxNE": [ - 2.436, - 2.408 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "daseianResidua1": { - "bBoxNE": [ - 3.02, - 2.616 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianResidua2": { - "bBoxNE": [ - 2.292, - 2.412 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianSuperiores1": { - "bBoxNE": [ - 2.616, - 3.02 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianSuperiores2": { - "bBoxNE": [ - 2.412, - 2.292 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianSuperiores3": { - "bBoxNE": [ - 1.072, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "daseianSuperiores4": { - "bBoxNE": [ - 2.436, - 2.408 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "doubleTongueAbove": { - "bBoxNE": [ - 1.78, - 0.956 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "doubleTongueAboveNoSlur": { - "bBoxNE": [ - 1.0, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "doubleTongueBelow": { - "bBoxNE": [ - 1.78, - 0.956 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "doubleTongueBelowNoSlur": { - "bBoxNE": [ - 1.0, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "dynamicCrescendoHairpin": { - "bBoxNE": [ - 2.944, - 1.424 - ], - "bBoxSW": [ - 0.016, - 0.372 - ] - }, - "dynamicDiminuendoHairpin": { - "bBoxNE": [ - 2.944, - 1.424 - ], - "bBoxSW": [ - 0.016, - 0.372 - ] - }, - "dynamicFF": { - "bBoxNE": [ - 2.44, - 1.776 - ], - "bBoxSW": [ - -0.54, - -0.608 - ] - }, - "dynamicFFF": { - "bBoxNE": [ - 3.32, - 1.776 - ], - "bBoxSW": [ - -0.62, - -0.608 - ] - }, - "dynamicFFFF": { - "bBoxNE": [ - 4.28, - 1.776 - ], - "bBoxSW": [ - -0.62, - -0.608 - ] - }, - "dynamicFFFFF": { - "bBoxNE": [ - 5.24, - 1.776 - ], - "bBoxSW": [ - -0.62, - -0.608 - ] - }, - "dynamicFFFFFF": { - "bBoxNE": [ - 6.2, - 1.776 - ], - "bBoxSW": [ - -0.62, - -0.608 - ] - }, - "dynamicForte": { - "bBoxNE": [ - 1.456, - 1.776 - ], - "bBoxSW": [ - -0.564, - -0.608 - ] - }, - "dynamicFortePiano": { - "bBoxNE": [ - 2.476, - 1.776 - ], - "bBoxSW": [ - -0.564, - -0.608 - ] - }, - "dynamicForteSmall": { - "bBoxNE": [ - 1.78, - 1.828 - ], - "bBoxSW": [ - -0.56, - -0.664 - ] - }, - "dynamicForzando": { - "bBoxNE": [ - 1.988, - 1.776 - ], - "bBoxSW": [ - -0.564, - -0.608 - ] - }, - "dynamicMF": { - "bBoxNE": [ - 3.272, - 1.724 - ], - "bBoxSW": [ - -0.08, - -0.66 - ] - }, - "dynamicMP": { - "bBoxNE": [ - 3.3, - 1.096 - ], - "bBoxSW": [ - -0.08, - -0.568 - ] - }, - "dynamicMessaDiVoce": { - "bBoxNE": [ - 6.22, - 1.424 - ], - "bBoxSW": [ - 0.016, - 0.372 - ] - }, - "dynamicMezzo": { - "bBoxNE": [ - 1.784, - 1.096 - ], - "bBoxSW": [ - -0.08, - -0.04 - ] - }, - "dynamicMezzoSmall": { - "bBoxNE": [ - 2.168, - 1.092 - ], - "bBoxSW": [ - 0.0, - -0.044 - ] - }, - "dynamicNiente": { - "bBoxNE": [ - 1.232, - 1.096 - ], - "bBoxSW": [ - -0.092, - -0.04 - ] - }, - "dynamicNienteForHairpin": { - "bBoxNE": [ - 0.536, - 1.172 - ], - "bBoxSW": [ - 0.0, - 0.636 - ] - }, - "dynamicNienteSmall": { - "bBoxNE": [ - 1.336, - 1.116 - ], - "bBoxSW": [ - -0.148, - -0.024 - ] - }, - "dynamicPF": { - "bBoxNE": [ - 3.08, - 1.776 - ], - "bBoxSW": [ - -0.288, - -0.608 - ] - }, - "dynamicPP": { - "bBoxNE": [ - 2.912, - 1.096 - ], - "bBoxSW": [ - -0.328, - -0.568 - ] - }, - "dynamicPPP": { - "bBoxNE": [ - 4.292, - 1.096 - ], - "bBoxSW": [ - -0.368, - -0.568 - ] - }, - "dynamicPPPP": { - "bBoxNE": [ - 5.672, - 1.096 - ], - "bBoxSW": [ - -0.408, - -0.568 - ] - }, - "dynamicPPPPP": { - "bBoxNE": [ - 7.092, - 1.096 - ], - "bBoxSW": [ - -0.408, - -0.568 - ] - }, - "dynamicPPPPPP": { - "bBoxNE": [ - 8.512, - 1.096 - ], - "bBoxSW": [ - -0.408, - -0.568 - ] - }, - "dynamicPiano": { - "bBoxNE": [ - 1.464, - 1.096 - ], - "bBoxSW": [ - -0.356, - -0.568 - ] - }, - "dynamicPianoSmall": { - "bBoxNE": [ - 1.74, - 1.12 - ], - "bBoxSW": [ - -0.344, - -0.536 - ] - }, - "dynamicRinforzando": { - "bBoxNE": [ - 1.108, - 1.096 - ], - "bBoxSW": [ - -0.08, - 0.0 - ] - }, - "dynamicRinforzando1": { - "bBoxNE": [ - 2.5, - 1.776 - ], - "bBoxSW": [ - -0.08, - -0.608 - ] - }, - "dynamicRinforzando2": { - "bBoxNE": [ - 2.976, - 1.776 - ], - "bBoxSW": [ - -0.08, - -0.608 - ] - }, - "dynamicRinforzandoSmall": { - "bBoxNE": [ - 1.436, - 1.148 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "dynamicSforzando": { - "bBoxNE": [ - 0.916, - 1.092 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "dynamicSforzando1": { - "bBoxNE": [ - 2.416, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicSforzandoPianissimo": { - "bBoxNE": [ - 4.796, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicSforzandoPiano": { - "bBoxNE": [ - 3.38, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicSforzandoSmall": { - "bBoxNE": [ - 0.9, - 1.144 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "dynamicSforzato": { - "bBoxNE": [ - 2.932, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicSforzatoFF": { - "bBoxNE": [ - 3.856, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicSforzatoPiano": { - "bBoxNE": [ - 4.304, - 1.776 - ], - "bBoxSW": [ - 0.0, - -0.608 - ] - }, - "dynamicZ": { - "bBoxNE": [ - 0.976, - 1.072 - ], - "bBoxSW": [ - -0.12, - -0.04 - ] - }, - "dynamicZSmall": { - "bBoxNE": [ - 1.168, - 1.124 - ], - "bBoxSW": [ - 0.0, - -0.016 - ] - }, - "elecAudioChannelsEight": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioChannelsFive": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioChannelsFour": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioChannelsOne": { - "bBoxNE": [ - 3.712, - 4.012 - ], - "bBoxSW": [ - 0.268, - 0.304 - ] - }, - "elecAudioChannelsSeven": { - "bBoxNE": [ - 4.004, - 4.0 - ], - "bBoxSW": [ - 0.0, - -0.012 - ] - }, - "elecAudioChannelsSix": { - "bBoxNE": [ - 4.004, - 4.0 - ], - "bBoxSW": [ - 0.0, - -0.012 - ] - }, - "elecAudioChannelsThreeFrontal": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.304 - ] - }, - "elecAudioChannelsThreeSurround": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioChannelsTwo": { - "bBoxNE": [ - 4.004, - 4.012 - ], - "bBoxSW": [ - 0.0, - 0.304 - ] - }, - "elecAudioIn": { - "bBoxNE": [ - 4.008, - 3.116 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioMono": { - "bBoxNE": [ - 2.692, - 2.692 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioOut": { - "bBoxNE": [ - 4.008, - 3.116 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecAudioStereo": { - "bBoxNE": [ - 3.996, - 2.692 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecCamera": { - "bBoxNE": [ - 4.0, - 3.636 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecDataIn": { - "bBoxNE": [ - 4.252, - 3.984 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecDataOut": { - "bBoxNE": [ - 4.252, - 3.984 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecDisc": { - "bBoxNE": [ - 4.0, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecDownload": { - "bBoxNE": [ - 2.172, - 3.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecEject": { - "bBoxNE": [ - 2.148, - 2.568 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "elecFastForward": { - "bBoxNE": [ - 3.6, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecHeadphones": { - "bBoxNE": [ - 3.528, - 3.244 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecHeadset": { - "bBoxNE": [ - 3.528, - 3.996 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecLineIn": { - "bBoxNE": [ - 3.284, - 3.996 - ], - "bBoxSW": [ - 0.0, - -1.016 - ] - }, - "elecLineOut": { - "bBoxNE": [ - 3.284, - 3.996 - ], - "bBoxSW": [ - 0.0, - -1.404 - ] - }, - "elecLoop": { - "bBoxNE": [ - 3.0, - 2.188 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecLoudspeaker": { - "bBoxNE": [ - 2.64, - 4.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController0": { - "bBoxNE": [ - 2.192, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController100": { - "bBoxNE": [ - 2.192, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController20": { - "bBoxNE": [ - 2.192, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController40": { - "bBoxNE": [ - 2.196, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController60": { - "bBoxNE": [ - 2.196, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIController80": { - "bBoxNE": [ - 2.192, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIIn": { - "bBoxNE": [ - 2.16, - 3.62 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMIDIOut": { - "bBoxNE": [ - 2.16, - 3.62 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMicrophone": { - "bBoxNE": [ - 2.192, - 3.964 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMicrophoneMute": { - "bBoxNE": [ - 2.192, - 5.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMicrophoneUnmute": { - "bBoxNE": [ - 2.288, - 4.98 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMixingConsole": { - "bBoxNE": [ - 3.448, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMonitor": { - "bBoxNE": [ - 4.012, - 3.036 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecMute": { - "bBoxNE": [ - 4.388, - 4.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecPause": { - "bBoxNE": [ - 1.98, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecPlay": { - "bBoxNE": [ - 1.872, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecPowerOnOff": { - "bBoxNE": [ - 2.696, - 2.992 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecProjector": { - "bBoxNE": [ - 3.996, - 1.984 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecReplay": { - "bBoxNE": [ - 2.644, - 3.024 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecRewind": { - "bBoxNE": [ - 3.6, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecShuffle": { - "bBoxNE": [ - 4.572, - 2.42 - ], - "bBoxSW": [ - 0.0, - -0.476 - ] - }, - "elecSkipBackwards": { - "bBoxNE": [ - 3.928, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecSkipForwards": { - "bBoxNE": [ - 3.928, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecStop": { - "bBoxNE": [ - 2.136, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecTape": { - "bBoxNE": [ - 4.004, - 1.792 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecUSB": { - "bBoxNE": [ - 1.776, - 4.004 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecUnmute": { - "bBoxNE": [ - 3.836, - 4.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecUpload": { - "bBoxNE": [ - 2.172, - 3.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVideoCamera": { - "bBoxNE": [ - 3.788, - 2.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "elecVideoIn": { - "bBoxNE": [ - 3.268, - 4.004 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVideoOut": { - "bBoxNE": [ - 3.268, - 4.004 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeFader": { - "bBoxNE": [ - 0.948, - 4.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeFaderThumb": { - "bBoxNE": [ - 0.844, - 1.112 - ], - "bBoxSW": [ - 0.1, - -0.032 - ] - }, - "elecVolumeLevel0": { - "bBoxNE": [ - 0.944, - 4.08 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "elecVolumeLevel100": { - "bBoxNE": [ - 0.944, - 4.112 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeLevel20": { - "bBoxNE": [ - 0.944, - 4.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeLevel40": { - "bBoxNE": [ - 0.944, - 4.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeLevel60": { - "bBoxNE": [ - 0.944, - 4.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "elecVolumeLevel80": { - "bBoxNE": [ - 0.944, - 4.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fClef": { - "bBoxNE": [ - 2.736, - 1.048 - ], - "bBoxSW": [ - -0.02, - -2.54 - ] - }, - "fClef15ma": { - "bBoxNE": [ - 2.736, - 1.984 - ], - "bBoxSW": [ - -0.02, - -2.54 - ] - }, - "fClef15mb": { - "bBoxNE": [ - 2.736, - 1.048 - ], - "bBoxSW": [ - -0.02, - -2.968 - ] - }, - "fClef19thCentury": { - "bBoxNE": [ - 4.164, - 1.092 - ], - "bBoxSW": [ - 0.0, - -2.328 - ] - }, - "fClef5Below": { - "bBoxNE": [ - 2.736, - 1.048 - ], - "bBoxSW": [ - -0.02, - -3.536 - ] - }, - "fClef8va": { - "bBoxNE": [ - 2.736, - 1.98 - ], - "bBoxSW": [ - -0.02, - -2.54 - ] - }, - "fClef8vb": { - "bBoxNE": [ - 2.736, - 1.048 - ], - "bBoxSW": [ - -0.02, - -2.976 - ] - }, - "fClefArrowDown": { - "bBoxNE": [ - 2.736, - 1.048 - ], - "bBoxSW": [ - -0.02, - -3.996 - ] - }, - "fClefArrowUp": { - "bBoxNE": [ - 2.736, - 2.644 - ], - "bBoxSW": [ - -0.02, - -2.54 - ] - }, - "fClefChange": { - "bBoxNE": [ - 1.852, - 0.68 - ], - "bBoxSW": [ - -0.06, - -1.656 - ] - }, - "fClefFrench": { - "bBoxNE": [ - 3.404, - 1.044 - ], - "bBoxSW": [ - 0.0, - -2.34 - ] - }, - "fClefReversed": { - "bBoxNE": [ - 2.756, - 1.048 - ], - "bBoxSW": [ - 0.0, - -2.54 - ] - }, - "fClefSmall": { - "bBoxNE": [ - 2.804, - 1.028 - ], - "bBoxSW": [ - -0.092, - -2.508 - ] - }, - "fClefTurned": { - "bBoxNE": [ - 2.756, - 2.532 - ], - "bBoxSW": [ - 0.0, - -1.056 - ] - }, - "fermataAbove": { - "bBoxNE": [ - 2.42, - 1.316 - ], - "bBoxSW": [ - 0.012, - -0.012 - ] - }, - "fermataBelow": { - "bBoxNE": [ - 2.42, - 0.0 - ], - "bBoxSW": [ - 0.012, - -1.328 - ] - }, - "fermataLongAbove": { - "bBoxNE": [ - 2.412, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "fermataLongBelow": { - "bBoxNE": [ - 2.412, - 0.004 - ], - "bBoxSW": [ - 0.0, - -1.332 - ] - }, - "fermataLongHenzeAbove": { - "bBoxNE": [ - 2.944, - 1.62 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "fermataLongHenzeBelow": { - "bBoxNE": [ - 2.944, - 0.0 - ], - "bBoxSW": [ - 0.004, - -1.62 - ] - }, - "fermataShortAbove": { - "bBoxNE": [ - 2.416, - 1.364 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fermataShortBelow": { - "bBoxNE": [ - 2.416, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.364 - ] - }, - "fermataShortHenzeAbove": { - "bBoxNE": [ - 1.736, - 1.62 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fermataShortHenzeBelow": { - "bBoxNE": [ - 1.736, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.62 - ] - }, - "fermataVeryLongAbove": { - "bBoxNE": [ - 2.86, - 1.632 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fermataVeryLongBelow": { - "bBoxNE": [ - 2.86, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.632 - ] - }, - "fermataVeryShortAbove": { - "bBoxNE": [ - 2.904, - 1.796 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fermataVeryShortBelow": { - "bBoxNE": [ - 2.904, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.796 - ] - }, - "figbass0": { - "bBoxNE": [ - 0.94, - 1.004 - ], - "bBoxSW": [ - 0.08, - -0.004 - ] - }, - "figbass1": { - "bBoxNE": [ - 0.548, - 1.016 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass2": { - "bBoxNE": [ - 0.888, - 1.012 - ], - "bBoxSW": [ - 0.08, - -0.012 - ] - }, - "figbass2Raised": { - "bBoxNE": [ - 0.892, - 1.024 - ], - "bBoxSW": [ - 0.08, - -0.192 - ] - }, - "figbass3": { - "bBoxNE": [ - 0.82, - 1.008 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass4": { - "bBoxNE": [ - 0.864, - 1.012 - ], - "bBoxSW": [ - 0.08, - 0.004 - ] - }, - "figbass4Raised": { - "bBoxNE": [ - 1.024, - 1.004 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass5": { - "bBoxNE": [ - 0.82, - 1.032 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass5Raised1": { - "bBoxNE": [ - 0.832, - 1.224 - ], - "bBoxSW": [ - 0.08, - 0.004 - ] - }, - "figbass5Raised2": { - "bBoxNE": [ - 0.832, - 1.22 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass5Raised3": { - "bBoxNE": [ - 1.08, - 1.036 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass6": { - "bBoxNE": [ - 0.864, - 1.0 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass6Raised": { - "bBoxNE": [ - 1.008, - 0.996 - ], - "bBoxSW": [ - -0.064, - 0.0 - ] - }, - "figbass6Raised2": { - "bBoxNE": [ - 0.784, - 1.052 - ], - "bBoxSW": [ - -0.056, - 0.0 - ] - }, - "figbass7": { - "bBoxNE": [ - 0.868, - 0.98 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass7Raised1": { - "bBoxNE": [ - 0.868, - 1.16 - ], - "bBoxSW": [ - 0.08, - -0.004 - ] - }, - "figbass7Raised2": { - "bBoxNE": [ - 0.988, - 0.976 - ], - "bBoxSW": [ - 0.08, - -0.004 - ] - }, - "figbass8": { - "bBoxNE": [ - 0.848, - 1.004 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass9": { - "bBoxNE": [ - 0.864, - 1.0 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "figbass9Raised": { - "bBoxNE": [ - 1.024, - 1.0 - ], - "bBoxSW": [ - -0.048, - 0.0 - ] - }, - "figbassBracketLeft": { - "bBoxNE": [ - 0.316, - 1.076 - ], - "bBoxSW": [ - 0.0, - -0.08 - ] - }, - "figbassBracketRight": { - "bBoxNE": [ - 0.272, - 1.076 - ], - "bBoxSW": [ - -0.044, - -0.08 - ] - }, - "figbassCombiningLowering": { - "bBoxNE": [ - 1.648, - 0.78 - ], - "bBoxSW": [ - 0.0, - 0.148 - ] - }, - "figbassCombiningRaising": { - "bBoxNE": [ - 1.648, - 0.78 - ], - "bBoxSW": [ - 0.0, - 0.148 - ] - }, - "figbassDoubleFlat": { - "bBoxNE": [ - 1.36, - 1.9 - ], - "bBoxSW": [ - 0.08, - -0.008 - ] - }, - "figbassDoubleSharp": { - "bBoxNE": [ - 1.092, - 1.016 - ], - "bBoxSW": [ - 0.08, - -0.02 - ] - }, - "figbassFlat": { - "bBoxNE": [ - 0.776, - 1.868 - ], - "bBoxSW": [ - 0.08, - -0.012 - ] - }, - "figbassNatural": { - "bBoxNE": [ - 0.556, - 1.472 - ], - "bBoxSW": [ - 0.08, - -0.44 - ] - }, - "figbassParensLeft": { - "bBoxNE": [ - 0.392, - 1.096 - ], - "bBoxSW": [ - 0.004, - -0.084 - ] - }, - "figbassParensRight": { - "bBoxNE": [ - 0.352, - 1.088 - ], - "bBoxSW": [ - -0.036, - -0.096 - ] - }, - "figbassPlus": { - "bBoxNE": [ - 0.536, - 0.776 - ], - "bBoxSW": [ - 0.0, - 0.24 - ] - }, - "figbassSharp": { - "bBoxNE": [ - 0.848, - 1.568 - ], - "bBoxSW": [ - 0.08, - -0.584 - ] - }, - "flag1024thDown": { - "bBoxNE": [ - 1.204, - 2.972 - ], - "bBoxSW": [ - 0.0, - -4.808 - ] - }, - "flag1024thDownSmall": { - "bBoxNE": [ - 1.272, - 3.244 - ], - "bBoxSW": [ - 0.0, - -4.724 - ] - }, - "flag1024thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -4.8 - ] - }, - "flag1024thUp": { - "bBoxNE": [ - 1.06, - 4.316 - ], - "bBoxSW": [ - 0.0, - -3.248 - ] - }, - "flag1024thUpShort": { - "bBoxNE": [ - 1.056, - 4.464 - ], - "bBoxSW": [ - 0.0, - -2.456 - ] - }, - "flag1024thUpSmall": { - "bBoxNE": [ - 1.148, - 4.52 - ], - "bBoxSW": [ - 0.0, - -3.244 - ] - }, - "flag1024thUpStraight": { - "bBoxNE": [ - 0.96, - 4.8 - ], - "bBoxSW": [ - 0.0, - -2.22 - ] - }, - "flag128thDown": { - "bBoxNE": [ - 1.092, - 3.248 - ], - "bBoxSW": [ - 0.0, - -2.32 - ] - }, - "flag128thDownSmall": { - "bBoxNE": [ - 1.268, - 3.236 - ], - "bBoxSW": [ - 0.0, - -2.472 - ] - }, - "flag128thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -2.4 - ] - }, - "flag128thUp": { - "bBoxNE": [ - 1.044, - 2.132 - ], - "bBoxSW": [ - 0.0, - -3.248 - ] - }, - "flag128thUpShort": { - "bBoxNE": [ - 1.056, - 2.364 - ], - "bBoxSW": [ - 0.0, - -2.492 - ] - }, - "flag128thUpSmall": { - "bBoxNE": [ - 1.148, - 2.408 - ], - "bBoxSW": [ - 0.0, - -3.24 - ] - }, - "flag128thUpStraight": { - "bBoxNE": [ - 0.96, - 2.4 - ], - "bBoxSW": [ - 0.0, - -2.22 - ] - }, - "flag16thDown": { - "bBoxNE": [ - 1.164, - 3.252 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "flag16thDownSmall": { - "bBoxNE": [ - 1.268, - 3.288 - ], - "bBoxSW": [ - 0.0, - -0.076 - ] - }, - "flag16thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "flag16thUp": { - "bBoxNE": [ - 1.116, - 0.008 - ], - "bBoxSW": [ - 0.0, - -3.252 - ] - }, - "flag16thUpShort": { - "bBoxNE": [ - 1.056, - 0.048 - ], - "bBoxSW": [ - 0.0, - -2.496 - ] - }, - "flag16thUpSmall": { - "bBoxNE": [ - 1.144, - 0.072 - ], - "bBoxSW": [ - 0.0, - -3.232 - ] - }, - "flag16thUpStraight": { - "bBoxNE": [ - 0.96, - 0.0 - ], - "bBoxSW": [ - 0.0, - -2.22 - ] - }, - "flag256thDown": { - "bBoxNE": [ - 1.196, - 3.252 - ], - "bBoxSW": [ - 0.0, - -3.004 - ] - }, - "flag256thDownSmall": { - "bBoxNE": [ - 1.268, - 3.216 - ], - "bBoxSW": [ - 0.0, - -3.164 - ] - }, - "flag256thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -3.2 - ] - }, - "flag256thUp": { - "bBoxNE": [ - 1.056, - 2.816 - ], - "bBoxSW": [ - 0.0, - -3.248 - ] - }, - "flag256thUpShort": { - "bBoxNE": [ - 1.056, - 3.152 - ], - "bBoxSW": [ - 0.0, - -2.456 - ] - }, - "flag256thUpSmall": { - "bBoxNE": [ - 1.148, - 3.072 - ], - "bBoxSW": [ - 0.0, - -3.244 - ] - }, - "flag256thUpStraight": { - "bBoxNE": [ - 0.96, - 3.2 - ], - "bBoxSW": [ - 0.0, - -2.22 - ] - }, - "flag32ndDown": { - "bBoxNE": [ - 1.092, - 3.248 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "flag32ndDownSmall": { - "bBoxNE": [ - 1.268, - 3.24 - ], - "bBoxSW": [ - 0.0, - -0.9 - ] - }, - "flag32ndDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -0.8 - ] - }, - "flag32ndUp": { - "bBoxNE": [ - 1.044, - 0.596 - ], - "bBoxSW": [ - 0.0, - -3.248 - ] - }, - "flag32ndUpShort": { - "bBoxNE": [ - 1.056, - 0.884 - ], - "bBoxSW": [ - 0.0, - -2.452 - ] - }, - "flag32ndUpSmall": { - "bBoxNE": [ - 1.144, - 0.812 - ], - "bBoxSW": [ - 0.0, - -3.236 - ] - }, - "flag32ndUpStraight": { - "bBoxNE": [ - 0.96, - 0.812 - ], - "bBoxSW": [ - 0.0, - -2.208 - ] - }, - "flag512thDown": { - "bBoxNE": [ - 1.2, - 3.248 - ], - "bBoxSW": [ - 0.0, - -3.756 - ] - }, - "flag512thDownSmall": { - "bBoxNE": [ - 1.268, - 3.236 - ], - "bBoxSW": [ - 0.0, - -3.92 - ] - }, - "flag512thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -4.0 - ] - }, - "flag512thUp": { - "bBoxNE": [ - 1.06, - 3.564 - ], - "bBoxSW": [ - -0.004, - -3.248 - ] - }, - "flag512thUpShort": { - "bBoxNE": [ - 1.056, - 3.796 - ], - "bBoxSW": [ - 0.0, - -2.464 - ] - }, - "flag512thUpSmall": { - "bBoxNE": [ - 1.148, - 3.808 - ], - "bBoxSW": [ - 0.0, - -3.244 - ] - }, - "flag512thUpStraight": { - "bBoxNE": [ - 0.96, - 4.0 - ], - "bBoxSW": [ - 0.0, - -2.22 - ] - }, - "flag64thDown": { - "bBoxNE": [ - 1.092, - 3.248 - ], - "bBoxSW": [ - 0.0, - -1.504 - ] - }, - "flag64thDownSmall": { - "bBoxNE": [ - 1.272, - 3.24 - ], - "bBoxSW": [ - 0.0, - -1.632 - ] - }, - "flag64thDownStraight": { - "bBoxNE": [ - 0.96, - 2.22 - ], - "bBoxSW": [ - 0.0, - -1.6 - ] - }, - "flag64thUp": { - "bBoxNE": [ - 1.044, - 1.388 - ], - "bBoxSW": [ - 0.0, - -3.248 - ] - }, - "flag64thUpShort": { - "bBoxNE": [ - 1.056, - 1.612 - ], - "bBoxSW": [ - 0.0, - -2.496 - ] - }, - "flag64thUpSmall": { - "bBoxNE": [ - 1.148, - 1.584 - ], - "bBoxSW": [ - 0.0, - -3.244 - ] - }, - "flag64thUpStraight": { - "bBoxNE": [ - 0.96, - 1.612 - ], - "bBoxSW": [ - 0.0, - -2.208 - ] - }, - "flag8thDown": { - "bBoxNE": [ - 1.224, - 3.236 - ], - "bBoxSW": [ - 0.0, - -0.056 - ] - }, - "flag8thDownSmall": { - "bBoxNE": [ - 1.076, - 3.236 - ], - "bBoxSW": [ - 0.004, - -0.032 - ] - }, - "flag8thDownStraight": { - "bBoxNE": [ - 0.96, - 1.42 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "flag8thUp": { - "bBoxNE": [ - 1.056, - 0.036 - ], - "bBoxSW": [ - 0.0, - -3.244 - ] - }, - "flag8thUpShort": { - "bBoxNE": [ - 1.068, - 0.032 - ], - "bBoxSW": [ - 0.0, - -2.192 - ] - }, - "flag8thUpSmall": { - "bBoxNE": [ - 1.076, - 0.044 - ], - "bBoxSW": [ - 0.004, - -3.228 - ] - }, - "flag8thUpStraight": { - "bBoxNE": [ - 0.96, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.42 - ] - }, - "flagInternalDown": { - "bBoxNE": [ - 1.2, - 2.284 - ], - "bBoxSW": [ - 0.0, - -0.084 - ] - }, - "flagInternalUp": { - "bBoxNE": [ - 1.056, - 0.044 - ], - "bBoxSW": [ - 0.0, - -2.08 - ] - }, - "fretboard3String": { - "bBoxNE": [ - 1.44, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard3StringNut": { - "bBoxNE": [ - 1.44, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard4String": { - "bBoxNE": [ - 2.104, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard4StringNut": { - "bBoxNE": [ - 2.104, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard5String": { - "bBoxNE": [ - 2.776, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard5StringNut": { - "bBoxNE": [ - 2.78, - 4.096 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "fretboard6String": { - "bBoxNE": [ - 3.444, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboard6StringNut": { - "bBoxNE": [ - 3.444, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboardFilledCircle": { - "bBoxNE": [ - 0.564, - 0.564 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboardO": { - "bBoxNE": [ - 0.564, - 0.564 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "fretboardX": { - "bBoxNE": [ - 0.596, - 0.596 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "functionAngleLeft": { - "bBoxNE": [ - 1.76, - 3.12 - ], - "bBoxSW": [ - 0.0, - -1.084 - ] - }, - "functionAngleRight": { - "bBoxNE": [ - 1.76, - 3.12 - ], - "bBoxSW": [ - 0.0, - -1.084 - ] - }, - "functionBracketLeft": { - "bBoxNE": [ - 0.744, - 2.916 - ], - "bBoxSW": [ - 0.0, - -0.848 - ] - }, - "functionBracketRight": { - "bBoxNE": [ - 0.744, - 2.916 - ], - "bBoxSW": [ - 0.0, - -0.848 - ] - }, - "functionDD": { - "bBoxNE": [ - 3.248, - 2.916 - ], - "bBoxSW": [ - 0.08, - -1.024 - ] - }, - "functionDLower": { - "bBoxNE": [ - 1.956, - 2.916 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionDUpper": { - "bBoxNE": [ - 2.392, - 2.916 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionEight": { - "bBoxNE": [ - 1.984, - 2.836 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionFive": { - "bBoxNE": [ - 1.992, - 2.776 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionFour": { - "bBoxNE": [ - 2.048, - 2.836 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionGLower": { - "bBoxNE": [ - 1.92, - 2.156 - ], - "bBoxSW": [ - 0.08, - -0.872 - ] - }, - "functionGUpper": { - "bBoxNE": [ - 2.74, - 2.988 - ], - "bBoxSW": [ - 0.08, - -0.072 - ] - }, - "functionGreaterThan": { - "bBoxNE": [ - 2.072, - 2.276 - ], - "bBoxSW": [ - 0.08, - -0.276 - ] - }, - "functionLessThan": { - "bBoxNE": [ - 2.068, - 2.276 - ], - "bBoxSW": [ - 0.08, - -0.276 - ] - }, - "functionMinus": { - "bBoxNE": [ - 1.032, - 1.248 - ], - "bBoxSW": [ - 0.08, - 0.96 - ] - }, - "functionNLower": { - "bBoxNE": [ - 1.748, - 2.156 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionNUpper": { - "bBoxNE": [ - 2.36, - 2.916 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionNine": { - "bBoxNE": [ - 1.964, - 2.836 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionOne": { - "bBoxNE": [ - 1.06, - 2.836 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionPLower": { - "bBoxNE": [ - 1.952, - 2.156 - ], - "bBoxSW": [ - 0.08, - -0.872 - ] - }, - "functionPUpper": { - "bBoxNE": [ - 2.184, - 2.916 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionParensLeft": { - "bBoxNE": [ - 0.876, - 2.916 - ], - "bBoxSW": [ - 0.004, - -0.848 - ] - }, - "functionParensRight": { - "bBoxNE": [ - 0.884, - 2.916 - ], - "bBoxSW": [ - 0.012, - -0.848 - ] - }, - "functionPlus": { - "bBoxNE": [ - 1.46, - 3.004 - ], - "bBoxSW": [ - 0.08, - 1.628 - ] - }, - "functionRepetition1": { - "bBoxNE": [ - 1.784, - 0.464 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionRepetition2": { - "bBoxNE": [ - 2.084, - 3.132 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionRing": { - "bBoxNE": [ - 1.456, - 3.012 - ], - "bBoxSW": [ - 0.08, - 1.636 - ] - }, - "functionSLower": { - "bBoxNE": [ - 1.78, - 2.156 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionSSLower": { - "bBoxNE": [ - 2.392, - 2.216 - ], - "bBoxSW": [ - 0.08, - -0.892 - ] - }, - "functionSSUpper": { - "bBoxNE": [ - 3.168, - 3.06 - ], - "bBoxSW": [ - 0.08, - -1.096 - ] - }, - "functionSUpper": { - "bBoxNE": [ - 2.372, - 2.988 - ], - "bBoxSW": [ - 0.08, - -0.072 - ] - }, - "functionSeven": { - "bBoxNE": [ - 1.976, - 2.776 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionSix": { - "bBoxNE": [ - 1.96, - 2.836 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionSlashedDD": { - "bBoxNE": [ - 3.248, - 3.2 - ], - "bBoxSW": [ - -0.128, - -1.024 - ] - }, - "functionTLower": { - "bBoxNE": [ - 1.04, - 2.672 - ], - "bBoxSW": [ - 0.08, - -0.028 - ] - }, - "functionTUpper": { - "bBoxNE": [ - 2.368, - 2.916 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionThree": { - "bBoxNE": [ - 1.976, - 2.836 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "functionTwo": { - "bBoxNE": [ - 1.988, - 2.836 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionVLower": { - "bBoxNE": [ - 1.984, - 2.096 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionVUpper": { - "bBoxNE": [ - 2.54, - 2.916 - ], - "bBoxSW": [ - 0.08, - 0.0 - ] - }, - "functionZero": { - "bBoxNE": [ - 1.936, - 2.836 - ], - "bBoxSW": [ - 0.08, - -0.06 - ] - }, - "gClef": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef0Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.668 - ] - }, - "gClef10Below": { - "bBoxNE": [ - 3.016, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.668 - ] - }, - "gClef11Below": { - "bBoxNE": [ - 2.764, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClef12Below": { - "bBoxNE": [ - 2.864, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClef13Below": { - "bBoxNE": [ - 2.784, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef14Below": { - "bBoxNE": [ - 2.92, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClef15Below": { - "bBoxNE": [ - 2.856, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef15ma": { - "bBoxNE": [ - 2.684, - 5.276 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef15mb": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -3.524 - ] - }, - "gClef16Below": { - "bBoxNE": [ - 2.956, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef17Below": { - "bBoxNE": [ - 2.904, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClef2Above": { - "bBoxNE": [ - 3.08, - 4.912 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef2Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClef3Above": { - "bBoxNE": [ - 3.032, - 4.912 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef3Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef4Above": { - "bBoxNE": [ - 3.132, - 4.9 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef4Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClef5Above": { - "bBoxNE": [ - 3.148, - 4.904 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef5Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef6Above": { - "bBoxNE": [ - 3.168, - 4.912 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef6Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef7Above": { - "bBoxNE": [ - 3.036, - 4.9 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef7Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClef8Above": { - "bBoxNE": [ - 3.192, - 4.912 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef8Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClef8va": { - "bBoxNE": [ - 2.684, - 5.28 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef8vb": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -3.512 - ] - }, - "gClef8vbCClef": { - "bBoxNE": [ - 3.368, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef8vbOld": { - "bBoxNE": [ - 4.176, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef8vbParens": { - "bBoxNE": [ - 2.664, - 4.404 - ], - "bBoxSW": [ - 0.004, - -3.6 - ] - }, - "gClef9Above": { - "bBoxNE": [ - 3.132, - 4.908 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClef9Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.668 - ] - }, - "gClefArrowDown": { - "bBoxNE": [ - 2.684, - 4.38 - ], - "bBoxSW": [ - 0.0, - -2.868 - ] - }, - "gClefArrowUp": { - "bBoxNE": [ - 2.684, - 4.808 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefChange": { - "bBoxNE": [ - 1.76, - 2.828 - ], - "bBoxSW": [ - 0.0, - -1.82 - ] - }, - "gClefFlat10Below": { - "bBoxNE": [ - 3.144, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.668 - ] - }, - "gClefFlat11Below": { - "bBoxNE": [ - 2.92, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClefFlat13Below": { - "bBoxNE": [ - 2.944, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClefFlat14Below": { - "bBoxNE": [ - 3.08, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClefFlat15Below": { - "bBoxNE": [ - 3.008, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClefFlat16Below": { - "bBoxNE": [ - 3.096, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClefFlat1Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClefFlat2Above": { - "bBoxNE": [ - 3.84, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat2Below": { - "bBoxNE": [ - 2.688, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClefFlat3Above": { - "bBoxNE": [ - 3.764, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat3Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClefFlat4Below": { - "bBoxNE": [ - 2.86, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "gClefFlat5Above": { - "bBoxNE": [ - 3.836, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat6Above": { - "bBoxNE": [ - 3.864, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat6Below": { - "bBoxNE": [ - 2.844, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "gClefFlat7Above": { - "bBoxNE": [ - 3.74, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat7Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "gClefFlat8Above": { - "bBoxNE": [ - 3.884, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat9Above": { - "bBoxNE": [ - 3.856, - 5.112 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefFlat9Below": { - "bBoxNE": [ - 2.796, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.668 - ] - }, - "gClefLigatedNumberAbove": { - "bBoxNE": [ - 2.684, - 4.4 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefLigatedNumberBelow": { - "bBoxNE": [ - 2.728, - 4.432 - ], - "bBoxSW": [ - 0.024, - -2.644 - ] - }, - "gClefNat2Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefNatural10Below": { - "bBoxNE": [ - 3.028, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.816 - ] - }, - "gClefNatural13Below": { - "bBoxNE": [ - 2.828, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefNatural17Below": { - "bBoxNE": [ - 2.94, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefNatural2Above": { - "bBoxNE": [ - 3.7, - 5.076 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefNatural3Above": { - "bBoxNE": [ - 3.656, - 5.076 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefNatural3Below": { - "bBoxNE": [ - 2.684, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefNatural6Above": { - "bBoxNE": [ - 3.748, - 5.076 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefNatural6Below": { - "bBoxNE": [ - 2.732, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefNatural7Above": { - "bBoxNE": [ - 3.62, - 5.076 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefNatural9Above": { - "bBoxNE": [ - 3.744, - 5.076 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefNatural9Below": { - "bBoxNE": [ - 2.696, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.812 - ] - }, - "gClefReversed": { - "bBoxNE": [ - 2.708, - 4.392 - ], - "bBoxSW": [ - 0.024, - -2.632 - ] - }, - "gClefSharp12Below": { - "bBoxNE": [ - 3.056, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.796 - ] - }, - "gClefSharp1Above": { - "bBoxNE": [ - 3.556, - 5.12 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefSharp4Above": { - "bBoxNE": [ - 3.908, - 5.12 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "gClefSharp5Below": { - "bBoxNE": [ - 2.8, - 4.392 - ], - "bBoxSW": [ - 0.0, - -2.82 - ] - }, - "gClefSmall": { - "bBoxNE": [ - 2.664, - 4.284 - ], - "bBoxSW": [ - 0.0, - -2.756 - ] - }, - "gClefTurned": { - "bBoxNE": [ - 2.708, - 4.616 - ], - "bBoxSW": [ - 0.024, - -2.408 - ] - }, - "glissandoDown": { - "bBoxNE": [ - 4.304, - 4.428 - ], - "bBoxSW": [ - 0.056, - 0.012 - ] - }, - "glissandoUp": { - "bBoxNE": [ - 4.36, - 4.424 - ], - "bBoxSW": [ - 0.112, - 0.008 - ] - }, - "graceNoteAcciaccaturaStemDown": { - "bBoxNE": [ - 0.78, - 0.332 - ], - "bBoxSW": [ - -0.336, - -2.1 - ] - }, - "graceNoteAcciaccaturaStemUp": { - "bBoxNE": [ - 1.428, - 2.096 - ], - "bBoxSW": [ - 0.0, - -0.332 - ] - }, - "graceNoteAppoggiaturaStemDown": { - "bBoxNE": [ - 0.78, - 0.32 - ], - "bBoxSW": [ - 0.0, - -2.112 - ] - }, - "graceNoteAppoggiaturaStemUp": { - "bBoxNE": [ - 1.292, - 2.104 - ], - "bBoxSW": [ - 0.0, - -0.324 - ] - }, - "graceNoteSlashStemDown": { - "bBoxNE": [ - 2.02, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.604 - ] - }, - "graceNoteSlashStemUp": { - "bBoxNE": [ - 2.02, - 1.604 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarClosePedal": { - "bBoxNE": [ - 1.144, - 1.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "guitarFadeIn": { - "bBoxNE": [ - 1.448, - 1.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarFadeOut": { - "bBoxNE": [ - 1.448, - 1.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarGolpe": { - "bBoxNE": [ - 1.08, - 1.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "guitarGolpeFlamenco": { - "bBoxNE": [ - 1.552, - 1.512 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarHalfOpenPedal": { - "bBoxNE": [ - 1.144, - 1.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarLeftHandTapping": { - "bBoxNE": [ - 1.588, - 1.364 - ], - "bBoxSW": [ - 0.0, - -0.224 - ] - }, - "guitarOpenPedal": { - "bBoxNE": [ - 1.144, - 1.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarRightHandTapping": { - "bBoxNE": [ - 0.788, - 1.008 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarShake": { - "bBoxNE": [ - 4.572, - 1.428 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "guitarString0": { - "bBoxNE": [ - 2.164, - 2.156 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "guitarString1": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString2": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString3": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString4": { - "bBoxNE": [ - 2.164, - 2.156 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "guitarString5": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString6": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString7": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString8": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarString9": { - "bBoxNE": [ - 2.16, - 2.156 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarStrumDown": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarStrumUp": { - "bBoxNE": [ - 0.912, - 2.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarVibratoBarDip": { - "bBoxNE": [ - 2.128, - 2.1 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarVibratoBarScoop": { - "bBoxNE": [ - 2.016, - 2.104 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "guitarVibratoStroke": { - "bBoxNE": [ - 0.668, - 0.476 - ], - "bBoxSW": [ - -0.056, - 0.0 - ] - }, - "guitarVolumeSwell": { - "bBoxNE": [ - 2.896, - 1.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "guitarWideVibratoStroke": { - "bBoxNE": [ - 0.908, - 0.896 - ], - "bBoxSW": [ - -0.096, - 0.0 - ] - }, - "handbellsBelltree": { - "bBoxNE": [ - 2.128, - 3.668 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "handbellsDamp3": { - "bBoxNE": [ - 2.568, - 2.568 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsEcho1": { - "bBoxNE": [ - 1.316, - 2.508 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsEcho2": { - "bBoxNE": [ - 0.512, - 2.16 - ], - "bBoxSW": [ - 0.0, - 0.176 - ] - }, - "handbellsGyro": { - "bBoxNE": [ - 3.132, - 3.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "handbellsHandMartellato": { - "bBoxNE": [ - 1.064, - 2.004 - ], - "bBoxSW": [ - -0.064, - 0.388 - ] - }, - "handbellsMalletBellOnTable": { - "bBoxNE": [ - 1.128, - 1.692 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsMalletBellSuspended": { - "bBoxNE": [ - 1.128, - 1.692 - ], - "bBoxSW": [ - 0.0, - 0.564 - ] - }, - "handbellsMalletLft": { - "bBoxNE": [ - 1.736, - 2.224 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsMartellato": { - "bBoxNE": [ - 1.028, - 1.516 - ], - "bBoxSW": [ - 0.0, - 0.388 - ] - }, - "handbellsMartellatoLift": { - "bBoxNE": [ - 1.656, - 2.048 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsMutedMartellato": { - "bBoxNE": [ - 1.916, - 2.008 - ], - "bBoxSW": [ - 0.0, - 0.092 - ] - }, - "handbellsPluckLift": { - "bBoxNE": [ - 0.924, - 2.224 - ], - "bBoxSW": [ - 0.0, - 0.176 - ] - }, - "handbellsSwing": { - "bBoxNE": [ - 1.228, - 2.284 - ], - "bBoxSW": [ - -0.004, - 0.172 - ] - }, - "handbellsSwingDown": { - "bBoxNE": [ - 0.512, - 2.224 - ], - "bBoxSW": [ - 0.0, - 0.176 - ] - }, - "handbellsSwingUp": { - "bBoxNE": [ - 0.512, - 2.224 - ], - "bBoxSW": [ - 0.0, - 0.176 - ] - }, - "handbellsTablePairBells": { - "bBoxNE": [ - 3.12, - 4.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "handbellsTableSingleBell": { - "bBoxNE": [ - 2.928, - 4.096 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpMetalRod": { - "bBoxNE": [ - 2.808, - 2.264 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpMetalRodAlt": { - "bBoxNE": [ - 4.488, - 1.484 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "harpPedalCentered": { - "bBoxNE": [ - 1.004, - 2.0 - ], - "bBoxSW": [ - 0.004, - 1.0 - ] - }, - "harpPedalDivider": { - "bBoxNE": [ - 1.0, - 3.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpPedalLowered": { - "bBoxNE": [ - 1.0, - 1.56 - ], - "bBoxSW": [ - 0.0, - 0.368 - ] - }, - "harpPedalRaised": { - "bBoxNE": [ - 1.004, - 2.624 - ], - "bBoxSW": [ - 0.004, - 1.44 - ] - }, - "harpSalzedoAeolianAscending": { - "bBoxNE": [ - 1.924, - 4.948 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpSalzedoAeolianDescending": { - "bBoxNE": [ - 1.924, - 3.66 - ], - "bBoxSW": [ - 0.0, - -1.288 - ] - }, - "harpSalzedoFluidicSoundsLeft": { - "bBoxNE": [ - 0.9, - 0.984 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpSalzedoFluidicSoundsRight": { - "bBoxNE": [ - 1.384, - 1.0 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "harpSalzedoMetallicSounds": { - "bBoxNE": [ - 1.644, - 2.068 - ], - "bBoxSW": [ - 0.0, - -0.372 - ] - }, - "harpSalzedoMuffleTotally": { - "bBoxNE": [ - 2.128, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpSalzedoOboicFlux": { - "bBoxNE": [ - 5.604, - 1.0 - ], - "bBoxSW": [ - -0.08, - 0.0 - ] - }, - "harpSalzedoPlayUpperEnd": { - "bBoxNE": [ - 3.508, - 2.14 - ], - "bBoxSW": [ - -0.056, - 0.004 - ] - }, - "harpSalzedoSlideWithSuppleness": { - "bBoxNE": [ - 2.288, - 3.124 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "harpSalzedoTamTamSounds": { - "bBoxNE": [ - 2.256, - 2.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpSalzedoThunderEffect": { - "bBoxNE": [ - 3.2, - 3.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "harpSalzedoTimpanicSounds": { - "bBoxNE": [ - 2.256, - 2.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpSalzedoWhistlingSounds": { - "bBoxNE": [ - 2.136, - 3.128 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "harpStringNoiseStem": { - "bBoxNE": [ - 0.724, - 1.424 - ], - "bBoxSW": [ - -0.728, - -1.424 - ] - }, - "harpTuningKey": { - "bBoxNE": [ - 3.004, - 2.984 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "harpTuningKeyAlt": { - "bBoxNE": [ - 3.924, - 2.648 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpTuningKeyGlissando": { - "bBoxNE": [ - 3.276, - 4.004 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "harpTuningKeyHandle": { - "bBoxNE": [ - 3.86, - 1.972 - ], - "bBoxSW": [ - 0.0, - 0.148 - ] - }, - "harpTuningKeyShank": { - "bBoxNE": [ - 2.9, - 1.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardBebung2DotsAbove": { - "bBoxNE": [ - 1.78, - 0.956 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "keyboardBebung2DotsBelow": { - "bBoxNE": [ - 1.78, - 0.956 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "keyboardBebung3DotsAbove": { - "bBoxNE": [ - 2.3, - 0.956 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "keyboardBebung3DotsBelow": { - "bBoxNE": [ - 2.3, - 0.956 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "keyboardBebung4DotsAbove": { - "bBoxNE": [ - 2.844, - 0.956 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardBebung4DotsBelow": { - "bBoxNE": [ - 2.844, - 0.956 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardLeftPedalPictogram": { - "bBoxNE": [ - 1.768, - 2.064 - ], - "bBoxSW": [ - -0.064, - -0.084 - ] - }, - "keyboardMiddlePedalPictogram": { - "bBoxNE": [ - 1.768, - 2.064 - ], - "bBoxSW": [ - -0.064, - -0.084 - ] - }, - "keyboardPedalD": { - "bBoxNE": [ - 0.984, - 2.0 - ], - "bBoxSW": [ - -0.632, - -0.012 - ] - }, - "keyboardPedalDot": { - "bBoxNE": [ - 0.344, - 0.344 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalE": { - "bBoxNE": [ - 1.02, - 1.26 - ], - "bBoxSW": [ - 0.0, - -0.024 - ] - }, - "keyboardPedalHalf": { - "bBoxNE": [ - 3.0, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHalf2": { - "bBoxNE": [ - 1.8, - 0.944 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHalf3": { - "bBoxNE": [ - 1.8, - 1.968 - ], - "bBoxSW": [ - 0.0, - 1.024 - ] - }, - "keyboardPedalHeel1": { - "bBoxNE": [ - 1.704, - 2.124 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHeel2": { - "bBoxNE": [ - 1.704, - 2.124 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHeel3": { - "bBoxNE": [ - 2.0, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHeelToe": { - "bBoxNE": [ - 1.704, - 3.252 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalHyphen": { - "bBoxNE": [ - 1.184, - 1.228 - ], - "bBoxSW": [ - 0.0, - 0.76 - ] - }, - "keyboardPedalP": { - "bBoxNE": [ - 2.0, - 2.22 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "keyboardPedalPed": { - "bBoxNE": [ - 4.076, - 2.22 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "keyboardPedalPedNoDot": { - "bBoxNE": [ - 3.692, - 2.22 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "keyboardPedalS": { - "bBoxNE": [ - 1.676, - 2.364 - ], - "bBoxSW": [ - 0.0, - -0.06 - ] - }, - "keyboardPedalSost": { - "bBoxNE": [ - 4.428, - 2.364 - ], - "bBoxSW": [ - 0.0, - -0.06 - ] - }, - "keyboardPedalSostNoDot": { - "bBoxNE": [ - 4.056, - 2.364 - ], - "bBoxSW": [ - 0.0, - -0.06 - ] - }, - "keyboardPedalToe1": { - "bBoxNE": [ - 1.752, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalToe2": { - "bBoxNE": [ - 1.752, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalUp": { - "bBoxNE": [ - 1.8, - 1.8 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalUpNotch": { - "bBoxNE": [ - 1.16, - 2.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPedalUpSpecial": { - "bBoxNE": [ - 1.668, - 1.836 - ], - "bBoxSW": [ - 0.0, - 0.116 - ] - }, - "keyboardPlayWithLH": { - "bBoxNE": [ - 1.564, - 4.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPlayWithLHEnd": { - "bBoxNE": [ - 1.564, - 4.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPlayWithRH": { - "bBoxNE": [ - 1.564, - 4.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPlayWithRHEnd": { - "bBoxNE": [ - 1.564, - 4.064 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "keyboardPluckInside": { - "bBoxNE": [ - 1.98, - 1.98 - ], - "bBoxSW": [ - 0.0, - -1.136 - ] - }, - "keyboardRightPedalPictogram": { - "bBoxNE": [ - 1.768, - 2.064 - ], - "bBoxSW": [ - -0.064, - -0.084 - ] - }, - "kievanAccidentalFlat": { - "bBoxNE": [ - 0.808, - 1.748 - ], - "bBoxSW": [ - 0.0, - -0.852 - ] - }, - "kievanAccidentalSharp": { - "bBoxNE": [ - 1.504, - 1.56 - ], - "bBoxSW": [ - 0.0, - -1.556 - ] - }, - "kievanAugmentationDot": { - "bBoxNE": [ - 0.8, - 0.416 - ], - "bBoxSW": [ - 0.0, - -0.388 - ] - }, - "kievanCClef": { - "bBoxNE": [ - 1.348, - 0.468 - ], - "bBoxSW": [ - 0.0, - -2.108 - ] - }, - "kievanEndingSymbol": { - "bBoxNE": [ - 1.412, - 4.492 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "kievanNote8thStemDown": { - "bBoxNE": [ - 1.136, - 0.38 - ], - "bBoxSW": [ - 0.0, - -2.744 - ] - }, - "kievanNote8thStemUp": { - "bBoxNE": [ - 0.92, - 2.536 - ], - "bBoxSW": [ - 0.0, - -0.388 - ] - }, - "kievanNoteBeam": { - "bBoxNE": [ - 2.1, - 0.36 - ], - "bBoxSW": [ - -0.128, - -0.36 - ] - }, - "kievanNoteHalfStaffLine": { - "bBoxNE": [ - 0.964, - 0.848 - ], - "bBoxSW": [ - 0.0, - -1.444 - ] - }, - "kievanNoteHalfStaffSpace": { - "bBoxNE": [ - 1.064, - 1.412 - ], - "bBoxSW": [ - 0.004, - -1.16 - ] - }, - "kievanNoteQuarterStemDown": { - "bBoxNE": [ - 0.932, - 0.328 - ], - "bBoxSW": [ - 0.0, - -2.28 - ] - }, - "kievanNoteQuarterStemUp": { - "bBoxNE": [ - 0.932, - 2.28 - ], - "bBoxSW": [ - 0.0, - -0.328 - ] - }, - "kievanNoteReciting": { - "bBoxNE": [ - 4.644, - 0.832 - ], - "bBoxSW": [ - 0.0, - -0.828 - ] - }, - "kievanNoteWhole": { - "bBoxNE": [ - 0.888, - 0.912 - ], - "bBoxSW": [ - 0.0, - -0.888 - ] - }, - "kievanNoteWholeFinal": { - "bBoxNE": [ - 1.196, - 1.38 - ], - "bBoxSW": [ - 0.0, - -1.384 - ] - }, - "kodalyHandDo": { - "bBoxNE": [ - 3.944, - 2.452 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "kodalyHandFa": { - "bBoxNE": [ - 4.144, - 2.828 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "kodalyHandLa": { - "bBoxNE": [ - 4.428, - 2.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "kodalyHandMi": { - "bBoxNE": [ - 4.996, - 1.684 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "kodalyHandRe": { - "bBoxNE": [ - 4.444, - 3.184 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "kodalyHandSo": { - "bBoxNE": [ - 4.648, - 2.108 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "kodalyHandTi": { - "bBoxNE": [ - 4.204, - 2.548 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "leftRepeatSmall": { - "bBoxNE": [ - 1.464, - 3.48 - ], - "bBoxSW": [ - 0.0, - 0.5 - ] - }, - "legerLine": { - "bBoxNE": [ - 1.648, - 0.08 - ], - "bBoxSW": [ - -0.32, - -0.08 - ] - }, - "legerLineNarrow": { - "bBoxNE": [ - 0.848, - 0.08 - ], - "bBoxSW": [ - -0.32, - -0.08 - ] - }, - "legerLineWide": { - "bBoxNE": [ - 2.448, - 0.08 - ], - "bBoxSW": [ - -0.32, - -0.08 - ] - }, - "luteBarlineEndRepeat": { - "bBoxNE": [ - 1.5, - 7.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteBarlineFinal": { - "bBoxNE": [ - 0.912, - 7.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteBarlineStartRepeat": { - "bBoxNE": [ - 1.5, - 7.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDuration16th": { - "bBoxNE": [ - 0.912, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDuration32nd": { - "bBoxNE": [ - 0.912, - 3.144 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteDuration8th": { - "bBoxNE": [ - 0.912, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDurationDoubleWhole": { - "bBoxNE": [ - 0.592, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDurationHalf": { - "bBoxNE": [ - 0.912, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDurationQuarter": { - "bBoxNE": [ - 0.912, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteDurationWhole": { - "bBoxNE": [ - 0.144, - 3.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFingeringRHFirst": { - "bBoxNE": [ - 0.288, - 0.708 - ], - "bBoxSW": [ - 0.0, - 0.42 - ] - }, - "luteFingeringRHSecond": { - "bBoxNE": [ - 0.824, - 0.708 - ], - "bBoxSW": [ - 0.0, - 0.42 - ] - }, - "luteFingeringRHThird": { - "bBoxNE": [ - 1.364, - 0.708 - ], - "bBoxSW": [ - 0.0, - 0.42 - ] - }, - "luteFingeringRHThirdAlt": { - "bBoxNE": [ - 1.204, - 0.908 - ], - "bBoxSW": [ - 0.0, - 0.22 - ] - }, - "luteFingeringRHThumb": { - "bBoxNE": [ - 0.128, - 1.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrench10thCourse": { - "bBoxNE": [ - 2.716, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench10thCourseRight": { - "bBoxNE": [ - 3.012, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench10thCourseStrikethru": { - "bBoxNE": [ - 3.68, - 1.26 - ], - "bBoxSW": [ - -0.004, - -0.116 - ] - }, - "luteFrench10thCourseUnderline": { - "bBoxNE": [ - 3.048, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.4 - ] - }, - "luteFrench7thCourse": { - "bBoxNE": [ - 1.104, - 0.968 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrench7thCourseRight": { - "bBoxNE": [ - 1.104, - 0.968 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrench7thCourseStrikethru": { - "bBoxNE": [ - 2.096, - 0.968 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrench7thCourseUnderline": { - "bBoxNE": [ - 1.448, - 0.968 - ], - "bBoxSW": [ - -0.352, - -0.4 - ] - }, - "luteFrench8thCourse": { - "bBoxNE": [ - 1.836, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench8thCourseRight": { - "bBoxNE": [ - 2.12, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench8thCourseStrikethru": { - "bBoxNE": [ - 2.804, - 1.26 - ], - "bBoxSW": [ - 0.0, - -0.116 - ] - }, - "luteFrench8thCourseUnderline": { - "bBoxNE": [ - 2.208, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.4 - ] - }, - "luteFrench9thCourse": { - "bBoxNE": [ - 2.276, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench9thCourseRight": { - "bBoxNE": [ - 2.56, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.136 - ] - }, - "luteFrench9thCourseStrikethru": { - "bBoxNE": [ - 3.244, - 1.26 - ], - "bBoxSW": [ - 0.0, - -0.116 - ] - }, - "luteFrench9thCourseUnderline": { - "bBoxNE": [ - 2.648, - 1.24 - ], - "bBoxSW": [ - 0.0, - -0.4 - ] - }, - "luteFrenchAppoggiaturaAbove": { - "bBoxNE": [ - 0.512, - 1.436 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchAppoggiaturaBelow": { - "bBoxNE": [ - 0.58, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretA": { - "bBoxNE": [ - 1.104, - 0.968 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretB": { - "bBoxNE": [ - 0.876, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretC": { - "bBoxNE": [ - 1.168, - 1.064 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "luteFrenchFretCAlt": { - "bBoxNE": [ - 1.164, - 1.076 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretD": { - "bBoxNE": [ - 1.716, - 0.98 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretE": { - "bBoxNE": [ - 1.252, - 0.952 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretF": { - "bBoxNE": [ - 1.004, - 1.056 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretG": { - "bBoxNE": [ - 1.616, - 1.132 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretH": { - "bBoxNE": [ - 0.936, - 1.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretI": { - "bBoxNE": [ - 0.496, - 1.224 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "luteFrenchFretK": { - "bBoxNE": [ - 0.856, - 1.2 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "luteFrenchFretL": { - "bBoxNE": [ - 0.524, - 1.184 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretM": { - "bBoxNE": [ - 1.644, - 1.1 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchFretN": { - "bBoxNE": [ - 1.284, - 1.208 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchMordentInverted": { - "bBoxNE": [ - 0.748, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchMordentLower": { - "bBoxNE": [ - 1.588, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteFrenchMordentUpper": { - "bBoxNE": [ - 1.088, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteGermanALower": { - "bBoxNE": [ - 1.112, - 1.388 - ], - "bBoxSW": [ - 0.0, - -0.048 - ] - }, - "luteGermanAUpper": { - "bBoxNE": [ - 1.916, - 2.056 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanBLower": { - "bBoxNE": [ - 1.192, - 2.036 - ], - "bBoxSW": [ - 0.0, - -0.044 - ] - }, - "luteGermanBUpper": { - "bBoxNE": [ - 2.244, - 2.068 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanCLower": { - "bBoxNE": [ - 0.804, - 1.372 - ], - "bBoxSW": [ - 0.0, - -0.048 - ] - }, - "luteGermanCUpper": { - "bBoxNE": [ - 1.652, - 2.048 - ], - "bBoxSW": [ - 0.0, - -0.052 - ] - }, - "luteGermanDLower": { - "bBoxNE": [ - 1.152, - 1.888 - ], - "bBoxSW": [ - 0.0, - -0.048 - ] - }, - "luteGermanDUpper": { - "bBoxNE": [ - 2.24, - 2.064 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanELower": { - "bBoxNE": [ - 0.852, - 1.372 - ], - "bBoxSW": [ - 0.0, - -0.048 - ] - }, - "luteGermanEUpper": { - "bBoxNE": [ - 2.012, - 2.056 - ], - "bBoxSW": [ - 0.0, - -0.044 - ] - }, - "luteGermanFLower": { - "bBoxNE": [ - 0.984, - 1.956 - ], - "bBoxSW": [ - 0.0, - -0.496 - ] - }, - "luteGermanFUpper": { - "bBoxNE": [ - 1.608, - 2.076 - ], - "bBoxSW": [ - 0.0, - -0.492 - ] - }, - "luteGermanGLower": { - "bBoxNE": [ - 1.38, - 1.436 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "luteGermanGUpper": { - "bBoxNE": [ - 2.18, - 2.056 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "luteGermanHLower": { - "bBoxNE": [ - 1.216, - 2.064 - ], - "bBoxSW": [ - 0.0, - -0.524 - ] - }, - "luteGermanHUpper": { - "bBoxNE": [ - 1.892, - 2.076 - ], - "bBoxSW": [ - 0.0, - -0.436 - ] - }, - "luteGermanILower": { - "bBoxNE": [ - 0.536, - 1.924 - ], - "bBoxSW": [ - 0.0, - -0.452 - ] - }, - "luteGermanIUpper": { - "bBoxNE": [ - 2.1, - 2.084 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "luteGermanKLower": { - "bBoxNE": [ - 0.992, - 2.04 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanKUpper": { - "bBoxNE": [ - 2.096, - 2.028 - ], - "bBoxSW": [ - -0.008, - -0.048 - ] - }, - "luteGermanLLower": { - "bBoxNE": [ - 0.672, - 2.036 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "luteGermanLUpper": { - "bBoxNE": [ - 1.688, - 2.032 - ], - "bBoxSW": [ - 0.0, - -0.044 - ] - }, - "luteGermanMLower": { - "bBoxNE": [ - 1.932, - 1.396 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanMUpper": { - "bBoxNE": [ - 2.884, - 2.04 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "luteGermanNLower": { - "bBoxNE": [ - 1.256, - 1.404 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "luteGermanNUpper": { - "bBoxNE": [ - 2.428, - 2.048 - ], - "bBoxSW": [ - 0.0, - -0.052 - ] - }, - "luteGermanOLower": { - "bBoxNE": [ - 1.256, - 1.432 - ], - "bBoxSW": [ - 0.0, - -0.048 - ] - }, - "luteGermanPLower": { - "bBoxNE": [ - 1.316, - 1.368 - ], - "bBoxSW": [ - 0.0, - -0.52 - ] - }, - "luteGermanQLower": { - "bBoxNE": [ - 1.26, - 1.368 - ], - "bBoxSW": [ - 0.0, - -0.52 - ] - }, - "luteGermanRLower": { - "bBoxNE": [ - 0.964, - 1.404 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "luteGermanSLower": { - "bBoxNE": [ - 0.984, - 1.956 - ], - "bBoxSW": [ - 0.0, - -0.496 - ] - }, - "luteGermanTLower": { - "bBoxNE": [ - 0.908, - 1.692 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "luteGermanVLower": { - "bBoxNE": [ - 1.34, - 1.384 - ], - "bBoxSW": [ - 0.0, - -0.032 - ] - }, - "luteGermanXLower": { - "bBoxNE": [ - 1.028, - 1.44 - ], - "bBoxSW": [ - 0.0, - -0.472 - ] - }, - "luteGermanYLower": { - "bBoxNE": [ - 1.216, - 1.432 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "luteGermanZLower": { - "bBoxNE": [ - 0.852, - 1.412 - ], - "bBoxSW": [ - 0.0, - -0.528 - ] - }, - "luteItalianClefCSolFaUt": { - "bBoxNE": [ - 1.904, - 1.792 - ], - "bBoxSW": [ - 0.0, - -2.836 - ] - }, - "luteItalianClefFFaUt": { - "bBoxNE": [ - 3.156, - 1.4 - ], - "bBoxSW": [ - 0.0, - -1.404 - ] - }, - "luteItalianFret0": { - "bBoxNE": [ - 1.124, - 1.2 - ], - "bBoxSW": [ - 0.096, - -0.004 - ] - }, - "luteItalianFret1": { - "bBoxNE": [ - 0.648, - 1.2 - ], - "bBoxSW": [ - 0.096, - 0.0 - ] - }, - "luteItalianFret2": { - "bBoxNE": [ - 1.052, - 1.2 - ], - "bBoxSW": [ - 0.096, - -0.012 - ] - }, - "luteItalianFret3": { - "bBoxNE": [ - 0.976, - 1.2 - ], - "bBoxSW": [ - 0.096, - 0.0 - ] - }, - "luteItalianFret4": { - "bBoxNE": [ - 1.028, - 1.204 - ], - "bBoxSW": [ - 0.096, - 0.004 - ] - }, - "luteItalianFret5": { - "bBoxNE": [ - 0.952, - 1.2 - ], - "bBoxSW": [ - 0.092, - 0.0 - ] - }, - "luteItalianFret6": { - "bBoxNE": [ - 1.036, - 1.2 - ], - "bBoxSW": [ - 0.096, - 0.0 - ] - }, - "luteItalianFret7": { - "bBoxNE": [ - 1.068, - 1.204 - ], - "bBoxSW": [ - 0.1, - 0.0 - ] - }, - "luteItalianFret8": { - "bBoxNE": [ - 1.016, - 1.204 - ], - "bBoxSW": [ - 0.096, - 0.0 - ] - }, - "luteItalianFret9": { - "bBoxNE": [ - 1.036, - 1.2 - ], - "bBoxSW": [ - 0.096, - 0.0 - ] - }, - "luteItalianHoldFinger": { - "bBoxNE": [ - 2.692, - 1.08 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteItalianHoldNote": { - "bBoxNE": [ - 1.228, - 1.228 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteItalianReleaseFinger": { - "bBoxNE": [ - 1.392, - 1.084 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteItalianTempoFast": { - "bBoxNE": [ - 4.5, - 3.0 - ], - "bBoxSW": [ - 0.0, - -3.0 - ] - }, - "luteItalianTempoNeitherFastNorSlow": { - "bBoxNE": [ - 3.908, - 2.248 - ], - "bBoxSW": [ - 0.0, - -2.252 - ] - }, - "luteItalianTempoSlow": { - "bBoxNE": [ - 3.916, - 3.0 - ], - "bBoxSW": [ - 0.008, - -3.0 - ] - }, - "luteItalianTempoSomewhatFast": { - "bBoxNE": [ - 4.5, - 3.0 - ], - "bBoxSW": [ - 0.0, - -3.0 - ] - }, - "luteItalianTempoVerySlow": { - "bBoxNE": [ - 3.908, - 3.0 - ], - "bBoxSW": [ - 0.0, - -3.0 - ] - }, - "luteItalianTimeTriple": { - "bBoxNE": [ - 2.652, - 2.248 - ], - "bBoxSW": [ - -0.02, - -2.252 - ] - }, - "luteItalianTremolo": { - "bBoxNE": [ - 0.824, - 0.288 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteItalianVibrato": { - "bBoxNE": [ - 1.588, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "luteStaff6Lines": { - "bBoxNE": [ - 2.0, - 7.564 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "luteStaff6LinesNarrow": { - "bBoxNE": [ - 1.0, - 7.564 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "luteStaff6LinesWide": { - "bBoxNE": [ - 3.0, - 7.564 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "lyricsElision": { - "bBoxNE": [ - 2.18, - 0.0 - ], - "bBoxSW": [ - -0.32, - -0.572 - ] - }, - "lyricsElisionNarrow": { - "bBoxNE": [ - 1.62, - 0.0 - ], - "bBoxSW": [ - -0.16, - -0.572 - ] - }, - "lyricsElisionWide": { - "bBoxNE": [ - 2.98, - 0.0 - ], - "bBoxSW": [ - -0.32, - -0.572 - ] - }, - "lyricsHyphenBaseline": { - "bBoxNE": [ - 1.168, - 0.14 - ], - "bBoxSW": [ - 0.16, - -0.136 - ] - }, - "lyricsHyphenBaselineNonBreaking": { - "bBoxNE": [ - 1.168, - 0.14 - ], - "bBoxSW": [ - 0.16, - -0.136 - ] - }, - "medRenFlatHardB": { - "bBoxNE": [ - 0.744, - 1.68 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "medRenFlatSoftB": { - "bBoxNE": [ - 0.82, - 1.652 - ], - "bBoxSW": [ - 0.0, - -0.604 - ] - }, - "medRenFlatSoftBHufnagel": { - "bBoxNE": [ - 0.672, - 1.856 - ], - "bBoxSW": [ - 0.0, - -0.404 - ] - }, - "medRenFlatSoftBOld": { - "bBoxNE": [ - 0.58, - 1.864 - ], - "bBoxSW": [ - 0.0, - -0.352 - ] - }, - "medRenFlatWithDot": { - "bBoxNE": [ - 0.904, - 1.716 - ], - "bBoxSW": [ - 0.0, - -0.74 - ] - }, - "medRenGClefCMN": { - "bBoxNE": [ - 1.504, - 2.084 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "medRenLiquescenceCMN": { - "bBoxNE": [ - 1.16, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "medRenLiquescentAscCMN": { - "bBoxNE": [ - 1.1, - 1.272 - ], - "bBoxSW": [ - 0.0, - -0.508 - ] - }, - "medRenLiquescentDescCMN": { - "bBoxNE": [ - 1.1, - 0.508 - ], - "bBoxSW": [ - 0.0, - -1.272 - ] - }, - "medRenNatural": { - "bBoxNE": [ - 0.408, - 1.012 - ], - "bBoxSW": [ - 0.0, - -1.016 - ] - }, - "medRenNaturalWithCross": { - "bBoxNE": [ - 0.672, - 1.352 - ], - "bBoxSW": [ - 0.0, - -1.352 - ] - }, - "medRenOriscusCMN": { - "bBoxNE": [ - 1.276, - 0.528 - ], - "bBoxSW": [ - 0.0, - -0.524 - ] - }, - "medRenPlicaCMN": { - "bBoxNE": [ - 0.6, - 0.376 - ], - "bBoxSW": [ - -0.6, - -0.372 - ] - }, - "medRenPunctumCMN": { - "bBoxNE": [ - 1.096, - 0.508 - ], - "bBoxSW": [ - 0.0, - -0.504 - ] - }, - "medRenQuilismaCMN": { - "bBoxNE": [ - 1.612, - 0.488 - ], - "bBoxSW": [ - 0.0, - -0.488 - ] - }, - "medRenSharpCroix": { - "bBoxNE": [ - 1.72, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "medRenStrophicusCMN": { - "bBoxNE": [ - 0.736, - 0.544 - ], - "bBoxSW": [ - 0.0, - -0.544 - ] - }, - "mensuralAlterationSign": { - "bBoxNE": [ - 1.204, - 0.992 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "mensuralBlackBrevis": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralBlackBrevisVoid": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralBlackDragma": { - "bBoxNE": [ - 1.128, - 2.592 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralBlackLonga": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralBlackMaxima": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralBlackMinima": { - "bBoxNE": [ - 1.128, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralBlackMinimaVoid": { - "bBoxNE": [ - 1.128, - 2.648 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralBlackSemibrevis": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralBlackSemibrevisCaudata": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralBlackSemibrevisOblique": { - "bBoxNE": [ - 2.044, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.98 - ] - }, - "mensuralBlackSemibrevisVoid": { - "bBoxNE": [ - 1.132, - 0.564 - ], - "bBoxSW": [ - 0.004, - -0.564 - ] - }, - "mensuralBlackSemiminima": { - "bBoxNE": [ - 1.38, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralCclef": { - "bBoxNE": [ - 2.6, - 2.0 - ], - "bBoxSW": [ - 0.0, - -2.0 - ] - }, - "mensuralCclefBlack": { - "bBoxNE": [ - 1.136, - 2.2 - ], - "bBoxSW": [ - 0.0, - -2.2 - ] - }, - "mensuralCclefPetrucciPosHigh": { - "bBoxNE": [ - 0.976, - 2.4 - ], - "bBoxSW": [ - 0.0, - -3.2 - ] - }, - "mensuralCclefPetrucciPosHighest": { - "bBoxNE": [ - 0.976, - 1.416 - ], - "bBoxSW": [ - 0.0, - -3.18 - ] - }, - "mensuralCclefPetrucciPosLow": { - "bBoxNE": [ - 0.976, - 3.2 - ], - "bBoxSW": [ - 0.0, - -2.4 - ] - }, - "mensuralCclefPetrucciPosLowest": { - "bBoxNE": [ - 0.976, - 3.2 - ], - "bBoxSW": [ - 0.0, - -1.396 - ] - }, - "mensuralCclefPetrucciPosMiddle": { - "bBoxNE": [ - 0.976, - 3.2 - ], - "bBoxSW": [ - 0.0, - -3.2 - ] - }, - "mensuralCclefVoid": { - "bBoxNE": [ - 1.136, - 2.2 - ], - "bBoxSW": [ - 0.0, - -2.2 - ] - }, - "mensuralColorationEndRound": { - "bBoxNE": [ - 0.728, - 0.728 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralColorationEndSquare": { - "bBoxNE": [ - 0.728, - 0.728 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralColorationStartRound": { - "bBoxNE": [ - 0.728, - 0.728 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralColorationStartSquare": { - "bBoxNE": [ - 0.728, - 0.728 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCombStemDiagonal": { - "bBoxNE": [ - 0.768, - 0.768 - ], - "bBoxSW": [ - -0.776, - -0.772 - ] - }, - "mensuralCombStemDown": { - "bBoxNE": [ - 0.128, - 0.0 - ], - "bBoxSW": [ - 0.0, - -3.128 - ] - }, - "mensuralCombStemDownFlagExtended": { - "bBoxNE": [ - 0.876, - 0.0 - ], - "bBoxSW": [ - -0.496, - -3.128 - ] - }, - "mensuralCombStemDownFlagFlared": { - "bBoxNE": [ - 0.924, - 0.0 - ], - "bBoxSW": [ - 0.0, - -3.128 - ] - }, - "mensuralCombStemDownFlagFusa": { - "bBoxNE": [ - 0.876, - 0.0 - ], - "bBoxSW": [ - 0.0, - -3.128 - ] - }, - "mensuralCombStemDownFlagLeft": { - "bBoxNE": [ - 0.128, - 0.0 - ], - "bBoxSW": [ - -0.752, - -3.128 - ] - }, - "mensuralCombStemDownFlagRight": { - "bBoxNE": [ - 0.88, - 0.0 - ], - "bBoxSW": [ - 0.0, - -3.128 - ] - }, - "mensuralCombStemDownFlagSemiminima": { - "bBoxNE": [ - 0.876, - 0.0 - ], - "bBoxSW": [ - 0.0, - -3.128 - ] - }, - "mensuralCombStemUp": { - "bBoxNE": [ - 0.128, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCombStemUpFlagExtended": { - "bBoxNE": [ - 0.876, - 3.128 - ], - "bBoxSW": [ - -0.496, - 0.0 - ] - }, - "mensuralCombStemUpFlagFlared": { - "bBoxNE": [ - 0.924, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCombStemUpFlagFusa": { - "bBoxNE": [ - 0.876, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCombStemUpFlagLeft": { - "bBoxNE": [ - 0.128, - 3.128 - ], - "bBoxSW": [ - -0.752, - 0.0 - ] - }, - "mensuralCombStemUpFlagRight": { - "bBoxNE": [ - 0.88, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCombStemUpFlagSemiminima": { - "bBoxNE": [ - 0.876, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCustosCheckmark": { - "bBoxNE": [ - 2.232, - 1.816 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCustosDown": { - "bBoxNE": [ - 2.456, - 0.988 - ], - "bBoxSW": [ - 0.004, - -0.656 - ] - }, - "mensuralCustosTurn": { - "bBoxNE": [ - 1.868, - 0.932 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralCustosUp": { - "bBoxNE": [ - 2.456, - 1.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "mensuralFclef": { - "bBoxNE": [ - 1.188, - 0.688 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralFclefPetrucci": { - "bBoxNE": [ - 1.952, - 2.364 - ], - "bBoxSW": [ - 0.0, - -4.276 - ] - }, - "mensuralFusaBlackStemDown": { - "bBoxNE": [ - 1.376, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralFusaBlackStemUp": { - "bBoxNE": [ - 1.376, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralFusaBlackVoidStemDown": { - "bBoxNE": [ - 1.368, - 0.56 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "mensuralFusaBlackVoidStemUp": { - "bBoxNE": [ - 1.38, - 2.648 - ], - "bBoxSW": [ - 0.004, - -0.564 - ] - }, - "mensuralFusaVoidStemDown": { - "bBoxNE": [ - 1.372, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.592 - ] - }, - "mensuralFusaVoidStemUp": { - "bBoxNE": [ - 1.372, - 2.592 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralGclef": { - "bBoxNE": [ - 1.584, - 0.924 - ], - "bBoxSW": [ - 0.0, - -0.928 - ] - }, - "mensuralGclefPetrucci": { - "bBoxNE": [ - 1.356, - 3.688 - ], - "bBoxSW": [ - 0.0, - -0.676 - ] - }, - "mensuralLongaBlackStemDownLeft": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaBlackStemDownRight": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaBlackStemUpLeft": { - "bBoxNE": [ - 1.328, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralLongaBlackStemUpRight": { - "bBoxNE": [ - 1.328, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralLongaBlackVoidStemDownLeft": { - "bBoxNE": [ - 1.332, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaBlackVoidStemDownRight": { - "bBoxNE": [ - 1.332, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaBlackVoidStemUpLeft": { - "bBoxNE": [ - 1.332, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralLongaBlackVoidStemUpRight": { - "bBoxNE": [ - 1.332, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralLongaVoidStemDownLeft": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaVoidStemDownRight": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralLongaVoidStemUpLeft": { - "bBoxNE": [ - 1.328, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralLongaVoidStemUpRight": { - "bBoxNE": [ - 1.328, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaBlackStemDownLeft": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaBlackStemDownRight": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaBlackStemUpLeft": { - "bBoxNE": [ - 3.128, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaBlackStemUpRight": { - "bBoxNE": [ - 3.128, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaBlackVoidStemDownLeft": { - "bBoxNE": [ - 3.16, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaBlackVoidStemDownRight": { - "bBoxNE": [ - 3.132, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaBlackVoidStemUpLeft": { - "bBoxNE": [ - 3.132, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaBlackVoidStemUpRight": { - "bBoxNE": [ - 3.132, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaVoidStemDownLeft": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaVoidStemDownRight": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.564 - ] - }, - "mensuralMaximaVoidStemUpLeft": { - "bBoxNE": [ - 3.128, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMaximaVoidStemUpRight": { - "bBoxNE": [ - 3.128, - 2.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackStemDown": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralMinimaBlackStemDownExtendedFlag": { - "bBoxNE": [ - 1.38, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralMinimaBlackStemDownFlagLeft": { - "bBoxNE": [ - 1.128, - 0.56 - ], - "bBoxSW": [ - -0.248, - -2.6 - ] - }, - "mensuralMinimaBlackStemDownFlagRight": { - "bBoxNE": [ - 1.38, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralMinimaBlackStemDownFlaredFlag": { - "bBoxNE": [ - 1.424, - 0.56 - ], - "bBoxSW": [ - 0.0, - -2.6 - ] - }, - "mensuralMinimaBlackStemUp": { - "bBoxNE": [ - 1.128, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackStemUpExtendedFlag": { - "bBoxNE": [ - 1.38, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackStemUpFlagLeft": { - "bBoxNE": [ - 1.128, - 2.596 - ], - "bBoxSW": [ - -0.248, - -0.564 - ] - }, - "mensuralMinimaBlackStemUpFlagRight": { - "bBoxNE": [ - 1.38, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackStemUpFlaredFlag": { - "bBoxNE": [ - 1.424, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackVoidStemDown": { - "bBoxNE": [ - 1.128, - 0.56 - ], - "bBoxSW": [ - 0.0, - -2.664 - ] - }, - "mensuralMinimaBlackVoidStemDownExtendedFlag": { - "bBoxNE": [ - 1.384, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.644 - ] - }, - "mensuralMinimaBlackVoidStemDownFlagLeft": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - -0.248, - -2.636 - ] - }, - "mensuralMinimaBlackVoidStemDownFlagRight": { - "bBoxNE": [ - 1.38, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.636 - ] - }, - "mensuralMinimaBlackVoidStemDownFlaredFlag": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.644 - ] - }, - "mensuralMinimaBlackVoidStemUp": { - "bBoxNE": [ - 1.128, - 2.648 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackVoidStemUpExtendedFlag": { - "bBoxNE": [ - 1.376, - 2.624 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackVoidStemUpFlagLeft": { - "bBoxNE": [ - 1.128, - 2.648 - ], - "bBoxSW": [ - -0.248, - -0.564 - ] - }, - "mensuralMinimaBlackVoidStemUpFlagRight": { - "bBoxNE": [ - 1.376, - 2.648 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaBlackVoidStemUpFlaredFlag": { - "bBoxNE": [ - 1.428, - 2.624 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaVoidStemDown": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.648 - ] - }, - "mensuralMinimaVoidStemDownExtendedFlag": { - "bBoxNE": [ - 1.372, - 0.56 - ], - "bBoxSW": [ - 0.0, - -2.596 - ] - }, - "mensuralMinimaVoidStemDownFlagLeft": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - -0.248, - -2.592 - ] - }, - "mensuralMinimaVoidStemDownFlagRight": { - "bBoxNE": [ - 1.376, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.592 - ] - }, - "mensuralMinimaVoidStemDownFlaredFlag": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.624 - ] - }, - "mensuralMinimaVoidStemUp": { - "bBoxNE": [ - 1.128, - 2.648 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaVoidStemUpExtendedFlag": { - "bBoxNE": [ - 1.372, - 2.592 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaVoidStemUpFlagLeft": { - "bBoxNE": [ - 1.128, - 2.592 - ], - "bBoxSW": [ - -0.248, - -0.564 - ] - }, - "mensuralMinimaVoidStemUpFlagRight": { - "bBoxNE": [ - 1.376, - 2.592 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralMinimaVoidStemUpFlaredFlag": { - "bBoxNE": [ - 1.428, - 2.624 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralModusImperfectumVert": { - "bBoxNE": [ - 4.192, - 1.344 - ], - "bBoxSW": [ - 0.0, - -1.344 - ] - }, - "mensuralModusPerfectumVert": { - "bBoxNE": [ - 4.192, - 1.344 - ], - "bBoxSW": [ - 0.0, - -1.344 - ] - }, - "mensuralNoteheadLongaBlack": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadLongaBlackVoid": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadLongaVoid": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadLongaWhite": { - "bBoxNE": [ - 1.3, - 0.688 - ], - "bBoxSW": [ - 0.0, - -0.684 - ] - }, - "mensuralNoteheadMaximaBlack": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadMaximaBlackVoid": { - "bBoxNE": [ - 3.132, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadMaximaVoid": { - "bBoxNE": [ - 3.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadMaximaWhite": { - "bBoxNE": [ - 2.5, - 0.684 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralNoteheadMinimaWhite": { - "bBoxNE": [ - 1.28, - 0.74 - ], - "bBoxSW": [ - 0.0, - -0.736 - ] - }, - "mensuralNoteheadSemibrevisBlack": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadSemibrevisBlackVoid": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadSemibrevisBlackVoidTurned": { - "bBoxNE": [ - 1.128, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralNoteheadSemibrevisVoid": { - "bBoxNE": [ - 1.132, - 0.564 - ], - "bBoxSW": [ - 0.004, - -0.564 - ] - }, - "mensuralNoteheadSemiminimaWhite": { - "bBoxNE": [ - 1.28, - 0.74 - ], - "bBoxSW": [ - 0.0, - -0.736 - ] - }, - "mensuralObliqueAsc2ndBlack": { - "bBoxNE": [ - 3.128, - 1.056 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc2ndBlackVoid": { - "bBoxNE": [ - 3.132, - 1.056 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc2ndVoid": { - "bBoxNE": [ - 3.128, - 1.064 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc2ndWhite": { - "bBoxNE": [ - 3.124, - 1.16 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralObliqueAsc3rdBlack": { - "bBoxNE": [ - 3.128, - 1.524 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc3rdBlackVoid": { - "bBoxNE": [ - 3.132, - 1.532 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc3rdVoid": { - "bBoxNE": [ - 3.128, - 1.54 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc3rdWhite": { - "bBoxNE": [ - 3.124, - 1.712 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralObliqueAsc4thBlack": { - "bBoxNE": [ - 3.128, - 2.172 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc4thBlackVoid": { - "bBoxNE": [ - 3.132, - 2.052 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc4thVoid": { - "bBoxNE": [ - 3.128, - 2.1 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc4thWhite": { - "bBoxNE": [ - 3.124, - 2.28 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralObliqueAsc5thBlack": { - "bBoxNE": [ - 3.128, - 2.552 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc5thBlackVoid": { - "bBoxNE": [ - 3.132, - 2.56 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc5thVoid": { - "bBoxNE": [ - 3.128, - 2.592 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "mensuralObliqueAsc5thWhite": { - "bBoxNE": [ - 3.124, - 2.76 - ], - "bBoxSW": [ - 0.0, - -0.688 - ] - }, - "mensuralObliqueDesc2ndBlack": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.096 - ] - }, - "mensuralObliqueDesc2ndBlackVoid": { - "bBoxNE": [ - 3.132, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.096 - ] - }, - "mensuralObliqueDesc2ndVoid": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.104 - ] - }, - "mensuralObliqueDesc2ndWhite": { - "bBoxNE": [ - 3.124, - 0.688 - ], - "bBoxSW": [ - 0.0, - -1.16 - ] - }, - "mensuralObliqueDesc3rdBlack": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.564 - ] - }, - "mensuralObliqueDesc3rdBlackVoid": { - "bBoxNE": [ - 3.132, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.572 - ] - }, - "mensuralObliqueDesc3rdVoid": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -1.58 - ] - }, - "mensuralObliqueDesc3rdWhite": { - "bBoxNE": [ - 3.124, - 0.688 - ], - "bBoxSW": [ - 0.0, - -1.712 - ] - }, - "mensuralObliqueDesc4thBlack": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.212 - ] - }, - "mensuralObliqueDesc4thBlackVoid": { - "bBoxNE": [ - 3.132, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.092 - ] - }, - "mensuralObliqueDesc4thVoid": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.14 - ] - }, - "mensuralObliqueDesc4thWhite": { - "bBoxNE": [ - 3.124, - 0.688 - ], - "bBoxSW": [ - 0.0, - -2.28 - ] - }, - "mensuralObliqueDesc5thBlack": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.592 - ] - }, - "mensuralObliqueDesc5thBlackVoid": { - "bBoxNE": [ - 3.132, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.6 - ] - }, - "mensuralObliqueDesc5thVoid": { - "bBoxNE": [ - 3.128, - 0.528 - ], - "bBoxSW": [ - 0.0, - -2.632 - ] - }, - "mensuralObliqueDesc5thWhite": { - "bBoxNE": [ - 3.124, - 0.688 - ], - "bBoxSW": [ - 0.0, - -2.76 - ] - }, - "mensuralProlation1": { - "bBoxNE": [ - 2.128, - 1.06 - ], - "bBoxSW": [ - 0.004, - -1.064 - ] - }, - "mensuralProlation10": { - "bBoxNE": [ - 1.98, - 1.452 - ], - "bBoxSW": [ - 0.0, - -1.52 - ] - }, - "mensuralProlation11": { - "bBoxNE": [ - 1.98, - 1.056 - ], - "bBoxSW": [ - 0.0, - -1.068 - ] - }, - "mensuralProlation2": { - "bBoxNE": [ - 2.128, - 1.06 - ], - "bBoxSW": [ - 0.004, - -1.064 - ] - }, - "mensuralProlation3": { - "bBoxNE": [ - 2.128, - 1.452 - ], - "bBoxSW": [ - 0.004, - -1.52 - ] - }, - "mensuralProlation4": { - "bBoxNE": [ - 2.124, - 1.452 - ], - "bBoxSW": [ - 0.0, - -1.52 - ] - }, - "mensuralProlation5": { - "bBoxNE": [ - 1.976, - 1.06 - ], - "bBoxSW": [ - 0.0, - -1.064 - ] - }, - "mensuralProlation6": { - "bBoxNE": [ - 1.976, - 1.06 - ], - "bBoxSW": [ - 0.0, - -1.064 - ] - }, - "mensuralProlation7": { - "bBoxNE": [ - 1.968, - 1.124 - ], - "bBoxSW": [ - -0.012, - -1.0 - ] - }, - "mensuralProlation8": { - "bBoxNE": [ - 1.98, - 1.452 - ], - "bBoxSW": [ - 0.004, - -1.52 - ] - }, - "mensuralProlation9": { - "bBoxNE": [ - 1.98, - 1.452 - ], - "bBoxSW": [ - 0.004, - -1.52 - ] - }, - "mensuralProlationCombiningDot": { - "bBoxNE": [ - 0.5, - 0.248 - ], - "bBoxSW": [ - 0.0, - -0.252 - ] - }, - "mensuralProlationCombiningDotVoid": { - "bBoxNE": [ - 1.296, - 0.648 - ], - "bBoxSW": [ - 0.0, - -0.648 - ] - }, - "mensuralProlationCombiningStroke": { - "bBoxNE": [ - 0.192, - 1.488 - ], - "bBoxSW": [ - 0.0, - -1.484 - ] - }, - "mensuralProlationCombiningThreeDots": { - "bBoxNE": [ - 1.448, - 0.196 - ], - "bBoxSW": [ - 0.0, - -0.196 - ] - }, - "mensuralProlationCombiningThreeDotsTri": { - "bBoxNE": [ - 1.064, - 0.504 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "mensuralProlationCombiningTwoDots": { - "bBoxNE": [ - 1.064, - 0.208 - ], - "bBoxSW": [ - 0.0, - -0.208 - ] - }, - "mensuralProportion1": { - "bBoxNE": [ - 0.996, - 1.012 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "mensuralProportion2": { - "bBoxNE": [ - 1.324, - 1.012 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "mensuralProportion3": { - "bBoxNE": [ - 1.176, - 1.012 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "mensuralProportion4": { - "bBoxNE": [ - 1.516, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "mensuralProportion4Old": { - "bBoxNE": [ - 1.82, - 1.012 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "mensuralProportionMajor": { - "bBoxNE": [ - 0.888, - 1.484 - ], - "bBoxSW": [ - 0.0, - -1.488 - ] - }, - "mensuralProportionMinor": { - "bBoxNE": [ - 0.888, - 1.484 - ], - "bBoxSW": [ - 0.0, - -1.488 - ] - }, - "mensuralProportionProportioDupla1": { - "bBoxNE": [ - 2.972, - 1.06 - ], - "bBoxSW": [ - 0.0, - -1.064 - ] - }, - "mensuralProportionProportioDupla2": { - "bBoxNE": [ - 2.16, - 1.08 - ], - "bBoxSW": [ - 0.0, - -1.076 - ] - }, - "mensuralProportionProportioQuadrupla": { - "bBoxNE": [ - 2.156, - 1.076 - ], - "bBoxSW": [ - 0.0, - -1.08 - ] - }, - "mensuralProportionProportioTripla": { - "bBoxNE": [ - 2.16, - 1.08 - ], - "bBoxSW": [ - 0.0, - -1.076 - ] - }, - "mensuralProportionTempusPerfectum": { - "bBoxNE": [ - 2.188, - 1.1 - ], - "bBoxSW": [ - 0.0, - -1.104 - ] - }, - "mensuralRestBrevis": { - "bBoxNE": [ - 0.192, - 1.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralRestFusa": { - "bBoxNE": [ - 0.556, - 0.66 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralRestLongaImperfecta": { - "bBoxNE": [ - 0.192, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "mensuralRestLongaPerfecta": { - "bBoxNE": [ - 0.192, - 2.0 - ], - "bBoxSW": [ - 0.0, - -2.0 - ] - }, - "mensuralRestMaxima": { - "bBoxNE": [ - 0.588, - 2.0 - ], - "bBoxSW": [ - 0.0, - -2.0 - ] - }, - "mensuralRestMinima": { - "bBoxNE": [ - 0.192, - 0.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralRestSemibrevis": { - "bBoxNE": [ - 0.192, - 1.0 - ], - "bBoxSW": [ - 0.0, - 0.5 - ] - }, - "mensuralRestSemifusa": { - "bBoxNE": [ - 0.552, - 0.66 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralRestSemiminima": { - "bBoxNE": [ - 0.556, - 0.66 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralSemiminimaBlackStemDown": { - "bBoxNE": [ - 1.372, - 0.56 - ], - "bBoxSW": [ - 0.0, - -2.6 - ] - }, - "mensuralSemiminimaBlackStemUp": { - "bBoxNE": [ - 1.372, - 2.596 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralSemiminimaBlackVoidStemDown": { - "bBoxNE": [ - 1.372, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.636 - ] - }, - "mensuralSemiminimaBlackVoidStemUp": { - "bBoxNE": [ - 1.372, - 2.648 - ], - "bBoxSW": [ - 0.004, - -0.564 - ] - }, - "mensuralSemiminimaVoidStemDown": { - "bBoxNE": [ - 1.368, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.592 - ] - }, - "mensuralSemiminimaVoidStemUp": { - "bBoxNE": [ - 1.368, - 2.592 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "mensuralSignumDown": { - "bBoxNE": [ - 1.14, - 1.884 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralSignumUp": { - "bBoxNE": [ - 1.14, - 1.884 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "mensuralTempusImperfectumHoriz": { - "bBoxNE": [ - 4.192, - 1.344 - ], - "bBoxSW": [ - 0.0, - -1.344 - ] - }, - "mensuralTempusPerfectumHoriz": { - "bBoxNE": [ - 4.192, - 1.344 - ], - "bBoxSW": [ - 0.0, - -1.344 - ] - }, - "mensuralWhiteBrevis": { - "bBoxNE": [ - 1.3, - 0.688 - ], - "bBoxSW": [ - 0.0, - -0.684 - ] - }, - "mensuralWhiteFusa": { - "bBoxNE": [ - 1.392, - 3.544 - ], - "bBoxSW": [ - 0.0, - -0.744 - ] - }, - "mensuralWhiteLonga": { - "bBoxNE": [ - 1.3, - 0.684 - ], - "bBoxSW": [ - 0.0, - -3.548 - ] - }, - "mensuralWhiteMaxima": { - "bBoxNE": [ - 2.5, - 0.684 - ], - "bBoxSW": [ - 0.0, - -3.548 - ] - }, - "mensuralWhiteMinima": { - "bBoxNE": [ - 1.28, - 3.544 - ], - "bBoxSW": [ - 0.0, - -0.736 - ] - }, - "mensuralWhiteSemiminima": { - "bBoxNE": [ - 1.28, - 3.544 - ], - "bBoxSW": [ - 0.0, - -0.736 - ] - }, - "metAugmentationDot": { - "bBoxNE": [ - 0.4, - 0.2 - ], - "bBoxSW": [ - 0.0, - -0.2 - ] - }, - "metNote1024thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -6.98 - ] - }, - "metNote1024thUp": { - "bBoxNE": [ - 2.164, - 7.028 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote128thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -4.988 - ] - }, - "metNote128thUp": { - "bBoxNE": [ - 2.148, - 5.072 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote16thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.824 - ] - }, - "metNote16thUp": { - "bBoxNE": [ - 2.084, - 2.8 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote256thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -5.608 - ] - }, - "metNote256thUp": { - "bBoxNE": [ - 2.16, - 5.696 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote32ndDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -3.52 - ] - }, - "metNote32ndUp": { - "bBoxNE": [ - 2.152, - 3.692 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote512thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -6.28 - ] - }, - "metNote512thUp": { - "bBoxNE": [ - 2.168, - 6.356 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote64thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -4.256 - ] - }, - "metNote64thUp": { - "bBoxNE": [ - 2.148, - 4.392 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNote8thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.824 - ] - }, - "metNote8thUp": { - "bBoxNE": [ - 2.132, - 2.784 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNoteDoubleWhole": { - "bBoxNE": [ - 2.62, - 0.68 - ], - "bBoxSW": [ - 0.0, - -0.672 - ] - }, - "metNoteDoubleWholeSquare": { - "bBoxNE": [ - 1.664, - 0.792 - ], - "bBoxSW": [ - 0.0, - -0.76 - ] - }, - "metNoteHalfDown": { - "bBoxNE": [ - 1.364, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.752 - ] - }, - "metNoteHalfUp": { - "bBoxNE": [ - 1.364, - 2.752 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNoteQuarterDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -2.752 - ] - }, - "metNoteQuarterUp": { - "bBoxNE": [ - 1.328, - 2.752 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "metNoteWhole": { - "bBoxNE": [ - 1.836, - 0.592 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "metricModulationArrowLeft": { - "bBoxNE": [ - 3.308, - 1.452 - ], - "bBoxSW": [ - 0.0, - 0.54 - ] - }, - "metricModulationArrowRight": { - "bBoxNE": [ - 3.308, - 1.452 - ], - "bBoxSW": [ - 0.0, - 0.54 - ] - }, - "miscDoNotCopy": { - "bBoxNE": [ - 4.508, - 4.512 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "miscDoNotPhotocopy": { - "bBoxNE": [ - 4.34, - 4.024 - ], - "bBoxSW": [ - -0.02, - -0.036 - ] - }, - "miscEyeglasses": { - "bBoxNE": [ - 4.652, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "note1024thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -7.968 - ] - }, - "note1024thUp": { - "bBoxNE": [ - 2.268, - 7.804 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "note128thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -5.788 - ] - }, - "note128thUp": { - "bBoxNE": [ - 2.252, - 5.632 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note16thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -3.532 - ] - }, - "note16thUp": { - "bBoxNE": [ - 2.324, - 3.492 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note256thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -6.452 - ] - }, - "note256thUp": { - "bBoxNE": [ - 2.264, - 6.32 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note32ndDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -4.192 - ] - }, - "note32ndUp": { - "bBoxNE": [ - 2.252, - 4.092 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note512thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -7.156 - ] - }, - "note512thUp": { - "bBoxNE": [ - 2.272, - 7.052 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note64thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -4.96 - ] - }, - "note64thUp": { - "bBoxNE": [ - 2.252, - 4.888 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "note8thDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -3.528 - ] - }, - "note8thUp": { - "bBoxNE": [ - 2.264, - 3.492 - ], - "bBoxSW": [ - 0.0, - -0.552 - ] - }, - "noteABlack": { - "bBoxNE": [ - 1.432, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteAFlatBlack": { - "bBoxNE": [ - 1.432, - 0.56 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "noteAFlatHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteAFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteAHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteASharpBlack": { - "bBoxNE": [ - 1.432, - 0.56 - ], - "bBoxSW": [ - 0.0, - -0.568 - ] - }, - "noteASharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteASharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteAWhole": { - "bBoxNE": [ - 1.944, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteBBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteBFlatBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteBFlatHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteBFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteBHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteBSharpBlack": { - "bBoxNE": [ - 1.428, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteBSharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteBSharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteBWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteCBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteCFlatBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteCFlatHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteCFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteCHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteCSharpBlack": { - "bBoxNE": [ - 1.428, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteCSharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteCSharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteCWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteDBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteDFlatBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteDFlatHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteDFlatWhole": { - "bBoxNE": [ - 1.944, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.588 - ] - }, - "noteDHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteDSharpBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteDSharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteDSharpWhole": { - "bBoxNE": [ - 1.944, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.588 - ] - }, - "noteDWhole": { - "bBoxNE": [ - 1.944, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.588 - ] - }, - "noteDoBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteDoHalf": { - "bBoxNE": [ - 1.44, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteDoWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteDoubleWhole": { - "bBoxNE": [ - 2.62, - 0.68 - ], - "bBoxSW": [ - 0.0, - -0.672 - ] - }, - "noteDoubleWholeAlt": { - "bBoxNE": [ - 2.116, - 0.676 - ], - "bBoxSW": [ - 0.0, - -0.676 - ] - }, - "noteDoubleWholeSquare": { - "bBoxNE": [ - 1.664, - 0.792 - ], - "bBoxSW": [ - 0.0, - -0.76 - ] - }, - "noteEBlack": { - "bBoxNE": [ - 1.432, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteEFlatBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteEFlatHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteEFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteEHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteESharpBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteESharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteESharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteEWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteEmptyBlack": { - "bBoxNE": [ - 1.432, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteEmptyHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteEmptyWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteFBlack": { - "bBoxNE": [ - 1.432, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteFFlatBlack": { - "bBoxNE": [ - 1.428, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteFFlatHalf": { - "bBoxNE": [ - 1.444, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteFFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteFHalf": { - "bBoxNE": [ - 1.444, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteFSharpBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteFSharpHalf": { - "bBoxNE": [ - 1.444, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteFSharpWhole": { - "bBoxNE": [ - 1.944, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.588 - ] - }, - "noteFWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteFaBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteFaHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteFaWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteGBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteGFlatBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteGFlatHalf": { - "bBoxNE": [ - 1.444, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteGFlatWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteGHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - -0.004, - -0.576 - ] - }, - "noteGSharpBlack": { - "bBoxNE": [ - 1.428, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteGSharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteGSharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteGWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteHBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteHHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteHSharpBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteHSharpHalf": { - "bBoxNE": [ - 1.444, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteHSharpWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteHWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteHalfDown": { - "bBoxNE": [ - 1.364, - 0.58 - ], - "bBoxSW": [ - 0.0, - -3.5 - ] - }, - "noteHalfUp": { - "bBoxNE": [ - 1.364, - 3.5 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteLaBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteLaHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteLaWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteMiBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteMiHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteMiWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteQuarterDown": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -3.5 - ] - }, - "noteQuarterUp": { - "bBoxNE": [ - 1.328, - 3.5 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteReBlack": { - "bBoxNE": [ - 1.432, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "noteReHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteReWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteShapeArrowheadLeftBlack": { - "bBoxNE": [ - 1.124, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeArrowheadLeftWhite": { - "bBoxNE": [ - 1.12, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeDiamondBlack": { - "bBoxNE": [ - 1.308, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeDiamondWhite": { - "bBoxNE": [ - 1.312, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeIsoscelesTriangleBlack": { - "bBoxNE": [ - 1.124, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeIsoscelesTriangleWhite": { - "bBoxNE": [ - 1.124, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeKeystoneBlack": { - "bBoxNE": [ - 1.176, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeKeystoneWhite": { - "bBoxNE": [ - 1.172, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeMoonBlack": { - "bBoxNE": [ - 1.516, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeMoonLeftBlack": { - "bBoxNE": [ - 1.04, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeMoonLeftWhite": { - "bBoxNE": [ - 1.04, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeMoonWhite": { - "bBoxNE": [ - 1.516, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeQuarterMoonBlack": { - "bBoxNE": [ - 1.036, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeQuarterMoonWhite": { - "bBoxNE": [ - 1.036, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeRoundBlack": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeRoundWhite": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeSquareBlack": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeSquareWhite": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleLeftBlack": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleLeftWhite": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRightBlack": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRightWhite": { - "bBoxNE": [ - 1.44, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRoundBlack": { - "bBoxNE": [ - 1.424, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRoundLeftBlack": { - "bBoxNE": [ - 1.292, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRoundLeftWhite": { - "bBoxNE": [ - 1.292, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleRoundWhite": { - "bBoxNE": [ - 1.424, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleUpBlack": { - "bBoxNE": [ - 1.424, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteShapeTriangleUpWhite": { - "bBoxNE": [ - 1.424, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteSiBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteSiHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteSiWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteSoBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteSoHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteSoWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteTiBlack": { - "bBoxNE": [ - 1.432, - 0.572 - ], - "bBoxSW": [ - 0.0, - -0.556 - ] - }, - "noteTiHalf": { - "bBoxNE": [ - 1.44, - 0.584 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteTiWhole": { - "bBoxNE": [ - 1.944, - 0.576 - ], - "bBoxSW": [ - 0.0, - -0.584 - ] - }, - "noteWhole": { - "bBoxNE": [ - 1.836, - 0.592 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadBlack": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadBlackOversized": { - "bBoxNE": [ - 1.328, - 0.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "noteheadBlackParens": { - "bBoxNE": [ - 2.06, - 0.724 - ], - "bBoxSW": [ - 0.0, - -0.724 - ] - }, - "noteheadBlackSmall": { - "bBoxNE": [ - 1.408, - 0.552 - ], - "bBoxSW": [ - 0.0, - -0.576 - ] - }, - "noteheadCircleSlash": { - "bBoxNE": [ - 1.0, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadCircleX": { - "bBoxNE": [ - 0.996, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadCircleXDoubleWhole": { - "bBoxNE": [ - 1.688, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadCircleXHalf": { - "bBoxNE": [ - 1.0, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadCircleXWhole": { - "bBoxNE": [ - 0.996, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadCircledBlack": { - "bBoxNE": [ - 1.368, - 0.668 - ], - "bBoxSW": [ - 0.0, - -0.684 - ] - }, - "noteheadCircledBlackLarge": { - "bBoxNE": [ - 1.66, - 0.824 - ], - "bBoxSW": [ - 0.0, - -0.828 - ] - }, - "noteheadCircledDoubleWhole": { - "bBoxNE": [ - 2.412, - 0.852 - ], - "bBoxSW": [ - 0.0, - -0.872 - ] - }, - "noteheadCircledDoubleWholeLarge": { - "bBoxNE": [ - 2.216, - 0.864 - ], - "bBoxSW": [ - 0.0, - -0.828 - ] - }, - "noteheadCircledHalf": { - "bBoxNE": [ - 1.316, - 0.668 - ], - "bBoxSW": [ - 0.0, - -0.648 - ] - }, - "noteheadCircledHalfLarge": { - "bBoxNE": [ - 1.612, - 0.808 - ], - "bBoxSW": [ - 0.0, - -0.808 - ] - }, - "noteheadCircledWhole": { - "bBoxNE": [ - 1.748, - 0.844 - ], - "bBoxSW": [ - 0.0, - -0.9 - ] - }, - "noteheadCircledWholeLarge": { - "bBoxNE": [ - 2.164, - 0.844 - ], - "bBoxSW": [ - 0.0, - -0.808 - ] - }, - "noteheadCircledXLarge": { - "bBoxNE": [ - 1.828, - 0.912 - ], - "bBoxSW": [ - 0.0, - -0.912 - ] - }, - "noteheadClusterDoubleWhole2nd": { - "bBoxNE": [ - 2.428, - 1.14 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadClusterDoubleWhole3rd": { - "bBoxNE": [ - 2.428, - 1.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadClusterDoubleWholeBottom": { - "bBoxNE": [ - 2.392, - 0.744 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadClusterDoubleWholeMiddle": { - "bBoxNE": [ - 2.388, - 0.4 - ], - "bBoxSW": [ - 0.0, - -0.396 - ] - }, - "noteheadClusterDoubleWholeTop": { - "bBoxNE": [ - 2.392, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.66 - ] - }, - "noteheadClusterHalf2nd": { - "bBoxNE": [ - 1.24, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterHalf3rd": { - "bBoxNE": [ - 1.264, - 1.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterHalfBottom": { - "bBoxNE": [ - 1.196, - 0.56 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterHalfMiddle": { - "bBoxNE": [ - 0.936, - 0.4 - ], - "bBoxSW": [ - 0.26, - -0.4 - ] - }, - "noteheadClusterHalfTop": { - "bBoxNE": [ - 1.196, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.604 - ] - }, - "noteheadClusterQuarter2nd": { - "bBoxNE": [ - 1.308, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterQuarter3rd": { - "bBoxNE": [ - 1.44, - 1.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterQuarterBottom": { - "bBoxNE": [ - 1.18, - 0.804 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterQuarterMiddle": { - "bBoxNE": [ - 0.896, - 0.4 - ], - "bBoxSW": [ - 0.28, - -0.4 - ] - }, - "noteheadClusterQuarterTop": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.708 - ] - }, - "noteheadClusterRoundBlack": { - "bBoxNE": [ - 1.328, - 2.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterRoundWhite": { - "bBoxNE": [ - 1.496, - 2.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterSquareBlack": { - "bBoxNE": [ - 1.328, - 2.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterSquareWhite": { - "bBoxNE": [ - 1.328, - 2.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterWhole2nd": { - "bBoxNE": [ - 1.728, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterWhole3rd": { - "bBoxNE": [ - 1.7, - 1.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterWholeBottom": { - "bBoxNE": [ - 1.696, - 0.844 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadClusterWholeMiddle": { - "bBoxNE": [ - 1.276, - 0.4 - ], - "bBoxSW": [ - 0.42, - -0.4 - ] - }, - "noteheadClusterWholeTop": { - "bBoxNE": [ - 1.696, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.84 - ] - }, - "noteheadDiamondBlack": { - "bBoxNE": [ - 1.0, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondBlackOld": { - "bBoxNE": [ - 1.16, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondBlackWide": { - "bBoxNE": [ - 1.4, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterBlack2nd": { - "bBoxNE": [ - 1.068, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterBlack3rd": { - "bBoxNE": [ - 1.096, - 1.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterBlackBottom": { - "bBoxNE": [ - 1.184, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.496 - ] - }, - "noteheadDiamondClusterBlackMiddle": { - "bBoxNE": [ - 0.88, - 0.4 - ], - "bBoxSW": [ - 0.328, - -0.4 - ] - }, - "noteheadDiamondClusterBlackTop": { - "bBoxNE": [ - 1.184, - 0.496 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterWhite2nd": { - "bBoxNE": [ - 1.06, - 0.996 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterWhite3rd": { - "bBoxNE": [ - 1.092, - 1.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterWhiteBottom": { - "bBoxNE": [ - 1.164, - 0.512 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondClusterWhiteMiddle": { - "bBoxNE": [ - 0.864, - 0.4 - ], - "bBoxSW": [ - 0.324, - -0.4 - ] - }, - "noteheadDiamondClusterWhiteTop": { - "bBoxNE": [ - 1.168, - 0.5 - ], - "bBoxSW": [ - 0.004, - -0.512 - ] - }, - "noteheadDiamondDoubleWhole": { - "bBoxNE": [ - 1.728, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadDiamondDoubleWholeOld": { - "bBoxNE": [ - 1.8, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadDiamondHalf": { - "bBoxNE": [ - 1.004, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondHalfFilled": { - "bBoxNE": [ - 1.156, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondHalfOld": { - "bBoxNE": [ - 1.164, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondHalfWide": { - "bBoxNE": [ - 1.404, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondOpen": { - "bBoxNE": [ - 1.152, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondWhite": { - "bBoxNE": [ - 1.0, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondWhiteWide": { - "bBoxNE": [ - 1.4, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondWhole": { - "bBoxNE": [ - 1.08, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDiamondWholeOld": { - "bBoxNE": [ - 1.172, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadDoubleWhole": { - "bBoxNE": [ - 2.396, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadDoubleWholeAlt": { - "bBoxNE": [ - 2.116, - 0.676 - ], - "bBoxSW": [ - 0.0, - -0.676 - ] - }, - "noteheadDoubleWholeOversized": { - "bBoxNE": [ - 2.62, - 0.668 - ], - "bBoxSW": [ - 0.0, - -0.684 - ] - }, - "noteheadDoubleWholeParens": { - "bBoxNE": [ - 3.644, - 0.724 - ], - "bBoxSW": [ - 0.0, - -0.724 - ] - }, - "noteheadDoubleWholeSmall": { - "bBoxNE": [ - 2.732, - 0.676 - ], - "bBoxSW": [ - 0.0, - -0.676 - ] - }, - "noteheadDoubleWholeSquare": { - "bBoxNE": [ - 1.664, - 0.792 - ], - "bBoxSW": [ - 0.0, - -0.76 - ] - }, - "noteheadDoubleWholeSquareOversized": { - "bBoxNE": [ - 2.132, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadDoubleWholeWithX": { - "bBoxNE": [ - 2.388, - 0.616 - ], - "bBoxSW": [ - 0.0, - -0.616 - ] - }, - "noteheadHalf": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadHalfFilled": { - "bBoxNE": [ - 1.18, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadHalfOversized": { - "bBoxNE": [ - 1.364, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteheadHalfParens": { - "bBoxNE": [ - 1.976, - 0.724 - ], - "bBoxSW": [ - 0.0, - -0.724 - ] - }, - "noteheadHalfSmall": { - "bBoxNE": [ - 1.364, - 0.58 - ], - "bBoxSW": [ - 0.0, - -0.58 - ] - }, - "noteheadHalfWithX": { - "bBoxNE": [ - 1.176, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadHeavyX": { - "bBoxNE": [ - 1.54, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadHeavyXHat": { - "bBoxNE": [ - 1.828, - 1.04 - ], - "bBoxSW": [ - -0.292, - -0.5 - ] - }, - "noteheadLargeArrowDownBlack": { - "bBoxNE": [ - 1.328, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadLargeArrowDownDoubleWhole": { - "bBoxNE": [ - 2.204, - 1.12 - ], - "bBoxSW": [ - 0.0, - -0.64 - ] - }, - "noteheadLargeArrowDownHalf": { - "bBoxNE": [ - 1.44, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadLargeArrowDownWhole": { - "bBoxNE": [ - 1.44, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadLargeArrowUpBlack": { - "bBoxNE": [ - 1.328, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadLargeArrowUpDoubleWhole": { - "bBoxNE": [ - 2.204, - 1.14 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadLargeArrowUpHalf": { - "bBoxNE": [ - 1.44, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadLargeArrowUpWhole": { - "bBoxNE": [ - 1.44, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadMoonBlack": { - "bBoxNE": [ - 1.26, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadMoonWhite": { - "bBoxNE": [ - 1.26, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadParenthesis": { - "bBoxNE": [ - 1.472, - 0.728 - ], - "bBoxSW": [ - -0.292, - -0.72 - ] - }, - "noteheadParenthesisLeft": { - "bBoxNE": [ - 0.436, - 0.724 - ], - "bBoxSW": [ - 0.0, - -0.724 - ] - }, - "noteheadParenthesisRight": { - "bBoxNE": [ - 0.292, - 0.724 - ], - "bBoxSW": [ - -0.144, - -0.724 - ] - }, - "noteheadPlusBlack": { - "bBoxNE": [ - 0.996, - 0.5 - ], - "bBoxSW": [ - -0.004, - -0.5 - ] - }, - "noteheadPlusDoubleWhole": { - "bBoxNE": [ - 1.892, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadPlusHalf": { - "bBoxNE": [ - 1.044, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadPlusWhole": { - "bBoxNE": [ - 1.14, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadRectangularClusterBlackBottom": { - "bBoxNE": [ - 1.376, - 0.54 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadRectangularClusterBlackMiddle": { - "bBoxNE": [ - 1.376, - 0.52 - ], - "bBoxSW": [ - 0.0, - -0.52 - ] - }, - "noteheadRectangularClusterBlackTop": { - "bBoxNE": [ - 1.376, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.54 - ] - }, - "noteheadRectangularClusterWhiteBottom": { - "bBoxNE": [ - 1.376, - 0.54 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadRectangularClusterWhiteMiddle": { - "bBoxNE": [ - 1.376, - 0.52 - ], - "bBoxSW": [ - 0.0, - -0.52 - ] - }, - "noteheadRectangularClusterWhiteTop": { - "bBoxNE": [ - 1.376, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.54 - ] - }, - "noteheadRoundBlack": { - "bBoxNE": [ - 1.004, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadRoundBlackLarge": { - "bBoxNE": [ - 2.0, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadRoundBlackSlashed": { - "bBoxNE": [ - 2.34, - 1.84 - ], - "bBoxSW": [ - -1.344, - -1.84 - ] - }, - "noteheadRoundBlackSlashedLarge": { - "bBoxNE": [ - 3.064, - 1.956 - ], - "bBoxSW": [ - -0.844, - -1.956 - ] - }, - "noteheadRoundWhite": { - "bBoxNE": [ - 1.004, - 0.5 - ], - "bBoxSW": [ - 0.004, - -0.5 - ] - }, - "noteheadRoundWhiteLarge": { - "bBoxNE": [ - 2.0, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadRoundWhiteSlashed": { - "bBoxNE": [ - 2.34, - 1.84 - ], - "bBoxSW": [ - -1.344, - -1.84 - ] - }, - "noteheadRoundWhiteSlashedLarge": { - "bBoxNE": [ - 2.944, - 1.956 - ], - "bBoxSW": [ - -0.964, - -1.956 - ] - }, - "noteheadRoundWhiteWithDot": { - "bBoxNE": [ - 1.004, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadRoundWhiteWithDotLarge": { - "bBoxNE": [ - 2.004, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashDiamondWhite": { - "bBoxNE": [ - 2.0, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashHorizontalEnds": { - "bBoxNE": [ - 2.12, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashHorizontalEndsMuted": { - "bBoxNE": [ - 2.12, - 1.036 - ], - "bBoxSW": [ - 0.0, - -1.036 - ] - }, - "noteheadSlashVerticalEnds": { - "bBoxNE": [ - 1.46, - 0.996 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "noteheadSlashVerticalEndsMuted": { - "bBoxNE": [ - 1.512, - 1.032 - ], - "bBoxSW": [ - -0.052, - -1.04 - ] - }, - "noteheadSlashVerticalEndsSmall": { - "bBoxNE": [ - 0.732, - 0.496 - ], - "bBoxSW": [ - 0.0, - -0.504 - ] - }, - "noteheadSlashWhiteHalf": { - "bBoxNE": [ - 3.12, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashWhiteMuted": { - "bBoxNE": [ - 3.12, - 1.036 - ], - "bBoxSW": [ - 0.0, - -1.036 - ] - }, - "noteheadSlashWhiteWhole": { - "bBoxNE": [ - 3.92, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashX": { - "bBoxNE": [ - 2.12, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSlashedBlack1": { - "bBoxNE": [ - 1.5, - 0.668 - ], - "bBoxSW": [ - -0.32, - -0.66 - ] - }, - "noteheadSlashedBlack2": { - "bBoxNE": [ - 1.504, - 0.672 - ], - "bBoxSW": [ - -0.316, - -0.656 - ] - }, - "noteheadSlashedDoubleWhole1": { - "bBoxNE": [ - 2.384, - 0.672 - ], - "bBoxSW": [ - 0.0, - -0.716 - ] - }, - "noteheadSlashedDoubleWhole2": { - "bBoxNE": [ - 2.384, - 0.676 - ], - "bBoxSW": [ - 0.0, - -0.712 - ] - }, - "noteheadSlashedHalf1": { - "bBoxNE": [ - 1.544, - 0.64 - ], - "bBoxSW": [ - -0.268, - -0.568 - ] - }, - "noteheadSlashedHalf2": { - "bBoxNE": [ - 1.52, - 0.672 - ], - "bBoxSW": [ - -0.292, - -0.536 - ] - }, - "noteheadSlashedWhole1": { - "bBoxNE": [ - 1.732, - 0.592 - ], - "bBoxSW": [ - -0.088, - -0.628 - ] - }, - "noteheadSlashedWhole2": { - "bBoxNE": [ - 1.744, - 0.604 - ], - "bBoxSW": [ - -0.072, - -0.616 - ] - }, - "noteheadSquareBlack": { - "bBoxNE": [ - 1.252, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadSquareBlackLarge": { - "bBoxNE": [ - 2.0, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSquareBlackWhite": { - "bBoxNE": [ - 2.0, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "noteheadSquareWhite": { - "bBoxNE": [ - 1.252, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleDownBlack": { - "bBoxNE": [ - 1.168, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleDownDoubleWhole": { - "bBoxNE": [ - 1.932, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadTriangleDownHalf": { - "bBoxNE": [ - 1.14, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleDownWhite": { - "bBoxNE": [ - 1.172, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleDownWhole": { - "bBoxNE": [ - 1.276, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleLeftBlack": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleLeftWhite": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleRightBlack": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleRightWhite": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleRoundDownBlack": { - "bBoxNE": [ - 1.112, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleRoundDownWhite": { - "bBoxNE": [ - 1.112, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpBlack": { - "bBoxNE": [ - 1.172, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpDoubleWhole": { - "bBoxNE": [ - 1.932, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadTriangleUpHalf": { - "bBoxNE": [ - 1.14, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpRightBlack": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpRightWhite": { - "bBoxNE": [ - 1.356, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpWhite": { - "bBoxNE": [ - 1.172, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadTriangleUpWhole": { - "bBoxNE": [ - 1.276, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadVoidWithX": { - "bBoxNE": [ - 1.156, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadWhole": { - "bBoxNE": [ - 1.688, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadWholeFilled": { - "bBoxNE": [ - 1.688, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadWholeOversized": { - "bBoxNE": [ - 1.836, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.544 - ] - }, - "noteheadWholeParens": { - "bBoxNE": [ - 2.416, - 0.724 - ], - "bBoxSW": [ - 0.0, - -0.724 - ] - }, - "noteheadWholeSmall": { - "bBoxNE": [ - 1.836, - 0.544 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "noteheadWholeWithX": { - "bBoxNE": [ - 1.68, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadXBlack": { - "bBoxNE": [ - 1.16, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadXDoubleWhole": { - "bBoxNE": [ - 2.184, - 0.62 - ], - "bBoxSW": [ - 0.0, - -0.62 - ] - }, - "noteheadXHalf": { - "bBoxNE": [ - 1.336, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "noteheadXOrnate": { - "bBoxNE": [ - 0.988, - 0.504 - ], - "bBoxSW": [ - 0.0, - -0.504 - ] - }, - "noteheadXOrnateEllipse": { - "bBoxNE": [ - 1.532, - 0.676 - ], - "bBoxSW": [ - 0.0, - -0.676 - ] - }, - "noteheadXWhole": { - "bBoxNE": [ - 1.508, - 0.5 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "octaveBaselineA": { - "bBoxNE": [ - 0.968, - 0.908 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "octaveBaselineB": { - "bBoxNE": [ - 0.796, - 1.352 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "octaveBaselineM": { - "bBoxNE": [ - 1.524, - 0.928 - ], - "bBoxSW": [ - 0.0, - -0.02 - ] - }, - "octaveBaselineV": { - "bBoxNE": [ - 0.856, - 0.9 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "octaveBassa": { - "bBoxNE": [ - 4.252, - 1.352 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "octaveLoco": { - "bBoxNE": [ - 3.012, - 1.348 - ], - "bBoxSW": [ - -0.004, - -0.04 - ] - }, - "octaveParensLeft": { - "bBoxNE": [ - 0.652, - 1.94 - ], - "bBoxSW": [ - 0.0, - -0.068 - ] - }, - "octaveParensRight": { - "bBoxNE": [ - 0.548, - 1.94 - ], - "bBoxSW": [ - -0.104, - -0.068 - ] - }, - "octaveSuperscriptA": { - "bBoxNE": [ - 0.968, - 1.812 - ], - "bBoxSW": [ - 0.0, - 0.864 - ] - }, - "octaveSuperscriptB": { - "bBoxNE": [ - 0.796, - 2.244 - ], - "bBoxSW": [ - 0.0, - 0.852 - ] - }, - "octaveSuperscriptM": { - "bBoxNE": [ - 1.524, - 1.812 - ], - "bBoxSW": [ - 0.0, - 0.864 - ] - }, - "octaveSuperscriptV": { - "bBoxNE": [ - 0.856, - 1.804 - ], - "bBoxSW": [ - 0.0, - 0.864 - ] - }, - "ornamentBottomLeftConcaveStroke": { - "bBoxNE": [ - 1.528, - 0.98 - ], - "bBoxSW": [ - 0.004, - -1.468 - ] - }, - "ornamentBottomLeftConcaveStrokeLarge": { - "bBoxNE": [ - 2.004, - 0.956 - ], - "bBoxSW": [ - 0.004, - -1.468 - ] - }, - "ornamentBottomLeftConvexStroke": { - "bBoxNE": [ - 2.004, - 0.72 - ], - "bBoxSW": [ - -0.14, - -0.784 - ] - }, - "ornamentBottomRightConcaveStroke": { - "bBoxNE": [ - 1.108, - 0.972 - ], - "bBoxSW": [ - -0.216, - -0.88 - ] - }, - "ornamentBottomRightConvexStroke": { - "bBoxNE": [ - 2.208, - 0.98 - ], - "bBoxSW": [ - -0.212, - -0.736 - ] - }, - "ornamentComma": { - "bBoxNE": [ - 0.568, - 0.936 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "ornamentDoubleObliqueLinesAfterNote": { - "bBoxNE": [ - 2.076, - 1.9 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "ornamentDoubleObliqueLinesBeforeNote": { - "bBoxNE": [ - 2.072, - 1.9 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "ornamentDownCurve": { - "bBoxNE": [ - 1.568, - 0.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentHaydn": { - "bBoxNE": [ - 1.996, - 0.852 - ], - "bBoxSW": [ - 0.0, - -0.16 - ] - }, - "ornamentHighLeftConcaveStroke": { - "bBoxNE": [ - 1.724, - 1.156 - ], - "bBoxSW": [ - 0.0, - 0.16 - ] - }, - "ornamentHighLeftConvexStroke": { - "bBoxNE": [ - 1.3, - 1.384 - ], - "bBoxSW": [ - 0.0, - -0.02 - ] - }, - "ornamentHighRightConcaveStroke": { - "bBoxNE": [ - 2.12, - 1.232 - ], - "bBoxSW": [ - -0.288, - 0.004 - ] - }, - "ornamentHighRightConvexStroke": { - "bBoxNE": [ - 1.604, - 1.016 - ], - "bBoxSW": [ - -0.204, - 0.0 - ] - }, - "ornamentHookAfterNote": { - "bBoxNE": [ - 1.996, - 1.34 - ], - "bBoxSW": [ - 0.004, - 0.024 - ] - }, - "ornamentHookBeforeNote": { - "bBoxNE": [ - 1.492, - 1.42 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentLeftFacingHalfCircle": { - "bBoxNE": [ - 0.632, - 1.892 - ], - "bBoxSW": [ - -0.004, - 0.004 - ] - }, - "ornamentLeftFacingHook": { - "bBoxNE": [ - 0.88, - 1.9 - ], - "bBoxSW": [ - 0.016, - 0.012 - ] - }, - "ornamentLeftPlus": { - "bBoxNE": [ - 2.836, - 1.9 - ], - "bBoxSW": [ - -0.004, - -0.228 - ] - }, - "ornamentLeftShakeT": { - "bBoxNE": [ - 1.188, - 1.936 - ], - "bBoxSW": [ - 0.0, - -0.024 - ] - }, - "ornamentLeftVerticalStroke": { - "bBoxNE": [ - 0.68, - 1.92 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "ornamentLeftVerticalStrokeWithCross": { - "bBoxNE": [ - 1.252, - 2.0 - ], - "bBoxSW": [ - -0.12, - -0.004 - ] - }, - "ornamentLowLeftConcaveStroke": { - "bBoxNE": [ - 1.524, - 1.08 - ], - "bBoxSW": [ - 0.004, - -0.064 - ] - }, - "ornamentLowLeftConvexStroke": { - "bBoxNE": [ - 1.596, - 0.812 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "ornamentLowRightConcaveStroke": { - "bBoxNE": [ - 1.288, - 0.956 - ], - "bBoxSW": [ - -0.224, - -0.104 - ] - }, - "ornamentLowRightConvexStroke": { - "bBoxNE": [ - 1.904, - 0.98 - ], - "bBoxSW": [ - -0.212, - -0.104 - ] - }, - "ornamentMiddleVerticalStroke": { - "bBoxNE": [ - 0.064, - 1.324 - ], - "bBoxSW": [ - -0.056, - -0.244 - ] - }, - "ornamentMordent": { - "bBoxNE": [ - 2.9, - 0.98 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentMordentInverted": { - "bBoxNE": [ - 2.916, - 1.276 - ], - "bBoxSW": [ - 0.004, - -0.292 - ] - }, - "ornamentObliqueLineAfterNote": { - "bBoxNE": [ - 1.252, - 1.904 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "ornamentObliqueLineBeforeNote": { - "bBoxNE": [ - 1.256, - 1.904 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "ornamentObliqueLineHorizAfterNote": { - "bBoxNE": [ - 1.944, - 0.5 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "ornamentObliqueLineHorizBeforeNote": { - "bBoxNE": [ - 1.944, - 0.5 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "ornamentOriscus": { - "bBoxNE": [ - 2.0, - 0.744 - ], - "bBoxSW": [ - 0.004, - 0.016 - ] - }, - "ornamentPinceCouperin": { - "bBoxNE": [ - 2.344, - 1.884 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPortDeVoixV": { - "bBoxNE": [ - 1.772, - 1.904 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompAppoggTrill": { - "bBoxNE": [ - 4.476, - 1.924 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompAppoggTrillSuffix": { - "bBoxNE": [ - 3.504, - 2.476 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompCadence": { - "bBoxNE": [ - 4.424, - 1.164 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompCadenceUpperPrefix": { - "bBoxNE": [ - 4.052, - 0.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompCadenceUpperPrefixTurn": { - "bBoxNE": [ - 4.052, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompCadenceWithTurn": { - "bBoxNE": [ - 4.424, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompDescendingSlide": { - "bBoxNE": [ - 4.516, - 0.976 - ], - "bBoxSW": [ - 0.0, - -0.74 - ] - }, - "ornamentPrecompDoubleCadenceLowerPrefix": { - "bBoxNE": [ - 5.476, - 1.164 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompDoubleCadenceUpperPrefix": { - "bBoxNE": [ - 5.112, - 0.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompDoubleCadenceUpperPrefixTurn": { - "bBoxNE": [ - 5.108, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompInvertedMordentUpperPrefix": { - "bBoxNE": [ - 4.888, - 1.56 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompMordentRelease": { - "bBoxNE": [ - 2.772, - 1.536 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompMordentUpperPrefix": { - "bBoxNE": [ - 4.892, - 1.564 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompPortDeVoixMordent": { - "bBoxNE": [ - 5.22, - 1.32 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompSlide": { - "bBoxNE": [ - 4.432, - 1.232 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompSlideTrillBach": { - "bBoxNE": [ - 4.192, - 1.324 - ], - "bBoxSW": [ - 0.0, - -1.468 - ] - }, - "ornamentPrecompSlideTrillDAnglebert": { - "bBoxNE": [ - 4.6, - 0.98 - ], - "bBoxSW": [ - 0.008, - -1.468 - ] - }, - "ornamentPrecompSlideTrillMarpurg": { - "bBoxNE": [ - 4.448, - 1.524 - ], - "bBoxSW": [ - 0.0, - -1.468 - ] - }, - "ornamentPrecompSlideTrillMuffat": { - "bBoxNE": [ - 5.644, - 2.016 - ], - "bBoxSW": [ - 0.016, - -0.788 - ] - }, - "ornamentPrecompSlideTrillSuffixMuffat": { - "bBoxNE": [ - 4.328, - 1.524 - ], - "bBoxSW": [ - 0.0, - -0.784 - ] - }, - "ornamentPrecompTrillLowerSuffix": { - "bBoxNE": [ - 3.436, - 0.984 - ], - "bBoxSW": [ - 0.0, - -0.888 - ] - }, - "ornamentPrecompTrillSuffixDandrieu": { - "bBoxNE": [ - 3.796, - 1.524 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentPrecompTrillWithMordent": { - "bBoxNE": [ - 3.96, - 1.332 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompTurnTrillBach": { - "bBoxNE": [ - 5.896, - 1.38 - ], - "bBoxSW": [ - 0.0, - -0.248 - ] - }, - "ornamentPrecompTurnTrillDAnglebert": { - "bBoxNE": [ - 5.976, - 2.04 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentQuilisma": { - "bBoxNE": [ - 1.664, - 1.196 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "ornamentRightFacingHalfCircle": { - "bBoxNE": [ - 0.64, - 1.892 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "ornamentRightFacingHook": { - "bBoxNE": [ - 0.868, - 1.896 - ], - "bBoxSW": [ - 0.004, - 0.008 - ] - }, - "ornamentRightVerticalStroke": { - "bBoxNE": [ - 0.656, - 2.472 - ], - "bBoxSW": [ - -0.1, - 0.228 - ] - }, - "ornamentSchleifer": { - "bBoxNE": [ - 4.572, - 2.64 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentShake3": { - "bBoxNE": [ - 1.124, - 1.124 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "ornamentShakeMuffat1": { - "bBoxNE": [ - 0.872, - 1.892 - ], - "bBoxSW": [ - 0.0, - 0.256 - ] - }, - "ornamentShortObliqueLineAfterNote": { - "bBoxNE": [ - 0.792, - 1.204 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "ornamentShortObliqueLineBeforeNote": { - "bBoxNE": [ - 0.792, - 1.2 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "ornamentTopLeftConcaveStroke": { - "bBoxNE": [ - 1.388, - 1.864 - ], - "bBoxSW": [ - 0.008, - 0.16 - ] - }, - "ornamentTopLeftConvexStroke": { - "bBoxNE": [ - 1.18, - 1.552 - ], - "bBoxSW": [ - 0.0, - 0.084 - ] - }, - "ornamentTopRightConcaveStroke": { - "bBoxNE": [ - 1.744, - 2.02 - ], - "bBoxSW": [ - -0.276, - 0.004 - ] - }, - "ornamentTopRightConvexStroke": { - "bBoxNE": [ - 0.448, - 1.524 - ], - "bBoxSW": [ - -0.388, - 0.236 - ] - }, - "ornamentTremblement": { - "bBoxNE": [ - 3.94, - 0.976 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "ornamentTremblementCouperin": { - "bBoxNE": [ - 2.44, - 0.68 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTrill": { - "bBoxNE": [ - 2.084, - 1.56 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ornamentTrillFlatAbove": { - "bBoxNE": [ - 2.084, - 3.252 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ornamentTrillNaturalAbove": { - "bBoxNE": [ - 2.084, - 3.384 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ornamentTrillSharpAbove": { - "bBoxNE": [ - 2.084, - 3.524 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ornamentTurn": { - "bBoxNE": [ - 1.84, - 0.872 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTurnFlatAbove": { - "bBoxNE": [ - 1.84, - 2.692 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTurnFlatAboveSharpBelow": { - "bBoxNE": [ - 1.84, - 2.692 - ], - "bBoxSW": [ - 0.0, - -1.98 - ] - }, - "ornamentTurnFlatBelow": { - "bBoxNE": [ - 1.84, - 0.872 - ], - "bBoxSW": [ - 0.0, - -1.708 - ] - }, - "ornamentTurnInverted": { - "bBoxNE": [ - 1.828, - 0.872 - ], - "bBoxSW": [ - -0.012, - 0.0 - ] - }, - "ornamentTurnNaturalAbove": { - "bBoxNE": [ - 1.84, - 2.824 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTurnNaturalBelow": { - "bBoxNE": [ - 1.84, - 0.872 - ], - "bBoxSW": [ - 0.0, - -1.988 - ] - }, - "ornamentTurnSharpAbove": { - "bBoxNE": [ - 1.84, - 2.808 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTurnSharpAboveFlatBelow": { - "bBoxNE": [ - 1.84, - 2.808 - ], - "bBoxSW": [ - 0.0, - -1.708 - ] - }, - "ornamentTurnSharpBelow": { - "bBoxNE": [ - 1.84, - 0.872 - ], - "bBoxSW": [ - 0.0, - -1.98 - ] - }, - "ornamentTurnSlash": { - "bBoxNE": [ - 1.84, - 1.224 - ], - "bBoxSW": [ - 0.0, - -0.36 - ] - }, - "ornamentTurnUp": { - "bBoxNE": [ - 0.872, - 1.84 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentTurnUpS": { - "bBoxNE": [ - 0.86, - 1.84 - ], - "bBoxSW": [ - -0.012, - 0.0 - ] - }, - "ornamentUpCurve": { - "bBoxNE": [ - 1.568, - 0.5 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "ornamentVerticalLine": { - "bBoxNE": [ - 0.1, - 1.556 - ], - "bBoxSW": [ - 0.004, - 0.436 - ] - }, - "ornamentZigZagLineNoRightEnd": { - "bBoxNE": [ - 1.14, - 0.98 - ], - "bBoxSW": [ - -0.208, - 0.0 - ] - }, - "ornamentZigZagLineWithRightEnd": { - "bBoxNE": [ - 1.624, - 0.98 - ], - "bBoxSW": [ - -0.216, - 0.0 - ] - }, - "ottava": { - "bBoxNE": [ - 1.544, - 1.852 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ottavaAlta": { - "bBoxNE": [ - 3.54, - 1.852 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ottavaBassa": { - "bBoxNE": [ - 3.356, - 1.852 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ottavaBassaBa": { - "bBoxNE": [ - 3.5, - 1.852 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "ottavaBassaVb": { - "bBoxNE": [ - 3.184, - 1.852 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "pendereckiTremolo": { - "bBoxNE": [ - 0.684, - 0.64 - ], - "bBoxSW": [ - -0.684, - -0.636 - ] - }, - "pictAgogo": { - "bBoxNE": [ - 1.764, - 2.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictAlmglocken": { - "bBoxNE": [ - 1.836, - 2.532 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictAnvil": { - "bBoxNE": [ - 3.904, - 2.392 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBambooChimes": { - "bBoxNE": [ - 4.08, - 3.492 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBambooScraper": { - "bBoxNE": [ - 3.576, - 1.228 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBassDrum": { - "bBoxNE": [ - 1.528, - 3.104 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBassDrumOnSide": { - "bBoxNE": [ - 3.104, - 1.52 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBassDrumPeinkofer": { - "bBoxNE": [ - 3.352, - 3.016 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterBow": { - "bBoxNE": [ - 0.372, - 3.104 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterBox": { - "bBoxNE": [ - 1.568, - 3.3 - ], - "bBoxSW": [ - 0.0, - -0.32 - ] - }, - "pictBeaterBrassMalletsDown": { - "bBoxNE": [ - 1.184, - 3.152 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterBrassMalletsUp": { - "bBoxNE": [ - 1.184, - 3.152 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterCombiningDashedCircle": { - "bBoxNE": [ - 1.608, - 3.28 - ], - "bBoxSW": [ - 0.0, - 1.684 - ] - }, - "pictBeaterCombiningParentheses": { - "bBoxNE": [ - 1.884, - 3.168 - ], - "bBoxSW": [ - 0.0, - 1.72 - ] - }, - "pictBeaterDoubleBassDrumDown": { - "bBoxNE": [ - 1.28, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterDoubleBassDrumUp": { - "bBoxNE": [ - 1.28, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterFinger": { - "bBoxNE": [ - 2.068, - 2.84 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterFingernails": { - "bBoxNE": [ - 1.216, - 0.768 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterFist": { - "bBoxNE": [ - 2.036, - 1.72 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterGuiroScraper": { - "bBoxNE": [ - 1.584, - 3.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHammer": { - "bBoxNE": [ - 2.228, - 2.704 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerMetalDown": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerMetalUp": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerPlasticDown": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerPlasticUp": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerWoodDown": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHammerWoodUp": { - "bBoxNE": [ - 2.24, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHand": { - "bBoxNE": [ - 2.068, - 2.976 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHardBassDrumDown": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardBassDrumUp": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardGlockenspielDown": { - "bBoxNE": [ - 0.432, - 2.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHardGlockenspielLeft": { - "bBoxNE": [ - 1.596, - 2.556 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterHardGlockenspielRight": { - "bBoxNE": [ - 1.596, - 2.556 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterHardGlockenspielUp": { - "bBoxNE": [ - 0.432, - 2.912 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHardTimpaniDown": { - "bBoxNE": [ - 0.868, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardTimpaniLeft": { - "bBoxNE": [ - 1.892, - 2.824 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardTimpaniRight": { - "bBoxNE": [ - 1.892, - 2.824 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardTimpaniUp": { - "bBoxNE": [ - 0.868, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardXylophoneDown": { - "bBoxNE": [ - 0.92, - 2.968 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardXylophoneLeft": { - "bBoxNE": [ - 1.74, - 2.644 - ], - "bBoxSW": [ - -0.008, - 0.0 - ] - }, - "pictBeaterHardXylophoneRight": { - "bBoxNE": [ - 1.744, - 2.644 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterHardXylophoneUp": { - "bBoxNE": [ - 0.92, - 2.968 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterHardYarnDown": { - "bBoxNE": [ - 1.1, - 3.028 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterHardYarnLeft": { - "bBoxNE": [ - 1.828, - 2.704 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterHardYarnRight": { - "bBoxNE": [ - 1.828, - 2.704 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterHardYarnUp": { - "bBoxNE": [ - 1.1, - 3.028 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterJazzSticksDown": { - "bBoxNE": [ - 0.56, - 3.236 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterJazzSticksUp": { - "bBoxNE": [ - 0.56, - 3.236 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterKnittingNeedle": { - "bBoxNE": [ - 1.128, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMallet": { - "bBoxNE": [ - 1.612, - 2.98 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumBassDrumDown": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterMediumBassDrumUp": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterMediumTimpaniDown": { - "bBoxNE": [ - 0.868, - 3.056 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictBeaterMediumTimpaniLeft": { - "bBoxNE": [ - 1.896, - 2.828 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumTimpaniRight": { - "bBoxNE": [ - 1.896, - 2.828 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumTimpaniUp": { - "bBoxNE": [ - 0.868, - 3.056 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictBeaterMediumXylophoneDown": { - "bBoxNE": [ - 0.924, - 2.968 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterMediumXylophoneLeft": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterMediumXylophoneRight": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterMediumXylophoneUp": { - "bBoxNE": [ - 0.924, - 2.968 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterMediumYarnDown": { - "bBoxNE": [ - 1.096, - 3.032 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumYarnLeft": { - "bBoxNE": [ - 1.824, - 2.712 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumYarnRight": { - "bBoxNE": [ - 1.824, - 2.712 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMediumYarnUp": { - "bBoxNE": [ - 1.096, - 3.032 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMetalBassDrumDown": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterMetalBassDrumUp": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterMetalDown": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMetalHammer": { - "bBoxNE": [ - 1.588, - 2.98 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterMetalLeft": { - "bBoxNE": [ - 1.744, - 2.644 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMetalRight": { - "bBoxNE": [ - 1.744, - 2.644 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterMetalUp": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSnareSticksDown": { - "bBoxNE": [ - 0.564, - 2.928 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSnareSticksUp": { - "bBoxNE": [ - 0.564, - 2.928 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftBassDrumDown": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterSoftBassDrumUp": { - "bBoxNE": [ - 1.28, - 3.048 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterSoftGlockenspielDown": { - "bBoxNE": [ - 0.552, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSoftGlockenspielLeft": { - "bBoxNE": [ - 1.652, - 2.62 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftGlockenspielRight": { - "bBoxNE": [ - 1.652, - 2.62 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftGlockenspielUp": { - "bBoxNE": [ - 0.552, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSoftTimpaniDown": { - "bBoxNE": [ - 0.868, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSoftTimpaniLeft": { - "bBoxNE": [ - 1.896, - 2.828 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftTimpaniRight": { - "bBoxNE": [ - 1.896, - 2.828 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftTimpaniUp": { - "bBoxNE": [ - 0.868, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSoftXylophone": { - "bBoxNE": [ - 2.18, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSoftXylophoneDown": { - "bBoxNE": [ - 0.92, - 2.956 - ], - "bBoxSW": [ - 0.0, - -0.016 - ] - }, - "pictBeaterSoftXylophoneLeft": { - "bBoxNE": [ - 1.744, - 2.64 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterSoftXylophoneRight": { - "bBoxNE": [ - 1.744, - 2.64 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBeaterSoftXylophoneUp": { - "bBoxNE": [ - 0.92, - 2.956 - ], - "bBoxSW": [ - 0.0, - -0.016 - ] - }, - "pictBeaterSoftYarnDown": { - "bBoxNE": [ - 1.092, - 3.028 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictBeaterSoftYarnLeft": { - "bBoxNE": [ - 1.816, - 2.708 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictBeaterSoftYarnRight": { - "bBoxNE": [ - 1.816, - 2.708 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictBeaterSoftYarnUp": { - "bBoxNE": [ - 1.092, - 3.028 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictBeaterSpoonWoodenMallet": { - "bBoxNE": [ - 1.764, - 2.716 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSuperballDown": { - "bBoxNE": [ - 0.92, - 2.52 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterSuperballLeft": { - "bBoxNE": [ - 1.524, - 2.256 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSuperballRight": { - "bBoxNE": [ - 1.524, - 2.256 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterSuperballUp": { - "bBoxNE": [ - 0.92, - 2.52 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterTriangleDown": { - "bBoxNE": [ - 1.636, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterTriangleUp": { - "bBoxNE": [ - 1.636, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterWireBrushesDown": { - "bBoxNE": [ - 1.632, - 3.14 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterWireBrushesUp": { - "bBoxNE": [ - 1.632, - 3.14 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBeaterWoodTimpaniDown": { - "bBoxNE": [ - 0.868, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterWoodTimpaniLeft": { - "bBoxNE": [ - 1.9, - 2.824 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterWoodTimpaniRight": { - "bBoxNE": [ - 1.9, - 2.824 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictBeaterWoodTimpaniUp": { - "bBoxNE": [ - 0.868, - 3.052 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterWoodXylophoneDown": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBeaterWoodXylophoneLeft": { - "bBoxNE": [ - 1.748, - 2.648 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictBeaterWoodXylophoneRight": { - "bBoxNE": [ - 1.748, - 2.648 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictBeaterWoodXylophoneUp": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBell": { - "bBoxNE": [ - 2.724, - 2.968 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictBellOfCymbal": { - "bBoxNE": [ - 3.488, - 2.324 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBellPlate": { - "bBoxNE": [ - 2.144, - 2.432 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBellTree": { - "bBoxNE": [ - 2.152, - 3.036 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBirdWhistle": { - "bBoxNE": [ - 2.848, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBoardClapper": { - "bBoxNE": [ - 3.64, - 3.032 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictBongos": { - "bBoxNE": [ - 4.92, - 3.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictBongosPeinkofer": { - "bBoxNE": [ - 3.792, - 1.392 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictBrakeDrum": { - "bBoxNE": [ - 3.148, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCabasa": { - "bBoxNE": [ - 1.62, - 3.112 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCannon": { - "bBoxNE": [ - 3.38, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCarHorn": { - "bBoxNE": [ - 3.876, - 1.676 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCastanets": { - "bBoxNE": [ - 2.132, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCastanetsSmithBrindle": { - "bBoxNE": [ - 1.264, - 4.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCastanetsWithHandle": { - "bBoxNE": [ - 1.188, - 2.992 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCelesta": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCencerro": { - "bBoxNE": [ - 1.004, - 2.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCenter1": { - "bBoxNE": [ - 2.136, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCenter2": { - "bBoxNE": [ - 2.136, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCenter3": { - "bBoxNE": [ - 2.14, - 2.136 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictChainRattle": { - "bBoxNE": [ - 3.396, - 1.304 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictChimes": { - "bBoxNE": [ - 4.188, - 3.448 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictChineseCymbal": { - "bBoxNE": [ - 5.048, - 1.208 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictChokeCymbal": { - "bBoxNE": [ - 0.608, - 1.004 - ], - "bBoxSW": [ - 0.004, - 0.008 - ] - }, - "pictClaves": { - "bBoxNE": [ - 2.48, - 2.988 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCoins": { - "bBoxNE": [ - 5.468, - 3.3 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictConga": { - "bBoxNE": [ - 2.356, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCongaPeinkofer": { - "bBoxNE": [ - 1.592, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCowBell": { - "bBoxNE": [ - 1.796, - 2.564 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pictCowBellBerio": { - "bBoxNE": [ - 2.872, - 2.188 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "pictCrashCymbals": { - "bBoxNE": [ - 0.848, - 3.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictCrotales": { - "bBoxNE": [ - 4.704, - 1.412 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCrushStem": { - "bBoxNE": [ - 1.012, - 0.324 - ], - "bBoxSW": [ - -1.032, - -0.324 - ] - }, - "pictCuica": { - "bBoxNE": [ - 2.7, - 2.616 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictCymbalTongs": { - "bBoxNE": [ - 3.184, - 1.14 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pictDamp1": { - "bBoxNE": [ - 1.38, - 1.376 - ], - "bBoxSW": [ - -0.244, - -0.248 - ] - }, - "pictDamp2": { - "bBoxNE": [ - 2.828, - 3.16 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictDamp3": { - "bBoxNE": [ - 2.828, - 3.16 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictDamp4": { - "bBoxNE": [ - 2.828, - 3.16 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictDeadNoteStem": { - "bBoxNE": [ - 0.644, - 0.644 - ], - "bBoxSW": [ - -0.644, - -0.644 - ] - }, - "pictDrumStick": { - "bBoxNE": [ - 0.216, - 2.644 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "pictDuckCall": { - "bBoxNE": [ - 4.448, - 1.612 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictEdgeOfCymbal": { - "bBoxNE": [ - 4.828, - 2.14 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictEmptyTrap": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictFingerCymbals": { - "bBoxNE": [ - 0.984, - 2.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictFlexatone": { - "bBoxNE": [ - 1.448, - 3.112 - ], - "bBoxSW": [ - 0.0, - -0.008 - ] - }, - "pictFlexatonePeinkofer": { - "bBoxNE": [ - 3.136, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictFootballRatchet": { - "bBoxNE": [ - 4.8, - 2.736 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlassHarmonica": { - "bBoxNE": [ - 3.64, - 2.072 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlassHarp": { - "bBoxNE": [ - 2.66, - 1.636 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlassPlateChimes": { - "bBoxNE": [ - 4.08, - 3.46 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlassTubeChimes": { - "bBoxNE": [ - 4.08, - 3.464 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlsp": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlspPeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGlspSmithBrindle": { - "bBoxNE": [ - 5.008, - 2.24 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGobletDrum": { - "bBoxNE": [ - 2.92, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictGong": { - "bBoxNE": [ - 2.744, - 3.204 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGongWithButton": { - "bBoxNE": [ - 2.744, - 3.204 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGuiro": { - "bBoxNE": [ - 3.992, - 1.532 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGuiroPeinkofer": { - "bBoxNE": [ - 5.448, - 1.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGuiroSevsay": { - "bBoxNE": [ - 4.252, - 1.656 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumHardDown": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumHardLeft": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumHardRight": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumHardUp": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumMediumDown": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumMediumLeft": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumMediumRight": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumMediumUp": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumSoftDown": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumSoftLeft": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumSoftRight": { - "bBoxNE": [ - 1.972, - 2.876 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictGumSoftUp": { - "bBoxNE": [ - 1.008, - 3.044 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictHalfOpen1": { - "bBoxNE": [ - 1.144, - 1.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictHalfOpen2": { - "bBoxNE": [ - 1.148, - 1.38 - ], - "bBoxSW": [ - 0.004, - -0.244 - ] - }, - "pictHandbell": { - "bBoxNE": [ - 2.72, - 3.576 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictHiHat": { - "bBoxNE": [ - 3.132, - 0.844 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictHiHatOnStand": { - "bBoxNE": [ - 3.128, - 3.84 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictJawHarp": { - "bBoxNE": [ - 2.0, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictJingleBells": { - "bBoxNE": [ - 3.56, - 2.776 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictKlaxonHorn": { - "bBoxNE": [ - 3.2, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictLeftHandCircle": { - "bBoxNE": [ - 0.5, - 0.748 - ], - "bBoxSW": [ - 0.0, - 0.248 - ] - }, - "pictLionsRoar": { - "bBoxNE": [ - 2.852, - 2.58 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pictLithophone": { - "bBoxNE": [ - 4.536, - 2.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictLithophonePeinkofer": { - "bBoxNE": [ - 4.536, - 2.988 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictLogDrum": { - "bBoxNE": [ - 4.668, - 2.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictLotusFlute": { - "bBoxNE": [ - 3.512, - 1.108 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictLotusFlutePeinkofer": { - "bBoxNE": [ - 4.46, - 0.752 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMar": { - "bBoxNE": [ - 4.784, - 3.124 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictMarPeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMarSmithBrindle": { - "bBoxNE": [ - 6.284, - 2.24 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMaraca": { - "bBoxNE": [ - 1.62, - 3.112 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictMaracaSmithBrindle": { - "bBoxNE": [ - 1.364, - 3.256 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMaracas": { - "bBoxNE": [ - 4.116, - 2.916 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMegaphone": { - "bBoxNE": [ - 4.092, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMetalPlateChimes": { - "bBoxNE": [ - 4.08, - 3.444 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMetalTubeChimes": { - "bBoxNE": [ - 4.08, - 3.448 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictMusicalSaw": { - "bBoxNE": [ - 3.448, - 1.36 - ], - "bBoxSW": [ - 0.0, - -0.808 - ] - }, - "pictMusicalSawPeinkofer": { - "bBoxNE": [ - 4.848, - 1.8 - ], - "bBoxSW": [ - 0.0, - -0.48 - ] - }, - "pictNormalPosition": { - "bBoxNE": [ - 2.136, - 2.14 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictOnRim": { - "bBoxNE": [ - 2.016, - 2.016 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictOpen": { - "bBoxNE": [ - 1.144, - 1.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictOpenRimShot": { - "bBoxNE": [ - 1.144, - 1.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictPistolShot": { - "bBoxNE": [ - 5.08, - 2.348 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictPoliceWhistle": { - "bBoxNE": [ - 3.956, - 2.16 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictQuijada": { - "bBoxNE": [ - 4.312, - 1.332 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictRainstick": { - "bBoxNE": [ - 1.028, - 3.112 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRatchet": { - "bBoxNE": [ - 2.78, - 3.144 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictRecoReco": { - "bBoxNE": [ - 4.004, - 0.592 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRightHandSquare": { - "bBoxNE": [ - 1.128, - 1.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRim1": { - "bBoxNE": [ - 2.508, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRim2": { - "bBoxNE": [ - 2.136, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRim3": { - "bBoxNE": [ - 2.136, - 2.136 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictRimShotOnStem": { - "bBoxNE": [ - 0.492, - 0.504 - ], - "bBoxSW": [ - -0.496, - -0.504 - ] - }, - "pictSandpaperBlocks": { - "bBoxNE": [ - 3.74, - 2.96 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictScrapeAroundRim": { - "bBoxNE": [ - 3.132, - 3.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictScrapeCenterToEdge": { - "bBoxNE": [ - 3.128, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictScrapeEdgeToCenter": { - "bBoxNE": [ - 3.128, - 3.128 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictShellBells": { - "bBoxNE": [ - 2.0, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictShellChimes": { - "bBoxNE": [ - 4.08, - 3.496 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSiren": { - "bBoxNE": [ - 3.496, - 3.148 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictSistrum": { - "bBoxNE": [ - 2.888, - 3.176 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictSizzleCymbal": { - "bBoxNE": [ - 3.124, - 0.552 - ], - "bBoxSW": [ - -0.004, - -0.004 - ] - }, - "pictSleighBell": { - "bBoxNE": [ - 5.356, - 1.948 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSleighBellSmithBrindle": { - "bBoxNE": [ - 3.38, - 2.416 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictSlideBrushOnGong": { - "bBoxNE": [ - 3.384, - 1.14 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "pictSlideWhistle": { - "bBoxNE": [ - 3.896, - 3.44 - ], - "bBoxSW": [ - 0.0, - -0.008 - ] - }, - "pictSlitDrum": { - "bBoxNE": [ - 4.14, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSnareDrum": { - "bBoxNE": [ - 3.936, - 1.66 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSnareDrumMilitary": { - "bBoxNE": [ - 1.66, - 3.936 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSnareDrumSnaresOff": { - "bBoxNE": [ - 3.936, - 1.66 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSteelDrums": { - "bBoxNE": [ - 4.212, - 3.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictStickShot": { - "bBoxNE": [ - 1.8, - 1.8 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSuperball": { - "bBoxNE": [ - 0.92, - 0.92 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSuspendedCymbal": { - "bBoxNE": [ - 3.128, - 0.332 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictSwishStem": { - "bBoxNE": [ - 0.992, - 0.988 - ], - "bBoxSW": [ - -0.992, - -0.992 - ] - }, - "pictTabla": { - "bBoxNE": [ - 3.06, - 2.292 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTamTam": { - "bBoxNE": [ - 4.092, - 2.988 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "pictTamTamWithBeater": { - "bBoxNE": [ - 3.936, - 2.972 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictTambourine": { - "bBoxNE": [ - 3.64, - 3.644 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTambourineStockhausen": { - "bBoxNE": [ - 7.26, - 1.672 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTempleBlocks": { - "bBoxNE": [ - 3.728, - 2.132 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "pictTenorDrum": { - "bBoxNE": [ - 1.66, - 4.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictThundersheet": { - "bBoxNE": [ - 4.092, - 2.984 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictTimbales": { - "bBoxNE": [ - 4.444, - 3.148 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "pictTimbalesPeinkofer": { - "bBoxNE": [ - 3.792, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTimpani": { - "bBoxNE": [ - 3.764, - 3.352 - ], - "bBoxSW": [ - 0.0, - -0.036 - ] - }, - "pictTimpaniPeinkofer": { - "bBoxNE": [ - 2.472, - 1.976 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTomTom": { - "bBoxNE": [ - 2.144, - 2.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTomTomChinese": { - "bBoxNE": [ - 5.1, - 2.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTomTomChinesePeinkofer": { - "bBoxNE": [ - 2.996, - 1.996 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "pictTomTomIndoAmerican": { - "bBoxNE": [ - 5.1, - 2.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTomTomJapanese": { - "bBoxNE": [ - 5.1, - 2.196 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTomTomPeinkofer": { - "bBoxNE": [ - 5.748, - 1.656 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTriangle": { - "bBoxNE": [ - 4.148, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTubaphone": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTubaphonePeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictTubularBells": { - "bBoxNE": [ - 3.74, - 3.104 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pictTurnLeftStem": { - "bBoxNE": [ - 1.736, - 0.528 - ], - "bBoxSW": [ - -1.736, - -0.52 - ] - }, - "pictTurnRightLeftStem": { - "bBoxNE": [ - 1.708, - 0.5 - ], - "bBoxSW": [ - -1.712, - -0.512 - ] - }, - "pictTurnRightStem": { - "bBoxNE": [ - 1.736, - 0.528 - ], - "bBoxSW": [ - -1.736, - -0.52 - ] - }, - "pictVib": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVibMotorOff": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVibMotorOffPeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVibPeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVibSmithBrindle": { - "bBoxNE": [ - 5.864, - 2.24 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVibraslap": { - "bBoxNE": [ - 2.94, - 2.088 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictVietnameseHat": { - "bBoxNE": [ - 3.864, - 2.564 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWhip": { - "bBoxNE": [ - 2.792, - 3.416 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pictWindChimesGlass": { - "bBoxNE": [ - 3.468, - 3.116 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWindMachine": { - "bBoxNE": [ - 5.568, - 3.144 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWindWhistle": { - "bBoxNE": [ - 4.892, - 1.644 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWoodBlock": { - "bBoxNE": [ - 3.132, - 2.128 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictWoundHardDown": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWoundHardLeft": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictWoundHardRight": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictWoundHardUp": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWoundSoftDown": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictWoundSoftLeft": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictWoundSoftRight": { - "bBoxNE": [ - 1.748, - 2.644 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "pictWoundSoftUp": { - "bBoxNE": [ - 0.92, - 2.972 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXyl": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylBass": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylBassPeinkofer": { - "bBoxNE": [ - 3.464, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylPeinkofer": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylSmithBrindle": { - "bBoxNE": [ - 5.864, - 2.24 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylTenor": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylTenorPeinkofer": { - "bBoxNE": [ - 3.224, - 1.592 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylTenorTrough": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pictXylTrough": { - "bBoxNE": [ - 4.784, - 3.12 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedBuzzPizzicato": { - "bBoxNE": [ - 1.2, - 0.8 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedDamp": { - "bBoxNE": [ - 1.296, - 1.296 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedDampAll": { - "bBoxNE": [ - 1.384, - 1.38 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedDampOnStem": { - "bBoxNE": [ - 0.864, - 0.608 - ], - "bBoxSW": [ - -0.856, - -0.608 - ] - }, - "pluckedFingernailFlick": { - "bBoxNE": [ - 1.0, - 1.596 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "pluckedLeftHandPizzicato": { - "bBoxNE": [ - 1.088, - 1.088 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedPlectrum": { - "bBoxNE": [ - 1.764, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedSnapPizzicatoAbove": { - "bBoxNE": [ - 0.8, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedSnapPizzicatoAboveGerman": { - "bBoxNE": [ - 0.8, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedSnapPizzicatoBelow": { - "bBoxNE": [ - 0.8, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedSnapPizzicatoBelowGerman": { - "bBoxNE": [ - 0.8, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "pluckedWithFingernails": { - "bBoxNE": [ - 1.592, - 1.0 - ], - "bBoxSW": [ - 0.004, - -0.004 - ] - }, - "quindicesima": { - "bBoxNE": [ - 2.668, - 1.844 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "quindicesimaAlta": { - "bBoxNE": [ - 5.26, - 1.844 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "quindicesimaBassa": { - "bBoxNE": [ - 5.14, - 1.844 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "quindicesimaBassaMb": { - "bBoxNE": [ - 4.928, - 1.844 - ], - "bBoxSW": [ - 0.0, - -0.04 - ] - }, - "repeat1Bar": { - "bBoxNE": [ - 2.128, - 1.116 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "repeat2Bars": { - "bBoxNE": [ - 3.048, - 1.116 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "repeat4Bars": { - "bBoxNE": [ - 4.928, - 1.116 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "repeatDot": { - "bBoxNE": [ - 0.4, - 0.7 - ], - "bBoxSW": [ - 0.0, - 0.3 - ] - }, - "repeatDots": { - "bBoxNE": [ - 0.4, - 2.68 - ], - "bBoxSW": [ - 0.0, - 1.272 - ] - }, - "repeatLeft": { - "bBoxNE": [ - 1.464, - 4.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "repeatRight": { - "bBoxNE": [ - 1.468, - 4.0 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "repeatRightLeft": { - "bBoxNE": [ - 2.432, - 4.0 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "repeatRightLeftThick": { - "bBoxNE": [ - 2.432, - 4.0 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "rest1024th": { - "bBoxNE": [ - 2.672, - 4.788 - ], - "bBoxSW": [ - 0.0, - -3.972 - ] - }, - "rest128th": { - "bBoxNE": [ - 1.94, - 2.756 - ], - "bBoxSW": [ - 0.0, - -3.0 - ] - }, - "rest16th": { - "bBoxNE": [ - 1.28, - 0.716 - ], - "bBoxSW": [ - 0.0, - -2.0 - ] - }, - "rest256th": { - "bBoxNE": [ - 2.164, - 2.784 - ], - "bBoxSW": [ - 0.0, - -4.0 - ] - }, - "rest32nd": { - "bBoxNE": [ - 1.452, - 1.704 - ], - "bBoxSW": [ - 0.0, - -2.0 - ] - }, - "rest512th": { - "bBoxNE": [ - 2.416, - 3.776 - ], - "bBoxSW": [ - 0.0, - -4.0 - ] - }, - "rest64th": { - "bBoxNE": [ - 1.692, - 1.72 - ], - "bBoxSW": [ - 0.0, - -3.012 - ] - }, - "rest8th": { - "bBoxNE": [ - 0.988, - 0.696 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "restDoubleWhole": { - "bBoxNE": [ - 0.5, - 1.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "restDoubleWholeLegerLine": { - "bBoxNE": [ - 1.176, - 1.056 - ], - "bBoxSW": [ - 0.0, - -0.1 - ] - }, - "restHBar": { - "bBoxNE": [ - 3.128, - 1.044 - ], - "bBoxSW": [ - 0.0, - -1.084 - ] - }, - "restHBarLeft": { - "bBoxNE": [ - 1.5, - 1.048 - ], - "bBoxSW": [ - 0.0, - -1.08 - ] - }, - "restHBarMiddle": { - "bBoxNE": [ - 1.42, - 0.384 - ], - "bBoxSW": [ - -0.108, - -0.416 - ] - }, - "restHBarRight": { - "bBoxNE": [ - 1.5, - 1.048 - ], - "bBoxSW": [ - 0.0, - -1.08 - ] - }, - "restHalf": { - "bBoxNE": [ - 1.128, - 0.568 - ], - "bBoxSW": [ - 0.0, - -0.008 - ] - }, - "restHalfLegerLine": { - "bBoxNE": [ - 1.596, - 0.568 - ], - "bBoxSW": [ - -0.468, - -0.052 - ] - }, - "restLonga": { - "bBoxNE": [ - 0.5, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.996 - ] - }, - "restMaxima": { - "bBoxNE": [ - 1.524, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.996 - ] - }, - "restQuarter": { - "bBoxNE": [ - 1.08, - 1.492 - ], - "bBoxSW": [ - 0.004, - -1.5 - ] - }, - "restQuarterOld": { - "bBoxNE": [ - 0.988, - 0.696 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "restQuarterZ": { - "bBoxNE": [ - 1.0, - 0.856 - ], - "bBoxSW": [ - 0.0, - -0.856 - ] - }, - "restWhole": { - "bBoxNE": [ - 1.128, - 0.036 - ], - "bBoxSW": [ - 0.0, - -0.54 - ] - }, - "restWholeLegerLine": { - "bBoxNE": [ - 1.596, - 0.08 - ], - "bBoxSW": [ - -0.468, - -0.54 - ] - }, - "reversedBrace": { - "bBoxNE": [ - 0.352, - 3.988 - ], - "bBoxSW": [ - 0.032, - 0.0 - ] - }, - "reversedBracketBottom": { - "bBoxNE": [ - 1.876, - 0.0 - ], - "bBoxSW": [ - 0.0, - -1.18 - ] - }, - "reversedBracketTop": { - "bBoxNE": [ - 1.876, - 1.18 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "rightRepeatSmall": { - "bBoxNE": [ - 1.464, - 3.48 - ], - "bBoxSW": [ - 0.0, - 0.5 - ] - }, - "schaefferClef": { - "bBoxNE": [ - 1.236, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.996 - ] - }, - "schaefferFClefToGClef": { - "bBoxNE": [ - 2.464, - 3.0 - ], - "bBoxSW": [ - 0.0, - -0.996 - ] - }, - "schaefferGClefToFClef": { - "bBoxNE": [ - 2.472, - 1.0 - ], - "bBoxSW": [ - 0.0, - -2.996 - ] - }, - "schaefferPreviousClef": { - "bBoxNE": [ - 1.236, - 1.0 - ], - "bBoxSW": [ - 0.0, - -0.996 - ] - }, - "segno": { - "bBoxNE": [ - 2.2, - 3.036 - ], - "bBoxSW": [ - 0.016, - -0.108 - ] - }, - "segnoJapanese": { - "bBoxNE": [ - 3.088, - 3.148 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "segnoSerpent1": { - "bBoxNE": [ - 1.612, - 4.124 - ], - "bBoxSW": [ - 0.008, - -0.132 - ] - }, - "segnoSerpent2": { - "bBoxNE": [ - 1.608, - 4.124 - ], - "bBoxSW": [ - 0.004, - -0.132 - ] - }, - "semipitchedPercussionClef1": { - "bBoxNE": [ - 0.98, - 2.516 - ], - "bBoxSW": [ - 0.004, - -2.516 - ] - }, - "semipitchedPercussionClef2": { - "bBoxNE": [ - 1.836, - 0.824 - ], - "bBoxSW": [ - 0.008, - -0.808 - ] - }, - "smnFlat": { - "bBoxNE": [ - 1.576, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "smnFlatWhite": { - "bBoxNE": [ - 1.576, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "smnHistoryDoubleFlat": { - "bBoxNE": [ - 2.168, - 0.448 - ], - "bBoxSW": [ - 0.004, - -0.448 - ] - }, - "smnHistoryDoubleSharp": { - "bBoxNE": [ - 1.764, - 0.448 - ], - "bBoxSW": [ - 0.0, - -0.448 - ] - }, - "smnHistoryFlat": { - "bBoxNE": [ - 2.168, - 0.448 - ], - "bBoxSW": [ - 0.004, - -0.448 - ] - }, - "smnHistorySharp": { - "bBoxNE": [ - 1.28, - 0.448 - ], - "bBoxSW": [ - 0.004, - -0.448 - ] - }, - "smnNatural": { - "bBoxNE": [ - 0.908, - 0.44 - ], - "bBoxSW": [ - 0.0, - -0.44 - ] - }, - "smnSharp": { - "bBoxNE": [ - 1.548, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "smnSharpDown": { - "bBoxNE": [ - 1.548, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "smnSharpWhite": { - "bBoxNE": [ - 1.548, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "smnSharpWhiteDown": { - "bBoxNE": [ - 1.548, - 0.548 - ], - "bBoxSW": [ - 0.0, - -0.548 - ] - }, - "splitBarDivider": { - "bBoxNE": [ - 0.596, - 2.004 - ], - "bBoxSW": [ - -0.604, - 0.508 - ] - }, - "staff1Line": { - "bBoxNE": [ - 2.0, - 2.064 - ], - "bBoxSW": [ - 0.0, - 1.936 - ] - }, - "staff1LineNarrow": { - "bBoxNE": [ - 1.0, - 2.064 - ], - "bBoxSW": [ - 0.0, - 1.936 - ] - }, - "staff1LineWide": { - "bBoxNE": [ - 3.0, - 2.064 - ], - "bBoxSW": [ - 0.0, - 1.936 - ] - }, - "staff2Lines": { - "bBoxNE": [ - 2.0, - 2.564 - ], - "bBoxSW": [ - 0.0, - 1.436 - ] - }, - "staff2LinesNarrow": { - "bBoxNE": [ - 1.0, - 2.564 - ], - "bBoxSW": [ - 0.0, - 1.436 - ] - }, - "staff2LinesWide": { - "bBoxNE": [ - 3.0, - 2.564 - ], - "bBoxSW": [ - 0.0, - 1.436 - ] - }, - "staff3Lines": { - "bBoxNE": [ - 2.0, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.936 - ] - }, - "staff3LinesNarrow": { - "bBoxNE": [ - 1.0, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.936 - ] - }, - "staff3LinesWide": { - "bBoxNE": [ - 3.0, - 3.064 - ], - "bBoxSW": [ - 0.0, - 0.936 - ] - }, - "staff4Lines": { - "bBoxNE": [ - 2.0, - 3.564 - ], - "bBoxSW": [ - 0.0, - 0.436 - ] - }, - "staff4LinesNarrow": { - "bBoxNE": [ - 1.0, - 3.564 - ], - "bBoxSW": [ - 0.0, - 0.436 - ] - }, - "staff4LinesWide": { - "bBoxNE": [ - 3.0, - 3.564 - ], - "bBoxSW": [ - 0.0, - 0.436 - ] - }, - "staff5Lines": { - "bBoxNE": [ - 2.0, - 4.064 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "staff5LinesNarrow": { - "bBoxNE": [ - 1.0, - 4.064 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "staff5LinesWide": { - "bBoxNE": [ - 3.0, - 4.064 - ], - "bBoxSW": [ - 0.0, - -0.064 - ] - }, - "staff6Lines": { - "bBoxNE": [ - 2.0, - 4.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "staff6LinesNarrow": { - "bBoxNE": [ - 1.0, - 4.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "staff6LinesWide": { - "bBoxNE": [ - 3.0, - 4.564 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "staffDivideArrowDown": { - "bBoxNE": [ - 2.104, - 2.104 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "staffDivideArrowUp": { - "bBoxNE": [ - 2.104, - 4.0 - ], - "bBoxSW": [ - 0.0, - 1.896 - ] - }, - "staffDivideArrowUpDown": { - "bBoxNE": [ - 2.104, - 4.072 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stem": { - "bBoxNE": [ - 0.06, - 3.5 - ], - "bBoxSW": [ - -0.06, - 0.0 - ] - }, - "stemBowOnBridge": { - "bBoxNE": [ - 0.792, - 3.5 - ], - "bBoxSW": [ - -0.792, - 0.0 - ] - }, - "stemBowOnTailpiece": { - "bBoxNE": [ - 0.788, - 3.5 - ], - "bBoxSW": [ - -0.792, - 0.0 - ] - }, - "stemBuzzRoll": { - "bBoxNE": [ - 0.624, - 3.5 - ], - "bBoxSW": [ - -0.624, - 0.0 - ] - }, - "stemDamp": { - "bBoxNE": [ - 0.86, - 3.5 - ], - "bBoxSW": [ - -0.86, - 0.0 - ] - }, - "stemHarpStringNoise": { - "bBoxNE": [ - 0.724, - 3.5 - ], - "bBoxSW": [ - -0.728, - 0.0 - ] - }, - "stemMultiphonicsBlack": { - "bBoxNE": [ - 1.116, - 3.5 - ], - "bBoxSW": [ - -1.112, - 0.0 - ] - }, - "stemMultiphonicsBlackWhite": { - "bBoxNE": [ - 1.196, - 3.5 - ], - "bBoxSW": [ - -1.196, - 0.0 - ] - }, - "stemMultiphonicsWhite": { - "bBoxNE": [ - 1.196, - 3.5 - ], - "bBoxSW": [ - -1.196, - 0.0 - ] - }, - "stemPendereckiTremolo": { - "bBoxNE": [ - 0.676, - 3.5 - ], - "bBoxSW": [ - -0.68, - 0.0 - ] - }, - "stemRimShot": { - "bBoxNE": [ - 0.496, - 3.5 - ], - "bBoxSW": [ - -0.492, - 0.0 - ] - }, - "stemSprechgesang": { - "bBoxNE": [ - 0.644, - 3.5 - ], - "bBoxSW": [ - -0.64, - 0.0 - ] - }, - "stemSulPonticello": { - "bBoxNE": [ - 1.06, - 3.5 - ], - "bBoxSW": [ - -1.06, - 0.0 - ] - }, - "stemSussurando": { - "bBoxNE": [ - 0.516, - 3.5 - ], - "bBoxSW": [ - -0.516, - 0.0 - ] - }, - "stemSwished": { - "bBoxNE": [ - 0.936, - 3.484 - ], - "bBoxSW": [ - -0.82, - -0.016 - ] - }, - "stemVibratoPulse": { - "bBoxNE": [ - 1.064, - 3.5 - ], - "bBoxSW": [ - -1.06, - 0.0 - ] - }, - "stringsBowBehindBridge": { - "bBoxNE": [ - 0.856, - 0.856 - ], - "bBoxSW": [ - -0.856, - 0.0 - ] - }, - "stringsBowOnBridge": { - "bBoxNE": [ - 0.788, - 0.172 - ], - "bBoxSW": [ - -0.788, - -0.18 - ] - }, - "stringsBowOnTailpiece": { - "bBoxNE": [ - 0.792, - 0.176 - ], - "bBoxSW": [ - -0.788, - -0.184 - ] - }, - "stringsChangeBowDirection": { - "bBoxNE": [ - 3.784, - 1.708 - ], - "bBoxSW": [ - 0.0, - -0.3 - ] - }, - "stringsChangeBowDirectionImposed": { - "bBoxNE": [ - 1.488, - 1.976 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsChangeBowDirectionLiga": { - "bBoxNE": [ - 2.404, - 1.768 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsDownBow": { - "bBoxNE": [ - 1.248, - 1.272 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsDownBowTurned": { - "bBoxNE": [ - 1.248, - 1.272 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsFouette": { - "bBoxNE": [ - 0.64, - 1.648 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsHalfHarmonic": { - "bBoxNE": [ - 0.8, - 0.8 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsHarmonic": { - "bBoxNE": [ - 0.8, - 0.8 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsJeteAbove": { - "bBoxNE": [ - 2.844, - 0.956 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsJeteBelow": { - "bBoxNE": [ - 2.844, - 0.956 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsMuteOff": { - "bBoxNE": [ - 1.552, - 0.784 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsMuteOn": { - "bBoxNE": [ - 1.552, - 0.78 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "stringsOverpressureDownBow": { - "bBoxNE": [ - 1.252, - 1.272 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsOverpressureNoDirection": { - "bBoxNE": [ - 1.252, - 0.908 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsOverpressurePossibileDownBow": { - "bBoxNE": [ - 1.252, - 1.272 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsOverpressurePossibileUpBow": { - "bBoxNE": [ - 1.084, - 1.98 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "stringsOverpressureUpBow": { - "bBoxNE": [ - 0.992, - 1.968 - ], - "bBoxSW": [ - 0.008, - 0.004 - ] - }, - "stringsThumbPosition": { - "bBoxNE": [ - 0.688, - 1.184 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsThumbPositionTurned": { - "bBoxNE": [ - 0.688, - 1.184 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "stringsUpBow": { - "bBoxNE": [ - 0.996, - 1.98 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "stringsUpBowTurned": { - "bBoxNE": [ - 0.996, - 1.98 - ], - "bBoxSW": [ - 0.004, - 0.004 - ] - }, - "stringsVibratoPulse": { - "bBoxNE": [ - 1.068, - 1.248 - ], - "bBoxSW": [ - -1.068, - -1.28 - ] - }, - "systemDivider": { - "bBoxNE": [ - 4.232, - 4.24 - ], - "bBoxSW": [ - 0.0, - -0.272 - ] - }, - "systemDividerExtraLong": { - "bBoxNE": [ - 9.276, - 4.244 - ], - "bBoxSW": [ - 0.0, - -0.28 - ] - }, - "systemDividerLong": { - "bBoxNE": [ - 6.252, - 4.2 - ], - "bBoxSW": [ - 0.0, - -0.24 - ] - }, - "textAugmentationDot": { - "bBoxNE": [ - 0.4, - 0.256 - ], - "bBoxSW": [ - 0.0, - -0.144 - ] - }, - "textBlackNoteFrac16thLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "textBlackNoteFrac16thShortStem": { - "bBoxNE": [ - 1.368, - 2.752 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "textBlackNoteFrac32ndLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "textBlackNoteFrac8thLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - -0.56 - ] - }, - "textBlackNoteFrac8thShortStem": { - "bBoxNE": [ - 1.368, - 2.752 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "textBlackNoteLongStem": { - "bBoxNE": [ - 1.328, - 3.512 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "textBlackNoteShortStem": { - "bBoxNE": [ - 1.328, - 2.752 - ], - "bBoxSW": [ - 0.0, - -0.564 - ] - }, - "textCont16thBeamLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - 2.264 - ] - }, - "textCont16thBeamShortStem": { - "bBoxNE": [ - 1.368, - 2.752 - ], - "bBoxSW": [ - 0.0, - 1.504 - ] - }, - "textCont32ndBeamLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - 1.504 - ] - }, - "textCont8thBeamLongStem": { - "bBoxNE": [ - 1.368, - 3.512 - ], - "bBoxSW": [ - 0.0, - 3.012 - ] - }, - "textCont8thBeamShortStem": { - "bBoxNE": [ - 1.368, - 2.752 - ], - "bBoxSW": [ - 0.0, - 2.252 - ] - }, - "textTie": { - "bBoxNE": [ - 1.46, - -0.732 - ], - "bBoxSW": [ - 0.0, - -1.304 - ] - }, - "textTuplet3LongStem": { - "bBoxNE": [ - 0.94, - 5.3 - ], - "bBoxSW": [ - 0.0, - 4.2 - ] - }, - "textTuplet3ShortStem": { - "bBoxNE": [ - 0.94, - 4.372 - ], - "bBoxSW": [ - 0.0, - 3.272 - ] - }, - "textTupletBracketEndLongStem": { - "bBoxNE": [ - 1.272, - 4.764 - ], - "bBoxSW": [ - 0.0, - 3.94 - ] - }, - "textTupletBracketEndShortStem": { - "bBoxNE": [ - 1.272, - 3.94 - ], - "bBoxSW": [ - 0.0, - 3.116 - ] - }, - "textTupletBracketStartLongStem": { - "bBoxNE": [ - 1.272, - 4.764 - ], - "bBoxSW": [ - 0.0, - 3.94 - ] - }, - "textTupletBracketStartShortStem": { - "bBoxNE": [ - 1.272, - 3.876 - ], - "bBoxSW": [ - 0.0, - 3.052 - ] - }, - "timeSig0": { - "bBoxNE": [ - 1.72, - 1.004 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig0Denominator": { - "bBoxNE": [ - 1.72, - 2.004 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "timeSig0Large": { - "bBoxNE": [ - 1.936, - 2.024 - ], - "bBoxSW": [ - 0.08, - -2.1 - ] - }, - "timeSig0Numerator": { - "bBoxNE": [ - 1.72, - 4.004 - ], - "bBoxSW": [ - 0.0, - 2.0 - ] - }, - "timeSig0Small": { - "bBoxNE": [ - 1.72, - 1.004 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig1": { - "bBoxNE": [ - 1.172, - 1.004 - ], - "bBoxSW": [ - -0.004, - -1.0 - ] - }, - "timeSig12over8": { - "bBoxNE": [ - 2.912, - 4.016 - ], - "bBoxSW": [ - -0.004, - -0.036 - ] - }, - "timeSig1Denominator": { - "bBoxNE": [ - 1.172, - 2.004 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "timeSig1Large": { - "bBoxNE": [ - 1.06, - 2.0 - ], - "bBoxSW": [ - 0.072, - -2.0 - ] - }, - "timeSig1Numerator": { - "bBoxNE": [ - 1.172, - 4.004 - ], - "bBoxSW": [ - -0.004, - 2.0 - ] - }, - "timeSig1Small": { - "bBoxNE": [ - 1.284, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "timeSig2": { - "bBoxNE": [ - 1.656, - 1.016 - ], - "bBoxSW": [ - 0.032, - -1.028 - ] - }, - "timeSig2Denominator": { - "bBoxNE": [ - 1.656, - 2.016 - ], - "bBoxSW": [ - 0.032, - -0.028 - ] - }, - "timeSig2Large": { - "bBoxNE": [ - 2.052, - 2.0 - ], - "bBoxSW": [ - 0.14, - -2.0 - ] - }, - "timeSig2Numerator": { - "bBoxNE": [ - 1.656, - 4.016 - ], - "bBoxSW": [ - 0.032, - 1.972 - ] - }, - "timeSig2Small": { - "bBoxNE": [ - 1.624, - 1.024 - ], - "bBoxSW": [ - 0.0, - -1.02 - ] - }, - "timeSig2over2": { - "bBoxNE": [ - 1.656, - 4.016 - ], - "bBoxSW": [ - 0.032, - -0.028 - ] - }, - "timeSig2over4": { - "bBoxNE": [ - 1.728, - 4.016 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig3": { - "bBoxNE": [ - 1.54, - 0.996 - ], - "bBoxSW": [ - 0.016, - -1.004 - ] - }, - "timeSig3Denominator": { - "bBoxNE": [ - 1.54, - 1.996 - ], - "bBoxSW": [ - 0.016, - -0.004 - ] - }, - "timeSig3Large": { - "bBoxNE": [ - 1.976, - 1.976 - ], - "bBoxSW": [ - 0.076, - -2.084 - ] - }, - "timeSig3Numerator": { - "bBoxNE": [ - 1.54, - 3.996 - ], - "bBoxSW": [ - 0.016, - 1.996 - ] - }, - "timeSig3Small": { - "bBoxNE": [ - 1.524, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig3over2": { - "bBoxNE": [ - 1.656, - 3.996 - ], - "bBoxSW": [ - 0.032, - -0.028 - ] - }, - "timeSig3over4": { - "bBoxNE": [ - 1.728, - 3.996 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig3over8": { - "bBoxNE": [ - 1.56, - 3.996 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSig4": { - "bBoxNE": [ - 1.728, - 1.004 - ], - "bBoxSW": [ - 0.008, - -1.0 - ] - }, - "timeSig4Denominator": { - "bBoxNE": [ - 1.728, - 2.004 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig4Large": { - "bBoxNE": [ - 2.048, - 2.0 - ], - "bBoxSW": [ - 0.08, - -2.0 - ] - }, - "timeSig4Numerator": { - "bBoxNE": [ - 1.728, - 4.004 - ], - "bBoxSW": [ - 0.008, - 2.0 - ] - }, - "timeSig4Small": { - "bBoxNE": [ - 1.772, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "timeSig4over4": { - "bBoxNE": [ - 1.728, - 4.004 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig5": { - "bBoxNE": [ - 1.452, - 0.984 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "timeSig5Denominator": { - "bBoxNE": [ - 1.452, - 1.984 - ], - "bBoxSW": [ - 0.0, - -0.004 - ] - }, - "timeSig5Large": { - "bBoxNE": [ - 1.992, - 1.976 - ], - "bBoxSW": [ - 0.08, - -2.084 - ] - }, - "timeSig5Numerator": { - "bBoxNE": [ - 1.452, - 3.984 - ], - "bBoxSW": [ - 0.0, - 1.996 - ] - }, - "timeSig5Small": { - "bBoxNE": [ - 1.452, - 0.996 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "timeSig5over4": { - "bBoxNE": [ - 1.728, - 3.984 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig5over8": { - "bBoxNE": [ - 1.56, - 3.984 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSig6": { - "bBoxNE": [ - 1.572, - 1.004 - ], - "bBoxSW": [ - -0.004, - -0.996 - ] - }, - "timeSig6Denominator": { - "bBoxNE": [ - 1.572, - 2.004 - ], - "bBoxSW": [ - -0.004, - 0.004 - ] - }, - "timeSig6Large": { - "bBoxNE": [ - 1.96, - 1.976 - ], - "bBoxSW": [ - 0.068, - -2.084 - ] - }, - "timeSig6Numerator": { - "bBoxNE": [ - 1.572, - 4.004 - ], - "bBoxSW": [ - -0.004, - 2.004 - ] - }, - "timeSig6Small": { - "bBoxNE": [ - 1.576, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig6over4": { - "bBoxNE": [ - 1.728, - 4.004 - ], - "bBoxSW": [ - 0.008, - 0.0 - ] - }, - "timeSig6over8": { - "bBoxNE": [ - 1.572, - 4.004 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSig7": { - "bBoxNE": [ - 1.604, - 0.996 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig7Denominator": { - "bBoxNE": [ - 1.604, - 1.996 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "timeSig7Large": { - "bBoxNE": [ - 1.976, - 2.0 - ], - "bBoxSW": [ - 0.076, - -2.0 - ] - }, - "timeSig7Numerator": { - "bBoxNE": [ - 1.604, - 3.996 - ], - "bBoxSW": [ - 0.0, - 2.0 - ] - }, - "timeSig7Small": { - "bBoxNE": [ - 1.604, - 0.996 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig7over8": { - "bBoxNE": [ - 1.604, - 3.996 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSig8": { - "bBoxNE": [ - 1.56, - 1.036 - ], - "bBoxSW": [ - -0.024, - -1.036 - ] - }, - "timeSig8Denominator": { - "bBoxNE": [ - 1.56, - 2.036 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSig8Large": { - "bBoxNE": [ - 1.984, - 1.976 - ], - "bBoxSW": [ - 0.076, - -2.084 - ] - }, - "timeSig8Numerator": { - "bBoxNE": [ - 1.56, - 4.036 - ], - "bBoxSW": [ - -0.024, - 1.964 - ] - }, - "timeSig8Small": { - "bBoxNE": [ - 1.584, - 1.036 - ], - "bBoxSW": [ - 0.0, - -1.036 - ] - }, - "timeSig9": { - "bBoxNE": [ - 1.576, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig9Denominator": { - "bBoxNE": [ - 1.576, - 2.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "timeSig9Large": { - "bBoxNE": [ - 1.964, - 2.04 - ], - "bBoxSW": [ - 0.084, - -2.084 - ] - }, - "timeSig9Numerator": { - "bBoxNE": [ - 1.576, - 4.0 - ], - "bBoxSW": [ - 0.0, - 2.0 - ] - }, - "timeSig9Small": { - "bBoxNE": [ - 1.576, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSig9over8": { - "bBoxNE": [ - 1.576, - 4.0 - ], - "bBoxSW": [ - -0.024, - -0.036 - ] - }, - "timeSigBracketLeft": { - "bBoxNE": [ - 0.472, - 2.456 - ], - "bBoxSW": [ - 0.0, - -2.488 - ] - }, - "timeSigBracketLeftSmall": { - "bBoxNE": [ - 0.472, - 1.456 - ], - "bBoxSW": [ - 0.0, - -1.488 - ] - }, - "timeSigBracketRight": { - "bBoxNE": [ - 0.312, - 2.456 - ], - "bBoxSW": [ - -0.16, - -2.488 - ] - }, - "timeSigBracketRightSmall": { - "bBoxNE": [ - 0.312, - 1.456 - ], - "bBoxSW": [ - -0.16, - -1.488 - ] - }, - "timeSigComma": { - "bBoxNE": [ - 0.736, - 0.552 - ], - "bBoxSW": [ - 0.036, - -0.6 - ] - }, - "timeSigCommon": { - "bBoxNE": [ - 1.696, - 1.004 - ], - "bBoxSW": [ - 0.02, - -0.996 - ] - }, - "timeSigCommonLarge": { - "bBoxNE": [ - 2.044, - 2.068 - ], - "bBoxSW": [ - 0.0, - -2.072 - ] - }, - "timeSigCut2": { - "bBoxNE": [ - 1.656, - 1.444 - ], - "bBoxSW": [ - 0.032, - -1.448 - ] - }, - "timeSigCutCommon": { - "bBoxNE": [ - 1.672, - 1.444 - ], - "bBoxSW": [ - 0.0, - -1.436 - ] - }, - "timeSigCutCommonLarge": { - "bBoxNE": [ - 2.04, - 2.504 - ], - "bBoxSW": [ - -0.004, - -2.508 - ] - }, - "timeSigEquals": { - "bBoxNE": [ - 1.792, - 0.496 - ], - "bBoxSW": [ - 0.0, - -0.5 - ] - }, - "timeSigFractionHalf": { - "bBoxNE": [ - 1.564, - 0.992 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "timeSigFractionOneThird": { - "bBoxNE": [ - 1.616, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSigFractionQuarter": { - "bBoxNE": [ - 1.54, - 1.004 - ], - "bBoxSW": [ - 0.0, - -0.992 - ] - }, - "timeSigFractionThreeQuarters": { - "bBoxNE": [ - 1.636, - 1.0 - ], - "bBoxSW": [ - -0.012, - -1.0 - ] - }, - "timeSigFractionTwoThirds": { - "bBoxNE": [ - 1.656, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "timeSigFractionalSlash": { - "bBoxNE": [ - 1.512, - 0.756 - ], - "bBoxSW": [ - 0.0, - -0.76 - ] - }, - "timeSigMinus": { - "bBoxNE": [ - 1.792, - 0.16 - ], - "bBoxSW": [ - 0.0, - -0.14 - ] - }, - "timeSigMultiply": { - "bBoxNE": [ - 1.58, - 0.792 - ], - "bBoxSW": [ - 0.0, - -0.792 - ] - }, - "timeSigOpenPenderecki": { - "bBoxNE": [ - 3.384, - 1.0 - ], - "bBoxSW": [ - -0.004, - -0.992 - ] - }, - "timeSigParensLeft": { - "bBoxNE": [ - 0.736, - 1.964 - ], - "bBoxSW": [ - 0.0, - -1.956 - ] - }, - "timeSigParensLeftSmall": { - "bBoxNE": [ - 0.44, - 0.996 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "timeSigParensRight": { - "bBoxNE": [ - 0.736, - 1.964 - ], - "bBoxSW": [ - 0.0, - -1.956 - ] - }, - "timeSigParensRightSmall": { - "bBoxNE": [ - 0.44, - 0.996 - ], - "bBoxSW": [ - 0.0, - -1.004 - ] - }, - "timeSigPlus": { - "bBoxNE": [ - 1.996, - 1.0 - ], - "bBoxSW": [ - -0.004, - -1.0 - ] - }, - "timeSigPlusLarge": { - "bBoxNE": [ - 1.292, - 1.192 - ], - "bBoxSW": [ - 0.0, - -1.192 - ] - }, - "timeSigPlusSmall": { - "bBoxNE": [ - 1.016, - 0.488 - ], - "bBoxSW": [ - -0.004, - -0.528 - ] - }, - "timeSigSlash": { - "bBoxNE": [ - 1.308, - 2.064 - ], - "bBoxSW": [ - 0.0, - -2.068 - ] - }, - "timeSigX": { - "bBoxNE": [ - 1.608, - 1.5 - ], - "bBoxSW": [ - -0.012, - -1.508 - ] - }, - "tremolo1": { - "bBoxNE": [ - 0.6, - 0.376 - ], - "bBoxSW": [ - -0.6, - -0.372 - ] - }, - "tremolo2": { - "bBoxNE": [ - 0.596, - 0.748 - ], - "bBoxSW": [ - -0.604, - -0.748 - ] - }, - "tremolo3": { - "bBoxNE": [ - 0.6, - 1.112 - ], - "bBoxSW": [ - -0.6, - -1.12 - ] - }, - "tremolo4": { - "bBoxNE": [ - 0.6, - 1.496 - ], - "bBoxSW": [ - -0.6, - -1.48 - ] - }, - "tremolo5": { - "bBoxNE": [ - 0.6, - 1.88 - ], - "bBoxSW": [ - -0.604, - -1.84 - ] - }, - "tremoloDivisiDots2": { - "bBoxNE": [ - 1.0, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tremoloDivisiDots3": { - "bBoxNE": [ - 1.6, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tremoloDivisiDots4": { - "bBoxNE": [ - 2.2, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tremoloDivisiDots6": { - "bBoxNE": [ - 1.6, - 1.0 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tremoloFingered1": { - "bBoxNE": [ - 0.6, - 0.376 - ], - "bBoxSW": [ - -0.6, - -0.372 - ] - }, - "tremoloFingered2": { - "bBoxNE": [ - 0.596, - 0.748 - ], - "bBoxSW": [ - -0.604, - -0.748 - ] - }, - "tremoloFingered3": { - "bBoxNE": [ - 0.6, - 1.112 - ], - "bBoxSW": [ - -0.6, - -1.12 - ] - }, - "tremoloFingered4": { - "bBoxNE": [ - 0.6, - 1.508 - ], - "bBoxSW": [ - -0.6, - -1.484 - ] - }, - "tremoloFingered5": { - "bBoxNE": [ - 0.6, - 1.868 - ], - "bBoxSW": [ - -0.604, - -1.856 - ] - }, - "tripleTongueAbove": { - "bBoxNE": [ - 2.3, - 0.956 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "tripleTongueAboveNoSlur": { - "bBoxNE": [ - 1.532, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tripleTongueBelow": { - "bBoxNE": [ - 2.3, - 0.956 - ], - "bBoxSW": [ - -0.004, - 0.0 - ] - }, - "tripleTongueBelowNoSlur": { - "bBoxNE": [ - 1.532, - 0.4 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "tuplet0": { - "bBoxNE": [ - 1.276, - 1.5 - ], - "bBoxSW": [ - -0.004, - -0.032 - ] - }, - "tuplet1": { - "bBoxNE": [ - 1.024, - 1.488 - ], - "bBoxSW": [ - 0.04, - 0.0 - ] - }, - "tuplet2": { - "bBoxNE": [ - 1.316, - 1.5 - ], - "bBoxSW": [ - 0.04, - -0.024 - ] - }, - "tuplet3": { - "bBoxNE": [ - 1.224, - 1.5 - ], - "bBoxSW": [ - 0.04, - -0.032 - ] - }, - "tuplet4": { - "bBoxNE": [ - 1.252, - 1.488 - ], - "bBoxSW": [ - 0.04, - 0.0 - ] - }, - "tuplet5": { - "bBoxNE": [ - 1.308, - 1.492 - ], - "bBoxSW": [ - 0.04, - -0.032 - ] - }, - "tuplet6": { - "bBoxNE": [ - 1.256, - 1.5 - ], - "bBoxSW": [ - 0.04, - -0.032 - ] - }, - "tuplet7": { - "bBoxNE": [ - 1.332, - 1.488 - ], - "bBoxSW": [ - 0.12, - -0.016 - ] - }, - "tuplet8": { - "bBoxNE": [ - 1.292, - 1.5 - ], - "bBoxSW": [ - 0.04, - -0.032 - ] - }, - "tuplet9": { - "bBoxNE": [ - 1.256, - 1.5 - ], - "bBoxSW": [ - 0.04, - -0.032 - ] - }, - "tupletColon": { - "bBoxNE": [ - 0.484, - 1.072 - ], - "bBoxSW": [ - 0.04, - 0.232 - ] - }, - "unmeasuredTremolo": { - "bBoxNE": [ - 0.64, - 1.312 - ], - "bBoxSW": [ - -0.636, - -1.312 - ] - }, - "unmeasuredTremoloSimple": { - "bBoxNE": [ - 0.768, - 1.164 - ], - "bBoxSW": [ - -0.764, - -1.164 - ] - }, - "unpitchedPercussionClef1": { - "bBoxNE": [ - 1.528, - 1.0 - ], - "bBoxSW": [ - 0.0, - -1.0 - ] - }, - "unpitchedPercussionClef1Alt": { - "bBoxNE": [ - 1.168, - 3.0 - ], - "bBoxSW": [ - 0.0, - 1.0 - ] - }, - "unpitchedPercussionClef2": { - "bBoxNE": [ - 1.248, - 1.844 - ], - "bBoxSW": [ - 0.0, - -1.86 - ] - }, - "ventiduesima": { - "bBoxNE": [ - 3.0, - 1.852 - ], - "bBoxSW": [ - 0.016, - -0.028 - ] - }, - "ventiduesimaAlta": { - "bBoxNE": [ - 5.712, - 1.852 - ], - "bBoxSW": [ - 0.016, - -0.028 - ] - }, - "ventiduesimaBassa": { - "bBoxNE": [ - 5.512, - 1.852 - ], - "bBoxSW": [ - 0.016, - -0.028 - ] - }, - "ventiduesimaBassaMb": { - "bBoxNE": [ - 5.34, - 1.852 - ], - "bBoxSW": [ - 0.016, - -0.028 - ] - }, - "vocalMouthClosed": { - "bBoxNE": [ - 1.5, - 0.404 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "vocalMouthOpen": { - "bBoxNE": [ - 1.5, - 0.924 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "vocalMouthPursed": { - "bBoxNE": [ - 1.0, - 0.924 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "vocalMouthSlightlyOpen": { - "bBoxNE": [ - 1.5, - 0.724 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "vocalMouthWideOpen": { - "bBoxNE": [ - 1.5, - 1.324 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "vocalSprechgesang": { - "bBoxNE": [ - 0.644, - 1.284 - ], - "bBoxSW": [ - -0.644, - -0.004 - ] - }, - "vocalsSussurando": { - "bBoxNE": [ - 0.516, - 1.584 - ], - "bBoxSW": [ - -0.516, - 0.0 - ] - }, - "wiggleArpeggiatoDown": { - "bBoxNE": [ - 1.168, - 0.476 - ], - "bBoxSW": [ - -0.132, - 0.0 - ] - }, - "wiggleArpeggiatoDownArrow": { - "bBoxNE": [ - 2.064, - 0.68 - ], - "bBoxSW": [ - -0.188, - -0.26 - ] - }, - "wiggleArpeggiatoDownSwash": { - "bBoxNE": [ - 1.784, - 0.48 - ], - "bBoxSW": [ - -0.172, - -0.1 - ] - }, - "wiggleArpeggiatoUp": { - "bBoxNE": [ - 1.168, - 0.476 - ], - "bBoxSW": [ - -0.132, - 0.0 - ] - }, - "wiggleArpeggiatoUpArrow": { - "bBoxNE": [ - 2.064, - 0.62 - ], - "bBoxSW": [ - -0.188, - -0.32 - ] - }, - "wiggleArpeggiatoUpSwash": { - "bBoxNE": [ - 2.108, - 0.56 - ], - "bBoxSW": [ - -0.2, - 0.0 - ] - }, - "wiggleCircular": { - "bBoxNE": [ - 1.792, - 1.688 - ], - "bBoxSW": [ - -0.212, - 0.34 - ] - }, - "wiggleCircularConstant": { - "bBoxNE": [ - 1.088, - 0.048 - ], - "bBoxSW": [ - -0.012, - -1.18 - ] - }, - "wiggleCircularConstantFlipped": { - "bBoxNE": [ - 1.088, - 1.18 - ], - "bBoxSW": [ - -0.012, - -0.048 - ] - }, - "wiggleCircularConstantFlippedLarge": { - "bBoxNE": [ - 2.196, - 2.312 - ], - "bBoxSW": [ - -0.012, - -0.048 - ] - }, - "wiggleCircularConstantLarge": { - "bBoxNE": [ - 2.196, - 0.048 - ], - "bBoxSW": [ - -0.012, - -2.312 - ] - }, - "wiggleCircularEnd": { - "bBoxNE": [ - 0.572, - 1.576 - ], - "bBoxSW": [ - -0.468, - 1.136 - ] - }, - "wiggleCircularLarge": { - "bBoxNE": [ - 1.688, - 1.756 - ], - "bBoxSW": [ - -0.38, - 0.296 - ] - }, - "wiggleCircularLarger": { - "bBoxNE": [ - 2.3, - 1.764 - ], - "bBoxSW": [ - -0.412, - 0.096 - ] - }, - "wiggleCircularLargerStill": { - "bBoxNE": [ - 2.956, - 1.924 - ], - "bBoxSW": [ - -0.456, - 0.068 - ] - }, - "wiggleCircularLargest": { - "bBoxNE": [ - 4.464, - 2.192 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "wiggleCircularSmall": { - "bBoxNE": [ - 1.2, - 1.704 - ], - "bBoxSW": [ - -0.396, - 0.384 - ] - }, - "wiggleCircularStart": { - "bBoxNE": [ - 1.872, - 2.112 - ], - "bBoxSW": [ - 0.0, - 0.516 - ] - }, - "wiggleGlissando": { - "bBoxNE": [ - 1.14, - 1.176 - ], - "bBoxSW": [ - -0.084, - 0.732 - ] - }, - "wiggleGlissandoGroup1": { - "bBoxNE": [ - 1.3, - 2.444 - ], - "bBoxSW": [ - -0.064, - 0.0 - ] - }, - "wiggleGlissandoGroup2": { - "bBoxNE": [ - 0.572, - 3.22 - ], - "bBoxSW": [ - -0.076, - 0.0 - ] - }, - "wiggleGlissandoGroup3": { - "bBoxNE": [ - 0.576, - 4.232 - ], - "bBoxSW": [ - -0.076, - 0.0 - ] - }, - "wiggleRandom1": { - "bBoxNE": [ - 7.988, - 1.46 - ], - "bBoxSW": [ - -0.012, - -0.832 - ] - }, - "wiggleRandom2": { - "bBoxNE": [ - 7.988, - 1.6 - ], - "bBoxSW": [ - -0.012, - -0.884 - ] - }, - "wiggleRandom3": { - "bBoxNE": [ - 7.988, - 1.632 - ], - "bBoxSW": [ - -0.012, - -1.128 - ] - }, - "wiggleRandom4": { - "bBoxNE": [ - 7.988, - 2.432 - ], - "bBoxSW": [ - -0.012, - -1.496 - ] - }, - "wiggleSawtooth": { - "bBoxNE": [ - 3.06, - 1.06 - ], - "bBoxSW": [ - -0.068, - -1.068 - ] - }, - "wiggleSawtoothNarrow": { - "bBoxNE": [ - 2.06, - 1.064 - ], - "bBoxSW": [ - -0.072, - -1.064 - ] - }, - "wiggleSawtoothWide": { - "bBoxNE": [ - 4.06, - 1.064 - ], - "bBoxSW": [ - -0.068, - -1.064 - ] - }, - "wiggleSquareWave": { - "bBoxNE": [ - 3.064, - 0.564 - ], - "bBoxSW": [ - -0.064, - -0.564 - ] - }, - "wiggleSquareWaveNarrow": { - "bBoxNE": [ - 2.064, - 0.564 - ], - "bBoxSW": [ - -0.064, - -0.564 - ] - }, - "wiggleSquareWaveWide": { - "bBoxNE": [ - 4.064, - 0.564 - ], - "bBoxSW": [ - -0.064, - -0.564 - ] - }, - "wiggleTrill": { - "bBoxNE": [ - 1.08, - 1.176 - ], - "bBoxSW": [ - -0.144, - 0.732 - ] - }, - "wiggleTrillFast": { - "bBoxNE": [ - 0.924, - 1.176 - ], - "bBoxSW": [ - -0.14, - 0.732 - ] - }, - "wiggleTrillFaster": { - "bBoxNE": [ - 0.784, - 1.188 - ], - "bBoxSW": [ - -0.168, - 0.72 - ] - }, - "wiggleTrillFasterStill": { - "bBoxNE": [ - 0.656, - 1.188 - ], - "bBoxSW": [ - -0.172, - 0.724 - ] - }, - "wiggleTrillFastest": { - "bBoxNE": [ - 0.652, - 1.188 - ], - "bBoxSW": [ - -0.136, - 0.724 - ] - }, - "wiggleTrillSlow": { - "bBoxNE": [ - 1.24, - 1.176 - ], - "bBoxSW": [ - -0.172, - 0.732 - ] - }, - "wiggleTrillSlower": { - "bBoxNE": [ - 1.48, - 1.176 - ], - "bBoxSW": [ - -0.16, - 0.712 - ] - }, - "wiggleTrillSlowerStill": { - "bBoxNE": [ - 1.692, - 1.176 - ], - "bBoxSW": [ - -0.228, - 0.692 - ] - }, - "wiggleTrillSlowest": { - "bBoxNE": [ - 2.104, - 1.176 - ], - "bBoxSW": [ - -0.144, - 0.692 - ] - }, - "wiggleVIbratoLargestSlower": { - "bBoxNE": [ - 3.944, - 2.096 - ], - "bBoxSW": [ - -0.116, - -1.232 - ] - }, - "wiggleVIbratoMediumSlower": { - "bBoxNE": [ - 1.784, - 0.8 - ], - "bBoxSW": [ - -0.124, - -0.164 - ] - }, - "wiggleVibrato": { - "bBoxNE": [ - 0.668, - 0.476 - ], - "bBoxSW": [ - -0.056, - 0.0 - ] - }, - "wiggleVibratoLargeFast": { - "bBoxNE": [ - 1.872, - 1.272 - ], - "bBoxSW": [ - -0.14, - -0.508 - ] - }, - "wiggleVibratoLargeFaster": { - "bBoxNE": [ - 1.6, - 1.272 - ], - "bBoxSW": [ - -0.124, - -0.508 - ] - }, - "wiggleVibratoLargeFasterStill": { - "bBoxNE": [ - 1.372, - 1.272 - ], - "bBoxSW": [ - -0.108, - -0.508 - ] - }, - "wiggleVibratoLargeFastest": { - "bBoxNE": [ - 1.164, - 1.272 - ], - "bBoxSW": [ - -0.108, - -0.508 - ] - }, - "wiggleVibratoLargeSlow": { - "bBoxNE": [ - 2.256, - 1.272 - ], - "bBoxSW": [ - -0.12, - -0.508 - ] - }, - "wiggleVibratoLargeSlower": { - "bBoxNE": [ - 2.696, - 1.272 - ], - "bBoxSW": [ - -0.128, - -0.508 - ] - }, - "wiggleVibratoLargeSlowest": { - "bBoxNE": [ - 3.196, - 1.272 - ], - "bBoxSW": [ - -0.136, - -0.508 - ] - }, - "wiggleVibratoLargestFast": { - "bBoxNE": [ - 2.748, - 2.096 - ], - "bBoxSW": [ - -0.128, - -1.232 - ] - }, - "wiggleVibratoLargestFaster": { - "bBoxNE": [ - 2.348, - 2.096 - ], - "bBoxSW": [ - -0.096, - -1.232 - ] - }, - "wiggleVibratoLargestFasterStill": { - "bBoxNE": [ - 2.004, - 2.096 - ], - "bBoxSW": [ - -0.084, - -1.232 - ] - }, - "wiggleVibratoLargestFastest": { - "bBoxNE": [ - 1.668, - 2.096 - ], - "bBoxSW": [ - -0.12, - -1.232 - ] - }, - "wiggleVibratoLargestSlow": { - "bBoxNE": [ - 3.284, - 2.096 - ], - "bBoxSW": [ - -0.12, - -1.232 - ] - }, - "wiggleVibratoLargestSlowest": { - "bBoxNE": [ - 4.672, - 2.096 - ], - "bBoxSW": [ - -0.148, - -1.232 - ] - }, - "wiggleVibratoMediumFast": { - "bBoxNE": [ - 1.292, - 0.8 - ], - "bBoxSW": [ - -0.104, - -0.164 - ] - }, - "wiggleVibratoMediumFaster": { - "bBoxNE": [ - 1.088, - 0.8 - ], - "bBoxSW": [ - -0.116, - -0.164 - ] - }, - "wiggleVibratoMediumFasterStill": { - "bBoxNE": [ - 0.932, - 0.8 - ], - "bBoxSW": [ - -0.108, - -0.164 - ] - }, - "wiggleVibratoMediumFastest": { - "bBoxNE": [ - 0.828, - 0.8 - ], - "bBoxSW": [ - -0.088, - -0.164 - ] - }, - "wiggleVibratoMediumSlow": { - "bBoxNE": [ - 1.492, - 0.8 - ], - "bBoxSW": [ - -0.124, - -0.164 - ] - }, - "wiggleVibratoMediumSlowest": { - "bBoxNE": [ - 2.104, - 0.8 - ], - "bBoxSW": [ - -0.136, - -0.164 - ] - }, - "wiggleVibratoSmallFast": { - "bBoxNE": [ - 0.952, - 0.556 - ], - "bBoxSW": [ - -0.104, - -0.056 - ] - }, - "wiggleVibratoSmallFaster": { - "bBoxNE": [ - 0.812, - 0.556 - ], - "bBoxSW": [ - -0.112, - -0.056 - ] - }, - "wiggleVibratoSmallFasterStill": { - "bBoxNE": [ - 0.716, - 0.556 - ], - "bBoxSW": [ - -0.1, - -0.056 - ] - }, - "wiggleVibratoSmallFastest": { - "bBoxNE": [ - 0.624, - 0.556 - ], - "bBoxSW": [ - -0.092, - -0.056 - ] - }, - "wiggleVibratoSmallSlow": { - "bBoxNE": [ - 1.096, - 0.556 - ], - "bBoxSW": [ - -0.128, - -0.056 - ] - }, - "wiggleVibratoSmallSlower": { - "bBoxNE": [ - 1.288, - 0.556 - ], - "bBoxSW": [ - -0.14, - -0.056 - ] - }, - "wiggleVibratoSmallSlowest": { - "bBoxNE": [ - 1.604, - 0.556 - ], - "bBoxSW": [ - -0.064, - -0.056 - ] - }, - "wiggleVibratoSmallestFast": { - "bBoxNE": [ - 0.792, - 0.368 - ], - "bBoxSW": [ - -0.104, - 0.0 - ] - }, - "wiggleVibratoSmallestFaster": { - "bBoxNE": [ - 0.664, - 0.368 - ], - "bBoxSW": [ - -0.124, - 0.0 - ] - }, - "wiggleVibratoSmallestFasterStill": { - "bBoxNE": [ - 0.612, - 0.368 - ], - "bBoxSW": [ - -0.084, - 0.0 - ] - }, - "wiggleVibratoSmallestFastest": { - "bBoxNE": [ - 0.556, - 0.368 - ], - "bBoxSW": [ - -0.064, - 0.0 - ] - }, - "wiggleVibratoSmallestSlow": { - "bBoxNE": [ - 0.924, - 0.368 - ], - "bBoxSW": [ - -0.1, - 0.0 - ] - }, - "wiggleVibratoSmallestSlower": { - "bBoxNE": [ - 1.092, - 0.368 - ], - "bBoxSW": [ - -0.1, - 0.0 - ] - }, - "wiggleVibratoSmallestSlowest": { - "bBoxNE": [ - 1.252, - 0.368 - ], - "bBoxSW": [ - -0.12, - 0.0 - ] - }, - "wiggleVibratoStart": { - "bBoxNE": [ - 1.96, - 1.272 - ], - "bBoxSW": [ - 0.0, - 0.004 - ] - }, - "wiggleVibratoWide": { - "bBoxNE": [ - 0.908, - 0.896 - ], - "bBoxSW": [ - -0.096, - 0.0 - ] - }, - "wiggleWavy": { - "bBoxNE": [ - 3.064, - 1.064 - ], - "bBoxSW": [ - -0.064, - -1.064 - ] - }, - "wiggleWavyNarrow": { - "bBoxNE": [ - 2.064, - 1.064 - ], - "bBoxSW": [ - -0.064, - -1.064 - ] - }, - "wiggleWavyWide": { - "bBoxNE": [ - 4.064, - 1.064 - ], - "bBoxSW": [ - -0.064, - -1.064 - ] - }, - "windClosedHole": { - "bBoxNE": [ - 1.216, - 1.216 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windFlatEmbouchure": { - "bBoxNE": [ - 1.488, - 1.572 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windHalfClosedHole1": { - "bBoxNE": [ - 1.216, - 1.216 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windHalfClosedHole2": { - "bBoxNE": [ - 1.22, - 1.216 - ], - "bBoxSW": [ - 0.004, - 0.0 - ] - }, - "windHalfClosedHole3": { - "bBoxNE": [ - 1.22, - 1.22 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windLessRelaxedEmbouchure": { - "bBoxNE": [ - 1.888, - 1.892 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windLessTightEmbouchure": { - "bBoxNE": [ - 1.888, - 1.892 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windMultiphonicsBlackStem": { - "bBoxNE": [ - 1.112, - 1.192 - ], - "bBoxSW": [ - -1.116, - -1.172 - ] - }, - "windMultiphonicsBlackWhiteStem": { - "bBoxNE": [ - 1.196, - 1.372 - ], - "bBoxSW": [ - -1.196, - -1.352 - ] - }, - "windMultiphonicsWhiteStem": { - "bBoxNE": [ - 1.196, - 1.364 - ], - "bBoxSW": [ - -1.196, - -1.36 - ] - }, - "windOpenHole": { - "bBoxNE": [ - 1.216, - 1.216 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windReedPositionIn": { - "bBoxNE": [ - 0.792, - 1.688 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windReedPositionNormal": { - "bBoxNE": [ - 0.796, - 1.688 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windReedPositionOut": { - "bBoxNE": [ - 0.792, - 1.688 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windRelaxedEmbouchure": { - "bBoxNE": [ - 1.888, - 1.892 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windSharpEmbouchure": { - "bBoxNE": [ - 1.488, - 1.572 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windStrongAirPressure": { - "bBoxNE": [ - 2.212, - 1.2 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windThreeQuartersClosedHole": { - "bBoxNE": [ - 1.22, - 1.22 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windTightEmbouchure": { - "bBoxNE": [ - 1.748, - 1.748 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windTrillKey": { - "bBoxNE": [ - 2.824, - 1.54 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - }, - "windVeryTightEmbouchure": { - "bBoxNE": [ - 1.888, - 1.884 - ], - "bBoxSW": [ - 0.0, - -0.008 - ] - }, - "windWeakAirPressure": { - "bBoxNE": [ - 2.348, - 1.34 - ], - "bBoxSW": [ - 0.0, - 0.0 - ] - } - }, - - "glyphsWithAlternates": { - "4stringTabClef": { - "alternates": [ - { - "codepoint": "U+F40C", - "name": "4stringTabClefTall" - }, - { - "codepoint": "U+F40D", - "name": "4stringTabClefSerif" - } - ] - }, - "6stringTabClef": { - "alternates": [ - { - "codepoint": "U+F40A", - "name": "6stringTabClefTall" - }, - { - "codepoint": "U+F40B", - "name": "6stringTabClefSerif" - } - ] - }, - "accdnPush": { - "alternates": [ - { - "codepoint": "U+F45B", - "name": "accdnPushAlt" - } - ] - }, - "accidentalDoubleFlat": { - "alternates": [ - { - "codepoint": "U+F4A1", - "name": "accidentalDoubleFlatJoinedStems" - } - ] - }, - "accidentalFlat": { - "alternates": [ - { - "codepoint": "U+F427", - "name": "accidentalFlatSmall" - } - ] - }, - "accidentalNatural": { - "alternates": [ - { - "codepoint": "U+F428", - "name": "accidentalNaturalSmall" - } - ] - }, - "accidentalSharp": { - "alternates": [ - { - "codepoint": "U+F429", - "name": "accidentalSharpSmall" - } - ] - }, - "accidentalTripleFlat": { - "alternates": [ - { - "codepoint": "U+F4A2", - "name": "accidentalTripleFlatJoinedStems" - } - ] - }, - "analyticsHauptrhythmus": { - "alternates": [ - { - "codepoint": "U+F4B9", - "name": "analyticsHauptrhythmusR" - } - ] - }, - "articAccentAbove": { - "alternates": [ - { - "codepoint": "U+F42A", - "name": "articAccentAboveLarge" - }, - { - "codepoint": "U+F475", - "name": "articAccentAboveSmall" - } - ] - }, - "articAccentBelow": { - "alternates": [ - { - "codepoint": "U+F42B", - "name": "articAccentBelowLarge" - }, - { - "codepoint": "U+F476", - "name": "articAccentBelowSmall" - } - ] - }, - "articAccentStaccatoAbove": { - "alternates": [ - { - "codepoint": "U+F485", - "name": "articAccentStaccatoAboveSmall" - } - ] - }, - "articAccentStaccatoBelow": { - "alternates": [ - { - "codepoint": "U+F486", - "name": "articAccentStaccatoBelowSmall" - } - ] - }, - "articMarcatoAbove": { - "alternates": [ - { - "codepoint": "U+F481", - "name": "articMarcatoAboveSmall" - } - ] - }, - "articMarcatoBelow": { - "alternates": [ - { - "codepoint": "U+F482", - "name": "articMarcatoBelowSmall" - } - ] - }, - "articMarcatoStaccatoAbove": { - "alternates": [ - { - "codepoint": "U+F483", - "name": "articMarcatoStaccatoAboveSmall" - } - ] - }, - "articMarcatoStaccatoBelow": { - "alternates": [ - { - "codepoint": "U+F484", - "name": "articMarcatoStaccatoBelowSmall" - } - ] - }, - "articStaccatissimoAbove": { - "alternates": [ - { - "codepoint": "U+F47B", - "name": "articStaccatissimoAboveSmall" - } - ] - }, - "articStaccatissimoBelow": { - "alternates": [ - { - "codepoint": "U+F47C", - "name": "articStaccatissimoBelowSmall" - } - ] - }, - "articStaccatissimoStrokeAbove": { - "alternates": [ - { - "codepoint": "U+F47F", - "name": "articStaccatissimoStrokeAboveSmall" - } - ] - }, - "articStaccatissimoStrokeBelow": { - "alternates": [ - { - "codepoint": "U+F480", - "name": "articStaccatissimoStrokeBelowSmall" - } - ] - }, - "articStaccatissimoWedgeAbove": { - "alternates": [ - { - "codepoint": "U+F47D", - "name": "articStaccatissimoWedgeAboveSmall" - } - ] - }, - "articStaccatissimoWedgeBelow": { - "alternates": [ - { - "codepoint": "U+F47E", - "name": "articStaccatissimoWedgeBelowSmall" - } - ] - }, - "articStaccatoAbove": { - "alternates": [ - { - "codepoint": "U+F477", - "name": "articStaccatoAboveSmall" - } - ] - }, - "articStaccatoBelow": { - "alternates": [ - { - "codepoint": "U+F478", - "name": "articStaccatoBelowSmall" - } - ] - }, - "articTenutoAbove": { - "alternates": [ - { - "codepoint": "U+F479", - "name": "articTenutoAboveSmall" - } - ] - }, - "articTenutoAccentAbove": { - "alternates": [ - { - "codepoint": "U+F489", - "name": "articTenutoAccentAboveSmall" - } - ] - }, - "articTenutoAccentBelow": { - "alternates": [ - { - "codepoint": "U+F48A", - "name": "articTenutoAccentBelowSmall" - } - ] - }, - "articTenutoBelow": { - "alternates": [ - { - "codepoint": "U+F47A", - "name": "articTenutoBelowSmall" - } - ] - }, - "articTenutoStaccatoAbove": { - "alternates": [ - { - "codepoint": "U+F487", - "name": "articTenutoStaccatoAboveSmall" - } - ] - }, - "articTenutoStaccatoBelow": { - "alternates": [ - { - "codepoint": "U+F488", - "name": "articTenutoStaccatoBelowSmall" - } - ] - }, - "brace": { - "alternates": [ - { - "codepoint": "U+F400", - "name": "braceSmall" - }, - { - "codepoint": "U+F401", - "name": "braceLarge" - }, - { - "codepoint": "U+F402", - "name": "braceLarger" - }, - { - "codepoint": "U+F403", - "name": "braceFlat" - } - ] - }, - "cClef": { - "alternates": [ - { - "codepoint": "U+F408", - "name": "cClefFrench" - }, - { - "codepoint": "U+F473", - "name": "cClefSmall" - } - ] - }, - "caesura": { - "alternates": [ - { - "codepoint": "U+F42C", - "name": "caesuraSingleStroke" - } - ] - }, - "chantCclef": { - "alternates": [ - { - "codepoint": "U+F49E", - "name": "chantCclefHufnagel" - } - ] - }, - "chantFclef": { - "alternates": [ - { - "codepoint": "U+F49D", - "name": "chantFclefHufnagel" - } - ] - }, - "coda": { - "alternates": [ - { - "codepoint": "U+F405", - "name": "codaJapanese" - } - ] - }, - "doubleTongueAbove": { - "alternates": [ - { - "codepoint": "U+F42D", - "name": "doubleTongueAboveNoSlur" - } - ] - }, - "doubleTongueBelow": { - "alternates": [ - { - "codepoint": "U+F42E", - "name": "doubleTongueBelowNoSlur" - } - ] - }, - "dynamicForte": { - "alternates": [ - { - "codepoint": "U+F46D", - "name": "dynamicForteSmall" - } - ] - }, - "dynamicMezzo": { - "alternates": [ - { - "codepoint": "U+F46C", - "name": "dynamicMezzoSmall" - } - ] - }, - "dynamicNiente": { - "alternates": [ - { - "codepoint": "U+F471", - "name": "dynamicNienteSmall" - } - ] - }, - "dynamicPiano": { - "alternates": [ - { - "codepoint": "U+F46B", - "name": "dynamicPianoSmall" - } - ] - }, - "dynamicRinforzando": { - "alternates": [ - { - "codepoint": "U+F46E", - "name": "dynamicRinforzandoSmall" - } - ] - }, - "dynamicSforzando": { - "alternates": [ - { - "codepoint": "U+F46F", - "name": "dynamicSforzandoSmall" - } - ] - }, - "dynamicZ": { - "alternates": [ - { - "codepoint": "U+F470", - "name": "dynamicZSmall" - } - ] - }, - "fClef": { - "alternates": [ - { - "codepoint": "U+F406", - "name": "fClefFrench" - }, - { - "codepoint": "U+F407", - "name": "fClef19thCentury" - }, - { - "codepoint": "U+F474", - "name": "fClefSmall" - } - ] - }, - "flag1024thDown": { - "alternates": [ - { - "codepoint": "U+F426", - "name": "flag1024thDownStraight" - }, - { - "codepoint": "U+F49A", - "name": "flag1024thDownSmall" - } - ] - }, - "flag1024thUp": { - "alternates": [ - { - "codepoint": "U+F424", - "name": "flag1024thUpStraight" - }, - { - "codepoint": "U+F425", - "name": "flag1024thUpShort" - }, - { - "codepoint": "U+F499", - "name": "flag1024thUpSmall" - } - ] - }, - "flag128thDown": { - "alternates": [ - { - "codepoint": "U+F41D", - "name": "flag128thDownStraight" - }, - { - "codepoint": "U+F494", - "name": "flag128thDownSmall" - } - ] - }, - "flag128thUp": { - "alternates": [ - { - "codepoint": "U+F41B", - "name": "flag128thUpStraight" - }, - { - "codepoint": "U+F41C", - "name": "flag128thUpShort" - }, - { - "codepoint": "U+F493", - "name": "flag128thUpSmall" - } - ] - }, - "flag16thDown": { - "alternates": [ - { - "codepoint": "U+F414", - "name": "flag16thDownStraight" - }, - { - "codepoint": "U+F48E", - "name": "flag16thDownSmall" - } - ] - }, - "flag16thUp": { - "alternates": [ - { - "codepoint": "U+F412", - "name": "flag16thUpStraight" - }, - { - "codepoint": "U+F413", - "name": "flag16thUpShort" - }, - { - "codepoint": "U+F48D", - "name": "flag16thUpSmall" - } - ] - }, - "flag256thDown": { - "alternates": [ - { - "codepoint": "U+F420", - "name": "flag256thDownStraight" - }, - { - "codepoint": "U+F496", - "name": "flag256thDownSmall" - } - ] - }, - "flag256thUp": { - "alternates": [ - { - "codepoint": "U+F41E", - "name": "flag256thUpStraight" - }, - { - "codepoint": "U+F41F", - "name": "flag256thUpShort" - }, - { - "codepoint": "U+F495", - "name": "flag256thUpSmall" - } - ] - }, - "flag32ndDown": { - "alternates": [ - { - "codepoint": "U+F417", - "name": "flag32ndDownStraight" - }, - { - "codepoint": "U+F490", - "name": "flag32ndDownSmall" - } - ] - }, - "flag32ndUp": { - "alternates": [ - { - "codepoint": "U+F415", - "name": "flag32ndUpStraight" - }, - { - "codepoint": "U+F416", - "name": "flag32ndUpShort" - }, - { - "codepoint": "U+F48F", - "name": "flag32ndUpSmall" - } - ] - }, - "flag512thDown": { - "alternates": [ - { - "codepoint": "U+F423", - "name": "flag512thDownStraight" - }, - { - "codepoint": "U+F498", - "name": "flag512thDownSmall" - } - ] - }, - "flag512thUp": { - "alternates": [ - { - "codepoint": "U+F421", - "name": "flag512thUpStraight" - }, - { - "codepoint": "U+F422", - "name": "flag512thUpShort" - }, - { - "codepoint": "U+F497", - "name": "flag512thUpSmall" - } - ] - }, - "flag64thDown": { - "alternates": [ - { - "codepoint": "U+F41A", - "name": "flag64thDownStraight" - }, - { - "codepoint": "U+F492", - "name": "flag64thDownSmall" - } - ] - }, - "flag64thUp": { - "alternates": [ - { - "codepoint": "U+F418", - "name": "flag64thUpStraight" - }, - { - "codepoint": "U+F419", - "name": "flag64thUpShort" - }, - { - "codepoint": "U+F491", - "name": "flag64thUpSmall" - } - ] - }, - "flag8thDown": { - "alternates": [ - { - "codepoint": "U+F411", - "name": "flag8thDownStraight" - }, - { - "codepoint": "U+F48C", - "name": "flag8thDownSmall" - } - ] - }, - "flag8thUp": { - "alternates": [ - { - "codepoint": "U+F40F", - "name": "flag8thUpStraight" - }, - { - "codepoint": "U+F410", - "name": "flag8thUpShort" - }, - { - "codepoint": "U+F48B", - "name": "flag8thUpSmall" - } - ] - }, - "gClef": { - "alternates": [ - { - "codepoint": "U+F472", - "name": "gClefSmall" - } - ] - }, - "guitarGolpe": { - "alternates": [ - { - "codepoint": "U+F4B8", - "name": "guitarGolpeFlamenco" - } - ] - }, - "harpMetalRod": { - "alternates": [ - { - "codepoint": "U+F436", - "name": "harpMetalRodAlt" - } - ] - }, - "harpTuningKey": { - "alternates": [ - { - "codepoint": "U+F437", - "name": "harpTuningKeyAlt" - } - ] - }, - "keyboardPedalPed": { - "alternates": [ - { - "codepoint": "U+F434", - "name": "keyboardPedalPedNoDot" - } - ] - }, - "keyboardPedalSost": { - "alternates": [ - { - "codepoint": "U+F435", - "name": "keyboardPedalSostNoDot" - } - ] - }, - "luteFingeringRHThird": { - "alternates": [ - { - "codepoint": "U+F44D", - "name": "luteFingeringRHThirdAlt" - } - ] - }, - "luteFrench10thCourse": { - "alternates": [ - { - "codepoint": "U+F457", - "name": "luteFrench10thCourseStrikethru" - }, - { - "codepoint": "U+F458", - "name": "luteFrench10thCourseUnderline" - }, - { - "codepoint": "U+F459", - "name": "luteFrench10thCourseRight" - } - ] - }, - "luteFrench7thCourse": { - "alternates": [ - { - "codepoint": "U+F44E", - "name": "luteFrench7thCourseStrikethru" - }, - { - "codepoint": "U+F44F", - "name": "luteFrench7thCourseUnderline" - }, - { - "codepoint": "U+F450", - "name": "luteFrench7thCourseRight" - } - ] - }, - "luteFrench8thCourse": { - "alternates": [ - { - "codepoint": "U+F451", - "name": "luteFrench8thCourseStrikethru" - }, - { - "codepoint": "U+F452", - "name": "luteFrench8thCourseUnderline" - }, - { - "codepoint": "U+F453", - "name": "luteFrench8thCourseRight" - } - ] - }, - "luteFrench9thCourse": { - "alternates": [ - { - "codepoint": "U+F454", - "name": "luteFrench9thCourseStrikethru" - }, - { - "codepoint": "U+F455", - "name": "luteFrench9thCourseUnderline" - }, - { - "codepoint": "U+F456", - "name": "luteFrench9thCourseRight" - } - ] - }, - "luteFrenchFretC": { - "alternates": [ - { - "codepoint": "U+F45A", - "name": "luteFrenchFretCAlt" - } - ] - }, - "medRenFlatSoftB": { - "alternates": [ - { - "codepoint": "U+F49F", - "name": "medRenFlatSoftBOld" - }, - { - "codepoint": "U+F4A0", - "name": "medRenFlatSoftBHufnagel" - } - ] - }, - "mensuralCclef": { - "alternates": [ - { - "codepoint": "U+F49B", - "name": "mensuralCclefVoid" - }, - { - "codepoint": "U+F49C", - "name": "mensuralCclefBlack" - } - ] - }, - "mensuralProportion4": { - "alternates": [ - { - "codepoint": "U+F43D", - "name": "mensuralProportion4Old" - } - ] - }, - "noteDoubleWhole": { - "alternates": [ - { - "codepoint": "U+F40E", - "name": "noteDoubleWholeAlt" - } - ] - }, - "noteheadBlack": { - "alternates": [ - { - "codepoint": "U+F46A", - "name": "noteheadBlackSmall" - }, - { - "codepoint": "U+F4BE", - "name": "noteheadBlackOversized" - } - ] - }, - "noteheadDoubleWhole": { - "alternates": [ - { - "codepoint": "U+F43F", - "name": "noteheadDoubleWholeAlt" - }, - { - "codepoint": "U+F467", - "name": "noteheadDoubleWholeSmall" - }, - { - "codepoint": "U+F4BA", - "name": "noteheadDoubleWholeOversized" - } - ] - }, - "noteheadDoubleWholeSquare": { - "alternates": [ - { - "codepoint": "U+F4BB", - "name": "noteheadDoubleWholeSquareOversized" - } - ] - }, - "noteheadHalf": { - "alternates": [ - { - "codepoint": "U+F469", - "name": "noteheadHalfSmall" - }, - { - "codepoint": "U+F4BD", - "name": "noteheadHalfOversized" - } - ] - }, - "noteheadWhole": { - "alternates": [ - { - "codepoint": "U+F468", - "name": "noteheadWholeSmall" - }, - { - "codepoint": "U+F4BC", - "name": "noteheadWholeOversized" - } - ] - }, - "pictBassDrum": { - "alternates": [ - { - "codepoint": "U+F4AF", - "name": "pictBassDrumPeinkofer" - } - ] - }, - "pictBongos": { - "alternates": [ - { - "codepoint": "U+F4B0", - "name": "pictBongosPeinkofer" - } - ] - }, - "pictCastanets": { - "alternates": [ - { - "codepoint": "U+F439", - "name": "pictCastanetsSmithBrindle" - } - ] - }, - "pictConga": { - "alternates": [ - { - "codepoint": "U+F4B1", - "name": "pictCongaPeinkofer" - } - ] - }, - "pictCowBell": { - "alternates": [ - { - "codepoint": "U+F43B", - "name": "pictCowBellBerio" - } - ] - }, - "pictFlexatone": { - "alternates": [ - { - "codepoint": "U+F4B6", - "name": "pictFlexatonePeinkofer" - } - ] - }, - "pictGlsp": { - "alternates": [ - { - "codepoint": "U+F4AA", - "name": "pictGlspPeinkofer" - } - ] - }, - "pictGuiro": { - "alternates": [ - { - "codepoint": "U+F4B4", - "name": "pictGuiroSevsay" - }, - { - "codepoint": "U+F4B5", - "name": "pictGuiroPeinkofer" - } - ] - }, - "pictLithophone": { - "alternates": [ - { - "codepoint": "U+F4A7", - "name": "pictLithophonePeinkofer" - } - ] - }, - "pictLotusFlute": { - "alternates": [ - { - "codepoint": "U+F4AC", - "name": "pictLotusFlutePeinkofer" - } - ] - }, - "pictMar": { - "alternates": [ - { - "codepoint": "U+F4AB", - "name": "pictMarPeinkofer" - } - ] - }, - "pictMaraca": { - "alternates": [ - { - "codepoint": "U+F43C", - "name": "pictMaracaSmithBrindle" - } - ] - }, - "pictMusicalSaw": { - "alternates": [ - { - "codepoint": "U+F4B7", - "name": "pictMusicalSawPeinkofer" - } - ] - }, - "pictSleighBell": { - "alternates": [ - { - "codepoint": "U+F43A", - "name": "pictSleighBellSmithBrindle" - } - ] - }, - "pictTambourine": { - "alternates": [ - { - "codepoint": "U+F438", - "name": "pictTambourineStockhausen" - } - ] - }, - "pictTimbales": { - "alternates": [ - { - "codepoint": "U+F4B3", - "name": "pictTimbalesPeinkofer" - } - ] - }, - "pictTimpani": { - "alternates": [ - { - "codepoint": "U+F4AE", - "name": "pictTimpaniPeinkofer" - } - ] - }, - "pictTomTom": { - "alternates": [ - { - "codepoint": "U+F4B2", - "name": "pictTomTomPeinkofer" - } - ] - }, - "pictTomTomChinese": { - "alternates": [ - { - "codepoint": "U+F4AD", - "name": "pictTomTomChinesePeinkofer" - } - ] - }, - "pictTubaphone": { - "alternates": [ - { - "codepoint": "U+F4A8", - "name": "pictTubaphonePeinkofer" - } - ] - }, - "pictVib": { - "alternates": [ - { - "codepoint": "U+F4A5", - "name": "pictVibPeinkofer" - } - ] - }, - "pictVibMotorOff": { - "alternates": [ - { - "codepoint": "U+F4A6", - "name": "pictVibMotorOffPeinkofer" - } - ] - }, - "pictXyl": { - "alternates": [ - { - "codepoint": "U+F4A9", - "name": "pictXylPeinkofer" - } - ] - }, - "pictXylBass": { - "alternates": [ - { - "codepoint": "U+F4A3", - "name": "pictXylBassPeinkofer" - } - ] - }, - "pictXylTenor": { - "alternates": [ - { - "codepoint": "U+F4A4", - "name": "pictXylTenorPeinkofer" - } - ] - }, - "pluckedSnapPizzicatoAbove": { - "alternates": [ - { - "codepoint": "U+F433", - "name": "pluckedSnapPizzicatoAboveGerman" - } - ] - }, - "pluckedSnapPizzicatoBelow": { - "alternates": [ - { - "codepoint": "U+F432", - "name": "pluckedSnapPizzicatoBelowGerman" - } - ] - }, - "repeatRightLeft": { - "alternates": [ - { - "codepoint": "U+F45C", - "name": "repeatRightLeftThick" - } - ] - }, - "segno": { - "alternates": [ - { - "codepoint": "U+F404", - "name": "segnoJapanese" - } - ] - }, - "stringsChangeBowDirection": { - "alternates": [ - { - "codepoint": "U+F431", - "name": "stringsChangeBowDirectionLiga" - }, - { - "codepoint": "U+F43E", - "name": "stringsChangeBowDirectionImposed" - } - ] - }, - "timeSig0": { - "alternates": [ - { - "codepoint": "U+F440", - "name": "timeSig0Large" - }, - { - "codepoint": "U+F45D", - "name": "timeSig0Small" - } - ] - }, - "timeSig1": { - "alternates": [ - { - "codepoint": "U+F441", - "name": "timeSig1Large" - }, - { - "codepoint": "U+F45E", - "name": "timeSig1Small" - } - ] - }, - "timeSig2": { - "alternates": [ - { - "codepoint": "U+F442", - "name": "timeSig2Large" - }, - { - "codepoint": "U+F45F", - "name": "timeSig2Small" - } - ] - }, - "timeSig3": { - "alternates": [ - { - "codepoint": "U+F443", - "name": "timeSig3Large" - }, - { - "codepoint": "U+F460", - "name": "timeSig3Small" - } - ] - }, - "timeSig4": { - "alternates": [ - { - "codepoint": "U+F444", - "name": "timeSig4Large" - }, - { - "codepoint": "U+F461", - "name": "timeSig4Small" - } - ] - }, - "timeSig5": { - "alternates": [ - { - "codepoint": "U+F445", - "name": "timeSig5Large" - }, - { - "codepoint": "U+F462", - "name": "timeSig5Small" - } - ] - }, - "timeSig6": { - "alternates": [ - { - "codepoint": "U+F446", - "name": "timeSig6Large" - }, - { - "codepoint": "U+F463", - "name": "timeSig6Small" - } - ] - }, - "timeSig7": { - "alternates": [ - { - "codepoint": "U+F447", - "name": "timeSig7Large" - }, - { - "codepoint": "U+F464", - "name": "timeSig7Small" - } - ] - }, - "timeSig8": { - "alternates": [ - { - "codepoint": "U+F448", - "name": "timeSig8Large" - }, - { - "codepoint": "U+F465", - "name": "timeSig8Small" - } - ] - }, - "timeSig9": { - "alternates": [ - { - "codepoint": "U+F449", - "name": "timeSig9Large" - }, - { - "codepoint": "U+F466", - "name": "timeSig9Small" - } - ] - }, - "timeSigCommon": { - "alternates": [ - { - "codepoint": "U+F44A", - "name": "timeSigCommonLarge" - } - ] - }, - "timeSigCutCommon": { - "alternates": [ - { - "codepoint": "U+F44B", - "name": "timeSigCutCommonLarge" - } - ] - }, - "timeSigPlus": { - "alternates": [ - { - "codepoint": "U+F44C", - "name": "timeSigPlusLarge" - } - ] - }, - "tripleTongueAbove": { - "alternates": [ - { - "codepoint": "U+F42F", - "name": "tripleTongueAboveNoSlur" - } - ] - }, - "tripleTongueBelow": { - "alternates": [ - { - "codepoint": "U+F430", - "name": "tripleTongueBelowNoSlur" - } - ] - }, - "unpitchedPercussionClef1": { - "alternates": [ - { - "codepoint": "U+F409", - "name": "unpitchedPercussionClef1Alt" - } - ] - } - }, - - "glyphsWithAnchors": { - "accidental1CommaFlat": { - "cutOutSE": [ - 0.708, - -0.38 - ] - }, - "accidental1CommaSharp": { - "cutOutNW": [ - 0.896, - 1.512 - ], - "cutOutSE": [ - 1.088, - 0.888 - ], - "cutOutSW": [ - 0.112, - -0.928 - ] - }, - "accidental2CommaFlat": { - "cutOutSE": [ - 1.0, - 0.768 - ] - }, - "accidental2CommaSharp": { - "cutOutNW": [ - 0.908, - 1.516 - ], - "cutOutSE": [ - 1.108, - 0.848 - ], - "cutOutSW": [ - 0.1, - -0.928 - ] - }, - "accidental3CommaFlat": { - "cutOutSE": [ - 0.988, - 0.744 - ] - }, - "accidental3CommaSharp": { - "cutOutNW": [ - 0.888, - 1.516 - ], - "cutOutSE": [ - 1.108, - 0.856 - ], - "cutOutSW": [ - 0.108, - -0.956 - ] - }, - "accidental4CommaFlat": { - "cutOutSE": [ - 1.008, - 0.8 - ] - }, - "accidental5CommaSharp": { - "cutOutNW": [ - 0.9, - 1.496 - ], - "cutOutSE": [ - 1.132, - 0.848 - ], - "cutOutSW": [ - 0.112, - -0.94 - ] - }, - "accidentalArrowDown": { - "cutOutNE": [ - 0.512, - 0.384 - ], - "cutOutNW": [ - 0.22, - 0.384 - ] - }, - "accidentalArrowUp": { - "cutOutSE": [ - 0.532, - 0.656 - ], - "cutOutSW": [ - 0.2, - 0.656 - ] - }, - "accidentalBakiyeFlat": { - "cutOutNE": [ - 0.536, - 1.392 - ], - "cutOutNW": [ - 0.152, - 1.112 - ], - "cutOutSE": [ - 0.816, - -0.444 - ], - "cutOutSW": [ - 0.152, - 0.5 - ] - }, - "accidentalBakiyeSharp": { - "cutOutNE": [ - 0.86, - 0.94 - ], - "cutOutNW": [ - 0.12, - 0.616 - ], - "cutOutSE": [ - 0.86, - -0.616 - ], - "cutOutSW": [ - 0.124, - -0.924 - ] - }, - "accidentalBuyukMucennebFlat": { - "cutOutSE": [ - 0.812, - -0.42 - ], - "cutOutSW": [ - 0.18, - 0.536 - ] - }, - "accidentalBuyukMucennebSharp": { - "cutOutNE": [ - 1.052, - 0.94 - ], - "cutOutNW": [ - 0.26, - 0.628 - ], - "cutOutSE": [ - 1.048, - -0.624 - ], - "cutOutSW": [ - 0.264, - -0.956 - ] - }, - "accidentalDoubleFlat": { - "cutOutNE": [ - 0.988, - 0.644 - ], - "cutOutSE": [ - 1.336, - -0.396 - ] - }, - "accidentalDoubleFlatEqualTempered": { - "cutOutNE": [ - 0.992, - 0.728 - ], - "cutOutSE": [ - 1.288, - -0.448 - ] - }, - "accidentalDoubleFlatOneArrowDown": { - "cutOutNE": [ - 0.988, - 0.684 - ], - "cutOutSE": [ - 1.232, - -0.584 - ], - "cutOutSW": [ - 0.392, - -0.8 - ] - }, - "accidentalDoubleFlatOneArrowUp": { - "cutOutNE": [ - 0.968, - 0.648 - ], - "cutOutSE": [ - 1.312, - -0.436 - ] - }, - "accidentalDoubleFlatReversed": { - "cutOutNW": [ - 0.596, - 0.708 - ], - "cutOutSW": [ - 0.3, - -0.424 - ] - }, - "accidentalDoubleFlatThreeArrowsDown": { - "cutOutNE": [ - 0.96, - 0.664 - ], - "cutOutSE": [ - 1.26, - -0.584 - ], - "cutOutSW": [ - 0.364, - -0.808 - ] - }, - "accidentalDoubleFlatThreeArrowsUp": { - "cutOutNE": [ - 0.968, - 0.668 - ], - "cutOutSE": [ - 1.288, - -0.444 - ] - }, - "accidentalDoubleFlatTurned": { - "cutOutNW": [ - 0.456, - 0.54 - ], - "cutOutSW": [ - 0.584, - -0.704 - ] - }, - "accidentalDoubleFlatTwoArrowsDown": { - "cutOutNE": [ - 0.96, - 0.656 - ], - "cutOutSE": [ - 1.232, - -0.568 - ], - "cutOutSW": [ - 0.372, - -0.808 - ] - }, - "accidentalDoubleFlatTwoArrowsUp": { - "cutOutNE": [ - 0.98, - 0.668 - ], - "cutOutSE": [ - 1.304, - -0.44 - ] - }, - "accidentalFilledReversedFlatAndFlat": { - "cutOutNE": [ - 0.92, - 0.676 - ], - "cutOutNW": [ - 0.584, - 0.676 - ], - "cutOutSE": [ - 1.144, - -0.444 - ], - "cutOutSW": [ - 0.316, - -0.424 - ] - }, - "accidentalFilledReversedFlatAndFlatArrowDown": { - "cutOutNE": [ - 0.928, - 0.676 - ], - "cutOutNW": [ - 0.576, - 0.676 - ], - "cutOutSE": [ - 1.276, - -0.368 - ], - "cutOutSW": [ - 0.18, - -0.368 - ] - }, - "accidentalFilledReversedFlatAndFlatArrowUp": { - "cutOutNE": [ - 1.272, - 0.648 - ], - "cutOutNW": [ - 0.24, - 0.648 - ], - "cutOutSE": [ - 1.116, - -0.44 - ], - "cutOutSW": [ - 0.372, - -0.436 - ] - }, - "accidentalFilledReversedFlatArrowDown": { - "cutOutNE": [ - 0.968, - -0.82 - ], - "cutOutNW": [ - 0.628, - 0.676 - ], - "cutOutSW": [ - 0.22, - -0.364 - ] - }, - "accidentalFilledReversedFlatArrowUp": { - "cutOutNW": [ - 0.232, - 0.676 - ], - "cutOutSE": [ - 0.98, - 1.424 - ], - "cutOutSW": [ - 0.28, - -0.42 - ] - }, - "accidentalFiveQuarterTonesFlatArrowDown": { - "cutOutNE": [ - 1.02, - 0.668 - ], - "cutOutSE": [ - 0.576, - -0.78 - ] - }, - "accidentalFiveQuarterTonesSharpArrowUp": { - "cutOutNW": [ - 0.372, - 0.636 - ] - }, - "accidentalFlat": { - "cutOutNE": [ - 0.252, - 0.656 - ], - "cutOutSE": [ - 0.504, - -0.476 - ] - }, - "accidentalFlatEqualTempered": { - "cutOutNE": [ - 0.604, - 0.716 - ], - "cutOutSE": [ - 0.572, - -0.444 - ] - }, - "accidentalFlatOneArrowDown": { - "cutOutNE": [ - 0.212, - 0.668 - ], - "cutOutSE": [ - 0.452, - -0.544 - ] - }, - "accidentalFlatOneArrowUp": { - "cutOutNE": [ - 0.452, - 0.668 - ], - "cutOutSE": [ - 0.54, - -0.448 - ] - }, - "accidentalFlatThreeArrowsDown": { - "cutOutNE": [ - 0.22, - 0.668 - ], - "cutOutSE": [ - 0.484, - -0.564 - ] - }, - "accidentalFlatThreeArrowsUp": { - "cutOutNE": [ - 0.456, - 0.684 - ], - "cutOutSE": [ - 0.52, - -0.46 - ] - }, - "accidentalFlatTurned": { - "cutOutNW": [ - 0.34, - 0.432 - ], - "cutOutSW": [ - 0.588, - -0.728 - ] - }, - "accidentalFlatTwoArrowsDown": { - "cutOutNE": [ - 0.192, - 0.676 - ], - "cutOutNW": [ - -0.1, - -0.756 - ], - "cutOutSE": [ - 0.472, - -0.552 - ] - }, - "accidentalFlatTwoArrowsUp": { - "cutOutNE": [ - 0.464, - 0.696 - ], - "cutOutSE": [ - 0.568, - -0.432 - ] - }, - "accidentalHalfSharpArrowDown": { - "cutOutNE": [ - 0.584, - 0.856 - ], - "cutOutNW": [ - 0.292, - 0.676 - ] - }, - "accidentalHalfSharpArrowUp": { - "cutOutSE": [ - 0.588, - -0.748 - ], - "cutOutSW": [ - 0.304, - -0.908 - ] - }, - "accidentalKomaFlat": { - "cutOutNW": [ - 0.608, - 0.724 - ], - "cutOutSW": [ - 0.36, - -0.448 - ] - }, - "accidentalKomaSharp": { - "cutOutNE": [ - 0.596, - 0.88 - ], - "cutOutNW": [ - 0.28, - 0.708 - ], - "cutOutSE": [ - 0.596, - -0.776 - ], - "cutOutSW": [ - 0.28, - -0.92 - ] - }, - "accidentalKoron": { - "cutOutSE": [ - 0.264, - -0.668 - ] - }, - "accidentalKucukMucennebFlat": { - "cutOutNE": [ - 0.284, - 0.704 - ], - "cutOutSE": [ - 0.576, - -0.424 - ] - }, - "accidentalKucukMucennebSharp": { - "cutOutNE": [ - 0.82, - 0.876 - ], - "cutOutNW": [ - 0.492, - 0.708 - ], - "cutOutSE": [ - 0.836, - -0.768 - ], - "cutOutSW": [ - 0.504, - -0.948 - ] - }, - "accidentalLowerOneSeptimalComma": { - "cutOutNE": [ - 0.212, - 0.32 - ] - }, - "accidentalLowerOneTridecimalQuartertone": { - "cutOutNW": [ - 0.436, - 0.708 - ], - "cutOutSW": [ - 0.304, - -0.416 - ] - }, - "accidentalLowerOneUndecimalQuartertone": { - "cutOutNW": [ - 0.688, - 0.684 - ], - "cutOutSW": [ - 0.296, - -0.42 - ] - }, - "accidentalLowerTwoSeptimalCommas": { - "cutOutNE": [ - 0.212, - 1.06 - ] - }, - "accidentalNarrowReversedFlat": { - "cutOutNW": [ - 0.452, - 0.728 - ], - "cutOutSW": [ - 0.208, - -0.448 - ] - }, - "accidentalNarrowReversedFlatAndFlat": { - "cutOutNE": [ - 0.988, - 0.744 - ], - "cutOutNW": [ - 0.444, - 0.744 - ], - "cutOutSE": [ - 1.352, - -0.456 - ], - "cutOutSW": [ - 0.196, - -0.456 - ] - }, - "accidentalNatural": { - "cutOutNE": [ - 0.192, - 0.776 - ], - "cutOutSW": [ - 0.476, - -0.828 - ] - }, - "accidentalNaturalEqualTempered": { - "cutOutSW": [ - 0.452, - -0.856 - ] - }, - "accidentalNaturalFlat": { - "cutOutNE": [ - 1.18, - 0.648 - ], - "cutOutSE": [ - 0.748, - -0.828 - ], - "cutOutSW": [ - 0.436, - -0.828 - ] - }, - "accidentalNaturalOneArrowDown": { - "cutOutNE": [ - 0.748, - -1.028 - ], - "cutOutSW": [ - 0.184, - -0.848 - ] - }, - "accidentalNaturalOneArrowUp": { - "cutOutNE": [ - 0.452, - 0.828 - ], - "cutOutSW": [ - 0.456, - -0.84 - ] - }, - "accidentalNaturalReversed": { - "cutOutNW": [ - 0.432, - 0.82 - ], - "cutOutSE": [ - 0.264, - -0.876 - ] - }, - "accidentalNaturalSharp": { - "cutOutNE": [ - 1.784, - 0.9 - ], - "cutOutSE": [ - 1.784, - -0.608 - ], - "cutOutSW": [ - 0.452, - -0.836 - ] - }, - "accidentalNaturalThreeArrowsDown": { - "cutOutNE": [ - 0.764, - -1.012 - ], - "cutOutSW": [ - 0.192, - -0.86 - ] - }, - "accidentalNaturalThreeArrowsUp": { - "cutOutNE": [ - 0.472, - 0.828 - ], - "cutOutSW": [ - 0.452, - -0.84 - ] - }, - "accidentalNaturalTwoArrowsDown": { - "cutOutNE": [ - 0.756, - -1.012 - ], - "cutOutSW": [ - 0.18, - -0.84 - ] - }, - "accidentalNaturalTwoArrowsUp": { - "cutOutNE": [ - 0.476, - 0.836 - ], - "cutOutSW": [ - 0.456, - -0.84 - ] - }, - "accidentalOneAndAHalfSharpsArrowDown": { - "cutOutNW": [ - 0.132, - 0.624 - ], - "cutOutSE": [ - 0.8, - -1.22 - ] - }, - "accidentalOneAndAHalfSharpsArrowUp": { - "cutOutNW": [ - 0.436, - 1.332 - ], - "cutOutSE": [ - 1.34, - 1.3 - ] - }, - "accidentalQuarterToneFlat4": { - "cutOutNE": [ - 1.22, - 0.744 - ], - "cutOutSE": [ - 1.268, - -0.44 - ], - "cutOutSW": [ - 0.648, - 1.1 - ] - }, - "accidentalQuarterToneFlatArrowUp": { - "cutOutNE": [ - 0.604, - 0.664 - ], - "cutOutSE": [ - 0.62, - -0.452 - ] - }, - "accidentalQuarterToneFlatFilledReversed": { - "cutOutNW": [ - 0.604, - 0.708 - ], - "cutOutSW": [ - 0.38, - -0.448 - ] - }, - "accidentalQuarterToneFlatNaturalArrowDown": { - "cutOutNE": [ - 0.232, - 0.788 - ] - }, - "accidentalQuarterToneFlatPenderecki": { - "cutOutNE": [ - 0.312, - 0.716 - ], - "cutOutSE": [ - 0.528, - -0.436 - ] - }, - "accidentalQuarterToneFlatStein": { - "cutOutNW": [ - 0.628, - 0.676 - ], - "cutOutSW": [ - 0.336, - -0.428 - ] - }, - "accidentalQuarterToneFlatVanBlankenburg": { - "cutOutNE": [ - 0.32, - 0.432 - ] - }, - "accidentalQuarterToneSharp4": { - "cutOutNE": [ - 1.028, - 1.524 - ], - "cutOutSE": [ - 1.456, - -0.656 - ], - "cutOutSW": [ - 0.492, - 1.048 - ] - }, - "accidentalQuarterToneSharpArrowDown": { - "cutOutNE": [ - 0.856, - 0.908 - ], - "cutOutNW": [ - 0.132, - 0.608 - ], - "cutOutSE": [ - 0.856, - -0.588 - ] - }, - "accidentalQuarterToneSharpBusotti": { - "cutOutNE": [ - 0.476, - 0.836 - ], - "cutOutNW": [ - 0.184, - 0.668 - ], - "cutOutSE": [ - 0.472, - 0.124 - ], - "cutOutSW": [ - 0.184, - 0.0 - ] - }, - "accidentalQuarterToneSharpNaturalArrowUp": { - "cutOutSW": [ - 0.616, - -0.868 - ] - }, - "accidentalQuarterToneSharpStein": { - "cutOutNE": [ - 0.476, - 0.748 - ], - "cutOutNW": [ - 0.224, - 0.604 - ], - "cutOutSE": [ - 0.492, - -0.8 - ], - "cutOutSW": [ - 0.224, - -0.92 - ] - }, - "accidentalQuarterToneSharpWiggle": { - "cutOutNE": [ - 2.08, - 0.94 - ], - "cutOutSE": [ - 2.08, - -0.604 - ], - "cutOutSW": [ - 1.092, - 0.716 - ] - }, - "accidentalRaiseOneSeptimalComma": { - "cutOutSE": [ - 0.22, - 0.78 - ] - }, - "accidentalRaiseOneTridecimalQuartertone": { - "cutOutNE": [ - 0.888, - 0.532 - ], - "cutOutNW": [ - 0.192, - 0.2 - ], - "cutOutSE": [ - 0.888, - -0.184 - ], - "cutOutSW": [ - 0.192, - -0.536 - ] - }, - "accidentalRaiseOneUndecimalQuartertone": { - "cutOutNE": [ - 0.736, - 0.556 - ], - "cutOutNW": [ - 0.332, - 0.304 - ], - "cutOutSE": [ - 0.736, - -0.28 - ], - "cutOutSW": [ - 0.332, - -0.5 - ] - }, - "accidentalRaiseTwoSeptimalCommas": { - "cutOutSE": [ - 0.22, - 0.756 - ] - }, - "accidentalReversedFlatAndFlatArrowDown": { - "cutOutNE": [ - 0.94, - 0.676 - ], - "cutOutNW": [ - 0.588, - 0.668 - ], - "cutOutSE": [ - 1.304, - -0.412 - ], - "cutOutSW": [ - 0.224, - -0.412 - ] - }, - "accidentalReversedFlatAndFlatArrowUp": { - "cutOutNE": [ - 1.32, - 0.704 - ], - "cutOutNW": [ - 0.24, - 0.704 - ], - "cutOutSE": [ - 1.312, - -0.456 - ], - "cutOutSW": [ - 0.24, - -0.436 - ] - }, - "accidentalReversedFlatArrowDown": { - "cutOutNE": [ - 0.948, - -0.84 - ], - "cutOutNW": [ - 0.636, - 0.684 - ], - "cutOutSW": [ - 0.22, - -0.392 - ] - }, - "accidentalReversedFlatArrowUp": { - "cutOutNW": [ - 0.26, - 0.676 - ], - "cutOutSE": [ - 0.992, - 1.412 - ], - "cutOutSW": [ - 0.36, - -0.456 - ] - }, - "accidentalSharp": { - "cutOutNE": [ - 0.84, - 0.896 - ], - "cutOutNW": [ - 0.144, - 0.568 - ], - "cutOutSE": [ - 0.84, - -0.596 - ], - "cutOutSW": [ - 0.144, - -0.896 - ] - }, - "accidentalSharpOneArrowDown": { - "cutOutNE": [ - 0.868, - 0.916 - ], - "cutOutNW": [ - 0.12, - 0.604 - ], - "cutOutSW": [ - 0.12, - -0.916 - ] - }, - "accidentalSharpOneArrowUp": { - "cutOutNE": [ - 0.664, - 1.472 - ], - "cutOutSE": [ - 0.876, - -0.596 - ], - "cutOutSW": [ - 0.112, - -0.9 - ] - }, - "accidentalSharpOneHorizontalStroke": { - "cutOutNE": [ - 0.888, - 0.968 - ], - "cutOutNW": [ - 0.132, - 0.628 - ], - "cutOutSE": [ - 0.888, - 0.324 - ], - "cutOutSW": [ - 0.132, - -0.032 - ] - }, - "accidentalSharpReversed": { - "cutOutNE": [ - 0.896, - 0.644 - ], - "cutOutNW": [ - 0.112, - 0.928 - ], - "cutOutSE": [ - 0.896, - -0.948 - ], - "cutOutSW": [ - 0.108, - -0.628 - ] - }, - "accidentalSharpSharp": { - "cutOutNE": [ - 1.928, - 0.9 - ], - "cutOutNW": [ - 0.144, - 0.596 - ], - "cutOutSE": [ - 1.936, - -0.604 - ], - "cutOutSW": [ - 0.144, - -0.896 - ] - }, - "accidentalSharpThreeArrowsDown": { - "cutOutNE": [ - 0.868, - 0.92 - ], - "cutOutNW": [ - 0.124, - 0.616 - ], - "cutOutSW": [ - 0.3, - -1.464 - ] - }, - "accidentalSharpThreeArrowsUp": { - "cutOutNE": [ - 0.676, - 1.504 - ], - "cutOutSE": [ - 0.876, - -0.596 - ], - "cutOutSW": [ - 0.124, - -0.908 - ] - }, - "accidentalSharpTwoArrowsDown": { - "cutOutNE": [ - 0.868, - 0.92 - ], - "cutOutSW": [ - 0.272, - -1.472 - ] - }, - "accidentalSharpTwoArrowsUp": { - "cutOutNE": [ - 0.684, - 1.476 - ], - "cutOutSE": [ - 0.88, - -0.588 - ], - "cutOutSW": [ - 0.124, - -0.908 - ] - }, - "accidentalSims12Down": { - "cutOutNW": [ - 0.736, - 0.5 - ], - "cutOutSW": [ - 0.356, - -0.224 - ] - }, - "accidentalSims12Up": { - "cutOutSE": [ - 0.836, - -0.364 - ], - "cutOutSW": [ - 0.364, - -0.364 - ] - }, - "accidentalSims4Down": { - "cutOutNW": [ - 0.708, - 0.5 - ], - "cutOutSE": [ - 1.188, - 1.9 - ] - }, - "accidentalSims6Down": { - "cutOutNW": [ - 0.736, - 0.5 - ], - "cutOutSW": [ - 0.356, - -0.232 - ] - }, - "accidentalSims6Up": { - "cutOutSW": [ - 0.716, - -0.5 - ] - }, - "accidentalSori": { - "cutOutNE": [ - 1.188, - 0.392 - ], - "cutOutNW": [ - 0.264, - 0.828 - ], - "cutOutSE": [ - 1.188, - -0.404 - ], - "cutOutSW": [ - 0.264, - -0.816 - ] - }, - "accidentalTavenerFlat": { - "cutOutNW": [ - 0.896, - 0.5 - ], - "cutOutSE": [ - 1.996, - 0.928 - ] - }, - "accidentalTavenerSharp": { - "cutOutNE": [ - 1.704, - 1.1 - ], - "cutOutNW": [ - 0.536, - -0.3 - ], - "cutOutSE": [ - 1.708, - 0.3 - ], - "cutOutSW": [ - 0.708, - -1.088 - ] - }, - "accidentalThreeQuarterTonesFlatArrowDown": { - "cutOutNE": [ - 0.356, - 0.648 - ], - "cutOutNW": [ - 0.032, - -0.8 - ], - "cutOutSE": [ - 0.648, - -0.5 - ] - }, - "accidentalThreeQuarterTonesFlatArrowUp": { - "cutOutNE": [ - 1.264, - 0.688 - ], - "cutOutSE": [ - 1.296, - -0.456 - ] - }, - "accidentalThreeQuarterTonesFlatCouper": { - "cutOutNE": [ - 1.052, - 0.736 - ], - "cutOutNW": [ - 0.564, - 0.728 - ], - "cutOutSE": [ - 1.268, - -0.444 - ], - "cutOutSW": [ - 0.376, - -0.444 - ] - }, - "accidentalThreeQuarterTonesFlatGrisey": { - "cutOutNE": [ - 0.476, - 0.724 - ], - "cutOutSE": [ - 0.564, - -0.432 - ] - }, - "accidentalThreeQuarterTonesFlatTartini": { - "cutOutNE": [ - 0.312, - 0.688 - ] - }, - "accidentalThreeQuarterTonesFlatZimmermann": { - "cutOutNE": [ - 1.22, - 0.668 - ], - "cutOutNW": [ - 0.636, - 0.668 - ] - }, - "accidentalThreeQuarterTonesSharpArrowDown": { - "cutOutSE": [ - 0.628, - -0.648 - ] - }, - "accidentalThreeQuarterTonesSharpArrowUp": { - "cutOutNW": [ - 0.272, - 1.304 - ], - "cutOutSE": [ - 0.86, - -0.584 - ], - "cutOutSW": [ - 0.132, - -0.888 - ] - }, - "accidentalThreeQuarterTonesSharpBusotti": { - "cutOutNE": [ - 1.36, - 1.2 - ], - "cutOutNW": [ - 0.18, - 0.628 - ], - "cutOutSE": [ - 1.36, - 0.5 - ], - "cutOutSW": [ - 0.18, - 0.0 - ] - }, - "accidentalThreeQuarterTonesSharpStein": { - "cutOutNE": [ - 1.128, - 1.0 - ], - "cutOutNW": [ - 0.144, - 0.604 - ], - "cutOutSE": [ - 1.128, - -0.5 - ], - "cutOutSW": [ - 0.144, - -0.896 - ] - }, - "accidentalTripleFlat": { - "cutOutNE": [ - 1.748, - 0.656 - ], - "cutOutSE": [ - 2.048, - -0.436 - ] - }, - "accidentalTripleSharp": { - "cutOutNE": [ - 1.936, - 0.916 - ], - "cutOutNW": [ - 1.208, - 0.596 - ], - "cutOutSE": [ - 1.936, - -0.588 - ], - "cutOutSW": [ - 1.208, - -0.9 - ] - }, - "accidentalWyschnegradsky10TwelfthsFlat": { - "cutOutNE": [ - 1.496, - 0.684 - ] - }, - "accidentalWyschnegradsky10TwelfthsSharp": { - "cutOutNW": [ - 0.828, - 1.444 - ], - "cutOutSE": [ - 1.34, - 1.392 - ], - "cutOutSW": [ - 0.112, - -0.916 - ] - }, - "accidentalWyschnegradsky11TwelfthsFlat": { - "cutOutNE": [ - 1.492, - 0.688 - ] - }, - "accidentalWyschnegradsky11TwelfthsSharp": { - "cutOutNW": [ - 0.828, - 1.464 - ], - "cutOutSE": [ - 1.34, - 1.42 - ], - "cutOutSW": [ - 0.108, - -0.908 - ] - }, - "accidentalWyschnegradsky1TwelfthsFlat": { - "cutOutNE": [ - 0.724, - 0.668 - ], - "cutOutSE": [ - 0.22, - -0.836 - ] - }, - "accidentalWyschnegradsky1TwelfthsSharp": { - "cutOutSE": [ - 0.224, - 0.736 - ] - }, - "accidentalWyschnegradsky2TwelfthsFlat": { - "cutOutNE": [ - 0.708, - 0.676 - ], - "cutOutSE": [ - 0.22, - -0.828 - ] - }, - "accidentalWyschnegradsky2TwelfthsSharp": { - "cutOutSE": [ - 0.224, - 0.16 - ] - }, - "accidentalWyschnegradsky3TwelfthsFlat": { - "cutOutNE": [ - 0.224, - 0.728 - ], - "cutOutSE": [ - 0.224, - -0.836 - ] - }, - "accidentalWyschnegradsky3TwelfthsSharp": { - "cutOutNE": [ - 0.452, - 0.78 - ], - "cutOutNW": [ - 0.164, - 0.616 - ], - "cutOutSE": [ - 0.452, - -0.808 - ], - "cutOutSW": [ - 0.164, - -0.92 - ] - }, - "accidentalWyschnegradsky4TwelfthsFlat": { - "cutOutNE": [ - 0.744, - 0.696 - ], - "cutOutSE": [ - 0.544, - -0.448 - ] - }, - "accidentalWyschnegradsky4TwelfthsSharp": { - "cutOutNW": [ - 0.172, - 0.616 - ], - "cutOutSE": [ - 0.736, - 0.876 - ], - "cutOutSW": [ - 0.172, - -0.928 - ] - }, - "accidentalWyschnegradsky5TwelfthsFlat": { - "cutOutNE": [ - 0.724, - 0.696 - ], - "cutOutSE": [ - 0.628, - -0.428 - ] - }, - "accidentalWyschnegradsky5TwelfthsSharp": { - "cutOutNW": [ - 0.164, - 0.616 - ], - "cutOutSE": [ - 0.728, - 0.868 - ], - "cutOutSW": [ - 0.164, - -0.928 - ] - }, - "accidentalWyschnegradsky6TwelfthsFlat": { - "cutOutNE": [ - 0.304, - 0.716 - ], - "cutOutSE": [ - 0.564, - -0.44 - ] - }, - "accidentalWyschnegradsky6TwelfthsSharp": { - "cutOutNE": [ - 0.86, - 0.94 - ], - "cutOutNW": [ - 0.12, - 0.604 - ], - "cutOutSE": [ - 0.868, - -0.608 - ], - "cutOutSW": [ - 0.12, - -0.916 - ] - }, - "accidentalWyschnegradsky7TwelfthsFlat": { - "cutOutNE": [ - 1.544, - 0.748 - ], - "cutOutSE": [ - 1.052, - -0.768 - ], - "cutOutSW": [ - 0.696, - -0.828 - ] - }, - "accidentalWyschnegradsky7TwelfthsSharp": { - "cutOutNW": [ - 0.568, - 1.292 - ], - "cutOutSE": [ - 1.068, - 1.42 - ], - "cutOutSW": [ - 0.12, - -0.928 - ] - }, - "accidentalWyschnegradsky8TwelfthsFlat": { - "cutOutNE": [ - 1.524, - 0.776 - ], - "cutOutSE": [ - 1.06, - -0.756 - ], - "cutOutSW": [ - 0.684, - -0.796 - ] - }, - "accidentalWyschnegradsky8TwelfthsSharp": { - "cutOutNW": [ - 0.556, - 1.392 - ], - "cutOutSE": [ - 1.052, - 1.392 - ], - "cutOutSW": [ - 0.112, - -0.92 - ] - }, - "accidentalWyschnegradsky9TwelfthsFlat": { - "cutOutNE": [ - 1.04, - 0.776 - ], - "cutOutSE": [ - 1.04, - -0.808 - ], - "cutOutSW": [ - 0.704, - -0.816 - ] - }, - "accidentalWyschnegradsky9TwelfthsSharp": { - "cutOutNE": [ - 1.132, - 1.0 - ], - "cutOutNW": [ - 0.112, - 0.624 - ], - "cutOutSE": [ - 1.132, - -0.564 - ], - "cutOutSW": [ - 0.112, - -0.92 - ] - }, - "accidentalXenakisOneThirdToneSharp": { - "cutOutNE": [ - 0.748, - 0.936 - ], - "cutOutNW": [ - 0.364, - 0.764 - ], - "cutOutSE": [ - 0.756, - -0.724 - ], - "cutOutSW": [ - 0.364, - -0.888 - ] - }, - "accidentalXenakisTwoThirdTonesSharp": { - "cutOutNE": [ - 1.06, - 0.92 - ], - "cutOutNW": [ - 0.344, - 0.716 - ], - "cutOutSE": [ - 1.06, - -0.688 - ], - "cutOutSW": [ - 0.344, - -0.896 - ] - }, - "beamAccelRit1": { - "repeatOffset": [ - 4.736, - 0.0 - ] - }, - "beamAccelRit10": { - "repeatOffset": [ - 2.116, - 0.0 - ] - }, - "beamAccelRit11": { - "repeatOffset": [ - 1.816, - 0.0 - ] - }, - "beamAccelRit12": { - "repeatOffset": [ - 1.516, - 0.0 - ] - }, - "beamAccelRit13": { - "repeatOffset": [ - 1.216, - 0.0 - ] - }, - "beamAccelRit14": { - "repeatOffset": [ - 0.916, - 0.0 - ] - }, - "beamAccelRit15": { - "repeatOffset": [ - 0.616, - 0.0 - ] - }, - "beamAccelRit2": { - "repeatOffset": [ - 4.436, - 0.0 - ] - }, - "beamAccelRit3": { - "repeatOffset": [ - 4.136, - 0.0 - ] - }, - "beamAccelRit4": { - "repeatOffset": [ - 3.916, - 0.0 - ] - }, - "beamAccelRit5": { - "repeatOffset": [ - 3.616, - 0.0 - ] - }, - "beamAccelRit6": { - "repeatOffset": [ - 3.316, - 0.0 - ] - }, - "beamAccelRit7": { - "repeatOffset": [ - 3.016, - 0.0 - ] - }, - "beamAccelRit8": { - "repeatOffset": [ - 2.716, - 0.0 - ] - }, - "beamAccelRit9": { - "repeatOffset": [ - 2.416, - 0.0 - ] - }, - "dynamicFF": { - "opticalCenter": [ - 1.852, - 0.0 - ] - }, - "dynamicFFF": { - "opticalCenter": [ - 2.472, - 0.0 - ] - }, - "dynamicFFFF": { - "opticalCenter": [ - 2.824, - 0.0 - ] - }, - "dynamicFFFFF": { - "opticalCenter": [ - 2.976, - 0.0 - ] - }, - "dynamicFFFFFF": { - "opticalCenter": [ - 3.504, - 0.0 - ] - }, - "dynamicForte": { - "opticalCenter": [ - 1.256, - 0.0 - ] - }, - "dynamicFortePiano": { - "opticalCenter": [ - 1.5, - 0.0 - ] - }, - "dynamicForzando": { - "opticalCenter": [ - 1.352, - 0.0 - ] - }, - "dynamicMF": { - "opticalCenter": [ - 1.796, - 0.0 - ] - }, - "dynamicMP": { - "opticalCenter": [ - 1.848, - 0.0 - ] - }, - "dynamicMezzo": { - "opticalCenter": [ - 0.872, - 0.0 - ] - }, - "dynamicNiente": { - "opticalCenter": [ - 0.616, - 0.0 - ] - }, - "dynamicPF": { - "opticalCenter": [ - 1.68, - 0.0 - ] - }, - "dynamicPP": { - "opticalCenter": [ - 1.708, - 0.0 - ] - }, - "dynamicPPP": { - "opticalCenter": [ - 2.368, - 0.0 - ] - }, - "dynamicPPPP": { - "opticalCenter": [ - 3.004, - 0.0 - ] - }, - "dynamicPPPPP": { - "opticalCenter": [ - 3.552, - 0.0 - ] - }, - "dynamicPPPPPP": { - "opticalCenter": [ - 4.248, - 0.0 - ] - }, - "dynamicPiano": { - "opticalCenter": [ - 1.22, - 0.0 - ] - }, - "dynamicRinforzando": { - "opticalCenter": [ - 0.612, - 0.0 - ] - }, - "dynamicRinforzando1": { - "opticalCenter": [ - 1.564, - 0.0 - ] - }, - "dynamicRinforzando2": { - "opticalCenter": [ - 2.084, - 0.0 - ] - }, - "dynamicSforzando": { - "opticalCenter": [ - 0.444, - 0.0 - ] - }, - "dynamicSforzando1": { - "opticalCenter": [ - 1.3, - 0.0 - ] - }, - "dynamicSforzandoPianissimo": { - "opticalCenter": [ - 1.972, - 0.0 - ] - }, - "dynamicSforzandoPiano": { - "opticalCenter": [ - 1.904, - 0.0 - ] - }, - "dynamicSforzato": { - "opticalCenter": [ - 1.76, - 0.0 - ] - }, - "dynamicSforzatoFF": { - "opticalCenter": [ - 2.276, - 0.0 - ] - }, - "dynamicSforzatoPiano": { - "opticalCenter": [ - 1.848, - 0.0 - ] - }, - "dynamicZ": { - "opticalCenter": [ - 0.5, - 0.0 - ] - }, - "flag1024thDown": { - "stemDownSW": [ - 0.0, - -4.684 - ] - }, - "flag1024thDownSmall": { - "stemDownSW": [ - 0.0, - -4.472 - ] - }, - "flag1024thDownStraight": { - "stemDownSW": [ - 0.0, - -4.66 - ] - }, - "flag1024thUp": { - "stemUpNW": [ - 0.0, - 4.064 - ] - }, - "flag1024thUpShort": { - "stemUpNW": [ - 0.0, - 4.256 - ] - }, - "flag1024thUpSmall": { - "stemUpNW": [ - 0.0, - 4.252 - ] - }, - "flag1024thUpStraight": { - "stemUpNW": [ - 0.0, - 4.644 - ] - }, - "flag128thDown": { - "stemDownSW": [ - 0.0, - -2.076 - ] - }, - "flag128thDownSmall": { - "stemDownSW": [ - 0.0, - -2.28 - ] - }, - "flag128thDownStraight": { - "stemDownSW": [ - 0.0, - -2.28 - ] - }, - "flag128thUp": { - "stemUpNW": [ - 0.0, - 1.9 - ] - }, - "flag128thUpShort": { - "stemUpNW": [ - 0.0, - 2.076 - ] - }, - "flag128thUpSmall": { - "stemUpNW": [ - 0.0, - 2.2 - ] - }, - "flag128thUpStraight": { - "stemUpNW": [ - 0.0, - 2.296 - ] - }, - "flag16thDown": { - "stemDownSW": [ - 0.0, - 0.128 - ] - }, - "flag16thDownSmall": { - "stemDownSW": [ - 0.0, - 0.068 - ] - }, - "flag16thDownStraight": { - "stemDownSW": [ - 0.0, - 0.124 - ] - }, - "flag16thUp": { - "stemUpNW": [ - 0.0, - -0.088 - ] - }, - "flag16thUpShort": { - "stemUpNW": [ - 0.0, - -0.26 - ] - }, - "flag16thUpSmall": { - "stemUpNW": [ - 0.0, - -0.08 - ] - }, - "flag16thUpStraight": { - "stemUpNW": [ - 0.0, - -0.18 - ] - }, - "flag256thDown": { - "stemDownSW": [ - 0.0, - -2.812 - ] - }, - "flag256thDownSmall": { - "stemDownSW": [ - 0.0, - -3.04 - ] - }, - "flag256thDownStraight": { - "stemDownSW": [ - 0.0, - -3.068 - ] - }, - "flag256thUp": { - "stemUpNW": [ - 0.0, - 2.592 - ] - }, - "flag256thUpShort": { - "stemUpNW": [ - 0.0, - 2.836 - ] - }, - "flag256thUpSmall": { - "stemUpNW": [ - 0.0, - 2.936 - ] - }, - "flag256thUpStraight": { - "stemUpNW": [ - 0.0, - 3.072 - ] - }, - "flag32ndDown": { - "stemDownSW": [ - 0.0, - -0.448 - ] - }, - "flag32ndDownSmall": { - "stemDownSW": [ - 0.0, - -0.716 - ] - }, - "flag32ndDownStraight": { - "stemDownSW": [ - 0.0, - -0.68 - ] - }, - "flag32ndUp": { - "stemUpNW": [ - 0.0, - 0.376 - ] - }, - "flag32ndUpShort": { - "stemUpNW": [ - 0.0, - 0.704 - ] - }, - "flag32ndUpSmall": { - "stemUpNW": [ - 0.0, - 0.664 - ] - }, - "flag32ndUpStraight": { - "stemUpNW": [ - 0.0, - 0.696 - ] - }, - "flag512thDown": { - "stemDownSW": [ - 0.0, - -3.608 - ] - }, - "flag512thDownSmall": { - "stemDownSW": [ - 0.0, - -3.744 - ] - }, - "flag512thDownStraight": { - "stemDownSW": [ - 0.0, - -3.884 - ] - }, - "flag512thUp": { - "stemUpNW": [ - 0.0, - 3.324 - ] - }, - "flag512thUpShort": { - "stemUpNW": [ - 0.0, - 3.54 - ] - }, - "flag512thUpSmall": { - "stemUpNW": [ - 0.0, - 3.656 - ] - }, - "flag512thUpStraight": { - "stemUpNW": [ - 0.0, - 3.856 - ] - }, - "flag64thDown": { - "stemDownSW": [ - 0.0, - -1.244 - ] - }, - "flag64thDownSmall": { - "stemDownSW": [ - 0.0, - -1.472 - ] - }, - "flag64thDownStraight": { - "stemDownSW": [ - 0.0, - -1.18 - ] - }, - "flag64thUp": { - "stemUpNW": [ - 0.0, - 1.172 - ] - }, - "flag64thUpShort": { - "stemUpNW": [ - 0.0, - 1.392 - ] - }, - "flag64thUpSmall": { - "stemUpNW": [ - 0.0, - 1.392 - ] - }, - "flag64thUpStraight": { - "stemUpNW": [ - 0.0, - 1.492 - ] - }, - "flag8thDown": { - "graceNoteSlashNW": [ - -0.596, - 2.168 - ], - "graceNoteSlashSE": [ - 1.328, - 0.628 - ], - "stemDownSW": [ - 0.0, - 0.132 - ] - }, - "flag8thDownSmall": { - "stemDownSW": [ - 0.0, - 0.0 - ] - }, - "flag8thDownStraight": { - "stemDownSW": [ - 0.0, - 0.12 - ] - }, - "flag8thUp": { - "graceNoteSlashNE": [ - 1.284, - -0.796 - ], - "graceNoteSlashSW": [ - -0.644, - -2.456 - ], - "stemUpNW": [ - 0.0, - -0.04 - ] - }, - "flag8thUpShort": { - "stemUpNW": [ - 0.0, - -0.2 - ] - }, - "flag8thUpSmall": { - "stemUpNW": [ - 0.0, - 0.0 - ] - }, - "flag8thUpStraight": { - "stemUpNW": [ - 0.0, - -0.22 - ] - }, - "gClefLigatedNumberAbove": { - "numeralBottom": [ - 2.224, - 3.468 - ] - }, - "gClefLigatedNumberBelow": { - "numeralBottom": [ - 1.052, - -2.616 - ] - }, - "guitarVibratoStroke": { - "repeatOffset": [ - 0.608, - 0.0 - ] - }, - "guitarWideVibratoStroke": { - "repeatOffset": [ - 0.82, - 0.0 - ] - }, - "noteABlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.432, - 0.188 - ] - }, - "noteAFlatBlack": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.432, - 0.184 - ] - }, - "noteAFlatHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.192 - ] - }, - "noteAHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteASharpBlack": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.432, - 0.184 - ] - }, - "noteASharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteBBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteBFlatBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteBFlatHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteBHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteBSharpBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.428, - 0.192 - ] - }, - "noteBSharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteCBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteCFlatBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteCFlatHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteCHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteCSharpBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.428, - 0.192 - ] - }, - "noteCSharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteDBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteDFlatBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteDFlatHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteDHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteDSharpBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteDSharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteDoBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteDoHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteEBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.432, - 0.188 - ] - }, - "noteEFlatBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteEFlatHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteEHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteESharpBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteESharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteEmptyBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.432, - 0.188 - ] - }, - "noteEmptyHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteFBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.432, - 0.188 - ] - }, - "noteFFlatBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.428, - 0.192 - ] - }, - "noteFFlatHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.192 - ] - }, - "noteFHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteFSharpBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteFSharpHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.192 - ] - }, - "noteFaBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteFaHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteGBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteGFlatBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteGFlatHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.192 - ] - }, - "noteGHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteGSharpBlack": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.428, - 0.188 - ] - }, - "noteGSharpHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteHBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteHHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteHSharpBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteHSharpHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteLaBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteLaHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteMiBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteMiHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.44, - 0.192 - ] - }, - "noteReBlack": { - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.432, - 0.192 - ] - }, - "noteReHalf": { - "stemDownNW": [ - 0.0, - -0.188 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteShapeDiamondBlack": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.308, - 0.0 - ] - }, - "noteShapeDiamondWhite": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.312, - 0.0 - ] - }, - "noteShapeMoonBlack": { - "stemDownNW": [ - 0.0, - 0.068 - ], - "stemUpSE": [ - 1.516, - 0.068 - ] - }, - "noteShapeMoonWhite": { - "stemDownNW": [ - 0.0, - 0.072 - ], - "stemUpSE": [ - 1.516, - 0.068 - ] - }, - "noteShapeRoundBlack": { - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.18, - 0.168 - ] - }, - "noteShapeRoundWhite": { - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.18, - 0.168 - ] - }, - "noteShapeSquareBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.44, - 0.5 - ] - }, - "noteShapeSquareWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.44, - 0.5 - ] - }, - "noteShapeTriangleLeftBlack": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.44, - 0.5 - ] - }, - "noteShapeTriangleLeftWhite": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.44, - 0.5 - ] - }, - "noteShapeTriangleRightBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.44, - -0.5 - ] - }, - "noteShapeTriangleRightWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.44, - -0.5 - ] - }, - "noteShapeTriangleRoundBlack": { - "stemDownNW": [ - 0.0, - 0.172 - ], - "stemUpSE": [ - 1.424, - 0.172 - ] - }, - "noteShapeTriangleRoundWhite": { - "stemDownNW": [ - 0.0, - 0.172 - ], - "stemUpSE": [ - 1.424, - 0.172 - ] - }, - "noteShapeTriangleUpBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.424, - -0.5 - ] - }, - "noteShapeTriangleUpWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.424, - -0.5 - ] - }, - "noteSiBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteSiHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.44, - 0.196 - ] - }, - "noteSoBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteSoHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteTiBlack": { - "stemDownNW": [ - 0.0, - -0.18 - ], - "stemUpSE": [ - 1.432, - 0.196 - ] - }, - "noteTiHalf": { - "stemDownNW": [ - 0.0, - -0.192 - ], - "stemUpSE": [ - 1.444, - 0.196 - ] - }, - "noteheadBlack": { - "splitStemDownNE": [ - 0.968, - -0.248 - ], - "splitStemDownNW": [ - 0.12, - -0.416 - ], - "splitStemUpSE": [ - 1.092, - 0.392 - ], - "splitStemUpSW": [ - 0.312, - 0.356 - ], - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.18, - 0.168 - ] - }, - "noteheadBlackOversized": { - "splitStemDownNE": [ - 1.056, - -0.312 - ], - "splitStemDownNW": [ - 0.1, - -0.436 - ], - "splitStemUpSE": [ - 1.256, - 0.412 - ], - "splitStemUpSW": [ - 0.308, - 0.372 - ], - "stemDownNW": [ - 0.0, - -0.184 - ], - "stemUpSE": [ - 1.328, - 0.184 - ] - }, - "noteheadBlackSmall": { - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.408, - 0.156 - ] - }, - "noteheadCircleSlash": { - "stemDownNW": [ - 0.004, - 0.0 - ], - "stemUpSE": [ - 1.0, - 0.0 - ] - }, - "noteheadCircleX": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 0.996, - 0.0 - ] - }, - "noteheadCircleXDoubleWhole": { - "noteheadOrigin": [ - 0.352, - 0.0 - ] - }, - "noteheadCircleXHalf": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.0, - 0.0 - ] - }, - "noteheadCircledBlack": { - "stemDownNW": [ - 0.084, - -0.164 - ], - "stemUpSE": [ - 1.264, - 0.168 - ] - }, - "noteheadCircledBlackLarge": { - "stemDownNW": [ - 0.004, - 0.0 - ], - "stemUpSE": [ - 1.66, - 0.0 - ] - }, - "noteheadCircledDoubleWhole": { - "noteheadOrigin": [ - 0.356, - 0.0 - ] - }, - "noteheadCircledDoubleWholeLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.216, - -0.004 - ] - }, - "noteheadCircledHalf": { - "stemDownNW": [ - 0.072, - -0.144 - ], - "stemUpSE": [ - 1.244, - 0.156 - ] - }, - "noteheadCircledHalfLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.612, - 0.0 - ] - }, - "noteheadCircledWholeLarge": { - "stemDownNW": [ - 0.0, - -0.004 - ], - "stemUpSE": [ - 2.164, - -0.004 - ] - }, - "noteheadCircledXLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.828, - 0.0 - ] - }, - "noteheadClusterDoubleWhole2nd": { - "noteheadOrigin": [ - 0.36, - 0.0 - ] - }, - "noteheadClusterDoubleWhole3rd": { - "noteheadOrigin": [ - 0.364, - 0.0 - ] - }, - "noteheadClusterHalf2nd": { - "stemDownNW": [ - 0.0, - -0.16 - ], - "stemUpSE": [ - 1.24, - 0.652 - ] - }, - "noteheadClusterHalf3rd": { - "stemDownNW": [ - 0.0, - -0.164 - ], - "stemUpSE": [ - 1.264, - 1.144 - ] - }, - "noteheadClusterHalfBottom": { - "stemDownNW": [ - 0.0, - -0.164 - ] - }, - "noteheadClusterHalfTop": { - "stemUpSE": [ - 1.196, - 0.16 - ] - }, - "noteheadClusterQuarter2nd": { - "stemDownNW": [ - 0.0, - 0.06 - ], - "stemUpSE": [ - 1.308, - 0.448 - ] - }, - "noteheadClusterQuarter3rd": { - "stemDownNW": [ - 0.0, - 0.26 - ], - "stemUpSE": [ - 1.44, - 0.744 - ] - }, - "noteheadClusterQuarterBottom": { - "stemDownNW": [ - 0.0, - -0.2 - ] - }, - "noteheadClusterQuarterTop": { - "stemUpSE": [ - 1.18, - 0.168 - ] - }, - "noteheadClusterRoundBlack": { - "stemDownNW": [ - 0.0, - 0.344 - ], - "stemUpSE": [ - 1.328, - 2.624 - ] - }, - "noteheadClusterRoundWhite": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.496, - 2.552 - ] - }, - "noteheadClusterSquareBlack": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.328, - 3.0 - ] - }, - "noteheadClusterSquareWhite": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.328, - 3.0 - ] - }, - "noteheadDiamondBlack": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.0, - 0.0 - ] - }, - "noteheadDiamondBlackOld": { - "stemDownNW": [ - 0.0, - -0.008 - ], - "stemUpSE": [ - 1.16, - -0.012 - ] - }, - "noteheadDiamondBlackWide": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.4, - 0.0 - ] - }, - "noteheadDiamondClusterBlack2nd": { - "stemDownNW": [ - 0.0, - 0.516 - ], - "stemUpSE": [ - 1.068, - 0.984 - ] - }, - "noteheadDiamondClusterBlack3rd": { - "stemDownNW": [ - 0.0, - 0.528 - ], - "stemUpSE": [ - 1.096, - 1.472 - ] - }, - "noteheadDiamondClusterBlackBottom": { - "stemDownNW": [ - 0.0, - 0.08 - ] - }, - "noteheadDiamondClusterBlackTop": { - "stemUpSE": [ - 1.372, - -0.212 - ] - }, - "noteheadDiamondClusterWhite2nd": { - "stemDownNW": [ - 0.0, - 0.524 - ], - "stemUpSE": [ - 1.06, - 0.98 - ] - }, - "noteheadDiamondClusterWhite3rd": { - "stemDownNW": [ - 0.0, - 0.532 - ], - "stemUpSE": [ - 1.092, - 1.468 - ] - }, - "noteheadDiamondClusterWhiteBottom": { - "stemDownNW": [ - 0.0, - 0.06 - ] - }, - "noteheadDiamondClusterWhiteTop": { - "stemUpSE": [ - 1.168, - -0.064 - ] - }, - "noteheadDiamondDoubleWhole": { - "noteheadOrigin": [ - 0.324, - 0.0 - ] - }, - "noteheadDiamondDoubleWholeOld": { - "noteheadOrigin": [ - 0.388, - 0.0 - ] - }, - "noteheadDiamondHalf": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.004, - 0.0 - ] - }, - "noteheadDiamondHalfFilled": { - "stemDownNW": [ - 0.0, - -0.004 - ], - "stemUpSE": [ - 1.156, - -0.016 - ] - }, - "noteheadDiamondHalfOld": { - "stemDownNW": [ - 0.0, - -0.008 - ], - "stemUpSE": [ - 1.164, - -0.012 - ] - }, - "noteheadDiamondHalfWide": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.404, - 0.0 - ] - }, - "noteheadDiamondOpen": { - "stemDownNW": [ - 0.0, - 0.028 - ], - "stemUpSE": [ - 1.152, - -0.02 - ] - }, - "noteheadDiamondWhite": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.0, - 0.0 - ] - }, - "noteheadDiamondWhiteWide": { - "stemDownNW": [ - 0.0, - 0.004 - ], - "stemUpSE": [ - 1.4, - 0.0 - ] - }, - "noteheadDoubleWhole": { - "noteheadOrigin": [ - 0.36, - 0.0 - ] - }, - "noteheadDoubleWholeOversized": { - "noteheadOrigin": [ - 0.392, - 0.0 - ] - }, - "noteheadDoubleWholeWithX": { - "noteheadOrigin": [ - 0.356, - 0.0 - ] - }, - "noteheadHalf": { - "splitStemDownNE": [ - 0.956, - -0.3 - ], - "splitStemDownNW": [ - 0.128, - -0.428 - ], - "splitStemUpSE": [ - 1.108, - 0.372 - ], - "splitStemUpSW": [ - 0.328, - 0.38 - ], - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.18, - 0.168 - ] - }, - "noteheadHalfOversized": { - "splitStemDownNE": [ - 1.056, - -0.388 - ], - "splitStemDownNW": [ - 0.1, - -0.452 - ], - "splitStemUpSE": [ - 1.256, - 0.456 - ], - "splitStemUpSW": [ - 0.316, - 0.396 - ], - "stemDownNW": [ - 0.0, - -0.196 - ], - "stemUpSE": [ - 1.364, - 0.192 - ] - }, - "noteheadHalfSmall": { - "stemDownNW": [ - 0.0, - -0.196 - ], - "stemUpSE": [ - 1.364, - 0.192 - ] - }, - "noteheadHalfWithX": { - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.176, - 0.164 - ] - }, - "noteheadHeavyX": { - "stemDownNW": [ - 0.0, - -0.436 - ], - "stemUpSE": [ - 1.54, - 0.44 - ] - }, - "noteheadHeavyXHat": { - "stemDownNW": [ - 0.0, - -0.436 - ], - "stemUpSE": [ - 1.54, - 0.456 - ] - }, - "noteheadLargeArrowDownBlack": { - "stemDownNW": [ - 0.0, - 1.0 - ], - "stemUpSE": [ - 1.328, - 1.0 - ] - }, - "noteheadLargeArrowDownDoubleWhole": { - "noteheadOrigin": [ - 0.388, - 0.0 - ] - }, - "noteheadLargeArrowDownHalf": { - "stemDownNW": [ - 0.0, - 0.948 - ], - "stemUpSE": [ - 1.44, - 0.944 - ] - }, - "noteheadLargeArrowUpBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.328, - -0.5 - ] - }, - "noteheadLargeArrowUpDoubleWhole": { - "noteheadOrigin": [ - 0.388, - 0.0 - ] - }, - "noteheadLargeArrowUpHalf": { - "stemDownNW": [ - 0.0, - -0.444 - ], - "stemUpSE": [ - 1.44, - -0.444 - ] - }, - "noteheadMoonBlack": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.26, - 0.0 - ] - }, - "noteheadMoonWhite": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.26, - 0.0 - ] - }, - "noteheadPlusBlack": { - "stemDownNW": [ - -0.004, - 0.0 - ], - "stemUpSE": [ - 0.996, - 0.0 - ] - }, - "noteheadPlusDoubleWhole": { - "noteheadOrigin": [ - 0.372, - 0.0 - ] - }, - "noteheadPlusHalf": { - "stemDownNW": [ - 0.0, - -0.112 - ], - "stemUpSE": [ - 1.188, - 0.104 - ] - }, - "noteheadRoundBlack": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.004, - 0.0 - ] - }, - "noteheadRoundBlackLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.0, - 0.0 - ] - }, - "noteheadRoundBlackSlashed": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 0.996, - 0.0 - ] - }, - "noteheadRoundBlackSlashedLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.004, - 0.0 - ] - }, - "noteheadRoundWhite": { - "stemDownNW": [ - 0.004, - 0.0 - ], - "stemUpSE": [ - 1.004, - 0.0 - ] - }, - "noteheadRoundWhiteLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.0, - 0.0 - ] - }, - "noteheadRoundWhiteSlashed": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 0.996, - 0.0 - ] - }, - "noteheadRoundWhiteSlashedLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.004, - 0.0 - ] - }, - "noteheadRoundWhiteWithDot": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.004, - 0.0 - ] - }, - "noteheadRoundWhiteWithDotLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.004, - 0.0 - ] - }, - "noteheadSlashDiamondWhite": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.0, - 0.0 - ] - }, - "noteheadSlashHorizontalEnds": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 2.12, - 1.0 - ] - }, - "noteheadSlashHorizontalEndsMuted": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 2.12, - 1.0 - ] - }, - "noteheadSlashVerticalEnds": { - "stemDownNW": [ - 0.0, - -0.664 - ], - "stemUpSE": [ - 1.46, - 0.656 - ] - }, - "noteheadSlashVerticalEndsMuted": { - "stemDownNW": [ - 0.0, - -0.664 - ], - "stemUpSE": [ - 1.46, - 0.656 - ] - }, - "noteheadSlashVerticalEndsSmall": { - "stemDownNW": [ - 0.0, - -0.256 - ], - "stemUpSE": [ - 0.732, - 0.244 - ] - }, - "noteheadSlashWhiteHalf": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 3.12, - 1.0 - ] - }, - "noteheadSlashWhiteMuted": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 3.12, - 1.0 - ] - }, - "noteheadSlashX": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 2.12, - 1.0 - ] - }, - "noteheadSlashedBlack1": { - "stemDownNW": [ - 0.0, - -0.172 - ], - "stemUpSE": [ - 1.18, - 0.164 - ] - }, - "noteheadSlashedBlack2": { - "stemDownNW": [ - 0.0, - -0.172 - ], - "stemUpSE": [ - 1.18, - 0.164 - ] - }, - "noteheadSlashedDoubleWhole1": { - "noteheadOrigin": [ - 0.356, - 0.0 - ] - }, - "noteheadSlashedDoubleWhole2": { - "noteheadOrigin": [ - 0.356, - 0.0 - ] - }, - "noteheadSlashedHalf1": { - "stemDownNW": [ - 0.0, - -0.168 - ], - "stemUpSE": [ - 1.168, - 0.164 - ] - }, - "noteheadSlashedHalf2": { - "stemDownNW": [ - 0.0, - -0.164 - ], - "stemUpSE": [ - 1.172, - 0.168 - ] - }, - "noteheadSquareBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.252, - 0.5 - ] - }, - "noteheadSquareBlackLarge": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 2.0, - 0.0 - ] - }, - "noteheadSquareBlackWhite": { - "stemDownNW": [ - 0.0, - -1.0 - ], - "stemUpSE": [ - 2.0, - 1.0 - ] - }, - "noteheadSquareWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.252, - 0.5 - ] - }, - "noteheadTriangleDownBlack": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.168, - 0.5 - ] - }, - "noteheadTriangleDownDoubleWhole": { - "noteheadOrigin": [ - 0.384, - 0.0 - ] - }, - "noteheadTriangleDownHalf": { - "stemDownNW": [ - 0.0, - 0.464 - ], - "stemUpSE": [ - 1.14, - 0.464 - ] - }, - "noteheadTriangleDownWhite": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.172, - 0.5 - ] - }, - "noteheadTriangleLeftBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.356, - -0.5 - ] - }, - "noteheadTriangleLeftWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.356, - -0.5 - ] - }, - "noteheadTriangleRightBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.356, - 0.5 - ] - }, - "noteheadTriangleRightWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.356, - 0.5 - ] - }, - "noteheadTriangleRoundDownBlack": { - "stemDownNW": [ - 0.0, - 0.312 - ], - "stemUpSE": [ - 1.112, - 0.312 - ] - }, - "noteheadTriangleRoundDownWhite": { - "stemDownNW": [ - 0.0, - 0.312 - ], - "stemUpSE": [ - 1.112, - 0.312 - ] - }, - "noteheadTriangleUpBlack": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.172, - -0.5 - ] - }, - "noteheadTriangleUpDoubleWhole": { - "noteheadOrigin": [ - 0.34, - 0.0 - ] - }, - "noteheadTriangleUpHalf": { - "stemDownNW": [ - 0.0, - -0.46 - ], - "stemUpSE": [ - 1.14, - -0.46 - ] - }, - "noteheadTriangleUpRightBlack": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.356, - 0.5 - ] - }, - "noteheadTriangleUpRightWhite": { - "stemDownNW": [ - 0.0, - 0.5 - ], - "stemUpSE": [ - 1.356, - 0.5 - ] - }, - "noteheadTriangleUpWhite": { - "stemDownNW": [ - 0.0, - -0.5 - ], - "stemUpSE": [ - 1.172, - -0.5 - ] - }, - "noteheadVoidWithX": { - "stemDownNW": [ - 0.0, - -0.148 - ], - "stemUpSE": [ - 1.156, - 0.148 - ] - }, - "noteheadXBlack": { - "stemDownNW": [ - 0.0, - -0.44 - ], - "stemUpSE": [ - 1.16, - 0.444 - ] - }, - "noteheadXDoubleWhole": { - "noteheadOrigin": [ - 0.348, - 0.0 - ] - }, - "noteheadXHalf": { - "stemDownNW": [ - 0.0, - -0.412 - ], - "stemUpSE": [ - 1.336, - 0.412 - ] - }, - "noteheadXOrnate": { - "stemDownNW": [ - 0.0, - -0.312 - ], - "stemUpSE": [ - 0.988, - 0.316 - ] - }, - "noteheadXOrnateEllipse": { - "stemDownNW": [ - 0.0, - 0.0 - ], - "stemUpSE": [ - 1.532, - 0.0 - ] - }, - "ornamentBottomLeftConcaveStroke": { - "repeatOffset": [ - 0.46, - 0.0 - ] - }, - "ornamentBottomLeftConcaveStrokeLarge": { - "repeatOffset": [ - 1.912, - 0.0 - ] - }, - "ornamentBottomLeftConvexStroke": { - "repeatOffset": [ - 1.624, - 0.0 - ] - }, - "ornamentHighLeftConcaveStroke": { - "repeatOffset": [ - 1.716, - 0.0 - ] - }, - "ornamentHighLeftConvexStroke": { - "repeatOffset": [ - 1.112, - 0.0 - ] - }, - "ornamentLeftPlus": { - "repeatOffset": [ - 2.784, - 0.0 - ] - }, - "ornamentLeftShakeT": { - "repeatOffset": [ - 0.924, - 0.0 - ] - }, - "ornamentLeftVerticalStroke": { - "repeatOffset": [ - 0.74, - 0.0 - ] - }, - "ornamentLeftVerticalStrokeWithCross": { - "repeatOffset": [ - 1.152, - 0.0 - ] - }, - "ornamentLowLeftConcaveStroke": { - "repeatOffset": [ - 1.532, - 0.0 - ] - }, - "ornamentLowLeftConvexStroke": { - "repeatOffset": [ - 1.344, - 0.0 - ] - }, - "ornamentMiddleVerticalStroke": { - "repeatOffset": [ - 0.004, - 0.0 - ] - }, - "ornamentTopLeftConcaveStroke": { - "repeatOffset": [ - 1.396, - 0.0 - ] - }, - "ornamentTopLeftConvexStroke": { - "repeatOffset": [ - 1.132, - 0.0 - ] - }, - "ornamentZigZagLineNoRightEnd": { - "repeatOffset": [ - 1.048, - 0.0 - ] - }, - "ornamentZigZagLineWithRightEnd": { - "repeatOffset": [ - 1.428, - 0.0 - ] - }, - "wiggleArpeggiatoDown": { - "repeatOffset": [ - 1.02, - 0.0 - ] - }, - "wiggleArpeggiatoDownArrow": { - "repeatOffset": [ - 2.064, - 0.0 - ] - }, - "wiggleArpeggiatoDownSwash": { - "repeatOffset": [ - 1.784, - 0.0 - ] - }, - "wiggleArpeggiatoUp": { - "repeatOffset": [ - 1.02, - 0.0 - ] - }, - "wiggleArpeggiatoUpArrow": { - "repeatOffset": [ - 2.064, - 0.0 - ] - }, - "wiggleArpeggiatoUpSwash": { - "repeatOffset": [ - 2.116, - 0.0 - ] - }, - "wiggleCircular": { - "repeatOffset": [ - 1.836, - 0.0 - ] - }, - "wiggleCircularConstant": { - "repeatOffset": [ - 1.072, - 0.0 - ] - }, - "wiggleCircularConstantFlipped": { - "repeatOffset": [ - 1.072, - 0.0 - ] - }, - "wiggleCircularConstantFlippedLarge": { - "repeatOffset": [ - 2.184, - 0.0 - ] - }, - "wiggleCircularConstantLarge": { - "repeatOffset": [ - 2.184, - 0.0 - ] - }, - "wiggleCircularEnd": { - "repeatOffset": [ - 0.648, - 0.0 - ] - }, - "wiggleCircularLarge": { - "repeatOffset": [ - 1.724, - 0.0 - ] - }, - "wiggleCircularLarger": { - "repeatOffset": [ - 2.332, - 0.0 - ] - }, - "wiggleCircularLargerStill": { - "repeatOffset": [ - 2.964, - 0.0 - ] - }, - "wiggleCircularLargest": { - "repeatOffset": [ - 4.592, - 0.0 - ] - }, - "wiggleCircularSmall": { - "repeatOffset": [ - 1.34, - 0.0 - ] - }, - "wiggleCircularStart": { - "repeatOffset": [ - 1.92, - 0.0 - ] - }, - "wiggleGlissando": { - "repeatOffset": [ - 1.032, - 0.0 - ] - }, - "wiggleGlissandoGroup1": { - "repeatOffset": [ - 1.224, - 0.0 - ] - }, - "wiggleGlissandoGroup2": { - "repeatOffset": [ - 0.5, - 0.0 - ] - }, - "wiggleGlissandoGroup3": { - "repeatOffset": [ - 0.5, - 0.0 - ] - }, - "wiggleRandom1": { - "repeatOffset": [ - 7.976, - 0.0 - ] - }, - "wiggleRandom2": { - "repeatOffset": [ - 7.976, - 0.0 - ] - }, - "wiggleRandom3": { - "repeatOffset": [ - 7.976, - 0.0 - ] - }, - "wiggleRandom4": { - "repeatOffset": [ - 7.976, - 0.0 - ] - }, - "wiggleSawtooth": { - "repeatOffset": [ - 2.992, - 0.0 - ] - }, - "wiggleSawtoothNarrow": { - "repeatOffset": [ - 1.996, - 0.0 - ] - }, - "wiggleSawtoothWide": { - "repeatOffset": [ - 4.0, - 0.0 - ] - }, - "wiggleSquareWave": { - "repeatOffset": [ - 3.0, - 0.0 - ] - }, - "wiggleSquareWaveNarrow": { - "repeatOffset": [ - 2.0, - 0.0 - ] - }, - "wiggleSquareWaveWide": { - "repeatOffset": [ - 4.0, - 0.0 - ] - }, - "wiggleTrill": { - "repeatOffset": [ - 0.948, - 0.0 - ] - }, - "wiggleTrillFast": { - "repeatOffset": [ - 0.804, - 0.0 - ] - }, - "wiggleTrillFaster": { - "repeatOffset": [ - 0.612, - 0.0 - ] - }, - "wiggleTrillFasterStill": { - "repeatOffset": [ - 0.512, - 0.0 - ] - }, - "wiggleTrillFastest": { - "repeatOffset": [ - 0.52, - 0.0 - ] - }, - "wiggleTrillSlow": { - "repeatOffset": [ - 1.088, - 0.0 - ] - }, - "wiggleTrillSlower": { - "repeatOffset": [ - 1.3, - 0.0 - ] - }, - "wiggleTrillSlowerStill": { - "repeatOffset": [ - 1.46, - 0.0 - ] - }, - "wiggleTrillSlowest": { - "repeatOffset": [ - 2.016, - 0.0 - ] - }, - "wiggleVIbratoLargestSlower": { - "repeatOffset": [ - 3.828, - 0.0 - ] - }, - "wiggleVIbratoMediumSlower": { - "repeatOffset": [ - 1.688, - 0.0 - ] - }, - "wiggleVibrato": { - "repeatOffset": [ - 0.608, - 0.0 - ] - }, - "wiggleVibratoLargeFast": { - "repeatOffset": [ - 1.76, - 0.0 - ] - }, - "wiggleVibratoLargeFaster": { - "repeatOffset": [ - 1.504, - 0.0 - ] - }, - "wiggleVibratoLargeFasterStill": { - "repeatOffset": [ - 1.264, - 0.0 - ] - }, - "wiggleVibratoLargeFastest": { - "repeatOffset": [ - 1.044, - 0.0 - ] - }, - "wiggleVibratoLargeSlow": { - "repeatOffset": [ - 2.156, - 0.0 - ] - }, - "wiggleVibratoLargeSlower": { - "repeatOffset": [ - 2.592, - 0.0 - ] - }, - "wiggleVibratoLargeSlowest": { - "repeatOffset": [ - 3.052, - 0.0 - ] - }, - "wiggleVibratoLargestFast": { - "repeatOffset": [ - 2.656, - 0.0 - ] - }, - "wiggleVibratoLargestFaster": { - "repeatOffset": [ - 2.244, - 0.0 - ] - }, - "wiggleVibratoLargestFasterStill": { - "repeatOffset": [ - 1.884, - 0.0 - ] - }, - "wiggleVibratoLargestFastest": { - "repeatOffset": [ - 1.54, - 0.0 - ] - }, - "wiggleVibratoLargestSlow": { - "repeatOffset": [ - 3.164, - 0.0 - ] - }, - "wiggleVibratoLargestSlowest": { - "repeatOffset": [ - 4.536, - 0.0 - ] - }, - "wiggleVibratoMediumFast": { - "repeatOffset": [ - 1.18, - 0.0 - ] - }, - "wiggleVibratoMediumFaster": { - "repeatOffset": [ - 0.968, - 0.0 - ] - }, - "wiggleVibratoMediumFasterStill": { - "repeatOffset": [ - 0.828, - 0.0 - ] - }, - "wiggleVibratoMediumFastest": { - "repeatOffset": [ - 0.74, - 0.0 - ] - }, - "wiggleVibratoMediumSlow": { - "repeatOffset": [ - 1.384, - 0.0 - ] - }, - "wiggleVibratoMediumSlowest": { - "repeatOffset": [ - 2.0, - 0.0 - ] - }, - "wiggleVibratoSmallFast": { - "repeatOffset": [ - 0.86, - 0.0 - ] - }, - "wiggleVibratoSmallFaster": { - "repeatOffset": [ - 0.716, - 0.0 - ] - }, - "wiggleVibratoSmallFasterStill": { - "repeatOffset": [ - 0.62, - 0.0 - ] - }, - "wiggleVibratoSmallFastest": { - "repeatOffset": [ - 0.544, - 0.0 - ] - }, - "wiggleVibratoSmallSlow": { - "repeatOffset": [ - 1.008, - 0.0 - ] - }, - "wiggleVibratoSmallSlower": { - "repeatOffset": [ - 1.164, - 0.0 - ] - }, - "wiggleVibratoSmallSlowest": { - "repeatOffset": [ - 1.5, - 0.0 - ] - }, - "wiggleVibratoSmallestFast": { - "repeatOffset": [ - 0.7, - 0.0 - ] - }, - "wiggleVibratoSmallestFaster": { - "repeatOffset": [ - 0.584, - 0.0 - ] - }, - "wiggleVibratoSmallestFasterStill": { - "repeatOffset": [ - 0.536, - 0.0 - ] - }, - "wiggleVibratoSmallestFastest": { - "repeatOffset": [ - 0.48, - 0.0 - ] - }, - "wiggleVibratoSmallestSlow": { - "repeatOffset": [ - 0.832, - 0.0 - ] - }, - "wiggleVibratoSmallestSlower": { - "repeatOffset": [ - 0.988, - 0.0 - ] - }, - "wiggleVibratoSmallestSlowest": { - "repeatOffset": [ - 1.148, - 0.0 - ] - }, - "wiggleVibratoStart": { - "repeatOffset": [ - 1.808, - 0.0 - ] - }, - "wiggleVibratoWide": { - "repeatOffset": [ - 0.82, - 0.0 - ] - }, - "wiggleWavy": { - "repeatOffset": [ - 3.0, - 0.0 - ] - }, - "wiggleWavyNarrow": { - "repeatOffset": [ - 2.0, - 0.0 - ] - }, - "wiggleWavyWide": { - "repeatOffset": [ - 4.0, - 0.0 - ] - } - }, - - "ligatures": { - "accidentalDoubleFlatParens": { - "codepoint": "U+F566", - "componentGlyphs": [ - "accidentalParensLeft", - "accidentalDoubleFlat", - "accidentalParensRight" - ] - }, - "accidentalDoubleSharpParens": { - "codepoint": "U+F565", - "componentGlyphs": [ - "accidentalParensLeft", - "accidentalDoubleSharp", - "accidentalParensRight" - ] - }, - "accidentalFlatJohnstonDown": { - "codepoint": "U+F56C", - "componentGlyphs": [ - "accidentalFlat", - "accidentalJohnstonDown" - ] - }, - "accidentalFlatJohnstonEl": { - "codepoint": "U+F56A", - "componentGlyphs": [ - "accidentalFlat", - "accidentalJohnstonEl" - ] - }, - "accidentalFlatJohnstonElDown": { - "codepoint": "U+F578", - "componentGlyphs": [ - "accidentalFlat", - "accidentalJohnstonEl", - "accidentalJohnstonDown" - ] - }, - "accidentalFlatJohnstonUp": { - "codepoint": "U+F56B", - "componentGlyphs": [ - "accidentalFlat", - "accidentalJohnstonUp" - ] - }, - "accidentalFlatJohnstonUpEl": { - "codepoint": "U+F577", - "componentGlyphs": [ - "accidentalFlat", - "accidentalJohnstonUp", - "accidentalJohnstonEl" - ] - }, - "accidentalFlatParens": { - "codepoint": "U+F562", - "componentGlyphs": [ - "accidentalParensLeft", - "accidentalFlat", - "accidentalParensRight" - ] - }, - "accidentalJohnstonDownEl": { - "codepoint": "U+F572", - "componentGlyphs": [ - "accidentalJohnstonDown", - "accidentalJohnstonEl" - ] - }, - "accidentalJohnstonSevenDown": { - "codepoint": "U+F570", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalJohnstonDown" - ] - }, - "accidentalJohnstonSevenFlat": { - "codepoint": "U+F56E", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalFlat" - ] - }, - "accidentalJohnstonSevenFlatDown": { - "codepoint": "U+F57A", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalFlat", - "accidentalJohnstonDown" - ] - }, - "accidentalJohnstonSevenFlatUp": { - "codepoint": "U+F579", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalFlat", - "accidentalJohnstonUp" - ] - }, - "accidentalJohnstonSevenSharp": { - "codepoint": "U+F56D", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalSharp" - ] - }, - "accidentalJohnstonSevenSharpDown": { - "codepoint": "U+F576", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalSharp", - "accidentalJohnstonDown" - ] - }, - "accidentalJohnstonSevenSharpUp": { - "codepoint": "U+F575", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalSharp", - "accidentalJohnstonUp" - ] - }, - "accidentalJohnstonSevenUp": { - "codepoint": "U+F56F", - "componentGlyphs": [ - "accidentalJohnstonSeven", - "accidentalJohnstonUp" - ] - }, - "accidentalJohnstonUpEl": { - "codepoint": "U+F571", - "componentGlyphs": [ - "accidentalJohnstonUp", - "accidentalJohnstonEl" - ] - }, - "accidentalNaturalParens": { - "codepoint": "U+F563", - "componentGlyphs": [ - "accidentalParensLeft", - "accidentalNatural", - "accidentalParensRight" - ] - }, - "accidentalSharpJohnstonDown": { - "codepoint": "U+F569", - "componentGlyphs": [ - "accidentalSharp", - "accidentalJohnstonDown" - ] - }, - "accidentalSharpJohnstonDownEl": { - "codepoint": "U+F574", - "componentGlyphs": [ - "accidentalSharp", - "accidentalJohnstonDown", - "accidentalJohnstonEl" - ] - }, - "accidentalSharpJohnstonEl": { - "codepoint": "U+F567", - "componentGlyphs": [ - "accidentalSharp", - "accidentalJohnstonEl" - ] - }, - "accidentalSharpJohnstonUp": { - "codepoint": "U+F568", - "componentGlyphs": [ - "accidentalSharp", - "accidentalJohnstonUp" - ] - }, - "accidentalSharpJohnstonUpEl": { - "codepoint": "U+F573", - "componentGlyphs": [ - "accidentalSharp", - "accidentalJohnstonUp", - "accidentalJohnstonEl" - ] - }, - "accidentalSharpParens": { - "codepoint": "U+F564", - "componentGlyphs": [ - "accidentalParensLeft", - "accidentalSharp", - "accidentalParensRight" - ] - }, - "fClef5Below": { - "codepoint": "U+F4BF", - "componentGlyphs": [ - "fClef", - "tuplet5" - ] - }, - "gClef0Below": { - "codepoint": "U+F4C0", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet0" - ] - }, - "gClef10Below": { - "codepoint": "U+F4C1", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet0" - ] - }, - "gClef11Below": { - "codepoint": "U+F4C2", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet1" - ] - }, - "gClef12Below": { - "codepoint": "U+F4C3", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet2" - ] - }, - "gClef13Below": { - "codepoint": "U+F4C4", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet3" - ] - }, - "gClef14Below": { - "codepoint": "U+F4C5", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet4" - ] - }, - "gClef15Below": { - "codepoint": "U+F4C6", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet5" - ] - }, - "gClef16Below": { - "codepoint": "U+F4C7", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet6" - ] - }, - "gClef17Below": { - "codepoint": "U+F4C8", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet7" - ] - }, - "gClef2Above": { - "codepoint": "U+F4C9", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet2" - ] - }, - "gClef2Below": { - "codepoint": "U+F4CA", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet2" - ] - }, - "gClef3Above": { - "codepoint": "U+F4CB", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet3" - ] - }, - "gClef3Below": { - "codepoint": "U+F4CC", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet3" - ] - }, - "gClef4Above": { - "codepoint": "U+F4CD", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet4" - ] - }, - "gClef4Below": { - "codepoint": "U+F4CE", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet4" - ] - }, - "gClef5Above": { - "codepoint": "U+F4CF", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet5" - ] - }, - "gClef5Below": { - "codepoint": "U+F4D0", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet5" - ] - }, - "gClef6Above": { - "codepoint": "U+F4D1", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet6" - ] - }, - "gClef6Below": { - "codepoint": "U+F4D2", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet6" - ] - }, - "gClef7Above": { - "codepoint": "U+F4D3", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet7" - ] - }, - "gClef7Below": { - "codepoint": "U+F4D4", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet7" - ] - }, - "gClef8Above": { - "codepoint": "U+F4D5", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet8" - ] - }, - "gClef8Below": { - "codepoint": "U+F4D6", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet8" - ] - }, - "gClef9Above": { - "codepoint": "U+F4D7", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet9" - ] - }, - "gClef9Below": { - "codepoint": "U+F4D8", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet9" - ] - }, - "gClefFlat10Below": { - "codepoint": "U+F4D9", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet0", - "accidentalFlat" - ] - }, - "gClefFlat11Below": { - "codepoint": "U+F4DA", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet1", - "accidentalFlat" - ] - }, - "gClefFlat13Below": { - "codepoint": "U+F4DB", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet3", - "accidentalFlat" - ] - }, - "gClefFlat14Below": { - "codepoint": "U+F4DC", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet4", - "accidentalFlat" - ] - }, - "gClefFlat15Below": { - "codepoint": "U+F4DD", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet5", - "accidentalFlat" - ] - }, - "gClefFlat16Below": { - "codepoint": "U+F4DE", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet6", - "accidentalFlat" - ] - }, - "gClefFlat1Below": { - "codepoint": "U+F4DF", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet1" - ] - }, - "gClefFlat2Above": { - "codepoint": "U+F4E0", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet2", - "accidentalFlat" - ] - }, - "gClefFlat2Below": { - "codepoint": "U+F4E1", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet2" - ] - }, - "gClefFlat3Above": { - "codepoint": "U+F4E2", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet3", - "accidentalFlat" - ] - }, - "gClefFlat3Below": { - "codepoint": "U+F4E3", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet3" - ] - }, - "gClefFlat4Below": { - "codepoint": "U+F4E4", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet4" - ] - }, - "gClefFlat5Above": { - "codepoint": "U+F4E5", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet5", - "accidentalFlat" - ] - }, - "gClefFlat6Above": { - "codepoint": "U+F4E6", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet6", - "accidentalFlat" - ] - }, - "gClefFlat6Below": { - "codepoint": "U+F4E7", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet6" - ] - }, - "gClefFlat7Above": { - "codepoint": "U+F4E8", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet7", - "accidentalFlat" - ] - }, - "gClefFlat7Below": { - "codepoint": "U+F4E9", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet7" - ] - }, - "gClefFlat8Above": { - "codepoint": "U+F4EA", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet8", - "accidentalFlat" - ] - }, - "gClefFlat9Above": { - "codepoint": "U+F4EB", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet9", - "accidentalFlat" - ] - }, - "gClefFlat9Below": { - "codepoint": "U+F4EC", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalFlat", - "tuplet9" - ] - }, - "gClefNat2Below": { - "codepoint": "U+F4ED", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalNatural", - "tuplet2" - ] - }, - "gClefNatural10Below": { - "codepoint": "U+F4EE", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet0", - "accidentalNatural" - ] - }, - "gClefNatural13Below": { - "codepoint": "U+F4EF", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet3", - "accidentalNatural" - ] - }, - "gClefNatural17Below": { - "codepoint": "U+F4F0", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet7", - "accidentalNatural" - ] - }, - "gClefNatural2Above": { - "codepoint": "U+F4F1", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet2", - "accidentalNatural" - ] - }, - "gClefNatural3Above": { - "codepoint": "U+F4F2", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet3", - "accidentalNatural" - ] - }, - "gClefNatural3Below": { - "codepoint": "U+F4F3", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalNatural", - "tuplet3" - ] - }, - "gClefNatural6Above": { - "codepoint": "U+F4F4", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet6", - "accidentalNatural" - ] - }, - "gClefNatural6Below": { - "codepoint": "U+F4F5", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalNatural", - "tuplet6" - ] - }, - "gClefNatural7Above": { - "codepoint": "U+F4F6", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet7", - "accidentalNatural" - ] - }, - "gClefNatural9Above": { - "codepoint": "U+F4F7", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet9", - "accidentalNatural" - ] - }, - "gClefNatural9Below": { - "codepoint": "U+F4F8", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalNatural", - "tuplet9" - ] - }, - "gClefSharp12Below": { - "codepoint": "U+F4F9", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "tuplet1", - "tuplet2", - "accidentalSharp" - ] - }, - "gClefSharp1Above": { - "codepoint": "U+F4FA", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet1", - "accidentalSharp" - ] - }, - "gClefSharp4Above": { - "codepoint": "U+F4FB", - "componentGlyphs": [ - "gClefLigatedNumberAbove", - "tuplet4", - "accidentalSharp" - ] - }, - "gClefSharp5Below": { - "codepoint": "U+F4FC", - "componentGlyphs": [ - "gClefLigatedNumberBelow", - "accidentalSharp", - "tuplet5" - ] - }, - "mensuralFusaBlackStemDown": { - "codepoint": "U+F4FD", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagFusa" - ] - }, - "mensuralFusaBlackStemUp": { - "codepoint": "U+F4FE", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagFusa" - ] - }, - "mensuralFusaBlackVoidStemDown": { - "codepoint": "U+F4FF", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagFusa" - ] - }, - "mensuralFusaBlackVoidStemUp": { - "codepoint": "U+F500", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagFusa" - ] - }, - "mensuralFusaVoidStemDown": { - "codepoint": "U+F501", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagFusa" - ] - }, - "mensuralFusaVoidStemUp": { - "codepoint": "U+F502", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagFusa" - ] - }, - "mensuralLongaBlackStemDownLeft": { - "codepoint": "U+F503", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadLongaBlack" - ] - }, - "mensuralLongaBlackStemDownRight": { - "codepoint": "U+F504", - "componentGlyphs": [ - "mensuralNoteheadLongaBlack", - "mensuralCombStemDown" - ] - }, - "mensuralLongaBlackStemUpLeft": { - "codepoint": "U+F505", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadLongaBlack" - ] - }, - "mensuralLongaBlackStemUpRight": { - "codepoint": "U+F506", - "componentGlyphs": [ - "mensuralNoteheadLongaBlack", - "mensuralCombStemUp" - ] - }, - "mensuralLongaBlackVoidStemDownLeft": { - "codepoint": "U+F507", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadLongaBlackVoid" - ] - }, - "mensuralLongaBlackVoidStemDownRight": { - "codepoint": "U+F508", - "componentGlyphs": [ - "mensuralNoteheadLongaBlackVoid", - "mensuralCombStemDown" - ] - }, - "mensuralLongaBlackVoidStemUpLeft": { - "codepoint": "U+F509", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadLongaBlackVoid" - ] - }, - "mensuralLongaBlackVoidStemUpRight": { - "codepoint": "U+F50A", - "componentGlyphs": [ - "mensuralNoteheadLongaBlackVoid", - "mensuralCombStemUp" - ] - }, - "mensuralLongaVoidStemDownLeft": { - "codepoint": "U+F50B", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadLongaVoid" - ] - }, - "mensuralLongaVoidStemDownRight": { - "codepoint": "U+F50C", - "componentGlyphs": [ - "mensuralNoteheadLongaVoid", - "mensuralCombStemDown" - ] - }, - "mensuralLongaVoidStemUpLeft": { - "codepoint": "U+F50D", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadLongaVoid" - ] - }, - "mensuralLongaVoidStemUpRight": { - "codepoint": "U+F50E", - "componentGlyphs": [ - "mensuralNoteheadLongaVoid", - "mensuralCombStemUp" - ] - }, - "mensuralMaximaBlackStemDownLeft": { - "codepoint": "U+F50F", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadMaximaBlack" - ] - }, - "mensuralMaximaBlackStemDownRight": { - "codepoint": "U+F510", - "componentGlyphs": [ - "mensuralNoteheadMaximaBlack", - "mensuralCombStemDown" - ] - }, - "mensuralMaximaBlackStemUpLeft": { - "codepoint": "U+F511", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadMaximaBlack" - ] - }, - "mensuralMaximaBlackStemUpRight": { - "codepoint": "U+F512", - "componentGlyphs": [ - "mensuralNoteheadMaximaBlack", - "mensuralCombStemUp" - ] - }, - "mensuralMaximaBlackVoidStemDownLeft": { - "codepoint": "U+F513", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadMaximaBlackVoid" - ] - }, - "mensuralMaximaBlackVoidStemDownRight": { - "codepoint": "U+F514", - "componentGlyphs": [ - "mensuralNoteheadMaximaBlackVoid", - "mensuralCombStemDown" - ] - }, - "mensuralMaximaBlackVoidStemUpLeft": { - "codepoint": "U+F515", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadMaximaBlackVoid" - ] - }, - "mensuralMaximaBlackVoidStemUpRight": { - "codepoint": "U+F516", - "componentGlyphs": [ - "mensuralNoteheadMaximaBlackVoid", - "mensuralCombStemUp" - ] - }, - "mensuralMaximaVoidStemDownLeft": { - "codepoint": "U+F517", - "componentGlyphs": [ - "mensuralCombStemDown", - "mensuralNoteheadMaximaVoid" - ] - }, - "mensuralMaximaVoidStemDownRight": { - "codepoint": "U+F518", - "componentGlyphs": [ - "mensuralNoteheadMaximaVoid", - "mensuralCombStemDown" - ] - }, - "mensuralMaximaVoidStemUpLeft": { - "codepoint": "U+F519", - "componentGlyphs": [ - "mensuralCombStemUp", - "mensuralNoteheadMaximaVoid" - ] - }, - "mensuralMaximaVoidStemUpRight": { - "codepoint": "U+F51A", - "componentGlyphs": [ - "mensuralNoteheadMaximaVoid", - "mensuralCombStemUp" - ] - }, - "mensuralMinimaBlackStemDown": { - "codepoint": "U+F51B", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDown" - ] - }, - "mensuralMinimaBlackStemDownExtendedFlag": { - "codepoint": "U+F51C", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagExtended" - ] - }, - "mensuralMinimaBlackStemDownFlagLeft": { - "codepoint": "U+F51D", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagLeft" - ] - }, - "mensuralMinimaBlackStemDownFlagRight": { - "codepoint": "U+F51E", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagRight" - ] - }, - "mensuralMinimaBlackStemDownFlaredFlag": { - "codepoint": "U+F51F", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagFlared" - ] - }, - "mensuralMinimaBlackStemUp": { - "codepoint": "U+F520", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUp" - ] - }, - "mensuralMinimaBlackStemUpExtendedFlag": { - "codepoint": "U+F521", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagExtended" - ] - }, - "mensuralMinimaBlackStemUpFlagLeft": { - "codepoint": "U+F522", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagLeft" - ] - }, - "mensuralMinimaBlackStemUpFlagRight": { - "codepoint": "U+F523", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagRight" - ] - }, - "mensuralMinimaBlackStemUpFlaredFlag": { - "codepoint": "U+F524", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagFlared" - ] - }, - "mensuralMinimaBlackVoidStemDown": { - "codepoint": "U+F525", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDown" - ] - }, - "mensuralMinimaBlackVoidStemDownExtendedFlag": { - "codepoint": "U+F526", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagExtended" - ] - }, - "mensuralMinimaBlackVoidStemDownFlagLeft": { - "codepoint": "U+F527", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagLeft" - ] - }, - "mensuralMinimaBlackVoidStemDownFlagRight": { - "codepoint": "U+F528", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagRight" - ] - }, - "mensuralMinimaBlackVoidStemDownFlaredFlag": { - "codepoint": "U+F529", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagFlared" - ] - }, - "mensuralMinimaBlackVoidStemUp": { - "codepoint": "U+F52A", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUp" - ] - }, - "mensuralMinimaBlackVoidStemUpExtendedFlag": { - "codepoint": "U+F52B", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagExtended" - ] - }, - "mensuralMinimaBlackVoidStemUpFlagLeft": { - "codepoint": "U+F52C", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagLeft" - ] - }, - "mensuralMinimaBlackVoidStemUpFlagRight": { - "codepoint": "U+F52D", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagRight" - ] - }, - "mensuralMinimaBlackVoidStemUpFlaredFlag": { - "codepoint": "U+F52E", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagFlared" - ] - }, - "mensuralMinimaVoidStemDown": { - "codepoint": "U+F52F", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDown" - ] - }, - "mensuralMinimaVoidStemDownExtendedFlag": { - "codepoint": "U+F530", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagExtended" - ] - }, - "mensuralMinimaVoidStemDownFlagLeft": { - "codepoint": "U+F531", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagLeft" - ] - }, - "mensuralMinimaVoidStemDownFlagRight": { - "codepoint": "U+F532", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagRight" - ] - }, - "mensuralMinimaVoidStemDownFlaredFlag": { - "codepoint": "U+F533", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagFlared" - ] - }, - "mensuralMinimaVoidStemUp": { - "codepoint": "U+F535", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUp" - ] - }, - "mensuralMinimaVoidStemUpExtendedFlag": { - "codepoint": "U+F534", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagExtended" - ] - }, - "mensuralMinimaVoidStemUpFlagLeft": { - "codepoint": "U+F536", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagLeft" - ] - }, - "mensuralMinimaVoidStemUpFlagRight": { - "codepoint": "U+F537", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagRight" - ] - }, - "mensuralMinimaVoidStemUpFlaredFlag": { - "codepoint": "U+F538", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagFlared" - ] - }, - "mensuralSemiminimaBlackStemDown": { - "codepoint": "U+F539", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemDownFlagSemiminima" - ] - }, - "mensuralSemiminimaBlackStemUp": { - "codepoint": "U+F53A", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlack", - "mensuralCombStemUpFlagSemiminima" - ] - }, - "mensuralSemiminimaBlackVoidStemDown": { - "codepoint": "U+F53B", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemDownFlagSemiminima" - ] - }, - "mensuralSemiminimaBlackVoidStemUp": { - "codepoint": "U+F53C", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisBlackVoid", - "mensuralCombStemUpFlagSemiminima" - ] - }, - "mensuralSemiminimaVoidStemDown": { - "codepoint": "U+F53D", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemDownFlagSemiminima" - ] - }, - "mensuralSemiminimaVoidStemUp": { - "codepoint": "U+F53E", - "componentGlyphs": [ - "mensuralNoteheadSemibrevisVoid", - "mensuralCombStemUpFlagSemiminima" - ] - }, - "noteheadBlackParens": { - "codepoint": "U+F55E", - "componentGlyphs": [ - "noteheadParenthesisLeft", - "noteheadBlack", - "noteheadParenthesisRight" - ] - }, - "noteheadDoubleWholeParens": { - "codepoint": "U+F561", - "componentGlyphs": [ - "noteheadParenthesisLeft", - "noteheadDoubleWhole", - "noteheadParenthesisRight" - ] - }, - "noteheadHalfParens": { - "codepoint": "U+F55F", - "componentGlyphs": [ - "noteheadParenthesisLeft", - "noteheadHalf", - "noteheadParenthesisRight" - ] - }, - "noteheadWholeParens": { - "codepoint": "U+F560", - "componentGlyphs": [ - "noteheadParenthesisLeft", - "noteheadWhole", - "noteheadParenthesisRight" - ] - }, - "ornamentTrillFlatAbove": { - "codepoint": "U+F53F", - "componentGlyphs": [ - "accidentalFlat", - "ornamentTrill" - ] - }, - "ornamentTrillNaturalAbove": { - "codepoint": "U+F540", - "componentGlyphs": [ - "accidentalNatural", - "ornamentTrill" - ] - }, - "ornamentTrillSharpAbove": { - "codepoint": "U+F541", - "componentGlyphs": [ - "accidentalSharp", - "ornamentTrill" - ] - }, - "ornamentTurnFlatAbove": { - "codepoint": "U+F542", - "componentGlyphs": [ - "accidentalFlat", - "ornamentTurn" - ] - }, - "ornamentTurnFlatAboveSharpBelow": { - "codepoint": "U+F543", - "componentGlyphs": [ - "accidentalFlat", - "ornamentTurn", - "accidentalSharp" - ] - }, - "ornamentTurnFlatBelow": { - "codepoint": "U+F544", - "componentGlyphs": [ - "ornamentTurn", - "accidentalFlat" - ] - }, - "ornamentTurnNaturalAbove": { - "codepoint": "U+F545", - "componentGlyphs": [ - "accidentalNatural", - "ornamentTurn" - ] - }, - "ornamentTurnNaturalBelow": { - "codepoint": "U+F546", - "componentGlyphs": [ - "ornamentTurn", - "accidentalNatural" - ] - }, - "ornamentTurnSharpAbove": { - "codepoint": "U+F547", - "componentGlyphs": [ - "accidentalSharp", - "ornamentTurn" - ] - }, - "ornamentTurnSharpAboveFlatBelow": { - "codepoint": "U+F548", - "componentGlyphs": [ - "accidentalSharp", - "ornamentTurn", - "accidentalFlat" - ] - }, - "ornamentTurnSharpBelow": { - "codepoint": "U+F549", - "componentGlyphs": [ - "ornamentTurn", - "accidentalSharp" - ] - }, - "timeSig0Denominator": { - "codepoint": "U+F54A", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig0" - ] - }, - "timeSig0Numerator": { - "codepoint": "U+F54B", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig0" - ] - }, - "timeSig12over8": { - "codepoint": "U+F587", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig1", - "timeSigCombNumerator", - "timeSig2", - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig1Denominator": { - "codepoint": "U+F54C", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig1" - ] - }, - "timeSig1Numerator": { - "codepoint": "U+F54D", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig1" - ] - }, - "timeSig2Denominator": { - "codepoint": "U+F54E", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig2" - ] - }, - "timeSig2Numerator": { - "codepoint": "U+F54F", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig2" - ] - }, - "timeSig2over2": { - "codepoint": "U+F57C", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig2", - "timeSigCombDenominator", - "timeSig2" - ] - }, - "timeSig2over4": { - "codepoint": "U+F57B", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig2", - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig3Denominator": { - "codepoint": "U+F550", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig3" - ] - }, - "timeSig3Numerator": { - "codepoint": "U+F551", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig3" - ] - }, - "timeSig3over2": { - "codepoint": "U+F57D", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig3", - "timeSigCombDenominator", - "timeSig2" - ] - }, - "timeSig3over4": { - "codepoint": "U+F57E", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig3", - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig3over8": { - "codepoint": "U+F57F", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig3", - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig4Denominator": { - "codepoint": "U+F552", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig4Numerator": { - "codepoint": "U+F553", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig4" - ] - }, - "timeSig4over4": { - "codepoint": "U+F580", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig4", - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig5Denominator": { - "codepoint": "U+F554", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig5" - ] - }, - "timeSig5Numerator": { - "codepoint": "U+F555", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig5" - ] - }, - "timeSig5over4": { - "codepoint": "U+F581", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig5", - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig5over8": { - "codepoint": "U+F582", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig5", - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig6Denominator": { - "codepoint": "U+F556", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig6" - ] - }, - "timeSig6Numerator": { - "codepoint": "U+F557", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig6" - ] - }, - "timeSig6over4": { - "codepoint": "U+F583", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig6", - "timeSigCombDenominator", - "timeSig4" - ] - }, - "timeSig6over8": { - "codepoint": "U+F584", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig6", - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig7Denominator": { - "codepoint": "U+F558", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig7" - ] - }, - "timeSig7Numerator": { - "codepoint": "U+F559", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig7" - ] - }, - "timeSig7over8": { - "codepoint": "U+F585", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig7", - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig8Denominator": { - "codepoint": "U+F55A", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig8" - ] - }, - "timeSig8Numerator": { - "codepoint": "U+F55B", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig8" - ] - }, - "timeSig9Denominator": { - "codepoint": "U+F55C", - "componentGlyphs": [ - "timeSigCombDenominator", - "timeSig9" - ] - }, - "timeSig9Numerator": { - "codepoint": "U+F55D", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig9" - ] - }, - "timeSig9over8": { - "codepoint": "U+F586", - "componentGlyphs": [ - "timeSigCombNumerator", - "timeSig9", - "timeSigCombDenominator", - "timeSig8" - ] - } - }, - - "optionalGlyphs": { - "4stringTabClefSerif": { - "classes": [ - "clefs" - ], - "codepoint": "U+F40D" - }, - "4stringTabClefTall": { - "classes": [ - "clefs" - ], - "codepoint": "U+F40C" - }, - "6stringTabClefSerif": { - "classes": [ - "clefs" - ], - "codepoint": "U+F40B" - }, - "6stringTabClefTall": { - "classes": [ - "clefs" - ], - "codepoint": "U+F40A" - }, - "accdnPushAlt": { - "classes": [], - "codepoint": "U+F45B" - }, - "accidentalDoubleFlatJoinedStems": { - "classes": [ - "accidentals", - "accidentalsSagittalMixed", - "accidentalsStandard", - "combiningStaffPositions" - ], - "codepoint": "U+F4A1" - }, - "accidentalDoubleFlatParens": { - "codepoint": "U+F566" - }, - "accidentalDoubleSharpParens": { - "codepoint": "U+F565" - }, - "accidentalFlatJohnstonDown": { - "codepoint": "U+F56C" - }, - "accidentalFlatJohnstonEl": { - "codepoint": "U+F56A" - }, - "accidentalFlatJohnstonElDown": { - "codepoint": "U+F578" - }, - "accidentalFlatJohnstonUp": { - "codepoint": "U+F56B" - }, - "accidentalFlatJohnstonUpEl": { - "codepoint": "U+F577" - }, - "accidentalFlatParens": { - "codepoint": "U+F562" - }, - "accidentalFlatSmall": { - "classes": [ - "accidentals", - "accidentalsSagittalMixed", - "accidentalsStandard", - "combiningStaffPositions" - ], - "codepoint": "U+F427" - }, - "accidentalJohnstonDownEl": { - "codepoint": "U+F572" - }, - "accidentalJohnstonSevenDown": { - "codepoint": "U+F570" - }, - "accidentalJohnstonSevenFlat": { - "codepoint": "U+F56E" - }, - "accidentalJohnstonSevenFlatDown": { - "codepoint": "U+F57A" - }, - "accidentalJohnstonSevenFlatUp": { - "codepoint": "U+F579" - }, - "accidentalJohnstonSevenSharp": { - "codepoint": "U+F56D" - }, - "accidentalJohnstonSevenSharpDown": { - "codepoint": "U+F576" - }, - "accidentalJohnstonSevenSharpUp": { - "codepoint": "U+F575" - }, - "accidentalJohnstonSevenUp": { - "codepoint": "U+F56F" - }, - "accidentalJohnstonUpEl": { - "codepoint": "U+F571" - }, - "accidentalNaturalParens": { - "codepoint": "U+F563" - }, - "accidentalNaturalSmall": { - "classes": [ - "accidentals", - "accidentalsSagittalMixed", - "accidentalsSagittalPure", - "accidentalsStandard", - "combiningStaffPositions" - ], - "codepoint": "U+F428" - }, - "accidentalSharpJohnstonDown": { - "codepoint": "U+F569" - }, - "accidentalSharpJohnstonDownEl": { - "codepoint": "U+F574" - }, - "accidentalSharpJohnstonEl": { - "codepoint": "U+F567" - }, - "accidentalSharpJohnstonUp": { - "codepoint": "U+F568" - }, - "accidentalSharpJohnstonUpEl": { - "codepoint": "U+F573" - }, - "accidentalSharpParens": { - "codepoint": "U+F564" - }, - "accidentalSharpSmall": { - "classes": [ - "accidentals", - "accidentalsSagittalMixed", - "accidentalsStandard", - "combiningStaffPositions" - ], - "codepoint": "U+F429" - }, - "accidentalTripleFlatJoinedStems": { - "classes": [ - "accidentals", - "accidentalsStandard", - "combiningStaffPositions" - ], - "codepoint": "U+F4A2" - }, - "analyticsHauptrhythmusR": { - "classes": [], - "codepoint": "U+F4B9" - }, - "articAccentAboveLarge": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F42A" - }, - "articAccentAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F475" - }, - "articAccentBelowLarge": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F42B" - }, - "articAccentBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F476" - }, - "articAccentStaccatoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F485" - }, - "articAccentStaccatoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F486" - }, - "articMarcatoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F481" - }, - "articMarcatoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F482" - }, - "articMarcatoStaccatoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F483" - }, - "articMarcatoStaccatoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F484" - }, - "articStaccatissimoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F47B" - }, - "articStaccatissimoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F47C" - }, - "articStaccatissimoStrokeAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F47F" - }, - "articStaccatissimoStrokeBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F480" - }, - "articStaccatissimoWedgeAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F47D" - }, - "articStaccatissimoWedgeBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F47E" - }, - "articStaccatoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F477" - }, - "articStaccatoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F478" - }, - "articTenutoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F479" - }, - "articTenutoAccentAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F489" - }, - "articTenutoAccentBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F48A" - }, - "articTenutoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F47A" - }, - "articTenutoStaccatoAboveSmall": { - "classes": [ - "articulations", - "articulationsAbove", - "combiningStaffPositions" - ], - "codepoint": "U+F487" - }, - "articTenutoStaccatoBelowSmall": { - "classes": [ - "articulations", - "articulationsBelow", - "combiningStaffPositions" - ], - "codepoint": "U+F488" - }, - "braceFlat": { - "classes": [], - "codepoint": "U+F403" - }, - "braceLarge": { - "classes": [], - "codepoint": "U+F401" - }, - "braceLarger": { - "classes": [], - "codepoint": "U+F402" - }, - "braceSmall": { - "classes": [], - "codepoint": "U+F400" - }, - "cClefFrench": { - "classes": [ - "clefs", - "clefsC" - ], - "codepoint": "U+F408" - }, - "cClefSmall": { - "classes": [ - "clefs", - "clefsC" - ], - "codepoint": "U+F473" - }, - "caesuraSingleStroke": { - "classes": [ - "combiningStaffPositions", - "pauses" - ], - "codepoint": "U+F42C" - }, - "chantCclefHufnagel": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F49E" - }, - "chantFclefHufnagel": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F49D" - }, - "codaJapanese": { - "classes": [], - "codepoint": "U+F405" - }, - "doubleTongueAboveNoSlur": { - "classes": [], - "codepoint": "U+F42D" - }, - "doubleTongueBelowNoSlur": { - "classes": [], - "codepoint": "U+F42E" - }, - "dynamicForteSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F46D" - }, - "dynamicMezzoSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F46C" - }, - "dynamicNienteSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F471" - }, - "dynamicPianoSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F46B" - }, - "dynamicRinforzandoSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F46E" - }, - "dynamicSforzandoSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F46F" - }, - "dynamicZSmall": { - "classes": [ - "dynamics" - ], - "codepoint": "U+F470" - }, - "fClef19thCentury": { - "classes": [ - "clefs", - "clefsF" - ], - "codepoint": "U+F407" - }, - "fClef5Below": { - "codepoint": "U+F4BF" - }, - "fClefFrench": { - "classes": [ - "clefs", - "clefsF" - ], - "codepoint": "U+F406" - }, - "fClefSmall": { - "classes": [ - "clefs", - "clefsF" - ], - "codepoint": "U+F474" - }, - "flag1024thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F49A" - }, - "flag1024thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F426" - }, - "flag1024thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F425" - }, - "flag1024thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F499" - }, - "flag1024thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F424" - }, - "flag128thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F494" - }, - "flag128thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41D" - }, - "flag128thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41C" - }, - "flag128thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F493" - }, - "flag128thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41B" - }, - "flag16thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F48E" - }, - "flag16thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F414" - }, - "flag16thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F413" - }, - "flag16thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F48D" - }, - "flag16thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F412" - }, - "flag256thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F496" - }, - "flag256thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F420" - }, - "flag256thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41F" - }, - "flag256thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F495" - }, - "flag256thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41E" - }, - "flag32ndDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F490" - }, - "flag32ndDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F417" - }, - "flag32ndUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F416" - }, - "flag32ndUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F48F" - }, - "flag32ndUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F415" - }, - "flag512thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F498" - }, - "flag512thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F423" - }, - "flag512thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F422" - }, - "flag512thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F497" - }, - "flag512thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F421" - }, - "flag64thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F492" - }, - "flag64thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F41A" - }, - "flag64thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F419" - }, - "flag64thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F491" - }, - "flag64thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F418" - }, - "flag8thDownSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F48C" - }, - "flag8thDownStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F411" - }, - "flag8thUpShort": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F410" - }, - "flag8thUpSmall": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F48B" - }, - "flag8thUpStraight": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F40F" - }, - "gClef0Below": { - "codepoint": "U+F4C0" - }, - "gClef10Below": { - "codepoint": "U+F4C1" - }, - "gClef11Below": { - "codepoint": "U+F4C2" - }, - "gClef12Below": { - "codepoint": "U+F4C3" - }, - "gClef13Below": { - "codepoint": "U+F4C4" - }, - "gClef14Below": { - "codepoint": "U+F4C5" - }, - "gClef15Below": { - "codepoint": "U+F4C6" - }, - "gClef16Below": { - "codepoint": "U+F4C7" - }, - "gClef17Below": { - "codepoint": "U+F4C8" - }, - "gClef2Above": { - "codepoint": "U+F4C9" - }, - "gClef2Below": { - "codepoint": "U+F4CA" - }, - "gClef3Above": { - "codepoint": "U+F4CB" - }, - "gClef3Below": { - "codepoint": "U+F4CC" - }, - "gClef4Above": { - "codepoint": "U+F4CD" - }, - "gClef4Below": { - "codepoint": "U+F4CE" - }, - "gClef5Above": { - "codepoint": "U+F4CF" - }, - "gClef5Below": { - "codepoint": "U+F4D0" - }, - "gClef6Above": { - "codepoint": "U+F4D1" - }, - "gClef6Below": { - "codepoint": "U+F4D2" - }, - "gClef7Above": { - "codepoint": "U+F4D3" - }, - "gClef7Below": { - "codepoint": "U+F4D4" - }, - "gClef8Above": { - "codepoint": "U+F4D5" - }, - "gClef8Below": { - "codepoint": "U+F4D6" - }, - "gClef9Above": { - "codepoint": "U+F4D7" - }, - "gClef9Below": { - "codepoint": "U+F4D8" - }, - "gClefFlat10Below": { - "codepoint": "U+F4D9" - }, - "gClefFlat11Below": { - "codepoint": "U+F4DA" - }, - "gClefFlat13Below": { - "codepoint": "U+F4DB" - }, - "gClefFlat14Below": { - "codepoint": "U+F4DC" - }, - "gClefFlat15Below": { - "codepoint": "U+F4DD" - }, - "gClefFlat16Below": { - "codepoint": "U+F4DE" - }, - "gClefFlat1Below": { - "codepoint": "U+F4DF" - }, - "gClefFlat2Above": { - "codepoint": "U+F4E0" - }, - "gClefFlat2Below": { - "codepoint": "U+F4E1" - }, - "gClefFlat3Above": { - "codepoint": "U+F4E2" - }, - "gClefFlat3Below": { - "codepoint": "U+F4E3" - }, - "gClefFlat4Below": { - "codepoint": "U+F4E4" - }, - "gClefFlat5Above": { - "codepoint": "U+F4E5" - }, - "gClefFlat6Above": { - "codepoint": "U+F4E6" - }, - "gClefFlat6Below": { - "codepoint": "U+F4E7" - }, - "gClefFlat7Above": { - "codepoint": "U+F4E8" - }, - "gClefFlat7Below": { - "codepoint": "U+F4E9" - }, - "gClefFlat8Above": { - "codepoint": "U+F4EA" - }, - "gClefFlat9Above": { - "codepoint": "U+F4EB" - }, - "gClefFlat9Below": { - "codepoint": "U+F4EC" - }, - "gClefNat2Below": { - "codepoint": "U+F4ED" - }, - "gClefNatural10Below": { - "codepoint": "U+F4EE" - }, - "gClefNatural13Below": { - "codepoint": "U+F4EF" - }, - "gClefNatural17Below": { - "codepoint": "U+F4F0" - }, - "gClefNatural2Above": { - "codepoint": "U+F4F1" - }, - "gClefNatural3Above": { - "codepoint": "U+F4F2" - }, - "gClefNatural3Below": { - "codepoint": "U+F4F3" - }, - "gClefNatural6Above": { - "codepoint": "U+F4F4" - }, - "gClefNatural6Below": { - "codepoint": "U+F4F5" - }, - "gClefNatural7Above": { - "codepoint": "U+F4F6" - }, - "gClefNatural9Above": { - "codepoint": "U+F4F7" - }, - "gClefNatural9Below": { - "codepoint": "U+F4F8" - }, - "gClefSharp12Below": { - "codepoint": "U+F4F9" - }, - "gClefSharp1Above": { - "codepoint": "U+F4FA" - }, - "gClefSharp4Above": { - "codepoint": "U+F4FB" - }, - "gClefSharp5Below": { - "codepoint": "U+F4FC" - }, - "gClefSmall": { - "classes": [ - "clefs", - "clefsG" - ], - "codepoint": "U+F472" - }, - "guitarGolpeFlamenco": { - "classes": [], - "codepoint": "U+F4B8" - }, - "harpMetalRodAlt": { - "classes": [], - "codepoint": "U+F436" - }, - "harpTuningKeyAlt": { - "classes": [], - "codepoint": "U+F437" - }, - "keyboardPedalPedNoDot": { - "classes": [], - "codepoint": "U+F434" - }, - "keyboardPedalSostNoDot": { - "classes": [], - "codepoint": "U+F435" - }, - "luteFingeringRHThirdAlt": { - "classes": [], - "codepoint": "U+F44D" - }, - "luteFrench10thCourseRight": { - "classes": [], - "codepoint": "U+F459" - }, - "luteFrench10thCourseStrikethru": { - "classes": [], - "codepoint": "U+F457" - }, - "luteFrench10thCourseUnderline": { - "classes": [], - "codepoint": "U+F458" - }, - "luteFrench7thCourseRight": { - "classes": [], - "codepoint": "U+F450" - }, - "luteFrench7thCourseStrikethru": { - "classes": [], - "codepoint": "U+F44E" - }, - "luteFrench7thCourseUnderline": { - "classes": [], - "codepoint": "U+F44F" - }, - "luteFrench8thCourseRight": { - "classes": [], - "codepoint": "U+F453" - }, - "luteFrench8thCourseStrikethru": { - "classes": [], - "codepoint": "U+F451" - }, - "luteFrench8thCourseUnderline": { - "classes": [], - "codepoint": "U+F452" - }, - "luteFrench9thCourseRight": { - "classes": [], - "codepoint": "U+F456" - }, - "luteFrench9thCourseStrikethru": { - "classes": [], - "codepoint": "U+F454" - }, - "luteFrench9thCourseUnderline": { - "classes": [], - "codepoint": "U+F455" - }, - "luteFrenchFretCAlt": { - "classes": [], - "codepoint": "U+F45A" - }, - "medRenFlatSoftBHufnagel": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F4A0" - }, - "medRenFlatSoftBOld": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F49F" - }, - "mensuralCclefBlack": { - "classes": [], - "codepoint": "U+F49C" - }, - "mensuralCclefVoid": { - "classes": [], - "codepoint": "U+F49B" - }, - "mensuralFusaBlackStemDown": { - "codepoint": "U+F4FD" - }, - "mensuralFusaBlackStemUp": { - "codepoint": "U+F4FE" - }, - "mensuralFusaBlackVoidStemDown": { - "codepoint": "U+F4FF" - }, - "mensuralFusaBlackVoidStemUp": { - "codepoint": "U+F500" - }, - "mensuralFusaVoidStemDown": { - "codepoint": "U+F501" - }, - "mensuralFusaVoidStemUp": { - "codepoint": "U+F502" - }, - "mensuralLongaBlackStemDownLeft": { - "codepoint": "U+F503" - }, - "mensuralLongaBlackStemDownRight": { - "codepoint": "U+F504" - }, - "mensuralLongaBlackStemUpLeft": { - "codepoint": "U+F505" - }, - "mensuralLongaBlackStemUpRight": { - "codepoint": "U+F506" - }, - "mensuralLongaBlackVoidStemDownLeft": { - "codepoint": "U+F507" - }, - "mensuralLongaBlackVoidStemDownRight": { - "codepoint": "U+F508" - }, - "mensuralLongaBlackVoidStemUpLeft": { - "codepoint": "U+F509" - }, - "mensuralLongaBlackVoidStemUpRight": { - "codepoint": "U+F50A" - }, - "mensuralLongaVoidStemDownLeft": { - "codepoint": "U+F50B" - }, - "mensuralLongaVoidStemDownRight": { - "codepoint": "U+F50C" - }, - "mensuralLongaVoidStemUpLeft": { - "codepoint": "U+F50D" - }, - "mensuralLongaVoidStemUpRight": { - "codepoint": "U+F50E" - }, - "mensuralMaximaBlackStemDownLeft": { - "codepoint": "U+F50F" - }, - "mensuralMaximaBlackStemDownRight": { - "codepoint": "U+F510" - }, - "mensuralMaximaBlackStemUpLeft": { - "codepoint": "U+F511" - }, - "mensuralMaximaBlackStemUpRight": { - "codepoint": "U+F512" - }, - "mensuralMaximaBlackVoidStemDownLeft": { - "codepoint": "U+F513" - }, - "mensuralMaximaBlackVoidStemDownRight": { - "codepoint": "U+F514" - }, - "mensuralMaximaBlackVoidStemUpLeft": { - "codepoint": "U+F515" - }, - "mensuralMaximaBlackVoidStemUpRight": { - "codepoint": "U+F516" - }, - "mensuralMaximaVoidStemDownLeft": { - "codepoint": "U+F517" - }, - "mensuralMaximaVoidStemDownRight": { - "codepoint": "U+F518" - }, - "mensuralMaximaVoidStemUpLeft": { - "codepoint": "U+F519" - }, - "mensuralMaximaVoidStemUpRight": { - "codepoint": "U+F51A" - }, - "mensuralMinimaBlackStemDown": { - "codepoint": "U+F51B" - }, - "mensuralMinimaBlackStemDownExtendedFlag": { - "codepoint": "U+F51C" - }, - "mensuralMinimaBlackStemDownFlagLeft": { - "codepoint": "U+F51D" - }, - "mensuralMinimaBlackStemDownFlagRight": { - "codepoint": "U+F51E" - }, - "mensuralMinimaBlackStemDownFlaredFlag": { - "codepoint": "U+F51F" - }, - "mensuralMinimaBlackStemUp": { - "codepoint": "U+F520" - }, - "mensuralMinimaBlackStemUpExtendedFlag": { - "codepoint": "U+F521" - }, - "mensuralMinimaBlackStemUpFlagLeft": { - "codepoint": "U+F522" - }, - "mensuralMinimaBlackStemUpFlagRight": { - "codepoint": "U+F523" - }, - "mensuralMinimaBlackStemUpFlaredFlag": { - "codepoint": "U+F524" - }, - "mensuralMinimaBlackVoidStemDown": { - "codepoint": "U+F525" - }, - "mensuralMinimaBlackVoidStemDownExtendedFlag": { - "codepoint": "U+F526" - }, - "mensuralMinimaBlackVoidStemDownFlagLeft": { - "codepoint": "U+F527" - }, - "mensuralMinimaBlackVoidStemDownFlagRight": { - "codepoint": "U+F528" - }, - "mensuralMinimaBlackVoidStemDownFlaredFlag": { - "codepoint": "U+F529" - }, - "mensuralMinimaBlackVoidStemUp": { - "codepoint": "U+F52A" - }, - "mensuralMinimaBlackVoidStemUpExtendedFlag": { - "codepoint": "U+F52B" - }, - "mensuralMinimaBlackVoidStemUpFlagLeft": { - "codepoint": "U+F52C" - }, - "mensuralMinimaBlackVoidStemUpFlagRight": { - "codepoint": "U+F52D" - }, - "mensuralMinimaBlackVoidStemUpFlaredFlag": { - "codepoint": "U+F52E" - }, - "mensuralMinimaVoidStemDown": { - "codepoint": "U+F52F" - }, - "mensuralMinimaVoidStemDownExtendedFlag": { - "codepoint": "U+F530" - }, - "mensuralMinimaVoidStemDownFlagLeft": { - "codepoint": "U+F531" - }, - "mensuralMinimaVoidStemDownFlagRight": { - "codepoint": "U+F532" - }, - "mensuralMinimaVoidStemDownFlaredFlag": { - "codepoint": "U+F533" - }, - "mensuralMinimaVoidStemUp": { - "codepoint": "U+F535" - }, - "mensuralMinimaVoidStemUpExtendedFlag": { - "codepoint": "U+F534" - }, - "mensuralMinimaVoidStemUpFlagLeft": { - "codepoint": "U+F536" - }, - "mensuralMinimaVoidStemUpFlagRight": { - "codepoint": "U+F537" - }, - "mensuralMinimaVoidStemUpFlaredFlag": { - "codepoint": "U+F538" - }, - "mensuralProportion4Old": { - "classes": [ - "combiningStaffPositions" - ], - "codepoint": "U+F43D" - }, - "mensuralSemiminimaBlackStemDown": { - "codepoint": "U+F539" - }, - "mensuralSemiminimaBlackStemUp": { - "codepoint": "U+F53A" - }, - "mensuralSemiminimaBlackVoidStemDown": { - "codepoint": "U+F53B" - }, - "mensuralSemiminimaBlackVoidStemUp": { - "codepoint": "U+F53C" - }, - "mensuralSemiminimaVoidStemDown": { - "codepoint": "U+F53D" - }, - "mensuralSemiminimaVoidStemUp": { - "codepoint": "U+F53E" - }, - "noteDoubleWholeAlt": { - "classes": [ - "combiningStaffPositions", - "forTextBasedApplications" - ], - "codepoint": "U+F40E" - }, - "noteheadBlackOversized": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F4BE" - }, - "noteheadBlackParens": { - "codepoint": "U+F55E" - }, - "noteheadBlackSmall": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F46A" - }, - "noteheadDoubleWholeAlt": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F43F" - }, - "noteheadDoubleWholeOversized": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F4BA" - }, - "noteheadDoubleWholeParens": { - "codepoint": "U+F561" - }, - "noteheadDoubleWholeSmall": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F467" - }, - "noteheadDoubleWholeSquareOversized": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F4BB" - }, - "noteheadHalfOversized": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F4BD" - }, - "noteheadHalfParens": { - "codepoint": "U+F55F" - }, - "noteheadHalfSmall": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F469" - }, - "noteheadWholeOversized": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F4BC" - }, - "noteheadWholeParens": { - "codepoint": "U+F560" - }, - "noteheadWholeSmall": { - "classes": [ - "combiningStaffPositions", - "noteheads", - "noteheadSetDefault" - ], - "codepoint": "U+F468" - }, - "ornamentTrillFlatAbove": { - "codepoint": "U+F53F" - }, - "ornamentTrillNaturalAbove": { - "codepoint": "U+F540" - }, - "ornamentTrillSharpAbove": { - "codepoint": "U+F541" - }, - "ornamentTurnFlatAbove": { - "codepoint": "U+F542" - }, - "ornamentTurnFlatAboveSharpBelow": { - "codepoint": "U+F543" - }, - "ornamentTurnFlatBelow": { - "codepoint": "U+F544" - }, - "ornamentTurnNaturalAbove": { - "codepoint": "U+F545" - }, - "ornamentTurnNaturalBelow": { - "codepoint": "U+F546" - }, - "ornamentTurnSharpAbove": { - "codepoint": "U+F547" - }, - "ornamentTurnSharpAboveFlatBelow": { - "codepoint": "U+F548" - }, - "ornamentTurnSharpBelow": { - "codepoint": "U+F549" - }, - "pictBassDrumPeinkofer": { - "classes": [], - "codepoint": "U+F4AF" - }, - "pictBongosPeinkofer": { - "classes": [], - "codepoint": "U+F4B0" - }, - "pictCastanetsSmithBrindle": { - "classes": [], - "codepoint": "U+F439" - }, - "pictCongaPeinkofer": { - "classes": [], - "codepoint": "U+F4B1" - }, - "pictCowBellBerio": { - "classes": [], - "codepoint": "U+F43B" - }, - "pictFlexatonePeinkofer": { - "classes": [], - "codepoint": "U+F4B6" - }, - "pictGlspPeinkofer": { - "classes": [], - "codepoint": "U+F4AA" - }, - "pictGuiroPeinkofer": { - "classes": [], - "codepoint": "U+F4B5" - }, - "pictGuiroSevsay": { - "classes": [], - "codepoint": "U+F4B4" - }, - "pictLithophonePeinkofer": { - "classes": [], - "codepoint": "U+F4A7" - }, - "pictLotusFlutePeinkofer": { - "classes": [], - "codepoint": "U+F4AC" - }, - "pictMarPeinkofer": { - "classes": [], - "codepoint": "U+F4AB" - }, - "pictMaracaSmithBrindle": { - "classes": [], - "codepoint": "U+F43C" - }, - "pictMusicalSawPeinkofer": { - "classes": [], - "codepoint": "U+F4B7" - }, - "pictSleighBellSmithBrindle": { - "classes": [], - "codepoint": "U+F43A" - }, - "pictTambourineStockhausen": { - "classes": [], - "codepoint": "U+F438" - }, - "pictTimbalesPeinkofer": { - "classes": [], - "codepoint": "U+F4B3" - }, - "pictTimpaniPeinkofer": { - "classes": [], - "codepoint": "U+F4AE" - }, - "pictTomTomChinesePeinkofer": { - "classes": [], - "codepoint": "U+F4AD" - }, - "pictTomTomPeinkofer": { - "classes": [], - "codepoint": "U+F4B2" - }, - "pictTubaphonePeinkofer": { - "classes": [], - "codepoint": "U+F4A8" - }, - "pictVibMotorOffPeinkofer": { - "classes": [], - "codepoint": "U+F4A6" - }, - "pictVibPeinkofer": { - "classes": [], - "codepoint": "U+F4A5" - }, - "pictXylBassPeinkofer": { - "classes": [], - "codepoint": "U+F4A3" - }, - "pictXylPeinkofer": { - "classes": [], - "codepoint": "U+F4A9" - }, - "pictXylTenorPeinkofer": { - "classes": [], - "codepoint": "U+F4A4" - }, - "pluckedSnapPizzicatoAboveGerman": { - "classes": [], - "codepoint": "U+F433" - }, - "pluckedSnapPizzicatoBelowGerman": { - "classes": [], - "codepoint": "U+F432" - }, - "repeatRightLeftThick": { - "classes": [ - "forTextBasedApplications" - ], - "codepoint": "U+F45C" - }, - "segnoJapanese": { - "classes": [], - "codepoint": "U+F404" - }, - "stringsChangeBowDirectionImposed": { - "classes": [], - "codepoint": "U+F43E" - }, - "stringsChangeBowDirectionLiga": { - "classes": [], - "codepoint": "U+F431" - }, - "timeSig0Denominator": { - "codepoint": "U+F54A" - }, - "timeSig0Large": { - "classes": [], - "codepoint": "U+F440" - }, - "timeSig0Numerator": { - "codepoint": "U+F54B" - }, - "timeSig0Small": { - "classes": [], - "codepoint": "U+F45D" - }, - "timeSig12over8": { - "codepoint": "U+F587" - }, - "timeSig1Denominator": { - "codepoint": "U+F54C" - }, - "timeSig1Large": { - "classes": [], - "codepoint": "U+F441" - }, - "timeSig1Numerator": { - "codepoint": "U+F54D" - }, - "timeSig1Small": { - "classes": [], - "codepoint": "U+F45E" - }, - "timeSig2Denominator": { - "codepoint": "U+F54E" - }, - "timeSig2Large": { - "classes": [], - "codepoint": "U+F442" - }, - "timeSig2Numerator": { - "codepoint": "U+F54F" - }, - "timeSig2Small": { - "classes": [], - "codepoint": "U+F45F" - }, - "timeSig2over2": { - "codepoint": "U+F57C" - }, - "timeSig2over4": { - "codepoint": "U+F57B" - }, - "timeSig3Denominator": { - "codepoint": "U+F550" - }, - "timeSig3Large": { - "classes": [], - "codepoint": "U+F443" - }, - "timeSig3Numerator": { - "codepoint": "U+F551" - }, - "timeSig3Small": { - "classes": [], - "codepoint": "U+F460" - }, - "timeSig3over2": { - "codepoint": "U+F57D" - }, - "timeSig3over4": { - "codepoint": "U+F57E" - }, - "timeSig3over8": { - "codepoint": "U+F57F" - }, - "timeSig4Denominator": { - "codepoint": "U+F552" - }, - "timeSig4Large": { - "classes": [], - "codepoint": "U+F444" - }, - "timeSig4Numerator": { - "codepoint": "U+F553" - }, - "timeSig4Small": { - "classes": [], - "codepoint": "U+F461" - }, - "timeSig4over4": { - "codepoint": "U+F580" - }, - "timeSig5Denominator": { - "codepoint": "U+F554" - }, - "timeSig5Large": { - "classes": [], - "codepoint": "U+F445" - }, - "timeSig5Numerator": { - "codepoint": "U+F555" - }, - "timeSig5Small": { - "classes": [], - "codepoint": "U+F462" - }, - "timeSig5over4": { - "codepoint": "U+F581" - }, - "timeSig5over8": { - "codepoint": "U+F582" - }, - "timeSig6Denominator": { - "codepoint": "U+F556" - }, - "timeSig6Large": { - "classes": [], - "codepoint": "U+F446" - }, - "timeSig6Numerator": { - "codepoint": "U+F557" - }, - "timeSig6Small": { - "classes": [], - "codepoint": "U+F463" - }, - "timeSig6over4": { - "codepoint": "U+F583" - }, - "timeSig6over8": { - "codepoint": "U+F584" - }, - "timeSig7Denominator": { - "codepoint": "U+F558" - }, - "timeSig7Large": { - "classes": [], - "codepoint": "U+F447" - }, - "timeSig7Numerator": { - "codepoint": "U+F559" - }, - "timeSig7Small": { - "classes": [], - "codepoint": "U+F464" - }, - "timeSig7over8": { - "codepoint": "U+F585" - }, - "timeSig8Denominator": { - "codepoint": "U+F55A" - }, - "timeSig8Large": { - "classes": [], - "codepoint": "U+F448" - }, - "timeSig8Numerator": { - "codepoint": "U+F55B" - }, - "timeSig8Small": { - "classes": [], - "codepoint": "U+F465" - }, - "timeSig9Denominator": { - "codepoint": "U+F55C" - }, - "timeSig9Large": { - "classes": [], - "codepoint": "U+F449" - }, - "timeSig9Numerator": { - "codepoint": "U+F55D" - }, - "timeSig9Small": { - "classes": [], - "codepoint": "U+F466" - }, - "timeSig9over8": { - "codepoint": "U+F586" - }, - "timeSigCommonLarge": { - "classes": [], - "codepoint": "U+F44A" - }, - "timeSigCutCommonLarge": { - "classes": [], - "codepoint": "U+F44B" - }, - "timeSigPlusLarge": { - "classes": [], - "codepoint": "U+F44C" - }, - "tripleTongueAboveNoSlur": { - "classes": [], - "codepoint": "U+F42F" - }, - "tripleTongueBelowNoSlur": { - "classes": [], - "codepoint": "U+F430" - }, - "unpitchedPercussionClef1Alt": { - "classes": [ - "clefs" - ], - "codepoint": "U+F409" - } - }, - - "sets": { - "ss01": { - "description": "Smaller optical size for small staves", - "glyphs": [ - { - "alternateFor": "accidentalFlat", - "codepoint": "U+F427", - "name": "accidentalFlatSmall" - }, - { - "alternateFor": "accidentalNatural", - "codepoint": "U+F428", - "name": "accidentalNaturalSmall" - }, - { - "alternateFor": "accidentalSharp", - "codepoint": "U+F429", - "name": "accidentalSharpSmall" - }, - { - "alternateFor": "timeSig0", - "codepoint": "U+F45D", - "name": "timeSig0Small" - }, - { - "alternateFor": "timeSig1", - "codepoint": "U+F45E", - "name": "timeSig1Small" - }, - { - "alternateFor": "timeSig2", - "codepoint": "U+F45F", - "name": "timeSig2Small" - }, - { - "alternateFor": "timeSig3", - "codepoint": "U+F460", - "name": "timeSig3Small" - }, - { - "alternateFor": "timeSig4", - "codepoint": "U+F461", - "name": "timeSig4Small" - }, - { - "alternateFor": "timeSig5", - "codepoint": "U+F462", - "name": "timeSig5Small" - }, - { - "alternateFor": "timeSig6", - "codepoint": "U+F463", - "name": "timeSig6Small" - }, - { - "alternateFor": "timeSig7", - "codepoint": "U+F464", - "name": "timeSig7Small" - }, - { - "alternateFor": "timeSig8", - "codepoint": "U+F465", - "name": "timeSig8Small" - }, - { - "alternateFor": "timeSig9", - "codepoint": "U+F466", - "name": "timeSig9Small" - }, - { - "alternateFor": "noteheadDoubleWhole", - "codepoint": "U+F467", - "name": "noteheadDoubleWholeSmall" - }, - { - "alternateFor": "noteheadWhole", - "codepoint": "U+F468", - "name": "noteheadWholeSmall" - }, - { - "alternateFor": "noteheadHalf", - "codepoint": "U+F469", - "name": "noteheadHalfSmall" - }, - { - "alternateFor": "noteheadBlack", - "codepoint": "U+F46A", - "name": "noteheadBlackSmall" - }, - { - "alternateFor": "dynamicPiano", - "codepoint": "U+F46B", - "name": "dynamicPianoSmall" - }, - { - "alternateFor": "dynamicMezzo", - "codepoint": "U+F46C", - "name": "dynamicMezzoSmall" - }, - { - "alternateFor": "dynamicForte", - "codepoint": "U+F46D", - "name": "dynamicForteSmall" - }, - { - "alternateFor": "dynamicRinforzando", - "codepoint": "U+F46E", - "name": "dynamicRinforzandoSmall" - }, - { - "alternateFor": "dynamicSforzando", - "codepoint": "U+F46F", - "name": "dynamicSforzandoSmall" - }, - { - "alternateFor": "dynamicZ", - "codepoint": "U+F470", - "name": "dynamicZSmall" - }, - { - "alternateFor": "dynamicNiente", - "codepoint": "U+F471", - "name": "dynamicNienteSmall" - }, - { - "alternateFor": "gClef", - "codepoint": "U+F472", - "name": "gClefSmall" - }, - { - "alternateFor": "cClef", - "codepoint": "U+F473", - "name": "cClefSmall" - }, - { - "alternateFor": "fClef", - "codepoint": "U+F474", - "name": "fClefSmall" - }, - { - "alternateFor": "articAccentAbove", - "codepoint": "U+F475", - "name": "articAccentAboveSmall" - }, - { - "alternateFor": "articAccentBelow", - "codepoint": "U+F476", - "name": "articAccentBelowSmall" - }, - { - "alternateFor": "articStaccatoAbove", - "codepoint": "U+F477", - "name": "articStaccatoAboveSmall" - }, - { - "alternateFor": "articStaccatoBelow", - "codepoint": "U+F478", - "name": "articStaccatoBelowSmall" - }, - { - "alternateFor": "articTenutoAbove", - "codepoint": "U+F479", - "name": "articTenutoAboveSmall" - }, - { - "alternateFor": "articTenutoBelow", - "codepoint": "U+F47A", - "name": "articTenutoBelowSmall" - }, - { - "alternateFor": "articStaccatissimoAbove", - "codepoint": "U+F47B", - "name": "articStaccatissimoAboveSmall" - }, - { - "alternateFor": "articStaccatissimoBelow", - "codepoint": "U+F47C", - "name": "articStaccatissimoBelowSmall" - }, - { - "alternateFor": "articStaccatissimoWedgeAbove", - "codepoint": "U+F47D", - "name": "articStaccatissimoWedgeAboveSmall" - }, - { - "alternateFor": "articStaccatissimoWedgeBelow", - "codepoint": "U+F47E", - "name": "articStaccatissimoWedgeBelowSmall" - }, - { - "alternateFor": "articStaccatissimoStrokeAbove", - "codepoint": "U+F47F", - "name": "articStaccatissimoStrokeAboveSmall" - }, - { - "alternateFor": "articStaccatissimoStrokeBelow", - "codepoint": "U+F480", - "name": "articStaccatissimoStrokeBelowSmall" - }, - { - "alternateFor": "articMarcatoAbove", - "codepoint": "U+F481", - "name": "articMarcatoAboveSmall" - }, - { - "alternateFor": "articMarcatoBelow", - "codepoint": "U+F482", - "name": "articMarcatoBelowSmall" - }, - { - "alternateFor": "articMarcatoStaccatoAbove", - "codepoint": "U+F483", - "name": "articMarcatoStaccatoAboveSmall" - }, - { - "alternateFor": "articMarcatoStaccatoBelow", - "codepoint": "U+F484", - "name": "articMarcatoStaccatoBelowSmall" - }, - { - "alternateFor": "articAccentStaccatoAbove", - "codepoint": "U+F485", - "name": "articAccentStaccatoAboveSmall" - }, - { - "alternateFor": "articAccentStaccatoBelow", - "codepoint": "U+F486", - "name": "articAccentStaccatoBelowSmall" - }, - { - "alternateFor": "articTenutoStaccatoAbove", - "codepoint": "U+F487", - "name": "articTenutoStaccatoAboveSmall" - }, - { - "alternateFor": "articTenutoStaccatoBelow", - "codepoint": "U+F488", - "name": "articTenutoStaccatoBelowSmall" - }, - { - "alternateFor": "articTenutoAccentAbove", - "codepoint": "U+F489", - "name": "articTenutoAccentAboveSmall" - }, - { - "alternateFor": "articTenutoAccentBelow", - "codepoint": "U+F48A", - "name": "articTenutoAccentBelowSmall" - } - ], - "type": "opticalVariantsSmall" - }, - "ss02": { - "description": "Short flags (to avoid augmentation dots)", - "glyphs": [ - { - "alternateFor": "flag8thUp", - "codepoint": "U+F410", - "name": "flag8thUpShort" - }, - { - "alternateFor": "flag16thUp", - "codepoint": "U+F413", - "name": "flag16thUpShort" - }, - { - "alternateFor": "flag32ndUp", - "codepoint": "U+F416", - "name": "flag32ndUpShort" - }, - { - "alternateFor": "flag64thUp", - "codepoint": "U+F419", - "name": "flag64thUpShort" - }, - { - "alternateFor": "flag128thUp", - "codepoint": "U+F41C", - "name": "flag128thUpShort" - }, - { - "alternateFor": "flag256thUp", - "codepoint": "U+F41F", - "name": "flag256thUpShort" - }, - { - "alternateFor": "flag512thUp", - "codepoint": "U+F422", - "name": "flag512thUpShort" - }, - { - "alternateFor": "flag1024thUp", - "codepoint": "U+F425", - "name": "flag1024thUpShort" - } - ], - "type": "flagsShort" - }, - "ss03": { - "description": "Straight flags", - "glyphs": [ - { - "alternateFor": "flag8thUp", - "codepoint": "U+F40F", - "name": "flag8thUpStraight" - }, - { - "alternateFor": "flag8thDown", - "codepoint": "U+F411", - "name": "flag8thDownStraight" - }, - { - "alternateFor": "flag16thUp", - "codepoint": "U+F412", - "name": "flag16thUpStraight" - }, - { - "alternateFor": "flag16thDown", - "codepoint": "U+F414", - "name": "flag16thDownStraight" - }, - { - "alternateFor": "flag32ndUp", - "codepoint": "U+F415", - "name": "flag32ndUpStraight" - }, - { - "alternateFor": "flag32ndDown", - "codepoint": "U+F417", - "name": "flag32ndDownStraight" - }, - { - "alternateFor": "flag64thUp", - "codepoint": "U+F418", - "name": "flag64thUpStraight" - }, - { - "alternateFor": "flag64thDown", - "codepoint": "U+F41A", - "name": "flag64thDownStraight" - }, - { - "alternateFor": "flag128thUp", - "codepoint": "U+F41B", - "name": "flag128thUpStraight" - }, - { - "alternateFor": "flag128thDown", - "codepoint": "U+F41D", - "name": "flag128thDownStraight" - }, - { - "alternateFor": "flag256thUp", - "codepoint": "U+F41E", - "name": "flag256thUpStraight" - }, - { - "alternateFor": "flag256thDown", - "codepoint": "U+F420", - "name": "flag256thDownStraight" - }, - { - "alternateFor": "flag512thUp", - "codepoint": "U+F421", - "name": "flag512thUpStraight" - }, - { - "alternateFor": "flag512thDown", - "codepoint": "U+F423", - "name": "flag512thDownStraight" - }, - { - "alternateFor": "flag1024thUp", - "codepoint": "U+F424", - "name": "flag1024thUpStraight" - }, - { - "alternateFor": "flag1024thDown", - "codepoint": "U+F426", - "name": "flag1024thDownStraight" - } - ], - "type": "flagsStraight" - }, - "ss04": { - "description": "Large time signatures", - "glyphs": [ - { - "alternateFor": "timeSig0", - "codepoint": "U+F440", - "name": "timeSig0Large" - }, - { - "alternateFor": "timeSig1", - "codepoint": "U+F441", - "name": "timeSig1Large" - }, - { - "alternateFor": "timeSig2", - "codepoint": "U+F442", - "name": "timeSig2Large" - }, - { - "alternateFor": "timeSig3", - "codepoint": "U+F443", - "name": "timeSig3Large" - }, - { - "alternateFor": "timeSig4", - "codepoint": "U+F444", - "name": "timeSig4Large" - }, - { - "alternateFor": "timeSig5", - "codepoint": "U+F445", - "name": "timeSig5Large" - }, - { - "alternateFor": "timeSig6", - "codepoint": "U+F446", - "name": "timeSig6Large" - }, - { - "alternateFor": "timeSig7", - "codepoint": "U+F447", - "name": "timeSig7Large" - }, - { - "alternateFor": "timeSig8", - "codepoint": "U+F448", - "name": "timeSig8Large" - }, - { - "alternateFor": "timeSig9", - "codepoint": "U+F449", - "name": "timeSig9Large" - }, - { - "alternateFor": "timeSigCommon", - "codepoint": "U+F44A", - "name": "timeSigCommonLarge" - }, - { - "alternateFor": "timeSigCutCommon", - "codepoint": "U+F44B", - "name": "timeSigCutCommonLarge" - }, - { - "alternateFor": "timeSigPlus", - "codepoint": "U+F44C", - "name": "timeSigPlusLarge" - } - ], - "type": "timeSigsLarge" - }, - "ss05": { - "description": "Noteheads at larger optical size ", - "glyphs": [ - { - "alternateFor": "noteheadDoubleWhole", - "codepoint": "U+F4BA", - "name": "noteheadDoubleWholeOversized" - }, - { - "alternateFor": "noteheadDoubleWholeSquare", - "codepoint": "U+F4BB", - "name": "noteheadDoubleWholeSquareOversized" - }, - { - "alternateFor": "noteheadWhole", - "codepoint": "U+F4BC", - "name": "noteheadWholeOversized" - }, - { - "alternateFor": "noteheadHalf", - "codepoint": "U+F4BD", - "name": "noteheadHalfOversized" - }, - { - "alternateFor": "noteheadBlack", - "codepoint": "U+F4BE", - "name": "noteheadBlackOversized" - } - ], - "type": "noteheadsLarge" } - } + }, + "glyphsWithAnchors": {} } \ No newline at end of file diff --git a/include/vrv/adjustbeamsfunctor.h b/include/vrv/adjustbeamsfunctor.h index bf8462a1617..83cc3efb93b 100644 --- a/include/vrv/adjustbeamsfunctor.h +++ b/include/vrv/adjustbeamsfunctor.h @@ -53,6 +53,15 @@ class AdjustBeamsFunctor : public DocFunctor { // Get the drawing interface of the outer beam or the outer ftrem BeamDrawingInterface *GetOuterBeamInterface() const; + /** + * Calculate the overlap with other layer elements that + * are placed within the duration of the element + */ + int CalcLayerOverlap(const LayerElement *beamElement) const; + + // Rounds the overlap to the closest multiple of a half unit + int AdjustOverlapToHalfUnit(int overlap, int unit) const; + public: // private: diff --git a/include/vrv/alignfunctor.h b/include/vrv/alignfunctor.h index cd4dabf1757..a1728f2f31f 100644 --- a/include/vrv/alignfunctor.h +++ b/include/vrv/alignfunctor.h @@ -12,18 +12,17 @@ namespace vrv { -class Mensur; -class MeterSig; - //---------------------------------------------------------------------------- -// AlignmentParams +// AlignMeterParams //---------------------------------------------------------------------------- /** * Regroup pointers to meterSig, mensur and proport objects */ struct AlignMeterParams { - const MeterSig *meterSig; - const Mensur *mensur; + const MeterSig *meterSig = NULL; + const Mensur *mensur = NULL; + // Not const since we are cumulating proportion + Proport *proport = NULL; }; //---------------------------------------------------------------------------- @@ -75,7 +74,7 @@ class AlignHorizontallyFunctor : public DocFunctor { // The measureAligner MeasureAligner *m_measureAligner; // The time - double m_time; + Fraction m_time; // The current MeterSig, Mensur and Proport AlignMeterParams m_currentParams; // The current notation type diff --git a/include/vrv/beam.h b/include/vrv/beam.h index 5ae37892360..464499f98d9 100644 --- a/include/vrv/beam.h +++ b/include/vrv/beam.h @@ -156,7 +156,7 @@ class BeamSegment { int CalcMixedBeamCenterY(int step, int unit) const; // Helper to calculate location and duration of the note that would be setting highest/lowest point for the beam - std::tuple CalcStemDefiningNote(const Staff *staff, data_BEAMPLACE place) const; + std::tuple CalcStemDefiningNote(const Staff *staff, data_BEAMPLACE place) const; // Calculate positioning for the horizontal beams void CalcHorizontalBeam(const Doc *doc, const Staff *staff, const BeamDrawingInterface *beamInterface); @@ -375,11 +375,6 @@ class Beam : public LayerElement, */ void FilterList(ListOfConstObjects &childList) const override; - /** - * See LayerElement::SetElementShortening - */ - void SetElementShortening(int shortening) override; - private: /** * A pointer to the beam with which stems are shared. @@ -410,7 +405,6 @@ class BeamElementCoord { m_tabDurSym = NULL; m_stem = NULL; m_overlapMargin = 0; - m_maxShortening = -1; m_beamRelativePlace = BEAMPLACE_NONE; m_partialFlagPlace = BEAMPLACE_NONE; } @@ -429,7 +423,8 @@ class BeamElementCoord { void SetClosestNoteOrTabDurSym(data_STEMDIRECTION stemDir, bool outsideStaff); /** Helper for calculating the stem length for staff notation and tablature beams within the staff */ - int CalculateStemLength(const Staff *staff, data_STEMDIRECTION stemDir, bool isHorizontal, int preferredDur) const; + int CalculateStemLength( + const Staff *staff, data_STEMDIRECTION stemDir, bool isHorizontal, data_DURATION preferredDur) const; /** Helper for calculating the stem length for tablature beam placed outside the staff */ int CalculateStemLengthTab(const Staff *staff, data_STEMDIRECTION stemDir) const; @@ -454,10 +449,9 @@ class BeamElementCoord { int m_x; int m_yBeam; // y value of stem top position - int m_dur; // drawing duration + data_DURATION m_dur; // drawing duration int m_breaksec; int m_overlapMargin; - int m_maxShortening; // maximum allowed shortening in half units bool m_centered; // beam is centered on the line data_BEAMPLACE m_beamRelativePlace; char m_partialFlags[MAX_DURATION_PARTIALS]; diff --git a/include/vrv/beatrpt.h b/include/vrv/beatrpt.h index d4d8a4d9b5d..5108e3bc67c 100644 --- a/include/vrv/beatrpt.h +++ b/include/vrv/beatrpt.h @@ -40,17 +40,17 @@ class BeatRpt : public LayerElement, public AttColor, public AttBeatRptLog, publ bool HasToBeAligned() const override { return true; } /** - * Returns the duration (in double) for the BeatRpt. + * Returns the duration (in Fraction) for the BeatRpt. */ - double GetBeatRptAlignmentDuration(int meterUnit) const; + Fraction GetBeatRptAlignmentDuration(data_DURATION meterUnit) const; /** * MIDI timing information */ ///@{ - void SetScoreTimeOnset(double scoreTime); - double GetScoreTimeOnset() const; + void SetScoreTimeOnset(Fraction scoreTime); + Fraction GetScoreTimeOnset() const; //----------// // Functors // @@ -75,7 +75,7 @@ class BeatRpt : public LayerElement, public AttColor, public AttBeatRptLog, publ * The score-time onset of the note in the measure (duration from the start of measure in * quarter notes). */ - double m_scoreTimeOnset; + Fraction m_scoreTimeOnset; }; } // namespace vrv diff --git a/include/vrv/calcalignmentxposfunctor.h b/include/vrv/calcalignmentxposfunctor.h index cce4a6e6ac4..2680dc611e5 100644 --- a/include/vrv/calcalignmentxposfunctor.h +++ b/include/vrv/calcalignmentxposfunctor.h @@ -40,7 +40,7 @@ class CalcAlignmentXPosFunctor : public DocFunctor { */ ///@{ int GetLongestActualDur() const { return m_longestActualDur; } - void SetLongestActualDur(int dur) { m_longestActualDur = dur; } + void SetLongestActualDur(data_DURATION dur) { m_longestActualDur = dur; } ///@} /* @@ -61,11 +61,11 @@ class CalcAlignmentXPosFunctor : public DocFunctor { // private: // The previous time position - double m_previousTime; + Fraction m_previousTime; // The previous x rel position int m_previousXRel; // Duration of the longest note - int m_longestActualDur; + data_DURATION m_longestActualDur; // The estimated justification ratio of the system double m_estimatedJustificationRatio; // The last alignment that was not timestamp-only diff --git a/include/vrv/calcarticfunctor.h b/include/vrv/calcarticfunctor.h index 8b1884e6653..bca9579df01 100644 --- a/include/vrv/calcarticfunctor.h +++ b/include/vrv/calcarticfunctor.h @@ -48,6 +48,8 @@ class CalcArticFunctor : public DocFunctor { private: // Calculate shift for the articulation based on its type and presence of other articulations int CalculateHorizontalShift(const Artic *artic, bool virtualStem) const; + // Include the parent beam staff in the calculation of the above and below staff + void IncludeBeamStaff(LayerElement *layerElement); public: // diff --git a/include/vrv/calcledgerlinesfunctor.h b/include/vrv/calcledgerlinesfunctor.h index d2d83ab4829..826d66a2206 100644 --- a/include/vrv/calcledgerlinesfunctor.h +++ b/include/vrv/calcledgerlinesfunctor.h @@ -38,6 +38,7 @@ class CalcLedgerLinesFunctor : public DocFunctor { * Functor interface */ ///@{ + FunctorCode VisitAccid(Accid *accid) override; FunctorCode VisitNote(Note *note) override; FunctorCode VisitStaffEnd(Staff *staff) override; ///@} @@ -45,6 +46,10 @@ class CalcLedgerLinesFunctor : public DocFunctor { protected: // private: + /** + * + */ + void CalcForLayerElement(LayerElement *layerElement, int width, data_HORIZONTALALIGNMENT alignment); /** * Shorten ledger lines which overlap with neighbors */ diff --git a/include/vrv/calcstemfunctor.h b/include/vrv/calcstemfunctor.h index ee414083668..c90f8db60a8 100644 --- a/include/vrv/calcstemfunctor.h +++ b/include/vrv/calcstemfunctor.h @@ -62,7 +62,7 @@ class CalcStemFunctor : public DocFunctor { * Adjusts the flag placement and stem length if they are crossing notehead or ledger lines */ void AdjustFlagPlacement( - const Doc *doc, Stem *stem, Flag *flag, int staffSize, int verticalCenter, int duration) const; + const Doc *doc, Stem *stem, Flag *flag, int staffSize, int verticalCenter, data_DURATION duration) const; public: // @@ -72,7 +72,7 @@ class CalcStemFunctor : public DocFunctor { // The vertical center of the staff int m_verticalCenter; // The actual duration of the chord / note - int m_dur; + data_DURATION m_dur; // The flag for grace notes (stem is not extended) bool m_isGraceNote; // The flag for stem.sameas notes diff --git a/include/vrv/castofffunctor.h b/include/vrv/castofffunctor.h index fa968871809..3f045828c9a 100644 --- a/include/vrv/castofffunctor.h +++ b/include/vrv/castofffunctor.h @@ -136,7 +136,11 @@ class CastOffPagesFunctor : public DocFunctor { protected: // private: - // + /* + * Returns the available height for system drawing on the current page + */ + int GetAvailableDrawingHeight() const; + public: // private: @@ -144,6 +148,8 @@ class CastOffPagesFunctor : public DocFunctor { Page *m_contentPage; // The current page Page *m_currentPage; + // Indicates whether the current page is the first + bool m_firstCastOffPage; // The cumulated shift (m_drawingYRel of the first system of the current page) int m_shift; // The page heights diff --git a/include/vrv/doc.h b/include/vrv/doc.h index 48876eec45e..5361e886203 100644 --- a/include/vrv/doc.h +++ b/include/vrv/doc.h @@ -276,7 +276,7 @@ class Doc : public Object { * Extract a timemap from the document to a JSON string. * Run trough all the layers and fill the timemap file content. */ - bool ExportTimemap(std::string &output, bool includeRests, bool includeMeasures); + bool ExportTimemap(std::string &output, bool includeRests, bool includeMeasures, bool useFractions); /** * Extract expansionMap from the document to JSON string. diff --git a/include/vrv/drawinginterface.h b/include/vrv/drawinginterface.h index 32d2e88e253..59d1ed918e5 100644 --- a/include/vrv/drawinginterface.h +++ b/include/vrv/drawinginterface.h @@ -14,6 +14,7 @@ #include "mensur.h" #include "metersig.h" #include "metersiggrp.h" +#include "proport.h" #include "vrvdef.h" namespace vrv { @@ -186,7 +187,7 @@ class BeamDrawingInterface : public ObjectListInterface { Staff *m_crossStaffContent; data_STAFFREL_basic m_crossStaffRel; bool m_isSpanningElement; - int m_shortestDur; + data_DURATION m_shortestDur; data_STEMDIRECTION m_notesStemDir; data_BEAMPLACE m_drawingPlace; Staff *m_beamStaff; @@ -239,7 +240,7 @@ class StaffDefDrawingInterface { void SetDrawClef(bool drawClef) { m_drawClef = drawClef; } bool DrawKeySig() const { return (m_drawKeySig); } void SetDrawKeySig(bool drawKeySig) { m_drawKeySig = drawKeySig; } - bool DrawMensur() const { return (m_drawMensur && m_currentMensur.HasSign()); } + bool DrawMensur() const { return (m_drawMensur && (m_currentMensur.HasSign() || m_currentMensur.HasNum())); } void SetDrawMensur(bool drawMensur) { m_drawMensur = drawMensur; } bool DrawMeterSig() const { @@ -260,6 +261,7 @@ class StaffDefDrawingInterface { void SetCurrentMeterSig(const MeterSig *meterSig); void SetCurrentMeterSigGrp(const MeterSigGrp *meterSigGrp); void AlternateCurrentMeterSig(const Measure *measure); + void SetCurrentProport(const Proport *proport); ///@} /** @@ -277,6 +279,8 @@ class StaffDefDrawingInterface { const MeterSig *GetCurrentMeterSig() const { return &m_currentMeterSig; } MeterSigGrp *GetCurrentMeterSigGrp() { return &m_currentMeterSigGrp; } const MeterSigGrp *GetCurrentMeterSigGrp() const { return &m_currentMeterSigGrp; } + Proport *GetCurrentProport() { return &m_currentProport; } + const Proport *GetCurrentProport() const { return &m_currentProport; } ///@} private: @@ -290,6 +294,8 @@ class StaffDefDrawingInterface { MeterSig m_currentMeterSig; /** The meter signature group */ MeterSigGrp m_currentMeterSigGrp; + /** The proport */ + Proport m_currentProport; /** * @name Flags for indicating whether the clef, keysig and mensur needs to be drawn or not diff --git a/include/vrv/durationinterface.h b/include/vrv/durationinterface.h index 17d0ec0cc22..d8e8714c12c 100644 --- a/include/vrv/durationinterface.h +++ b/include/vrv/durationinterface.h @@ -12,6 +12,7 @@ #include "atts_gestural.h" #include "atts_mensural.h" #include "atts_shared.h" +#include "fraction.h" #include "interface.h" namespace vrv { @@ -57,19 +58,19 @@ class DurationInterface : public Interface, ///@} /** - * Returns the duration (in double) for the element. - * It returns 0.0 for grace notes. + * Returns the duration (in Fraction) for the element. + * It returns 0/1 for grace notes. * Careful: this method is not overriding LayerElement::GetAlignmentDuration since * LayerElement and DurationInterface have no inheritance link. */ - double GetInterfaceAlignmentDuration(int num, int numBase) const; + Fraction GetInterfaceAlignmentDuration(int num, int numBase) const; /** - * Returns the duration (in double) for the element for mensural notation - * Currently this assume brevis equality (through DUR_MENSURAL_REF) and would + * Returns the duration (in Fraction) for the element for mensural notation + * Currently this assume brevis equality and would * need to be modified for shorter equality in later repertoire. */ - double GetInterfaceAlignmentMensuralDuration(int num, int numBase, const Mensur *currentMensur) const; + Fraction GetInterfaceAlignmentMensuralDuration(int num, int numBase, const Mensur *currentMensur) const; /** * Return true if the note or rest is the first of a beam. @@ -84,19 +85,18 @@ class DurationInterface : public Interface, /** * @name Return the actual (gestural) duration of the note, for both CMN and mensural durations * See data_DURATION - * For CMN, it is the same (DURATION_1 == DUR_1) - * For mensural, we need to apply the DUR_MENSURAL_MASK + * For Mensural, it is the same (DURATION_2 == DURATION_minima) */ ///@{ - int GetActualDur() const; - int GetActualDurGes() const; + data_DURATION GetActualDur() const; + data_DURATION GetActualDurGes() const; ///@} /** * If the element is part of a chord, return the chord actual duration, otherwise the note actual duration. * Since we need to check what the element is, we need to pass it as parameter. */ - int GetNoteOrChordDur(const LayerElement *element) const; + data_DURATION GetNoteOrChordDur(const LayerElement *element) const; /** * Return true if the value is a mensural (DURATION_longa, brevis, etc.) @@ -113,17 +113,17 @@ class DurationInterface : public Interface, * MIDI timing information */ ///@{ - void SetScoreTimeOnset(double scoreTime); + void SetScoreTimeOnset(Fraction scoreTime); void SetRealTimeOnsetSeconds(double timeInSeconds); - void SetScoreTimeOffset(double scoreTime); + void SetScoreTimeOffset(Fraction scoreTime); void SetRealTimeOffsetSeconds(double timeInSeconds); - void SetScoreTimeTiedDuration(double timeInSeconds); - double GetScoreTimeOnset() const; + void SetScoreTimeTiedDuration(Fraction timeInSeconds); + Fraction GetScoreTimeOnset() const; double GetRealTimeOnsetMilliseconds() const; - double GetScoreTimeOffset() const; - double GetScoreTimeTiedDuration() const; + Fraction GetScoreTimeOffset() const; + Fraction GetScoreTimeTiedDuration() const; double GetRealTimeOffsetMilliseconds() const; - double GetScoreTimeDuration() const; + Fraction GetScoreTimeDuration() const; ///@} //-----------------// @@ -140,7 +140,7 @@ class DurationInterface : public Interface, /** * Calculate the actual duration => translate mensural values */ - int CalcActualDur(data_DURATION dur) const; + data_DURATION CalcActualDur(data_DURATION dur) const; public: // @@ -149,7 +149,7 @@ class DurationInterface : public Interface, * The score-time onset of the note in the measure (duration from the start of measure in * quarter notes). */ - double m_scoreTimeOnset; + Fraction m_scoreTimeOnset; /** * The score-time off-time of the note in the measure (duration from the start of the measure @@ -159,7 +159,7 @@ class DurationInterface : public Interface, * of the printed note, and the m_scoreTimeTiedDuration is -1.0 to indicate that it should not * be exported when creating a MIDI file. */ - double m_scoreTimeOffset; + Fraction m_scoreTimeOffset; /** * The time in milliseconds since the start of the measure element that contains the note. @@ -179,7 +179,7 @@ class DurationInterface : public Interface, * If the note is a secondary note in a tied group, then this variable is set to -1.0 to * indicate that it should not be written to MIDI output. */ - double m_scoreTimeTiedDuration; + Fraction m_scoreTimeTiedDuration; /** * The default duration: extracted from scoreDef/staffDef and used when no duration attribute is given diff --git a/include/vrv/findlayerelementsfunctor.h b/include/vrv/findlayerelementsfunctor.h index 8d1ec87b1a1..7bdf1eeb657 100644 --- a/include/vrv/findlayerelementsfunctor.h +++ b/include/vrv/findlayerelementsfunctor.h @@ -41,7 +41,7 @@ class LayersInTimeSpanFunctor : public ConstFunctor { /* * Set the time and duration of the event */ - void SetEvent(double time, double duration); + void SetEvent(const Fraction &time, const Fraction &duration); /* * Retrieve the search result @@ -65,9 +65,9 @@ class LayersInTimeSpanFunctor : public ConstFunctor { // private: // The time of the event - double m_time; + Fraction m_time; // The duration of the event - double m_duration; + Fraction m_duration; // The layers (layerN) found std::set m_layers; // The current time alignment parameters @@ -99,7 +99,7 @@ class LayerElementsInTimeSpanFunctor : public ConstFunctor { /* * Set the time and duration of the event */ - void SetEvent(double time, double duration); + void SetEvent(const Fraction &time, const Fraction &duration); /* * Consider all layers except the current one @@ -126,9 +126,9 @@ class LayerElementsInTimeSpanFunctor : public ConstFunctor { // private: // The time of the event - double m_time; + Fraction m_time; // The duration of the event - double m_duration; + Fraction m_duration; // The list of layer elements found ListOfConstObjects m_elements; // The current time alignment parameters diff --git a/include/vrv/fraction.h b/include/vrv/fraction.h new file mode 100644 index 00000000000..c65f19fb5d4 --- /dev/null +++ b/include/vrv/fraction.h @@ -0,0 +1,79 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fraction.h +// Author: Laurent Pugin +// Created: 2024 +// Copyright (c) Authors and others. All rights reserved. +///////////////////////////////////////////////////////////////////////////// + +#ifndef __VRV_FRACTION_H__ +#define __VRV_FRACTION_H__ + +#include "vrv.h" + +namespace vrv { + +//---------------------------------------------------------------------------- +// Fraction +//---------------------------------------------------------------------------- + +class Fraction { + +public: + // Constructors - make them explicit to avoid type conversion + explicit Fraction(int num = 0, int denom = 1); + explicit Fraction(data_DURATION duration); + + // Enable implicit conversion constructor for `int` + template >> + Fraction(T num) : m_numerator(num), m_denominator(1) + { + } + + /** Addition operator */ + Fraction operator+(const Fraction &other) const; + /** Subtraction operator */ + Fraction operator-(const Fraction &other) const; + /** Multiplication operator */ + Fraction operator*(const Fraction &other) const; + /** Division operator */ + Fraction operator/(const Fraction &other) const; + + /** Equality operator */ + bool operator==(const Fraction &other) const; + /** Ordering operator */ + std::strong_ordering operator<=>(const Fraction &other) const; + + /** Getters */ + int GetNumerator() const { return m_numerator; } + int GetDenominator() const { return m_denominator; } + + /** Convert fraction to a double */ + double ToDouble() const; + + /** Convert fraction to a string */ + std::string ToString() const; + + /** Convert to data_DURATION and the remaining Fraction */ + std::pair ToDur() const; + + //----------------// + // Static methods // + //----------------// + + /** Reduce the fraction represented by the two numbers */ + static void Reduce(int &numerator, int &denominator); + +private: + /** Reduce the fraction */ + void Reduce(); + +public: + // +private: + int m_numerator; + int m_denominator; +}; + +} // namespace vrv + +#endif diff --git a/include/vrv/ftrem.h b/include/vrv/ftrem.h index 79e1e805775..4e38e755e56 100644 --- a/include/vrv/ftrem.h +++ b/include/vrv/ftrem.h @@ -90,11 +90,6 @@ class FTrem : public LayerElement, public BeamDrawingInterface, public AttFTremV */ void FilterList(ListOfConstObjects &childList) const override; - /** - * See LayerElement::SetElementShortening - */ - void SetElementShortening(int shortening) override; - public: /** */ BeamSegment m_beamSegment; diff --git a/include/vrv/genericlayerelement.h b/include/vrv/genericlayerelement.h index 2a422527511..6b93f50a142 100644 --- a/include/vrv/genericlayerelement.h +++ b/include/vrv/genericlayerelement.h @@ -39,6 +39,12 @@ class GenericLayerElement : public LayerElement { */ std::string GetMEIName() const { return m_meiName; } + /** + * Return the MEI element original name + */ + std::string GetContent() { return m_content; } + void SetContent(std::string content) { m_content = content; } + //----------// // Functors // //----------// @@ -58,6 +64,8 @@ class GenericLayerElement : public LayerElement { std::string m_className; /** The MEI element name */ std::string m_meiName; + /** The MEI element content */ + std::string m_content; public: // diff --git a/include/vrv/horizontalaligner.h b/include/vrv/horizontalaligner.h index 73f8e09c03d..887fe49e739 100644 --- a/include/vrv/horizontalaligner.h +++ b/include/vrv/horizontalaligner.h @@ -9,6 +9,7 @@ #define __VRV_HORIZONTAL_ALIGNER_H__ #include "atts_shared.h" +#include "fraction.h" #include "object.h" #include "vrv.h" @@ -42,7 +43,9 @@ enum AlignmentType { ALIGNMENT_KEYSIG, ALIGNMENT_MENSUR, ALIGNMENT_METERSIG, + ALIGNMENT_PROPORT, ALIGNMENT_DOT, + ALIGNMENT_CUSTOS, ALIGNMENT_ACCID, ALIGNMENT_GRACENOTE, ALIGNMENT_BARLINE, @@ -75,7 +78,7 @@ class Alignment : public Object { */ ///@{ Alignment(); - Alignment(double time, AlignmentType type = ALIGNMENT_DEFAULT); + Alignment(const Fraction &time, AlignmentType type = ALIGNMENT_DEFAULT); virtual ~Alignment(); void Reset() override; ///@} @@ -102,8 +105,8 @@ class Alignment : public Object { * @name Set and get the time value of the alignment */ ///@{ - void SetTime(double time) { m_time = time; } - double GetTime() const { return m_time; } + void SetTime(const Fraction &time) { m_time = time; } + Fraction GetTime() const { return m_time; } ///@} /** @@ -188,7 +191,10 @@ class Alignment : public Object { /** * Debug message */ - std::string LogDebugTreeMsg() override { return StringFormat("%d %f", this->GetXRel(), this->GetTime()); } + std::string LogDebugTreeMsg() override + { + return StringFormat("%d %s", this->GetXRel(), this->GetTime().ToString().c_str()); + } //----------------// // Static methods // @@ -210,7 +216,7 @@ class Alignment : public Object { * formula with parameters can come close and has other advantages. */ static int HorizontalSpaceForDuration( - double intervalTime, int maxActualDur, double spacingLinear, double spacingNonLinear); + const Fraction &intervalTime, data_DURATION maxActualDur, double spacingLinear, double spacingNonLinear); //----------// // Functors // @@ -247,7 +253,7 @@ class Alignment : public Object { * Stores the time at which the alignment occur. * It is set by the AlignHorizontallyFunctor. */ - double m_time; + Fraction m_time; /** * Defines the type of alignment (see the AlignmentType enum). * We have different types because we want some events occuring at the same @@ -384,8 +390,8 @@ class HorizontalAligner : public Object { * If not, return in idx the position where it needs to be inserted (-1 if it is the end) */ ///@{ - Alignment *SearchAlignmentAtTime(double time, AlignmentType type, int &idx); - const Alignment *SearchAlignmentAtTime(double time, AlignmentType type, int &idx) const; + Alignment *SearchAlignmentAtTime(const Fraction &time, AlignmentType type, int &idx); + const Alignment *SearchAlignmentAtTime(const Fraction &time, AlignmentType type, int &idx) const; ///@} /** @@ -430,19 +436,19 @@ class MeasureAligner : public HorizontalAligner { * The alignment object is added if not found. * The maximum time position is also adjusted accordingly for end barline positioning */ - Alignment *GetAlignmentAtTime(double time, AlignmentType type); + Alignment *GetAlignmentAtTime(const Fraction &time, AlignmentType type); /** * Keep the maximum time of the measure. * This corresponds to the whole duration of the measure and * should be the same for all staves/layers. */ - void SetMaxTime(double time); + void SetMaxTime(const Fraction &time); /** * Return the max time of the measure (i.e., the right measure alignment time) */ - double GetMaxTime() const; + Fraction GetMaxTime() const; /** * @name Set and Get the non-justifiable margin (right and left scoreDefs) @@ -456,14 +462,14 @@ class MeasureAligner : public HorizontalAligner { * Setter takes a meter unit parameter. */ ///@{ - void SetInitialTstamp(int meterUnit); - double GetInitialTstampDur() const { return m_initialTstampDur; } + void SetInitialTstamp(data_DURATION meterUnit); + Fraction GetInitialTstampDur() const { return m_initialTstampDur; } ///@} /** * Get left Alignment for the measure and for the left BarLine. * For each MeasureAligner, we keep and Alignment for the left position. - * The Alignment time will be always -1.0 * DUR_MAX and will appear first in the list. + * The Alignment time will be always -1.0 and will appear first in the list. */ ///@{ Alignment *GetLeftAlignment() { return m_leftAlignment; } @@ -542,7 +548,7 @@ class MeasureAligner : public HorizontalAligner { * The time duration of the timestamp between 0.0 and 1.0. * This depends on the meter signature in the preceeding scoreDef */ - double m_initialTstampDur; + Fraction m_initialTstampDur; }; //---------------------------------------------------------------------------- @@ -569,7 +575,7 @@ class GraceAligner : public HorizontalAligner { * Retrieve the alignmnet of the type at that time. * The alignment object is added if not found. */ - Alignment *GetAlignmentAtTime(double time, AlignmentType type); + Alignment *GetAlignmentAtTime(const Fraction &time, AlignmentType type); /** * Because the grace notes appear from left to right but need to be aligned diff --git a/include/vrv/iocmme.h b/include/vrv/iocmme.h new file mode 100644 index 00000000000..f74831ca7d3 --- /dev/null +++ b/include/vrv/iocmme.h @@ -0,0 +1,125 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: iocmme.h +// Author: Laurent Pugin +// Created: 2024 +// Copyright (c) Authors and others. All rights reserved. +///////////////////////////////////////////////////////////////////////////// + +#ifndef __VRV_IOCMME_H__ +#define __VRV_IOCMME_H__ + +#include +#include +#include + +//---------------------------------------------------------------------------- + +#include "iobase.h" +#include "pugixml.hpp" +#include "vrvdef.h" + +namespace vrv { + +class Chord; +class Clef; +class KeySig; +class Layer; +class Measure; +class Note; +class Score; + +namespace cmme { + + struct mensInfo { + int prolatio = 2; + int tempus = 2; + int modusminor = 2; + int modusmaior = 2; + int proportNum = 1; + int proportDen = 1; + }; + +} // namespace cmme + +//---------------------------------------------------------------------------- +// CmmeInput +//---------------------------------------------------------------------------- + +class CmmeInput : public Input { +public: + // constructors and destructors + CmmeInput(Doc *doc); + virtual ~CmmeInput(); + + bool Import(const std::string &cmme) override; + +private: + void CreateSection(pugi::xml_node musicSectionNode); + void CreateStaff(pugi::xml_node voiceNode); + void CreateApp(pugi::xml_node appNode); + void CreateLemOrRdg(pugi::xml_node lemOrRdgNode, bool isFirst); + + void ReadEvents(pugi::xml_node eventsNode); + void ReadEditorialCommentary(pugi::xml_node evenNode, Object *object); + + void CreateAccid(pugi::xml_node accidNode); + void CreateBarline(pugi::xml_node barlineNode); + void CreateBreak(pugi::xml_node breakNode); + void CreateChord(pugi::xml_node chordNode); + void CreateClef(pugi::xml_node clefNode); + void CreateCustos(pugi::xml_node custosNode); + void CreateDot(pugi::xml_node dotNode); + void CreateEllipsis(); + void CreateKeySig(pugi::xml_node keyNode); + void CreateLacuna(pugi::xml_node lacunaNode); + void CreateMensuration(pugi::xml_node mensurationNode); + void CreateOriginalText(pugi::xml_node originalTextNode); + void CreateProport(pugi::xml_node proportNode); + void CreateNote(pugi::xml_node noteNode); + void CreateRest(pugi::xml_node restNode); + + void CreateVerse(pugi::xml_node verseNode); + + data_DURATION ReadDuration(pugi::xml_node durationNode, int &num, int &numbase) const; + bool IsClef(pugi::xml_node clefNode) const; + + /** + * Helper methods for accessing and converting text in elements. + * Return "" or VRV_UNSET if the node is NULL or the node or the text not found + */ + ///@{ + std::string AsString(const pugi::xml_node node) const; + std::string ChildAsString(const pugi::xml_node node, const std::string &child) const; + int AsInt(const pugi::xml_node node) const; + int ChildAsInt(const pugi::xml_node node, const std::string &child) const; + ///@} + +public: + // +private: + /** The current score (only one) */ + Score *m_score; + /** The current un-measured measure acting a a MEI section */ + Measure *m_currentSection; + /** The current layer (or container) to which the layer elements have to be added */ + Object *m_currentContainer; + /** The current key signature to which extra flats might be added */ + KeySig *m_currentSignature; + /** The current note */ + Note *m_currentNote; + /** The syllable is not the first */ + bool m_isInSyllable; + /** The mensural infos for all voices */ + std::vector m_mensInfos; + /** The mensural info for the current voice */ + cmme::mensInfo *m_mensInfo; + + /** The number of voices as given in the general data */ + int m_numVoices; + /** The name of the voices - if any */ + std::vector m_voices; +}; + +} // namespace vrv + +#endif diff --git a/include/vrv/layer.h b/include/vrv/layer.h index 45fefba99a1..6b268a8e192 100644 --- a/include/vrv/layer.h +++ b/include/vrv/layer.h @@ -130,8 +130,10 @@ class Layer : public Object, * Takes into account cross-staff situations: cross staff layers have negative N. */ ///@{ - std::set GetLayersNInTimeSpan(double time, double duration, const Measure *measure, int staff) const; - int GetLayerCountInTimeSpan(double time, double duration, const Measure *measure, int staff) const; + std::set GetLayersNInTimeSpan( + const Fraction &time, const Fraction &duration, const Measure *measure, int staff) const; + int GetLayerCountInTimeSpan( + const Fraction &time, const Fraction &duration, const Measure *measure, int staff) const; ///@} /** @@ -150,9 +152,9 @@ class Layer : public Object, */ ///@{ ListOfObjects GetLayerElementsInTimeSpan( - double time, double duration, const Measure *measure, int staff, bool excludeCurrent); + const Fraction &time, const Fraction &duration, const Measure *measure, int staff, bool excludeCurrent); ListOfConstObjects GetLayerElementsInTimeSpan( - double time, double duration, const Measure *measure, int staff, bool excludeCurrent) const; + const Fraction &time, const Fraction &duration, const Measure *measure, int staff, bool excludeCurrent) const; ///@} /** @@ -167,6 +169,8 @@ class Layer : public Object, const Mensur *GetCurrentMensur() const; MeterSig *GetCurrentMeterSig(); const MeterSig *GetCurrentMeterSig() const; + Proport *GetCurrentProport(); + const Proport *GetCurrentProport() const; ///@} void ResetStaffDefObjects(); diff --git a/include/vrv/layerelement.h b/include/vrv/layerelement.h index 80d8b26c541..6a9e1cc55d0 100644 --- a/include/vrv/layerelement.h +++ b/include/vrv/layerelement.h @@ -14,13 +14,12 @@ #include "atts_shared.h" #include "facsimileinterface.h" +#include "fraction.h" #include "linkinginterface.h" #include "object.h" namespace vrv { -class Alignment; -class AlignMeterParams; class Beam; class BeamElementCoord; class FTrem; @@ -31,6 +30,8 @@ class MeterSig; class Staff; class StaffAlignment; +struct AlignMeterParams; + // Helper enums enum StaffSearch { ANCESTOR_ONLY = 0, RESOLVE_CROSS_STAFF }; @@ -261,26 +262,26 @@ class LayerElement : public Object, /** * Return the duration if the element has a DurationInterface. */ - double GetAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, + Fraction GetAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; /** * Return the duration if the element has a DurationInterface. * Shortcut assigning default values for AlignParameter. */ - double GetAlignmentDuration(bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; + Fraction GetAlignmentDuration(bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; /** * Return the duration if the content of the layer element with a @sameas attribute. * Used only on beam, tuplet or ftrem have. */ - double GetSameAsContentAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, + Fraction GetSameAsContentAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; - double GetContentAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, + Fraction GetContentAlignmentDuration(const AlignMeterParams ¶ms, bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; - double GetContentAlignmentDuration( + Fraction GetContentAlignmentDuration( bool notGraceOnly = true, data_NOTATIONTYPE notationType = NOTATIONTYPE_cmn) const; /** @@ -303,11 +304,6 @@ class LayerElement : public Object, std::pair CalcElementHorizontalOverlap(const Doc *doc, const std::vector &otherElements, bool areDotsAdjusted, bool isChordElement, bool isLowerElement = false, bool unison = true); - /** - * Helper function to set shortening for elements with beam interface - */ - virtual void SetElementShortening(int shortening) {} - /** * Get the stem mod for the element (if any) */ @@ -329,12 +325,6 @@ class LayerElement : public Object, */ MapOfDotLocs CalcOptimalDotLocations(); - /** - * Calculate the overlap with other layer elements that - * are placed within the duration of the element - */ - int CalcLayerOverlap(const Doc *doc, int direction, int y1, int y2); - //----------// // Functors // //----------// diff --git a/include/vrv/measure.h b/include/vrv/measure.h index dcf96d15243..8069f161ae0 100644 --- a/include/vrv/measure.h +++ b/include/vrv/measure.h @@ -316,7 +316,7 @@ class Measure : public Object, /** * Read only access to m_scoreTimeOffset */ - double GetLastTimeOffset() const { return m_scoreTimeOffset.back(); } + Fraction GetLastTimeOffset() const { return m_scoreTimeOffset.back(); } /** * Return the real time offset in milliseconds @@ -331,7 +331,7 @@ class Measure : public Object, */ ///@{ void ClearScoreTimeOffset() { m_scoreTimeOffset.clear(); } - void AddScoreTimeOffset(double offset) { m_scoreTimeOffset.push_back(offset); } + void AddScoreTimeOffset(Fraction offset) { m_scoreTimeOffset.push_back(offset); } void ClearRealTimeOffset() { m_realTimeOffsetMilliseconds.clear(); } void AddRealTimeOffset(double milliseconds) { m_realTimeOffsetMilliseconds.push_back(milliseconds); } ///@} @@ -448,7 +448,7 @@ class Measure : public Object, /** * Start time state variables. */ - std::vector m_scoreTimeOffset; + std::vector m_scoreTimeOffset; std::vector m_realTimeOffsetMilliseconds; double m_currentTempo; diff --git a/include/vrv/metersig.h b/include/vrv/metersig.h index 585c259b9c4..ae5304a7138 100644 --- a/include/vrv/metersig.h +++ b/include/vrv/metersig.h @@ -54,6 +54,15 @@ class MeterSig : public LayerElement, /** Evaluate additive meter counts */ int GetTotalCount() const; + /** Return the implicit unit according to the sym (if any, return 0 otherwise) */ + int GetSymImplicitUnit() const; + + /** + * Return the unit (int) as data_DURATION (up to 32). + * Return DURATION_4 if no match. + */ + data_DURATION GetUnitAsDur() const; + /** Retrieves the symbol glyph */ char32_t GetSymbolGlyph() const; diff --git a/include/vrv/midifunctor.h b/include/vrv/midifunctor.h index 8d7600bdf10..47e4b47d3bf 100644 --- a/include/vrv/midifunctor.h +++ b/include/vrv/midifunctor.h @@ -65,7 +65,7 @@ class InitOnsetOffsetFunctor : public Functor { // private: // The current score time in the measure (incremented by each element) - double m_currentScoreTime; + Fraction m_currentScoreTime; // The current real time in seconds in the measure (incremented by each element) double m_currentRealTimeSeconds; // The current time alignment parameters @@ -127,7 +127,7 @@ class InitMaxMeasureDurationFunctor : public Functor { // private: // The current score time - double m_currentScoreTime; + Fraction m_currentScoreTime; // The current time in seconds double m_currentRealTimeSeconds; // The current tempo @@ -423,7 +423,7 @@ class GenerateTimemapFunctor : public ConstFunctor { // private: // The score time from the start of the piece to the previous barline in quarter notes - double m_scoreTimeOffset; + Fraction m_scoreTimeOffset; // Real time from the start of the piece to the previous barline in ms double m_realTimeOffsetMilliseconds; // The current tempo diff --git a/include/vrv/note.h b/include/vrv/note.h index b6b8261ac6f..aaf6a461b56 100644 --- a/include/vrv/note.h +++ b/include/vrv/note.h @@ -123,30 +123,13 @@ class Note : public LayerElement, const Accid *GetDrawingAccid() const; ///@} - /** - * @name Setter and getter for the drawing staff loc. - * This is set by the CalcAlignmentPitchPosFunctor. - */ - ///@{ - void SetDrawingLoc(int drawingLoc) { m_drawingLoc = drawingLoc; } - int GetDrawingLoc() const { return m_drawingLoc; } - ///@} - - /** - * Check if the note has ledger lines. - * If staff is passed, use it for getting the staff line number. - * Otherwise, it will look for the Staff ancestor. - * Set the value of ledger lines above or below. - */ - bool HasLedgerLines(int &linesAbove, int &linesBelow, const Staff *staff = NULL) const; - /** * Overriding functions to return information from chord parent if any */ ///@{ Chord *IsChordTone(); const Chord *IsChordTone() const; - int GetDrawingDur() const; + data_DURATION GetDrawingDur() const; bool IsNoteGroupExtreme() const; // used to find if it is the highest or lowest note in a note group ///@} @@ -211,7 +194,7 @@ class Note : public LayerElement, /** * Return a SMuFL code for the notehead */ - char32_t GetNoteheadGlyph(const int duration) const; + char32_t GetNoteheadGlyph(const data_DURATION duration) const; /** * Check whether current note is enharmonic with another @@ -326,11 +309,6 @@ class Note : public LayerElement, public: // private: - /** - * The drawing location of the note - */ - int m_drawingLoc; - /** * A fling indicating if the note head is flipped */ diff --git a/include/vrv/options.h b/include/vrv/options.h index e5989d79738..5435e2d7721 100644 --- a/include/vrv/options.h +++ b/include/vrv/options.h @@ -88,7 +88,7 @@ enum option_SMUFLTEXTFONT { SMUFLTEXTFONT_embedded = 0, SMUFLTEXTFONT_linked, SM // Option //---------------------------------------------------------------------------- -enum class OptionsCategory { None, Base, General, Layout, Mensural, Margins, Midi, Selectors, Full }; +enum class OptionsCategory { None, Base, General, Json, Layout, Mensural, Margins, Midi, Selectors, Full }; /** * This class is a base class of each styling parameter @@ -842,6 +842,13 @@ class Options { OptionBool m_ligatureAsBracket; OptionBool m_mensuralToMeasure; + /** + * Additional options for passing method JSON options to the command-line + */ + OptionGrp m_jsonCmdLineOptions; + + OptionString m_timemapOptions; + /** * Deprecated options */ diff --git a/include/vrv/page.h b/include/vrv/page.h index f1751100c99..6ef18fe2850 100644 --- a/include/vrv/page.h +++ b/include/vrv/page.h @@ -166,9 +166,9 @@ class Page : public Object { void AdjustSylSpacingByVerse(const IntTree &verseTree, Doc *doc); /** - * Check whether vertical justification is required for the current page + * Reduces the justifiable height based on the --justification-max-vertical option */ - bool IsJustificationRequired(const Doc *doc); + void ReduceJustifiableHeight(const Doc *doc); // public: diff --git a/include/vrv/positioninterface.h b/include/vrv/positioninterface.h index 4cc01c49909..554b200037f 100644 --- a/include/vrv/positioninterface.h +++ b/include/vrv/positioninterface.h @@ -57,6 +57,14 @@ class PositionInterface : public Interface, public AttStaffLoc, public AttStaffL */ bool HasIdenticalPositionInterface(const PositionInterface *otherPositionInterface) const; + /** + * Check if the note has ledger lines. + * If staff is passed, use it for getting the staff line number. + * Otherwise, it will look for the Staff ancestor. + * Set the value of ledger lines above or below. + */ + bool HasLedgerLines(int &linesAbove, int &linesBelow, const Staff *staff) const; + //-----------------// // Pseudo functors // //-----------------// diff --git a/include/vrv/proport.h b/include/vrv/proport.h index ad3db4c2f2b..8aa0c240ca4 100644 --- a/include/vrv/proport.h +++ b/include/vrv/proport.h @@ -34,6 +34,11 @@ class Proport : public LayerElement, public AttDurationRatio { std::string GetClassName() const override { return "Proport"; } ///@} + int GetCumulatedNum() const; + int GetCumulatedNumbase() const; + + void Cumulate(const Proport *proport); + /** Override the method since alignment is required */ bool HasToBeAligned() const override { return true; } @@ -52,6 +57,9 @@ class Proport : public LayerElement, public AttDurationRatio { public: // private: + /** the cumulated num and numbase */ + int m_cumulatedNum; + int m_cumulatedNumbase; }; } // namespace vrv diff --git a/include/vrv/resources.h b/include/vrv/resources.h index 636e0c8a41f..79b976e1c3b 100644 --- a/include/vrv/resources.h +++ b/include/vrv/resources.h @@ -8,6 +8,7 @@ #ifndef __VRV_RESOURCES_H__ #define __VRV_RESOURCES_H__ +#include #include //---------------------------------------------------------------------------- @@ -65,11 +66,9 @@ class Resources { /** Load all music fonts available in the resource directory */ bool LoadAll(); /** Set the fallback font (Leipzig or Bravura) when some glyphs are missing in the current font */ - bool SetFallback(const std::string &fontName); + void SetFallbackFont(const std::string &fontName); /** Get the fallback font name */ - std::string GetFallbackFont() const { return m_defaultFontName; } - /** Init the text font (bounding boxes and ASCII only) */ - bool InitTextFont(const std::string &fontName, const StyleAttributes &style); + std::string GetFallbackFont() const { return m_fallbackFontName; } /** Select a particular font */ bool SetCurrentFont(const std::string &fontName, bool allowLoading = false); @@ -160,6 +159,9 @@ class Resources { bool LoadFont(const std::string &fontName, ZipFileReader *zipFile = NULL); + /** Init the text font (bounding boxes and ASCII only) */ + bool InitTextFont(const std::string &fontName, const StyleAttributes &style); + const GlyphTable &GetCurrentGlyphTable() const { return m_loadedFonts.at(m_currentFontName).GetGlyphTable(); }; const GlyphTable &GetFallbackGlyphTable() const { return m_loadedFonts.at(m_fallbackFontName).GetGlyphTable(); }; @@ -177,6 +179,9 @@ class Resources { */ GlyphNameTable m_glyphNameTable; + /** Cache of the last glyph that was looked up in loaded fonts */ + mutable std::optional> m_cachedGlyph; + //----------------// // Static members // //----------------// diff --git a/include/vrv/rest.h b/include/vrv/rest.h index b737eebc0d7..506df84a891 100644 --- a/include/vrv/rest.h +++ b/include/vrv/rest.h @@ -84,7 +84,7 @@ class Rest : public LayerElement, */ ///@{ char32_t GetRestGlyph() const; - char32_t GetRestGlyph(const int duration) const; + char32_t GetRestGlyph(const data_DURATION duration) const; ///@} /** diff --git a/include/vrv/setscoredeffunctor.h b/include/vrv/setscoredeffunctor.h index 60e3d9af41d..6c4eaa18a1b 100644 --- a/include/vrv/setscoredeffunctor.h +++ b/include/vrv/setscoredeffunctor.h @@ -136,6 +136,7 @@ class ScoreDefSetCurrentFunctor : public DocFunctor { FunctorCode VisitMeasure(Measure *measure) override; FunctorCode VisitMensur(Mensur *mensur) override; FunctorCode VisitPage(Page *page) override; + FunctorCode VisitProport(Proport *proport) override; FunctorCode VisitScore(Score *score) override; FunctorCode VisitScoreDef(ScoreDef *scoreDef) override; FunctorCode VisitStaff(Staff *staff) override; diff --git a/include/vrv/slur.h b/include/vrv/slur.h index 15fb1174a3c..6c6e6ac8d79 100644 --- a/include/vrv/slur.h +++ b/include/vrv/slur.h @@ -152,8 +152,8 @@ class Slur : public ControlElement, * Calculate the staff where the slur's floating curve positioner lives */ ///@{ - Staff *CalculateExtremalStaff(const Staff *staff, int xMin, int xMax); - const Staff *CalculateExtremalStaff(const Staff *staff, int xMin, int xMax) const; + Staff *CalculatePrincipalStaff(const Staff *staff, int xMin, int xMax); + const Staff *CalculatePrincipalStaff(const Staff *staff, int xMin, int xMax) const; ///@} /** diff --git a/include/vrv/timemap.h b/include/vrv/timemap.h index 2545af4fca6..dc5bee98dfc 100644 --- a/include/vrv/timemap.h +++ b/include/vrv/timemap.h @@ -15,6 +15,12 @@ //---------------------------------------------------------------------------- +#include "horizontalaligner.h" + +//---------------------------------------------------------------------------- + +#include "jsonxx.h" + namespace vrv { class Object; @@ -28,7 +34,7 @@ class Object; */ struct TimemapEntry { double tempo = -1000.0; - double qstamp; + double tstamp; std::vector notesOn; std::vector notesOff; std::vector restsOn; @@ -59,12 +65,14 @@ class Timemap { /** * Return (and possibly add) an entry for the given time. */ - TimemapEntry &GetEntry(double time) { return m_map[time]; } + TimemapEntry &GetEntry(const Fraction &time) { return m_map[time]; } /** * Write the current timemap to a JSON string */ - void ToJson(std::string &output, bool includetRests, bool includetMeasures); + void ToJson(std::string &output, bool includeRests, bool includeMeasures, bool useFractions); + + static jsonxx::Array ToArray(const Fraction &fraction); private: // @@ -72,7 +80,7 @@ class Timemap { // private: /** The map with time values as keys */ - std::map m_map; + std::map m_map; }; // class Timemap diff --git a/include/vrv/timestamp.h b/include/vrv/timestamp.h index c715b569ec0..71e208592c9 100644 --- a/include/vrv/timestamp.h +++ b/include/vrv/timestamp.h @@ -39,9 +39,9 @@ class TimestampAttr : public LayerElement { ///@} /** - * Returns the duration (in double) for the Timestamp. + * Returns the duration (in Fraction) for the Timestamp. */ - double GetTimestampAttrAlignmentDuration(int meterUnit) const; + Fraction GetTimestampAttrAlignmentDuration(data_DURATION meterUnit) const; //----------// // Functors // diff --git a/include/vrv/toolkit.h b/include/vrv/toolkit.h index 61bea74b805..f13232fdadf 100644 --- a/include/vrv/toolkit.h +++ b/include/vrv/toolkit.h @@ -286,7 +286,7 @@ class Toolkit { * * @remark nojs * - * @param outputTo the output to value as string + * @param outputTo the value to output as string * @return True if the option was successfully set */ bool SetOutputTo(std::string const &outputTo); @@ -313,7 +313,7 @@ class Toolkit { ///@{ /** - * Edit the MEI data. + * Edit the MEI data - experimental code not to rely on. * * @param editorAction The editor actions as a stringified JSON object * @return True if the edit action was successfully applied @@ -321,7 +321,7 @@ class Toolkit { bool Edit(const std::string &editorAction); /** - * Return the editor status. + * Return the editor status - experimental code not to rely on. * * @return The editor status as a string **/ diff --git a/include/vrv/toolkitdef.h b/include/vrv/toolkitdef.h index 246a4c1bc74..254c8449809 100644 --- a/include/vrv/toolkitdef.h +++ b/include/vrv/toolkitdef.h @@ -19,6 +19,7 @@ enum FileFormat { HUMMIDI, PAE, ABC, + CMME, DARMS, VOLPIANO, MUSICXML, diff --git a/include/vrv/vrv.h b/include/vrv/vrv.h index daec31198e2..9a8a80937cf 100644 --- a/include/vrv/vrv.h +++ b/include/vrv/vrv.h @@ -22,6 +22,7 @@ #include #endif +#include "attdef.h" #include "atttypes.h" #include "toolkitdef.h" @@ -86,6 +87,11 @@ std::string UTF32to8(const std::u32string &in); */ std::u32string UTF8to32(const std::string &in); +/** + * Utility for converting UTF16 (std::u16string) to UTF-8 + */ +std::string UTF16to8(const std::u16string &in); + /** * Format a string using vsnprintf. * The maximum length is giving by STRING_FORMAT_MAX_LEN @@ -126,6 +132,12 @@ std::string FromCamelCase(const std::string &s); */ std::string ToCamelCase(const std::string &s); +/* + * Min / Max for data_DURATION (std::min/max not possible) + */ +data_DURATION DurationMin(data_DURATION dur1, data_DURATION dur2); +data_DURATION DurationMax(data_DURATION dur1, data_DURATION dur2); + /** * */ diff --git a/include/vrv/vrvdef.h b/include/vrv/vrvdef.h index 66c40feceb4..b596eac7762 100644 --- a/include/vrv/vrvdef.h +++ b/include/vrv/vrvdef.h @@ -430,8 +430,6 @@ typedef std::map StaffN_LayerN_VerseN_t; #define isIn(x, a, b) (((x) >= std::min((a), (b))) && ((x) <= std::max((a), (b)))) -#define durRound(dur) round(dur *pow(10, 8)) / pow(10, 8) - /** * Codes returned by Functors. * Default is FUNCTOR_CONTINUE. @@ -670,6 +668,16 @@ enum GraphicID { PRIMARY = 0, SPANNING, SYMBOLREF }; enum MeasureType { MEASURED = 0, UNMEASURED, NEUMELINE }; +//---------------------------------------------------------------------------- +// The score time unit (quarter note) +//---------------------------------------------------------------------------- + +#define SCORE_TIME_UNIT 4 + +//---------------------------------------------------------------------------- +// Section representing a line in neon +//---------------------------------------------------------------------------- + #define NEUME_LINE_TYPE "neon-neume-line" //---------------------------------------------------------------------------- diff --git a/libmei/addons/att.cpp b/libmei/addons/att.cpp index 97f3d1e1a25..74cb90d94dc 100644 --- a/libmei/addons/att.cpp +++ b/libmei/addons/att.cpp @@ -32,7 +32,9 @@ std::string Att::StrToStr(std::string str) const std::string Att::DblToStr(double data) const { - return StringFormat("%f", data); + std::stringstream sstream; + sstream << round(data * 10000.0) / 10000.0; + return sstream.str(); } std::string Att::IntToStr(int data) const @@ -365,7 +367,9 @@ data_KEYSIGNATURE Att::StrToKeysignature(const std::string &value, bool logWarni std::string Att::MeasurebeatToStr(data_MEASUREBEAT data) const { - return StringFormat("%dm+%.4f", data.first, data.second); + std::stringstream sstream; + sstream << data.first << "m+" << round(data.second * 10000.0) / 10000.0; + return sstream.str(); } data_MEASUREBEAT Att::StrToMeasurebeat(std::string value, bool) const diff --git a/libmei/addons/attdef.h b/libmei/addons/attdef.h index fd991b11345..04ee0b3c3ed 100644 --- a/libmei/addons/attdef.h +++ b/libmei/addons/attdef.h @@ -33,32 +33,8 @@ typedef double data_VU; // Durations //---------------------------------------------------------------------------- -/** - * These duration values are used for internal calculation and differ from the - * MEI data.DURATION types (see below) - */ -#define DUR_NONE -32 -#define DUR_MX -1 // maxima -#define DUR_LG 0 // longa -#define DUR_BR 1 // brevis -#define DUR_1 2 // whole note (semibrevis) -#define DUR_2 3 // half note (minima) -#define DUR_4 4 // ... -#define DUR_8 5 -#define DUR_16 6 -#define DUR_32 7 -#define DUR_64 8 -#define DUR_128 9 -#define DUR_256 10 -#define DUR_512 11 -#define DUR_1024 12 // this is it for now // used for alignement -#define DUR_MAX 1024 -// mensural duration -#define DUR_MENSURAL_OFFSET (2 * DUR_MAX) -#define DUR_MENSURAL_MASK (2 * DUR_MAX - 1) -// used for mensural alignment -#define DUR_MENSURAL_REF 1728 +#define DUR_MAX 2048 //---------------------------------------------------------------------------- // MEI data defines @@ -101,12 +77,13 @@ typedef std::vector> data_BULGE; * MEI data.DURATION */ enum data_DURATION { - DURATION_NONE = DUR_NONE, - DURATION_long = DUR_LG, + DURATION_NONE = -2, + DURATION_maxima, // -1 + DURATION_long, // 0 DURATION_breve, DURATION_1, DURATION_2, - DURATION_4, + DURATION_4, // 4 DURATION_8, DURATION_16, DURATION_32, @@ -114,11 +91,10 @@ enum data_DURATION { DURATION_128, DURATION_256, DURATION_512, - DURATION_1024, + DURATION_1024, // 12 DURATION_2048, - DURATION_maxima = DUR_MX, - DURATION_longa = DUR_MENSURAL_OFFSET + DUR_LG, - DURATION_brevis, + DURATION_longa = 100, + DURATION_brevis, // 101 DURATION_semibrevis, DURATION_minima, DURATION_semiminima, diff --git a/libmei/datatypes.yml b/libmei/datatypes.yml index 165866c920e..4586cc27674 100644 --- a/libmei/datatypes.yml +++ b/libmei/datatypes.yml @@ -187,6 +187,11 @@ defaults: data_STAFFREL() modules: + cmn: + att.bracketSpan.log: + func: + type: bracketSpanLog_FUNC + externalsymbols: att.extsym: glyphnum: diff --git a/libmei/dist/attmodule.cpp b/libmei/dist/attmodule.cpp index 74f400b5c03..05323880d55 100644 --- a/libmei/dist/attmodule.cpp +++ b/libmei/dist/attmodule.cpp @@ -304,7 +304,7 @@ bool AttModule::SetCmn(Object *element, const std::string &attrType, const std:: AttBracketSpanLog *att = dynamic_cast(element); assert(att); if (attrType == "func") { - att->SetFunc(att->StrToStr(attrValue)); + att->SetFunc(att->StrToBracketSpanLogFunc(attrValue)); return true; } } @@ -599,7 +599,7 @@ void AttModule::GetCmn(const Object *element, ArrayOfStrAttr *attributes) const AttBracketSpanLog *att = dynamic_cast(element); assert(att); if (att->HasFunc()) { - attributes->push_back({ "func", att->StrToStr(att->GetFunc()) }); + attributes->push_back({ "func", att->BracketSpanLogFuncToStr(att->GetFunc()) }); } } if (element->HasAttClass(ATT_CUTOUT)) { diff --git a/libmei/dist/atts_cmn.cpp b/libmei/dist/atts_cmn.cpp index 837e1dd4f66..003e64fa6f2 100644 --- a/libmei/dist/atts_cmn.cpp +++ b/libmei/dist/atts_cmn.cpp @@ -373,14 +373,14 @@ AttBracketSpanLog::AttBracketSpanLog() : Att() void AttBracketSpanLog::ResetBracketSpanLog() { - m_func = ""; + m_func = bracketSpanLog_FUNC_NONE; } bool AttBracketSpanLog::ReadBracketSpanLog(pugi::xml_node element, bool removeAttr) { bool hasAttribute = false; if (element.attribute("func")) { - this->SetFunc(StrToStr(element.attribute("func").value())); + this->SetFunc(StrToBracketSpanLogFunc(element.attribute("func").value())); if (removeAttr) element.remove_attribute("func"); hasAttribute = true; } @@ -391,7 +391,7 @@ bool AttBracketSpanLog::WriteBracketSpanLog(pugi::xml_node element) { bool wroteAttribute = false; if (this->HasFunc()) { - element.append_attribute("func") = StrToStr(this->GetFunc()).c_str(); + element.append_attribute("func") = BracketSpanLogFuncToStr(this->GetFunc()).c_str(); wroteAttribute = true; } return wroteAttribute; @@ -399,7 +399,7 @@ bool AttBracketSpanLog::WriteBracketSpanLog(pugi::xml_node element) bool AttBracketSpanLog::HasFunc() const { - return (m_func != ""); + return (m_func != bracketSpanLog_FUNC_NONE); } //---------------------------------------------------------------------------- diff --git a/libmei/dist/atts_cmn.h b/libmei/dist/atts_cmn.h index 83f97531ef0..6399e3a03e4 100644 --- a/libmei/dist/atts_cmn.h +++ b/libmei/dist/atts_cmn.h @@ -435,14 +435,14 @@ class AttBracketSpanLog : public Att { * to the default value) **/ ///@{ - void SetFunc(std::string func_) { m_func = func_; } - std::string GetFunc() const { return m_func; } + void SetFunc(bracketSpanLog_FUNC func_) { m_func = func_; } + bracketSpanLog_FUNC GetFunc() const { return m_func; } bool HasFunc() const; ///@} private: /** Describes the function of the bracketed event sequence. **/ - std::string m_func; + bracketSpanLog_FUNC m_func; }; //---------------------------------------------------------------------------- diff --git a/libmei/poetry.lock b/libmei/poetry.lock index eb9bea4e236..3e2a8d86143 100644 --- a/libmei/poetry.lock +++ b/libmei/poetry.lock @@ -2,172 +2,221 @@ [[package]] name = "lxml" -version = "4.9.4" +version = "5.3.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +python-versions = ">=3.6" files = [ - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722"}, - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1"}, - {file = "lxml-4.9.4-cp27-cp27m-win32.whl", hash = "sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013"}, - {file = "lxml-4.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48"}, - {file = "lxml-4.9.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7"}, - {file = "lxml-4.9.4-cp310-cp310-win32.whl", hash = "sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be"}, - {file = "lxml-4.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5"}, - {file = "lxml-4.9.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622"}, - {file = "lxml-4.9.4-cp311-cp311-win32.whl", hash = "sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3"}, - {file = "lxml-4.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8"}, - {file = "lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10"}, - {file = "lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b"}, - {file = "lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66"}, - {file = "lxml-4.9.4-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745"}, - {file = "lxml-4.9.4-cp36-cp36m-win32.whl", hash = "sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be"}, - {file = "lxml-4.9.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02"}, - {file = "lxml-4.9.4-cp37-cp37m-win32.whl", hash = "sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e"}, - {file = "lxml-4.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9"}, - {file = "lxml-4.9.4-cp38-cp38-win32.whl", hash = "sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c"}, - {file = "lxml-4.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46"}, - {file = "lxml-4.9.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab"}, - {file = "lxml-4.9.4-cp39-cp39-win32.whl", hash = "sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec"}, - {file = "lxml-4.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-macosx_11_0_x86_64.whl", hash = "sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137"}, - {file = "lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e"}, + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656"}, + {file = "lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8"}, + {file = "lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03"}, + {file = "lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7"}, + {file = "lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80"}, + {file = "lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b"}, + {file = "lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3406b63232fc7e9b8783ab0b765d7c59e7c59ff96759d8ef9632fca27c7ee4"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ecdd78ab768f844c7a1d4a03595038c166b609f6395e25af9b0f3f26ae1230f"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168f2dfcfdedf611eb285efac1516c8454c8c99caf271dccda8943576b67552e"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa617107a410245b8660028a7483b68e7914304a6d4882b5ff3d2d3eb5948d8c"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:69959bd3167b993e6e710b99051265654133a98f20cec1d9b493b931942e9c16"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:bd96517ef76c8654446fc3db9242d019a1bb5fe8b751ba414765d59f99210b79"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:ab6dd83b970dc97c2d10bc71aa925b84788c7c05de30241b9e96f9b6d9ea3080"}, + {file = "lxml-5.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eec1bb8cdbba2925bedc887bc0609a80e599c75b12d87ae42ac23fd199445654"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a7095eeec6f89111d03dabfe5883a1fd54da319c94e0fb104ee8f23616b572d"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6f651ebd0b21ec65dfca93aa629610a0dbc13dbc13554f19b0113da2e61a4763"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f422a209d2455c56849442ae42f25dbaaba1c6c3f501d58761c619c7836642ec"}, + {file = "lxml-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62f7fdb0d1ed2065451f086519865b4c90aa19aed51081979ecd05a21eb4d1be"}, + {file = "lxml-5.3.0-cp311-cp311-win32.whl", hash = "sha256:c6379f35350b655fd817cd0d6cbeef7f265f3ae5fedb1caae2eb442bbeae9ab9"}, + {file = "lxml-5.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c52100e2c2dbb0649b90467935c4b0de5528833c76a35ea1a2691ec9f1ee7a1"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e99f5507401436fdcc85036a2e7dc2e28d962550afe1cbfc07c40e454256a859"}, + {file = "lxml-5.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:384aacddf2e5813a36495233b64cb96b1949da72bef933918ba5c84e06af8f0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:874a216bf6afaf97c263b56371434e47e2c652d215788396f60477540298218f"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ab5685d56914b9a2a34d67dd5488b83213d680b0c5d10b47f81da5a16b0b0e"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aac0bbd3e8dd2d9c45ceb82249e8bdd3ac99131a32b4d35c8af3cc9db1657179"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b369d3db3c22ed14c75ccd5af429086f166a19627e84a8fdade3f8f31426e52a"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24037349665434f375645fa9d1f5304800cec574d0310f618490c871fd902b3"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:62d172f358f33a26d6b41b28c170c63886742f5b6772a42b59b4f0fa10526cb1"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:c1f794c02903c2824fccce5b20c339a1a14b114e83b306ff11b597c5f71a1c8d"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:5d6a6972b93c426ace71e0be9a6f4b2cfae9b1baed2eed2006076a746692288c"}, + {file = "lxml-5.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3879cc6ce938ff4eb4900d901ed63555c778731a96365e53fadb36437a131a99"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:74068c601baff6ff021c70f0935b0c7bc528baa8ea210c202e03757c68c5a4ff"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ecd4ad8453ac17bc7ba3868371bffb46f628161ad0eefbd0a855d2c8c32dd81a"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7e2f58095acc211eb9d8b5771bf04df9ff37d6b87618d1cbf85f92399c98dae8"}, + {file = "lxml-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e63601ad5cd8f860aa99d109889b5ac34de571c7ee902d6812d5d9ddcc77fa7d"}, + {file = "lxml-5.3.0-cp312-cp312-win32.whl", hash = "sha256:17e8d968d04a37c50ad9c456a286b525d78c4a1c15dd53aa46c1d8e06bf6fa30"}, + {file = "lxml-5.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:c1a69e58a6bb2de65902051d57fde951febad631a20a64572677a1052690482f"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a"}, + {file = "lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367"}, + {file = "lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb"}, + {file = "lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b"}, + {file = "lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957"}, + {file = "lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d"}, + {file = "lxml-5.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8f0de2d390af441fe8b2c12626d103540b5d850d585b18fcada58d972b74a74e"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1afe0a8c353746e610bd9031a630a95bcfb1a720684c3f2b36c4710a0a96528f"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56b9861a71575f5795bde89256e7467ece3d339c9b43141dbdd54544566b3b94"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:9fb81d2824dff4f2e297a276297e9031f46d2682cafc484f49de182aa5e5df99"}, + {file = "lxml-5.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2c226a06ecb8cdef28845ae976da407917542c5e6e75dcac7cc33eb04aaeb237"}, + {file = "lxml-5.3.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:7d3d1ca42870cdb6d0d29939630dbe48fa511c203724820fc0fd507b2fb46577"}, + {file = "lxml-5.3.0-cp36-cp36m-win32.whl", hash = "sha256:094cb601ba9f55296774c2d57ad68730daa0b13dc260e1f941b4d13678239e70"}, + {file = "lxml-5.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:eafa2c8658f4e560b098fe9fc54539f86528651f61849b22111a9b107d18910c"}, + {file = "lxml-5.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cb83f8a875b3d9b458cada4f880fa498646874ba4011dc974e071a0a84a1b033"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25f1b69d41656b05885aa185f5fdf822cb01a586d1b32739633679699f220391"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23e0553b8055600b3bf4a00b255ec5c92e1e4aebf8c2c09334f8368e8bd174d6"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ada35dd21dc6c039259596b358caab6b13f4db4d4a7f8665764d616daf9cc1d"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:81b4e48da4c69313192d8c8d4311e5d818b8be1afe68ee20f6385d0e96fc9512"}, + {file = "lxml-5.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:2bc9fd5ca4729af796f9f59cd8ff160fe06a474da40aca03fcc79655ddee1a8b"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07da23d7ee08577760f0a71d67a861019103e4812c87e2fab26b039054594cc5"}, + {file = "lxml-5.3.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:ea2e2f6f801696ad7de8aec061044d6c8c0dd4037608c7cab38a9a4d316bfb11"}, + {file = "lxml-5.3.0-cp37-cp37m-win32.whl", hash = "sha256:5c54afdcbb0182d06836cc3d1be921e540be3ebdf8b8a51ee3ef987537455f84"}, + {file = "lxml-5.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f2901429da1e645ce548bf9171784c0f74f0718c3f6150ce166be39e4dd66c3e"}, + {file = "lxml-5.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c56a1d43b2f9ee4786e4658c7903f05da35b923fb53c11025712562d5cc02753"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ee8c39582d2652dcd516d1b879451500f8db3fe3607ce45d7c5957ab2596040"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdf3a3059611f7585a78ee10399a15566356116a4288380921a4b598d807a22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:146173654d79eb1fc97498b4280c1d3e1e5d58c398fa530905c9ea50ea849b22"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0a7056921edbdd7560746f4221dca89bb7a3fe457d3d74267995253f46343f15"}, + {file = "lxml-5.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:9e4b47ac0f5e749cfc618efdf4726269441014ae1d5583e047b452a32e221920"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945"}, + {file = "lxml-5.3.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:213261f168c5e1d9b7535a67e68b1f59f92398dd17a56d934550837143f79c42"}, + {file = "lxml-5.3.0-cp38-cp38-win32.whl", hash = "sha256:218c1b2e17a710e363855594230f44060e2025b05c80d1f0661258142b2add2e"}, + {file = "lxml-5.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:315f9542011b2c4e1d280e4a20ddcca1761993dda3afc7a73b01235f8641e903"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ffc23010330c2ab67fac02781df60998ca8fe759e8efde6f8b756a20599c5de"}, + {file = "lxml-5.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2b3778cb38212f52fac9fe913017deea2fdf4eb1a4f8e4cfc6b009a13a6d3fcc"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c7a688944891086ba192e21c5229dea54382f4836a209ff8d0a660fac06be"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:747a3d3e98e24597981ca0be0fd922aebd471fa99d0043a3842d00cdcad7ad6a"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86a6b24b19eaebc448dc56b87c4865527855145d851f9fc3891673ff97950540"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b11a5d918a6216e521c715b02749240fb07ae5a1fefd4b7bf12f833bc8b4fe70"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b87753c784d6acb8a25b05cb526c3406913c9d988d51f80adecc2b0775d6aa"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:109fa6fede314cc50eed29e6e56c540075e63d922455346f11e4d7a036d2b8cf"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:02ced472497b8362c8e902ade23e3300479f4f43e45f4105c85ef43b8db85229"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:6b038cc86b285e4f9fea2ba5ee76e89f21ed1ea898e287dc277a25884f3a7dfe"}, + {file = "lxml-5.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7437237c6a66b7ca341e868cda48be24b8701862757426852c9b3186de1da8a2"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7f41026c1d64043a36fda21d64c5026762d53a77043e73e94b71f0521939cc71"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:482c2f67761868f0108b1743098640fbb2a28a8e15bf3f47ada9fa59d9fe08c3"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1483fd3358963cc5c1c9b122c80606a3a79ee0875bcac0204149fa09d6ff2727"}, + {file = "lxml-5.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dec2d1130a9cda5b904696cec33b2cfb451304ba9081eeda7f90f724097300a"}, + {file = "lxml-5.3.0-cp39-cp39-win32.whl", hash = "sha256:a0eabd0a81625049c5df745209dc7fcef6e2aea7793e5f003ba363610aa0a3ff"}, + {file = "lxml-5.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:89e043f1d9d341c52bf2af6d02e6adde62e0a46e6755d5eb60dc6e4f0b8aeca2"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83"}, + {file = "lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:94d6c3782907b5e40e21cadf94b13b0842ac421192f26b84c45f13f3c9d5dc27"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c300306673aa0f3ed5ed9372b21867690a17dba38c68c44b287437c362ce486b"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d9b952e07aed35fe2e1a7ad26e929595412db48535921c5013edc8aa4a35ce"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:01220dca0d066d1349bd6a1726856a78f7929f3878f7e2ee83c296c69495309e"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2d9b8d9177afaef80c53c0a9e30fa252ff3036fb1c6494d427c066a4ce6a282f"}, + {file = "lxml-5.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:20094fc3f21ea0a8669dc4c61ed7fa8263bd37d97d93b90f28fc613371e7a875"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ace2c2326a319a0bb8a8b0e5b570c764962e95818de9f259ce814ee666603f19"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e67a0be1639c251d21e35fe74df6bcc40cba445c2cda7c4a967656733249e2"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5350b55f9fecddc51385463a4f67a5da829bc741e38cf689f38ec9023f54ab"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c1fefd7e3d00921c44dc9ca80a775af49698bbfd92ea84498e56acffd4c5469"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:71a8dd38fbd2f2319136d4ae855a7078c69c9a38ae06e0c17c73fd70fc6caad8"}, + {file = "lxml-5.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:97acf1e1fd66ab53dacd2c35b319d7e548380c2e9e8c54525c6e76d21b1ae3b1"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:68934b242c51eb02907c5b81d138cb977b2129a0a75a8f8b60b01cb8586c7b21"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b710bc2b8292966b23a6a0121f7a6c51d45d2347edcc75f016ac123b8054d3f2"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18feb4b93302091b1541221196a2155aa296c363fd233814fa11e181adebc52f"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3eb44520c4724c2e1a57c0af33a379eee41792595023f367ba3952a2d96c2aab"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:609251a0ca4770e5a8768ff902aa02bf636339c5a93f9349b48eb1f606f7f3e9"}, + {file = "lxml-5.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:516f491c834eb320d6c843156440fe7fc0d50b33e44387fcec5b02f0bc118a4c"}, + {file = "lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (==0.29.37)"] +source = ["Cython (>=3.0.11)"] [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "caac7bd3fdbc16f7ca6bff1b11d881e76b8c3c5977301c89aec706c1a7120da5" +content-hash = "e436e8a3d588d2880929e2fe7fb823ccc138b476db01782147cd3e7de229f952" diff --git a/libmei/pyproject.toml b/libmei/pyproject.toml index 9d9900dead3..6ed844ba5c9 100644 --- a/libmei/pyproject.toml +++ b/libmei/pyproject.toml @@ -8,7 +8,7 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.9" pyyaml = "^6.0" -lxml = "^4.9.2" +lxml = "^5.3.0" [build-system] diff --git a/setup.py b/setup.py index a310909ee60..0a7c7d241c0 100644 --- a/setup.py +++ b/setup.py @@ -91,7 +91,7 @@ def get_version() -> str: verovio_module = Extension('verovio._verovio', sources= - glob('./src/*.cpp') + + glob('./src/*.cpp') + glob('./src/hum/*.cpp') + glob('./libmei/dist/*.cpp') + glob('./libmei/addons/*.cpp') + @@ -105,8 +105,8 @@ def get_version() -> str: './src/midi/MidiFile.cpp', './src/midi/MidiMessage.cpp', './bindings/python/verovio.i'], - swig_opts=['-c++', '-outdir', - './bindings/python', '-doxygen'], + swig_opts=['-c++', '-fastproxy', '-olddefs', + '-outdir', './bindings/python', '-doxygen'], include_dirs=['./include/vrv', './include/crc', './include/json', @@ -148,6 +148,7 @@ def get_version() -> str: package_dir={'verovio': './bindings/python', 'verovio.data': './data'}, package_data={ + 'verovio': ['py.typed'], 'verovio.data': [f for f in os.listdir('./data') if (f.endswith('.xml') or f.endswith(".css") or f.endswith(".svg"))], 'verovio.data.Bravura': os.listdir('./data/Bravura'), 'verovio.data.Gootville': os.listdir('./data/Gootville'), @@ -156,7 +157,7 @@ def get_version() -> str: 'verovio.data.Petaluma': os.listdir('./data/Petaluma'), 'verovio.data.text': os.listdir('./data/text'), }, - python_requires='>=3.7', + python_requires='>=3.9', project_urls={ 'Bug Reports': 'https://github.com/rism-digital/verovio/issues', 'Source': 'https://github.com/rism-digital/verovio', diff --git a/src/accid.cpp b/src/accid.cpp index 73a12003ff8..e97ed1e5f85 100644 --- a/src/accid.cpp +++ b/src/accid.cpp @@ -130,7 +130,8 @@ void Accid::AdjustX(LayerElement *element, const Doc *doc, int staffSize, std::v Note *note = vrv_cast(element); int ledgerAbove = 0; int ledgerBelow = 0; - if (note->HasLedgerLines(ledgerAbove, ledgerBelow)) { + Staff *staff = note->GetAncestorStaff(RESOLVE_CROSS_STAFF); + if (note->HasLedgerLines(ledgerAbove, ledgerBelow, staff)) { const int value = doc->GetOptions()->m_ledgerLineExtension.GetValue() * unit + 0.5 * horizontalMargin; horizontalMargin = std::max(horizontalMargin, value); } diff --git a/src/adjustaccidxfunctor.cpp b/src/adjustaccidxfunctor.cpp index 7bc8b01512d..d02ca426361 100644 --- a/src/adjustaccidxfunctor.cpp +++ b/src/adjustaccidxfunctor.cpp @@ -59,7 +59,10 @@ FunctorCode AdjustAccidXFunctor::VisitAlignmentReference(AlignmentReference *ali // Align the octaves for (Accid *accid : accids) { // Skip any accid that was already adjusted - if (m_adjustedAccids.count(accid) > 0) continue; + if (m_adjustedAccids.contains(accid)) continue; + // Skip accid not descendant of a note (e.g., mensural) + if (!accid->GetFirstAncestor(NOTE)) continue; + auto range = octaveEquivalence.equal_range(accid); // Handle at least two octave accids without unisons int octaveAccidCount = 0; @@ -99,7 +102,7 @@ FunctorCode AdjustAccidXFunctor::VisitAlignmentReference(AlignmentReference *ali // Zig-zag processing for (int i = 0, j = count - 1; i < middle; ++i, --j) { // top one - but skip if already adjusted (i.e. octaves) - if (m_adjustedAccids.count(accids.at(i)) == 0) { + if (!m_adjustedAccids.contains(accids.at(i))) { this->AdjustAccidWithSpace(accids.at(i), alignmentReference, staffSize); } @@ -107,7 +110,7 @@ FunctorCode AdjustAccidXFunctor::VisitAlignmentReference(AlignmentReference *ali if (i == j) break; // bottom one - but skip if already adjusted - if (m_adjustedAccids.count(accids.at(j)) == 0) { + if (!m_adjustedAccids.contains(accids.at(j))) { this->AdjustAccidWithSpace(accids.at(j), alignmentReference, staffSize); } } @@ -130,7 +133,7 @@ std::vector AdjustAccidXFunctor::GetAccidentalsForAdjustment(AlignmentR for (Object *child : alignmentReference->GetChildren()) { if (child->Is(ACCID)) { Accid *accid = vrv_cast(child); - if (accid->HasAccid()) accidentals.push_back(accid); + if (accid->HasAccid() && accid->GetFirstAncestor(NOTE)) accidentals.push_back(accid); } } return accidentals; diff --git a/src/adjustarticfunctor.cpp b/src/adjustarticfunctor.cpp index 7bfe283e428..9257b65fba3 100644 --- a/src/adjustarticfunctor.cpp +++ b/src/adjustarticfunctor.cpp @@ -34,11 +34,11 @@ FunctorCode AdjustArticFunctor::VisitArtic(Artic *artic) int yIn, yOut, yRel; Staff *staff = artic->GetAncestorStaff(RESOLVE_CROSS_STAFF); - Beam *beam = vrv_cast(artic->GetFirstAncestor(BEAM)); + const Beam *beam = artic->GetAncestorBeam(); const int staffHeight = m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize) * (staff->m_drawingLines - 1); - Stem *stem = vrv_cast(m_parent->FindDescendantByType(STEM)); - Flag *flag = vrv_cast(m_parent->FindDescendantByType(FLAG)); + const Stem *stem = vrv_cast(m_parent->FindDescendantByType(STEM)); + const Flag *flag = vrv_cast(m_parent->FindDescendantByType(FLAG)); // Avoid artic to be in ledger lines if (artic->GetDrawingPlace() == STAFFREL_above) { int yAboveStem = m_parent->GetDrawingTop(m_doc, staff->m_drawingStaffSize, false) - staff->GetDrawingY(); diff --git a/src/adjustbeamsfunctor.cpp b/src/adjustbeamsfunctor.cpp index c887831d837..ebb4629c4b8 100644 --- a/src/adjustbeamsfunctor.cpp +++ b/src/adjustbeamsfunctor.cpp @@ -63,13 +63,14 @@ FunctorCode AdjustBeamsFunctor::VisitBeam(Beam *beam) m_x2 = beamSegment.m_beamElementCoordRefs.back()->m_x; m_beamSlope = beamSegment.m_beamSlope; m_directionBias = (beam->m_drawingPlace == BEAMPLACE_above) ? 1 : -1; - m_overlapMargin = beam->CalcLayerOverlap(m_doc, m_directionBias, m_y1, m_y2); + m_overlapMargin = this->CalcLayerOverlap(beam); } return FUNCTOR_CONTINUE; } int leftMargin = 0, rightMargin = 0; - const int beamCount = m_outerBeam->GetBeamPartDuration((*beamSegment.m_beamElementCoordRefs.begin())->m_x) - DUR_8; + const int beamCount + = m_outerBeam->GetBeamPartDuration((*beamSegment.m_beamElementCoordRefs.begin())->m_x) - DURATION_8; const int currentBeamYLeft = m_y1 + m_beamSlope * ((*beamSegment.m_beamElementCoordRefs.begin())->m_x - m_x1); const int currentBeamYRight = m_y1 + m_beamSlope * (beamSegment.m_beamElementCoordRefs.back()->m_x - m_x1); leftMargin = (*beamSegment.m_beamElementCoordRefs.begin())->m_yBeam - currentBeamYLeft @@ -130,7 +131,7 @@ FunctorCode AdjustBeamsFunctor::VisitClef(Clef *clef) Staff *staff = clef->GetAncestorStaff(); // find number of beams at current position - const int beams = m_outerBeam->GetBeamPartDuration(clef) - DUR_4; + const int beams = m_outerBeam->GetBeamPartDuration(clef) - DURATION_4; const int beamWidth = m_outerBeam->m_beamWidth; // find beam Y positions that are relevant to current clef const int currentBeamYLeft = m_y1 + m_beamSlope * (clef->GetContentLeft() - m_x1); @@ -147,15 +148,13 @@ FunctorCode AdjustBeamsFunctor::VisitClef(Clef *clef) // calculate margins for the clef const int leftMargin = m_directionBias * (currentBeamYLeft - clefBounds) - beams * beamWidth; const int rightMargin = m_directionBias * (currentBeamYRight - clefBounds) - beams * beamWidth; - const int overlapMargin = std::min(leftMargin, rightMargin); + int overlapMargin = std::min(leftMargin, rightMargin); if (overlapMargin >= 0) return FUNCTOR_CONTINUE; // calculate offset required for the beam + overlapMargin *= -m_directionBias; const int unit = m_doc->GetDrawingUnit(staff->m_drawingStaffSize); - const int unitChangeNumber = ((std::abs(overlapMargin) + unit / 6) / unit); - if (unitChangeNumber > 0) { - const int adjust = unitChangeNumber * unit * m_directionBias; - if (std::abs(adjust) > std::abs(m_overlapMargin)) m_overlapMargin = adjust; - } + const int adjust = this->AdjustOverlapToHalfUnit(overlapMargin, unit); + if (std::abs(adjust) > std::abs(m_overlapMargin)) m_overlapMargin = adjust; return FUNCTOR_CONTINUE; } @@ -180,7 +179,7 @@ FunctorCode AdjustBeamsFunctor::VisitFTrem(FTrem *fTrem) m_x2 = beamSegment.m_beamElementCoordRefs.back()->m_x; m_beamSlope = beamSegment.m_beamSlope; m_directionBias = (fTrem->m_drawingPlace == BEAMPLACE_above) ? 1 : -1; - m_overlapMargin = fTrem->CalcLayerOverlap(m_doc, m_directionBias, m_y1, m_y2); + m_overlapMargin = this->CalcLayerOverlap(fTrem); } return FUNCTOR_CONTINUE; } @@ -298,9 +297,9 @@ FunctorCode AdjustBeamsFunctor::VisitRest(Rest *rest) if (!m_outerBeam) return FUNCTOR_SIBLINGS; // Calculate possible overlap for the rest with beams - const int beams = m_outerBeam->GetBeamPartDuration(rest, false) - DUR_4; + const int beams = m_outerBeam->GetBeamPartDuration(rest, false) - DURATION_4; const int beamWidth = m_outerBeam->m_beamWidth; - const int overlapMargin = rest->Intersects(m_outerBeam, SELF, beams * beamWidth, true) * m_directionBias; + int overlapMargin = rest->Intersects(m_outerBeam, SELF, beams * beamWidth, true) * m_directionBias; // Adjust drawing location for the rest based on the overlap with beams. // Adjustment should be an even number, so that the rest is positioned properly @@ -334,9 +333,9 @@ FunctorCode AdjustBeamsFunctor::VisitRest(Rest *rest) } } + overlapMargin *= -m_directionBias; const int unit = m_doc->GetDrawingUnit(staff->m_drawingStaffSize); - const int unitChangeNumber = std::abs(overlapMargin) / unit + 1; - const int adjust = unitChangeNumber * unit * m_directionBias; + const int adjust = this->AdjustOverlapToHalfUnit(overlapMargin, unit); if (std::abs(adjust) > std::abs(m_overlapMargin)) m_overlapMargin = adjust; return FUNCTOR_CONTINUE; @@ -349,4 +348,87 @@ BeamDrawingInterface *AdjustBeamsFunctor::GetOuterBeamInterface() const return NULL; } +int AdjustBeamsFunctor::CalcLayerOverlap(const LayerElement *beamElement) const +{ + assert(beamElement); + + const Layer *parentLayer = vrv_cast(beamElement->GetFirstAncestor(LAYER)); + if (!parentLayer) return 0; + // Check whether there are elements on the other layer in the duration of the current beam + ListOfConstObjects collidingElementsList = parentLayer->GetLayerElementsForTimeSpanOf(beamElement, true); + // Ignore any elements part of a stem-sameas beam + if (beamElement->Is(BEAM)) { + const Beam *beam = vrv_cast(beamElement); + const Beam *stemSameAsBeam = beam->GetStemSameasBeam(); + if (stemSameAsBeam) { + collidingElementsList.remove_if([stemSameAsBeam](const Object *object) { + const LayerElement *layerElement = vrv_cast(object); + return (layerElement->GetAncestorBeam() == stemSameAsBeam); + }); + } + } + // If there are none - stop here, there's nothing to be done + if (collidingElementsList.empty()) return 0; + + const Staff *staff = beamElement->GetAncestorStaff(); + const int drawingY = beamElement->GetDrawingY(); + const int yMin = std::min(m_y1, m_y2); + const int yMax = std::max(m_y1, m_y2); + const int unit = m_doc->GetDrawingUnit(staff->m_drawingStaffSize); + + int elementOverlap = 0; + std::vector elementOverlaps; + for (const Object *object : collidingElementsList) { + const LayerElement *layerElement = vrv_cast(object); + if (!beamElement->HorizontalContentOverlap(object)) continue; + const int elementBottom = layerElement->GetContentBottom(); + const int elementTop = layerElement->GetContentTop(); + if (m_directionBias > 0) { + // Ensure that there's actual overlap first + if (elementBottom > yMax) continue; + if (drawingY >= elementTop) continue; + // If there is a mild overlap, then decrease the beam stem length via negative overlap + if (elementBottom > yMax - 3 * unit) { + elementOverlap = std::min(elementBottom - yMax, 0); + } + else { + elementOverlap = std::max(elementTop - yMin, 0); + } + } + else { + // Ensure that there's actual overlap first + if (elementTop < yMin) continue; + if (drawingY <= elementBottom) continue; + // If there is a mild overlap, then decrease the beam stem length via negative overlap + if (elementTop < yMin + 3 * unit) { + elementOverlap = std::min(yMin - elementTop, 0); + } + else { + elementOverlap = std::max(yMax - elementBottom, 0); + } + } + elementOverlaps.emplace_back(elementOverlap); + } + if (elementOverlaps.empty()) return 0; + + const auto [minOverlap, maxOverlap] = std::minmax_element(elementOverlaps.begin(), elementOverlaps.end()); + int overlap = 0; + if (*maxOverlap > 0) { + overlap = *maxOverlap * m_directionBias; + } + else if (*minOverlap < 0) { + overlap = (*minOverlap - unit) * m_directionBias; + } + const int adjust = this->AdjustOverlapToHalfUnit(overlap, unit); + return adjust; +} + +int AdjustBeamsFunctor::AdjustOverlapToHalfUnit(int overlap, int unit) const +{ + const int overlapSign = (overlap >= 0) ? 1 : -1; + const int halfUnit = unit / 2; + const int halfUnitChangeNumber = (std::abs(overlap) + halfUnit / 2) / halfUnit; + return halfUnitChangeNumber * halfUnit * overlapSign; +} + } // namespace vrv diff --git a/src/adjustxposfunctor.cpp b/src/adjustxposfunctor.cpp index 1aa27238bf7..eb923f0a974 100644 --- a/src/adjustxposfunctor.cpp +++ b/src/adjustxposfunctor.cpp @@ -406,8 +406,8 @@ std::pair AdjustXPosFunctor::CalculateXPosOffset(LayerElement *layerEl if (layerElement->Is({ NOTE, CHORD }) && !layerElement->GetFirstAncestor(TUPLET) && bboxElement->Is(REST) && bboxElement->GetFirstAncestor(TUPLET)) { Rest *rest = vrv_cast(bboxElement); - if (rest->GetDur() > DUR_8) { - overlap = 1.5 * (rest->GetDur() - DUR_8) * drawingUnit; + if (rest->GetDur() > DURATION_8) { + overlap = 1.5 * (rest->GetDur() - DURATION_8) * drawingUnit; } } } diff --git a/src/alignfunctor.cpp b/src/alignfunctor.cpp index 779518f07de..f838825000b 100644 --- a/src/alignfunctor.cpp +++ b/src/alignfunctor.cpp @@ -18,6 +18,7 @@ #include "nc.h" #include "neume.h" #include "page.h" +#include "proport.h" #include "rend.h" #include "rest.h" #include "runningelement.h" @@ -40,9 +41,7 @@ namespace vrv { AlignHorizontallyFunctor::AlignHorizontallyFunctor(Doc *doc) : DocFunctor(doc) { m_measureAligner = NULL; - m_time = 0.0; - m_currentParams.mensur = NULL; - m_currentParams.meterSig = NULL; + m_time = 0; m_notationType = NOTATIONTYPE_cmn; m_scoreDefRole = SCOREDEF_NONE; m_isFirstMeasure = false; @@ -53,10 +52,11 @@ FunctorCode AlignHorizontallyFunctor::VisitLayer(Layer *layer) { m_currentParams.mensur = layer->GetCurrentMensur(); m_currentParams.meterSig = layer->GetCurrentMeterSig(); + m_currentParams.proport = layer->GetCurrentProport(); // We are starting a new layer, reset the time; // We set it to -1.0 for the scoreDef attributes since they have to be aligned before any timestamp event (-1.0) - m_time = DUR_MAX * -1.0; + m_time = -1; m_scoreDefRole = m_isFirstMeasure ? SCOREDEF_SYSTEM : SCOREDEF_INTERMEDIATE; @@ -87,7 +87,7 @@ FunctorCode AlignHorizontallyFunctor::VisitLayer(Layer *layer) m_scoreDefRole = SCOREDEF_NONE; // Now we have to set it to 0.0 since we will start aligning musical content - m_time = 0.0; + m_time = 0; return FUNCTOR_CONTINUE; } @@ -169,15 +169,15 @@ FunctorCode AlignHorizontallyFunctor::VisitLayerElement(LayerElement *layerEleme Alignment *alignment = firstNote->GetAlignment(); layerElement->SetAlignment(alignment); alignment->AddLayerElementRef(layerElement); - double duration = layerElement->GetAlignmentDuration(m_currentParams, true, m_notationType); - m_time += duration; + Fraction duration = layerElement->GetAlignmentDuration(m_currentParams, true, m_notationType); + m_time = m_time + duration; return FUNCTOR_CONTINUE; } } // We do not align these (container). Any other? else if (layerElement->Is({ BEAM, LIGATURE, FTREM, TUPLET })) { - double duration = layerElement->GetSameAsContentAlignmentDuration(m_currentParams, true, m_notationType); - m_time += duration; + Fraction duration = layerElement->GetSameAsContentAlignmentDuration(m_currentParams, true, m_notationType); + m_time = m_time + duration; return FUNCTOR_CONTINUE; } else if (layerElement->Is(BARLINE)) { @@ -234,6 +234,16 @@ FunctorCode AlignHorizontallyFunctor::VisitLayerElement(LayerElement *layerEleme type = ALIGNMENT_SCOREDEF_METERSIG; } } + else if (layerElement->Is(PROPORT)) { + // replace the current proport + const Proport *previous = (m_currentParams.proport) ? (m_currentParams.proport) : NULL; + m_currentParams.proport = vrv_cast(layerElement); + assert(m_currentParams.proport); + if (previous) { + m_currentParams.proport->Cumulate(previous); + } + type = ALIGNMENT_PROPORT; + } else if (layerElement->Is({ MULTIREST, MREST, MRPT })) { type = ALIGNMENT_FULLMEASURE; } @@ -251,6 +261,9 @@ FunctorCode AlignHorizontallyFunctor::VisitLayerElement(LayerElement *layerEleme type = ALIGNMENT_DOT; } } + else if (layerElement->Is(CUSTOS)) { + type = ALIGNMENT_CUSTOS; + } else if (layerElement->Is(ACCID)) { // accid within note was already taken into account by noteParent type = ALIGNMENT_ACCID; @@ -304,7 +317,7 @@ FunctorCode AlignHorizontallyFunctor::VisitLayerElement(LayerElement *layerEleme type = ALIGNMENT_GRACENOTE; } - double duration = 0.0; + Fraction duration; // We have already an alignment with grace note children - skip this if (!layerElement->GetAlignment()) { // get the duration of the event @@ -350,7 +363,7 @@ FunctorCode AlignHorizontallyFunctor::VisitLayerElement(LayerElement *layerEleme if (!layerElement->Is(TIMESTAMP_ATTR)) { // increase the time position, but only when not a timestamp (it would actually do nothing) - m_time += duration; + m_time = m_time + duration; } return FUNCTOR_CONTINUE; @@ -376,7 +389,9 @@ FunctorCode AlignHorizontallyFunctor::VisitMeasure(Measure *measure) FunctorCode AlignHorizontallyFunctor::VisitMeasureEnd(Measure *measure) { - int meterUnit = m_currentParams.meterSig ? m_currentParams.meterSig->GetUnit() : 4; + data_DURATION meterUnit = (m_currentParams.meterSig && m_currentParams.meterSig->HasUnit()) + ? m_currentParams.meterSig->GetUnitAsDur() + : DURATION_4; measure->m_measureAligner.SetInitialTstamp(meterUnit); // We also need to align the timestamps - we do it at the end since we need the *meterSig to be initialized by a diff --git a/src/beam.cpp b/src/beam.cpp index 062426112f6..f779239884d 100644 --- a/src/beam.cpp +++ b/src/beam.cpp @@ -204,7 +204,7 @@ void BeamSegment::CalcSetStemValues(const Staff *staff, const Doc *doc, const Be int stemOffset = 0; const int unit = doc->GetDrawingUnit(staff->m_drawingStaffSize); if (coord->m_partialFlagPlace == coord->m_beamRelativePlace) { - stemOffset = (coord->m_dur - DUR_8) * beamInterface->m_beamWidth; + stemOffset = (coord->m_dur - DURATION_8) * beamInterface->m_beamWidth; } else if (el->GetIsInBeamSpan() && (coord->m_partialFlagPlace != BEAMPLACE_above) && (coord->m_stem->GetDrawingStemDir() == STEMDIRECTION_up)) { @@ -457,7 +457,7 @@ void BeamSegment::AdjustBeamToFrenchStyle(const BeamDrawingInterface *beamInterf assert(beamInterface); // set to store durations of relevant notes (it's ordered, so min duration is going to be first) - std::set noteDurations; + std::set noteDurations; // lambda check whether coord has element set and whether that element is CHORD or NOTE const auto isNoteOrChord = [](BeamElementCoord *coord) { return (coord->m_element && coord->m_element->Is({ CHORD, NOTE })); }; @@ -470,7 +470,9 @@ void BeamSegment::AdjustBeamToFrenchStyle(const BeamDrawingInterface *beamInterf if (!isNoteOrChord(*it)) continue; // get current element duration - const int val = (*it)->m_breaksec ? std::min((*it)->m_breaksec + DURATION_4, (*it)->m_dur) : (*it)->m_dur; + const data_DURATION val = (*it)->m_breaksec + ? vrv::DurationMin(static_cast((*it)->m_breaksec + DURATION_4), (*it)->m_dur) + : (*it)->m_dur; noteDurations.insert(val); // get next element duration CoordIt nextElement = std::find_if(it + 1, m_beamElementCoordRefs.end(), isNoteOrChord); @@ -481,8 +483,9 @@ void BeamSegment::AdjustBeamToFrenchStyle(const BeamDrawingInterface *beamInterf CoordReverseIt reverse = std::make_reverse_iterator(it); CoordReverseIt prevElement = std::find_if(reverse, m_beamElementCoordRefs.rend(), isNoteOrChord); if (prevElement != m_beamElementCoordRefs.rend()) { - const int prevVal = (*prevElement)->m_breaksec - ? std::min((*prevElement)->m_breaksec + DURATION_4, (*prevElement)->m_dur) + const data_DURATION prevVal = (*prevElement)->m_breaksec + ? vrv::DurationMin( + static_cast((*prevElement)->m_breaksec + DURATION_4), (*prevElement)->m_dur) : (*prevElement)->m_dur; noteDurations.insert(prevVal); } @@ -547,7 +550,7 @@ void BeamSegment::AdjustBeamToTremolos(const Doc *doc, const Staff *staff, const if (!stemmedInterface) continue; Stem *stem = stemmedInterface->GetDrawingStem(); - const int offset = (coord->m_dur - DUR_8) * beamInterface->m_beamWidth + beamInterface->m_beamWidthBlack; + const int offset = (coord->m_dur - DURATION_8) * beamInterface->m_beamWidth + beamInterface->m_beamWidthBlack; const int currentAdjustment = stem->CalculateStemModAdjustment(doc, staff, offset); if (std::abs(currentAdjustment) > std::abs(maxAdjustment)) maxAdjustment = currentAdjustment; } @@ -590,7 +593,7 @@ void BeamSegment::CalcBeamInit( beamInterface->m_beamWidthBlack = doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, beamInterface->m_cueSize); beamInterface->m_beamWidthWhite = doc->GetDrawingBeamWhiteWidth(staff->m_drawingStaffSize, beamInterface->m_cueSize); - if (beamInterface->m_shortestDur == DUR_64) { + if (beamInterface->m_shortestDur == DURATION_64) { beamInterface->m_beamWidthWhite *= 4; beamInterface->m_beamWidthWhite /= 3; } @@ -884,9 +887,9 @@ int BeamSegment::CalcBeamSlopeStep( } // duration - const int dur = beamInterface->m_shortestDur; + const data_DURATION dur = beamInterface->m_shortestDur; // Prevent short step with values not shorter than a 16th - if (shortStep && (dur >= DUR_32)) { + if (shortStep && (dur >= DURATION_32)) { step = unit * 2; shortStep = false; } @@ -1002,7 +1005,7 @@ void BeamSegment::CalcAdjustSlope(const Staff *staff, const Doc *doc, BeamDrawin break; } // Here we should look at duration too because longer values in the middle could actually be OK as they are - else if (((coord != m_lastNoteOrChord) || (coord != m_firstNoteOrChord)) && (coord->m_dur > DUR_8)) { + else if (((coord != m_lastNoteOrChord) || (coord != m_firstNoteOrChord)) && (coord->m_dur > DURATION_8)) { const int durLen = len - 0.9 * unit; if (durLen < refLen) { lengthen = true; @@ -1212,7 +1215,7 @@ void BeamSegment::CalcBeamStemLength(const Staff *staff, data_BEAMPLACE place, b // skip current element if it's longer that minDuration and is not a part of fTrem if ((coord->m_dur < noteDur) && !(coord->m_element && coord->m_element->GetFirstAncestor(FTREM))) continue; // adjust stem length if location matches - const int dur = (preferredDur != 0) ? preferredDur : coord->m_dur; + const data_DURATION dur = (preferredDur != DURATION_NONE) ? preferredDur : coord->m_dur; const int coordStemLength = coord->CalculateStemLength(staff, stemDir, isHorizontal, dur); if (coord->m_closestNote->GetDrawingLoc() == noteLoc) { m_uniformStemLength = coordStemLength; @@ -1266,11 +1269,11 @@ int BeamSegment::CalcMixedBeamCenterY(int step, int unit) const return centerY; } -std::tuple BeamSegment::CalcStemDefiningNote(const Staff *staff, data_BEAMPLACE place) const +std::tuple BeamSegment::CalcStemDefiningNote(const Staff *staff, data_BEAMPLACE place) const { - int shortestDuration = DUR_4; + data_DURATION shortestDuration = DURATION_4; int shortestLoc = VRV_UNSET; - int relevantDuration = DUR_4; + data_DURATION relevantDuration = DURATION_4; int relevantLoc = VRV_UNSET; const data_STEMDIRECTION globalStemDir = (place == BEAMPLACE_below) ? STEMDIRECTION_down : STEMDIRECTION_up; for (BeamElementCoord *coord : m_beamElementCoordRefs) { @@ -1313,7 +1316,7 @@ std::tuple BeamSegment::CalcStemDefiningNote(const Staff *staff, } } - int adjusted_duration = 0; + data_DURATION adjusted_duration = DURATION_NONE; // if shortest note location does not offset its duration (shorter notes need more space for additional beams) then // give preference to the its location if ((shortestDuration - relevantDuration) > (std::abs(relevantLoc - shortestLoc) + 1)) { @@ -1328,7 +1331,7 @@ std::tuple BeamSegment::CalcStemDefiningNote(const Staff *staff, } } else if ((shortestDuration - relevantDuration) == std::abs(relevantLoc - shortestLoc)) { - adjusted_duration = (relevantDuration + shortestDuration) / 2; + adjusted_duration = static_cast((relevantDuration + shortestDuration) / 2); } return { relevantLoc, relevantDuration, adjusted_duration }; @@ -1410,9 +1413,10 @@ void BeamSegment::CalcMixedBeamPlace(const Staff *staff) void BeamSegment::CalcPartialFlagPlace() { - // Start from note that is shorter than DUR_8 - we do not care otherwise, since those do not have additional beams + // Start from note that is shorter than DURATION_8 - we do not care otherwise, since those do not have additional + // beams auto start = std::find_if(m_beamElementCoordRefs.begin(), m_beamElementCoordRefs.end(), - [](BeamElementCoord *coord) { return coord->m_dur >= DUR_16; }); + [](BeamElementCoord *coord) { return coord->m_dur >= DURATION_16; }); if (m_beamElementCoordRefs.end() == start) return; while (start != m_beamElementCoordRefs.end()) { auto subdivision = start; @@ -1426,14 +1430,14 @@ void BeamSegment::CalcPartialFlagPlace() // Find first note longer than 8th or first note that is cross-staff auto found = std::find_if(subdivision, m_beamElementCoordRefs.end(), [&](BeamElementCoord *coord) { if (coord->m_element->Is(REST)) return false; - return ((coord->m_beamRelativePlace != place) || (coord->m_dur <= DUR_8) || (coord->m_breaksec)); + return ((coord->m_beamRelativePlace != place) || (coord->m_dur <= DURATION_8) || (coord->m_breaksec)); }); subdivision = found; // Handle different cases, where we either don't want to proceed (e.g. end of the beam reached) or we want // to process them separately (e.g. on direction change from shorter to longer notes, or vice versa, we do // not want last note of the subdivision to have additional beam, so that it's clearly distinguishable). - if ((m_beamElementCoordRefs.end() == found) || ((*found)->m_dur <= DUR_8)) break; + if ((m_beamElementCoordRefs.end() == found) || ((*found)->m_dur <= DURATION_8)) break; if (((*found)->m_breaksec)) breakSec = true; if ((m_beamElementCoordRefs.end() - 1) == found) { subdivision = m_beamElementCoordRefs.end(); @@ -1467,14 +1471,14 @@ void BeamSegment::CalcSetValues() int BeamSegment::GetAdjacentElementsDuration(int elementX) const { if ((elementX < m_beamElementCoordRefs.front()->m_x) || (elementX > m_beamElementCoordRefs.back()->m_x)) { - return DUR_8; + return DURATION_8; } for (int i = 0; i < int(m_beamElementCoordRefs.size()) - 1; ++i) { if ((m_beamElementCoordRefs.at(i)->m_x < elementX) && (m_beamElementCoordRefs.at(i + 1)->m_x > elementX)) { return std::min(m_beamElementCoordRefs.at(i)->m_dur, m_beamElementCoordRefs.at(i + 1)->m_dur); } } - return DUR_8; + return DURATION_8; } int BeamSegment::GetStartingX() const @@ -1938,7 +1942,7 @@ void BeamElementCoord::SetDrawingStemDir(data_STEMDIRECTION stemDir, const Staff } int BeamElementCoord::CalculateStemLength( - const Staff *staff, data_STEMDIRECTION stemDir, bool isHorizontal, int preferredDur) const + const Staff *staff, data_STEMDIRECTION stemDir, bool isHorizontal, data_DURATION preferredDur) const { if (!m_closestNote) return 0; @@ -1947,20 +1951,16 @@ int BeamElementCoord::CalculateStemLength( const int standardStemLen = STANDARD_STEMLENGTH * 2; // Check if the stem has to be shortened because outside the staff // In this case, Note::CalcStemLenInThirdUnits will return a value shorter than 2 * STANDARD_STEMLENGTH - int stemLenInHalfUnits - = !m_maxShortening ? standardStemLen : m_closestNote->CalcStemLenInThirdUnits(staff, stemDir) * 2 / 3; + const int stemLenInHalfUnits = m_closestNote->CalcStemLenInThirdUnits(staff, stemDir) * 2 / 3; // Do not extend when not on the staff line if (stemLenInHalfUnits != standardStemLen) { - if ((m_maxShortening > 0) && ((stemLenInHalfUnits - standardStemLen) > m_maxShortening)) { - stemLenInHalfUnits = standardStemLen - m_maxShortening; - } extend = false; } const int directionBias = (stemDir == STEMDIRECTION_up) ? 1 : -1; int stemLen = directionBias; // For 8th notes, use the shortened stem (if shortened) - if (preferredDur == DUR_8) { + if (preferredDur == DURATION_8) { if (stemLenInHalfUnits != standardStemLen) { stemLen *= stemLenInHalfUnits; } @@ -1971,13 +1971,13 @@ int BeamElementCoord::CalculateStemLength( else { const bool isOddLength = (extend || !isHorizontal); switch (m_dur) { - case (DUR_16): stemLen *= isOddLength ? 14 : 13; break; - case (DUR_32): stemLen *= isOddLength ? 18 : 16; break; - case (DUR_64): stemLen *= isOddLength ? 22 : 20; break; - case (DUR_128): stemLen *= isOddLength ? 26 : 24; break; - case (DUR_256): stemLen *= isOddLength ? 30 : 28; break; - case (DUR_512): stemLen *= isOddLength ? 34 : 32; break; - case (DUR_1024): stemLen *= isOddLength ? 38 : 36; break; + case (DURATION_16): stemLen *= isOddLength ? 14 : 13; break; + case (DURATION_32): stemLen *= isOddLength ? 18 : 16; break; + case (DURATION_64): stemLen *= isOddLength ? 22 : 20; break; + case (DURATION_128): stemLen *= isOddLength ? 26 : 24; break; + case (DURATION_256): stemLen *= isOddLength ? 30 : 28; break; + case (DURATION_512): stemLen *= isOddLength ? 34 : 32; break; + case (DURATION_1024): stemLen *= isOddLength ? 38 : 36; break; default: stemLen *= 14; } } @@ -2080,24 +2080,18 @@ void BeamElementCoord::UpdateStemLength( std::pair Beam::GetAdditionalBeamCount() const { - int topShortestDur = DUR_8; - int bottomShortestDur = DUR_8; + data_DURATION topShortestDur = DURATION_8; + data_DURATION bottomShortestDur = DURATION_8; std::for_each(m_beamElementCoords.begin(), m_beamElementCoords.end(), [&](BeamElementCoord *coord) { if (coord->m_partialFlagPlace == BEAMPLACE_above) { - topShortestDur = std::max(topShortestDur, coord->m_dur); + topShortestDur = vrv::DurationMax(topShortestDur, coord->m_dur); } else if (coord->m_partialFlagPlace == BEAMPLACE_below) { - bottomShortestDur = std::max(bottomShortestDur, coord->m_dur); + bottomShortestDur = vrv::DurationMax(bottomShortestDur, coord->m_dur); } }); - return { topShortestDur - DUR_8, bottomShortestDur - DUR_8 }; -} - -void Beam::SetElementShortening(int shortening) -{ - std::for_each(m_beamSegment.m_beamElementCoordRefs.begin(), m_beamSegment.m_beamElementCoordRefs.end(), - [shortening](BeamElementCoord *coord) { coord->m_maxShortening = shortening; }); + return { topShortestDur - DURATION_8, bottomShortestDur - DURATION_8 }; } int Beam::GetBeamPartDuration(int x, bool includeRests) const @@ -2109,7 +2103,7 @@ int Beam::GetBeamPartDuration(int x, bool includeRests) const }); // handle cases when coordinate is outside of the beam if (it == m_beamSegment.m_beamElementCoordRefs.end()) { - return DUR_8; + return DURATION_8; } else if (it == m_beamSegment.m_beamElementCoordRefs.begin()) { return (*it)->m_dur; diff --git a/src/beatrpt.cpp b/src/beatrpt.cpp index 3b72624333c..d3221f02c46 100644 --- a/src/beatrpt.cpp +++ b/src/beatrpt.cpp @@ -51,22 +51,22 @@ void BeatRpt::Reset() this->ResetBeatRptVis(); this->ResetColor(); - m_scoreTimeOnset = 0.0; + m_scoreTimeOnset = 0; } -double BeatRpt::GetBeatRptAlignmentDuration(int meterUnit) const +Fraction BeatRpt::GetBeatRptAlignmentDuration(data_DURATION meterUnit) const { - double dur = DUR_MAX / meterUnit; - if (this->HasBeatdef()) dur *= this->GetBeatdef(); - return dur; + Fraction duration(meterUnit); + if (this->HasBeatdef()) duration = duration * Fraction(this->GetBeatdef() * DUR_MAX, DUR_MAX); + return duration; } -void BeatRpt::SetScoreTimeOnset(double scoreTime) +void BeatRpt::SetScoreTimeOnset(Fraction scoreTime) { m_scoreTimeOnset = scoreTime; } -double BeatRpt::GetScoreTimeOnset() const +Fraction BeatRpt::GetScoreTimeOnset() const { return m_scoreTimeOnset; } diff --git a/src/btrem.cpp b/src/btrem.cpp index f26464cc33c..97496ef0dcf 100644 --- a/src/btrem.cpp +++ b/src/btrem.cpp @@ -144,11 +144,11 @@ data_STEMMODIFIER BTrem::GetDrawingStemMod() const const int drawingDur = duration->GetActualDur(); if (!this->HasUnitdur()) { - if (drawingDur < DUR_2) return STEMMODIFIER_3slash; + if (drawingDur < DURATION_2) return STEMMODIFIER_3slash; return STEMMODIFIER_NONE; } int slashDur = this->GetUnitdur() - drawingDur; - if (drawingDur < DUR_4) slashDur = this->GetUnitdur() - DUR_4; + if (drawingDur < DURATION_4) slashDur = this->GetUnitdur() - DURATION_4; switch (slashDur) { case 0: return STEMMODIFIER_NONE; case 1: return STEMMODIFIER_1slash; diff --git a/src/calcalignmentpitchposfunctor.cpp b/src/calcalignmentpitchposfunctor.cpp index 188095fc068..982d8078d8a 100644 --- a/src/calcalignmentpitchposfunctor.cpp +++ b/src/calcalignmentpitchposfunctor.cpp @@ -45,7 +45,7 @@ FunctorCode CalcAlignmentPitchPosFunctor::VisitLayerElement(LayerElement *layerE if (pitchInterface) { pitchInterface->SetOctDefault(m_octDefault); // Check if there is a octave default for the staff - ignore cross-staff for this and use staffY - if (m_octDefaultForStaffN.count(staffY->GetN()) > 0) { + if (m_octDefaultForStaffN.contains(staffY->GetN())) { pitchInterface->SetOctDefault(m_octDefaultForStaffN.at(staffY->GetN())); } } @@ -169,10 +169,10 @@ FunctorCode CalcAlignmentPitchPosFunctor::VisitLayerElement(LayerElement *layerE // set default location to the middle of the staff Staff *staff = layerElement->GetAncestorStaff(); loc = staff->m_drawingLines - 1; - if ((durInterface->GetDur() < DUR_4) && (loc % 2 != 0)) --loc; + if ((durInterface->GetDur() < DURATION_4) && (loc % 2 != 0)) --loc; // Adjust special cases - if ((durInterface->GetDur() == DUR_1) && (staff->m_drawingLines > 1)) loc += 2; - if ((durInterface->GetDur() == DUR_BR) && (staff->m_drawingLines < 2)) loc -= 2; + if ((durInterface->GetDur() == DURATION_1) && (staff->m_drawingLines > 1)) loc += 2; + if ((durInterface->GetDur() == DURATION_breve) && (staff->m_drawingLines < 2)) loc -= 2; // If within a beam, calculate the rest's height based on it's relationship to the notes that surround it Beam *beam = vrv_cast(layerElement->GetFirstAncestor(BEAM, 1)); diff --git a/src/calcalignmentxposfunctor.cpp b/src/calcalignmentxposfunctor.cpp index 780c076f5b9..38e992e3741 100644 --- a/src/calcalignmentxposfunctor.cpp +++ b/src/calcalignmentxposfunctor.cpp @@ -22,9 +22,9 @@ namespace vrv { CalcAlignmentXPosFunctor::CalcAlignmentXPosFunctor(Doc *doc) : DocFunctor(doc) { - m_previousTime = 0.0; + m_previousTime = 0; m_previousXRel = 0; - m_longestActualDur = 0; + m_longestActualDur = DURATION_NONE; m_estimatedJustificationRatio = 1.0; m_lastNonTimestamp = NULL; m_measureAligner = NULL; @@ -36,10 +36,10 @@ FunctorCode CalcAlignmentXPosFunctor::VisitAlignment(Alignment *alignment) if (alignment->GetType() <= ALIGNMENT_MEASURE_LEFT_BARLINE) return FUNCTOR_CONTINUE; int intervalXRel = 0; - double intervalTime = alignment->GetTime() - m_previousTime; + Fraction intervalTime = alignment->GetTime() - m_previousTime; if (alignment->GetType() > ALIGNMENT_MEASURE_RIGHT_BARLINE) { - intervalTime = 0.0; + intervalTime = 0; } // Do not move aligners that are only time-stamps at this stage but add it to the pending list @@ -48,7 +48,7 @@ FunctorCode CalcAlignmentXPosFunctor::VisitAlignment(Alignment *alignment) return FUNCTOR_CONTINUE; } - if (intervalTime > 0.0) { + if (intervalTime > 0) { intervalXRel = Alignment::HorizontalSpaceForDuration(intervalTime, m_longestActualDur, m_doc->GetOptions()->m_spacingLinear.GetValue(), m_doc->GetOptions()->m_spacingNonLinear.GetValue()); // LogDebug("CalcAlignmentXPos: intervalTime=%.2f intervalXRel=%d", intervalTime, intervalXRel); @@ -68,21 +68,21 @@ FunctorCode CalcAlignmentXPosFunctor::VisitAlignment(Alignment *alignment) // alignments, then we now need to move them appropriately if (!m_timestamps.empty() && m_lastNonTimestamp) { int startXRel = m_lastNonTimestamp->GetXRel(); - double startTime = m_lastNonTimestamp->GetTime(); - double endTime = alignment->GetTime(); + Fraction startTime = m_lastNonTimestamp->GetTime(); + Fraction endTime = alignment->GetTime(); // We have timestamp alignments between the left barline and the first beat. We need // to use the MeasureAligner::m_initialTstampDur to calculate the time (percentage) position if (m_lastNonTimestamp->GetType() == ALIGNMENT_MEASURE_LEFT_BARLINE) { startTime = m_measureAligner->GetInitialTstampDur(); } // The duration since the last alignment and the current one - double duration = endTime - startTime; + Fraction duration = endTime - startTime; int space = alignment->GetXRel() - m_lastNonTimestamp->GetXRel(); // For each timestamp alignment, move them proportionally to the space we currently have for (auto &tsAlignment : m_timestamps) { // Avoid division by zero (nothing to move with the alignment anyway - if (duration == 0.0) break; - double percent = (tsAlignment->GetTime() - startTime) / duration; + if (duration == 0) break; + double percent = ((tsAlignment->GetTime() - startTime) / duration).ToDouble(); tsAlignment->SetXRel(startXRel + space * percent); } m_timestamps.clear(); @@ -98,7 +98,7 @@ FunctorCode CalcAlignmentXPosFunctor::VisitMeasure(Measure *measure) { // We start a new Measure // Reset the previous time position and x_rel to 0; - m_previousTime = 0.0; + m_previousTime = 0; // We un-measured music we never have a left barline, so do not add a default space m_previousXRel = (measure->IsMeasuredMusic()) ? m_doc->GetDrawingUnit(100) : 0; diff --git a/src/calcarticfunctor.cpp b/src/calcarticfunctor.cpp index 6464dbac848..92f54c3d01a 100644 --- a/src/calcarticfunctor.cpp +++ b/src/calcarticfunctor.cpp @@ -134,6 +134,8 @@ FunctorCode CalcArticFunctor::VisitChord(Chord *chord) } } + this->IncludeBeamStaff(chord); + return FUNCTOR_CONTINUE; } @@ -164,6 +166,8 @@ FunctorCode CalcArticFunctor::VisitNote(Note *note) m_crossStaffBelow = true; } + this->IncludeBeamStaff(note); + return FUNCTOR_CONTINUE; } @@ -194,4 +198,16 @@ int CalcArticFunctor::CalculateHorizontalShift(const Artic *artic, bool virtualS return shift; } +void CalcArticFunctor::IncludeBeamStaff(LayerElement *layerElement) +{ + if (Beam *beam = layerElement->GetAncestorBeam(); beam) { + if (m_crossStaffAbove && (beam->m_drawingPlace == BEAMPLACE_above)) { + m_staffAbove = beam->GetAncestorStaff(RESOLVE_CROSS_STAFF); + } + else if (m_crossStaffBelow && (beam->m_drawingPlace == BEAMPLACE_below)) { + m_staffBelow = beam->GetAncestorStaff(RESOLVE_CROSS_STAFF); + } + } +} + } // namespace vrv diff --git a/src/calcdotsfunctor.cpp b/src/calcdotsfunctor.cpp index 2be321aa7a9..f2bc3cddba8 100644 --- a/src/calcdotsfunctor.cpp +++ b/src/calcdotsfunctor.cpp @@ -80,7 +80,7 @@ FunctorCode CalcDotsFunctor::VisitNote(Note *note) assert(dots); // Stem up, shorter than 4th and not in beam - if ((note->GetDots() > 0) && (m_chordStemDir == STEMDIRECTION_up) && (note->GetDrawingDur() > DUR_4) + if ((note->GetDots() > 0) && (m_chordStemDir == STEMDIRECTION_up) && (note->GetDrawingDur() > DURATION_4) && !note->IsInBeam()) { // Shift according to the flag width if the top note is not flipped if ((note == chord->GetTopNote()) && !note->GetFlippedNotehead()) { @@ -129,7 +129,7 @@ FunctorCode CalcDotsFunctor::VisitRest(Rest *rest) } // Nothing to do - if ((rest->GetDur() <= DUR_BR) || (rest->GetDots() < 1)) { + if ((rest->GetDur() <= DURATION_breve) || (rest->GetDots() < 1)) { return FUNCTOR_SIBLINGS; } @@ -150,12 +150,12 @@ FunctorCode CalcDotsFunctor::VisitRest(Rest *rest) } switch (rest->GetActualDur()) { - case DUR_32: - case DUR_64: loc += 2; break; - case DUR_128: - case DUR_256: loc += 4; break; - case DUR_512: loc += 6; break; - case DUR_1024: loc += 8; break; + case DURATION_32: + case DURATION_64: loc += 2; break; + case DURATION_128: + case DURATION_256: loc += 4; break; + case DURATION_512: loc += 6; break; + case DURATION_1024: loc += 8; break; default: break; } @@ -164,7 +164,7 @@ FunctorCode CalcDotsFunctor::VisitRest(Rest *rest) // HARDCODED int xRel = m_doc->GetDrawingUnit(staffSize) * 2.5; if (drawingCueSize) xRel = m_doc->GetCueSize(xRel); - if (rest->GetDur() > DUR_2) { + if (rest->GetDur() > DURATION_2) { xRel = m_doc->GetGlyphWidth(rest->GetRestGlyph(), staff->m_drawingStaffSize, drawingCueSize); } dots->SetDrawingXRel(std::max(dots->GetDrawingXRel(), xRel)); diff --git a/src/calcledgerlinesfunctor.cpp b/src/calcledgerlinesfunctor.cpp index a1cf9b5b5b9..bef0616bf2b 100644 --- a/src/calcledgerlinesfunctor.cpp +++ b/src/calcledgerlinesfunctor.cpp @@ -10,6 +10,7 @@ //---------------------------------------------------------------------------- #include "doc.h" +#include "dot.h" #include "note.h" #include "staff.h" @@ -21,6 +22,21 @@ namespace vrv { CalcLedgerLinesFunctor::CalcLedgerLinesFunctor(Doc *doc) : DocFunctor(doc) {} +FunctorCode CalcLedgerLinesFunctor::VisitAccid(Accid *accid) +{ + if (accid->GetFirstAncestor(NOTE)) { + return FUNCTOR_SIBLINGS; + } + + Staff *staff = accid->GetAncestorStaff(); + + const int width = m_doc->GetGlyphWidth(Accid::GetAccidGlyph(accid->GetAccid()), staff->m_drawingStaffSize, false); + + this->CalcForLayerElement(accid, width, HORIZONTALALIGNMENT_center); + + return FUNCTOR_SIBLINGS; +} + FunctorCode CalcLedgerLinesFunctor::VisitNote(Note *note) { if (note->GetVisible() == BOOLEAN_false) { @@ -31,22 +47,39 @@ FunctorCode CalcLedgerLinesFunctor::VisitNote(Note *note) return FUNCTOR_SIBLINGS; } - Staff *staff = note->GetAncestorStaff(RESOLVE_CROSS_STAFF); - const int staffSize = staff->m_drawingStaffSize; - const int staffX = staff->GetDrawingX(); - const bool drawingCueSize = note->GetDrawingCueSize(); const int radius = note->GetDrawingRadius(m_doc); - /************** Ledger lines: **************/ + this->CalcForLayerElement(note, 2 * radius, HORIZONTALALIGNMENT_left); + + return FUNCTOR_SIBLINGS; +} + +void CalcLedgerLinesFunctor::CalcForLayerElement( + LayerElement *layerElement, int width, data_HORIZONTALALIGNMENT alignment) +{ + Staff *staff = layerElement->GetAncestorStaff(RESOLVE_CROSS_STAFF); + assert(staff); + + const int staffSize = staff->m_drawingStaffSize; + const int staffX = staff->GetDrawingX(); + const bool drawingCueSize = layerElement->GetDrawingCueSize(); int linesAbove = 0; int linesBelow = 0; - if (!note->HasLedgerLines(linesAbove, linesBelow, staff)) return FUNCTOR_SIBLINGS; + PositionInterface *interface = layerElement->GetPositionInterface(); + assert(interface); + + if (!interface->HasLedgerLines(linesAbove, linesBelow, staff)) return; const int extension = m_doc->GetDrawingLedgerLineExtension(staffSize, drawingCueSize); - const int left = note->GetDrawingX() - extension - staffX; - int right = note->GetDrawingX() + 2 * radius + extension - staffX; + int left = layerElement->GetDrawingX() - extension - staffX; + int right = layerElement->GetDrawingX() + width + extension - staffX; + + if (alignment == HORIZONTALALIGNMENT_center) { + right -= width / 2; + left -= width / 2; + } if (linesAbove > 0) { staff->AddLedgerLineAbove(linesAbove, left, right, extension, drawingCueSize); @@ -54,8 +87,6 @@ FunctorCode CalcLedgerLinesFunctor::VisitNote(Note *note) else { staff->AddLedgerLineBelow(linesBelow, left, right, extension, drawingCueSize); } - - return FUNCTOR_SIBLINGS; } FunctorCode CalcLedgerLinesFunctor::VisitStaffEnd(Staff *staff) diff --git a/src/calcligatureorneumeposfunctor.cpp b/src/calcligatureorneumeposfunctor.cpp index efefc3dc3f5..4ed08423439 100644 --- a/src/calcligatureorneumeposfunctor.cpp +++ b/src/calcligatureorneumeposfunctor.cpp @@ -62,23 +62,23 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) // Look at the @lig attribute on the previous note if (previousNote->GetLig() == LIGATUREFORM_obliqua) oblique = true; - int dur1 = previousNote->GetActualDur(); - int dur2 = note->GetActualDur(); + data_DURATION dur1 = previousNote->GetActualDur(); + data_DURATION dur2 = note->GetActualDur(); // Same treatment for Mx and LG except for positioning, which is done above // We still need to avoid oblique, so keep a flag. bool isMaxima = false; - if (dur1 == DUR_MX) { - dur1 = DUR_LG; + if (dur1 == DURATION_maxima) { + dur1 = DURATION_long; isMaxima = true; } - if (dur2 == DUR_MX) dur2 = DUR_LG; + if (dur2 == DURATION_maxima) dur2 = DURATION_long; int diatonicStep = note->GetDiatonicPitch() - previousNote->GetDiatonicPitch(); bool up = (diatonicStep > 0); bool isLastNote = (note == lastNote); // L - L - if ((dur1 == DUR_LG) && (dur2 == DUR_LG)) { + if ((dur1 == DURATION_long) && (dur2 == DURATION_long)) { if (up) { ligature->m_drawingShapes.at(n1) = LIGATURE_STEM_RIGHT_DOWN; ligature->m_drawingShapes.at(n2) = LIGATURE_STEM_RIGHT_DOWN; @@ -88,7 +88,7 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } } // L - B - else if ((dur1 == DUR_LG) && (dur2 == DUR_BR)) { + else if ((dur1 == DURATION_long) && (dur2 == DURATION_breve)) { if (up) { ligature->m_drawingShapes.at(n1) = LIGATURE_STEM_RIGHT_DOWN; } @@ -102,7 +102,7 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } } // B - B - else if ((dur1 == DUR_BR) && (dur2 == DUR_BR)) { + else if ((dur1 == DURATION_breve) && (dur2 == DURATION_breve)) { if (up) { // nothing to change } @@ -119,7 +119,7 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } } // B - L - else if ((dur1 == DUR_BR) && (dur2 == DUR_LG)) { + else if ((dur1 == DURATION_breve) && (dur2 == DURATION_long)) { if (up) { ligature->m_drawingShapes.at(n2) = LIGATURE_STEM_RIGHT_DOWN; } @@ -133,11 +133,11 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } } // SB - SB - else if ((dur1 == DUR_1) && (dur2 == DUR_1)) { + else if ((dur1 == DURATION_1) && (dur2 == DURATION_1)) { ligature->m_drawingShapes.at(n1) = LIGATURE_STEM_LEFT_UP; } // SB - L (this should not happen on the first two notes, but this is an encoding problem) - else if ((dur1 == DUR_1) && (dur2 == DUR_LG)) { + else if ((dur1 == DURATION_1) && (dur2 == DURATION_long)) { if (up) { ligature->m_drawingShapes.at(n2) = LIGATURE_STEM_RIGHT_DOWN; } @@ -146,7 +146,7 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } } // SB - B (this should not happen on the first two notes, but this is an encoding problem) - else if ((dur1 == DUR_1) && (dur2 == DUR_BR)) { + else if ((dur1 == DURATION_1) && (dur2 == DURATION_breve)) { if (up) { // nothing to change } @@ -168,7 +168,7 @@ FunctorCode CalcLigatureOrNeumePosFunctor::VisitLigature(Ligature *ligature) } // With mensural black notation, stack longa going up - if (isLastNote && isMensuralBlack && (dur2 == DUR_LG) && up) { + if (isLastNote && isMensuralBlack && (dur2 == DURATION_long) && up) { // Stack only if at least a third int stackThreshold = 1; // If the previous was going down, adjust the threshold diff --git a/src/calcslurdirectionfunctor.cpp b/src/calcslurdirectionfunctor.cpp index c7fdb55d756..78e79bbdf20 100644 --- a/src/calcslurdirectionfunctor.cpp +++ b/src/calcslurdirectionfunctor.cpp @@ -53,6 +53,9 @@ FunctorCode CalcSlurDirectionFunctor::VisitSlur(Slur *slur) if (slur->HasBulge()) { LogWarning("Mixed curve direction is ignored for slurs with prescribed bulge."); } + else if (start->Is(TIMESTAMP_ATTR) || end->Is(TIMESTAMP_ATTR)) { + LogWarning("Mixed curve direction is ignored for slurs with tstamp boundary."); + } else { const int startStaffN = start->GetAncestorStaff(RESOLVE_CROSS_STAFF)->GetN(); const int endStaffN = end->GetAncestorStaff(RESOLVE_CROSS_STAFF)->GetN(); diff --git a/src/calcstemfunctor.cpp b/src/calcstemfunctor.cpp index 36210118578..df7a50f18c1 100644 --- a/src/calcstemfunctor.cpp +++ b/src/calcstemfunctor.cpp @@ -32,7 +32,7 @@ CalcStemFunctor::CalcStemFunctor(Doc *doc) : DocFunctor(doc) { m_chordStemLength = 0; m_verticalCenter = 0; - m_dur = DUR_1; + m_dur = DURATION_1; m_isGraceNote = false; m_isStemSameasSecondary = false; m_tabGrpWithNoNote = false; @@ -348,7 +348,7 @@ FunctorCode CalcStemFunctor::VisitStem(Stem *stem) const bool drawingCueSize = stem->GetDrawingCueSize(); // For notes longer than half notes the stem is always 0 - if (m_dur < DUR_2) { + if (m_dur < DURATION_2) { stem->SetDrawingXRel(0); stem->SetDrawingYRel(0); stem->SetDrawingStemLen(0); @@ -409,7 +409,7 @@ FunctorCode CalcStemFunctor::VisitStem(Stem *stem) int flagOffset = 0; Flag *flag = NULL; // There is never a flag with a duration longer than 8th notes - if (m_dur > DUR_4) { + if (m_dur > DURATION_4) { flag = vrv_cast(stem->GetFirst(FLAG)); assert(flag); // There is never a flag with stem sameas notes @@ -417,7 +417,7 @@ FunctorCode CalcStemFunctor::VisitStem(Stem *stem) flag->m_drawingNbFlags = 0; } else { - flag->m_drawingNbFlags = m_dur - DUR_4; + flag->m_drawingNbFlags = m_dur - DURATION_4; flagOffset = unit * (flag->m_drawingNbFlags + 1); } } @@ -441,7 +441,7 @@ FunctorCode CalcStemFunctor::VisitStem(Stem *stem) int flagHeight = 0; // SMUFL flags cover some additional stem length from the 32th only - if (m_dur > DUR_16) { + if (m_dur > DURATION_16) { assert(flag); Point stemEnd; if (stem->GetDrawingStemDir() == STEMDIRECTION_up) { @@ -450,7 +450,7 @@ FunctorCode CalcStemFunctor::VisitStem(Stem *stem) else { stemEnd = flag->GetStemDownNW(m_doc, staffSize, drawingCueSize); } - // Trick for shortening the stem with DUR_8 + // Trick for shortening the stem with DURATION_8 flagHeight = stemEnd.y; } @@ -496,7 +496,7 @@ FunctorCode CalcStemFunctor::VisitTabDurSym(TabDurSym *tabDurSym) assert(stem); // Do not draw virtual (e.g., whole note) stems - if (m_dur < DUR_2 || m_tabGrpWithNoNote) { + if (m_dur < DURATION_2 || m_tabGrpWithNoNote) { stem->IsVirtual(true); return FUNCTOR_SIBLINGS; } @@ -554,7 +554,7 @@ FunctorCode CalcStemFunctor::VisitTabDurSym(TabDurSym *tabDurSym) int stemSize = tabDurSym->CalcStemLenInThirdUnits(m_staff, stemDir) * m_doc->GetDrawingUnit(staffSize); stemSize /= (3 * stemDirFactor); - if (m_dur == DUR_2) { + if (m_dur == DURATION_2) { // Stems for half notes twice shorter stemSize /= 2; } @@ -565,7 +565,7 @@ FunctorCode CalcStemFunctor::VisitTabDurSym(TabDurSym *tabDurSym) if (m_staff->IsTabGuitar()) { Flag *flag = vrv_cast(stem->GetFirst(FLAG)); if (flag) { - flag->m_drawingNbFlags = m_dur - DUR_4; + flag->m_drawingNbFlags = m_dur - DURATION_4; flag->SetDrawingYRel(-stemSize); } } @@ -621,7 +621,7 @@ data_STEMDIRECTION CalcStemFunctor::CalcStemDirection(const Chord *chord, int ve } void CalcStemFunctor::AdjustFlagPlacement( - const Doc *doc, Stem *stem, Flag *flag, int staffSize, int verticalCenter, int duration) const + const Doc *doc, Stem *stem, Flag *flag, int staffSize, int verticalCenter, data_DURATION duration) const { assert(stem->GetParent()); assert(stem->GetParent()->IsLayerElement()); @@ -660,7 +660,9 @@ void CalcStemFunctor::AdjustFlagPlacement( } int ledgerAbove = 0; int ledgerBelow = 0; - if (!note || !note->HasLedgerLines(ledgerAbove, ledgerBelow)) return; + + Staff *staff = note->GetAncestorStaff(RESOLVE_CROSS_STAFF); + if (!note || !note->HasLedgerLines(ledgerAbove, ledgerBelow, staff)) return; if (((stemDirection == STEMDIRECTION_up) && !ledgerBelow) || ((stemDirection == STEMDIRECTION_down) && !ledgerAbove)) return; diff --git a/src/castofffunctor.cpp b/src/castofffunctor.cpp index 7a9f887dc75..f395aa8cb8b 100644 --- a/src/castofffunctor.cpp +++ b/src/castofffunctor.cpp @@ -278,7 +278,8 @@ CastOffPagesFunctor::CastOffPagesFunctor(Page *contentPage, Doc *doc, Page *curr { m_contentPage = contentPage; m_currentPage = currentPage; - m_shift = 0; + m_firstCastOffPage = true; + m_shift = VRV_UNSET; m_pageHeight = 0; m_pgHeadHeight = 0; m_pgFootHeight = 0; @@ -341,19 +342,16 @@ FunctorCode CastOffPagesFunctor::VisitScore(Score *score) FunctorCode CastOffPagesFunctor::VisitSystem(System *system) { - int currentShift = m_shift; - // We use m_pageHeadHeight to check if we have passed the first page already - if (m_pgHeadHeight != VRV_UNSET) { - currentShift += m_pgHeadHeight + m_pgFootHeight; - } - else { - currentShift += m_pgHead2Height + m_pgFoot2Height; + // Check if this is the first system + if (m_shift == VRV_UNSET) { + m_shift = system->GetDrawingYRel(); } const int systemMaxPerPage = m_doc->GetOptions()->m_systemMaxPerPage.GetValue(); const int systemChildCount = m_currentPage->GetChildCount(SYSTEM); if ((systemMaxPerPage && (systemMaxPerPage == systemChildCount)) - || ((systemChildCount > 0) && (system->GetDrawingYRel() - system->GetHeight() - currentShift < 0))) { + || ((systemChildCount > 0) + && (m_shift - system->GetDrawingYRel() + system->GetHeight() > this->GetAvailableDrawingHeight()))) { // If this is the last system in the list, it doesn't fit the page and it's a leftover system (has just one // measure) => add the system content to the previous system Object *nextSystem = m_contentPage->GetNext(system, SYSTEM); @@ -367,11 +365,10 @@ FunctorCode CastOffPagesFunctor::VisitSystem(System *system) } m_currentPage = new Page(); - // Use VRV_UNSET value as a flag - m_pgHeadHeight = VRV_UNSET; assert(m_doc->GetPages()); m_doc->GetPages()->AddChild(m_currentPage); - m_shift = system->GetDrawingYRel() - m_pageHeight; + m_shift = system->GetDrawingYRel(); + m_firstCastOffPage = false; } // First add all pending objects @@ -391,6 +388,13 @@ FunctorCode CastOffPagesFunctor::VisitSystem(System *system) return FUNCTOR_SIBLINGS; } +int CastOffPagesFunctor::GetAvailableDrawingHeight() const +{ + const int pageHeadAndFootHeight + = m_firstCastOffPage ? (m_pgHeadHeight + m_pgFootHeight) : (m_pgHead2Height + m_pgFoot2Height); + return m_pageHeight - pageHeadAndFootHeight; +} + //---------------------------------------------------------------------------- // CastOffEncodingFunctor //---------------------------------------------------------------------------- diff --git a/src/clef.cpp b/src/clef.cpp index 74afebb9785..a1d528d49bc 100644 --- a/src/clef.cpp +++ b/src/clef.cpp @@ -101,11 +101,6 @@ int Clef::GetClefLocOffset(data_NOTATIONTYPE notationType) const defaultOct = 3; offset = 4; } - else if (this->GetShape() == CLEFSHAPE_C) { - if (notationType == NOTATIONTYPE_neume) { - offset = 7; - } - } if (this->HasOct()) { int oct = this->GetOct(); diff --git a/src/doc.cpp b/src/doc.cpp index 0502699dafe..edde98bc2e9 100644 --- a/src/doc.cpp +++ b/src/doc.cpp @@ -505,6 +505,9 @@ void Doc::ExportMIDI(smf::MidiFile *midiFile) if (meterSig && meterSig->HasCount() && meterSig->HasUnit()) { midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetUnit()); } + else if (meterSig && meterSig->HasSym()) { + midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetSymImplicitUnit()); + } } // Set initial scoreDef values for tuning @@ -542,7 +545,7 @@ void Doc::ExportMIDI(smf::MidiFile *midiFile) midiFile->sortTracks(); } -bool Doc::ExportTimemap(std::string &output, bool includeRests, bool includeMeasures) +bool Doc::ExportTimemap(std::string &output, bool includeRests, bool includeMeasures, bool useFractions) { if (!this->HasTimemap()) { // generate MIDI timemap before progressing @@ -558,7 +561,7 @@ bool Doc::ExportTimemap(std::string &output, bool includeRests, bool includeMeas generateTimemap.SetCueExclusion(this->GetOptions()->m_midiNoCue.GetValue()); this->Process(generateTimemap); - timemap.ToJson(output, includeRests, includeMeasures); + timemap.ToJson(output, includeRests, includeMeasures, useFractions); return true; } diff --git a/src/drawinginterface.cpp b/src/drawinginterface.cpp index ebd382c517f..1e35d7ef690 100644 --- a/src/drawinginterface.cpp +++ b/src/drawinginterface.cpp @@ -94,7 +94,7 @@ void BeamDrawingInterface::Reset() m_crossStaffContent = NULL; m_crossStaffRel = STAFFREL_basic_NONE; m_isSpanningElement = false; - m_shortestDur = 0; + m_shortestDur = DURATION_NONE; m_notesStemDir = STEMDIRECTION_NONE; m_drawingPlace = BEAMPLACE_NONE; m_beamStaff = NULL; @@ -108,7 +108,7 @@ void BeamDrawingInterface::Reset() int BeamDrawingInterface::GetTotalBeamWidth() const { - return m_beamWidthBlack + (m_shortestDur - DUR_8) * m_beamWidth; + return m_beamWidthBlack + (m_shortestDur - DURATION_8) * m_beamWidth; } void BeamDrawingInterface::ClearCoords() @@ -148,7 +148,7 @@ void BeamDrawingInterface::InitCoords(const ListOfObjects &childList, Staff *sta // Beam list should contain only DurationInterface objects assert(current->GetDurationInterface()); - int lastDur = (current->GetDurationInterface())->GetActualDur(); + data_DURATION lastDur = (current->GetDurationInterface())->GetActualDur(); /******************************************************************/ // Populate BeamElementCoord for each element in the beam @@ -164,7 +164,7 @@ void BeamDrawingInterface::InitCoords(const ListOfObjects &childList, Staff *sta do { // Beam list should contain only DurationInterface objects assert(current->GetDurationInterface()); - const int currentDur = (current->GetDurationInterface())->GetActualDur(); + const data_DURATION currentDur = (current->GetDurationInterface())->GetActualDur(); if (current->Is(CHORD)) { m_beamHasChord = true; @@ -420,8 +420,8 @@ bool BeamDrawingInterface::IsRepeatedPattern() const for (BeamElementCoord *coord : m_beamElementCoords) { if (!coord->m_stem || !coord->m_closestNote) continue; - // Could this be an overflow with 32 bits? - items.push_back(coord->m_closestNote->GetDrawingY() * DUR_MAX + coord->m_dur); + // Could this be an overflow with 32 bits? Not sure why DUR_MAX is used here + items.push_back(coord->m_closestNote->GetDrawingY() + DUR_MAX * coord->m_dur); } int itemCount = (int)items.size(); @@ -459,7 +459,7 @@ bool BeamDrawingInterface::IsRepeatedPattern() const bool BeamDrawingInterface::HasOneStepHeight() const { - if (m_shortestDur < DUR_32) return false; + if (m_shortestDur < DURATION_32) return false; int top = -128; int bottom = 128; @@ -651,6 +651,14 @@ void StaffDefDrawingInterface::AlternateCurrentMeterSig(const Measure *measure) } } +void StaffDefDrawingInterface::SetCurrentProport(const Proport *proport) +{ + if (proport) { + m_currentProport = *proport; + m_currentProport.CloneReset(); + } +} + //---------------------------------------------------------------------------- // StemmedDrawingInterface //---------------------------------------------------------------------------- diff --git a/src/durationinterface.cpp b/src/durationinterface.cpp index 27c4ec698e0..00fa8867574 100644 --- a/src/durationinterface.cpp +++ b/src/durationinterface.cpp @@ -65,39 +65,42 @@ void DurationInterface::Reset() m_durDefault = DURATION_NONE; - m_scoreTimeOnset = 0.0; - m_scoreTimeOffset = 0.0; + m_scoreTimeOnset = 0; + m_scoreTimeOffset = 0; m_realTimeOnsetMilliseconds = 0; m_realTimeOffsetMilliseconds = 0; - m_scoreTimeTiedDuration = 0.0; + m_scoreTimeTiedDuration = 0; } -double DurationInterface::GetInterfaceAlignmentDuration(int num, int numBase) const +Fraction DurationInterface::GetInterfaceAlignmentDuration(int num, int numBase) const { - int noteDur = this->GetDurGes() != DURATION_NONE ? this->GetActualDurGes() : this->GetActualDur(); - if (noteDur == DUR_NONE) noteDur = DUR_4; + data_DURATION noteDur = (this->GetDurGes() != DURATION_NONE) ? this->GetActualDurGes() : this->GetActualDur(); + if (noteDur == DURATION_NONE) noteDur = DURATION_4; if (this->HasNum()) num *= this->GetNum(); if (this->HasNumbase()) numBase *= this->GetNumbase(); - double duration = DUR_MAX / pow(2.0, (double)(noteDur - 2.0)) * numBase / num; + Fraction duration(noteDur); + duration = duration * numBase / num; int noteDots = (this->HasDotsGes()) ? this->GetDotsGes() : this->GetDots(); if (noteDots != VRV_UNSET) { - duration = 2 * duration - (duration / pow(2, noteDots)); + Fraction durationReduction(duration.GetNumerator(), duration.GetDenominator() * pow(2, noteDots)); + duration = duration * 2 - durationReduction; } // LogDebug("Duration %d; Dot %d; Alignment %f", noteDur, this->GetDots(), duration); return duration; } -double DurationInterface::GetInterfaceAlignmentMensuralDuration(int num, int numBase, const Mensur *currentMensur) const +Fraction DurationInterface::GetInterfaceAlignmentMensuralDuration( + int num, int numBase, const Mensur *currentMensur) const { - int noteDur = this->GetDurGes() != DURATION_NONE ? this->GetActualDurGes() : this->GetActualDur(); - if (noteDur == DUR_NONE) noteDur = DUR_4; + data_DURATION noteDur = this->GetDurGes() != DURATION_NONE ? this->GetActualDurGes() : this->GetActualDur(); + if (noteDur == DURATION_NONE) noteDur = DURATION_4; if (!currentMensur) { LogWarning("No current mensur for calculating duration"); - return DUR_MENSURAL_REF; + return Fraction(1, 1); } if (this->HasNum() || this->HasNumbase()) { @@ -133,26 +136,23 @@ double DurationInterface::GetInterfaceAlignmentMensuralDuration(int num, int num } // Any other case (minor, perfecta in tempus perfectum, and imperfecta in tempus imperfectum) follows the // mensuration and has no @num and @numbase attributes - if (currentMensur->HasNum()) num *= currentMensur->GetNum(); - if (currentMensur->HasNumbase()) numBase *= currentMensur->GetNumbase(); - - double ratio = 0.0; - double duration = (double)DUR_MENSURAL_REF; + int ratio = 0; + Fraction duration(DURATION_breve); switch (noteDur) { - case DUR_MX: - duration *= (double)abs(currentMensur->GetModusminor()) * (double)abs(currentMensur->GetModusmaior()); + case DURATION_maxima: + duration = duration * abs(currentMensur->GetModusminor()) * abs(currentMensur->GetModusmaior()); break; - case DUR_LG: duration *= (double)abs(currentMensur->GetModusminor()); break; - case DUR_BR: break; - case DUR_1: duration /= (double)abs(currentMensur->GetTempus()); break; + case DURATION_long: duration = duration * abs(currentMensur->GetModusminor()); break; + case DURATION_breve: break; + case DURATION_1: duration = duration / abs(currentMensur->GetTempus()); break; default: - ratio = pow(2.0, (double)(noteDur - DUR_2)); - duration /= (double)abs(currentMensur->GetTempus()) * (double)abs(currentMensur->GetProlatio()) * ratio; + ratio = pow(2.0, (double)(noteDur - DURATION_2)); + assert(ratio); + duration = duration / abs(currentMensur->GetTempus()) / abs(currentMensur->GetProlatio()) / ratio; break; } - duration *= (double)numBase / (double)num; - // LogDebug("Duration %d; %d/%d; Alignment %f; Ratio %f", noteDur, num, numbase, duration, ratio); - duration = durRound(duration); + duration = duration * numBase / num; + return duration; } @@ -174,36 +174,45 @@ bool DurationInterface::IsLastInBeam(const LayerElement *noteOrRest) const return (noteOrRest == beam->GetListBack()); } -int DurationInterface::GetActualDur() const +data_DURATION DurationInterface::GetActualDur() const { const data_DURATION dur = this->HasDur() ? this->GetDur() : this->GetDurDefault(); return this->CalcActualDur(dur); } -int DurationInterface::GetActualDurGes() const +data_DURATION DurationInterface::GetActualDurGes() const { const data_DURATION dur = this->HasDurGes() ? this->GetDurGes() : DURATION_NONE; return this->CalcActualDur(dur); } -int DurationInterface::CalcActualDur(data_DURATION dur) const +data_DURATION DurationInterface::CalcActualDur(data_DURATION dur) const { - if (dur == DURATION_NONE) return DUR_NONE; - // maxima (-1) is a mensural only value - if (dur == DURATION_maxima) return DUR_MX; - return (dur & DUR_MENSURAL_MASK); + // No mapping needed for values below, including maxima and NONE + if (dur < DURATION_longa) return dur; + // Mensural durations (except maxima) + switch (dur) { + case DURATION_longa: return DURATION_long; + case DURATION_brevis: return DURATION_breve; + case DURATION_semibrevis: return DURATION_1; + case DURATION_minima: return DURATION_2; + case DURATION_semiminima: return DURATION_4; + case DURATION_fusa: return DURATION_8; + case DURATION_semifusa: return DURATION_16; + default: return DURATION_NONE; + } } -int DurationInterface::GetNoteOrChordDur(const LayerElement *element) const +data_DURATION DurationInterface::GetNoteOrChordDur(const LayerElement *element) const { if (element->Is(CHORD)) { - int duration = this->GetActualDur(); - if (duration != DUR_NONE) return duration; + data_DURATION duration = this->GetActualDur(); + if (duration != DURATION_NONE) return duration; const Chord *chord = vrv_cast(element); for (const Note *note : { chord->GetTopNote(), chord->GetBottomNote() }) { duration = note->GetActualDur(); - if (duration != DUR_NONE) { + if (duration != DURATION_NONE) { return duration; } } @@ -221,7 +230,7 @@ bool DurationInterface::IsMensuralDur() const { // maxima (-1) is a mensural only value if (this->GetDur() == DURATION_maxima) return true; - return (this->GetDur() > DUR_MENSURAL_MASK); + return (this->GetDur() >= DURATION_longa); } bool DurationInterface::HasIdenticalDurationInterface(const DurationInterface *otherDurationInterface) const @@ -237,7 +246,7 @@ bool DurationInterface::HasIdenticalDurationInterface(const DurationInterface *o */ } -void DurationInterface::SetScoreTimeOnset(double scoreTime) +void DurationInterface::SetScoreTimeOnset(Fraction scoreTime) { m_scoreTimeOnset = scoreTime; } @@ -248,7 +257,7 @@ void DurationInterface::SetRealTimeOnsetSeconds(double timeInSeconds) m_realTimeOnsetMilliseconds = timeInSeconds * 1000.0; } -void DurationInterface::SetScoreTimeOffset(double scoreTime) +void DurationInterface::SetScoreTimeOffset(Fraction scoreTime) { m_scoreTimeOffset = scoreTime; } @@ -259,12 +268,12 @@ void DurationInterface::SetRealTimeOffsetSeconds(double timeInSeconds) m_realTimeOffsetMilliseconds = timeInSeconds * 1000.0; } -void DurationInterface::SetScoreTimeTiedDuration(double scoreTime) +void DurationInterface::SetScoreTimeTiedDuration(Fraction scoreTime) { m_scoreTimeTiedDuration = scoreTime; } -double DurationInterface::GetScoreTimeOnset() const +Fraction DurationInterface::GetScoreTimeOnset() const { return m_scoreTimeOnset; } @@ -274,7 +283,7 @@ double DurationInterface::GetRealTimeOnsetMilliseconds() const return m_realTimeOnsetMilliseconds; } -double DurationInterface::GetScoreTimeOffset() const +Fraction DurationInterface::GetScoreTimeOffset() const { return m_scoreTimeOffset; } @@ -284,12 +293,12 @@ double DurationInterface::GetRealTimeOffsetMilliseconds() const return m_realTimeOffsetMilliseconds; } -double DurationInterface::GetScoreTimeTiedDuration() const +Fraction DurationInterface::GetScoreTimeTiedDuration() const { return m_scoreTimeTiedDuration; } -double DurationInterface::GetScoreTimeDuration() const +Fraction DurationInterface::GetScoreTimeDuration() const { return this->GetScoreTimeOffset() - this->GetScoreTimeOnset(); } diff --git a/src/editortoolkit_cmn.cpp b/src/editortoolkit_cmn.cpp index 18cbed036a5..294b6836f67 100644 --- a/src/editortoolkit_cmn.cpp +++ b/src/editortoolkit_cmn.cpp @@ -9,7 +9,6 @@ //-------------------------------------------------------------------------------- -#include #include #include diff --git a/src/expansionmap.cpp b/src/expansionmap.cpp index 50d25596747..e3a411982cf 100644 --- a/src/expansionmap.cpp +++ b/src/expansionmap.cpp @@ -225,7 +225,7 @@ bool ExpansionMap::AddExpandedIDToExpansionMap(const std::string &origXmlId, std std::vector ExpansionMap::GetExpansionIDsForElement(const std::string &xmlId) { - if (m_map.count(xmlId)) { + if (m_map.contains(xmlId)) { return m_map.at(xmlId); } else { diff --git a/src/featureextractor.cpp b/src/featureextractor.cpp index fad1e07b47b..a1c2a9e9a40 100644 --- a/src/featureextractor.cpp +++ b/src/featureextractor.cpp @@ -59,7 +59,7 @@ void FeatureExtractor::Extract(const Object *object) if (chord && (note != chord->GetTopNote())) return; // Check if the note is tied to a previous one and skip it if yes - if (note->GetScoreTimeTiedDuration() == -1.0) { + if (note->GetScoreTimeTiedDuration() == -1) { // Check if we need to add it to the previous interval ids const int intervalsIdsSize = (int)m_intervalsIds.size(); if (intervalsIdsSize > 0) m_intervalsIds.get(intervalsIdsSize - 1) << note->GetID(); diff --git a/src/findlayerelementsfunctor.cpp b/src/findlayerelementsfunctor.cpp index 8c5b53fe942..35129d8b0af 100644 --- a/src/findlayerelementsfunctor.cpp +++ b/src/findlayerelementsfunctor.cpp @@ -22,13 +22,11 @@ namespace vrv { LayersInTimeSpanFunctor::LayersInTimeSpanFunctor(const MeterSig *meterSig, const Mensur *mensur) : ConstFunctor() { - m_time = 0.0; - m_duration = 0.0; m_meterParams.meterSig = meterSig; m_meterParams.mensur = mensur; } -void LayersInTimeSpanFunctor::SetEvent(double time, double duration) +void LayersInTimeSpanFunctor::SetEvent(const Fraction &time, const Fraction &duration) { m_time = time; m_duration = duration; @@ -51,15 +49,15 @@ FunctorCode LayersInTimeSpanFunctor::VisitLayerElement(const LayerElement *layer return FUNCTOR_CONTINUE; if (layerElement->Is(NOTE) && layerElement->GetParent()->Is(CHORD)) return FUNCTOR_CONTINUE; - double duration = layerElement->GetAlignmentDuration(m_meterParams); - double time = layerElement->GetAlignment()->GetTime(); + Fraction duration = layerElement->GetAlignmentDuration(m_meterParams); + Fraction time = layerElement->GetAlignment()->GetTime(); // The event is starting after the end of the element - if (time + duration <= m_time) { + if ((time + duration) <= m_time) { return FUNCTOR_CONTINUE; } // The element is starting after the event end - we can stop here - else if (time >= m_time + m_duration) { + else if (time >= (m_time + m_duration)) { return FUNCTOR_STOP; } @@ -92,15 +90,15 @@ LayerElementsInTimeSpanFunctor::LayerElementsInTimeSpanFunctor( const MeterSig *meterSig, const Mensur *mensur, const Layer *layer) : ConstFunctor() { - m_time = 0.0; - m_duration = 0.0; + m_time = 0; + m_duration = 0; m_meterParams.meterSig = meterSig; m_meterParams.mensur = mensur; m_layer = layer; m_allLayersButCurrent = false; } -void LayerElementsInTimeSpanFunctor::SetEvent(double time, double duration) +void LayerElementsInTimeSpanFunctor::SetEvent(const Fraction &time, const Fraction &duration) { m_time = time; m_duration = duration; @@ -124,11 +122,11 @@ FunctorCode LayerElementsInTimeSpanFunctor::VisitLayerElement(const LayerElement if (!layerElement->GetDurationInterface() || layerElement->Is({ MSPACE, SPACE })) return FUNCTOR_CONTINUE; - const double duration = !layerElement->GetFirstAncestor(CHORD) + Fraction duration = !layerElement->GetFirstAncestor(CHORD) ? layerElement->GetAlignmentDuration(m_meterParams) : vrv_cast(layerElement->GetFirstAncestor(CHORD))->GetAlignmentDuration(m_meterParams); - const double time = layerElement->GetAlignment()->GetTime(); + Fraction time = layerElement->GetAlignment()->GetTime(); // The event is starting after the end of the element if ((time + duration) <= m_time) return FUNCTOR_CONTINUE; diff --git a/src/fraction.cpp b/src/fraction.cpp new file mode 100644 index 00000000000..63c0e8de678 --- /dev/null +++ b/src/fraction.cpp @@ -0,0 +1,132 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fraction.cpp +// Author: Laurent Pugin +// Created: 2024 +// Copyright (c) Authors and others. All rights reserved. +///////////////////////////////////////////////////////////////////////////// + +#include "fraction.h" + +//---------------------------------------------------------------------------- + +#include +#include +#include + +//---------------------------------------------------------------------------- + +namespace vrv { + +//---------------------------------------------------------------------------- +// Fraction +//---------------------------------------------------------------------------- + +Fraction::Fraction(int num, int denom) +{ + m_numerator = num; + if (denom == 0) { + LogDebug("Denominator cannot be zero."); + denom = 1; + } + m_denominator = denom; + Reduce(); +} + +Fraction::Fraction(data_DURATION duration) +{ + duration = vrv::DurationMin(duration, DURATION_2048); + duration = vrv::DurationMax(duration, DURATION_maxima); + int den = pow(2, (duration + 1)); + m_numerator = 8; + m_denominator = den; + Reduce(); +} + +Fraction Fraction::operator+(const Fraction &other) const +{ + int num = m_numerator * other.m_denominator + other.m_numerator * m_denominator; + int denom = m_denominator * other.m_denominator; + return Fraction(num, denom); +} + +Fraction Fraction::operator-(const Fraction &other) const +{ + int num = m_numerator * other.m_denominator - other.m_numerator * m_denominator; + int denom = m_denominator * other.m_denominator; + return Fraction(num, denom); +} + +Fraction Fraction::operator*(const Fraction &other) const +{ + int num = m_numerator * other.m_numerator; + int denom = m_denominator * other.m_denominator; + return Fraction(num, denom); +} + +Fraction Fraction::operator/(const Fraction &other) const +{ + if (other.m_numerator == 0) { + LogDebug("Cannot divide by zero."); + return *this; + } + int num = m_numerator * other.m_denominator; + int denom = m_denominator * other.m_numerator; + return Fraction(num, denom); +} + +bool Fraction::operator==(const Fraction &other) const +{ + return m_numerator * other.m_denominator == other.m_numerator * m_denominator; +} + +std::strong_ordering Fraction::operator<=>(const Fraction &other) const +{ + return m_numerator * other.m_denominator <=> other.m_numerator * m_denominator; +} + +double Fraction::ToDouble() const +{ + return static_cast(m_numerator) / m_denominator; +} + +std::string Fraction::ToString() const +{ + return StringFormat("%d/%d", m_numerator, m_denominator); +} + +void Fraction::Reduce() +{ + if (m_denominator < 0) { // Keep the denominator positive + m_numerator = -m_numerator; + m_denominator = -m_denominator; + } + int gcdVal = std::gcd(abs(m_numerator), abs(m_denominator)); + if (gcdVal != 1) { + m_numerator /= gcdVal; + m_denominator /= gcdVal; + } +} + +std::pair Fraction::ToDur() const +{ + if (m_numerator == 0) return { DURATION_NONE, 0 }; + + int value = ceil(log2((double)m_denominator / (double)m_numerator * 8)) - 1; + data_DURATION dur = static_cast(value); + dur = vrv::DurationMax(DURATION_maxima, dur); + dur = vrv::DurationMin(DURATION_2048, dur); + + Fraction remainder = *this - Fraction(dur); + // Making sure we would not be trigger an inifite loop when looping over the remainder + if ((remainder >= *this) || (remainder < 0)) remainder = 0; + return { dur, remainder }; +} + +void Fraction::Reduce(int &numerator, int &denominator) +{ + Fraction fraction(numerator, denominator); + numerator = fraction.GetNumerator(); + denominator = fraction.GetDenominator(); +} + +} // namespace vrv diff --git a/src/ftrem.cpp b/src/ftrem.cpp index f89d56e183b..869d9b489f4 100644 --- a/src/ftrem.cpp +++ b/src/ftrem.cpp @@ -112,12 +112,6 @@ std::pair FTrem::GetFloatingBeamCount() const return { this->GetBeams(), this->GetBeamsFloat() }; } -void FTrem::SetElementShortening(int shortening) -{ - std::for_each(m_beamSegment.m_beamElementCoordRefs.begin(), m_beamSegment.m_beamElementCoordRefs.end(), - [shortening](BeamElementCoord *coord) { coord->m_maxShortening = shortening; }); -} - //---------------------------------------------------------------------------- // Functors methods //---------------------------------------------------------------------------- diff --git a/src/horizontalaligner.cpp b/src/horizontalaligner.cpp index f0b86cb2497..eae12142b76 100644 --- a/src/horizontalaligner.cpp +++ b/src/horizontalaligner.cpp @@ -11,6 +11,7 @@ #include #include +#include //---------------------------------------------------------------------------- @@ -49,12 +50,12 @@ void HorizontalAligner::Reset() Object::Reset(); } -Alignment *HorizontalAligner::SearchAlignmentAtTime(double time, AlignmentType type, int &idx) +Alignment *HorizontalAligner::SearchAlignmentAtTime(const Fraction &time, AlignmentType type, int &idx) { return const_cast(std::as_const(*this).SearchAlignmentAtTime(time, type, idx)); } -const Alignment *HorizontalAligner::SearchAlignmentAtTime(double time, AlignmentType type, int &idx) const +const Alignment *HorizontalAligner::SearchAlignmentAtTime(const Fraction &time, AlignmentType type, int &idx) const { idx = -1; // the index if we reach the end. const Alignment *alignment = NULL; @@ -63,8 +64,8 @@ const Alignment *HorizontalAligner::SearchAlignmentAtTime(double time, Alignment alignment = vrv_cast(this->GetChild(i)); assert(alignment); - double alignment_time = alignment->GetTime(); - if (AreEqual(alignment_time, time)) { + Fraction alignment_time = alignment->GetTime(); + if (alignment_time == time) { if (alignment->GetType() == type) { return alignment; } @@ -132,16 +133,16 @@ void MeasureAligner::Reset() { HorizontalAligner::Reset(); m_nonJustifiableLeftMargin = 0; - m_leftAlignment = new Alignment(-1.0 * DUR_MAX, ALIGNMENT_MEASURE_START); + m_leftAlignment = new Alignment(-1, ALIGNMENT_MEASURE_START); AddAlignment(m_leftAlignment); - m_leftBarLineAlignment = new Alignment(-1.0 * DUR_MAX, ALIGNMENT_MEASURE_LEFT_BARLINE); + m_leftBarLineAlignment = new Alignment(-1, ALIGNMENT_MEASURE_LEFT_BARLINE); AddAlignment(m_leftBarLineAlignment); - m_rightBarLineAlignment = new Alignment(0.0 * DUR_MAX, ALIGNMENT_MEASURE_RIGHT_BARLINE); + m_rightBarLineAlignment = new Alignment(0, ALIGNMENT_MEASURE_RIGHT_BARLINE); AddAlignment(m_rightBarLineAlignment); - m_rightAlignment = new Alignment(0.0 * DUR_MAX, ALIGNMENT_MEASURE_END); + m_rightAlignment = new Alignment(0, ALIGNMENT_MEASURE_END); AddAlignment(m_rightAlignment); - m_initialTstampDur = -DUR_MAX; + m_initialTstampDur = -1; } bool MeasureAligner::IsSupportedChild(Object *child) @@ -150,10 +151,9 @@ bool MeasureAligner::IsSupportedChild(Object *child) return true; } -Alignment *MeasureAligner::GetAlignmentAtTime(double time, AlignmentType type) +Alignment *MeasureAligner::GetAlignmentAtTime(const Fraction &time, AlignmentType type) { int idx; // the index if we reach the end. - time = durRound(time); Alignment *alignment = this->SearchAlignmentAtTime(time, type, idx); // we already have a alignment of the type at that time if (alignment != NULL) return alignment; @@ -175,7 +175,7 @@ Alignment *MeasureAligner::GetAlignmentAtTime(double time, AlignmentType type) return newAlignment; } -void MeasureAligner::SetMaxTime(double time) +void MeasureAligner::SetMaxTime(const Fraction &time) { // we have to have a m_rightBarLineAlignment assert(m_rightBarLineAlignment); @@ -194,7 +194,7 @@ void MeasureAligner::SetMaxTime(double time) } } -double MeasureAligner::GetMaxTime() const +Fraction MeasureAligner::GetMaxTime() const { // we have to have a m_rightBarLineAlignment assert(m_rightBarLineAlignment); @@ -202,11 +202,9 @@ double MeasureAligner::GetMaxTime() const return m_rightAlignment->GetTime(); } -void MeasureAligner::SetInitialTstamp(int meterUnit) +void MeasureAligner::SetInitialTstamp(data_DURATION meterUnit) { - if (meterUnit != 0) { - m_initialTstampDur = DUR_MAX / meterUnit * -1; - } + m_initialTstampDur = Fraction(meterUnit) * -1; } void MeasureAligner::AdjustProportionally(const ArrayOfAdjustmentTuples &adjustments) @@ -360,10 +358,10 @@ void GraceAligner::Reset() m_totalWidth = 0; } -Alignment *GraceAligner::GetAlignmentAtTime(double time, AlignmentType type) +Alignment *GraceAligner::GetAlignmentAtTime(const Fraction &time, AlignmentType type) { int idx; // the index if we reach the end. - time = round(time); + // time = round(time); Alignment *alignment = this->SearchAlignmentAtTime(time, type, idx); // we already have a alignment of the type at that time if (alignment != NULL) return alignment; @@ -392,14 +390,14 @@ void GraceAligner::StackGraceElement(LayerElement *element) void GraceAligner::AlignStack() { - double time = 0.0; + Fraction time; for (int i = (int)m_graceStack.size(); i > 0; --i) { LayerElement *element = vrv_cast(m_graceStack.at(i - 1)); assert(element); // get the duration of the event - double duration = element->GetAlignmentDuration(false); + Fraction duration = element->GetAlignmentDuration(false); // Time goes backward with grace notes - time -= duration; + time = time - duration; Alignment *alignment = this->GetAlignmentAtTime(time, ALIGNMENT_DEFAULT); element->SetGraceAlignment(alignment); @@ -506,7 +504,7 @@ Alignment::Alignment() : Object(ALIGNMENT) this->Reset(); } -Alignment::Alignment(double time, AlignmentType type) : Object(ALIGNMENT) +Alignment::Alignment(const Fraction &time, AlignmentType type) : Object(ALIGNMENT) { this->Reset(); m_time = time; @@ -518,7 +516,7 @@ void Alignment::Reset() Object::Reset(); m_xRel = 0; - m_time = 0.0; + m_time = Fraction(0, 1); m_type = ALIGNMENT_DEFAULT; ClearGraceAligners(); @@ -677,7 +675,7 @@ void Alignment::GetLeftRight(int staffN, int &minLeft, int &maxRight, const std: GraceAligner *Alignment::GetGraceAligner(int id) { - if (m_graceAligners.count(id) == 0) { + if (!m_graceAligners.contains(id)) { m_graceAligners[id] = new GraceAligner(); } return m_graceAligners[id]; @@ -736,13 +734,14 @@ std::pair Alignment::GetAlignmentTopBottom() const } int Alignment::HorizontalSpaceForDuration( - double intervalTime, int maxActualDur, double spacingLinear, double spacingNonLinear) + const Fraction &intervalTime, data_DURATION maxActualDur, double spacingLinear, double spacingNonLinear) { + double intervalTimeDbl = intervalTime.ToDouble(); /* If the longest duration interval in the score is longer than semibreve, adjust spacing so that interval gets the space a semibreve would ordinarily get. */ - if (maxActualDur < DUR_1) intervalTime /= pow(2.0, DUR_1 - maxActualDur); + if (maxActualDur < DURATION_1) intervalTimeDbl /= pow(2.0, DURATION_1 - maxActualDur); - return pow(intervalTime, spacingNonLinear) * spacingLinear * 10.0; // numbers are experimental constants + return pow(intervalTimeDbl * 1024, spacingNonLinear) * spacingLinear * 10.0; // numbers are experimental constants } FunctorCode Alignment::Accept(Functor &functor) diff --git a/src/ioabc.cpp b/src/ioabc.cpp index c3f6c053f7c..029c9ef0495 100644 --- a/src/ioabc.cpp +++ b/src/ioabc.cpp @@ -325,7 +325,7 @@ int ABCInput::ParseTuplet(const std::string &musicCode, int index) // List of tuplets with default base of 3 const std::unordered_set threeBase = { 2, 4, 8, 9 }; if (!tupletNumbase) { - tupletNumbase = threeBase.count(tupletNum) ? 3 : 2; + tupletNumbase = threeBase.contains(tupletNum) ? 3 : 2; } // Get number of elements supposed to be in the tuplet _:_:9 // Ignore this for the time being diff --git a/src/iocmme.cpp b/src/iocmme.cpp new file mode 100644 index 00000000000..5b285264b07 --- /dev/null +++ b/src/iocmme.cpp @@ -0,0 +1,1153 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: iocmme.cpp +// Author: Laurent Pugin +// Created: 2024 +// Copyright (c) Authors and others. All rights reserved. +///////////////////////////////////////////////////////////////////////////// + +#include "iocmme.h" + +//---------------------------------------------------------------------------- + +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- + +#include "accid.h" +#include "annot.h" +#include "app.h" +#include "barline.h" +#include "chord.h" +#include "clef.h" +#include "custos.h" +#include "doc.h" +#include "dot.h" +#include "genericlayerelement.h" +#include "keyaccid.h" +#include "keysig.h" +#include "label.h" +#include "layer.h" +#include "lem.h" +#include "ligature.h" +#include "mdiv.h" +#include "measure.h" +#include "mensur.h" +#include "note.h" +#include "proport.h" +#include "rdg.h" +#include "rest.h" +#include "score.h" +#include "section.h" +#include "space.h" +#include "staff.h" +#include "staffdef.h" +#include "staffgrp.h" +#include "supplied.h" +#include "syl.h" +#include "text.h" +#include "verse.h" +#include "vrv.h" + +//---------------------------------------------------------------------------- + +namespace vrv { + +//---------------------------------------------------------------------------- +// CmmeInput +//---------------------------------------------------------------------------- + +CmmeInput::CmmeInput(Doc *doc) : Input(doc) +{ + m_score = NULL; + m_currentSection = NULL; + m_currentContainer = NULL; + m_currentSignature = NULL; + m_currentNote = NULL; + m_isInSyllable = false; + m_mensInfo = NULL; +} + +CmmeInput::~CmmeInput() {} + +////////////////////////////////////////////////////////////////////////// + +bool CmmeInput::Import(const std::string &cmme) +{ + try { + m_doc->Reset(); + m_doc->SetType(Raw); + m_doc->SetMensuralMusicOnly(BOOLEAN_true); + + // Genereate the header and add a comment to the project description + m_doc->GenerateMEIHeader(false); + pugi::xml_node projectDesc = m_doc->m_header.first_child().select_node("//projectDesc").node(); + if (projectDesc) { + pugi::xml_node p1 = projectDesc.append_child("p"); + p1.text().set("Converted from CMME XML"); + } + + pugi::xml_document doc; + doc.load_string(cmme.c_str(), (pugi::parse_comments | pugi::parse_default) & ~pugi::parse_eol); + pugi::xml_node root = doc.first_child(); + + // The mDiv + Mdiv *mdiv = new Mdiv(); + mdiv->m_visibility = Visible; + m_doc->AddChild(mdiv); + // The score + m_score = new Score(); + mdiv->AddChild(m_score); + + // We asssume that there is always as many Voice elements than given in NumVoices + pugi::xpath_node_set voices = root.select_nodes("/Piece/VoiceData/Voice"); + for (pugi::xpath_node voiceNode : voices) { + m_numVoices++; + // Get the voice name if any + std::string name = ChildAsString(voiceNode.node(), "Name"); + m_voices.push_back(name); + } + // Allocatate the mensural infos initialized with everything binary + m_mensInfos.resize(m_numVoices); + + pugi::xpath_node_set musicSections = root.select_nodes("/Piece/MusicSection/*"); + + for (pugi::xpath_node musicSectionNode : musicSections) { + CreateSection(musicSectionNode.node()); + } + + // add minimal scoreDef + StaffGrp *staffGrp = new StaffGrp(); + GrpSym *grpSym = new GrpSym(); + grpSym->SetSymbol(staffGroupingSym_SYMBOL_bracket); + staffGrp->AddChild(grpSym); + for (int i = 0; i < m_numVoices; ++i) { + StaffDef *staffDef = new StaffDef(); + staffDef->SetN(i + 1); + staffDef->SetLines(5); + staffDef->SetNotationtype(NOTATIONTYPE_mensural); + staffGrp->AddChild(staffDef); + // Label + if (!m_voices.at(i).empty()) { + Label *label = new Label(); + Text *text = new Text(); + text->SetText(UTF8to32(m_voices.at(i))); + label->AddChild(text); + staffDef->AddChild(label); + } + // Default mensur with everything binary in CMME + Mensur *mensur = new Mensur(); + mensur->SetProlatio(PROLATIO_2); + mensur->SetTempus(TEMPUS_2); + mensur->SetModusminor(MODUSMINOR_2); + mensur->SetModusmaior(MODUSMAIOR_2); + staffDef->AddChild(mensur); + } + + m_score->GetScoreDef()->AddChild(staffGrp); + + m_doc->ConvertToPageBasedDoc(); + } + catch (char *str) { + LogError("%s", str); + return false; + } + + return true; +} + +void CmmeInput::CreateSection(pugi::xml_node musicSectionNode) +{ + assert(m_score); + + std::string sectionType = musicSectionNode.name(); + + // Create a new section + Section *section = new Section(); + // Add the section type (MensuralMusic, Plainchant) to `@type` + section->SetType(sectionType); + m_score->AddChild(section); + + // Set the current section to an invisible unmeasured measure + m_currentSection = new Measure(UNMEASURED, 1); + section->AddChild(m_currentSection); + + // Loop through the number of voices and parse Voice or create an empty staff if not given + for (int i = 0; i < m_numVoices; ++i) { + std::string xpath = StringFormat("./Voice[VoiceNum[text()='%d']]", i + 1); + pugi::xpath_node voice = musicSectionNode.select_node(xpath.c_str()); + if (voice) { + CreateStaff(voice.node()); + } + else { + Staff *staff = new Staff(i + 1); + staff->SetVisible(BOOLEAN_false); + m_currentSection->AddChild(staff); + } + } +} + +void CmmeInput::CreateStaff(pugi::xml_node voiceNode) +{ + assert(m_currentSection); + + int numVoice = this->ChildAsInt(voiceNode, "VoiceNum"); + + Staff *staff = new Staff(numVoice); + Layer *layer = new Layer(); + layer->SetN(1); + m_currentContainer = layer; + + // (Re)-set the current mens info to the corresponding voice + m_mensInfo = &m_mensInfos.at(numVoice - 1); + // Reset the syllable position + m_isInSyllable = false; + m_currentSignature = NULL; + + staff->AddChild(m_currentContainer); + m_currentSection->AddChild(staff); + + // Loop through the event lists + ReadEvents(voiceNode.child("EventList")); +} + +void CmmeInput::CreateApp(pugi::xml_node appNode) +{ + assert(m_currentContainer); + + App *app = new App(EDITORIAL_LAYER); + m_currentContainer->AddChild(app); + m_currentContainer = app; + + // Loop through the event lists + pugi::xpath_node_set lemOrRdgs = appNode.select_nodes("./Reading"); + bool isFirst = true; + for (pugi::xpath_node lemOrRdg : lemOrRdgs) { + pugi::xml_node lemOrRdgNode = lemOrRdg.node(); + this->CreateLemOrRdg(lemOrRdgNode, isFirst); + isFirst = false; + } + + m_currentContainer = m_currentContainer->GetParent(); +} + +void CmmeInput::CreateLemOrRdg(pugi::xml_node lemOrRdgNode, bool isFirst) +{ + assert(m_currentContainer); + std::string versionId = this->ChildAsString(lemOrRdgNode, "VariantVersionID"); + + EditorialElement *lemOrRdg = NULL; + if (isFirst && (lemOrRdgNode.child("PreferredReading") || (versionId == "DEFAULT"))) { + lemOrRdg = new Lem(); + } + else { + lemOrRdg = new Rdg(); + } + lemOrRdg->m_visibility = (isFirst) ? Visible : Hidden; + + if (lemOrRdg->Is(RDG)) { + std::string label; + // Loop through the event lists + pugi::xpath_node_set variants = lemOrRdgNode.select_nodes("./VariantVersionID"); + bool isFirst = true; + for (pugi::xpath_node variant : variants) { + if (!isFirst) label += "; "; + label += this->AsString(variant.node()); + isFirst = false; + } + lemOrRdg->SetLabel(label); + } + + if (lemOrRdgNode.child("Error")) { + lemOrRdg->SetType("Error"); + } + else if (lemOrRdgNode.child("Lacuna")) { + lemOrRdg->SetType("Lacuna"); + } + + m_currentContainer->AddChild(lemOrRdg); + + m_currentContainer = lemOrRdg; + + ReadEvents(lemOrRdgNode.child("Music")); + + m_currentContainer = m_currentContainer->GetParent(); +} + +void CmmeInput::ReadEvents(pugi::xml_node eventsNode) +{ + assert(m_currentContainer); + + bool keySigFound = false; + + // Loop through the event lists + pugi::xpath_node_set events = eventsNode.select_nodes("./*"); + for (pugi::xpath_node event : events) { + pugi::xml_node eventNode = event.node(); + std::string name = eventNode.name(); + if (name == "Clef") { + if (this->IsClef(eventNode)) { + CreateClef(eventNode); + } + else if (eventNode.select_node("./Signature")) { + keySigFound = true; + CreateKeySig(eventNode); + } + else { + CreateAccid(eventNode); + } + } + else if (name == "Custos") { + CreateCustos(eventNode); + } + else if (name == "Dot") { + CreateDot(eventNode); + } + else if (name == "LineEnd") { + CreateBreak(eventNode); + } + else if (name == "Mensuration") { + CreateMensuration(eventNode); + } + else if (name == "MiscItem") { + /// Assuming that a MiscItem contains only one child + if (eventNode.select_node("./Barline")) { + pugi::xml_node barlineNode = eventNode.select_node("./Barline").node(); + CreateBarline(barlineNode); + } + else if (eventNode.child("Ellipsis")) { + CreateEllipsis(); + } + else if (eventNode.child("Lacuna")) { + CreateLacuna(eventNode.child("Lacuna")); + } + else { + LogWarning("Unsupported MiscItem content"); + } + } + else if (name == "MultiEvent") { + /// Assuming that a multievent contains a key signature, all events are key signatures + if (eventNode.select_node("./Clef/Signature")) { + m_currentSignature = NULL; + pugi::xpath_node_set clefs = eventNode.select_nodes("./Clef"); + for (pugi::xpath_node clef : clefs) { + pugi::xml_node clefNode = clef.node(); + CreateKeySig(clefNode); + } + } + else if (eventNode.select_node("./Note")) { + // Assuming that this only contains notes (and is a chord) + CreateChord(eventNode); + } + else { + LogWarning("Unsupported event '%s'", name.c_str()); + } + } + else if (name == "Note") { + CreateNote(eventNode); + } + else if (name == "OriginalText") { + CreateOriginalText(eventNode); + } + else if (name == "Proportion") { + CreateProport(eventNode); + } + else if (name == "Rest") { + CreateRest(eventNode); + } + else if (name == "VariantReadings") { + CreateApp(eventNode); + } + else { + LogWarning("Unsupported event '%s'", name.c_str()); + } + if (!keySigFound) { + m_currentSignature = NULL; + } + keySigFound = false; + } +} + +void CmmeInput::ReadEditorialCommentary(pugi::xml_node eventNode, Object *object) +{ + std::string commentary = this->ChildAsString(eventNode, "EditorialCommentary"); + + if (!commentary.empty()) { + Annot *annot = new Annot(); + Text *text = new Text(); + text->SetText(UTF8to32(commentary)); + annot->AddChild(text); + xsdAnyURI_List list; + list.push_back("#" + object->GetID()); + annot->SetPlist(list); + m_currentSection->AddChild(annot); + } +} + +void CmmeInput::CreateAccid(pugi::xml_node accidNode) +{ + static const std::map shapeMap{ + { "Bmol", ACCIDENTAL_WRITTEN_f }, // + { "BmolDouble", ACCIDENTAL_WRITTEN_f }, // + { "Bqua", ACCIDENTAL_WRITTEN_n }, // + { "Diesis", ACCIDENTAL_WRITTEN_s }, // + }; + + static const std::map pitchMap{ + { "C", PITCHNAME_c }, // + { "D", PITCHNAME_d }, // + { "E", PITCHNAME_e }, // + { "F", PITCHNAME_f }, // + { "G", PITCHNAME_g }, // + { "A", PITCHNAME_a }, // + { "B", PITCHNAME_b } // + }; + + assert(m_currentContainer); + + Accid *accid = new Accid(); + std::string appearance = this->ChildAsString(accidNode, "Appearance"); + data_ACCIDENTAL_WRITTEN accidWritten + = shapeMap.contains(appearance) ? shapeMap.at(appearance) : ACCIDENTAL_WRITTEN_f; + accid->SetAccid(accidWritten); + + std::string step = this->ChildAsString(accidNode, "Pitch/LetterName"); + // Default pitch to C + data_PITCHNAME ploc = pitchMap.contains(step) ? pitchMap.at(step) : PITCHNAME_c; + accid->SetPloc(ploc); + + int oct = this->ChildAsInt(accidNode, "Pitch/OctaveNum"); + if ((ploc != PITCHNAME_a) && (ploc != PITCHNAME_b)) oct += 1; + accid->SetOloc(oct); + + int staffLoc = this->ChildAsInt(accidNode, "StaffLoc"); + accid->SetLoc(staffLoc - 1); + + this->ReadEditorialCommentary(accidNode, accid); + + m_currentContainer->AddChild(accid); +} + +void CmmeInput::CreateBarline(pugi::xml_node barlineNode) +{ + assert(m_currentContainer); + + BarLine *barLine = new BarLine(); + + // Determine the barLine/@form based on the CMME 's and + int formNumLines = this->ChildAsInt(barlineNode, "NumLines"); + if (formNumLines == 1) { + barLine->SetForm(BARRENDITION_single); + } + else if (formNumLines == 2) { + barLine->SetForm(BARRENDITION_dbl); + } + else if (formNumLines != VRV_UNSET) { + LogWarning("Unsupported barline (with more than 2 lines)"); + } + + // `@form` is overwritten to 'rptboth' when is used + if (barlineNode.select_node("./RepeatSign")) { + barLine->SetForm(BARRENDITION_rptboth); + } + // Determine the barLine/@place + int bottomLine = this->ChildAsInt(barlineNode, "BottomStaffLine"); + if (bottomLine != VRV_UNSET) { + int place = bottomLine * 2; + barLine->SetPlace(place); + } + // Determine the barLine/@len + int numSpaces = this->ChildAsInt(barlineNode, "NumSpaces"); + if (numSpaces != VRV_UNSET) { + barLine->SetLen(numSpaces * 2); + } + + m_currentContainer->AddChild(barLine); +} + +void CmmeInput::CreateBreak(pugi::xml_node breakNode) +{ + assert(m_currentContainer); + + // This is either a system or page break (usually only + // in one part, so not easy to visualise in score) + if (breakNode.select_node("./PageEnd")) { + GenericLayerElement *pb = new GenericLayerElement("pb"); + m_currentContainer->AddChild(pb); + } + else { + GenericLayerElement *sb = new GenericLayerElement("sb"); + m_currentContainer->AddChild(sb); + } +} + +void CmmeInput::CreateChord(pugi::xml_node chordNode) +{ + assert(m_currentContainer); + + Chord *chord = new Chord(); + m_currentContainer->AddChild(chord); + m_currentContainer = chord; + pugi::xpath_node_set events = chordNode.select_nodes("./*"); + for (pugi::xpath_node event : events) { + pugi::xml_node eventNode = event.node(); + std::string name = eventNode.name(); + if (name == "Note") { + CreateNote(eventNode); + } + else { + LogWarning("Unsupported chord component: '%s'", name.c_str()); + } + } + m_currentContainer = m_currentContainer->GetParent(); +} + +void CmmeInput::CreateClef(pugi::xml_node clefNode) +{ + static const std::map shapeMap{ + { "C", CLEFSHAPE_C }, // + { "F", CLEFSHAPE_F }, // + { "G", CLEFSHAPE_G }, // + { "Frnd", CLEFSHAPE_F }, // + { "Fsqr", CLEFSHAPE_F }, // + }; + + assert(m_currentContainer); + + Clef *clef = new Clef(); + int staffLoc = this->ChildAsInt(clefNode, "StaffLoc"); + staffLoc = (staffLoc + 1) / 2; + clef->SetLine(staffLoc); + + std::string appearance = this->ChildAsString(clefNode, "Appearance"); + // Default clef to C + data_CLEFSHAPE shape = shapeMap.contains(appearance) ? shapeMap.at(appearance) : CLEFSHAPE_C; + clef->SetShape(shape); + + this->ReadEditorialCommentary(clefNode, clef); + + m_currentContainer->AddChild(clef); + + return; +} + +void CmmeInput::CreateCustos(pugi::xml_node custosNode) +{ + static const std::map pitchMap{ + { "C", PITCHNAME_c }, // + { "D", PITCHNAME_d }, // + { "E", PITCHNAME_e }, // + { "F", PITCHNAME_f }, // + { "G", PITCHNAME_g }, // + { "A", PITCHNAME_a }, // + { "B", PITCHNAME_b } // + }; + + assert(m_currentContainer); + + Custos *custos = new Custos(); + std::string step = this->ChildAsString(custosNode, "LetterName"); + // Default pitch to C + data_PITCHNAME pname = pitchMap.contains(step) ? pitchMap.at(step) : PITCHNAME_c; + custos->SetPname(pname); + + int oct = this->ChildAsInt(custosNode, "OctaveNum"); + if ((pname != PITCHNAME_a) && (pname != PITCHNAME_b)) oct += 1; + custos->SetOct(oct); + + this->ReadEditorialCommentary(custosNode, custos); + + m_currentContainer->AddChild(custos); + + return; +} + +void CmmeInput::CreateDot(pugi::xml_node dotNode) +{ + assert(m_currentContainer); + + Dot *dot = new Dot(); + m_currentContainer->AddChild(dot); + + this->ReadEditorialCommentary(dotNode, dot); + + return; +} + +void CmmeInput::CreateEllipsis() +{ + assert(m_currentContainer); + + GenericLayerElement *gap = new GenericLayerElement("gap"); + gap->SetType("cmme_ellipsis"); + gap->m_unsupported.push_back(std::make_pair("reason", "incipit")); + m_currentContainer->AddChild(gap); +} + +void CmmeInput::CreateKeySig(pugi::xml_node keyNode) +{ + static const std::map shapeMap{ + { "Bmol", ACCIDENTAL_WRITTEN_f }, // + { "BmolDouble", ACCIDENTAL_WRITTEN_f }, // + { "Bqua", ACCIDENTAL_WRITTEN_n }, // + { "Diesis", ACCIDENTAL_WRITTEN_s }, // + }; + + static const std::map pitchMap{ + { "C", PITCHNAME_c }, // + { "D", PITCHNAME_d }, // + { "E", PITCHNAME_e }, // + { "F", PITCHNAME_f }, // + { "G", PITCHNAME_g }, // + { "A", PITCHNAME_a }, // + { "B", PITCHNAME_b } // + }; + + assert(m_currentContainer); + + if (!m_currentSignature) { + m_currentSignature = new KeySig(); + m_currentContainer->AddChild(m_currentSignature); + } + + KeyAccid *keyAccid = new KeyAccid(); + std::string appearance = this->ChildAsString(keyNode, "Appearance"); + data_ACCIDENTAL_WRITTEN accid = shapeMap.contains(appearance) ? shapeMap.at(appearance) : ACCIDENTAL_WRITTEN_f; + keyAccid->SetAccid(accid); + + std::string step = this->ChildAsString(keyNode, "Pitch/LetterName"); + // Default pitch to C + data_PITCHNAME pname = pitchMap.contains(step) ? pitchMap.at(step) : PITCHNAME_c; + keyAccid->SetPname(pname); + + int oct = this->ChildAsInt(keyNode, "Pitch/OctaveNum"); + if ((pname != PITCHNAME_a) && (pname != PITCHNAME_b)) oct += 1; + keyAccid->SetOct(oct); + + int staffLoc = this->ChildAsInt(keyNode, "StaffLoc"); + keyAccid->SetLoc(staffLoc - 1); + + this->ReadEditorialCommentary(keyNode, keyAccid); + + m_currentSignature->AddChild(keyAccid); +} + +void CmmeInput::CreateLacuna(pugi::xml_node lacunaNode) +{ + // A lacuna is used in CMME to pad a part where + // the scribe's version is temporally incomplete. + // We use mei:space, but since this is not explicit + // in the source, we wrap it in mei:supplied + assert(m_currentContainer); + Space *space = new Space(); + Supplied *supplied = new Supplied(); + supplied->AddChild(space); + int num; + int numbase; + data_DURATION duration = this->ReadDuration(lacunaNode, num, numbase); + space->SetDur(duration); + space->SetType("cmme_lacuna"); + supplied->SetType("cmme_lacuna"); + m_currentContainer->AddChild(supplied); +} + +void CmmeInput::CreateMensuration(pugi::xml_node mensurationNode) +{ + assert(m_currentContainer); + assert(m_mensInfo); + + pugi::xml_node mensInfo = mensurationNode.child("MensInfo"); + if (mensInfo) { + m_mensInfo->prolatio = this->ChildAsInt(mensInfo, "Prolatio"); + m_mensInfo->tempus = this->ChildAsInt(mensInfo, "Tempus"); + m_mensInfo->modusminor = this->ChildAsInt(mensInfo, "ModusMinor"); + m_mensInfo->modusmaior = this->ChildAsInt(mensInfo, "ModusMaior"); + } + // If there is no then resets everything to binary + else { + m_mensInfo->prolatio = 2; + m_mensInfo->tempus = 2; + m_mensInfo->modusminor = 2; + m_mensInfo->modusmaior = 2; + } + + /// Mensuration: logical domain + Mensur *mensur = new Mensur(); + data_PROLATIO prolatio = (m_mensInfo->prolatio == 3) ? PROLATIO_3 : PROLATIO_2; + mensur->SetProlatio(prolatio); + data_TEMPUS tempus = (m_mensInfo->tempus == 3) ? TEMPUS_3 : TEMPUS_2; + mensur->SetTempus(tempus); + data_MODUSMINOR modusminor = (m_mensInfo->modusminor == 3) ? MODUSMINOR_3 : MODUSMINOR_2; + mensur->SetModusminor(modusminor); + data_MODUSMAIOR modusmaior = (m_mensInfo->modusmaior == 3) ? MODUSMAIOR_3 : MODUSMAIOR_2; + mensur->SetModusmaior(modusmaior); + + /// Mensuration: visual domain + /// Mensuration/Sign/MainSymbol to @sign + pugi::xml_node signNode = mensurationNode.child("Sign"); + std::string signValue = this->ChildAsString(signNode, "MainSymbol"); + if (signValue == "O") { + mensur->SetSign(MENSURATIONSIGN_O); + // If the is no mensInfo, infer it from the Sign + if (!mensInfo) { + m_mensInfo->tempus = 3; + mensur->SetTempus(TEMPUS_3); + } + } + else if (signValue == "C") { + mensur->SetSign(MENSURATIONSIGN_C); + } + else if (signValue != "") { + LogWarning("Unsupported mesuration sign in CMME (not 'O' or 'C')"); + } + + /// Mensuration/Sign/Dot to @dot + if (signNode.child("Dot")) { + mensur->SetDot(BOOLEAN_true); + // If there is no mensInfo, infer it from the Dot + if (!mensInfo) { + m_mensInfo->prolatio = 3; + mensur->SetProlatio(PROLATIO_3); + } + } + + /// Mensuration/Sign/Strokes to @slash + int strokes = this->ChildAsInt(signNode, "Strokes"); + if (strokes != VRV_UNSET) { + mensur->SetSlash(strokes); + } + + /// Mensuration/Sign/Orientation to @orient + static const std::map orientationMap{ + { "Reversed", ORIENTATION_reversed }, // + { "90CW", ORIENTATION_90CW }, // + { "90CCW", ORIENTATION_90CCW } // + }; + std::string orientation = this->ChildAsString(signNode, "Orientation"); + data_ORIENTATION orient = orientationMap.contains(orientation) ? orientationMap.at(orientation) : ORIENTATION_NONE; + mensur->SetOrient(orient); + + /// Mensuration/Small to @fontsize=small (not yet rendered in Verovio). + /// In the long run, we should add @size to att.mensur.vis because we have @mensur.size for , see class + /// att.mensural.vis + pugi::xml_node smallNode = mensurationNode.child("Small"); + if (smallNode != NULL) { + mensur->m_unsupported.push_back(std::make_pair("fontsize", "small")); + } + + /// Mesuration/NoScoreEffect to @type = cmme_no_score_effect + pugi::xml_node noScoreEffect = mensurationNode.child("NoScoreEffect"); + if (noScoreEffect != NULL) { + mensur->SetType("cmme_no_score_effect"); + } + + /// Mensuration/Number/Num to @num and Number/Den to @numbase + /// However, Number/Den cannot be entered in the CMME Editor. + /// It can only be added in the XML manually and imported into the CMME Editor, + /// where it won't render, but one can see it in the "Event Inspector." + pugi::xml_node numberNode = mensurationNode.child("Number"); + if (numberNode != NULL) { + int numValue = this->ChildAsInt(numberNode, "Num"); + int denValue = this->ChildAsInt(numberNode, "Den"); + if (numValue != VRV_UNSET and numValue != 0) { + mensur->SetNum(numValue); + } + if (denValue != VRV_UNSET and denValue != 0) { + mensur->SetNumbase(denValue); + } + } + + /// Mensuration/StaffLoc to @loc + int staffLoc = this->ChildAsInt(mensurationNode, "StaffLoc"); + if (staffLoc != VRV_UNSET) { + mensur->SetLoc(staffLoc); + } + + this->ReadEditorialCommentary(mensurationNode, mensur); + + m_currentContainer->AddChild(mensur); + + /// Proportion part coming from CMME in in . In this case, create an MEI + /// element that follows the MEI element and that contains the proport/@num and + /// proport/@numbase values of 'num' and 'den' + pugi::xml_node tempoChangeNode = mensInfo.child("TempoChange"); + if (tempoChangeNode != NULL) { + Proport *proport = new Proport(); + int numVal = this->ChildAsInt(tempoChangeNode, "Num"); + int denVal = this->ChildAsInt(tempoChangeNode, "Den"); + if (numVal != VRV_UNSET) { + proport->SetNum(numVal); + } + if (denVal != VRV_UNSET) { + proport->SetNumbase(denVal); + } + proport->SetType("cmme_tempo_change"); + m_currentContainer->AddChild(proport); + } + + return; +} + +void CmmeInput::CreateNote(pugi::xml_node noteNode) +{ + static const std::map pitchMap{ + { "C", PITCHNAME_c }, // + { "D", PITCHNAME_d }, // + { "E", PITCHNAME_e }, // + { "F", PITCHNAME_f }, // + { "G", PITCHNAME_g }, // + { "A", PITCHNAME_a }, // + { "B", PITCHNAME_b } // + }; + + static const std::map accidMap{ + { -3, ACCIDENTAL_WRITTEN_tf }, // + { -2, ACCIDENTAL_WRITTEN_ff }, // + { -1, ACCIDENTAL_WRITTEN_f }, // + { 0, ACCIDENTAL_WRITTEN_n }, // + { 1, ACCIDENTAL_WRITTEN_s }, // + { 2, ACCIDENTAL_WRITTEN_ss }, // + { 3, ACCIDENTAL_WRITTEN_sx }, // + }; + + static const std::map stemDirMap{ + { "Up", STEMDIRECTION_up }, // + { "Down", STEMDIRECTION_down }, // + { "Left", STEMDIRECTION_left }, // + { "Right", STEMDIRECTION_right }, // + }; + + assert(m_currentContainer); + + Note *note = new Note(); + std::string step = this->ChildAsString(noteNode, "LetterName"); + // Default pitch to C + data_PITCHNAME pname = pitchMap.contains(step) ? pitchMap.at(step) : PITCHNAME_c; + note->SetPname(pname); + + int num; + int numbase; + data_DURATION duration = this->ReadDuration(noteNode, num, numbase); + note->SetDur(duration); + if (num != VRV_UNSET && numbase != VRV_UNSET) { + note->SetNum(num); + note->SetNumbase(numbase); + } + + int oct = this->ChildAsInt(noteNode, "OctaveNum"); + if ((pname != PITCHNAME_a) && (pname != PITCHNAME_b)) oct += 1; + note->SetOct(oct); + + if (noteNode.child("Colored")) { + note->SetColored(BOOLEAN_true); + } + + if (noteNode.child("ModernText")) { + m_currentNote = note; + CreateVerse(noteNode.child("ModernText")); + m_currentNote = NULL; + } + + if (noteNode.child("Corona")) { + data_STAFFREL_basic position = STAFFREL_basic_above; + if (noteNode.select_node("Corona/Orientation[text()='Down']")) { + position = STAFFREL_basic_below; + } + note->SetFermata(position); + } + + if (noteNode.child("ModernAccidental")) { + Accid *accid = new Accid(); + int offset = this->ChildAsInt(noteNode.child("ModernAccidental"), "PitchOffset"); + offset = std::min(3, offset); + offset = std::max(-3, offset); + // Default pitch to C + data_ACCIDENTAL_WRITTEN accidWritten = accidMap.contains(offset) ? accidMap.at(offset) : ACCIDENTAL_WRITTEN_n; + accid->SetAccid(accidWritten); + accid->SetFunc(accidLog_FUNC_edit); + note->AddChild(accid); + } + + if (noteNode.child("Signum")) { + // MEI currently lacks signum congruentiae, so we warn and set not type + LogWarning("Signum Congruentiae in CMME mapped to @type"); + note->SetType("cmme_signum_congruentiae"); + } + + if (noteNode.child("Stem")) { + std::string dir = this->ChildAsString(noteNode.child("Stem"), "Dir"); + if (dir == "Barline") { + LogWarning("Unsupported 'Barline' stem direction"); + } + data_STEMDIRECTION stemDir = stemDirMap.contains(dir) ? stemDirMap.at(dir) : STEMDIRECTION_NONE; + note->SetStemDir(stemDir); + + std::string side = this->ChildAsString(noteNode.child("Stem"), "Side"); + if (side == "Left") { + note->SetStemPos(STEMPOSITION_left); + } + else if (side == "Right") { + note->SetStemPos(STEMPOSITION_right); + } + } + + if (noteNode.child("Lig")) { + std::string lig = this->ChildAsString(noteNode, "Lig"); + if (lig == "Retrorsum") { + LogWarning("Unsupported 'Retrorsum' ligature"); + } + data_LIGATUREFORM form = (lig == "Obliqua") ? LIGATUREFORM_obliqua : LIGATUREFORM_recta; + // First note of the ligature, create the ligature element + if (!m_currentContainer->Is(LIGATURE)) { + if (m_currentContainer->Is(CHORD)) { + LogWarning("Ligature within chord is not supported"); + } + else { + Ligature *ligature = new Ligature(); + ligature->SetForm(form); + m_currentContainer->AddChild(ligature); + m_currentContainer = ligature; + } + } + // Otherwise simply add the `@lig` to the note + else { + note->SetLig(form); + } + } + + this->ReadEditorialCommentary(noteNode, note); + + m_currentContainer->AddChild(note); + + // We have processed the last note of a ligature + if (m_currentContainer->Is(LIGATURE) && !noteNode.child("Lig")) { + m_currentContainer = m_currentContainer->GetParent(); + } + + return; +} + +void CmmeInput::CreateOriginalText(pugi::xml_node originalTextNode) +{ + return; +} + +void CmmeInput::CreateProport(pugi::xml_node proportNode) +{ + assert(m_currentContainer); + assert(m_mensInfo); + + /// Proportion part coming from CMME . In this case, create an MEI element is created alone + /// (not following an MEI element) + Proport *proport = new Proport(); + int numVal = this->ChildAsInt(proportNode, "Num"); + int denVal = this->ChildAsInt(proportNode, "Den"); + if (numVal != VRV_UNSET) { + proport->SetNum(numVal); + // Cumulated it + m_mensInfo->proportNum *= numVal; + } + if (denVal != VRV_UNSET) { + proport->SetNumbase(denVal); + // Cumulated it + m_mensInfo->proportDen *= denVal; + } + Fraction::Reduce(m_mensInfo->proportNum, m_mensInfo->proportDen); + proport->SetType("cmme_proportion"); + m_currentContainer->AddChild(proport); + return; +} + +void CmmeInput::CreateRest(pugi::xml_node restNode) +{ + assert(m_currentContainer); + + Rest *rest = new Rest(); + int num; + int numbase; + data_DURATION duration = this->ReadDuration(restNode, num, numbase); + rest->SetDur(duration); + if (num != VRV_UNSET && numbase != VRV_UNSET) { + rest->SetNum(num); + rest->SetNumbase(numbase); + } + + this->ReadEditorialCommentary(restNode, rest); + + if (restNode.child("Signum")) { + // MEI currently lacks signum congruentiae, so we warn and set not type + LogWarning("Signum Congruentiae in CMME mapped to @type"); + rest->SetType("cmme_signum_congruentiae"); + } + + m_currentContainer->AddChild(rest); + + return; +} + +void CmmeInput::CreateVerse(pugi::xml_node verseNode) +{ + assert(m_currentNote); + + Verse *verse = new Verse(); + verse->SetN(1); + Syl *syl = new Syl(); + Text *text = new Text(); + std::string sylText = this->ChildAsString(verseNode, "Syllable"); + text->SetText(UTF8to32(sylText)); + + if (verseNode.child("WordEnd")) { + syl->SetWordpos(sylLog_WORDPOS_t); + m_isInSyllable = false; + } + else { + if (m_isInSyllable) { + syl->SetWordpos(sylLog_WORDPOS_m); + } + else { + syl->SetWordpos(sylLog_WORDPOS_i); + } + m_isInSyllable = true; + syl->SetCon(sylLog_CON_d); + } + + syl->AddChild(text); + verse->AddChild(syl); + m_currentNote->AddChild(verse); +} + +data_DURATION CmmeInput::ReadDuration(pugi::xml_node durationNode, int &num, int &numbase) const +{ + static const std::map durationMap{ + { "Maxima", DURATION_maxima }, // + { "Longa", DURATION_longa }, // + { "Brevis", DURATION_brevis }, // + { "Semibrevis", DURATION_semibrevis }, // + { "Minima", DURATION_minima }, // + { "Semiminima", DURATION_semiminima }, // + { "Fusa", DURATION_fusa }, // + { "Semifusa", DURATION_semifusa } // + }; + + assert(m_mensInfo); + + std::string type = this->ChildAsString(durationNode, "Type"); + // Default duration to brevis + data_DURATION duration = durationMap.contains(type) ? durationMap.at(type) : DURATION_brevis; + + num = VRV_UNSET; + numbase = VRV_UNSET; + + if (durationNode.child("Length")) { + int cmmeNum = this->ChildAsInt(durationNode.child("Length"), "Num"); + int cmmeDen = this->ChildAsInt(durationNode.child("Length"), "Den"); + + if ((cmmeNum == VRV_UNSET) || (cmmeDen == VRV_UNSET)) { + return duration; + } + + std::pair ratio = { 1, 1 }; + + if (type == "Maxima") { + ratio.first *= m_mensInfo->modusmaior * m_mensInfo->modusminor * m_mensInfo->tempus * m_mensInfo->prolatio; + } + else if (type == "Longa") { + ratio.first *= m_mensInfo->modusminor * m_mensInfo->tempus * m_mensInfo->prolatio; + } + else if (type == "Brevis") { + ratio.first *= m_mensInfo->tempus * m_mensInfo->prolatio; + } + else if (type == "Semibrevis") { + ratio.first *= m_mensInfo->prolatio; + } + else if (type == "Semiminima") { + ratio.second = 2; + } + else if (type == "Fusa") { + ratio.second = 4; + } + else if (type == "Semifusa") { + ratio.second = 8; + } + + // That would apply the proportion, but not needed because CMME works the other way around + // That is, the propostion is not coded in the note value but applied by the CMME processor + // cmmeNum *= m_mensInfo->proportNum; + // cmmeDen *= m_mensInfo->proportDen; + + cmmeNum *= ratio.second; + cmmeDen *= ratio.first; + + // MEI num and numabase are cmme den and num respectively + num = cmmeDen; + numbase = cmmeNum; + + Fraction::Reduce(num, numbase); + + if (num == numbase) { + num = VRV_UNSET; + numbase = VRV_UNSET; + } + } + + return duration; +} + +bool CmmeInput::IsClef(const pugi::xml_node clefNode) const +{ + static std::vector clefs = { "C", "F", "Fsqr", "Frnd", "G" }; + + // Checking this is not enough since it is somethimes missing in CMME files + if (clefNode.select_node("./Signature")) return false; + + // Also check the clef appearance + std::string appearance = this->ChildAsString(clefNode, "Appearance"); + return (std::find(clefs.begin(), clefs.end(), appearance) != clefs.end()); +} + +std::string CmmeInput::AsString(const pugi::xml_node node) const +{ + if (!node) return ""; + + if (node.text()) { + return std::string(node.text().as_string()); + } + return ""; +} + +std::string CmmeInput::ChildAsString(const pugi::xml_node node, const std::string &child) const +{ + if (!node) return ""; + + pugi::xpath_node childNode = node.select_node(child.c_str()); + if (childNode.node()) { + return this->AsString(childNode.node()); + } + return ""; +} + +int CmmeInput::AsInt(const pugi::xml_node node) const +{ + if (!node) return VRV_UNSET; + + if (node.text()) { + return (node.text().as_int()); + } + return VRV_UNSET; +} + +int CmmeInput::ChildAsInt(const pugi::xml_node node, const std::string &child) const +{ + if (!node) return VRV_UNSET; + + pugi::xpath_node childNode = node.select_node(child.c_str()); + if (childNode.node()) { + return this->AsInt(childNode.node()); + } + return VRV_UNSET; +} + +} // namespace vrv diff --git a/src/iohumdrum.cpp b/src/iohumdrum.cpp index 0be215b592e..48621dd8b8e 100644 --- a/src/iohumdrum.cpp +++ b/src/iohumdrum.cpp @@ -15767,7 +15767,7 @@ void HumdrumInput::handleLigature(hum::HTp token) ligature->SetEndid("#" + endid); ligature->SetLform(LINEFORM_solid); - ligature->SetFunc("ligature"); + ligature->SetFunc(bracketSpanLog_FUNC_ligature); addChildMeasureOrSection(ligature); } @@ -15850,7 +15850,7 @@ void HumdrumInput::handleColoration(hum::HTp token) // data_LINEWIDTH lw; // lw.SetLineWidthTerm(LINEWIDTHTERM_medium); // coloration->SetLwidth(lw); - coloration->SetFunc("coloration"); + coloration->SetFunc(bracketSpanLog_FUNC_coloration); addChildMeasureOrSection(coloration); } @@ -21245,8 +21245,6 @@ void HumdrumInput::processPhrases(hum::HTp phraseend) insertPhrase(bracket, phrasestart, phraseend, startmeasure, startchordsorted, endchordsorted, phrasestartnoteinfo, phraseendnoteinfo, ndex, phraseindex, i, j, startpitches, endpitches, indexused); - // bracket will not be drawn without the following line: - bracket->SetFunc("phrase"); } } } diff --git a/src/iomei.cpp b/src/iomei.cpp index 2fb82d8e41f..3e5436e9441 100644 --- a/src/iomei.cpp +++ b/src/iomei.cpp @@ -1270,7 +1270,7 @@ bool MEIOutput::ProcessScoreBasedFilterEnd(Object *object) void MEIOutput::PruneAttributes(pugi::xml_node node) { if (node.text()) return; - if (!MEIBasic::map.count(node.name())) { + if (!MEIBasic::map.contains(node.name())) { LogWarning("Element '%s' is not supported but will be preserved", node.name()); return; } @@ -2522,6 +2522,13 @@ void MEIOutput::WriteGenericLayerElement(pugi::xml_node currentNode, GenericLaye currentNode.set_name(element->GetMEIName().c_str()); + // Reparse the original content stored as a string document + pugi::xml_document content; + content.load_string(element->GetContent().c_str()); + for (pugi::xml_node child : content.first_child().children()) { + currentNode.append_copy(child); + } + this->WriteLayerElement(currentNode, element); } @@ -2796,6 +2803,8 @@ void MEIOutput::WriteProport(pugi::xml_node currentNode, Proport *proport) assert(proport); this->WriteLayerElement(currentNode, proport); + + proport->WriteDurationRatio(currentNode); } void MEIOutput::WriteQuilisma(pugi::xml_node currentNode, Quilisma *quilisma) @@ -6263,6 +6272,9 @@ bool MEIInput::ReadLayerChildren(Object *parent, pugi::xml_node parentNode, Obje else if (elementName == "fTrem") { success = this->ReadFTrem(parent, xmlElement); } + else if (elementName == "gap") { + success = this->ReadGenericLayerElement(parent, xmlElement); + } else if (elementName == "graceGrp") { success = this->ReadGraceGrp(parent, xmlElement); } @@ -6656,6 +6668,13 @@ bool MEIInput::ReadGenericLayerElement(Object *parent, pugi::xml_node element) GenericLayerElement *vrvElement = new GenericLayerElement(element.name()); this->ReadLayerElement(element, vrvElement); + // Store the content as a string document + pugi::xml_document content; + content.append_copy(element); + std::ostringstream oss; + content.save(oss); + vrvElement->SetContent(oss.str()); + parent->AddChild(vrvElement); this->ReadUnsupportedAttr(element, vrvElement); return true; diff --git a/src/iomusxml.cpp b/src/iomusxml.cpp index 0432bf0caf1..babf405ac75 100644 --- a/src/iomusxml.cpp +++ b/src/iomusxml.cpp @@ -422,7 +422,7 @@ void MusicXmlInput::AddLayerElement(Layer *layer, LayerElement *element, int dur assert(element); int currTime = 0; - if (m_layerEndTimes.count(layer) > 0) currTime = m_layerEndTimes.at(layer); + if (m_layerEndTimes.contains(layer)) currTime = m_layerEndTimes.at(layer); if ((layer->GetChildren().size() == 0 && m_durTotal > 0) || currTime < m_durTotal) { FillSpace(layer, m_durTotal - currTime); } @@ -1761,11 +1761,11 @@ void MusicXmlInput::MatchTies(bool matchLayers) // match tie stop with pitch/oct identity, with start note earlier than end note, // and with earliest end note. if ((iter->m_note->IsEnharmonicWith(jter->m_note)) - && (iter->m_note->GetScoreTimeOnset() < jter->m_note->GetScoreTimeOnset()) - && (jter->m_note->GetScoreTimeOnset() < lastScoreTimeOnset) + && (iter->m_note->GetRealTimeOnsetMilliseconds() < jter->m_note->GetRealTimeOnsetMilliseconds()) + && (jter->m_note->GetRealTimeOnsetMilliseconds() < lastScoreTimeOnset) && (!matchLayers || (iter->m_layerNum == jter->m_layerNum))) { iter->m_tie->SetEndid("#" + jter->m_note->GetID()); - lastScoreTimeOnset = jter->m_note->GetScoreTimeOnset(); + lastScoreTimeOnset = jter->m_note->GetRealTimeOnsetMilliseconds(); tieMatched = true; break; } @@ -2009,7 +2009,7 @@ void MusicXmlInput::ReadMusicXmlDirection( bracketSpan->SetLform( bracketSpan->AttLineRendBase::StrToLineform(bracket.attribute("line-type").as_string())); // bracketSpan->SetPlace(bracketSpan->AttPlacementRelStaff::StrToStaffrel(placeStr.c_str())); - bracketSpan->SetFunc("unclear"); + // bracketSpan->SetFunc("unclear"); bracketSpan->SetLstartsym(ConvertLineEndSymbol(bracket.attribute("line-end").as_string())); bracketSpan->SetTstamp(timeStamp); m_controlElements.push_back({ measureNum, bracketSpan }); @@ -2434,7 +2434,7 @@ void MusicXmlInput::ReadMusicXmlDirection( musicxml::OpenSpanner openBracket(voiceNumber, m_measureCounts.at(measure)); bracketSpan->SetColor(lead.attribute("color").as_string()); // bracketSpan->SetPlace(bracketSpan->AttPlacementRelStaff::StrToStaffrel(placeStr.c_str())); - bracketSpan->SetFunc("analytical"); + // bracketSpan->SetFunc("analytical"); bracketSpan->SetLstartsym(ConvertLineEndSymbol(lead.attribute("symbol").as_string())); bracketSpan->SetTstamp(timeStamp); bracketSpan->SetType("principal-voice"); @@ -2830,7 +2830,7 @@ void MusicXmlInput::ReadMusicXmlNote( if (!noteID.empty()) { note->SetID(noteID); } - note->SetScoreTimeOnset(onset); // remember the MIDI onset within that measure + note->SetRealTimeOnsetSeconds(onset); // remember the MIDI onset within that measure // set @staff attribute, if existing and different from parent staff number if (noteStaffNum > 0 && noteStaffNum + staffOffset != staff->GetN()) note->SetStaff( diff --git a/src/iopae.cpp b/src/iopae.cpp index 7f7cf315322..29bd597c393 100644 --- a/src/iopae.cpp +++ b/src/iopae.cpp @@ -521,23 +521,24 @@ void PAEOutput::WriteTuplet(Tuplet *tuplet) Staff *staff = tuplet->GetAncestorStaff(); - double content = tuplet->GetContentAlignmentDuration(true, staff->m_drawingNotationType); - // content = DUR_MAX / 2^(dur - 2) - int tupletDur = (content != 0.0) ? log2(DUR_MAX / content) + 2 : 4; + auto [tupletDur, remainder] = tuplet->GetContentAlignmentDuration(true, staff->m_drawingNotationType).ToDur(); // We should be looking for dotted values + if (remainder != 0) { + LogWarning("The tuplet content is not a single non-dotted duration"); + } std::string dur; switch (tupletDur) { - case (DUR_LG): dur = "0"; break; - case (DUR_BR): dur = "9"; break; - case (DUR_1): dur = "1"; break; - case (DUR_2): dur = "2"; break; - case (DUR_4): dur = "4"; break; - case (DUR_8): dur = "8"; break; - case (DUR_16): dur = "6"; break; - case (DUR_32): dur = "3"; break; - case (DUR_64): dur = "5"; break; - case (DUR_128): dur = "7"; break; + case (DURATION_long): dur = "0"; break; + case (DURATION_breve): dur = "9"; break; + case (DURATION_1): dur = "1"; break; + case (DURATION_2): dur = "2"; break; + case (DURATION_4): dur = "4"; break; + case (DURATION_8): dur = "8"; break; + case (DURATION_16): dur = "6"; break; + case (DURATION_32): dur = "3"; break; + case (DURATION_64): dur = "5"; break; + case (DURATION_128): dur = "7"; break; default: LogWarning("Unsupported tuplet duration"); dur = "4"; } @@ -4571,14 +4572,14 @@ bool PAEInput::ConvertAccidGes() std::string noteID = note->GetID(); if (!accid) { // Tied note with a previous note with an accidental - if (ties.count(noteID)) { + if (ties.contains(noteID)) { Accid *tieAccid = new Accid(); note->AddChild(tieAccid); tieAccid->SetAccidGes(Att::AccidentalWrittenToGestural(ties[noteID])); ties.erase(noteID); } // Nothing in front of the note, but something in the list - make it an accid.ges - else if ((currentAccids.count(octavedPitch) != 0)) { + else if (currentAccids.contains(octavedPitch)) { Accid *gesAccid = new Accid(); note->AddChild(gesAccid); data_ACCIDENTAL_WRITTEN accidWritten = currentAccids.at(octavedPitch); @@ -4589,7 +4590,7 @@ bool PAEInput::ConvertAccidGes() data_ACCIDENTAL_WRITTEN noteAccid = accid->GetAccid(); // Natural in front of the note, remove it from the current list if (noteAccid == ACCIDENTAL_WRITTEN_n) { - if (currentAccids.count(octavedPitch) != 0) { + if (currentAccids.contains(octavedPitch)) { currentAccids[octavedPitch] = ACCIDENTAL_WRITTEN_n; } } diff --git a/src/layer.cpp b/src/layer.cpp index 560e5642bb2..54d9f1145b8 100644 --- a/src/layer.cpp +++ b/src/layer.cpp @@ -351,8 +351,8 @@ data_STEMDIRECTION Layer::GetDrawingStemDir(const ArrayOfBeamElementCoords *coor // We are ignoring cross-staff situation here because this should not be called if we have one const Staff *staff = first->GetAncestorStaff(); - double time = alignmentFirst->GetTime(); - double duration = 0.0; + Fraction time = alignmentFirst->GetTime(); + Fraction duration; // For the sake of counting number of layers consider only current measure. If first and last elements' layers are // different, take only time within current measure to run GetLayerCountInTimeSpan. const Measure *lastMeasure = vrv_cast(last->GetFirstAncestor(MEASURE)); @@ -362,7 +362,6 @@ data_STEMDIRECTION Layer::GetDrawingStemDir(const ArrayOfBeamElementCoords *coor else { duration = measure->m_measureAligner.GetRightAlignment()->GetTime() - time; } - duration = durRound(duration); if (this->GetLayerCountInTimeSpan(time, duration, measure, staff->GetN()) < 2) { return STEMDIRECTION_NONE; @@ -392,7 +391,8 @@ int Layer::GetLayerCountForTimeSpanOf(const LayerElement *element) const return static_cast(this->GetLayersNForTimeSpanOf(element).size()); } -std::set Layer::GetLayersNInTimeSpan(double time, double duration, const Measure *measure, int staff) const +std::set Layer::GetLayersNInTimeSpan( + const Fraction &time, const Fraction &duration, const Measure *measure, int staff) const { assert(measure); @@ -409,7 +409,8 @@ std::set Layer::GetLayersNInTimeSpan(double time, double duration, const Me return layersInTimeSpan.GetLayers(); } -int Layer::GetLayerCountInTimeSpan(double time, double duration, const Measure *measure, int staff) const +int Layer::GetLayerCountInTimeSpan( + const Fraction &time, const Fraction &duration, const Measure *measure, int staff) const { return static_cast(this->GetLayersNInTimeSpan(time, duration, measure, staff).size()); } @@ -430,8 +431,8 @@ ListOfConstObjects Layer::GetLayerElementsForTimeSpanOf(const LayerElement *elem const Measure *measure = vrv_cast(this->GetFirstAncestor(MEASURE)); assert(measure); - double time = 0.0; - double duration = 0.0; + Fraction time; + Fraction duration; const Alignment *alignment = element->GetAlignment(); // Get duration and time if element has alignment if (alignment) { @@ -449,7 +450,7 @@ ListOfConstObjects Layer::GetLayerElementsForTimeSpanOf(const LayerElement *elem if (!first || !last) return {}; time = first->GetAlignment()->GetTime(); - double lastTime = last->GetAlignment()->GetTime(); + Fraction lastTime = last->GetAlignment()->GetTime(); duration = lastTime - time + last->GetAlignmentDuration(); } else { @@ -462,7 +463,7 @@ ListOfConstObjects Layer::GetLayerElementsForTimeSpanOf(const LayerElement *elem } ListOfObjects Layer::GetLayerElementsInTimeSpan( - double time, double duration, const Measure *measure, int staff, bool excludeCurrent) + const Fraction &time, const Fraction &duration, const Measure *measure, int staff, bool excludeCurrent) { ListOfConstObjects elements = std::as_const(*this).GetLayerElementsInTimeSpan(time, duration, measure, staff, excludeCurrent); @@ -473,7 +474,7 @@ ListOfObjects Layer::GetLayerElementsInTimeSpan( } ListOfConstObjects Layer::GetLayerElementsInTimeSpan( - double time, double duration, const Measure *measure, int staff, bool excludeCurrent) const + const Fraction &time, const Fraction &duration, const Measure *measure, int staff, bool excludeCurrent) const { assert(measure); @@ -541,6 +542,18 @@ const MeterSig *Layer::GetCurrentMeterSig() const return staff->m_drawingStaffDef->GetCurrentMeterSig(); } +Proport *Layer::GetCurrentProport() +{ + return const_cast(std::as_const(*this).GetCurrentProport()); +} + +const Proport *Layer::GetCurrentProport() const +{ + const Staff *staff = vrv_cast(this->GetFirstAncestor(STAFF)); + assert(staff && staff->m_drawingStaffDef); + return staff->m_drawingStaffDef->GetCurrentProport(); +} + void Layer::SetDrawingStaffDefValues(StaffDef *currentStaffDef) { if (!currentStaffDef) { diff --git a/src/layerelement.cpp b/src/layerelement.cpp index 454c91fd311..8585bd8be38 100644 --- a/src/layerelement.cpp +++ b/src/layerelement.cpp @@ -32,6 +32,7 @@ #include "doc.h" #include "dot.h" #include "elementpart.h" +#include "fraction.h" #include "ftrem.h" #include "functor.h" #include "horizontalaligner.h" @@ -50,6 +51,7 @@ #include "neume.h" #include "note.h" #include "page.h" +#include "proport.h" #include "rest.h" #include "slur.h" #include "smufl.h" @@ -73,14 +75,12 @@ namespace vrv { // Large spacing between syllables is a quarter note space -// MAX_DURATION / pow(2.0, (DUR_4 - 2.0)) +// MAX_DURATION / pow(2.0, (DURATION_4 - 2.0)) #define NEUME_LARGE_SPACE 256 // Medium spacing between neume is a 8th note space -// MAX_DURATION / pow(2.0, (DUR_5 - 2.0)) -#define NEUME_MEDIUM_SPACE 128 +#define NEUME_MEDIUM_SPACE Fraction(1, 8) // Small spacing between neume components is a 16th note space -// MAX_DURATION / pow(2.0, (DUR_6 - 2.0)) -#define NEUME_SMALL_SPACE 64 +#define NEUME_SMALL_SPACE Fraction(1, 16) //---------------------------------------------------------------------------- // LayerElement @@ -554,7 +554,7 @@ int LayerElement::GetDrawingTop(const Doc *doc, int staffSize, bool withArtic, A if (note) { const DurationInterface *durationInterface = this->GetDurationInterface(); assert(durationInterface); - if (durationInterface->GetNoteOrChordDur(this) < DUR_2) { + if (durationInterface->GetNoteOrChordDur(this) < DURATION_2) { return note->GetDrawingY() + doc->GetDrawingUnit(staffSize); } // We should also take into account the stem shift to the right @@ -592,7 +592,7 @@ int LayerElement::GetDrawingBottom(const Doc *doc, int staffSize, bool withArtic if (note) { const DurationInterface *durationInterface = this->GetDurationInterface(); assert(durationInterface); - if (durationInterface->GetNoteOrChordDur(this) < DUR_2) { + if (durationInterface->GetNoteOrChordDur(this) < DURATION_2) { return note->GetDrawingY() - doc->GetDrawingUnit(staffSize); } // We should also take into account the stem shift to the right @@ -616,7 +616,7 @@ int LayerElement::GetDrawingRadius(const Doc *doc, bool isInLigature) const if (!this->Is({ CHORD, NC, NOTE, REST })) return 0; char32_t code = 0; - int dur = DUR_4; + data_DURATION dur = DURATION_4; const Staff *staff = this->GetAncestorStaff(); bool isMensuralDur = false; if (this->Is(NOTE)) { @@ -636,13 +636,13 @@ int LayerElement::GetDrawingRadius(const Doc *doc, bool isInLigature) const assert(chord); dur = chord->GetActualDur(); isMensuralDur = chord->IsMensuralDur(); - if (dur == DUR_BR) { + if (dur == DURATION_breve) { code = SMUFL_E0A1_noteheadDoubleWholeSquare; } - else if (dur == DUR_1) { + else if (dur == DURATION_1) { code = SMUFL_E0A2_noteheadWhole; } - else if (dur == DUR_2) { + else if (dur == DURATION_2) { code = SMUFL_E0A3_noteheadHalf; } else { @@ -653,9 +653,9 @@ int LayerElement::GetDrawingRadius(const Doc *doc, bool isInLigature) const code = SMUFL_E0A4_noteheadBlack; } - // Mensural note shorter than DUR_BR - if ((isMensuralDur && (dur <= DUR_BR)) || ((dur == DUR_1) && isInLigature)) { - int widthFactor = (dur == DUR_MX) ? 2 : 1; + // Mensural note shorter than DURATION_breve + if ((isMensuralDur && (dur <= DURATION_breve)) || ((dur == DURATION_1) && isInLigature)) { + int widthFactor = (dur == DURATION_maxima) ? 2 : 1; if (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black) { return widthFactor * doc->GetDrawingBrevisWidth(staff->m_drawingStaffSize) * 0.7; } @@ -671,11 +671,23 @@ int LayerElement::GetDrawingRadius(const Doc *doc, bool isInLigature) const return doc->GetGlyphWidth(code, staff->m_drawingStaffSize, this->GetDrawingCueSize()) / 2; } -double LayerElement::GetAlignmentDuration( +Fraction LayerElement::GetAlignmentDuration( const AlignMeterParams ¶ms, bool notGraceOnly, data_NOTATIONTYPE notationType) const { if (this->IsGraceNote() && notGraceOnly) { - return 0.0; + return Fraction(0, 1); + } + + // Mensural chords are aligned looking at the duration of the notes + if (this->Is(CHORD) && IsMensuralType(notationType)) { + Fraction duration = 0; + ListOfConstObjects notes = this->FindAllDescendantsByType(NOTE); + for (const Object *object : notes) { + const Note *note = vrv_cast(object); + Fraction noteDuration = note->GetAlignmentDuration(params, notGraceOnly, notationType); + duration = std::max(duration, noteDuration); + } + return duration; } // Only resolve simple sameas links to avoid infinite recursion @@ -687,6 +699,13 @@ double LayerElement::GetAlignmentDuration( if (this->HasInterface(INTERFACE_DURATION)) { int num = 1; int numbase = 1; + + if (params.proport) { + // Proportion are applied reversly - higher ratio means shorter values + if (params.proport->HasNum()) num *= params.proport->GetCumulatedNum(); + if (params.proport->HasNumbase()) numbase *= params.proport->GetCumulatedNumbase(); + } + const Tuplet *tuplet = vrv_cast(this->GetFirstAncestor(TUPLET, MAX_TUPLET_DEPTH)); if (tuplet) { ListOfConstObjects objects; @@ -695,9 +714,9 @@ double LayerElement::GetAlignmentDuration( if (objects.size() > 0) { num = tuplet->GetNum(); numbase = tuplet->GetNumbase(); - // 0 is not valid in MEI anyway - just correct it silently - if (num == 0) num = 1; - if (numbase == 0) numbase = 1; + // Adjust VRV_UNSET and 0 - which is not valid in MEI anyway + num = std::max(1, num); + numbase = std::max(1, numbase); } } const DurationInterface *duration = this->GetDurationInterface(); @@ -719,41 +738,36 @@ double LayerElement::GetAlignmentDuration( return NEUME_SMALL_SPACE; } } - double durationValue = duration->GetInterfaceAlignmentDuration(num, numbase); + Fraction durationValue = duration->GetInterfaceAlignmentDuration(num, numbase); // With fTrem we need to divide the duration by two const FTrem *fTrem = vrv_cast(this->GetFirstAncestor(FTREM, MAX_FTREM_DEPTH)); if (fTrem) { - durationValue /= 2.0; + durationValue = durationValue * Fraction(1, 2); } return durationValue; } else if (this->Is(BEATRPT)) { const BeatRpt *beatRpt = vrv_cast(this); assert(beatRpt); - int meterUnit = 4; - if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnit(); + data_DURATION meterUnit = DURATION_4; + if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnitAsDur(); return beatRpt->GetBeatRptAlignmentDuration(meterUnit); } else if (this->Is(TIMESTAMP_ATTR)) { const TimestampAttr *timestampAttr = vrv_cast(this); assert(timestampAttr); - int meterUnit = 4; - if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnit(); + data_DURATION meterUnit = DURATION_4; + if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnitAsDur(); return timestampAttr->GetTimestampAttrAlignmentDuration(meterUnit); } // We align all full measure element to the current time signature, even the ones that last longer than one measure else if (this->Is({ HALFMRPT, MREST, MULTIREST, MRPT, MRPT2, MULTIRPT })) { - int meterUnit = 4; + data_DURATION meterUnit = DURATION_4; int meterCount = 4; - if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnit(); + if (params.meterSig && params.meterSig->HasUnit()) meterUnit = params.meterSig->GetUnitAsDur(); if (params.meterSig && params.meterSig->HasCount()) meterCount = params.meterSig->GetTotalCount(); - - if (this->Is(HALFMRPT)) { - return (DUR_MAX / meterUnit * meterCount) / 2; - } - else { - return DUR_MAX / meterUnit * meterCount; - } + Fraction duration = Fraction(meterUnit) * meterCount; + return (this->Is(HALFMRPT)) ? (duration / 2) : duration; } // This is not called with --neume-as-note since otherwise each nc has an aligner else if (this->Is(NEUME)) { @@ -763,23 +777,21 @@ double LayerElement::GetAlignmentDuration( return (syllable->GetLast() == this) ? NEUME_MEDIUM_SPACE : NEUME_SMALL_SPACE; } else { - return 0.0; + return Fraction(0, 1); } } -double LayerElement::GetAlignmentDuration(bool notGraceOnly, data_NOTATIONTYPE notationType) const +Fraction LayerElement::GetAlignmentDuration(bool notGraceOnly, data_NOTATIONTYPE notationType) const { AlignMeterParams params; - params.meterSig = NULL; - params.mensur = NULL; return this->GetAlignmentDuration(params, notGraceOnly, notationType); } -double LayerElement::GetSameAsContentAlignmentDuration( +Fraction LayerElement::GetSameAsContentAlignmentDuration( const AlignMeterParams ¶ms, bool notGraceOnly, data_NOTATIONTYPE notationType) const { if (!this->HasSameasLink() || !this->GetSameasLink()->Is({ BEAM, FTREM, TUPLET })) { - return 0.0; + return Fraction(0, 1); } const LayerElement *sameas = vrv_cast(this->GetSameasLink()); @@ -788,14 +800,14 @@ double LayerElement::GetSameAsContentAlignmentDuration( return sameas->GetContentAlignmentDuration(params, notGraceOnly, notationType); } -double LayerElement::GetContentAlignmentDuration( +Fraction LayerElement::GetContentAlignmentDuration( const AlignMeterParams ¶ms, bool notGraceOnly, data_NOTATIONTYPE notationType) const { if (!this->Is({ BEAM, FTREM, TUPLET })) { - return 0.0; + return Fraction(0, 1); } - double duration = 0.0; + Fraction duration; for (const Object *child : this->GetChildren()) { // Skip everything that does not have a duration interface and notes in chords @@ -804,17 +816,15 @@ double LayerElement::GetContentAlignmentDuration( } const LayerElement *element = vrv_cast(child); assert(element); - duration += element->GetAlignmentDuration(params, notGraceOnly, notationType); + duration = duration + element->GetAlignmentDuration(params, notGraceOnly, notationType); } return duration; } -double LayerElement::GetContentAlignmentDuration(bool notGraceOnly, data_NOTATIONTYPE notationType) const +Fraction LayerElement::GetContentAlignmentDuration(bool notGraceOnly, data_NOTATIONTYPE notationType) const { AlignMeterParams params; - params.meterSig = NULL; - params.mensur = NULL; return this->GetContentAlignmentDuration(params, notGraceOnly, notationType); } @@ -986,79 +996,6 @@ MapOfDotLocs LayerElement::CalcOptimalDotLocations() return usePrimary ? dotLocs1 : dotLocs2; } -int LayerElement::CalcLayerOverlap(const Doc *doc, int direction, int y1, int y2) -{ - Layer *parentLayer = vrv_cast(this->GetFirstAncestor(LAYER)); - if (!parentLayer) return 0; - // Check whether there are elements on other layer in the duration of the current beam. If there are none - stop - // here, there's nothing to be done - ListOfObjects collidingElementsList = parentLayer->GetLayerElementsForTimeSpanOf(this, true); - if (collidingElementsList.empty()) return 0; - - Staff *staff = this->GetAncestorStaff(); - - const int unit = doc->GetDrawingUnit(staff->m_drawingStaffSize); - int leftMargin = 0; - int rightMargin = 0; - bool sameDirElement = false; - std::vector elementOverlaps; - for (Object *object : collidingElementsList) { - LayerElement *layerElement = vrv_cast(object); - if (!this->HorizontalContentOverlap(object)) continue; - const int elementBottom = layerElement->GetDrawingBottom(doc, staff->m_drawingStaffSize); - const int elementTop = layerElement->GetDrawingTop(doc, staff->m_drawingStaffSize); - if (direction > 0) { - // make sure that there's actual overlap first - if ((elementBottom > y1) && (elementBottom > y2)) continue; - const int currentBottom = this->GetDrawingBottom(doc, staff->m_drawingStaffSize); - if (currentBottom >= elementTop) continue; - const StemmedDrawingInterface *stemInterface = layerElement->GetStemmedDrawingInterface(); - if (stemInterface && (sameDirElement || (stemInterface->GetDrawingStemDir() == STEMDIRECTION_up))) { - if (elementBottom - stemInterface->GetDrawingStemLen() < currentBottom) continue; - leftMargin = unit + y1 - elementBottom; - rightMargin = unit + y2 - elementBottom; - sameDirElement = true; - } - else { - leftMargin = elementTop - y1; - rightMargin = elementTop - y2; - } - } - else { - // make sure that there's actual overlap first - if ((elementTop < y1) && (elementTop < y2)) continue; - const int currentTop = this->GetDrawingTop(doc, staff->m_drawingStaffSize); - if (currentTop <= elementBottom) continue; - const StemmedDrawingInterface *stemInterface = layerElement->GetStemmedDrawingInterface(); - if (stemInterface && (sameDirElement || (stemInterface->GetDrawingStemDir() == STEMDIRECTION_down))) { - if (currentTop - stemInterface->GetDrawingStemLen() > currentTop) continue; - leftMargin = unit + y1 - elementTop; - rightMargin = unit + y2 - elementTop; - sameDirElement = true; - } - else { - leftMargin = elementBottom - y1; - rightMargin = elementBottom - y2; - } - } - elementOverlaps.emplace_back(std::max(leftMargin * direction, rightMargin * direction)); - } - if (elementOverlaps.empty()) return 0; - - const auto maxOverlap = std::max_element(elementOverlaps.begin(), elementOverlaps.end()); - int overlap = 0; - if (*maxOverlap >= 0) { - const int multiplier = sameDirElement ? -1 : 1; - overlap = ((*maxOverlap == 0) ? unit : *maxOverlap) * direction * multiplier; - } - else { - int maxShorteningInHalfUnits = (std::abs(*maxOverlap) / unit) * 2; - if (maxShorteningInHalfUnits > 0) --maxShorteningInHalfUnits; - this->SetElementShortening(maxShorteningInHalfUnits); - } - return overlap; -} - data_STEMMODIFIER LayerElement::GetDrawingStemMod() const { const AttStems *stem = dynamic_cast(this); @@ -1200,7 +1137,7 @@ std::pair LayerElement::CalcElementHorizontalOverlap(const Doc *doc, isUnisonElement = currentNote->IsUnisonWith(previousNote, true); // Unisson, look at the duration for the note heads if (unison && currentNote->IsUnisonWith(previousNote, false)) { - int previousDuration = previousNote->GetDrawingDur(); + data_DURATION previousDuration = previousNote->GetDrawingDur(); assert(previousNote->GetParent()); const bool isPreviousChord = previousNote->GetParent()->Is(CHORD); bool isEdgeElement = false; @@ -1212,11 +1149,11 @@ std::pair LayerElement::CalcElementHorizontalOverlap(const Doc *doc, || ((STEMDIRECTION_up == stemDir) && (parentChord->GetTopNote() == previousNote)); } // Reduce the margin to 0 for whole notes unisson - else if ((currentNote->GetDrawingDur() == DUR_1) && (previousDuration == DUR_1)) { + else if ((currentNote->GetDrawingDur() == DURATION_1) && (previousDuration == DURATION_1)) { horizontalMargin = 0; } if (!isPreviousChord || isEdgeElement || isChordElement) { - if ((currentNote->GetDrawingDur() == DUR_2) && (previousDuration == DUR_2)) { + if ((currentNote->GetDrawingDur() == DURATION_2) && (previousDuration == DURATION_2)) { isInUnison = true; } else if ((!currentNote->IsGraceNote() && !currentNote->GetDrawingCueSize()) @@ -1232,7 +1169,7 @@ std::pair LayerElement::CalcElementHorizontalOverlap(const Doc *doc, isInUnison = true; continue; } - else if ((currentNote->GetDrawingDur() > DUR_2) && (previousDuration > DUR_2)) { + else if ((currentNote->GetDrawingDur() > DURATION_2) && (previousDuration > DURATION_2)) { isInUnison = true; } if (isInUnison && (currentNote->GetDots() == previousNote->GetDots())) { @@ -1240,7 +1177,8 @@ std::pair LayerElement::CalcElementHorizontalOverlap(const Doc *doc, } else { isInUnison = false; - if ((currentNote->GetDrawingDur() <= DUR_1) || (previousNote->GetDrawingDur() <= DUR_1)) { + if ((currentNote->GetDrawingDur() <= DURATION_1) + || (previousNote->GetDrawingDur() <= DURATION_1)) { horizontalMargin *= -1; } else { @@ -1263,7 +1201,8 @@ std::pair LayerElement::CalcElementHorizontalOverlap(const Doc *doc, if (previousNote->GetDrawingLoc() - currentNote->GetDrawingLoc() == -1) { horizontalMargin *= -1; } - else if ((currentNote->GetDrawingDur() <= DUR_1) && (previousNote->GetDrawingDur() <= DUR_1)) { + else if ((currentNote->GetDrawingDur() <= DURATION_1) + && (previousNote->GetDrawingDur() <= DURATION_1)) { continue; } else if (previousNote->m_crossStaff || m_crossStaff) diff --git a/src/measure.cpp b/src/measure.cpp index 13347082ca6..ea7b78ae3fd 100644 --- a/src/measure.cpp +++ b/src/measure.cpp @@ -475,8 +475,8 @@ const Staff *Measure::GetBottomVisibleStaff() const int Measure::EnclosesTime(int time) const { int repeat = 1; - double timeDuration = m_measureAligner.GetRightAlignment()->GetTime() * static_cast(DURATION_4) / DUR_MAX - * 60.0 / m_currentTempo * 1000.0 + double timeDuration + = m_measureAligner.GetRightAlignment()->GetTime().ToDouble() * SCORE_TIME_UNIT * 60.0 / m_currentTempo * 1000.0 + 0.5; std::vector::const_iterator iter; for (iter = m_realTimeOffsetMilliseconds.begin(); iter != m_realTimeOffsetMilliseconds.end(); ++iter) { diff --git a/src/metersig.cpp b/src/metersig.cpp index f3df8054d23..43a4c9228ca 100644 --- a/src/metersig.cpp +++ b/src/metersig.cpp @@ -70,7 +70,7 @@ int MeterSig::GetTotalCount() const // If @count is empty, look at the sym to return a resonable value if (counts.empty()) { if (this->HasSym()) { - return (this->GetSym() == METERSIGN_common) ? 4 : 2; + return (this->GetSym() == METERSIGN_cut) ? 2 : 4; } else { return 0; @@ -108,6 +108,29 @@ int MeterSig::GetTotalCount() const return counts.front(); } +int MeterSig::GetSymImplicitUnit() const +{ + if (this->HasSym()) { + return (this->GetSym() == METERSIGN_cut) ? 2 : 4; + } + else { + return 0; + } +} + +data_DURATION MeterSig::GetUnitAsDur() const +{ + switch (this->GetUnit()) { + case 1: return DURATION_1; + case 2: return DURATION_2; + case 4: return DURATION_4; + case 8: return DURATION_8; + case 16: return DURATION_16; + case 32: return DURATION_32; + default: return DURATION_4; + } +} + char32_t MeterSig::GetSymbolGlyph() const { char32_t glyph = 0; diff --git a/src/midifunctor.cpp b/src/midifunctor.cpp index 05f91a550da..7f2f42555b2 100644 --- a/src/midifunctor.cpp +++ b/src/midifunctor.cpp @@ -42,10 +42,8 @@ namespace vrv { InitOnsetOffsetFunctor::InitOnsetOffsetFunctor() : Functor() { - m_currentScoreTime = 0.0; + m_currentScoreTime = 0; m_currentRealTimeSeconds = 0.0; - m_meterParams.mensur = NULL; - m_meterParams.meterSig = NULL; m_notationType = NOTATIONTYPE_cmn; m_currentTempo = MIDI_TEMPO; } @@ -54,11 +52,10 @@ FunctorCode InitOnsetOffsetFunctor::VisitChordEnd(Chord *chord) { LayerElement *element = chord->ThisOrSameasLink(); - double incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType); - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); - double realTimeIncrementSeconds = incrementScoreTime * 60.0 / m_currentTempo; + Fraction incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; + double realTimeIncrementSeconds = incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; - m_currentScoreTime += incrementScoreTime; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; m_currentRealTimeSeconds += realTimeIncrementSeconds; return FUNCTOR_CONTINUE; @@ -66,7 +63,7 @@ FunctorCode InitOnsetOffsetFunctor::VisitChordEnd(Chord *chord) FunctorCode InitOnsetOffsetFunctor::VisitLayer(Layer *layer) { - m_currentScoreTime = 0.0; + m_currentScoreTime = 0; m_currentRealTimeSeconds = 0.0; m_meterParams.mensur = layer->GetCurrentMensur(); @@ -81,22 +78,21 @@ FunctorCode InitOnsetOffsetFunctor::VisitLayerElement(LayerElement *layerElement LayerElement *element = layerElement->ThisOrSameasLink(); - double incrementScoreTime; + Fraction incrementScoreTime; if (element->Is(REST) || element->Is(SPACE)) { - incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType); - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); + incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; // For rests to be possibly added to the timemap if (element->Is(REST)) { Rest *rest = vrv_cast(element); - double realTimeIncrementSeconds = incrementScoreTime * 60.0 / m_currentTempo; + double realTimeIncrementSeconds = incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; rest->SetScoreTimeOnset(m_currentScoreTime); rest->SetRealTimeOnsetSeconds(m_currentRealTimeSeconds); rest->SetScoreTimeOffset(m_currentScoreTime + incrementScoreTime); rest->SetRealTimeOffsetSeconds(m_currentRealTimeSeconds + realTimeIncrementSeconds); } - m_currentScoreTime += incrementScoreTime; - m_currentRealTimeSeconds += incrementScoreTime * 60.0 / m_currentTempo; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; + m_currentRealTimeSeconds += incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; } else if (element->Is(NOTE)) { Note *note = vrv_cast(element); @@ -111,16 +107,15 @@ FunctorCode InitOnsetOffsetFunctor::VisitLayerElement(LayerElement *layerElement // If the note has a @dur or a @dur.ges, take it into account // This means that overwriting only @dots or @dots.ges will not be taken into account if (chord && !note->HasDur() && !note->HasDurGes()) { - incrementScoreTime = chord->GetAlignmentDuration(m_meterParams, true, m_notationType); + incrementScoreTime = chord->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; } else if (tabGrp && !note->HasDur() && !note->HasDurGes()) { - incrementScoreTime = tabGrp->GetAlignmentDuration(m_meterParams, true, m_notationType); + incrementScoreTime = tabGrp->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; } else { - incrementScoreTime = note->GetAlignmentDuration(m_meterParams, true, m_notationType); + incrementScoreTime = note->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; } - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); - double realTimeIncrementSeconds = incrementScoreTime * 60.0 / m_currentTempo; + double realTimeIncrementSeconds = incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; // LogDebug("Note Alignment Duration %f - Dur %d - Diatonic Pitch %d - Track %d", GetAlignmentDuration(), // note->GetNoteOrChordDur(element), note->GetDiatonicPitch(), *midiTrack); @@ -137,7 +132,7 @@ FunctorCode InitOnsetOffsetFunctor::VisitLayerElement(LayerElement *layerElement // increase the currentTime accordingly, but only if not in a chord or tabGrp if (!note->IsChordTone() && !note->IsTabGrpNote()) { - m_currentScoreTime += incrementScoreTime; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; m_currentRealTimeSeconds += realTimeIncrementSeconds; } } @@ -145,17 +140,16 @@ FunctorCode InitOnsetOffsetFunctor::VisitLayerElement(LayerElement *layerElement BeatRpt *rpt = vrv_cast(element); assert(rpt); - incrementScoreTime = rpt->GetAlignmentDuration(m_meterParams, true, m_notationType); - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); + incrementScoreTime = rpt->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; rpt->SetScoreTimeOnset(m_currentScoreTime); - m_currentScoreTime += incrementScoreTime; - m_currentRealTimeSeconds += incrementScoreTime * 60.0 / m_currentTempo; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; + m_currentRealTimeSeconds += incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; } else if (layerElement->Is({ BEAM, LIGATURE, FTREM, TUPLET }) && layerElement->HasSameasLink()) { - incrementScoreTime = layerElement->GetSameAsContentAlignmentDuration(m_meterParams, true, m_notationType); - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); - m_currentScoreTime += incrementScoreTime; - m_currentRealTimeSeconds += incrementScoreTime * 60.0 / m_currentTempo; + incrementScoreTime + = layerElement->GetSameAsContentAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; + m_currentRealTimeSeconds += incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; } else if (layerElement->Is(MENSUR)) { this->m_meterParams.mensur = vrv_cast(layerElement); @@ -188,11 +182,10 @@ FunctorCode InitOnsetOffsetFunctor::VisitTabGrpEnd(TabGrp *tabGrp) { LayerElement *element = tabGrp->ThisOrSameasLink(); - double incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType); - incrementScoreTime = incrementScoreTime / (DUR_MAX / DURATION_4); - double realTimeIncrementSeconds = incrementScoreTime * 60.0 / m_currentTempo; + Fraction incrementScoreTime = element->GetAlignmentDuration(m_meterParams, true, m_notationType) * SCORE_TIME_UNIT; + double realTimeIncrementSeconds = incrementScoreTime.ToDouble() * 60.0 / m_currentTempo; - m_currentScoreTime += incrementScoreTime; + m_currentScoreTime = m_currentScoreTime + incrementScoreTime; m_currentRealTimeSeconds += realTimeIncrementSeconds; return FUNCTOR_CONTINUE; @@ -204,7 +197,7 @@ FunctorCode InitOnsetOffsetFunctor::VisitTabGrpEnd(TabGrp *tabGrp) InitMaxMeasureDurationFunctor::InitMaxMeasureDurationFunctor() : Functor() { - m_currentScoreTime = 0.0; + m_currentScoreTime = 0; m_currentRealTimeSeconds = 0.0; m_currentTempo = MIDI_TEMPO; m_tempoAdjustment = 1.0; @@ -238,10 +231,10 @@ FunctorCode InitMaxMeasureDurationFunctor::VisitMeasureEnd(Measure *measure) const double tempo = this->GetAdjustedTempo(); measure->SetCurrentTempo(tempo); - const double scoreTimeIncrement = measure->m_measureAligner.GetRightAlignment()->GetTime() * m_multiRestFactor - * static_cast(DURATION_4) / DUR_MAX; - m_currentScoreTime += scoreTimeIncrement; - m_currentRealTimeSeconds += scoreTimeIncrement * 60.0 / tempo; + const Fraction scoreTimeIncrement + = measure->m_measureAligner.GetRightAlignment()->GetTime() * m_multiRestFactor * SCORE_TIME_UNIT; + m_currentScoreTime = m_currentScoreTime + scoreTimeIncrement; + m_currentRealTimeSeconds += scoreTimeIncrement.ToDouble() * 60.0 / tempo; m_multiRestFactor = 1; return FUNCTOR_CONTINUE; @@ -286,16 +279,16 @@ FunctorCode InitTimemapTiesFunctor::VisitTie(Tie *tie) return FUNCTOR_CONTINUE; } - double sttd2 = note2->GetScoreTimeTiedDuration(); - double std2 = note2->GetScoreTimeDuration(); + Fraction sttd2 = note2->GetScoreTimeTiedDuration(); + Fraction std2 = note2->GetScoreTimeDuration(); - if (sttd2 > 0.0) { + if (sttd2 > 0) { note1->SetScoreTimeTiedDuration(sttd2 + std2); } else { note1->SetScoreTimeTiedDuration(std2); } - note2->SetScoreTimeTiedDuration(-1.0); + note2->SetScoreTimeTiedDuration(-1); return FUNCTOR_SIBLINGS; } @@ -362,8 +355,8 @@ FunctorCode GenerateMIDIFunctor::VisitBeatRpt(const BeatRpt *beatRpt) { // Sameas not taken into account for now AlignMeterParams params; - double beatLength = beatRpt->GetAlignmentDuration(params) / (DUR_MAX / DURATION_4); - double startTime = m_totalTime + beatRpt->GetScoreTimeOnset(); + double beatLength = beatRpt->GetAlignmentDuration(params).ToDouble() * SCORE_TIME_UNIT; + double startTime = m_totalTime + beatRpt->GetScoreTimeOnset().ToDouble(); int tpq = m_midiFile->getTPQ(); // filter last beat and copy all notes @@ -417,7 +410,8 @@ FunctorCode GenerateMIDIFunctor::VisitBTrem(const BTrem *bTrem) const Note *note = vrv_cast(obj); assert(note); const int pitch = note->GetMIDIPitch(m_transSemi); - const double totalInQuarterDur = note->GetScoreTimeDuration() + note->GetScoreTimeTiedDuration(); + const double totalInQuarterDur + = note->GetScoreTimeDuration().ToDouble() + note->GetScoreTimeTiedDuration().ToDouble(); int multiplicity = totalInQuarterDur / noteInQuarterDur; double noteDuration = noteInQuarterDur; // if NUM has been set for the bTrem, override calculated values @@ -489,7 +483,7 @@ FunctorCode GenerateMIDIFunctor::VisitGraceGrpEnd(const GraceGrp *graceGrp) // Handling of Nachschlag if (!m_graceNotes.empty() && (graceGrp->GetAttach() == graceGrpLog_ATTACH_pre) && !m_accentedGraceNote && m_lastNote) { - double startTime = m_totalTime + m_lastNote->GetScoreTimeOffset(); + double startTime = m_totalTime + m_lastNote->GetScoreTimeOffset().ToDouble(); const double graceNoteDur = UNACC_GRACENOTE_DUR * m_currentTempo / 60000.0; const double totalDur = graceNoteDur * m_graceNotes.size(); startTime -= totalDur; @@ -558,7 +552,7 @@ FunctorCode GenerateMIDIFunctor::VisitLayerElement(const LayerElement *layerElem FunctorCode GenerateMIDIFunctor::VisitMeasure(const Measure *measure) { // Here we need to update the m_totalTime from the starting time of the measure. - m_totalTime = measure->GetLastTimeOffset(); + m_totalTime = measure->GetLastTimeOffset().ToDouble(); if (measure->GetCurrentTempo() != m_currentTempo) { m_currentTempo = measure->GetCurrentTempo(); @@ -592,7 +586,7 @@ FunctorCode GenerateMIDIFunctor::VisitNote(const Note *note) } // If the note is a secondary tied note, then ignore it - if (note->GetScoreTimeTiedDuration() < 0.0) { + if (note->GetScoreTimeTiedDuration() < 0) { return FUNCTOR_SIBLINGS; } @@ -620,7 +614,7 @@ FunctorCode GenerateMIDIFunctor::VisitNote(const Note *note) int velocity = MIDI_VELOCITY; if (note->HasVel()) velocity = note->GetVel(); - double startTime = m_totalTime + note->GetScoreTimeOnset(); + double startTime = m_totalTime + note->GetScoreTimeOnset().ToDouble(); const int tpq = m_midiFile->getTPQ(); // Check if some grace notes must be performed @@ -679,13 +673,15 @@ FunctorCode GenerateMIDIFunctor::VisitNote(const Note *note) const double defaultHoldTime = 4; // quarter notes m_heldNotes[course - 1].m_pitch = pitch; m_heldNotes[course - 1].m_stopTime = m_totalTime - + std::max(defaultHoldTime, note->GetScoreTimeOffset() + note->GetScoreTimeTiedDuration()); + + std::max(defaultHoldTime, + note->GetScoreTimeOffset().ToDouble() + note->GetScoreTimeTiedDuration().ToDouble()); // start this note m_midiFile->addNoteOn(m_midiTrack, startTime * tpq, channel, pitch, velocity); } else { - const double stopTime = m_totalTime + note->GetScoreTimeOffset() + note->GetScoreTimeTiedDuration(); + const double stopTime + = m_totalTime + note->GetScoreTimeOffset().ToDouble() + note->GetScoreTimeTiedDuration().ToDouble(); m_midiFile->addNoteOn(m_midiTrack, startTime * tpq, channel, pitch, velocity); m_midiFile->addNoteOff(m_midiTrack, stopTime * tpq, channel, pitch); @@ -702,7 +698,7 @@ FunctorCode GenerateMIDIFunctor::VisitPedal(const Pedal *pedal) { if (!pedal->HasDir()) return FUNCTOR_CONTINUE; - double pedalTime = pedal->GetStart()->GetAlignment()->GetTime() * static_cast(DURATION_4) / DUR_MAX; + double pedalTime = pedal->GetStart()->GetAlignment()->GetTime().ToDouble() * SCORE_TIME_UNIT; double startTime = m_totalTime + pedalTime; int tpq = m_midiFile->getTPQ(); @@ -729,7 +725,7 @@ FunctorCode GenerateMIDIFunctor::VisitScoreDef(const ScoreDef *scoreDef) const Object *next = parent->GetNext(scoreDef); if (next && next->Is(MEASURE)) { const Measure *nextMeasure = vrv_cast(next); - totalTime = nextMeasure->GetLastTimeOffset(); + totalTime = nextMeasure->GetLastTimeOffset().ToDouble(); } } const double currentTick = totalTime * m_midiFile->getTPQ(); @@ -778,6 +774,10 @@ FunctorCode GenerateMIDIFunctor::VisitScoreDef(const ScoreDef *scoreDef) if (meterSig && meterSig->HasCount() && meterSig->HasUnit()) { m_midiFile->addTimeSignature(m_midiTrack, currentTick, meterSig->GetTotalCount(), meterSig->GetUnit()); } + else if (meterSig && meterSig->HasUnit()) { + m_midiFile->addTimeSignature( + m_midiTrack, currentTick, meterSig->GetTotalCount(), meterSig->GetSymImplicitUnit()); + } } return FUNCTOR_CONTINUE; @@ -802,7 +802,7 @@ FunctorCode GenerateMIDIFunctor::VisitStaffDef(const StaffDef *staffDef) FunctorCode GenerateMIDIFunctor::VisitSyl(const Syl *syl) { - const double startTime = m_totalTime + m_lastNote->GetScoreTimeOnset(); + const double startTime = m_totalTime + m_lastNote->GetScoreTimeOnset().ToDouble(); const std::string sylText = UTF32to8(syl->GetText()); m_midiFile->addLyric(m_midiTrack, startTime * m_midiFile->getTPQ(), sylText); @@ -839,7 +839,7 @@ void GenerateMIDIFunctor::DeferMIDINote(const Note *refNote, double shift, bool } // Register the shift - if (shift < refNote->GetScoreTimeDuration() + refNote->GetScoreTimeTiedDuration()) { + if (shift < refNote->GetScoreTimeDuration().ToDouble() + refNote->GetScoreTimeTiedDuration().ToDouble()) { m_deferredNotes[refNote] = shift; } } @@ -849,7 +849,7 @@ void GenerateMIDIFunctor::GenerateGraceNoteMIDI( { double graceNoteDur = 0.0; if (m_accentedGraceNote && !m_graceNotes.empty()) { - const double totalDur = refNote->GetScoreTimeDuration() / 2.0; + const double totalDur = refNote->GetScoreTimeDuration().ToDouble() / 2.0; this->DeferMIDINote(refNote, totalDur, true); graceNoteDur = totalDur / m_graceNotes.size(); } @@ -880,7 +880,7 @@ void GenerateMIDIFunctor::GenerateGraceNoteMIDI( GenerateTimemapFunctor::GenerateTimemapFunctor(Timemap *timemap) : ConstFunctor() { - m_scoreTimeOffset = 0.0; + m_scoreTimeOffset = 0; m_realTimeOffsetMilliseconds = 0.0; m_currentTempo = MIDI_TEMPO; m_cueExclusion = false; @@ -944,20 +944,20 @@ void GenerateTimemapFunctor::AddTimemapEntry(const Object *object) assert(interface); double realTimeStart = round(m_realTimeOffsetMilliseconds + interface->GetRealTimeOnsetMilliseconds()); - double scoreTimeStart = m_scoreTimeOffset + interface->GetScoreTimeOnset(); + Fraction scoreTimeStart = m_scoreTimeOffset + interface->GetScoreTimeOnset(); double realTimeEnd = round(m_realTimeOffsetMilliseconds + interface->GetRealTimeOffsetMilliseconds()); - double scoreTimeEnd = m_scoreTimeOffset + interface->GetScoreTimeOffset(); + Fraction scoreTimeEnd = m_scoreTimeOffset + interface->GetScoreTimeOffset(); bool isRest = (object->Is(REST)); /*********** start values ***********/ - TimemapEntry &startEntry = m_timemap->GetEntry(realTimeStart); + TimemapEntry &startEntry = m_timemap->GetEntry(scoreTimeStart); // Should check if value for realTimeStart already exists and if so, then // ensure that it is equal to scoreTimeStart: - startEntry.qstamp = scoreTimeStart; + startEntry.tstamp = realTimeStart; // Store the element ID in list to turn on at given time - note or rest if (!isRest) startEntry.notesOn.push_back(object->GetID()); @@ -968,11 +968,11 @@ void GenerateTimemapFunctor::AddTimemapEntry(const Object *object) /*********** end values ***********/ - TimemapEntry &endEntry = m_timemap->GetEntry(realTimeEnd); + TimemapEntry &endEntry = m_timemap->GetEntry(scoreTimeEnd); // Should check if value for realTimeEnd already exists and if so, then // ensure that it is equal to scoreTimeEnd: - endEntry.qstamp = scoreTimeEnd; + endEntry.tstamp = realTimeEnd; // Store the element ID in list to turn off at given time - notes or rest if (!isRest) endEntry.notesOff.push_back(object->GetID()); @@ -984,14 +984,14 @@ void GenerateTimemapFunctor::AddTimemapEntry(const Object *object) assert(measure); // Deal with repeated music later, for now get the last times. - double scoreTimeStart = m_scoreTimeOffset; + Fraction scoreTimeStart = m_scoreTimeOffset; double realTimeStart = round(m_realTimeOffsetMilliseconds); - TimemapEntry &startEntry = m_timemap->GetEntry(realTimeStart); + TimemapEntry &startEntry = m_timemap->GetEntry(scoreTimeStart); // Should check if value for realTimeStart already exists and if so, then // ensure that it is equal to scoreTimeStart: - startEntry.qstamp = scoreTimeStart; + startEntry.tstamp = realTimeStart; // Add the measureOn startEntry.measureOn = measure->GetID(); diff --git a/src/neume.cpp b/src/neume.cpp index 656e1e3fc04..d1a64a2b668 100644 --- a/src/neume.cpp +++ b/src/neume.cpp @@ -132,7 +132,7 @@ NeumeGroup Neume::GetNeumeGroup() const previous = current; } - if (s_neumes.count(key) > 0) { + if (s_neumes.contains(key)) { return s_neumes.at(key); } else { diff --git a/src/note.cpp b/src/note.cpp index 08b8ad11ca2..f0bd536ecad 100644 --- a/src/note.cpp +++ b/src/note.cpp @@ -121,7 +121,6 @@ void Note::Reset() m_noteGroupPosition = 0; m_noteGroup = NULL; - m_drawingLoc = 0; m_flippedNotehead = false; m_stemSameas = NULL; @@ -214,21 +213,6 @@ const Accid *Note::GetDrawingAccid() const return vrv_cast(this->FindDescendantByType(ACCID)); } -bool Note::HasLedgerLines(int &linesAbove, int &linesBelow, const Staff *staff) const -{ - if (!staff) { - staff = this->GetAncestorStaff(); - } - - linesAbove = (this->GetDrawingLoc() - staff->m_drawingLines * 2 + 2) / 2; - linesBelow = -(this->GetDrawingLoc()) / 2; - - linesAbove = std::max(linesAbove, 0); - linesBelow = std::max(linesBelow, 0); - - return ((linesAbove > 0) || (linesBelow > 0)); -} - Chord *Note::IsChordTone() { return vrv_cast(this->GetFirstAncestor(CHORD, MAX_CHORD_DEPTH)); @@ -239,7 +223,7 @@ const Chord *Note::IsChordTone() const return vrv_cast(this->GetFirstAncestor(CHORD, MAX_CHORD_DEPTH)); } -int Note::GetDrawingDur() const +data_DURATION Note::GetDrawingDur() const { const Chord *chordParent = vrv_cast(this->GetFirstAncestor(CHORD, MAX_CHORD_DEPTH)); if (chordParent && !this->HasDur()) { @@ -473,7 +457,7 @@ int Note::CalcStemLenInThirdUnits(const Staff *staff, data_STEMDIRECTION stemDir // Limit shortening with duration shorter than quarter not when not in a beam - if ((this->GetDrawingDur() > DUR_4) && !this->IsInBeam()) { + if ((this->GetDrawingDur() > DURATION_4) && !this->IsInBeam()) { if (this->GetDrawingStemDir() == STEMDIRECTION_up) { shortening = std::min(4, shortening); } @@ -491,10 +475,10 @@ char32_t Note::GetMensuralNoteheadGlyph() const { assert(this->IsMensuralDur()); - int drawingDur = this->GetDrawingDur(); + data_DURATION drawingDur = this->GetDrawingDur(); // No SMuFL code used for these values - if (drawingDur < DUR_1) { + if (drawingDur < DURATION_1) { return 0; } @@ -507,7 +491,7 @@ char32_t Note::GetMensuralNoteheadGlyph() const } else { if (this->GetColored() == BOOLEAN_true) { - if (drawingDur > DUR_2) { + if (drawingDur > DURATION_2) { code = SMUFL_E93C_mensuralNoteheadMinimaWhite; } else { @@ -515,7 +499,7 @@ char32_t Note::GetMensuralNoteheadGlyph() const } } else { - if (drawingDur > DUR_2) { + if (drawingDur > DURATION_2) { code = SMUFL_E93D_mensuralNoteheadSemiminimaWhite; } else { @@ -526,7 +510,7 @@ char32_t Note::GetMensuralNoteheadGlyph() const return code; } -char32_t Note::GetNoteheadGlyph(const int duration) const +char32_t Note::GetNoteheadGlyph(const data_DURATION duration) const { static std::map additionalNoteheadSymbols = { { "noteheadDiamondBlackWide", SMUFL_E0DC_noteheadDiamondBlackWide }, @@ -549,7 +533,7 @@ char32_t Note::GetNoteheadGlyph(const int duration) const // case HEADSHAPE_circle: return SMUFL_E0B3_noteheadCircleX; case HEADSHAPE_plus: return SMUFL_E0AF_noteheadPlusBlack; case HEADSHAPE_diamond: { - if (duration < DUR_4) { + if (duration < DURATION_4) { return (this->GetHeadFill() == FILL_solid) ? SMUFL_E0DB_noteheadDiamondBlack : SMUFL_E0D9_noteheadDiamondHalf; } @@ -562,7 +546,7 @@ char32_t Note::GetNoteheadGlyph(const int duration) const // case HEADSHAPE_oval: return SMUFL_noteheadOval; // case HEADSHAPE_piewedge: return SMUFL_noteheadPieWedge; case HEADSHAPE_rectangle: - if (duration < DUR_4) { + if (duration < DURATION_4) { return (this->GetHeadFill() == FILL_solid) ? SMUFL_E0B9_noteheadSquareBlack : SMUFL_E0B8_noteheadSquareWhite; } @@ -573,14 +557,14 @@ char32_t Note::GetNoteheadGlyph(const int duration) const // case HEADSHAPE_rtriangle: return SMUFL_noteheadRTriangle; // case HEADSHAPE_semicircle: return SMUFL_noteheadSemicircle; case HEADSHAPE_slash: { - if (DUR_1 >= duration) return SMUFL_E102_noteheadSlashWhiteWhole; - if (DUR_2 == duration) return SMUFL_E103_noteheadSlashWhiteHalf; + if (DURATION_1 >= duration) return SMUFL_E102_noteheadSlashWhiteWhole; + if (DURATION_2 == duration) return SMUFL_E103_noteheadSlashWhiteHalf; return SMUFL_E101_noteheadSlashHorizontalEnds; } // case HEADSHAPE_square: return SMUFL_noteheadSquare; case HEADSHAPE_x: { - if (DUR_1 == duration) return SMUFL_E0B5_noteheadWholeWithX; - if (DUR_2 == duration) return SMUFL_E0B6_noteheadHalfWithX; + if (DURATION_1 == duration) return SMUFL_E0B5_noteheadWholeWithX; + if (DURATION_2 == duration) return SMUFL_E0B6_noteheadHalfWithX; return SMUFL_E0A9_noteheadXBlack; } default: break; @@ -591,10 +575,10 @@ char32_t Note::GetNoteheadGlyph(const int duration) const default: break; } - if (DUR_BR == duration) return SMUFL_E0A1_noteheadDoubleWholeSquare; - if (DUR_1 == duration) return SMUFL_E0A2_noteheadWhole; + if (DURATION_breve == duration) return SMUFL_E0A1_noteheadDoubleWholeSquare; + if (DURATION_1 == duration) return SMUFL_E0A2_noteheadWhole; // We support solid on half notes or void on quarter and shorter notes - if (DUR_2 == duration) { + if (DURATION_2 == duration) { return (this->GetHeadFill() == FILL_solid) ? SMUFL_E0A4_noteheadBlack : SMUFL_E0A3_noteheadHalf; } else { diff --git a/src/object.cpp b/src/object.cpp index 91b852b7613..b2b3c175b96 100644 --- a/src/object.cpp +++ b/src/object.cpp @@ -1612,7 +1612,7 @@ ClassId ObjectFactory::GetClassId(std::string name) void ObjectFactory::GetClassIds(const std::vector &classStrings, std::vector &classIds) { for (const std::string &str : classStrings) { - if (s_classIdsRegistry.count(str) > 0) { + if (s_classIdsRegistry.contains(str)) { classIds.push_back(s_classIdsRegistry.at(str)); } else { diff --git a/src/options.cpp b/src/options.cpp index ba0265ef74a..b978eac5fd9 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -914,7 +914,8 @@ Options::Options() m_baseOptions.AddOption(&m_allPages); m_inputFrom.SetInfo("Input from", - "Select input format from: \"abc\", \"darms\", \"esac\", \"humdrum\", \"mei\", \"pae\", \"volpiano\", \"xml\" " + "Select input format from: \"abc\", \"cmme.xml\", \"darms\", \"esac\", \"humdrum\", \"mei\", \"pae\", " + "\"volpiano\", \"xml\" " "(musicxml), \"musicxml-hum\" (musicxml via humdrum)"); m_inputFrom.Init("mei"); m_inputFrom.SetKey("inputFrom"); @@ -1353,7 +1354,7 @@ Options::Options() m_justificationMaxVertical.SetInfo("Maximum ratio of justifiable height for page", "Maximum ratio of justifiable height to page height that can be used for the vertical justification"); - m_justificationMaxVertical.Init(0.3, 0.0, 1.0); + m_justificationMaxVertical.Init(0.2, 0.0, 1.0); this->Register(&m_justificationMaxVertical, "justificationMaxVertical", &m_generalLayout); m_ledgerLineThickness.SetInfo("Ledger line thickness", "The thickness of the ledger lines"); @@ -1798,7 +1799,7 @@ Options::Options() m_topMarginPgFooter.Init(2.0, 0.0, 24.0); this->Register(&m_topMarginPgFooter, "topMarginPgFooter", &m_elementMargins); - /********* midi *********/ + /********* MIDI *********/ m_midi.SetLabel("Midi options", "5-midi"); m_midi.SetCategory(OptionsCategory::Midi); @@ -1812,7 +1813,7 @@ Options::Options() m_midiTempoAdjustment.Init(1.0, 0.2, 4.0); this->Register(&m_midiTempoAdjustment, "midiTempoAdjustment", &m_midi); - /********* General *********/ + /********* Mensural *********/ m_mensural.SetLabel("Mensural notation options", "6-mensural"); m_mensural.SetCategory(OptionsCategory::Mensural); @@ -1826,6 +1827,16 @@ Options::Options() m_mensuralToMeasure.Init(false); this->Register(&m_mensuralToMeasure, "mensuralToMeasure", &m_mensural); + /********* Method JSON options to the command-line *********/ + + m_jsonCmdLineOptions.SetLabel("Method JSON options for the command-line", "7-methodJson"); + m_jsonCmdLineOptions.SetCategory(OptionsCategory::Json); + m_grps.push_back(&m_jsonCmdLineOptions); + + m_timemapOptions.SetInfo("Timemap options", "The JSON options to be passed when producing the timemap"); + m_timemapOptions.Init("{}"); + this->Register(&m_timemapOptions, "timemapOptions", &m_jsonCmdLineOptions); + /********* Deprecated options *********/ /* diff --git a/src/page.cpp b/src/page.cpp index 17388407eb8..241c66ed7f2 100644 --- a/src/page.cpp +++ b/src/page.cpp @@ -318,7 +318,7 @@ void Page::ResetAligners() // Unless duration-based spacing is disabled, set the X position of each Alignment. // Does non-linear spacing based on the duration space between two Alignment objects. if (!doc->GetOptions()->m_evenNoteSpacing.GetValue()) { - int longestActualDur = DUR_4; + data_DURATION longestActualDur = DURATION_4; // Detect the longest duration in order to adjust the spacing (false by default) if (doc->GetOptions()->m_spacingDurDetection.GetValue()) { @@ -626,8 +626,7 @@ void Page::JustifyVertically() return; } - // Ignore vertical justification if it's not required - if (!this->IsJustificationRequired(doc)) return; + this->ReduceJustifiableHeight(doc); // Justify Y position JustifyYFunctor justifyY(doc); @@ -643,42 +642,24 @@ void Page::JustifyVertically() } } -bool Page::IsJustificationRequired(const Doc *doc) +void Page::ReduceJustifiableHeight(const Doc *doc) { const Pages *pages = doc->GetPages(); assert(pages); - const int childSystems = this->GetChildCount(SYSTEM); - // Last page and justification of last page is not enabled + double maxRatio = doc->GetOptions()->m_justificationMaxVertical.GetValue(); + // Special handling for justification of last page if (pages->GetLast() == this) { - const int idx = this->GetIdx(); - if (idx > 0) { - const Page *previousPage = dynamic_cast(pages->GetPrevious(this)); - assert(previousPage); - const int previousJustifiableHeight = previousPage->m_drawingJustifiableHeight; - const int previousJustificationSum = previousPage->m_justificationSum; - - if (previousJustifiableHeight < m_drawingJustifiableHeight) { - m_drawingJustifiableHeight = previousJustifiableHeight; - } - - const int maxSystemsPerPage = doc->GetOptions()->m_systemMaxPerPage.GetValue(); - if ((childSystems <= 2) || (childSystems < maxSystemsPerPage)) { - m_justificationSum = previousJustificationSum; - } + const System *firstSystem = vrv_cast(this->GetFirst(SYSTEM)); + const System *lastSystem = vrv_cast(this->GetLast(SYSTEM)); + if (firstSystem && lastSystem) { + const int usedDrawingHeight + = firstSystem->GetDrawingY() - lastSystem->GetDrawingY() + lastSystem->GetHeight(); + maxRatio *= (double)usedDrawingHeight / (double)doc->m_drawingPageHeight; } - else { - const int stavesPerSystem = m_drawingScoreDef.GetDescendantCount(STAFFDEF); - if (childSystems * stavesPerSystem < 8) return false; - } - } - const double ratio = (double)m_drawingJustifiableHeight / (double)doc->m_drawingPageHeight; - if (ratio > doc->GetOptions()->m_justificationMaxVertical.GetValue()) { - m_drawingJustifiableHeight - = doc->m_drawingPageHeight * doc->GetOptions()->m_justificationMaxVertical.GetValue(); } - return true; + m_drawingJustifiableHeight = std::min(doc->m_drawingPageHeight * maxRatio, m_drawingJustifiableHeight); } void Page::LayOutPitchPos() diff --git a/src/positioninterface.cpp b/src/positioninterface.cpp index 05c0ce496bb..d3bf0abed6d 100644 --- a/src/positioninterface.cpp +++ b/src/positioninterface.cpp @@ -15,6 +15,7 @@ #include "layer.h" #include "pitchinterface.h" +#include "staff.h" namespace vrv { @@ -71,6 +72,21 @@ int PositionInterface::CalcDrawingLoc(const Layer *layer, const LayerElement *el return m_drawingLoc; } +bool PositionInterface::HasLedgerLines(int &linesAbove, int &linesBelow, const Staff *staff) const +{ + if (!staff) return false; + + linesAbove = (this->GetDrawingLoc() - staff->m_drawingLines * 2 + 2) / 2; + linesBelow = -(this->GetDrawingLoc()) / 2; + + linesAbove = std::max(linesAbove, 0); + linesBelow = std::max(linesBelow, 0); + + return ((linesAbove > 0) || (linesBelow > 0)); + + return false; +} + //---------------------------------------------------------------------------- // Interface pseudo functor (redirected) //---------------------------------------------------------------------------- diff --git a/src/preparedatafunctor.cpp b/src/preparedatafunctor.cpp index 1bb1389a6a6..49484e8b06e 100644 --- a/src/preparedatafunctor.cpp +++ b/src/preparedatafunctor.cpp @@ -461,7 +461,7 @@ void PrepareLinkingFunctor::ResolveStemSameas(Note *note) // Second pass we resolve links else { const std::string id = note->GetID(); - if (m_stemSameasIDPairs.count(id)) { + if (m_stemSameasIDPairs.contains(id)) { Note *noteStemSameas = m_stemSameasIDPairs.at(id); // Instanciate the bi-directional references and mark the roles as unset note->SetStemSameasNote(noteStemSameas); @@ -542,7 +542,7 @@ FunctorCode PrepareDurationFunctor::VisitLayerElement(LayerElement *layerElement // Check if there is a duration default for the staff if (!m_durDefaultForStaffN.empty()) { Staff *staff = layerElement->GetAncestorStaff(RESOLVE_CROSS_STAFF); - if (m_durDefaultForStaffN.count(staff->GetN()) > 0) { + if (m_durDefaultForStaffN.contains(staff->GetN())) { durInterface->SetDurDefault(m_durDefaultForStaffN.at(staff->GetN())); } } @@ -1101,12 +1101,12 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitChord(Chord *chord) currentStem->AttGraced::operator=(*chord); currentStem->FillAttributes(*chord); - int duration = chord->GetNoteOrChordDur(chord); - if ((duration < DUR_2) || (chord->GetStemVisible() == BOOLEAN_false)) { + data_DURATION duration = chord->GetNoteOrChordDur(chord); + if ((duration < DURATION_2) || (chord->GetStemVisible() == BOOLEAN_false)) { currentStem->IsVirtual(true); } - const bool shouldHaveFlag = ((duration > DUR_4) && !chord->IsInBeam() && !chord->GetAncestorFTrem()); + const bool shouldHaveFlag = ((duration > DURATION_4) && !chord->IsInBeam() && !chord->GetAncestorFTrem()); currentFlag = this->ProcessFlag(currentFlag, currentStem, shouldHaveFlag); chord->SetDrawingStem(currentStem); @@ -1150,7 +1150,7 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitNote(Note *note) currentStem->AttGraced::operator=(*note); currentStem->FillAttributes(*note); - if (note->GetActualDur() < DUR_2 || (note->GetStemVisible() == BOOLEAN_false)) { + if (note->GetActualDur() < DURATION_2 || (note->GetStemVisible() == BOOLEAN_false)) { currentStem->IsVirtual(true); } } @@ -1177,8 +1177,8 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitNote(Note *note) if (note->IsMensuralDur()) return FUNCTOR_CONTINUE; if (currentStem) { - const bool shouldHaveFlag = ((note->GetActualDur() > DUR_4) && !note->IsInBeam() && !note->GetAncestorFTrem() - && !note->IsChordTone() && !note->IsTabGrpNote()); + const bool shouldHaveFlag = ((note->GetActualDur() > DURATION_4) && !note->IsInBeam() + && !note->GetAncestorFTrem() && !note->IsChordTone() && !note->IsTabGrpNote()); currentFlag = this->ProcessFlag(currentFlag, currentStem, shouldHaveFlag); if (!chord) note->SetDrawingStem(currentStem); @@ -1196,7 +1196,7 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitRest(Rest *rest) { Dots *currentDots = vrv_cast(rest->FindDescendantByType(DOTS, 1)); - const bool shouldHaveDots = (rest->GetDur() > DUR_BR) && (rest->GetDots() > 0); + const bool shouldHaveDots = (rest->GetDur() > DURATION_breve) && (rest->GetDots() > 0); currentDots = this->ProcessDots(currentDots, rest, shouldHaveDots); /************ Prepare the drawing cue size ************/ @@ -1222,7 +1222,7 @@ FunctorCode PrepareLayerElementPartsFunctor::VisitTabDurSym(TabDurSym *tabDurSym assert(tabGrp); // No flag within beam for durations longer than 8th notes - const bool shouldHaveFlag = (!tabDurSym->IsInBeam() && (tabGrp->GetActualDur() > DUR_4)); + const bool shouldHaveFlag = (!tabDurSym->IsInBeam() && (tabGrp->GetActualDur() > DURATION_4)); currentFlag = this->ProcessFlag(currentFlag, currentStem, shouldHaveFlag); return FUNCTOR_SIBLINGS; @@ -1435,7 +1435,7 @@ FunctorCode PrepareDelayedTurnsFunctor::VisitLayerElement(LayerElement *layerEle this->ResetCurrent(); } - if (m_delayedTurns.count(layerElement)) { + if (m_delayedTurns.contains(layerElement)) { m_previousElement = layerElement; m_currentTurn = m_delayedTurns.at(layerElement); if (layerElement->Is(CHORD)) { diff --git a/src/proport.cpp b/src/proport.cpp index 0ee5336561e..44466ca8a59 100644 --- a/src/proport.cpp +++ b/src/proport.cpp @@ -32,6 +32,33 @@ void Proport::Reset() { LayerElement::Reset(); this->ResetDurationRatio(); + + m_cumulatedNum = VRV_UNSET; + m_cumulatedNumbase = VRV_UNSET; +} + +int Proport::GetCumulatedNum() const +{ + return (m_cumulatedNum != VRV_UNSET) ? m_cumulatedNum : this->GetNum(); +} + +int Proport::GetCumulatedNumbase() const +{ + return (m_cumulatedNumbase != VRV_UNSET) ? m_cumulatedNumbase : this->GetNumbase(); +} + +void Proport::Cumulate(const Proport *proport) +{ + // Unset values are not cumulated + if (proport->HasNum() && this->HasNum()) { + m_cumulatedNum = this->GetNum() * proport->GetCumulatedNum(); + } + if (proport->HasNumbase() && this->HasNumbase()) { + m_cumulatedNumbase = this->GetNumbase() * proport->GetCumulatedNumbase(); + } + if ((m_cumulatedNum != VRV_UNSET) && (m_cumulatedNumbase != VRV_UNSET)) { + Fraction::Reduce(m_cumulatedNum, m_cumulatedNumbase); + } } FunctorCode Proport::Accept(Functor &functor) diff --git a/src/resources.cpp b/src/resources.cpp index d2f5774be50..a9611ed8dc5 100644 --- a/src/resources.cpp +++ b/src/resources.cpp @@ -59,6 +59,7 @@ Resources::Resources() bool Resources::InitFonts() { + m_cachedGlyph.reset(); m_loadedFonts.clear(); // Font Bravura first. As it is expected to have always all symbols we build the code -> name table from it @@ -95,7 +96,9 @@ bool Resources::InitFonts() bool Resources::SetFont(const std::string &fontName) { - // and the default font provided in options, if it is not one of the previous + m_cachedGlyph.reset(); + + // add the default font provided in options, if it is not one of the previous if (!fontName.empty() && !IsFontLoaded(fontName)) { if (!LoadFont(fontName)) { LogError("%s font could not be loaded.", fontName.c_str()); @@ -132,28 +135,30 @@ bool Resources::AddCustom(const std::vector &extraFonts) bool Resources::LoadAll() { - bool success = true; std::string path = Resources::GetPath() + "/"; - for (const std::filesystem::directory_entry &entry : std::filesystem::directory_iterator(path)) { - const std::filesystem::path path = entry.path(); - if (path.has_extension() && path.has_stem() && path.extension() == ".xml") { - const std::string fontName = path.stem().string(); - if (!IsFontLoaded(fontName)) { - success = success && LoadFont(fontName); + return std::ranges::all_of( + std::filesystem::directory_iterator(path), [this](const std::filesystem::directory_entry &entry) { + const std::filesystem::path &path = entry.path(); + if (path.has_extension() && path.has_stem() && path.extension() == ".xml") { + const std::string fontName = path.stem().string(); + if (!this->IsFontLoaded(fontName) && !this->LoadFont(fontName)) { + return false; + } } - } - } - return success; + return true; + }); } -bool Resources::SetFallback(const std::string &fontName) +void Resources::SetFallbackFont(const std::string &fontName) { + m_cachedGlyph.reset(); m_fallbackFontName = fontName; - return true; } bool Resources::SetCurrentFont(const std::string &fontName, bool allowLoading) { + m_cachedGlyph.reset(); + if (IsFontLoaded(fontName)) { m_currentFontName = fontName; return true; @@ -162,33 +167,47 @@ bool Resources::SetCurrentFont(const std::string &fontName, bool allowLoading) m_currentFontName = fontName; return true; } - else { - return false; - } + + return false; } const Glyph *Resources::GetGlyph(char32_t smuflCode) const { - if (GetCurrentGlyphTable().contains(smuflCode)) { - return &GetCurrentGlyphTable().at(smuflCode); + if (m_cachedGlyph && m_cachedGlyph->first == smuflCode) { + return m_cachedGlyph->second; + } + + const GlyphTable ¤tTable = this->GetCurrentGlyphTable(); + if (auto glyphIter = currentTable.find(smuflCode); glyphIter != currentTable.end()) { + const Glyph *glyph = &glyphIter->second; + m_cachedGlyph = std::make_pair(glyphIter->first, glyph); + return glyph; } else if (!this->IsCurrentFontFallback()) { const GlyphTable &fallbackTable = this->GetFallbackGlyphTable(); - return (fallbackTable.contains(smuflCode)) ? &fallbackTable.at(smuflCode) : NULL; - } - else { - return NULL; + if (auto glyphIter = fallbackTable.find(smuflCode); glyphIter != fallbackTable.end()) { + const Glyph *glyph = &glyphIter->second; + m_cachedGlyph = std::make_pair(glyphIter->first, glyph); + return glyph; + } } + return NULL; } const Glyph *Resources::GetGlyph(const std::string &smuflName) const { - return (this->GetGlyphCode(smuflName)) ? &GetCurrentGlyphTable().at(this->GetGlyphCode(smuflName)) : NULL; + if (const char32_t code = this->GetGlyphCode(smuflName); code) { + return this->GetGlyph(code); + } + return NULL; } char32_t Resources::GetGlyphCode(const std::string &smuflName) const { - return m_glyphNameTable.contains(smuflName) ? m_glyphNameTable.at(smuflName) : 0; + if (auto glyphNameIter = m_glyphNameTable.find(smuflName); glyphNameIter != m_glyphNameTable.end()) { + return glyphNameIter->second; + } + return 0; } bool Resources::IsSmuflFallbackNeeded(const std::u32string &text) const @@ -214,12 +233,7 @@ bool Resources::FontHasGlyphAvailable(const std::string &fontName, char32_t smuf } const GlyphTable &table = m_loadedFonts.at(fontName).GetGlyphTable(); - if (table.find(smuflCode) != table.end()) { - return true; - } - else { - return false; - } + return (table.find(smuflCode) != table.end()); } std::string Resources::GetCSSFontFor(const std::string &fontName) const @@ -260,7 +274,7 @@ void Resources::SelectTextFont(data_FONTWEIGHT fontWeight, data_FONTSTYLE fontSt } m_currentStyle = { fontWeight, fontStyle }; - if (m_textFont.count(m_currentStyle) == 0) { + if (!m_textFont.contains(m_currentStyle)) { LogWarning("Text font for style (%d, %d) is not loaded. Use default", fontWeight, fontStyle); m_currentStyle = k_defaultStyle; } @@ -268,11 +282,11 @@ void Resources::SelectTextFont(data_FONTWEIGHT fontWeight, data_FONTSTYLE fontSt const Glyph *Resources::GetTextGlyph(char32_t code) const { - const StyleAttributes style = (m_textFont.count(m_currentStyle) != 0) ? m_currentStyle : k_defaultStyle; - if (m_textFont.count(style) == 0) return NULL; + const StyleAttributes style = m_textFont.contains(m_currentStyle) ? m_currentStyle : k_defaultStyle; + if (!m_textFont.contains(style)) return NULL; const GlyphTable ¤tTable = m_textFont.at(style); - if (currentTable.count(code) == 0) { + if (!currentTable.contains(code)) { return NULL; } @@ -414,7 +428,7 @@ bool Resources::InitTextFont(const std::string &fontName, const StyleAttributes } const int unitsPerEm = root.attribute("units-per-em").as_int(); pugi::xml_node current; - if (m_textFont.count(style) == 0) { + if (!m_textFont.contains(style)) { m_textFont[style] = {}; } GlyphTable ¤tTable = m_textFont.at(style); @@ -433,7 +447,7 @@ bool Resources::InitTextFont(const std::string &fontName, const StyleAttributes glyph.SetBoundingBox(x, y, width, height); if (current.attribute("h-a-x")) glyph.SetHorizAdvX(current.attribute("h-a-x").as_float()); - if (currentTable.count(code) > 0) { + if (currentTable.contains(code)) { LogDebug("Redefining %d with %s", code, fontName.c_str()); } currentTable[code] = glyph; diff --git a/src/rest.cpp b/src/rest.cpp index 5f0779dd004..7e622d604d1 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -37,100 +37,118 @@ RestOffsets g_defaultRests{ { { RA_none, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, 3 }, { DUR_2, 3 }, { DUR_4, 5 }, { DUR_8, 5 }, { DUR_16, 7 }, { DUR_32, 7 }, - { DUR_64, 9 }, { DUR_128, 9 }, { DUR_LG, 5 }, { DUR_BR, 5 } } }, + { { DURATION_1, 3 }, { DURATION_2, 3 }, { DURATION_4, 5 }, { DURATION_8, 5 }, + { DURATION_16, 7 }, { DURATION_32, 7 }, { DURATION_64, 9 }, { DURATION_128, 9 }, + { DURATION_long, 5 }, { DURATION_breve, 5 } } }, { RNP_noteOnLine, - { { DUR_1, 2 }, { DUR_2, 4 }, { DUR_4, 6 }, { DUR_8, 4 }, { DUR_16, 6 }, { DUR_32, 6 }, - { DUR_64, 8 }, { DUR_128, 8 }, { DUR_LG, 6 }, { DUR_BR, 4 } } } } }, + { { DURATION_1, 2 }, { DURATION_2, 4 }, { DURATION_4, 6 }, { DURATION_8, 4 }, + { DURATION_16, 6 }, { DURATION_32, 6 }, { DURATION_64, 8 }, { DURATION_128, 8 }, + { DURATION_long, 6 }, { DURATION_breve, 4 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -5 }, { DUR_2, -5 }, { DUR_4, -5 }, { DUR_8, -5 }, { DUR_16, -5 }, - { DUR_32, -7 }, { DUR_64, -7 }, { DUR_128, -9 }, { DUR_LG, -5 }, { DUR_BR, -5 } } }, + { { DURATION_1, -5 }, { DURATION_2, -5 }, { DURATION_4, -5 }, { DURATION_8, -5 }, + { DURATION_16, -5 }, { DURATION_32, -7 }, { DURATION_64, -7 }, { DURATION_128, -9 }, + { DURATION_long, -5 }, { DURATION_breve, -5 } } }, { RNP_noteOnLine, - { { DUR_1, -6 }, { DUR_2, -6 }, { DUR_4, -6 }, { DUR_8, -4 }, { DUR_16, -4 }, - { DUR_32, -6 }, { DUR_64, -6 }, { DUR_128, -8 }, { DUR_LG, -6 }, - { DUR_BR, -6 } } } } } } }, + { { DURATION_1, -6 }, { DURATION_2, -6 }, { DURATION_4, -6 }, { DURATION_8, -4 }, + { DURATION_16, -4 }, { DURATION_32, -6 }, { DURATION_64, -6 }, { DURATION_128, -8 }, + { DURATION_long, -6 }, { DURATION_breve, -6 } } } } } } }, { RA_s, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, 3 }, { DUR_2, 5 }, { DUR_4, 7 }, { DUR_8, 5 }, { DUR_16, 7 }, { DUR_32, 7 }, - { DUR_64, 9 }, { DUR_128, 9 }, { DUR_LG, 5 }, { DUR_BR, 5 } } }, + { { DURATION_1, 3 }, { DURATION_2, 5 }, { DURATION_4, 7 }, { DURATION_8, 5 }, + { DURATION_16, 7 }, { DURATION_32, 7 }, { DURATION_64, 9 }, { DURATION_128, 9 }, + { DURATION_long, 5 }, { DURATION_breve, 5 } } }, { RNP_noteOnLine, - { { DUR_1, 2 }, { DUR_2, 4 }, { DUR_4, 6 }, { DUR_8, 6 }, { DUR_16, 8 }, { DUR_32, 8 }, - { DUR_64, 10 }, { DUR_128, 10 }, { DUR_LG, 6 }, { DUR_BR, 4 } } } } }, + { { DURATION_1, 2 }, { DURATION_2, 4 }, { DURATION_4, 6 }, { DURATION_8, 6 }, + { DURATION_16, 8 }, { DURATION_32, 8 }, { DURATION_64, 10 }, { DURATION_128, 10 }, + { DURATION_long, 6 }, { DURATION_breve, 4 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -5 }, { DUR_2, -5 }, { DUR_4, -5 }, { DUR_8, -5 }, { DUR_16, -5 }, - { DUR_32, -7 }, { DUR_64, -7 }, { DUR_128, -9 }, { DUR_LG, -5 }, { DUR_BR, -5 } } }, + { { DURATION_1, -5 }, { DURATION_2, -5 }, { DURATION_4, -5 }, { DURATION_8, -5 }, + { DURATION_16, -5 }, { DURATION_32, -7 }, { DURATION_64, -7 }, { DURATION_128, -9 }, + { DURATION_long, -5 }, { DURATION_breve, -5 } } }, { RNP_noteOnLine, - { { DUR_1, -6 }, { DUR_2, -6 }, { DUR_4, -6 }, { DUR_8, -6 }, { DUR_16, -6 }, - { DUR_32, -6 }, { DUR_64, -6 }, { DUR_128, -8 }, { DUR_LG, -6 }, - { DUR_BR, -6 } } } } } } }, + { { DURATION_1, -6 }, { DURATION_2, -6 }, { DURATION_4, -6 }, { DURATION_8, -6 }, + { DURATION_16, -6 }, { DURATION_32, -6 }, { DURATION_64, -6 }, { DURATION_128, -8 }, + { DURATION_long, -6 }, { DURATION_breve, -6 } } } } } } }, { RA_f, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, 3 }, { DUR_2, 5 }, { DUR_4, 5 }, { DUR_8, 5 }, { DUR_16, 7 }, { DUR_32, 7 }, - { DUR_64, 9 }, { DUR_128, 9 }, { DUR_LG, 5 }, { DUR_BR, 5 } } }, + { { DURATION_1, 3 }, { DURATION_2, 5 }, { DURATION_4, 5 }, { DURATION_8, 5 }, + { DURATION_16, 7 }, { DURATION_32, 7 }, { DURATION_64, 9 }, { DURATION_128, 9 }, + { DURATION_long, 5 }, { DURATION_breve, 5 } } }, { RNP_noteOnLine, - { { DUR_1, 4 }, { DUR_2, 4 }, { DUR_4, 6 }, { DUR_8, 6 }, { DUR_16, 8 }, { DUR_32, 8 }, - { DUR_64, 10 }, { DUR_128, 10 }, { DUR_LG, 6 }, { DUR_BR, 4 } } } } }, + { { DURATION_1, 4 }, { DURATION_2, 4 }, { DURATION_4, 6 }, { DURATION_8, 6 }, + { DURATION_16, 8 }, { DURATION_32, 8 }, { DURATION_64, 10 }, { DURATION_128, 10 }, + { DURATION_long, 6 }, { DURATION_breve, 4 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -5 }, { DUR_2, -5 }, { DUR_4, -5 }, { DUR_8, -5 }, { DUR_16, -5 }, - { DUR_32, -7 }, { DUR_64, -7 }, { DUR_128, -9 }, { DUR_LG, -5 }, { DUR_BR, -5 } } }, + { { DURATION_1, -5 }, { DURATION_2, -5 }, { DURATION_4, -5 }, { DURATION_8, -5 }, + { DURATION_16, -5 }, { DURATION_32, -7 }, { DURATION_64, -7 }, { DURATION_128, -9 }, + { DURATION_long, -5 }, { DURATION_breve, -5 } } }, { RNP_noteOnLine, - { { DUR_1, -6 }, { DUR_2, -6 }, { DUR_4, -6 }, { DUR_8, -4 }, { DUR_16, -4 }, - { DUR_32, -6 }, { DUR_64, -6 }, { DUR_128, -8 }, { DUR_LG, -6 }, - { DUR_BR, -6 } } } } } } }, + { { DURATION_1, -6 }, { DURATION_2, -6 }, { DURATION_4, -6 }, { DURATION_8, -4 }, + { DURATION_16, -4 }, { DURATION_32, -6 }, { DURATION_64, -6 }, { DURATION_128, -8 }, + { DURATION_long, -6 }, { DURATION_breve, -6 } } } } } } }, { RA_x, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, 3 }, { DUR_2, 3 }, { DUR_4, 5 }, { DUR_8, 5 }, { DUR_16, 7 }, { DUR_32, 7 }, - { DUR_64, 9 }, { DUR_128, 9 }, { DUR_LG, 5 }, { DUR_BR, 5 } } }, + { { DURATION_1, 3 }, { DURATION_2, 3 }, { DURATION_4, 5 }, { DURATION_8, 5 }, + { DURATION_16, 7 }, { DURATION_32, 7 }, { DURATION_64, 9 }, { DURATION_128, 9 }, + { DURATION_long, 5 }, { DURATION_breve, 5 } } }, { RNP_noteOnLine, - { { DUR_1, 2 }, { DUR_2, 4 }, { DUR_4, 6 }, { DUR_8, 6 }, { DUR_16, 8 }, { DUR_32, 8 }, - { DUR_64, 10 }, { DUR_128, 10 }, { DUR_LG, 6 }, { DUR_BR, 4 } } } } }, + { { DURATION_1, 2 }, { DURATION_2, 4 }, { DURATION_4, 6 }, { DURATION_8, 6 }, + { DURATION_16, 8 }, { DURATION_32, 8 }, { DURATION_64, 10 }, { DURATION_128, 10 }, + { DURATION_long, 6 }, { DURATION_breve, 4 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -5 }, { DUR_2, -5 }, { DUR_4, -5 }, { DUR_8, -5 }, { DUR_16, -5 }, - { DUR_32, -7 }, { DUR_64, -7 }, { DUR_128, -9 }, { DUR_LG, -5 }, { DUR_BR, -5 } } }, + { { DURATION_1, -5 }, { DURATION_2, -5 }, { DURATION_4, -5 }, { DURATION_8, -5 }, + { DURATION_16, -5 }, { DURATION_32, -7 }, { DURATION_64, -7 }, { DURATION_128, -9 }, + { DURATION_long, -5 }, { DURATION_breve, -5 } } }, { RNP_noteOnLine, - { { DUR_1, -6 }, { DUR_2, -4 }, { DUR_4, -6 }, { DUR_8, -4 }, { DUR_16, -4 }, - { DUR_32, -6 }, { DUR_64, -6 }, { DUR_128, -8 }, { DUR_LG, -6 }, - { DUR_BR, -6 } } } } } } }, + { { DURATION_1, -6 }, { DURATION_2, -4 }, { DURATION_4, -6 }, { DURATION_8, -4 }, + { DURATION_16, -4 }, { DURATION_32, -6 }, { DURATION_64, -6 }, { DURATION_128, -8 }, + { DURATION_long, -6 }, { DURATION_breve, -6 } } } } } } }, { RA_n, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, 3 }, { DUR_2, 3 }, { DUR_4, 5 }, { DUR_8, 5 }, { DUR_16, 7 }, { DUR_32, 7 }, - { DUR_64, 9 }, { DUR_128, 9 }, { DUR_LG, 5 }, { DUR_BR, 5 } } }, + { { DURATION_1, 3 }, { DURATION_2, 3 }, { DURATION_4, 5 }, { DURATION_8, 5 }, + { DURATION_16, 7 }, { DURATION_32, 7 }, { DURATION_64, 9 }, { DURATION_128, 9 }, + { DURATION_long, 5 }, { DURATION_breve, 5 } } }, { RNP_noteOnLine, - { { DUR_1, 2 }, { DUR_2, 6 }, { DUR_4, 6 }, { DUR_8, 6 }, { DUR_16, 8 }, { DUR_32, 8 }, - { DUR_64, 10 }, { DUR_128, 10 }, { DUR_LG, 6 }, { DUR_BR, 4 } } } } }, + { { DURATION_1, 2 }, { DURATION_2, 6 }, { DURATION_4, 6 }, { DURATION_8, 6 }, + { DURATION_16, 8 }, { DURATION_32, 8 }, { DURATION_64, 10 }, { DURATION_128, 10 }, + { DURATION_long, 6 }, { DURATION_breve, 4 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -7 }, { DUR_2, -5 }, { DUR_4, -7 }, { DUR_8, -5 }, { DUR_16, -5 }, - { DUR_32, -7 }, { DUR_64, -7 }, { DUR_128, -9 }, { DUR_LG, -5 }, { DUR_BR, -5 } } }, + { { DURATION_1, -7 }, { DURATION_2, -5 }, { DURATION_4, -7 }, { DURATION_8, -5 }, + { DURATION_16, -5 }, { DURATION_32, -7 }, { DURATION_64, -7 }, { DURATION_128, -9 }, + { DURATION_long, -5 }, { DURATION_breve, -5 } } }, { RNP_noteOnLine, - { { DUR_1, -6 }, { DUR_2, -6 }, { DUR_4, -6 }, { DUR_8, -6 }, { DUR_16, -6 }, - { DUR_32, -6 }, { DUR_64, -6 }, { DUR_128, -8 }, { DUR_LG, -6 }, - { DUR_BR, -6 } } } } } } } } }, + { { DURATION_1, -6 }, { DURATION_2, -6 }, { DURATION_4, -6 }, { DURATION_8, -6 }, + { DURATION_16, -6 }, { DURATION_32, -6 }, { DURATION_64, -6 }, { DURATION_128, -8 }, + { DURATION_long, -6 }, { DURATION_breve, -6 } } } } } } } } }, { RL_sameLayer, { { RA_none, { { RLP_restOnTopLayer, { { RNP_noteInSpace, - { { DUR_1, -1 }, { DUR_2, 1 }, { DUR_4, 1 }, { DUR_8, 1 }, { DUR_16, 3 }, { DUR_32, 3 }, - { DUR_64, 5 }, { DUR_128, 5 }, { DUR_LG, 3 }, { DUR_BR, 1 } } }, + { { DURATION_1, -1 }, { DURATION_2, 1 }, { DURATION_4, 1 }, { DURATION_8, 1 }, + { DURATION_16, 3 }, { DURATION_32, 3 }, { DURATION_64, 5 }, { DURATION_128, 5 }, + { DURATION_long, 3 }, { DURATION_breve, 1 } } }, { RNP_noteOnLine, - { { DUR_1, 0 }, { DUR_2, 0 }, { DUR_4, 2 }, { DUR_8, 2 }, { DUR_16, 2 }, { DUR_32, 2 }, - { DUR_64, 4 }, { DUR_128, 4 }, { DUR_LG, 2 }, { DUR_BR, 2 } } } } }, + { { DURATION_1, 0 }, { DURATION_2, 0 }, { DURATION_4, 2 }, { DURATION_8, 2 }, + { DURATION_16, 2 }, { DURATION_32, 2 }, { DURATION_64, 4 }, { DURATION_128, 4 }, + { DURATION_long, 2 }, { DURATION_breve, 2 } } } } }, { RLP_restOnBottomLayer, { { RNP_noteInSpace, - { { DUR_1, -3 }, { DUR_2, -1 }, { DUR_4, -1 }, { DUR_8, -1 }, { DUR_16, -1 }, { DUR_32, -3 }, - { DUR_64, -3 }, { DUR_128, -5 }, { DUR_LG, -3 }, { DUR_BR, -3 } } }, + { { DURATION_1, -3 }, { DURATION_2, -1 }, { DURATION_4, -1 }, { DURATION_8, -1 }, + { DURATION_16, -1 }, { DURATION_32, -3 }, { DURATION_64, -3 }, { DURATION_128, -5 }, + { DURATION_long, -3 }, { DURATION_breve, -3 } } }, { RNP_noteOnLine, - { { DUR_1, -2 }, { DUR_2, -2 }, { DUR_4, -2 }, { DUR_8, -2 }, { DUR_16, -2 }, - { DUR_32, -4 }, { DUR_64, -4 }, { DUR_128, -6 }, { DUR_LG, -2 }, - { DUR_BR, -2 } } } } } } } } } + { { DURATION_1, -2 }, { DURATION_2, -2 }, { DURATION_4, -2 }, { DURATION_8, -2 }, + { DURATION_16, -2 }, { DURATION_32, -4 }, { DURATION_64, -4 }, { DURATION_128, -6 }, + { DURATION_long, -2 }, { DURATION_breve, -2 } } } } } } } } } }; // helper function for conversion @@ -226,7 +244,7 @@ char32_t Rest::GetRestGlyph() const return this->GetRestGlyph(this->GetActualDur()); } -char32_t Rest::GetRestGlyph(const int duration) const +char32_t Rest::GetRestGlyph(const data_DURATION duration) const { const Resources *resources = this->GetDocResources(); if (!resources) return 0; @@ -244,31 +262,33 @@ char32_t Rest::GetRestGlyph(const int duration) const if (this->IsMensuralDur()) { switch (duration) { - case DUR_MX: return SMUFL_E9F0_mensuralRestMaxima; break; - case DUR_LG: return SMUFL_E9F2_mensuralRestLongaImperfecta; break; - case DUR_BR: return SMUFL_E9F3_mensuralRestBrevis; break; - case DUR_1: return SMUFL_E9F4_mensuralRestSemibrevis; break; - case DUR_2: return SMUFL_E9F5_mensuralRestMinima; break; - case DUR_4: return SMUFL_E9F6_mensuralRestSemiminima; break; - case DUR_8: return SMUFL_E9F7_mensuralRestFusa; break; - case DUR_16: return SMUFL_E9F8_mensuralRestSemifusa; break; + case DURATION_maxima: return SMUFL_E9F0_mensuralRestMaxima; break; + case DURATION_long: return SMUFL_E9F2_mensuralRestLongaImperfecta; break; + case DURATION_breve: return SMUFL_E9F3_mensuralRestBrevis; break; + case DURATION_1: return SMUFL_E9F4_mensuralRestSemibrevis; break; + case DURATION_2: return SMUFL_E9F5_mensuralRestMinima; break; + case DURATION_4: return SMUFL_E9F6_mensuralRestSemiminima; break; + case DURATION_8: return SMUFL_E9F7_mensuralRestFusa; break; + case DURATION_16: return SMUFL_E9F8_mensuralRestSemifusa; break; + default: return 0; } } else { switch (duration) { - case DUR_LG: return SMUFL_E4E1_restLonga; break; - case DUR_BR: return SMUFL_E4E2_restDoubleWhole; break; - case DUR_1: return SMUFL_E4E3_restWhole; break; - case DUR_2: return SMUFL_E4E4_restHalf; break; - case DUR_4: return SMUFL_E4E5_restQuarter; break; - case DUR_8: return SMUFL_E4E6_rest8th; break; - case DUR_16: return SMUFL_E4E7_rest16th; break; - case DUR_32: return SMUFL_E4E8_rest32nd; break; - case DUR_64: return SMUFL_E4E9_rest64th; break; - case DUR_128: return SMUFL_E4EA_rest128th; break; - case DUR_256: return SMUFL_E4EB_rest256th; break; - case DUR_512: return SMUFL_E4EC_rest512th; break; - case DUR_1024: return SMUFL_E4ED_rest1024th; break; + case DURATION_long: return SMUFL_E4E1_restLonga; break; + case DURATION_breve: return SMUFL_E4E2_restDoubleWhole; break; + case DURATION_1: return SMUFL_E4E3_restWhole; break; + case DURATION_2: return SMUFL_E4E4_restHalf; break; + case DURATION_4: return SMUFL_E4E5_restQuarter; break; + case DURATION_8: return SMUFL_E4E6_rest8th; break; + case DURATION_16: return SMUFL_E4E7_rest16th; break; + case DURATION_32: return SMUFL_E4E8_rest32nd; break; + case DURATION_64: return SMUFL_E4E9_rest64th; break; + case DURATION_128: return SMUFL_E4EA_rest128th; break; + case DURATION_256: return SMUFL_E4EB_rest256th; break; + case DURATION_512: return SMUFL_E4EC_rest512th; break; + case DURATION_1024: return SMUFL_E4ED_rest1024th; break; + default: return 0; } } @@ -541,10 +561,10 @@ int Rest::GetMarginLayerLocation(bool isTopLayer, bool restOverlap) const int Rest::GetRestOffsetFromOptions( RestLayer layer, const std::pair &location, bool isTopLayer) const { - int duration = this->GetActualDur(); + data_DURATION duration = this->GetActualDur(); // Make sure we are in the boundaries of g_defaultRests - if (duration > DUR_128) duration = DUR_128; - if (duration < DUR_LG) duration = DUR_LG; + if (duration > DURATION_128) duration = DURATION_128; + if (duration < DURATION_long) duration = DURATION_long; return g_defaultRests.at(layer) .at(RL_sameLayer == layer ? location.second : RA_none) .at(isTopLayer ? RLP_restOnTopLayer : RLP_restOnBottomLayer) diff --git a/src/savefunctor.cpp b/src/savefunctor.cpp index ea74b4ba90c..293ed51f51c 100644 --- a/src/savefunctor.cpp +++ b/src/savefunctor.cpp @@ -77,9 +77,8 @@ FunctorCode SaveFunctor::VisitFlagEnd(Flag *flag) FunctorCode SaveFunctor::VisitMdiv(Mdiv *mdiv) { MEIOutput *meiOutput = dynamic_cast(m_output); - if (!meiOutput) return FUNCTOR_STOP; - if (mdiv->m_visibility == Hidden) { + if (meiOutput && (mdiv->m_visibility == Hidden)) { // Do not output hidden mdivs in page-based MEI or when saving score-based MEI with filter if (!meiOutput->GetScoreBasedMEI() || meiOutput->HasFilter()) return FUNCTOR_SIBLINGS; } @@ -89,9 +88,8 @@ FunctorCode SaveFunctor::VisitMdiv(Mdiv *mdiv) FunctorCode SaveFunctor::VisitMdivEnd(Mdiv *mdiv) { MEIOutput *meiOutput = dynamic_cast(m_output); - if (!meiOutput) return FUNCTOR_STOP; - if (mdiv->m_visibility == Hidden) { + if (meiOutput && (mdiv->m_visibility == Hidden)) { // Do not output hidden mdivs in page-based MEI or when saving score-based MEI with filter if (!meiOutput->GetScoreBasedMEI() || meiOutput->HasFilter()) return FUNCTOR_SIBLINGS; } diff --git a/src/setscoredeffunctor.cpp b/src/setscoredeffunctor.cpp index 29f6548c8ce..bfb13ce8e2b 100644 --- a/src/setscoredeffunctor.cpp +++ b/src/setscoredeffunctor.cpp @@ -230,6 +230,15 @@ FunctorCode ScoreDefSetCurrentFunctor::VisitPage(Page *page) return FUNCTOR_CONTINUE; } +FunctorCode ScoreDefSetCurrentFunctor::VisitProport(Proport *proport) +{ + assert(m_currentStaffDef); + StaffDef *upcomingStaffDef = m_upcomingScoreDef.GetStaffDef(m_currentStaffDef->GetN()); + assert(upcomingStaffDef); + upcomingStaffDef->SetCurrentProport(proport); + return FUNCTOR_CONTINUE; +} + FunctorCode ScoreDefSetCurrentFunctor::VisitScore(Score *score) { m_currentScore = score; @@ -539,12 +548,12 @@ FunctorCode ScoreDefSetGrpSymFunctor::VisitGrpSym(GrpSym *grpSym) StaffDef *end = vrv_cast(scoreDef->FindDescendantByComparison(&compare, level)); if (!start || !end) { - LogWarning("Could not find startid/endid on level %d for <'%s'>", level, grpSym->GetID().c_str()); + LogWarning("Could not find startid/endid on level %d for '%s'", level, grpSym->GetID().c_str()); return FUNCTOR_CONTINUE; } if (start->GetParent() != end->GetParent()) { - LogWarning("<'%s'> has mismatching parents for startid:<'%s'> and endid:<'%s'>", grpSym->GetID().c_str(), + LogWarning("'%s' has mismatching parents for startid:%s and endid:%s", grpSym->GetID().c_str(), startId.c_str(), endId.c_str()); return FUNCTOR_CONTINUE; } diff --git a/src/slur.cpp b/src/slur.cpp index bc5a3be43bf..5250e5ef56d 100644 --- a/src/slur.cpp +++ b/src/slur.cpp @@ -380,9 +380,9 @@ void Slur::AddSpannedElements( TimeSpanningInterface *interface = positioner->GetObject()->GetTimeSpanningInterface(); assert(interface); const bool startsInCollisionLayer - = (spanned.layersN.count(interface->GetStart()->GetOriginalLayerN()) > 0); + = spanned.layersN.contains(interface->GetStart()->GetOriginalLayerN()); const bool endsInCollisionLayer - = (spanned.layersN.count(interface->GetEnd()->GetOriginalLayerN()) > 0); + = spanned.layersN.contains(interface->GetEnd()->GetOriginalLayerN()); return (!startsInCollisionLayer && !endsInCollisionLayer); }), tiePositioners.end()); @@ -487,27 +487,32 @@ void Slur::AddPositionerToArticulations(FloatingCurvePositioner *curve) } } -Staff *Slur::CalculateExtremalStaff(const Staff *staff, int xMin, int xMax) +Staff *Slur::CalculatePrincipalStaff(const Staff *staff, int xMin, int xMax) { - return const_cast(std::as_const(*this).CalculateExtremalStaff(staff, xMin, xMax)); + return const_cast(std::as_const(*this).CalculatePrincipalStaff(staff, xMin, xMax)); } -const Staff *Slur::CalculateExtremalStaff(const Staff *staff, int xMin, int xMax) const +const Staff *Slur::CalculatePrincipalStaff(const Staff *staff, int xMin, int xMax) const { - const Staff *extremalStaff = staff; + assert(staff); + + const Staff *principalStaff = NULL; const SlurCurveDirection curveDir = this->GetDrawingCurveDir(); const SpannedElements spanned = this->CollectSpannedElements(staff, xMin, xMax); + if (spanned.elements.empty()) { + return staff; + } // The floating curve positioner of cross staff slurs should live in the lower/upper staff alignment // corresponding to whether the slur is curved below or not - auto adaptStaff = [&extremalStaff, curveDir](const LayerElement *element) { + auto adaptStaff = [&principalStaff, curveDir](const LayerElement *element) { const Staff *elementStaff = element->GetAncestorStaff(RESOLVE_CROSS_STAFF); - const bool updateExtremal = (curveDir == SlurCurveDirection::Below) - ? (elementStaff->GetN() > extremalStaff->GetN()) - : (elementStaff->GetN() < extremalStaff->GetN()); - if (updateExtremal) { - extremalStaff = elementStaff; + const bool updatePrincipal = !principalStaff + || ((curveDir == SlurCurveDirection::Below) ? (elementStaff->GetN() > principalStaff->GetN()) + : (elementStaff->GetN() < principalStaff->GetN())); + if (updatePrincipal) { + principalStaff = elementStaff; } }; @@ -521,21 +526,24 @@ const Staff *Slur::CalculateExtremalStaff(const Staff *staff, int xMin, int xMax } }); - return extremalStaff; + assert(principalStaff); + return principalStaff; } bool Slur::IsElementBelow(const LayerElement *element, const Staff *startStaff, const Staff *endStaff) const { assert(element); - assert(startStaff); - assert(endStaff); + // startStaff and endStaff may be NULL (if the boundary is a tstamp) + // however, slurs with tstamp should never have S-shape switch (this->GetDrawingCurveDir()) { case SlurCurveDirection::Above: return true; case SlurCurveDirection::Below: return false; case SlurCurveDirection::AboveBelow: + assert(startStaff); return (element->GetAncestorStaff(RESOLVE_CROSS_STAFF)->GetN() == startStaff->GetN()); case SlurCurveDirection::BelowAbove: + assert(endStaff); return (element->GetAncestorStaff(RESOLVE_CROSS_STAFF)->GetN() == endStaff->GetN()); default: return false; } @@ -544,15 +552,17 @@ bool Slur::IsElementBelow(const LayerElement *element, const Staff *startStaff, bool Slur::IsElementBelow(const FloatingPositioner *positioner, const Staff *startStaff, const Staff *endStaff) const { assert(positioner); - assert(startStaff); - assert(endStaff); + // startStaff and endStaff may be NULL (if the boundary is a tstamp) + // however, slurs with tstamp should never have S-shape switch (this->GetDrawingCurveDir()) { case SlurCurveDirection::Above: return true; case SlurCurveDirection::Below: return false; case SlurCurveDirection::AboveBelow: + assert(startStaff); return (positioner->GetAlignment()->GetStaff()->GetN() == startStaff->GetN()); case SlurCurveDirection::BelowAbove: + assert(endStaff); return (positioner->GetAlignment()->GetStaff()->GetN() == endStaff->GetN()); default: return false; } diff --git a/src/timemap.cpp b/src/timemap.cpp index 6e48ff16795..6e6f8decd6c 100644 --- a/src/timemap.cpp +++ b/src/timemap.cpp @@ -37,17 +37,22 @@ void Timemap::Reset() m_map.clear(); } -void Timemap::ToJson(std::string &output, bool includeRests, bool includeMeasures) +void Timemap::ToJson(std::string &output, bool includeRests, bool includeMeasures, bool useFractions) { double currentTempo = -1000.0; double newTempo; jsonxx::Array timemap; - for (auto &[tstamp, entry] : m_map) { + for (auto &[qstamp, entry] : m_map) { jsonxx::Object o; - o << "tstamp" << tstamp; - o << "qstamp" << entry.qstamp; + if (useFractions) { + o << "qfrac" << Timemap::ToArray(qstamp); + } + else { + o << "qstamp" << qstamp.ToDouble(); + } + o << "tstamp" << entry.tstamp; // on / off if (!entry.notesOn.empty()) { @@ -80,7 +85,7 @@ void Timemap::ToJson(std::string &output, bool includeRests, bool includeMeasure newTempo = entry.tempo; if (newTempo != currentTempo) { currentTempo = newTempo; - o << "tempo" << std::to_string(currentTempo); + o << "tempo" << currentTempo; } } @@ -94,4 +99,12 @@ void Timemap::ToJson(std::string &output, bool includeRests, bool includeMeasure output = timemap.json(); } +jsonxx::Array Timemap::ToArray(const Fraction &fraction) +{ + jsonxx::Array array; + array << fraction.GetNumerator(); + array << fraction.GetDenominator(); + return array; +} + } // namespace vrv diff --git a/src/timestamp.cpp b/src/timestamp.cpp index da4a52e682d..c7bd31c6269 100644 --- a/src/timestamp.cpp +++ b/src/timestamp.cpp @@ -35,9 +35,10 @@ void TimestampAttr::Reset() m_actualDurPos = 0.0; } -double TimestampAttr::GetTimestampAttrAlignmentDuration(int meterUnit) const +Fraction TimestampAttr::GetTimestampAttrAlignmentDuration(data_DURATION meterUnit) const { - return DUR_MAX / meterUnit * m_actualDurPos; + Fraction duration(meterUnit); + return (duration * Fraction(m_actualDurPos * DUR_MAX, DUR_MAX)); } FunctorCode TimestampAttr::Accept(Functor &functor) diff --git a/src/toolkit.cpp b/src/toolkit.cpp index 9e602dfb6c4..6836881c092 100644 --- a/src/toolkit.cpp +++ b/src/toolkit.cpp @@ -10,7 +10,6 @@ //---------------------------------------------------------------------------- #include -#include #include #include @@ -24,6 +23,7 @@ #include "filereader.h" #include "findfunctor.h" #include "ioabc.h" +#include "iocmme.h" #include "iodarms.h" #include "iohumdrum.h" #include "iomei.h" @@ -127,7 +127,7 @@ bool Toolkit::SetResourcePath(const std::string &path) success = success && this->SetFont(m_options->m_font.GetValue()); } if (m_options->m_fontFallback.IsSet()) { - success = success && resources.SetFallback(m_options->m_fontFallback.GetStrValue()); + resources.SetFallbackFont(m_options->m_fontFallback.GetStrValue()); } if (m_options->m_fontLoadAll.IsSet()) { success = success && resources.LoadAll(); @@ -206,6 +206,9 @@ bool Toolkit::SetInputFrom(std::string const &inputFrom) else if (inputFrom == "volpiano") { m_inputFrom = VOLPIANO; } + else if (inputFrom == "cmme.xml") { + m_inputFrom = CMME; + } else if ((inputFrom == "humdrum") || (inputFrom == "hum")) { m_inputFrom = HUMDRUM; } @@ -296,6 +299,9 @@ FileFormat Toolkit::IdentifyInputFrom(const std::string &data) if (std::regex_search(initial, std::regex("<(!DOCTYPE )?(score-partwise|opus|score-timewise)[\\s\\n>]"))) { return musicxmlDefault; } + if (std::regex_search(initial, std::regex("<(Piece xmlns=\"http://www.cmme.org\")[\\s\\n>]"))) { + return CMME; + } LogWarning("Warning: Trying to load unknown XML data which cannot be identified."); return UNKNOWN; } @@ -368,7 +374,7 @@ bool Toolkit::LoadUTF16File(const std::string &filename) /// Loading a UTF-16 file with basic conversion ot UTF-8 /// This is called after checking if the file has a UTF-16 BOM - LogWarning("The file seems to be UTF-16 - trying to convert to UTF-8"); + LogInfo("The file seems to be UTF-16 - trying to convert to UTF-8"); std::ifstream fin(filename.c_str(), std::ios::in | std::ios::binary); if (!fin.is_open()) { @@ -386,7 +392,7 @@ bool Toolkit::LoadUTF16File(const std::string &filename) // order of the bytes has to be flipped if (u16data.at(0) == u'\uFFFE') { - LogWarning("The file seems to have been loaded as little endian - trying to convert to big endian"); + LogInfo("The file seems to have been loaded as little endian - trying to convert to big endian"); // convert to big endian (swap bytes) std::transform(std::begin(u16data), std::end(u16data), std::begin(u16data), [](char16_t c) { auto p = reinterpret_cast(&c); @@ -400,12 +406,28 @@ bool Toolkit::LoadUTF16File(const std::string &filename) u16data.erase(0, 1); } - std::wstring_convert, char16_t> convert; - std::string utf8line = convert.to_bytes(u16data); + // std::wstring_convert, char16_t> convert; + std::string utf8line = vrv::UTF16to8(u16data); // convert.to_bytes(u16data); return this->LoadData(utf8line, false); } +std::string UTF16toUTF8(const std::u16string &input) +{ + std::string output; + // Placeholder for manual conversion logic + // Real conversion logic here should handle actual UTF-16 to UTF-8 conversion + for (char16_t c : input) { + if (c < 0x80) { // Handle basic ASCII conversion + output.push_back(static_cast(c)); + } + else { + // Extend this block to handle non-ASCII characters + } + } + return output; +} + bool Toolkit::IsZip(const std::string &filename) { std::ifstream fin(filename.c_str(), std::ios::in | std::ios::binary); @@ -548,6 +570,9 @@ bool Toolkit::LoadData(const std::string &data, bool resetLogBuffer) else if (inputFormat == VOLPIANO) { input = new VolpianoInput(&m_doc); } + else if (inputFormat == CMME) { + input = new CmmeInput(&m_doc); + } #ifndef NO_HUMDRUM_SUPPORT else if (inputFormat == HUMDRUM) { // LogInfo("Importing Humdrum data"); @@ -1199,7 +1224,7 @@ bool Toolkit::SetOptions(const std::string &jsonOptions) } if (json.has("fontFallback")) { Resources &resources = m_doc.GetResourcesForModification(); - resources.SetFallback(m_options->m_fontFallback.GetStrValue()); + resources.SetFallbackFont(m_options->m_fontFallback.GetStrValue()); } if (json.has("fontLoadAll")) { Resources &resources = m_doc.GetResourcesForModification(); @@ -1288,11 +1313,11 @@ void Toolkit::PrintOptionUsageOutput(const vrv::Option *option, std::ostream &ou void Toolkit::PrintOptionUsage(const std::string &category, std::ostream &output) const { // map of all categories and expected string arguments for them - const std::map categories - = { { vrv::OptionsCategory::Base, "base" }, { vrv::OptionsCategory::General, "general" }, - { vrv::OptionsCategory::Layout, "layout" }, { vrv::OptionsCategory::Margins, "margins" }, - { vrv::OptionsCategory::Mensural, "mensural" }, { vrv::OptionsCategory::Midi, "midi" }, - { vrv::OptionsCategory::Selectors, "selectors" }, { vrv::OptionsCategory::Full, "full" } }; + const std::map categories = { { vrv::OptionsCategory::Base, "base" }, + { vrv::OptionsCategory::General, "general" }, { vrv::OptionsCategory::Json, "json" }, + { vrv::OptionsCategory::Layout, "layout" }, { vrv::OptionsCategory::Margins, "margins" }, + { vrv::OptionsCategory::Mensural, "mensural" }, { vrv::OptionsCategory::Midi, "midi" }, + { vrv::OptionsCategory::Selectors, "selectors" }, { vrv::OptionsCategory::Full, "full" } }; output.precision(2); // display_version(); @@ -1782,6 +1807,7 @@ std::string Toolkit::RenderToTimemap(const std::string &jsonOptions) { bool includeMeasures = false; bool includeRests = false; + bool useFractions = false; jsonxx::Object json; @@ -1794,13 +1820,14 @@ std::string Toolkit::RenderToTimemap(const std::string &jsonOptions) if (json.has("includeMeasures")) includeMeasures = json.get("includeMeasures"); if (json.has("includeRests")) includeRests = json.get("includeRests"); + if (json.has("useFractions")) useFractions = json.get("useFractions"); } } this->ResetLogBuffer(); std::string output; - m_doc.ExportTimemap(output, includeRests, includeMeasures); + m_doc.ExportTimemap(output, includeRests, includeMeasures, useFractions); return output; } diff --git a/src/transposefunctor.cpp b/src/transposefunctor.cpp index fc61130cbcb..11d38a88747 100644 --- a/src/transposefunctor.cpp +++ b/src/transposefunctor.cpp @@ -109,7 +109,7 @@ FunctorCode TransposeFunctor::VisitNote(Note *note) m_transposer->Transpose(pitch); const int staffN = note->GetAncestorStaff(RESOLVE_CROSS_STAFF)->GetN(); - const bool hasKeySig = ((m_keySigForStaffN.count(staffN) > 0) || (m_keySigForStaffN.count(-1) > 0)); + const bool hasKeySig = m_keySigForStaffN.contains(staffN) || m_keySigForStaffN.contains(-1); note->UpdateFromTransPitch(pitch, hasKeySig); return FUNCTOR_SIBLINGS; @@ -329,7 +329,7 @@ FunctorCode TransposeToSoundingPitchFunctor::VisitScoreDef(ScoreDef *scoreDef) FunctorCode TransposeToSoundingPitchFunctor::VisitScoreDefEnd(ScoreDef *scoreDef) { - const bool hasScoreDefKeySig = (m_keySigForStaffN.count(-1) > 0); + const bool hasScoreDefKeySig = m_keySigForStaffN.contains(-1); if (hasScoreDefKeySig) { bool showWarning = false; // Check if some staves are untransposed @@ -389,7 +389,7 @@ FunctorCode TransposeToSoundingPitchFunctor::VisitStaffDef(StaffDef *staffDef) void TransposeToSoundingPitchFunctor::UpdateTranspositionFromStaffN(const AttNInteger *staffN) { int transposeInterval = 0; - if (staffN->HasN() && (m_transposeIntervalForStaffN.count(staffN->GetN()) > 0)) { + if (staffN->HasN() && m_transposeIntervalForStaffN.contains(staffN->GetN())) { transposeInterval = m_transposeIntervalForStaffN.at(staffN->GetN()); } m_transposer->SetTransposition(transposeInterval); diff --git a/src/verticalaligner.cpp b/src/verticalaligner.cpp index 60cbad6b3b7..55fc027e876 100644 --- a/src/verticalaligner.cpp +++ b/src/verticalaligner.cpp @@ -665,7 +665,7 @@ bool StaffAlignment::IsInBracketGroup(bool isFirst) const }); const int currentN = this->m_staff->GetN(); - if (staffNs.count(currentN)) { + if (staffNs.contains(currentN)) { if ((isFirst && (*staffNs.begin() == currentN)) || (!isFirst && (*staffNs.rbegin() == currentN))) return true; } diff --git a/src/view_beam.cpp b/src/view_beam.cpp index 34d04de9f06..046e24e190e 100644 --- a/src/view_beam.cpp +++ b/src/view_beam.cpp @@ -150,9 +150,9 @@ void View::DrawFTremSegment(DeviceContext *dc, Staff *staff, FTrem *fTrem) // We look only at the first one for the duration since both are expected to be the same AttDurationLog *durationElement = dynamic_cast(firstElement->m_element); if (!durationElement) return; - const int dur = durationElement->GetDur(); + const data_DURATION dur = durationElement->GetDur(); - if (dur > DUR_1) { + if (dur > DURATION_1) { // Adjust the x position of the first and last element for taking into account the stem width firstElement->m_x -= (m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)) / 2; secondElement->m_x += (m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize)) / 2; @@ -177,7 +177,7 @@ void View::DrawFTremSegment(DeviceContext *dc, Staff *staff, FTrem *fTrem) int space = m_doc->GetDrawingBeamWidth(staff->m_drawingStaffSize, fTrem->m_cueSize); // for non-stem notes the bar should be shortened - if (dur < DUR_2) { + if (dur < DURATION_2) { if (fTrem->m_drawingPlace == BEAMPLACE_below) x1 += 2 * space; y1 += 2 * space * fTrem->m_beamSegment.m_beamSlope; if (fTrem->m_drawingPlace == BEAMPLACE_above) x2 -= 2 * space; @@ -186,7 +186,7 @@ void View::DrawFTremSegment(DeviceContext *dc, Staff *staff, FTrem *fTrem) fullBars = allBars; floatingBars = 0; } - else if ((dur > DUR_2) && !floatingBars) { + else if ((dur > DURATION_2) && !floatingBars) { fullBars = dur - 4; floatingBars = allBars - fullBars; } @@ -289,12 +289,12 @@ void View::DrawBeamSegment( } int noteCount = (int)noteIndexes.size(); - int durRef = DUR_8; - int durRef2 = DUR_16; + data_DURATION durRef = DURATION_8; + data_DURATION durRef2 = DURATION_16; if (staff->IsTabLuteFrench() || staff->IsTabLuteItalian()) { - durRef = DUR_4; - durRef2 = DUR_8; + durRef = DURATION_4; + durRef2 = DURATION_8; } int barY = 0; diff --git a/src/view_control.cpp b/src/view_control.cpp index 9a0065f0ce9..538acc581cf 100644 --- a/src/view_control.cpp +++ b/src/view_control.cpp @@ -305,13 +305,13 @@ void View::DrawTimeSpanningElement(DeviceContext *dc, Object *element, System *s bool isFirst = true; for (Staff *staff : staffList) { - // TimeSpanning element are not necessary floating elements (e.g., syl) - we have a bounding box only for them + // TimeSpanning elements are not necessary floating elements (e.g., syl) - we have a bounding box only for them if (element->IsControlElement()) { if (element->Is({ PHRASE, SLUR })) { if (this->GetSlurHandling() == SlurHandling::Ignore) break; Slur *slur = vrv_cast(element); assert(slur); - staff = slur->CalculateExtremalStaff(staff, x1, x2); + staff = slur->CalculatePrincipalStaff(staff, x1, x2); } // Create the floating positioner @@ -448,11 +448,6 @@ void View::DrawBracketSpan( assert(bracketSpan->GetStart()); assert(bracketSpan->GetEnd()); - if (!bracketSpan->HasFunc()) { - // we cannot draw a bracketSpan that has no func - return; - } - const int y = bracketSpan->GetDrawingY(); if (graphic) { @@ -1269,8 +1264,8 @@ void View::DrawSylConnector( } // We are in the system of the last note - draw the connector from the beginning of the system else if (spanningType == SPANNING_END) { - // If we do not want to show hyphens at the start of a system and the end is at time 0.0 - if (m_options->m_lyricNoStartHyphen.GetValue() && (syl->GetEnd()->GetAlignment()->GetTime() == 0.0)) { + // If we do not want to show hyphens at the start of a system and the end is at time 0 + if (m_options->m_lyricNoStartHyphen.GetValue() && (syl->GetEnd()->GetAlignment()->GetTime() == 0)) { // Return but only if the end is in the first measure of the system... Measure *measure = vrv_cast(syl->GetEnd()->GetFirstAncestor(MEASURE)); assert(measure); diff --git a/src/view_element.cpp b/src/view_element.cpp index 325723616c7..efa5fd74b63 100644 --- a/src/view_element.cpp +++ b/src/view_element.cpp @@ -275,7 +275,7 @@ void View::DrawAccid(DeviceContext *dc, LayerElement *element, Layer *layer, Sta // look at the note position and adjust it if necessary Note *note = vrv_cast(accid->GetFirstAncestor(NOTE, MAX_ACCID_DEPTH)); if (note) { - const int drawingDur = note->GetDrawingDur(); + const data_DURATION drawingDur = note->GetDrawingDur(); int noteTop = note->GetDrawingTop(m_doc, staff->m_drawingStaffSize); int noteBottom = note->GetDrawingBottom(m_doc, staff->m_drawingStaffSize); bool onStaff = (accid->GetOnstaff() == BOOLEAN_true); @@ -285,7 +285,7 @@ void View::DrawAccid(DeviceContext *dc, LayerElement *element, Layer *layer, Sta if (accid->GetFunc() != accidLog_FUNC_edit) onStaff = (accid->GetOnstaff() != BOOLEAN_false); const int verticalCenter = staffTop - (staff->m_drawingLines - 1) * unit; const data_STEMDIRECTION stemDir = this->GetMensuralStemDir(layer, note, verticalCenter); - if ((drawingDur > DUR_1) || (drawingDur < DUR_BR)) { + if ((drawingDur > DURATION_1) || (drawingDur < DURATION_breve)) { if (stemDir == STEMDIRECTION_up) { noteTop = note->GetDrawingY() + unit * STANDARD_STEMLENGTH; noteBottom -= unit; @@ -600,7 +600,7 @@ void View::DrawChordCluster(DeviceContext *dc, Chord *chord, Layer *layer, Staff dc->StartCustomGraphic("notehead"); - if (chord->GetActualDur() < DUR_4) { + if (chord->GetActualDur() < DURATION_4) { const int line = unit / 2; this->DrawNotFilledRectangle(dc, x + line / 2, y1 - line / 2, x + width - line / 2, y2 + line / 2, line, 0); } @@ -1165,18 +1165,16 @@ void View::DrawMRest(DeviceContext *dc, LayerElement *element, Layer *layer, Sta const bool drawingCueSize = mRest->GetDrawingCueSize(); int x = mRest->GetDrawingX(); - int y = (measure->m_measureAligner.GetMaxTime() >= (DUR_MAX * 2)) - ? element->GetDrawingY() - m_doc->GetDrawingDoubleUnit(staffSize) - : element->GetDrawingY(); - char32_t rest - = (measure->m_measureAligner.GetMaxTime() >= (DUR_MAX * 2)) ? SMUFL_E4E2_restDoubleWhole : SMUFL_E4E3_restWhole; + const bool isDouble = (measure->m_measureAligner.GetMaxTime() >= Fraction(2, 1)); + int y = isDouble ? element->GetDrawingY() - m_doc->GetDrawingDoubleUnit(staffSize) : element->GetDrawingY(); + char32_t rest = isDouble ? SMUFL_E4E2_restDoubleWhole : SMUFL_E4E3_restWhole; x -= m_doc->GetGlyphWidth(rest, staffSize, drawingCueSize) / 2; this->DrawSmuflCode(dc, x, y, rest, staffSize, drawingCueSize); // single legder line for whole rest glyphs - if ((measure->m_measureAligner.GetMaxTime() < (DUR_MAX * 2)) + if ((measure->m_measureAligner.GetMaxTime() < Fraction(DURATION_1)) && (y > staff->GetDrawingY() || y < staff->GetDrawingY() - (staff->m_drawingLines - 1) * m_doc->GetDrawingDoubleUnit(staffSize))) { const int width = m_doc->GetGlyphWidth(rest, staffSize, drawingCueSize); @@ -1454,24 +1452,24 @@ void View::DrawNote(DeviceContext *dc, LayerElement *element, Layer *layer, Staf if (!(note->GetHeadVisible() == BOOLEAN_false)) { /************** Noteheads: **************/ - int drawingDur = note->GetDrawingDur(); - if (drawingDur == DUR_NONE) { + data_DURATION drawingDur = note->GetDrawingDur(); + if (drawingDur == DURATION_NONE) { if (note->IsInBeam() && !dc->Is(BBOX_DEVICE_CONTEXT)) { LogWarning("Missing duration for note '%s' in beam", note->GetID().c_str()); } - drawingDur = DUR_4; + drawingDur = DURATION_4; } - if (drawingDur < DUR_BR) { + if (drawingDur < DURATION_breve) { this->DrawMaximaToBrevis(dc, noteY, element, layer, staff); } else { // Whole notes char32_t fontNo; if (note->GetColored() == BOOLEAN_true) { - if (DUR_1 == drawingDur) { + if (DURATION_1 == drawingDur) { fontNo = SMUFL_E0FA_noteheadWholeFilled; } - else if (DUR_2 == drawingDur) { + else if (DURATION_2 == drawingDur) { fontNo = SMUFL_E0FB_noteheadHalfFilled; } else { @@ -1539,12 +1537,12 @@ void View::DrawRest(DeviceContext *dc, LayerElement *element, Layer *layer, Staf const bool drawingCueSize = rest->GetDrawingCueSize(); const int staffSize = staff->GetDrawingStaffNotationSize(); - int drawingDur = rest->GetActualDur(); - if (drawingDur == DUR_NONE) { + data_DURATION drawingDur = rest->GetActualDur(); + if (drawingDur == DURATION_NONE) { if (!dc->Is(BBOX_DEVICE_CONTEXT)) { LogWarning("Missing duration for rest '%s'", rest->GetID().c_str()); } - drawingDur = DUR_4; + drawingDur = DURATION_4; } const char32_t drawingGlyph = rest->GetRestGlyph(drawingDur); @@ -1553,7 +1551,7 @@ void View::DrawRest(DeviceContext *dc, LayerElement *element, Layer *layer, Staf this->DrawSmuflCode(dc, x, y, drawingGlyph, staffSize, drawingCueSize); - if ((drawingDur == DUR_1 || drawingDur == DUR_2 || drawingDur == DUR_BR)) { + if ((drawingDur == DURATION_1 || drawingDur == DURATION_2 || drawingDur == DURATION_breve)) { const int width = m_doc->GetGlyphWidth(drawingGlyph, staffSize, drawingCueSize); int ledgerLineThickness = m_doc->GetOptions()->m_ledgerLineThickness.GetValue() * m_doc->GetDrawingUnit(staffSize); @@ -1569,14 +1567,14 @@ void View::DrawRest(DeviceContext *dc, LayerElement *element, Layer *layer, Staf dc->StartCustomGraphic("ledgerLines"); // single legder line for half and whole rests - if ((drawingDur == DUR_1 || drawingDur == DUR_2) && (y > topMargin || y < bottomMargin)) { + if ((drawingDur == DURATION_1 || drawingDur == DURATION_2) && (y > topMargin || y < bottomMargin)) { dc->DeactivateGraphicX(); this->DrawHorizontalLine( dc, x - ledgerLineExtension, x + width + ledgerLineExtension, y, ledgerLineThickness); dc->ReactivateGraphic(); } // double ledger line for breve rests - else if (drawingDur == DUR_BR && (y >= topMargin || y <= bottomMargin)) { + else if (drawingDur == DURATION_breve && (y >= topMargin || y <= bottomMargin)) { const int height = m_doc->GetGlyphHeight(drawingGlyph, staffSize, drawingCueSize); dc->DeactivateGraphicX(); if (y != topMargin) { @@ -1623,7 +1621,7 @@ void View::DrawStem(DeviceContext *dc, LayerElement *element, Layer *layer, Staf // We check if this belongs to a mensural note Note *parent = vrv_cast(stem->GetFirstAncestor(NOTE)); if (parent && parent->IsMensuralDur()) { - if (parent->GetDrawingDur() > DUR_1) { + if (parent->GetDrawingDur() > DURATION_1) { /************** Stem/notehead direction: **************/ const int staffCenter = staff->GetDrawingY() - m_doc->GetDrawingUnit(staff->m_drawingStaffSize) * (staff->m_drawingLines - 1); @@ -1717,7 +1715,8 @@ void View::DrawStemMod(DeviceContext *dc, LayerElement *element, Staff *staff) // calculate position for the stem mod const int y = note->GetDrawingY() + stemRelY; - const int x = (drawingDur <= DUR_1) ? childElement->GetDrawingX() + childElement->GetDrawingRadius(m_doc) : stemX; + const int x + = (drawingDur <= DURATION_1) ? childElement->GetDrawingX() + childElement->GetDrawingRadius(m_doc) : stemX; if ((code != SMUFL_E645_vocalSprechgesang) || !element->Is(BTREM)) { int adjust = 0; diff --git a/src/view_mensural.cpp b/src/view_mensural.cpp index 2423f321eaf..69735201159 100644 --- a/src/view_mensural.cpp +++ b/src/view_mensural.cpp @@ -50,7 +50,7 @@ void View::DrawMensuralNote(DeviceContext *dc, LayerElement *element, Layer *lay const int yNote = element->GetDrawingY(); const int xNote = element->GetDrawingX(); - const int drawingDur = note->GetDrawingDur(); + const data_DURATION drawingDur = note->GetDrawingDur(); /************** Noteheads: **************/ @@ -58,7 +58,7 @@ void View::DrawMensuralNote(DeviceContext *dc, LayerElement *element, Layer *lay if (note->IsInLigature() && !m_options->m_ligatureAsBracket.GetValue()) { this->DrawLigatureNote(dc, element, layer, staff); } - else if (drawingDur < DUR_1) { + else if (drawingDur < DURATION_1) { this->DrawMaximaToBrevis(dc, yNote, element, layer, staff); } // Semibrevis and shorter @@ -85,7 +85,7 @@ void View::DrawMensur(DeviceContext *dc, LayerElement *element, Layer *layer, St Mensur *mensur = vrv_cast(element); assert(mensur); - if (!mensur->HasSign()) { + if (!mensur->HasSign() && !mensur->HasNum()) { // only react to visual attributes return; } @@ -161,7 +161,7 @@ void View::DrawMensuralStem(DeviceContext *dc, Note *note, Staff *staff, data_ST assert(note); const int staffSize = staff->m_drawingStaffSize; - const int drawingDur = note->GetDrawingDur(); + const data_DURATION drawingDur = note->GetDrawingDur(); const int radius = note->GetDrawingRadius(m_doc); // Cue size is currently disabled const bool drawingCueSize = false; @@ -169,7 +169,7 @@ void View::DrawMensuralStem(DeviceContext *dc, Note *note, Staff *staff, data_ST /* In black notation, the semiminima gets one flag; in white notation, it gets none. In both cases, as in CWMN, each shorter duration gets one additional flag. */ - const int nbFlags = (mensural_black ? drawingDur - DUR_2 : drawingDur - DUR_4); + const int nbFlags = (mensural_black ? drawingDur - DURATION_2 : drawingDur - DURATION_4); // SMuFL's mensural stems are not centered const int halfStemWidth @@ -218,7 +218,7 @@ void View::DrawMaximaToBrevis(DeviceContext *dc, int y, LayerElement *element, L const int staffSize = staff->m_drawingStaffSize; int shape = LIGATURE_DEFAULT; - if (note->GetActualDur() != DUR_BR) { + if (note->GetActualDur() != DURATION_breve) { bool up = false; // Mensural notes have no Stem child - rely on the MEI @stem.dir if (note->GetStemDir() != STEMDIRECTION_NONE) { @@ -263,7 +263,7 @@ void View::DrawMaximaToBrevis(DeviceContext *dc, int y, LayerElement *element, L // serifs and / or stem this->DrawFilledRectangle(dc, topLeft.x, sides[0], topLeft.x + stemWidth, sides[1]); - if (note->GetActualDur() != DUR_BR) { + if (note->GetActualDur() != DURATION_breve) { // Right side is a stem - end the notehead first dc->EndCustomGraphic(); dc->StartCustomGraphic("stem"); @@ -449,7 +449,7 @@ void View::DrawDotInLigature(DeviceContext *dc, LayerElement *element, Layer *la isVerticalDot = !isLast && (shape & LIGATURE_OBLIQUE); } else { - if (note->GetActualDur() == DUR_1) shiftMultiplier = 3.5; + if (note->GetActualDur() == DURATION_1) shiftMultiplier = 3.5; } int y = note->GetDrawingY(); @@ -484,7 +484,7 @@ void View::DrawPlica(DeviceContext *dc, LayerElement *element, Layer *layer, Sta const bool isMensuralBlack = (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black); const int stemWidth = m_doc->GetDrawingStemWidth(staff->m_drawingStaffSize); - const bool isLonga = (note->GetActualDur() == DUR_LG); + const bool isLonga = (note->GetActualDur() == DURATION_long); const bool up = (plica->GetDir() == STEMDIRECTION_basic_up); int shape = LIGATURE_DEFAULT; @@ -562,39 +562,12 @@ void View::DrawProportFigures(DeviceContext *dc, int x, int y, int num, int numB void View::DrawProport(DeviceContext *dc, LayerElement *element, Layer *layer, Staff *staff, Measure *measure) { + assert(element); assert(layer); assert(staff); - assert(dynamic_cast(element)); // Element must be a Proport" - - int x1, x2, y1, y2; - - Proport *proport = dynamic_cast(element); dc->StartGraphic(element, "", element->GetID()); - int y = staff->GetDrawingY() - (m_doc->GetDrawingUnit(staff->m_drawingStaffSize) * 4); - int x = element->GetDrawingX(); - - x1 = x + 120; - x2 = x1 + 150; // ??TEST: JUST DRAW AN ARBITRARY RECTANGLE - y1 = y; - y2 = y + 50 + (50 * proport->GetNum()); - // DrawFilledRectangle(dc,x1,y1,x2,y2); - this->DrawPartFilledRectangle(dc, x1, y1, x2, y2, 0); - - if (proport->HasNum()) { - x = element->GetDrawingX(); - // if (proport->GetSign() || proport->HasTempus()) // ??WHAT SHOULD THIS BE? - { - x += m_doc->GetDrawingUnit(staff->m_drawingStaffSize) - * 5; // step forward because we have a sign or a meter symbol - } - int numbase = proport->HasNumbase() ? proport->GetNumbase() : 0; - this->DrawProportFigures(dc, x, - staff->GetDrawingY() - m_doc->GetDrawingUnit(staff->m_drawingStaffSize) * (staff->m_drawingLines - 1), - proport->GetNum(), numbase, staff); - } - dc->EndGraphic(element, this); } @@ -710,7 +683,7 @@ void View::CalcObliquePoints(Note *note1, Note *note2, Staff *staff, Point point data_STEMDIRECTION View::GetMensuralStemDir(Layer *layer, Note *note, int verticalCenter) { // constants - const int drawingDur = note->GetDrawingDur(); + const data_DURATION drawingDur = note->GetDrawingDur(); const int yNote = note->GetDrawingY(); data_STEMDIRECTION layerStemDir; @@ -722,7 +695,7 @@ data_STEMDIRECTION View::GetMensuralStemDir(Layer *layer, Note *note, int vertic stemDir = layerStemDir; } else { - if (drawingDur < DUR_1) { + if (drawingDur < DURATION_1) { stemDir = STEMDIRECTION_down; } else { diff --git a/src/view_tab.cpp b/src/view_tab.cpp index dd28a98fe09..6fa926578e3 100644 --- a/src/view_tab.cpp +++ b/src/view_tab.cpp @@ -177,13 +177,13 @@ void View::DrawTabDurSym(DeviceContext *dc, LayerElement *element, Layer *layer, if (!tabGrp->IsInBeam() && !staff->IsTabGuitar()) { int symc = 0; switch (drawingDur) { - case DUR_1: symc = SMUFL_EBA6_luteDurationDoubleWhole; break; // 1 back flag */ - case DUR_2: symc = SMUFL_EBA7_luteDurationWhole; break; // 0 flags - case DUR_4: symc = SMUFL_EBA8_luteDurationHalf; break; // 1 flag - case DUR_8: symc = SMUFL_EBA9_luteDurationQuarter; break; // 2 flags - case DUR_16: symc = SMUFL_EBAA_luteDuration8th; break; // 3 flags - case DUR_32: symc = SMUFL_EBAB_luteDuration16th; break; // 4 flags - case DUR_64: symc = SMUFL_EBAC_luteDuration32nd; break; // 5 flags + case DURATION_1: symc = SMUFL_EBA6_luteDurationDoubleWhole; break; // 1 back flag */ + case DURATION_2: symc = SMUFL_EBA7_luteDurationWhole; break; // 0 flags + case DURATION_4: symc = SMUFL_EBA8_luteDurationHalf; break; // 1 flag + case DURATION_8: symc = SMUFL_EBA9_luteDurationQuarter; break; // 2 flags + case DURATION_16: symc = SMUFL_EBAA_luteDuration8th; break; // 3 flags + case DURATION_32: symc = SMUFL_EBAB_luteDuration16th; break; // 4 flags + case DURATION_64: symc = SMUFL_EBAC_luteDuration32nd; break; // 5 flags default: symc = SMUFL_EBA9_luteDurationQuarter; // 2 flags } @@ -205,9 +205,11 @@ void View::DrawTabDurSym(DeviceContext *dc, LayerElement *element, Layer *layer, } else { // Vertical: the more flags the lower the dots - const int durfactor = DUR_64 - std::min(std::max(drawingDur, DUR_2), DUR_64) + 1; - static_assert(DUR_64 - DUR_2 + 1 == 6); - static_assert(DUR_64 - DUR_64 + 1 == 1); + int durOffset = (drawingDur > DURATION_2) ? drawingDur : DURATION_2; + durOffset = (durOffset < DURATION_64) ? durOffset : DURATION_64; + const int durfactor = DURATION_64 - durOffset + 1; + static_assert(DURATION_64 - DURATION_2 + 1 == 6); + static_assert(DURATION_64 - DURATION_64 + 1 == 1); y += m_doc->GetDrawingUnit(glyphSize) * stemDirFactor * durfactor * 2 / 5; diff --git a/src/vrv.cpp b/src/vrv.cpp index 764e29370bf..2378a542dd8 100644 --- a/src/vrv.cpp +++ b/src/vrv.cpp @@ -11,7 +11,6 @@ #include #include -#include #include #include #include @@ -264,14 +263,125 @@ std::string ExtractIDFragment(std::string refID) std::string UTF32to8(const std::u32string &in) { + std::string out; + for (auto cp : in) { + if (cp < 0x80) { // One byte + out.push_back(static_cast(cp)); + } + else if (cp < 0x800) { // Two bytes + out.push_back(static_cast((cp >> 6) | 0xC0)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + else if (cp < 0x10000) { // Three bytes + out.push_back(static_cast((cp >> 12) | 0xE0)); + out.push_back(static_cast(((cp >> 6) & 0x3F) | 0x80)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + else { // Four bytes + out.push_back(static_cast((cp >> 18) | 0xF0)); + out.push_back(static_cast(((cp >> 12) & 0x3F) | 0x80)); + out.push_back(static_cast(((cp >> 6) & 0x3F) | 0x80)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + } + return out; + + // deprecated code + /* std::wstring_convert, char32_t> strCnv; return strCnv.to_bytes(in); + */ } std::u32string UTF8to32(const std::string &in) { + std::u32string out; + for (size_t i = 0; i < in.size();) { + uint32_t cp = in[i] & 0xFF; + if (cp <= 0x7F) { // One byte + out.push_back(cp); + ++i; + } + else if (cp <= 0xDF) { // Two bytes + cp = ((cp & 0x1F) << 6) | (in[i + 1] & 0x3F); + out.push_back(cp); + i += 2; + } + else if (cp <= 0xEF) { // Three bytes + cp = ((cp & 0x0F) << 12) | ((in[i + 1] & 0x3F) << 6) | (in[i + 2] & 0x3F); + out.push_back(cp); + i += 3; + } + else { // Four bytes + cp = ((cp & 0x07) << 18) | ((in[i + 1] & 0x3F) << 12) | ((in[i + 2] & 0x3F) << 6) | (in[i + 3] & 0x3F); + out.push_back(cp); + i += 4; + } + } + return out; + + // deprecated code + /* std::wstring_convert, char32_t> strCnv; return strCnv.from_bytes(in); + */ +} + +std::string UTF16to8(const std::u16string &in) +{ + std::string out; + auto it = in.begin(); + + while (it != in.end()) { + uint32_t cp; // Code point + + // Read the first UTF-16 unit + uint16_t lead = *it++; + + // If it's a high surrogate, read the next unit to form a full code point + if (lead >= 0xD800 && lead <= 0xDBFF) { + // Make sure there's a trailing surrogate + if (it != in.end()) { + uint16_t trail = *it++; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + // Combine lead and trail to form a full code point + cp = ((lead - 0xD800) << 10) + (trail - 0xDC00) + 0x10000; + } + else { + throw std::runtime_error("Invalid UTF-16 sequence"); + } + } + else { + throw std::runtime_error("Incomplete UTF-16 sequence"); + } + } + else { + // It's a single UTF-16 unit, treat as a single code point + cp = lead; + } + + // Convert code point to UTF-8 + if (cp < 0x80) { // One byte + out.push_back(static_cast(cp)); + } + else if (cp < 0x800) { // Two bytes + out.push_back(static_cast((cp >> 6) | 0xC0)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + else if (cp < 0x10000) { // Three bytes + out.push_back(static_cast((cp >> 12) | 0xE0)); + out.push_back(static_cast(((cp >> 6) & 0x3F) | 0x80)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + else { // Four bytes + out.push_back(static_cast((cp >> 18) | 0xF0)); + out.push_back(static_cast(((cp >> 12) & 0x3F) | 0x80)); + out.push_back(static_cast(((cp >> 6) & 0x3F) | 0x80)); + out.push_back(static_cast((cp & 0x3F) | 0x80)); + } + } + + return out; } std::string GetFileVersion(int vmaj, int vmin, int vrev) @@ -349,6 +459,16 @@ std::string ToCamelCase(const std::string &s) return result; } +data_DURATION DurationMin(data_DURATION dur1, data_DURATION dur2) +{ + return (dur1 < dur2) ? dur1 : dur2; +} + +data_DURATION DurationMax(data_DURATION dur1, data_DURATION dur2) +{ + return (dur1 > dur2) ? dur1 : dur2; +} + //---------------------------------------------------------------------------- // Notation type checks //---------------------------------------------------------------------------- diff --git a/tools/main.cpp b/tools/main.cpp index a57880eccb3..eee89a066e1 100644 --- a/tools/main.cpp +++ b/tools/main.cpp @@ -447,9 +447,9 @@ int main(int argc, char **argv) outfile += ".json"; if (std_output) { std::string output; - std::cout << toolkit.RenderToTimemap(); + std::cout << toolkit.RenderToTimemap(options->m_timemapOptions.GetValue()); } - else if (!toolkit.RenderToTimemapFile(outfile)) { + else if (!toolkit.RenderToTimemapFile(outfile, options->m_timemapOptions.GetValue())) { std::cerr << "Unable to write timemap to " << outfile << "." << std::endl; exit(1); }