マガジン

同じ操作音を5種類用意すると、どれが「押した感じ」に近いか:数人で比べる実験の設計書

遊びをつくる

執筆にClaudeを使用しています。

成功、失敗、選択に応じた三種類の音を、異なる形の響きで表したイラスト。
記事のテーマをもとに制作したAI生成イラスト。

画面のボタンを押したとき、ポンと小さな音が返ってくる場面を考えてみます。音が高すぎると軽く、低すぎるとこもって聞こえ、長く尾を引くと「押した」というより「鳴らした」感じになるかもしれません。ただ、これは頭の中の予想にすぎません。同じ音でも人によって受け取り方が違うことは珍しくありません。 この記事が確かめるのは、「音の高さ」「長さ」「減衰(音がどう小さくなっていくか)」の3つを少しずつ変えた5種類の操作音のうち、どれが「押した感じ」に近いと感じられるか、という問いです。結果はここには書きません。読者が数人に聴いてもらい、自分のゲームの文脈で答えを出せるように、準備から読み方までを設計書の形でまとめます。 先に注意が一つあります。この実験で分かるのは、集めた数人の傾向です。世の中の人全般に通じる法則ではありません。それでも、自作ゲームの音を決める材料としては十分に役立ちます。

この記事の目次
  1. 問いを絞る:「押した感じ」を言葉にしておく
  2. 5つの条件を決める:一度に一つだけ変える
  3. 準備するもの:ブラウザだけで動くテストページ
  4. 手順:数人で比べる
  5. 結果の読み方:平均だけで決めない
  6. 起こりやすい誤り
  7. 次の行動
  8. 参考資料

問いを絞る:「押した感じ」を言葉にしておく

「押した感じ」のままでは、聴く人によって意味がばらばらになります。そこで、評価してもらう観点を一つに決めます。

  • 「押した」という行為が、音で確かに伝わるか
  • 「押した瞬間に鳴った」と感じられるか(反応の即時性)
  • 軽すぎず重すぎず、ちょうどよい手応えか

この3つを別々に聞くと質問が増えて疲れます。そこで、評価者にはまず1問だけ、「ボタンを押した感じに近いのは、どれですか。1(遠い)から5(近い)で答えてください」と聞きます。補助として、各音に対する一言の感想(「軽い」「こもる」「ぷつっと切れる」など)を自由に書いてもらいます。数値で傾向を見て、一言でその理由を探る形です。

もう一つ、押す対象を揃えます。画面上のボタンを押す場面に限り、BGMは止めておきます。ゲーム中の連打や効果音の重なりは、この実験の次の段階で扱う別の問いです。

5つの条件を決める:一度に一つだけ変える

高さ、長さ、減衰を同時に変えると、評価が変わった原因が分からなくなります。そこで基準の音を一つ作り、残りの4つは基準から1要素だけ動かします。

  • 1、名前:基準、高さ:600Hz、総時間:80ms、減衰:指数的に小さくなる、基準との違い:なし
  • 2、名前:高め、高さ:1200Hz、総時間:80ms、減衰:同上、基準との違い:高さだけ
  • 3、名前:低め、高さ:300Hz、総時間:80ms、減衰:同上、基準との違い:高さだけ
  • 4、名前:短め、高さ:600Hz、総時間:30ms、減衰:同上、基準との違い:長さだけ
  • 5、名前:平ら、高さ:600Hz、総時間:80ms、減衰:音量を保ち、最後の5msで消す、基準との違い:減衰だけ

Hz(ヘルツ)は1秒間の振動回数で、大きいほど高い音です。ms(ミリ秒)は1000分の1秒です。数値は出発点として置いたもので、この値が正解という意味ではありません。基準が自分のゲームに合わないと感じたら、基準自体を差し替えて構いません。ただし、5つのうち動かすのは1要素ずつという原則は保ってください。

この表では、1と2・3を比べると高さの影響、1と4を比べると長さの影響、1と5を比べると減衰の影響を読み取れます。なお、長さを変えると減衰の速さも連動して変わります。音量の下がり方の「形」だけを別に調べたい場合は、条件5のような平らな音を軸に、別の実験として組み直します。

準備するもの:ブラウザだけで動くテストページ

用意するのは、パソコンかスマートフォン、ヘッドホンかスピーカー、記録用の紙(または表計算)、数人の評価者です。音の再生は、ブラウザ標準のWeb Audio APIで行います。次のHTMLを保存して開くと、外部ライブラリなしで動きます。

html
<!doctype html>
<meta charset="utf-8">
<title>操作音テスト</title>
<button id="start">音を有効にする</button>
<div id="pads"></div>
<button id="key">対応表を表示</button>
<pre id="out"></pre>
<script>
const conds=[
  {name:"基準",f:600,d:0.08,decay:true},
  {name:"高め",f:1200,d:0.08,decay:true},
  {name:"低め",f:300,d:0.08,decay:true},
  {name:"短め",f:600,d:0.03,decay:true},
  {name:"平ら",f:600,d:0.08,decay:false}
];
const order=[...conds].sort(()=>Math.random()-0.5);
let ctx;
function play(c){
  const t=ctx.currentTime,o=ctx.createOscillator(),g=ctx.createGain();
  o.frequency.value=c.f;o.connect(g);g.connect(ctx.destination);
  g.gain.setValueAtTime(0.0001,t);
  g.gain.linearRampToValueAtTime(0.2,t+0.003);
  if(c.decay){g.gain.exponentialRampToValueAtTime(0.0001,t+c.d);}
  else{g.gain.setValueAtTime(0.2,t+c.d-0.005);
       g.gain.linearRampToValueAtTime(0.0001,t+c.d);}
  o.start(t);o.stop(t+c.d+0.01);
}
document.getElementById("start").onclick=()=>{ctx=ctx||new AudioContext();ctx.resume();};
order.forEach((c,i)=>{
  const b=document.createElement("button");
  b.textContent=i+1;
  b.onclick=()=>{if(ctx)play(c);};
  document.getElementById("pads").append(b);
});
document.getElementById("key").onclick=()=>{
  document.getElementById("out").textContent=
    order.map((c,i)=>(i+1)+": "+c.name).join("\n");
};
</script>

