(masterBar: MasterBar, node: XmlNode)
| 1538 | } |
| 1539 | |
| 1540 | private _parseFermata(masterBar: MasterBar, node: XmlNode): void { |
| 1541 | let offset: number = 0; |
| 1542 | const fermata: Fermata = new Fermata(); |
| 1543 | for (const c of node.childElements()) { |
| 1544 | switch (c.localName) { |
| 1545 | case 'Type': |
| 1546 | switch (c.innerText) { |
| 1547 | case 'Short': |
| 1548 | fermata.type = FermataType.Short; |
| 1549 | break; |
| 1550 | case 'Medium': |
| 1551 | fermata.type = FermataType.Medium; |
| 1552 | break; |
| 1553 | case 'Long': |
| 1554 | fermata.type = FermataType.Long; |
| 1555 | break; |
| 1556 | } |
| 1557 | break; |
| 1558 | case 'Length': |
| 1559 | fermata.length = GpifParser._parseFloatSafe(c.innerText, 0); |
| 1560 | break; |
| 1561 | case 'Offset': |
| 1562 | const parts: string[] = c.innerText.split('/'); |
| 1563 | if (parts.length === 2) { |
| 1564 | const numerator: number = GpifParser._parseIntSafe(parts[0], 4); |
| 1565 | const denominator: number = GpifParser._parseIntSafe(parts[1], 4); |
| 1566 | offset = ((numerator / denominator) * MidiUtils.QuarterTime) | 0; |
| 1567 | } |
| 1568 | break; |
| 1569 | } |
| 1570 | } |
| 1571 | masterBar.addFermata(offset, fermata); |
| 1572 | } |
| 1573 | |
| 1574 | // |
| 1575 | // <Bars>...</Bars> |
no test coverage detected