VexFlowMeasure.ts 3.8 KB

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