いまいち検索しても気にいったソフトウェアメトロノームがなく (クソほど広告がついているとか、音色が気に入らないとか、無意味なログインを求めるとか)、一方でハードウェアのデジタルメトロノームもいくつか買ってみたがLINE OUTの品質が悪かったりしてヘッドフォンで聞くと不満があったりした。
自分で作るには音色が面倒だなあ、と思っていたが、「SoundFont WebAudio」で検索したところWebAudioFont というのがあり、まさに用途的にちょうど良さそうなのでこれを使ってベーシックなものを作った。
最初の発声タイミング
実装してみると悩むポイントが最初の発声タイミングで、何を重視するかで2つのタイミングがある
- クリック間の時間を重視するなら、スタートを押した次のタイミングから発声
- 拍の開始が1クリックずれる
- スタートを押したタイミングを重視、スタートを押して即時に発声
- 「即時」が実装上即時ではなく、原理的に最大20ms程度遅れるので、初回~2回目のクリックが不正確になる
今回は後者のスタートを押したタイミングを重視して最初の1クリックの不正確さは許容するという方針にしてある。何らかの音源を鳴らしながら TAP TEMPO で BPM をひろい、音源にあわせてクリックを鳴らしてみるみたいなとき、最初のクリックがずれると難しい。
もっとやるなら音源ごとのアタックのディレイを補正すべきだけどやっていない