Skip to content

为 LX Music Desktop 添加 Halo PixelBar USB HID 歌词同步功能,支持实时歌词、歌曲信息显示及布局切换。#2876

Open
nxz1026 wants to merge 4 commits into
lyswhut:masterfrom
nxz1026:feat/halo-lyric-sync
Open

为 LX Music Desktop 添加 Halo PixelBar USB HID 歌词同步功能,支持实时歌词、歌曲信息显示及布局切换。#2876
nxz1026 wants to merge 4 commits into
lyswhut:masterfrom
nxz1026:feat/halo-lyric-sync

Conversation

@nxz1026

@nxz1026 nxz1026 commented Jun 22, 2026

Copy link
Copy Markdown

功能
实时歌词同步(50ms 轮询,LRC 二分查找)
歌曲信息动画(歌名 - 歌手交替显示)
30 秒无播放后自动切换时钟模式
三种布局模式(静态居中 / 静态居中大号 / 滚动)
可配置最大字符数和进度条显示
模拟模式(未连接设备时本地打印日志)
技术细节
纯 TypeScript 实现,无外部依赖(仅 node-hid 用于 USB HID 通信)
直接读取 global.lx.player_state 实现零延迟
64 字节 HID 报文协议,支持文本/布局/UI 模式三种报文
byte 4 固定为 0x00(C# 官方参考实现一致,非零值导致固件崩溃)
CJK UTF-8 截断保护(MAX_TEXT_BYTES = 53)+ displayWidth emoji 宽度识别
操作说明
设置 → Halo 音箱 → 开启同步
连接 Halo PixelBar USB 设备后自动识别
支持调整最大字符数、进度条、布局模式

nxz1026 and others added 4 commits June 22, 2026 13:07
- Add node-hid dependency for USB HID communication
- Create HID packet builder (64-byte protocol for Halo PixelBar)
- Create HID device communicator (device discovery, connect, send)
- Create halo module entry with lyric sync logic:
  * Directly reads global.lx.player_status for zero-latency lyrics
  * LRC binary search fallback when lyricLineText is empty
  * Song info display on track change (3s duration)
  * Auto switch to clock UI after 30s idle timeout
  * Configurable color, layout, max chars, progress display
- Add halo settings UI (Pug/Less, following existing patterns)
- Add i18n strings for both zh-cn and en-us
- Register halo module in modules/index.ts
feat: add Halo PixelBar USB HID lyric sync module
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant