index.html 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <<<<<<< HEAD
  5. <meta charset="UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>Document</title>
  9. <script src="./opensheetmusicdisplay.min.js"></script>
  10. <style>
  11. * {
  12. margin: 0;
  13. padding: 0;
  14. }
  15. body {
  16. padding-bottom: 60px;
  17. height: 600px;
  18. overflow: hidden;
  19. }
  20. .vf-text {
  21. display: none;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div id="osmdContainer" />
  27. <script>
  28. var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay("osmdContainer");
  29. osmd.setOptions({
  30. backend: "svg",
  31. drawTitle: false,
  32. // drawingParameters: "compacttight" // don't display title, composer etc., smaller margins
  33. });
  34. function renderXml(xmlUrl, partIndex) {
  35. osmd
  36. .load(xmlUrl)
  37. .then(
  38. function () {
  39. for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
  40. // console.log(osmd.Sheet.Instruments[i].Name);
  41. osmd.Sheet.Instruments[i].Visible = i === partIndex;
  42. }
  43. osmd.zoom = .5
  44. osmd.render();
  45. }
  46. );
  47. }
  48. function resetRender(partIndex) {
  49. for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
  50. // console.log(osmd.Sheet.Instruments[i].Name);
  51. osmd.Sheet.Instruments[i].Visible = i === partIndex;
  52. }
  53. osmd.render();
  54. }
  55. </script>
  56. </body>
  57. </html>
  58. =======
  59. <meta charset="UTF-8">
  60. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  61. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  62. <title>Document</title>
  63. <script src="./opensheetmusicdisplay.min.js"></script>
  64. <style>
  65. * {
  66. margin: 0;
  67. padding: 0;
  68. }
  69. body {
  70. padding-bottom: 60px;
  71. height: 600px;
  72. overflow: hidden;
  73. }
  74. /* .vf-text {
  75. display: none;
  76. } */
  77. #cursorImg-0 {
  78. display: none;
  79. }
  80. </style>
  81. </head>
  82. <body>
  83. <div id="osmdContainer" />
  84. <script>
  85. var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay("osmdContainer");
  86. osmd.setOptions({
  87. backend: "svg",
  88. drawTitle: false,
  89. drawPartNames: false,
  90. drawLyricist: false,
  91. });
  92. // osmd.EngravingRules.RenderMultipleRestMeasures = true;
  93. // osmd.EngravingRules.CompactMode = true;
  94. // osmd.EngravingRules.PageTopMarginNarrow = 5.0; // for compact mode
  95. // osmd.EngravingRules.PageBottomMargin = 15.0;
  96. // osmd.EngravingRules.DYMusicScoreType =
  97. // state.musicRenderType === EnumMusicRenderType.staff ? "staff" : "jianpu";
  98. // // 如果为固定调,需要加入全局
  99. // if (state.musicRenderType === EnumMusicRenderType.fixedTone) {
  100. // window.sett = {
  101. // keySignature: true,
  102. // };
  103. // }
  104. // debugger
  105. // console.log('osmd.EngravingRules')
  106. // osmd.EngravingRules.StaffDistance = 1.0;
  107. // osmd.EngravingRules.BetweenStaffDistance = 1.0;
  108. // osmd.EngravingRules.MinimumStaffLineDistance = 1.0;
  109. //osmd.EngravingRules.MinSkyBottomDistBetweenStaves = 1.0; // default 1.0. this can cause collisions with slurs and dynamics sometimes
  110. osmd.EngravingRules.MinSkyBottomDistBetweenSystems = 3.0; // default 5.0
  111. // note that osmd.EngravingRules === osmd.rules, since it's passed as a reference
  112. osmd.EngravingRules.MinimumDistanceBetweenSystems = 1;
  113. // osmd.setPageFormat('794x1123')
  114. osmd.setPageFormat('650x884')
  115. function getSvgPngToSize(osmd) {
  116. if (osmd) {
  117. if (osmd.Drawer.Backends.length > 0) {
  118. var imgList = []
  119. for (var idx = 0, len = osmd.Drawer.Backends.length; idx < len; idx++) {
  120. var backend = osmd.Drawer.Backends[idx]
  121. var state = backend.ctx.state;
  122. var width = backend.ctx.width / state.scale.x;
  123. var height = backend.ctx.height / state.scale.y;
  124. var cont = new XMLSerializer().serializeToString(
  125. backend.ctx.svg
  126. )
  127. imgList.push({
  128. img: cont,
  129. width: width,
  130. height: height,
  131. })
  132. }
  133. return imgList
  134. }
  135. } else {
  136. console.log('没有OSMD')
  137. }
  138. }
  139. function render() {
  140. osmd.render();
  141. // console.log(getSvgPngToSize(osmd), 'getSvgPngToSize(osmd)')
  142. window.parent.postMessage({
  143. api: 'musicStaffRender',
  144. loading: false,
  145. osmdImg: getSvgPngToSize(osmd)
  146. }, '*');
  147. }
  148. function renderXml(xmlUrl, partIndex) {
  149. osmd
  150. .load(xmlUrl)
  151. .then(
  152. function () {
  153. for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
  154. // console.log(osmd.Sheet.Instruments[i].Name);
  155. osmd.Sheet.Instruments[i].Visible = i === partIndex;
  156. }
  157. osmd.zoom = .5
  158. render();
  159. }
  160. );
  161. }
  162. function resetRender(partIndex) {
  163. for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
  164. osmd.Sheet.Instruments[i].Visible = i === partIndex;
  165. }
  166. render();
  167. }
  168. function resetRenderPage(type, xmlUrl) {
  169. let str = 'staff'
  170. if (type === 'first') {
  171. str = 'jianpu'
  172. window.sett = {
  173. keySignature: false,
  174. };
  175. } else if (type === 'fixed') {
  176. str = 'jianpu'
  177. window.sett = {
  178. keySignature: true,
  179. };
  180. }
  181. osmd.EngravingRules.DYMusicScoreType = str
  182. // console.log(type, xmlUrl)
  183. osmd
  184. .load(xmlUrl)
  185. .then(
  186. function () {
  187. // for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
  188. // // console.log(osmd.Sheet.Instruments[i].Name);
  189. // osmd.Sheet.Instruments[i].Visible = i === partIndex;
  190. // }
  191. osmd.zoom = .5
  192. render();
  193. }
  194. );
  195. }
  196. </script>
  197. </body>
  198. </html>
  199. >>>>>>> iteration-20240618