piapia123
ja

メトロノーム

メディア

処理はすべてブラウザ内で完結します。データは送信されません

メトロノーム
120 BPM · 500 ms

⚠️ 拍はオーディオクロックに**先読みで予約**されます(タイマーで鳴らすのではありません)。メインスレッドが混んでいても、別タブに切り替えても正確なままです。

⚠️ よくあるオンラインメトロノームとの違いは、目に見えないところにあります。拍をオーディオクロックに先読みで予約しているのであって、タイマーで「時間になったら鳴らす」のではありません。 後者には避けられない問題が三つあります。タイマーはずれます(メインスレッドの他の処理に邪魔されると遅れ、その遅れは累積して 1 分で数十ミリ秒にもなります。演奏者はその揺れをすぐ聞き取ります)。音は「今すぐ」ではなく未来の正確な時刻に始まらなければなりません。そして別タブに切り替えるとタイマーは毎秒 1 回に間引かれ、拍が崩壊します。そこでここでは、25 ミリ秒ごとに動くタイマーが今後 100 ミリ秒分の拍をオーディオクロックに予約するだけにし、実際に鳴る時刻はオーディオ機器が決めます。タイマーが多少遅れても正確なままです。 さらに三つ。タップでテンポ測定(曲に合わせて数回叩けば BPM が出ます)、拍子とアクセント(4/4 の 1 拍目にアクセント、3/4 ならワルツの感じ)、速度標語(グラーヴェ 40、アンダンテ 76、アレグロ 120 など)をワンクリックで。音はブラウザ内で合成します。

機能

  • ⚠️ 拍はオーディオクロックに先読みで予約するため、メインスレッドが混んでも別タブでもずれません
  • 30〜300 BPM。スライダーと数値入力は双方向に同期します
  • 拍子は 2/4・3/4・4/4・6/4。アクセントは何拍目にも設定できます(なしも可)
  • ⚠️ アクセントは 1 オクターブ上(1200 Hz 対 800 Hz)なので、どの環境でも小節の頭が聞き取れます
  • タップでテンポ測定。2 秒空くと自動で最初から数え直します
  • タップの不安定さも知らせます。揺れているときの数値は信用すべきでないためです
  • 速度標語をワンクリック(グラーヴェ/アダージョ/アンダンテ/モデラート/アレグロ/プレスト/プレスティッシモ)
  • キーボード:スペースで開始と停止
  • 音はブラウザ内で合成します。音声ファイルの読み込みも通信もありません

使い方

  1. 速度標語を選ぶか、スライダーを動かすか BPM を直接入力します
  2. 必要に応じて拍子とアクセントの位置を設定します
  3. 「スタート」かスペースで開始。狙ったテンポは「タップでテンポ」で測れます
  4. もう一度スペースで停止します

よくある質問

setInterval で直接鳴らさないのはなぜですか
必ずずれるからです。タイマーが約束するのは「少なくともその時間が経つ」ことだけで、他の処理に邪魔されたコールバックは遅れて届き、その遅れは累積します —— 1 分で数十ミリ秒、演奏者はすぐ気づきます。正しい方法は、タイマーには拍をオーディオクロックへ予約させるだけの役割を与え、鳴る時刻はオーディオ機器に決めさせることです。タイマーが数十ミリ秒遅れても、100 ミリ秒先を予約しているので問題ありません。
別のタブに切り替えても正確ですか
正確です。鳴る時刻はすでにオーディオクロックへ渡してあり、ブラウザーのバックグラウンド制限は主にタイマーと描画に掛かるためです。⚠️ ただし音は止まりません。音声再生中のタブはアクティブ扱いになるというブラウザーの挙動で、このツールが制御できるものではありません。不要ならスペースで停止してください。
アクセントと他の拍で音が違うのはなぜですか
アクセントは 1200 Hz、他の拍は 800 Hz で、音量ではなく音高を変えています。音量差は小型スピーカーではほとんど聞こえませんが、音高差はどの機器でも明瞭です。小節の頭を聞きたいときはアクセントを「1」に、均一にしたいときは「アクセントなし」にしてください。
タップで測った数値がばらつくのはなぜですか
測定しているのはあなた自身だからです。最初と最後のタップの平均間隔を使い(隣接間隔の平均は揺れをそのまま取り込んでしまいます)、均等に叩くほど正確になります。3 回未満では不安定さの表示を出しません。サンプルが少なすぎて意味を持たないためです。⚠️ 2 秒空くと数え直します。これがないと「2 回叩いて、考えて、また 2 回叩く」が 1 つの非常に遅いテンポとして計算されてしまいます。

関連ツール