卡拉OK的“擦除效果”是什么?歌词逐字变色的原理
逐字高亮(擦除效果)指的是:随着歌曲的播放位置,歌词一个字一个字地变色。原理是歌词里的每个字都带着“什么时候开始唱、什么时候唱完”的时间,再拿它和播放位置对比,算出颜色该推进到哪里。
歌词的“时间信息”是什么?
歌词数据的时间精细程度并不一样。
- 按行。只知道每一行从什么时候开始,显示效果是一行一行地切换。
- 按词或按字。每个字都有开始和结束的时间。逐字高亮需要的是这一种。
没有逐字时间的歌词,只能按行显示。
播放位置是怎么知道的?
宅K 会读取“音乐”App 里正在播放的歌曲位置。不过读取是隔一段时间进行一次的,直接用的话,颜色会一顿一顿地走。所以在两次读取之间,会根据流逝的时间推算位置,让颜色平滑地往前走。

颜色为什么是“慢慢渗开”的?
在单个字的内部,也会算出从开始到结束的进度(0~100%),只涂对应的那一部分。看上去就像一个字被涂了一半。

歌词为什么会错位?
- 蓝牙耳机的延迟。声音晚到,所以歌词看起来跑在前面。可以用全局偏移来补偿。
- 歌词数据的差异。播放的歌曲版本和歌词原始数据略有出入时,就会错位。可以按歌曲以 0.1 秒为单位微调。

KTV 风格的“翻页”是什么?
KTV 风格的显示会把几行歌词作为一组(一页)一起展示,随着唱完的行,下一页的歌词依次出现。这样就能提前看到接下来要唱的歌词。

延伸阅读:歌词对不上的修正方法、卡拉OK用语一次看懂。