MCPcopy Create free account
hub / github.com/CoderLine/alphaTab / _parseTranspose

Method _parseTranspose

packages/alphatab/src/importer/GpifParser.ts:1284–1307  ·  view source on GitHub ↗
(trackId: string, track: Track, node: XmlNode)

Source from the content-addressed store, hash-verified

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()) {

Callers 1

_parseTrackMethod · 0.95

Calls 4

childElementsMethod · 0.80
_parseIntSafeMethod · 0.80
flooredDivisionMethod · 0.80
setMethod · 0.45

Tested by

no test coverage detected