VexFlowMeasure.ts 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import {MusicSheetCalculator} from "../../../../src/MusicalScore/Graphical/MusicSheetCalculator";
  2. import {VexFlowGraphicalSymbolFactory} from "../../../../src/MusicalScore/Graphical/VexFlow/VexFlowGraphicalSymbolFactory";
  3. import {IGraphicalSymbolFactory} from "../../../../src/MusicalScore/Interfaces/IGraphicalSymbolFactory";
  4. import {GraphicalMusicSheet} from "../../../../src/MusicalScore/Graphical/GraphicalMusicSheet";
  5. import {IXmlElement} from "../../../../src/Common/FileIO/Xml";
  6. import {MusicSheet} from "../../../../src/MusicalScore/MusicSheet";
  7. import {MusicSheetReader} from "../../../../src/MusicalScore/ScoreIO/MusicSheetReader";
  8. import {VexFlowMusicSheetCalculator} from "../../../../src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetCalculator";
  9. import {SourceMeasure} from "../../../../src/MusicalScore/VoiceData/SourceMeasure";
  10. import {StaffMeasure} from "../../../../src/MusicalScore/Graphical/StaffMeasure";
  11. describe("VexFlow Measure Test", () => {
  12. //it("Read title and composer", (done: MochaDone) => {
  13. // chai.expect(sheet.TitleString).to.equal("Sonatina Op.36 No 1 Teil 1 Allegro");
  14. // chai.expect(sheet.ComposerString).to.equal("Muzio Clementi");
  15. // done();
  16. //});
  17. //
  18. //it("Measures", (done: MochaDone) => {
  19. // chai.expect(sheet.SourceMeasures.length).to.equal(38);
  20. // console.log("First Measure: ", sheet.SourceMeasures[0]);
  21. // done();
  22. //});
  23. //
  24. //it("Instruments", (done: MochaDone) => {
  25. // chai.expect(reader.CompleteNumberOfStaves).to.equal(2);
  26. // chai.expect(sheet.Instruments.length).to.equal(2);
  27. // chai.expect(sheet.InstrumentalGroups.length).to.equal(2);
  28. // chai.expect(sheet.Instruments[0].Name).to.equal("Piano (right)");
  29. // chai.expect(sheet.Instruments[1].Name).to.equal("Piano (left)");
  30. // done();
  31. //});
  32. //
  33. //it("Notes", (done: MochaDone) => {
  34. // // Staff Entries on first measure
  35. //
  36. // // chai.expect(sheet.SourceMeasures[0].VerticalSourceStaffEntryContainers[0].StaffEntries.length).to.equal(4);
  37. // done();
  38. //});
  39. it("Full Music Sheet Reading", (done: MochaDone) => {
  40. //let factory: IGraphicalSymbolFactory = new VexFlowGraphicalSymbolFactory();
  41. let calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator();
  42. let path: string = "test/data/MuzioClementi_SonatinaOpus36No1_Part1.xml";
  43. let doc: Document = ((window as any).__xml__)[path];
  44. chai.expect(doc).to.not.be.undefined;
  45. let score: IXmlElement = new IXmlElement(doc.getElementsByTagName("score-partwise")[0]);
  46. let reader: MusicSheetReader = new MusicSheetReader();
  47. let sheet: MusicSheet = reader.createMusicSheet(score, path);
  48. let gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  49. console.log(gms);
  50. done();
  51. });
  52. it("Simple Measure", (done: MochaDone) => {
  53. let sheet: MusicSheet = new MusicSheet();
  54. let measure: SourceMeasure = new SourceMeasure(1);
  55. sheet.addMeasure(measure);
  56. let calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator();
  57. let gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  58. chai.expect(gms.MeasureList.length).to.equal(1);
  59. chai.expect(gms.MeasureList[0].length).to.equal(1);
  60. let gm: StaffMeasure = gms.MeasureList[0][0];
  61. console.log(gm);
  62. done();
  63. });
  64. it("Empty Measure", (done: MochaDone) => {
  65. let sheet: MusicSheet = new MusicSheet();
  66. let measure: SourceMeasure = new SourceMeasure(1);
  67. sheet.addMeasure(measure);
  68. let calc: MusicSheetCalculator = new VexFlowMusicSheetCalculator();
  69. let gms: GraphicalMusicSheet = new GraphicalMusicSheet(sheet, calc);
  70. chai.expect(gms.MeasureList.length).to.equal(1);
  71. chai.expect(gms.MeasureList[0].length).to.equal(0);
  72. done();
  73. });
  74. });