Skip to content

Commit 7165ee6

Browse files
authored
fix(rendering): draw triplet feel once per bar and capo once per staff (#2992)
1 parent d479481 commit 7165ee6

4 files changed

Lines changed: 28 additions & 6 deletions

File tree

‎packages/alphatab/src/rendering/effects/CapoEffectInfo.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ export const capoEffectInfo: EffectInfo = {
1616
hideOnMultiTrack: false,
1717
sizingMode: EffectBarGlyphSizing.SingleOnBeat,
1818
shouldCreateGlyph: (_renderer: BarRendererBase, beat: Beat): boolean => {
19-
return beat.index === 0 && beat.voice.bar.index === 0 && beat.voice.bar.staff.capo !== 0;
19+
return (
20+
beat.voice.index === 0 && beat.index === 0 && beat.voice.bar.index === 0 && beat.voice.bar.staff.capo !== 0
21+
);
2022
},
2123
createNewGlyph: (renderer: BarRendererBase, beat: Beat): EffectGlyph => {
2224
return new TextGlyph(

‎packages/alphatab/src/rendering/effects/TripletFeelEffectInfo.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ export const tripletFeelEffectInfo: EffectInfo = {
1616
hideOnMultiTrack: true,
1717
sizingMode: EffectBarGlyphSizing.SinglePreBeat,
1818
shouldCreateGlyph: (_renderer: BarRendererBase, beat: Beat): boolean => {
19+
const masterBar = beat.voice.bar.masterBar;
20+
const isFirstBeat = beat.voice.bar.staff.index === 0 && beat.voice.index === 0 && beat.index === 0;
1921
return (
20-
beat.index === 0 &&
21-
((beat.voice.bar.masterBar.index === 0 &&
22-
beat.voice.bar.masterBar.tripletFeel !== TripletFeel.NoTripletFeel) ||
23-
(beat.voice.bar.masterBar.index > 0 &&
24-
beat.voice.bar.masterBar.tripletFeel !== beat.voice.bar.masterBar.previousMasterBar!.tripletFeel))
22+
isFirstBeat &&
23+
((masterBar.index === 0 && masterBar.tripletFeel !== TripletFeel.NoTripletFeel) ||
24+
(masterBar.index > 0 && masterBar.tripletFeel !== masterBar.previousMasterBar!.tripletFeel))
2525
);
2626
},
2727
createNewGlyph: (_renderer: BarRendererBase, beat: Beat): EffectGlyph => {
24.8 KB
Loading

‎packages/alphatab/test/visualTests/features/EffectsAndAnnotations.test.ts‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,26 @@ describe('EffectsAndAnnotationsTests', () => {
145145
await VisualTestHelper.runVisualTest('effects-and-annotations/triplet-feel.gp');
146146
});
147147

148+
it('triplet-feel-and-capo-multi-voice', async () => {
149+
await VisualTestHelper.runVisualTestTex(
150+
`
151+
\\track "Piano"
152+
\\staff {score}
153+
\\capo 2
154+
\\tf t8
155+
\\voice
156+
:8 c5 d5 e5 f5 g5 a5 b5 c6 | \\tf t16 c5 d5 e5 f5 g5 a5 b5 c6
157+
\\voice
158+
:2 c4 c4 | c4 c4
159+
\\staff {score}
160+
\\capo 5
161+
\\clef F4
162+
:8 c3 d3 e3 f3 g3 a3 b3 c4 | c3 d3 e3 f3 g3 a3 b3 c4
163+
`,
164+
'test-data/visual-tests/effects-and-annotations/triplet-feel-and-capo-multi-voice.png'
165+
);
166+
});
167+
148168
it('free-time', async () => {
149169
await VisualTestHelper.runVisualTest('effects-and-annotations/free-time.gp');
150170
});

0 commit comments

Comments
 (0)