ページを開くたびに5つのボタンの割り当てが入れ替わります。ボタンに出るのは1〜5の数字だけで、どの数字がどの条件かは「対応表を表示」を押すまで分かりません。評価者に条件名を知らせない、いわゆる目隠し(ブラインド)の仕組みです。評価が終わるまで、この対応表は押さないでください。音の頭に3msの立ち上がりを付けているのは、いきなり鳴らすとプツッという雑音が混ざりやすいためです。

「音を有効にする」ボタンは省略できません。多くのブラウザは、利用者の操作があるまで音の再生を許可しません。評価者に最初に1回押してもらってください。

手順:数人で比べる

人数は3〜5人程度を目安にします。多いに越したことはありませんが、数人でも「全員が同じ方向を向くか、割れるか」は見えてきます。

  1. 評価者に、「画面のボタンを押したときに返ってくる音を選ぶ実験です。正解はありません」と伝えます。音の条件名や、何を変えているかは伝えません。
  2. 音量を、普段ゲームを遊ぶときの大きさに合わせてもらいます。評価の途中では変えません。
  3. 評価者は各ボタンを自由に何度か押し、音を確かめます。そのあと、1〜5の各ボタンをそれぞれ3回ずつ押して、「押した感じに近い度合い」を1〜5点で付けます。
  4. 各ボタンについて、一言の感想も書いてもらいます。
  5. 全員が終わったら、休憩を挟んで同じ人にもう一度、ページを開き直して行ってもらいます。開き直すと割り当てが入れ替わるため、順序の影響を減らせます。
  6. 全員の2周が終わったら、対応表を表示して、番号を条件名に戻します。

記録は次の1行1データの形がおすすめです。

  • 評価者(A、B、Cなどの記号)
  • 周回(1周目か2周目か)
  • 条件名(対応表で戻したもの)
  • 点数
  • 一言の感想

1人あたり5条件×2周で10件になり、4人なら40件になります。表計算ソフトの集計機能で、条件ごとの平均点と、評価者ごとの点数を並べて見ます。

結果の読み方:平均だけで決めない

集計したら、次の順に見ます。

  • 条件ごとの平均点を並べます。1位が明確に離れていれば候補になります。
  • 評価者ごとの点数を見ます。平均が高くても、1人だけが極端に高く付けているなら、それは全体の傾向ではありません。
  • 周回1と周回2を比べます。同じ人が同じ条件に付けた点数が大きく動いていれば、その条件への評価はまだ安定していません。
  • 基準との差を見ます。基準と「高め」の差は高さの影響、基準と「短め」の差は長さの影響、基準と「平ら」の差は減衰の影響として読みます。

平均点の差が1点以内の場合、数人の実験では、本当の差と偶然のばらつきを区別しにくいと考えるのが安全です。その場合は結論を急がず、評価者を増やすか、差が出た要素だけに絞って条件を作り直します。

次のように読み分けると、次の一手が決めやすくなります。

  • 高さの条件で評価が割れた場合は、好みの問題が大きい要素と考えられます。ゲームの雰囲気(落ち着いた作品か、軽快な作品か)で選んでも構いません。
  • 短い音と基準の音で評価が割れた場合は、画面の反応の見た目(ボタンが沈む速さなど)と合わせて、もう一段の確認が必要です。
  • 一言の感想で「ぷつっと切れる」が複数出た条件は、点数が高くても、音の終わり方に違和感がある可能性があります。

起こりやすい誤り

  • 音量が揃っていない。 同じ音量設定でも、高い音は大きく、低い音は小さく聞こえやすい傾向があります。また、条件5のように音量を保つ音は、減衰する音より大きく感じられることがあります。評価の前に5つを聴き比べ、極端な差があれば、再生中の音量値(コード中の0.2)を条件ごとに調整してください。調整した値は記録に残します。
  • 最初に聴いた音を高く評価する。 順序の影響です。周回ごとに割り当てを入れ替えるのはこのためです。
  • 無線イヤホンの遅れ。 Bluetooth接続の機器は音が遅れて届くことがあります。「押した感じ」は反応の速さに強く左右されるので、有線のヘッドホンか本体のスピーカーで統一してください。
  • 「好き」と「押した感じ」の混同。 心地よい音が、押した感じに近いとは限りません。質問の文言を毎回同じにし、読み上げるだけにします。
  • 実験する人の誘導。 「この音、いいですよね」といった一言が結果を曲げます。評価が終わるまで、感想を言わないようにしてください。
  • 音が出ない。 「音を有効にする」を押していない、端末がマナーモードになっている、といった原因が多く見られます。評価を始める前に、必ず全ボタンで音が出るか確かめてください。

次の行動

まず上のコードをそのまま保存し、身近な2〜3人に基準・高め・低めの3つだけでも聴いてもらってください。手応えのあった条件を自作ゲームの操作音に入れ、実際の画面で押して確かめます。そのゲームはアソバースにHTMLやZIPのまま投稿でき、公開前に下書き保存もできます。

参考資料

  • MDN Web Docs「Web Audio API」