表題の通り。打鍵してから指を離すまでの時間を表示するツールを作ってみている。まだ作っている途中で、誰でもすぐに使えるようなクオリティではない。

↑ こんな感じ。鍵盤ごとに、ボタンを離した瞬間にボタンを押していた時間 (ミリ秒) を表示する仕様。

↑ OBS でプレー画面と手元画面も組み合わせて表示してみた図。(配信の切り抜き)
ソースコードは fohte/beat-release-counter にある。
何が嬉しいのか
beatmania IIDX や BMS において、打鍵速度は重要な上手さの指標だ。
例えば 150 bpm の 4 分は、0.4 秒 (400 ms) 間隔で押す必要がある。16 分だと 0.1 秒 (100 ms)。某名人の秒間 16 連打 (= 0.0625 秒間隔) は 240 bpm の 16 分相当になる (無理)。
ボタンを連打するというのは、「ボタンを押す」->「ボタンを離す」->「ボタンを押す」という流れを踏む。
150 bpm 16 分 の打鍵間隔が 100 ms だからといって、仮に 1 打鍵目のボタンを押してから離すまで 100 ms かかっていたら、物理的に 2 打鍵目が間に合わない。
つまりボタンを押してから離すまでの時間は短ければ短いほど良い。短いほど次の打鍵が間に合うため。
まあ、もちろんボタンを離すことだけが速くても、そもそもボタンを押すことが難しかったり、ノーツの認識が難しかったりはするのだが、ひとつの上手さの指標にはなる。
これはあくまでも自分の主観だけど、音ゲーは上手い人ほど軽やかに打鍵をしている印象がある。一方、初心者の方はボタンを押し込んでしまう印象もある。押し込んでいると次の打鍵に間に合わないので、上達すると自然に軽やかな打鍵になっていくのだと考えている。
beatmania IIDX や BMS をはじめとする音ゲーでは、ボタンを押す上手さは「判定」という形で可視化されることがほとんどだが、離す上手さは前述のように重要であるのにも関わらず可視化されない。
ボタンを押すことに対してはフィードバックループが走るのだが、離すことはそうではないので、離すことの重要さになかなか気付けない。
そこで補助的なツールとして離す速度をリアルタイムに可視化できるとフィードバックループを回せると考えて、このツールを作っている。
今後の展望
とりあえずリアルタイムに可視化する、という最低限はできたものの、まだもう少しやりたいことがある。
鍵盤ごとのボタンを離す時間の統計表示
例えば左手側の鍵盤はボタンを離す平均時間が長い => 左手が弱い、みたいなことを知れるようになる
開発サーバーを立ち上げなくても使えるようにする
今はローカルで Next.js サーバーを立ち上げないと使えないため
UI を親切にする
スクリーンショットには写していないが、コントローラーを認識させるまでの過程がめちゃくちゃわかりにくい
Gamepad API の仕様で、ページが読み込まれてからコントローラーのボタンを何か入力しないと、コントローラー情報が取得できないのだが、現状そのことを何も表示していない
余談
ちなみにこのツールは、らぐさんの 打鍵ディスプレイツール がボタンを離す速度の直近 2,000 回の平均を表示していて、そこから着想を得た。