osu! 中的 BPM 和 offset 是什么?

timing 是每个 beatmap 赖以构建的隐形网格。下面来看看它是怎么运作的。

BPM——每分钟节拍数

BPM 是一首歌的脉搏速度:一分钟内经过多少拍。120 BPM 的曲子每 500 ms 一拍;180 BPM 的曲子约每 333 ms 一拍。在 osu! 中,BPM 定义了 timing 网格——也就是音符可以落下的时间点集合。音符放在拍子上以及拍子的细分上(二分、四分等),所以 timing 正确的谱面会让人感觉和音乐严丝合缝。

offset——第 1 拍从哪里开始

offset 是第一拍落下的时间,以距离音频文件开头的毫秒数表示。歌曲很少正好从拍子上开始——通常前面会有一小段静音或安静的前奏。BPM 告诉你网格线之间相隔多远;offset 告诉你网格从哪里开始。

为什么 timing 决定一张谱面的成败

节奏游戏里的一切都建立在网格正确的前提上。如果 BPM 错了,音符会逐渐偏离节拍——开头还好,一分钟后就没法玩了。如果 offset 错了,每一个音符都会提前或延后同样的量,无论你打得多好,准确率都会大跌。mapper 在放下第一个音符之前,会花大量精力把 timing 调准;有变速的歌曲还需要多个 timing 点。

如何查到一首歌的 BPM

  1. 直接搜索:搜索“<歌名> BPM”——songbpm.com 或 tunebat.com 等网站收录了大部分已发行的音乐。如果感觉是半速,就把数值翻倍(70 对比 140)。
  2. 打拍测速:使用“tap BPM”网站(例如 taptempo.io),跟着节拍敲大约 15 秒。
  3. osu! 编辑器:把歌曲放进 osu!,打开编辑器 → Timing → 敲击测速或使用它的 BPM 估算。这样也能直接得到 offset。

在 DanceGAI 上需要我自己做这些吗?

不需要。DanceGAI 根据你的歌曲生成 osu! mania 谱面时会自动检测 BPM 和 offset——无论你是上传歌曲还是从 osu! beatmap 链接导入——AI 会在摆放音符之前自己找出 timing 网格,所以你什么都不用填。不过上面这些概念仍然值得了解:在任何 beatmap 中,不管是生成的还是手工制作的,你都要靠它们来识别(和描述)timing 问题。