Web Audio API (AudioContext) に基づく高精度クロックタイマー
楽器の演奏やリズムトレーニングにおいて最も重要な要件は,ミリ秒単位のズレも許されない正確なビート(テンポ)の維持です.一般的なJavaScriptの setTimeout や setInterval タイマー関数は,ブラウザのメインスレッドの負荷やタブのバックグラウンド化によって容易に数ミリ秒〜数十ミリ秒の遅延(ジッター)が発生します.
当システムでは,ブラウザのオーディオ処理専用のハードウェアクロックである Web Audio API(AudioContext.currentTime)をクロックソースとして直接採用しています.これにより,CPU負荷や画面描画の遅延に一切影響されない,水晶発振器と同等の高精度なタイマースレッドを実現しています.
JavaScriptイベントループのジッターを抑える先読みスケジューリング(Lookahead Scheduling)
Web Audio API の精度を最大限に引き出すため,本ツールでは「先読みスケジューリング(Lookahead Scheduling)」アルゴリズムを実装しています.これは,数ミリ秒ごとに将来発音されるべきクリック音のタイムスタンプを計算し,オーディオハードウェアのバッファへ事前登録する手法です.
この二重タイマー構造により,仮にブラウザのUIスレッドが一時的に重くなった場合であっても,既にオーディオバッファへスケジュールされたクリック音は正確なタイミングで発音され続け,リズムが途切れたりヨレたりすることが絶対にありません.
拍子判定(2/4, 3/4, 4/4, 6/8)と音色アクセントオシレーターの生成
多様な音楽ジャンルや練習スタイルに対応するため,アクセント音(強拍・弱拍)の音響合成エンジンを組み込んでいます.サンプリング音源ファイルを使わず,Web Audio API の OscillatorNode を用いてサイン波・矩形波の周波数およびエンベロープ(GainNode)をリアルタイム制御することで,クリック音を動的に生成します.
拍頭(1拍目)には高音域のアクセントピッチ(例: 1000Hz),2拍目以降には標準ピッチ(例: 800Hz)を発音させることで,2/4, 3/4, 4/4, 6/8 などの複雑な拍子体系を視覚および聴覚の両面で明確に把握できるように設計されています.
完全ローカル処理による低レイテンシーな音響合成とオフライン動作
当メトロノームツールは,音声ファイルのダウンロードや外部サーバーへの通信を一切必要としない完全ローカル動作型のWebアプリケーションです.すべての音響波形はブラウザ内部のオーディオプロセッサーでリアルタイムに計算・発音されます.
そのため,レイテンシー(発音遅延)が極限まで抑えられており,ボタンを押した瞬間にビートが開始されます.また,インターネット接続が切れたオフライン環境下(スタジオや地下練習場など)であっても,完全に動作を継続することができます.
BPM(1〜300)変調と視覚的テンポインジケーターの同期制御
テンポ設定(BPM: Beats Per Minute)は,1から300まで1刻みで直感的に調整可能です.テンポ変更時には,実行中のクロック計算ロジックがリアルタイムに位相を再計算し,テンポの切り替え時にビートが途切れたり二重発音したりしないシームレスな移行を行います.
さらに,Web Audio API のタイマーイベントと画面上の視覚インジケーター(Flash LED)を requestAnimationFrame を介して精密に同期させており,大音量の演奏中でクリック音が聞こえにくい環境であっても,画面の点滅によって正確なビートを確認できます.
よくある質問(FAQ)
Q1. スマホで画面をバックグラウンドにしたりスリープにしても音は鳴り続けますか?
A1. ブラウザの仕様およびOSの省電力設定に依存しますが,Web Audio API が有効化されている間はバックグラウンド再生を維持する設計となっています.より安定した再生のために,演奏中は画面の自動スリープを一時的にオフにしてのご利用を推奨します.
Q2. クリック音の音量や音の高さを調整することはできますか?
A2. はい,画面上のボリュームスライダーおよびアクセント音設定から自由に変更いただけます.耳に刺さらない快適な周波数特性にチューニングされています.
Q3. インターネットに繋がっていない防音室や地下スタジオでも使えますか?
A3. はい,一度ページを開けばすべてのオーディオ合成処理がお使いの端末内で完結するため,完全オフラインの環境でも問題なくご利用いただけます.