ゲームばこのゲームには、叩いたときの音、ブロックが壊れる音、自己ベストを更新したときのファンファーレなど、いろいろな効果音があります。実は、これらの音は、録音した音声ファイルではありません。ブラウザの機能を使って、遊んでいる最中に、その場で作っています。このコラムでは、その仕組みを、なるべくやさしく紹介します。
音は「波」でできている
音の高さは、波が1秒間に何回震えるか(周波数)で決まります。数字が大きいほど高い音で、小さいほど低い音です。ブラウザには、この波を直接作る機能(Web Audio API)が入っています。「この高さの波を、この長さだけ鳴らす」と指示するだけで、音が出ます。
波の形を変えると、音の雰囲気も変わります。ゲームばこでは、主に次の4種類を使い分けています。
- サイン波(sine):丸くてやわらかい音。ゲームオーバーなど、落ち着いた場面に
- 矩形波(square):ファミコンのような、角ばった音。叩いたときや、ブロックが壊れるときに
- のこぎり波(sawtooth):ざらついた、少し不快な音。「叩いてはいけないもの」を叩いたときに
- 三角波(triangle):サイン波より少し明るい音。ファンファーレなど、お祝いの場面に
音は、高さが変わるから「それっぽく」なる
一定の高さの音を鳴らすだけだと、電子音のブザーのように聞こえます。効果音らしくするコツは、鳴らしている途中で、音の高さと大きさを変えることです。
たとえば、もぐらを叩いたときの音は、600Hzから180Hzまで、約0.09秒で一気に下がる矩形波です。高い音から低い音へ急に落ちると、「ポン」と叩いたような手応えに聞こえます。同時に、音の大きさも、最初が最大で、あっという間に小さくなっていきます。
「叩いてはいけない」は、音でも伝える
もぐら叩きで、爆弾もぐらを叩いたときの音は、220Hzから60Hzまで、約0.22秒かけて下がるのこぎり波です。通常のもぐらを叩いた音より、低くて、長くて、ざらついています。画面を見なくても、「いまのは違う」と気づけるように、わざと不快な音にしています。
反対に、コンボのボーナスのときは、500Hzから700Hz、そのあと700Hzから900Hzへと、2回続けて上がるサイン波です。高く上がっていく音は、「うまくいった」という気持ちにつながります。
ファンファーレは、ドミソ+高いド
自己ベストを更新したときの音は、ド・ミ・ソ・高いドの4音を、0.09秒ずつずらして鳴らしています。周波数でいうと、523Hz、659Hz、784Hz、1047Hzです。4つの音が階段のように上がっていくだけで、お祝いらしい雰囲気になります。音のファイルは1つも使っていません。
ブロック崩しは、段によって音の高さが違う
ブロック崩しでは、ブロックを壊したときの音の高さを、段ごとに変えています。いちばん上の段は約950Hzで高く、いちばん下の段は500Hzで低くなっています。点数が高いブロックほど高い音が鳴るので、画面を見ていなくても、「いま、上のブロックを壊した」と耳で分かります。
ファイルを使わないメリットと、注意点
- 読み込む音声ファイルがないので、ページが軽く、すぐに遊べます
- 音のデータを外部から持ってこないので、著作権を気にする必要がありません
- 音の高さや長さを、数字で簡単に調整できます
一方で、スマホのブラウザには、「画面をタップするなど、ユーザーが操作した直後でないと、音を鳴らせない」という決まりがあります。そのため、ゲームを始めるボタンを押した瞬間に、音を出す準備をしています。それを忘れると、パソコンでは鳴るのに、スマホだけ音が出ない、という状態になります。
小さな音にも、意味を込めて
効果音は、ゲームの中では脇役ですが、遊んだ人の気持ちに、意外と大きく影響します。成功したときは明るく、失敗したときは少し重く。これからも、音の高さや長さを少しずつ調整して、遊びやすいゲームを目指していきます。