123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <!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, type) {
- if(type) {
- 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
- }
-
- 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>
|