Skip to content

v4.3.0

Choose a tag to compare

@Andrea-lyz Andrea-lyz released this 11 Sep 23:57
· 60 commits to main since this release

ColorOS Live Lyrics Bridge v4.3.0

简体中文

字符上浮动画

17914_小萌GIF_20260912_020543

v4.3.0 为 ColorOS / OPlus 原生歌词界面新增可选的 Salt Player 式字符上浮动画。未唱
字素会停在正常基线下方,既有揭示前沿经过时沿升余弦阶跃回到基线,已唱文本则保持在
基线。它与当前的 clip-reveal、羽化和 glow 共用同一个时钟,不会引入第二条歌词进度线。

  • 默认关闭;低帧率 AOD 路径会自动关闭该效果。
  • “字符浮动幅度”可调 0–200%;100% 时下沉约为歌词字号的 10%,且只在动画开启时显示。
  • 行激活时有 240 ms 下沉窗口;逐字行结束时有 240 ms 收尾窗口,使稳定状态回到同一基线。
  • 开启“普通逐行歌词进度”后,普通 LRC 行时间戳歌词也会以整行线性前沿驱动上浮,无需
    新歌词 payload 或时间格式。

渲染可靠性

换行多段行现在通过累加每段已揭示 advance 计算整行上浮前沿,修复此前前沿钉在首段末端、
只在末段可见动画的问题。可选 lift 路径保持隔离:运行时绘制异常会回退到既有整段绘制并
记录 CHAR_LIFT_UNAVAILABLE,不会让 SystemUI coordinator 拉黑歌词绑定。

设备验收覆盖逐字歌词(包含换行多段行)和已开启进度的普通逐行歌词。普通逐行最后约
1.5 个字宽会在行切换前留在过渡窗口内,由既有行切换动画吸收;提前改写映射会让上浮与
羽化前沿失步,因此保留这一已接受的行为。

架构、兼容性与升级

Bridge 仍只作用于 systemcom.android.systemui。Provider 继续从各自 scope 内发布
标准 MediaMetadata["lyricInfo"];本版本不恢复播放器进程 Bridge Hook 或私有歌词传输。

Provider 源码仍为 14 模块的 libxposed API 102 矩阵:12 个专属 Provider、通用播放器
Provider 与 Readify TTS Provider。v4.3.0 不改变 Provider 的业务行为,但会同步推进
规范 Provider 资产文件名与发布契约。

  1. 从同一 v4.3.0 Release 安装 Bridge 与所需 Provider APK。
  2. Bridge scope 只保留 systemcom.android.systemui
  3. 开启“字符上浮动画”;普通 LRC 歌词还需开启“普通逐行歌词进度”。
  4. 升级或变更 scope 后重启播放器与 SystemUI。

验证与已知限制

  • 本地发布门禁覆盖 Bridge 单测、debug/release lint、debug 构建、发布契约校验以及
    14-Provider Debug 矩阵。
  • tag workflow 生成正式签名资产,校验包名/版本、证书、zipalign 与 DEX guards,将
    Provider main 冻结到完整 commit,并从同一验证批次发布 Bridge 与 LSP mirror。
  • 低帧率 AOD 下动画有意关闭。拖长音缓慢推进时仍可能有极轻微的像素阶跃感,已在设备上
    验收并接受。
  • 兼容性仍取决于厂商 SystemUI 实现,以及播放器经 MediaSession 暴露的歌词时间信息。

资产

正式 Release 包含 18 项已验证资产:1 个 Bridge APK、14 个 Provider APK、1 个 Provider
ZIP、release-assets-v4.3.0.jsonSHA256SUMS。Provider ZIP 只包含 14 个顶层
Provider APK。

致谢

感谢 Salt Player 提供字符上浮阶跃模型的视觉参考,也感谢 Lyrico 与 Lyrico-Plugins 在
本地音乐元数据、歌词管理和插件化歌词源上的开源工作与启发。

English

Character float-up

v4.3.0 adds an optional Salt Player-style character float-up effect to the native
ColorOS / OPlus lyric surface. Unsung graphemes rest below the normal baseline and
rise back along a cosine step as the existing reveal front reaches them; sung text
then remains at the baseline. It follows the same clip-reveal, feather, and glow
timing already used by the renderer rather than introducing a second lyric clock.

  • The effect is off by default and automatically disabled on the low-frame-rate
    always-on display path.
  • Character float amount is available from 0–200%; 100% is a sink of about
    10% of the lyric text size, and the control appears only while the effect is on.
  • It uses a 240 ms sink-in at line activation and a 240 ms finish window so a
    completed word-timed row returns to one stable baseline.
  • With Line-timed lyric progress enabled, ordinary LRC-style line-timed lyrics
    use the same float-up front across the whole line. No new lyric payload or timing
    format is required.

Rendering reliability

Wrapped lines now resolve their float-up front by summing each segment's revealed
advance. This fixes the former first-segment pinning that could leave animation
visible only on a trailing wrapped segment. The optional lift path remains isolated:
if a runtime draw error occurs, it falls back to the existing whole-segment draw and
records a CHAR_LIFT_UNAVAILABLE warning instead of allowing SystemUI's coordinator
to blacklist the lyric binding.

Device validation covered word-timed lyrics, including wrapped multi-segment lines,
and line-timed lyrics with progress enabled. The accepted visual behavior keeps the
final roughly 1.5 glyph widths in their transition window until an ordinary
line-to-line handoff; changing that mapping would desynchronize lift from the
feathered reveal front.

Architecture, compatibility, and upgrade

Bridge remains scoped only to system and com.android.systemui. Providers continue
to publish standard MediaMetadata["lyricInfo"] from their own scoped processes; this
release does not restore a player-process Bridge hook or a private lyric transport.

The Provider source remains the 14-module libxposed API 102 matrix: 12 dedicated
providers, Universal Player Provider, and Readify TTS Provider. Provider business
behavior is unchanged in v4.3.0; the canonical Provider asset names and release
contract advance together with Bridge.

  1. Install the Bridge and any required Provider APKs from the same v4.3.0 release.
  2. Keep Bridge scope limited to system and com.android.systemui.
  3. Enable Character lift animation to use the new effect. For ordinary LRC
    lyrics, also enable Line-timed lyric progress.
  4. Restart the player and SystemUI after upgrading or changing scope.

Validation and known limits

  • Local release gates cover Bridge unit tests, debug/release lint, debug assembly,
    release-contract validation, and the 14-Provider debug matrix.
  • The tag workflow produces the formal signed assets, validates package/version,
    certificate, zipalign, and DEX guards, freezes Provider main to a full commit,
    and publishes the Bridge and LSP mirror from the same verified batch.
  • The effect is intentionally disabled in low-frame-rate AOD mode. Slowly advancing
    sustained syllables can still have a very slight pixel-step character that is
    inherent to raster frames; it was evaluated on device and accepted.
  • Compatibility still depends on the vendor SystemUI implementation and the lyric
    timing that the selected player exposes through its MediaSession.

Assets

The formal release contains 18 verified assets: one Bridge APK, 14 Provider APKs,
one Provider ZIP, release-assets-v4.3.0.json, and SHA256SUMS. The Provider ZIP
contains only the 14 top-level Provider APKs.

Acknowledgements

Thanks to Salt Player for the visual reference behind the float-up step model, and
to Lyrico and Lyrico-Plugins for their open-source work and inspiration around local
music metadata, lyric management, and plugin-based lyric sources.

Donate

WeChat and Alipay donation QR code