| describe("Decorations", function() { | |
| var abcFermata = "X:1\n" + | |
| "L:1/8\n" + | |
| "M:4/4\n" + | |
| "%%score (S A) B\n" + | |
| "K:C\n" + | |
| "[V:S]!invertedfermata!EF !invertedfermata!G2 | !invertedfermata!ef !invertedfermata!g2 |!fermata!EF !fermata!G2 | !fermata!ef !fermata!g2 ||\n" + | |
| "[V:A]!invertedfermata!A,B, !invertedfermata!C2 | !invertedfermata!cd !invertedfermata!e2 |!fermata!A,B, !fermata!C2 | !fermata!cd !fermata!e2 ||\n" + | |
| "[V:B]!invertedfermata!A,B, !invertedfermata!C2 | !invertedfermata!cd !invertedfermata!e2 |!fermata!A,B, !fermata!C2 | !fermata!cd !fermata!e2 ||\n" | |
| var expectedFermata = [ | |
| { "pitch": -1, "note": "E" }, | |
| { "pitch": 1, "note": "G" }, | |
| { "pitch": 6, "note": "e" }, | |
| { "pitch": 8, "note": "g" }, | |
| { "pitch": 14, "note": "E" }, | |
| { "pitch": 14, "note": "G" }, | |
| { "pitch": 20, "note": "e" }, | |
| { "pitch": 20, "note": "g" }, | |
| { "pitch": -11, "note": "A," }, | |
| { "pitch": -10, "note": "C" }, | |
| { "pitch": -5, "note": "c" }, | |
| { "pitch": -1, "note": "e" }, | |
| { "pitch": 14, "note": "A," }, | |
| { "pitch": 14, "note": "C" }, | |
| { "pitch": 14, "note": "c" }, | |
| { "pitch": 14, "note": "e" }, | |
| { "pitch": -5, "note": "A," }, | |
| { "pitch": -3, "note": "C" }, | |
| { "pitch": -5, "note": "c" }, | |
| { "pitch": -1, "note": "e" }, | |
| { "pitch": 14, "note": "A," }, | |
| { "pitch": 14, "note": "C" }, | |
| { "pitch": 14, "note": "c" }, | |
| { "pitch": 14, "note": "e" } | |
| ] | |
| it("fermata", function() { | |
| var visualObj = abcjs.renderAbc("paper", abcFermata, {add_classes: true}); | |
| var fermatas = [] | |
| for (var i = 0; i < visualObj[0].lines.length; i++) { | |
| var line = visualObj[0].lines[i] | |
| for (var j = 0; j < line.staffGroup.voices.length; j++) { | |
| var voice = line.staffGroup.voices[j]; | |
| for (var k = 0; k < voice.children.length; k++) { | |
| var absElem = voice.children[k] | |
| for (var ii = 0; ii < absElem.children.length; ii++) { | |
| var relElem = absElem.children[ii] | |
| if (relElem.c === 'scripts.dfermata' || relElem.c === 'scripts.ufermata') { | |
| fermatas.push({pitch: Math.round(relElem.pitch), note: relElem.parent.children[0].name}) | |
| } | |
| } | |
| } | |
| } | |
| } | |
| console.log(fermatas) | |
| chai.assert.deepStrictEqual(fermatas, expectedFermata); | |
| }) | |
| }) | |