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

Method applyLyrics

packages/alphatab/src/model/Track.ts:176–204  ·  view source on GitHub ↗
(lyrics: Lyrics[])

Source from the content-addressed store, hash-verified

174 }
175
176 public applyLyrics(lyrics: Lyrics[]): void {
177 for (const lyric of lyrics) {
178 lyric.finish();
179 }
180 const staff: Staff = this.staves[0];
181 for (let li: number = 0; li < lyrics.length; li++) {
182 const lyric: Lyrics = lyrics[li];
183 if (lyric.startBar >= 0 && lyric.startBar < staff.bars.length) {
184 let beat: Beat | null = staff.bars[lyric.startBar].voices[0].beats[0];
185 for (let ci: number = 0; ci < lyric.chunks.length && beat; ci++) {
186 // skip rests and empty beats
187 while (beat && (beat.isEmpty || beat.isRest)) {
188 beat = beat.nextBeat;
189 }
190 // mismatch between chunks and beats might lead to missing beats
191 if (beat) {
192 // initialize lyrics list for beat if required
193 if (!beat.lyrics) {
194 beat.lyrics = new Array<string>(lyrics.length);
195 beat.lyrics.fill('');
196 }
197 // assign chunk
198 beat.lyrics[li] = lyric.chunks[ci];
199 beat = beat.nextBeat;
200 }
201 }
202 }
203 }
204 }
205}

Callers 4

Lyrics.test.tsFile · 0.80
parseXmlMethod · 0.80
readScoreMethod · 0.80
readScoreMethod · 0.80

Calls 2

fillMethod · 0.65
finishMethod · 0.45

Tested by

no test coverage detected