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

Method resolveSpelling

packages/alphatab/src/model/ModelUtils.ts:1003–1033  ·  view source on GitHub ↗
(
        keySignature: KeySignature,
        noteValue: number,
        accidentalMode: NoteAccidentalMode
    )

Source from the content-addressed store, hash-verified

1001 }
1002
1003 public static resolveSpelling(
1004 keySignature: KeySignature,
1005 noteValue: number,
1006 accidentalMode: NoteAccidentalMode
1007 ): ResolvedSpelling {
1008 const chroma = ModelUtils.flooredDivision(noteValue, 12);
1009
1010 const preferred = ModelUtils._getPreferredSpellingForKeySignature(keySignature, chroma);
1011 const desiredOffset = ModelUtils._forcedAccidentalOffsetByMode.has(accidentalMode)
1012 ? ModelUtils._forcedAccidentalOffsetByMode.get(accidentalMode)!
1013 : Number.NaN;
1014
1015 let spelling: SpellingBase = preferred;
1016 if (!Number.isNaN(desiredOffset)) {
1017 const candidates = ModelUtils._spellingCandidates[chroma];
1018 const exact = candidates.find(c => c.accidentalOffset === desiredOffset);
1019 if (exact) {
1020 spelling = exact;
1021 }
1022 }
1023
1024 const baseSemitone = ModelUtils._degreeSemitones[spelling.degree] + spelling.accidentalOffset;
1025 const octave = Math.floor((noteValue - baseSemitone) / 12) - 1;
1026
1027 return {
1028 degree: spelling.degree,
1029 accidentalOffset: spelling.accidentalOffset,
1030 chroma,
1031 octave
1032 };
1033 }
1034
1035 public static computeAccidental(
1036 keySignature: KeySignature,

Calls 6

flooredDivisionMethod · 0.80
isNaNMethod · 0.80
floorMethod · 0.80
getMethod · 0.65
hasMethod · 0.45

Tested by

no test coverage detected