An elegant and deeply customizable lyrics visualizer
BetterLyric Documentation
BetterLyric is a WinUI control for synced lyrics with translation, phonetic text, animation, and click interaction.
Properties
| Name |
|---|
| CurrentLyricsData |
| CurrentPosition |
| CurrentIsPlaying |
| PositionOffset |
| TimelineSyncThreshold |
| IsLyricsVisible |
| IsTranslationEnabled |
| IsPhoneticEnabled |
| IsAutoLayoutEnabled |
| MouseScrollOffset |
| IsMouseInLyricsArea |
| IsMousePressing |
| IsMouseScrolling |
| MousePosition |
| LyricsStartX |
| LyricsStartY |
| LyricsWidth |
| LyricsHeight |
| IsScrollViewerEnabled |
| PlayingLineTopOffset |
| IsDynamicLyricsFontSize |
| OriginalLyricsFontSize |
| TranslatedLyricsFontSize |
| PhoneticLyricsFontSize |
| PhoneticLyricsOpacity |
| PlayedOriginalLyricsOpacity |
| UnplayedOriginalLyricsOpacity |
| TranslatedLyricsOpacity |
| LyricsAlignmentType |
| LyricsLineContentOrientation |
| AutoWrap |
| LyricsFontStrokeWidth |
| NonCurrentLineFillColor |
| PlayedCurrentLineFillColor |
| UnplayedCurrentLineFillColor |
| PlayedTextStrokeColor |
| UnplayedTextStrokeColor |
| LyricsFontWeight |
| LyricsLineOverallSpacingFactor |
| LyricsLineInnerSpacingFactor |
| LyricsWesternFontFamily |
| LyricsCJKFontFamily |
| IsRightToLeftLyric |
| WordByWordEffectMode |
| IsLyricsBlurEffectEnabled |
| IsLyricsFadeOutEffectEnabled |
| IsLyricsOutOfSightEffectEnabled |
| IsLyricsGlowEffectEnabled |
| LyricsGlowEffectScope |
| LyricsGlowEffectLongSyllableDuration |
| IsLyricsGlowEffectAmountAutoAdjust |
| LyricsGlowEffectAmount |
| IsLyricsShadowEffectEnabled |
| IsLyricsScaleEffectEnabled |
| LyricsScaleEffectLongSyllableDuration |
| IsLyricsScaleEffectAmountAutoAdjust |
| LyricsScaleEffectAmount |
| IsLyricsFloatAnimationEnabled |
| IsLyricsFloatAnimationAmountAutoAdjust |
| LyricsFloatAnimationAmount |
| LyricsFloatAnimationDuration |
| LyricsScrollEasingType |
| LyricsScrollEasingMode |
| LyricsScrollDuration |
| LyricsScrollTopDuration |
| LyricsScrollBottomDuration |
| LyricsScrollTopDelay |
| LyricsScrollBottomDelay |
| IsFanLyricsEnabled |
| FanLyricsAngle |
| Is3DLyricsEnabled |
| Lyrics3DXAngle |
| Lyrics3DYAngle |
| Lyrics3DZAngle |
| Lyrics3DAutoFitLayout |
| Lyrics3DDepth |
| IsLyricsBrethingEffectEnabled |
| LyricsBreathingIntensity |
| SongPosition |
| CurrentCanvasYScroll |
| ActualLyricsHeight |
| CurrentHoveringLineIndex |
Methods
| Name |
|---|
| ApplyLayoutFromContainer |
Events
| Name |
|---|
| LineClicked |
Example
1 | <dev:BetterLyric x:Name="MyBetterLyric" IsLyricsVisible="True" CurrentIsPlaying="True" /> |
1 | MyBetterLyric.CurrentLyricsData = GetEnglishSample(); |
Example with Slider
1 | <dev:BetterLyric x:Name="MyBetterLyric" CurrentIsPlaying="True" IsLyricsVisible="True" /> |
1 | private DispatcherQueueTimer? _playbackTimer = App.Current.Resources.DispatcherQueue.CreateTimer(); |
When IsAutoLayoutEnabled is set to true, LyricsStartX, LyricsStartY, LyricsWidth, and LyricsHeight are calculated automatically. If you want to customize these values yourself, disable IsAutoLayoutEnabled and set them manually.
By default, the ScrollViewer for lyrics is enabled. You can scroll using the mouse wheel and click on any item to jump to it. If you want to disable it, set IsScrollViewerEnabled to false.

Demo
you can run demo and see this feature.