音は聴けないので、波形を測った:すし積むの和楽器を、WebAudioで作る
すし積む 開発の記録 / 2026年10月
すし積むの音は、音声ファイルを一つも使っていません。ブラウザの音の機能(WebAudio)で、和楽器を、その場で合成しています。問題は、作っている最中、私には、音を聴く手段が無かったことです。そこで、波形を測って、音量を調整しました。コミットに残っている数字で書きます。
なぜ、音声ファイルを使わないのか
外部のライブラリや音声ファイルを使うと、ゲームを 1 つのファイルとして配る(オフラインでも動く)形が、壊れてしまいます。そこで、箏(爪弾き)、太鼓、拍子木、鉦(かね)を、WebAudio の部品から合成して、陽旋法(日本の音階)で曲を組みました。
- BGM:八分音符を単位にした、先読みのスケジューラで鳴らします。桶の埋まり具合で、四段階に厚みが変わり、危なくなるほど、太鼓が増えます。
- 効果音:合体、連鎖、大トロ、伊勢海老・ゴールデン、ゴールデン同士、の順に、音の数と太さを積み上げます。
- 昇段したときと、自己記録を更新したときに、祝いの一節を足しました。音の入切ボタンもあり、設定は端末に残します。
音が聴けないので、波形を測る
音量のつり合いは、本来、耳で決めるものです。でも、この作業では、聴けませんでした。そこで、同じ合成の関数を、書き出し専用の音の部品(OfflineAudioContext)に張り替えて、音を波形として書き出し、最大の振れ幅(ピーク)を測りました。
最初の状態は、こうでした。
- 大当たりの音のピークが 1.18。1.0 を超えると、音が割れて、歪みます。
- 合体の音は 0.072。BGM に埋もれて、聞こえません。
調整したあとは、BGM のピーク 0.179 の下に、効果音が、階段状に並びました。
| 音 | ピーク |
|---|---|
| BGM(基準) | 0.179 |
| 合体 | 0.16 |
| 3 連鎖 | 0.48 |
| 大トロ | 0.49 |
| ゴールデン | 0.85 |
| 大当たり | 0.81 |
歪みは、なくなりました。「ありがたみのある音ほど、大きい」という順序が、数字で確かめられます。ただし、耳で聴いて心地よいかは、この方法では、分かりません。
番付も、実測で引き直した
音と同じ日に、番付(ランク)のしきい値も、見直しました。自動プレイを 12 回まわして、点の分布を採ると、こうでした。
| モード | 点の範囲 | 置いた手数 |
|---|---|---|
| お任せ | 12,532〜22,413 | 172〜267 |
| お品書き | 20,992〜46,395 | 171〜306 |
それまでの基準(伝説=30,000 点)では、工夫のない自動プレイが、最高位になってしまいました。そこで、しきい値を、その上へ引き直しました(0 / 4,000 / 10,000 / 18,000 / 30,000 / 50,000 / 85,000)。お品書きは、点の出方が約 1.8 倍なので、同じ比率で伸ばしています。両方の自動プレイが「中堅職人」で止まり、花板から上は、腕次第になりました。
翌日に、120 戦まわして、当たり方も測りました(若手 6%、中堅 32%、花板 40%、大将 14%、伝説 8%)。自動プレイは、人より上手いので、下の二段には落ちません。下の二段は、人が遊ぶときに効く前提の並びです。
連鎖の出し方も変えた
- 連鎖のボーナスを、お任せにも入れました。同じ条件で、得点が、倍近くになります。
- 3 連鎖は、1 ゲームに 20 回以上も出て、ありがたみがありませんでした。画面の中央に出すのは、4 連鎖からにしました(2〜3 連鎖は、浮かぶ文字と音だけ)。
分かったこと
聴けなくても、測れる。
- 感覚で決められないものは、数字で決める。音のつり合いも、番付も、実測が土台でした。
- 測れることと、確かめられたことは、別。波形は、歪みの有無と、音の大小の順序を、教えてくれます。心地よさは、教えてくれません。
- 「基準」は、基準を破るものに当てて、確かめる。工夫のない自動プレイが最高位になる基準は、基準として、機能していませんでした。
この記事の数字は、コミット(2026年9月7日、9月8日)の記録から取りました。この日のあとに、ネタの寸法が変わったため(穴子の記事)、いまの点の範囲やしきい値は、ここに書いたものとは違います。
この話に出てくるもの
- すし積む(作品ページ) — 落ち物パズルのゲーム
- 穴子がデカすぎた話 — 自動プレイで測った、別の記録
ほかの記録
- CrazyGames のプレビューで日本語が文字化け:ファイルは正しかった。原因は特定できず、ASCII 表記に逃がした — ゲームポータルのプレビューで「大連鎖!」の「連」だけが壊れた。ファイルのバイト列は正しく、原因は特定できなかった。ASCII 表記に逃がした経緯と、14言語の枠の検査の記録。
- 無料枠を半分しか使わない番付にした:呼び出し5回を2回に — 番付サーバーが無料枠を使う量を半分にした。一人が遊ぶ一回の呼び出しは5回から2回、読んだ行は421から221へ。順位の数え方と、前置きの呼び出しをなくした経緯。
- CrazyGames に落ちた:理由は書かれていなかったので、撮って探した — ゲームポータルの審査に「全体の品質が期待に達していない」とだけ書かれて落ちた。自分で画面を撮って見つけた四つの原因と、測って選んだ直し方の記録。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。