| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title>  <script src="./opensheetmusicdisplay.min.js"></script>  <style>    * {      margin: 0;      padding: 0;    }    body {      padding-bottom: 60px;      height: 600px;      overflow: hidden;    }    /* .vf-text {      display: none;    } */    #cursorImg-0 {      display: none;    }  </style></head><body>  <div id="osmdContainer" />  <script>    var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay("osmdContainer");    osmd.setOptions({      backend: "svg",      drawTitle: false,      drawPartNames: false,      drawLyricist: false,    });    // osmd.EngravingRules.RenderMultipleRestMeasures = true;    // osmd.EngravingRules.CompactMode = true;    // osmd.EngravingRules.PageTopMarginNarrow = 5.0; // for compact mode    // osmd.EngravingRules.PageBottomMargin = 15.0;    // osmd.EngravingRules.DYMusicScoreType =    //     state.musicRenderType === EnumMusicRenderType.staff ? "staff" : "jianpu";    //   // 如果为固定调,需要加入全局    //   if (state.musicRenderType === EnumMusicRenderType.fixedTone) {    //     window.sett = {    //       keySignature: true,    //     };    //   }    // debugger    // console.log('osmd.EngravingRules')    // osmd.EngravingRules.StaffDistance = 1.0;    // osmd.EngravingRules.BetweenStaffDistance = 1.0;    // osmd.EngravingRules.MinimumStaffLineDistance = 1.0;    //osmd.EngravingRules.MinSkyBottomDistBetweenStaves = 1.0; // default 1.0. this can cause collisions with slurs and dynamics sometimes    osmd.EngravingRules.MinSkyBottomDistBetweenSystems = 3.0; // default 5.0    // note that osmd.EngravingRules === osmd.rules, since it's passed as a reference    osmd.EngravingRules.MinimumDistanceBetweenSystems = 1;    // osmd.setPageFormat('794x1123')    osmd.setPageFormat('650x884')    function getSvgPngToSize(osmd) {      if (osmd) {        if (osmd.Drawer.Backends.length > 0) {          var imgList = []          for (var idx = 0, len = osmd.Drawer.Backends.length; idx < len; idx++) {            var backend = osmd.Drawer.Backends[idx]            var state = backend.ctx.state;            var width = backend.ctx.width / state.scale.x;            var height = backend.ctx.height / state.scale.y;            var cont = new XMLSerializer().serializeToString(              backend.ctx.svg            )            imgList.push({              img: cont,              width: width,              height: height,            })          }          return imgList        }      } else {        console.log('没有OSMD')      }    }    function render() {      osmd.render();      // console.log(getSvgPngToSize(osmd), 'getSvgPngToSize(osmd)')      window.parent.postMessage({        api: 'musicStaffRender',        loading: false,        osmdImg: getSvgPngToSize(osmd)      }, '*');    }    function renderXml(xmlUrl, partIndex) {      osmd        .load(xmlUrl)        .then(          function () {            for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {              // console.log(osmd.Sheet.Instruments[i].Name);              osmd.Sheet.Instruments[i].Visible = i === partIndex;            }            osmd.zoom = .5            render();          }        );    }    function resetRender(partIndex) {      for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {        osmd.Sheet.Instruments[i].Visible = i === partIndex;      }      render();    }    function resetRenderPage(type, xmlUrl) {      let str = 'staff'      if (type === 'first') {        str = 'jianpu'        window.sett = {          keySignature: false,        };      } else if (type === 'fixed') {        str = 'jianpu'        window.sett = {          keySignature: true,        };      }      osmd.EngravingRules.DYMusicScoreType = str      // console.log(type, xmlUrl)      osmd        .load(xmlUrl)        .then(          function () {            // for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {            //   // console.log(osmd.Sheet.Instruments[i].Name);            //   osmd.Sheet.Instruments[i].Visible = i === partIndex;            // }            osmd.zoom = .5            render();          }        );    }  </script></body></html>
 |