(trackId: string, track: Track, node: XmlNode)
| 1282 | private _transposeKeySignaturePerTrack: Map<string, number> = new Map<string, number>(); |
| 1283 | |
| 1284 | private _parseTranspose(trackId: string, track: Track, node: XmlNode): void { |
| 1285 | let octave: number = 0; |
| 1286 | let chromatic: number = 0; |
| 1287 | for (const c of node.childElements()) { |
| 1288 | switch (c.localName) { |
| 1289 | case 'Chromatic': |
| 1290 | chromatic = GpifParser._parseIntSafe(c.innerText, 0); |
| 1291 | break; |
| 1292 | case 'Octave': |
| 1293 | octave = GpifParser._parseIntSafe(c.innerText, 0); |
| 1294 | break; |
| 1295 | } |
| 1296 | } |
| 1297 | |
| 1298 | const pitch = octave * 12 + chromatic; |
| 1299 | for (const staff of track.staves) { |
| 1300 | staff.displayTranspositionPitch = pitch; |
| 1301 | } |
| 1302 | |
| 1303 | // the chromatic transpose also causes an alternative key signature to be adjusted |
| 1304 | // In Guitar Pro this feature is hidden in the track properties (more -> Transposition tonality -> 'C played as:' ). |
| 1305 | const transposeIndex = ModelUtils.flooredDivision(pitch, 12); |
| 1306 | this._transposeKeySignaturePerTrack.set(trackId, transposeIndex); |
| 1307 | } |
| 1308 | |
| 1309 | private _parseRSE(track: Track, node: XmlNode): void { |
| 1310 | for (const c of node.childElements()) { |
no test coverage detected