(node: XmlNode)
| 1688 | } |
| 1689 | |
| 1690 | private _parseBeat(node: XmlNode): void { |
| 1691 | const beat: Beat = new Beat(); |
| 1692 | const beatId: string = node.getAttribute('id'); |
| 1693 | for (const c of node.childElements()) { |
| 1694 | switch (c.localName) { |
| 1695 | case 'Notes': |
| 1696 | this._notesOfBeat.set(beatId, GpifParser._splitSafe(c.innerText)); |
| 1697 | break; |
| 1698 | case 'Rhythm': |
| 1699 | this._rhythmOfBeat.set(beatId, c.getAttribute('ref')); |
| 1700 | break; |
| 1701 | case 'Fadding': |
| 1702 | switch (c.innerText) { |
| 1703 | case 'FadeIn': |
| 1704 | beat.fade = FadeType.FadeIn; |
| 1705 | break; |
| 1706 | case 'FadeOut': |
| 1707 | beat.fade = FadeType.FadeOut; |
| 1708 | break; |
| 1709 | case 'VolumeSwell': |
| 1710 | beat.fade = FadeType.VolumeSwell; |
| 1711 | break; |
| 1712 | } |
| 1713 | break; |
| 1714 | case 'Tremolo': |
| 1715 | const tremolo = new TremoloPickingEffect(); |
| 1716 | beat.tremoloPicking = tremolo; |
| 1717 | switch (c.innerText) { |
| 1718 | case '1/2': |
| 1719 | tremolo.marks = 1; |
| 1720 | break; |
| 1721 | case '1/4': |
| 1722 | tremolo.marks = 2; |
| 1723 | break; |
| 1724 | case '1/8': |
| 1725 | tremolo.marks = 3; |
| 1726 | break; |
| 1727 | } |
| 1728 | break; |
| 1729 | case 'Chord': |
| 1730 | beat.chordId = c.innerText; |
| 1731 | break; |
| 1732 | case 'Hairpin': |
| 1733 | switch (c.innerText) { |
| 1734 | case 'Crescendo': |
| 1735 | beat.crescendo = CrescendoType.Crescendo; |
| 1736 | break; |
| 1737 | case 'Decrescendo': |
| 1738 | beat.crescendo = CrescendoType.Decrescendo; |
| 1739 | break; |
| 1740 | } |
| 1741 | break; |
| 1742 | case 'Arpeggio': |
| 1743 | if (c.innerText === 'Up') { |
| 1744 | beat.brushType = BrushType.ArpeggioUp; |
| 1745 | } else { |
| 1746 | beat.brushType = BrushType.ArpeggioDown; |
| 1747 | } |
no test coverage detected