|
@@ -0,0 +1,167 @@
|
|
|
+<!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,
|
|
|
+ drawTitle: false,
|
|
|
+ drawPartNames: false,
|
|
|
+ drawLyricist: false,
|
|
|
+ followCursor: false,
|
|
|
+ autoResize: true,
|
|
|
+ drawSubtitle: false,
|
|
|
+ drawTitle: false,
|
|
|
+ autoBeam: true,
|
|
|
+ drawMetronomeMarks: false,
|
|
|
+ drawMeasureNumbers: false,
|
|
|
+ drawComposer: false,
|
|
|
+ autoGenerateMutipleRestMeasuresFromRestMeasures: true,
|
|
|
+ autoGenerateMultipleRestMeasuresFromRestMeasures: true,
|
|
|
+ });
|
|
|
+ osmd.EngravingRules.RenderMultipleRestMeasures = true;
|
|
|
+ osmd.EngravingRules.CompactMode = true;
|
|
|
+ osmd.EngravingRules.PageTopMarginNarrow = 6.0; // for compact mode
|
|
|
+ osmd.EngravingRules.PageBottomMargin = 15.0;
|
|
|
+ osmd.EngravingRules.PageLeftMargin = 1.0
|
|
|
+ osmd.EngravingRules.PageRightMargin = 1.0
|
|
|
+
|
|
|
+ // console.log('osmd.EngravingRules', 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, isComberRender) {
|
|
|
+ osmd
|
|
|
+ .load(xmlUrl)
|
|
|
+ .then(
|
|
|
+ function () {
|
|
|
+ // 是否合并显示
|
|
|
+ if (!isComberRender) {
|
|
|
+ for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
|
|
|
+ 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>
|