VexFlowConverter_Clef_Test.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* eslint-disable @typescript-eslint/no-unused-expressions */
  2. import {IXmlElement} from "../../../../src/Common/FileIO/Xml";
  3. import {MusicSheet} from "../../../../src/MusicalScore/MusicSheet";
  4. import {MusicSheetReader} from "../../../../src/MusicalScore/ScoreIO/MusicSheetReader";
  5. describe("Clef Converter MusicXML to VexFlow", () => {
  6. let reader: MusicSheetReader;
  7. let parser: DOMParser;
  8. before((): void => {
  9. reader = new MusicSheetReader();
  10. parser = new DOMParser();
  11. });
  12. it("reads treble key", (done: Mocha.Done) => {
  13. getMusicSheetWithClef("G").getStaffFromIndex(0);
  14. done();
  15. });
  16. /**
  17. * Simulates loading a [[MusicSheet]] with the specified clef.
  18. *
  19. * @see https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-clef.htm
  20. */
  21. function getMusicSheetWithClef(sign: string, line?: number, clefOcatveChange?: number, additional?: string, size?: string): MusicSheet {
  22. const doc: Document = parser.parseFromString(getMusicXmlWithClef(sign, line, clefOcatveChange, additional, size), "text/xml");
  23. chai.expect(doc).to.not.be.undefined;
  24. const score: IXmlElement = new IXmlElement(doc.getElementsByTagName("score-partwise")[0]);
  25. chai.expect(score).to.not.be.undefined;
  26. return reader.createMusicSheet(score, "template.xml");
  27. }
  28. function getMusicXmlWithClef(sign: string, line?: number, clefOcatveChange?: number, additional?: string, size?: string): string {
  29. // let modeElement: string = mode ? `<mode>${mode}</mode>` : "";
  30. // let fifthsElement: string = fifths ? `<fifths>${fifths}</fifths>` : "";
  31. return `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  32. <!DOCTYPE score-partwise PUBLIC
  33. "-//Recordare//DTD MusicXML 3.0 Partwise//EN"
  34. "http://www.musicxml.org/dtds/partwise.dtd">
  35. <score-partwise version="3.0">
  36. <part-list>
  37. <score-part id="P1">
  38. <part-name>Music</part-name>
  39. </score-part>
  40. </part-list>
  41. <part id="P1">
  42. <measure number="1">
  43. <attributes>
  44. <divisions>1</divisions>
  45. <key>
  46. </key>
  47. <time>
  48. <beats>4</beats>
  49. <beat-type>4</beat-type>
  50. </time>
  51. <clef>
  52. <sign>G</sign>
  53. <line>2</line>
  54. </clef>
  55. </attributes>
  56. <note>
  57. <pitch>
  58. <step>C</step>
  59. <octave>4</octave>
  60. </pitch>
  61. <duration>4</duration>
  62. <type>whole</type>
  63. </note>
  64. </measure>
  65. </part>
  66. </score-partwise>`;
  67. }
  68. });