失敗音は低い方がよいのか:成功と失敗の音を入れ替える実験
遊びをつくる執筆にClaudeを使用しています。

ブロックを消すと高く明るい音が鳴り、ミスをすると低く沈んだ音が鳴ります。ゲームでよく見かける組み合わせですが、これを入れ替えて、成功のたびに低い音、失敗のたびに高い音が鳴るようにする場面を考えてみます。遊んでいる人はおそらく、どこかがおかしいと感じます。ただ、その「おかしい」が何に反応しているのかは、聞いているだけでは分かりません。 候補はいくつもあります。音が低いこと、音程が下がっていく動き、音の長さ、音色の丸さやざらつき、画面の演出とのずれなどです。低い音が失敗に合うのか、下降する動きが失敗に合うのか、それとも単に見慣れた組み合わせではないから変に聞こえるだけなのか。この記事の問いは「失敗音は低い方がよいのか」です。 この記事は、その問いを自分で確かめるための実験設計書です。結果は載せていません。ブラウザで動く30行ほどの試作コードと、記録の取り方、結果の読み方を示します。読み終えたら、自分のゲームの音について根拠のある判断ができる状態を目指します。
何を確かめるか:高さと方向を切り分ける
「成功は高く、失敗は低い」には、実は二つの要素が混ざっています。
- 高さ:音が全体として高い帯にあるか、低い帯にあるか
- 方向:音程が上がっていくか、下がっていくか
標準的な作りは「成功=高い帯で上昇」「失敗=低い帯で下降」です。この二つは普通いつも一緒に動くので、どちらが違和感を生んでいるのか分離できません。そこで、高さと方向を別々に入れ替えた条件を作ります。
- A 標準、成功音:高い帯・上昇、失敗音:低い帯・下降、入れ替えるもの:なし
- B 全入替、成功音:低い帯・下降、失敗音:高い帯・上昇、入れ替えるもの:高さと方向の両方
- C 高さのみ入替、成功音:低い帯・上昇、失敗音:高い帯・下降、入れ替えるもの:高さだけ
- D 方向のみ入替、成功音:高い帯・下降、失敗音:低い帯・上昇、入れ替えるもの:方向だけ
この表が、実験の骨組みです。確かめたいのは次の三点です。
- Bだけでなく、CやDでも違和感は出るのか
- 出るなら、高さを入れ替えたCと方向を入れ替えたDのどちらが強いのか
- 成功側と失敗側で、違和感の出方に差があるのか
音の長さや音色は、今回はあえて固定します。変える要素が増えると、どれが効いたのか読めなくなるためです。長さと音色は、この実験が終わってから次の実験で動かすのが順序として安全です。
準備するもの
必要なものは次のとおりです。
- ブラウザが動くパソコン(次の節のコードを1つのHTMLファイルとして保存します)
- ヘッドホンかイヤホン(理由は後述します)
- 聞き手になってくれる協力者。理想は、このゲームの音を事前に知らない人を3〜4人以上
- 記録用の表(紙でも表計算でも構いません)
- 音量を固定するための目印(OSの音量値をメモしておくだけで十分です)
自分のゲームに組み込んで試す場合は、成功・失敗の音を鳴らす関数を、次のコードの play と差し替えられる形にしておくと比較が楽になります。ただ、最初は音だけを純粋に比べるため、ゲームから切り離した試作で行うことをおすすめします。画面の演出が加わると、音以外の要因が混ざるためです。
試作コード:条件を切り替えて鳴らす
次のコードを sound-swap.html などの名前で保存し、ブラウザで開きます。外部ライブラリは使わず、ブラウザ標準の Web Audio API だけで音を作ります。
<!doctype html>
<meta charset="utf-8">
<title>成功音と失敗音の入れ替え</title>
<p>条件:<select id="c">
<option value="0">A 標準</option>
<option value="1">B 全入替</option>
<option value="2">C 高さのみ入替</option>
<option value="3">D 方向のみ入替</option></select></p>
<button onclick="play('s')">成功</button>
<button onclick="play('f')">失敗</button>
<script>
const BAND={high:[800,1200],low:[200,300]};
const COND=[
{s:['high','up'],f:['low','down']},
{s:['low','down'],f:['high','up']},
{s:['low','up'],f:['high','down']},
{s:['high','down'],f:['low','up']}];
let ctx;
function play(kind){
ctx=ctx||new AudioContext();
const [band,dir]=COND[document.getElementById('c').value][kind];
let [a,b]=BAND[band];
if(dir==='down')[a,b]=[b,a];
const t=ctx.currentTime,o=ctx.createOscillator(),g=ctx.createGain();
o.frequency.setValueAtTime(a,t);
o.frequency.linearRampToValueAtTime(b,t+0.25);
g.gain.setValueAtTime(0.2,t);
g.gain.exponentialRampToValueAtTime(0.001,t+0.3);
o.connect(g).connect(ctx.destination);
o.start(t);o.stop(t+0.3);
}
</script>音は、0.25秒かけて周波数を滑らせる単純なサイン波です。高い帯は800Hzと1200Hzの間、低い帯は200Hzと300Hzの間を動きます。上昇と下降で移動する幅は同じなので、方向以外の条件はそろっています。
ブラウザには、利用者が操作する前の自動再生を制限する仕組みがあります。そのため、最初の音はボタンを押した後にしか鳴りません。音が出ないときは、ページ内を一度クリックしてから試してください。
手順と記録の取り方
聞かせ方
実験者が条件を選び、「成功」または「失敗」のボタンを押します。協力者には押す前に「いまは成功の場面です」「いまは失敗の場面です」と口頭で場面を伝えます。協力者は画面ではなく、場面の説明と音だけで判断します。
回数と順序
1人あたり、4条件それぞれで「成功→失敗」を3組、つまり1条件につき成功3回・失敗3回を聞かせます。合計24回で、休憩を含めて10分前後です。
条件の順序は、協力者ごとにずらします。最初に聞いた条件が基準になってしまう順序効果を避けるためです。4人なら次のようにずらすのが簡単です。
- 1人目:A→B→C→D
- 2人目:B→C→D→A
- 3人目:C→D→A→B
- 4人目:D→A→B→C
5人目以降は、同じ並びをもう一度回します。
質問の仕方
各音のあとに、「この場面に、いまの音はどのくらい合っていましたか」と聞き、1(まったく合わない)から5(とてもよく合う)で答えてもらいます。「変でしたか」「違和感はありましたか」とは聞きません。変だと答えさせる方向に誘導してしまうからです。そのうえで、気づいたことがあれば一言だけ口頭で聞き、そのまま書き留めます。
記録表の列
- 協力者ID、内容:名前ではなく番号
- 聞いた順、内容:何番目の条件か
- 条件、内容:A〜D
- 場面、内容:成功/失敗
- 回、内容:1〜3
- 合い具合、内容:1〜5
- ひとこと、内容:言葉をそのまま
1行が1回の再生に対応する形で記録します。あとから条件別・場面別に集計し直せるからです。
結果の読み方と判断基準
集計では、条件×場面ごとに合い具合の中央値と、1〜5の分布を見ます。人数が少ないうちは、平均だけでなく個々の人の回答の並びも確認してください。一人だけ極端な回答をしていれば、平均はそれに引っ張られます。
結果の読み分けは、次のように考えます。ここに書いたのは「こういう結果が出たらこう解釈する」という判断の枠で、実際の結果ではありません。
- Aが高く、Bが低く、CとDも同程度に低い:高さも方向も、標準の組み合わせから外れること自体が合わなさにつながっている可能性があります。
- Cだけが低く、Dはほぼ変わらない:高さの役割が大きいと読めます。失敗音を決めるときは、まず帯域を優先して考えることになります。
- Dだけが低く、Cはほぼ変わらない:方向、つまり下がる動きの役割が大きいと読めます。低い帯に置けない事情があっても、下降の動きで失敗を表現できるかもしれません。
- 成功側だけ、あるいは失敗側だけで差が出る:成功音と失敗音で、求められる役割が非対称だということです。たとえば失敗は「わかりやすさ」が重視され、成功は「気持ちよさ」が重視される、といった違いが背景にあるかもしれません。ただし理由は、この実験だけでは決められません。
- どの条件でもほぼ同じ:音の高さや方向よりも、音量、タイミング、画面演出といった別の要因が効いている可能性があります。
この実験だけで「低い音は失敗に向いている」と一般化はできません。少人数の聞き取りから分かるのは、あくまで手元のゲームと聞き手での傾向です。
「慣れ」と「音の性質」を分ける
標準Aが高く評価されたとしても、それが音の性質によるのか、見慣れた組み合わせだからなのかは区別できません。この区別を試したいなら、次のような追加が考えられます。
- ゲームの遊び経験が少ない人にも協力してもらい、回答の傾向を比べる
- 最初に「今回は、成功が低い音になる約束です」とルールを伝えたうえで聞いてもらい、合い具合が変わるか見る
後者は、ルールを先に知らせると違和感が薄れるかどうかを確かめる方法です。薄れるなら、違和感の一部は音の性質ではなく慣習への期待によるものと考えられます。ただしこれも、最終的な判断は集めたデータの様子を見てください。
起こりやすい誤り
- 音量のそろえ忘れ:同じ振幅でも、周波数によって聞こえる大きさは変わります。一般に、高い音は同じ振幅でも大きく感じられやすい傾向が知られています。高い帯の条件だけうるさく聞こえた場合、高さではなく大きさへの反応かもしれません。気になるなら、コードの 0.2 の値を帯域ごとに調整し、耳で同じ程度に聞こえる値を探してから本番に入ります。
- スピーカーの再生限界:ノートパソコンの内蔵スピーカーは、200Hz前後の低音をほとんど出せないものがあります。低い帯の音が聞こえない状態だと、実験が成り立ちません。ヘッドホンで確認してください。
- 自分ひとりで評価する:設計した本人は、どの音がどの役割かを知っています。知っている状態では「合っている」と感じやすくなるため、協力者を立てる方が信頼できます。
- 誘導する質問:先ほど触れたとおり、「おかしい」と聞くと、おかしいという答えが増えます。
- 条件の順序が固定:最初に聞いた音が基準になるので、順序は必ずずらします。
- 音以外の要素を同時に変える:長さ、音色、画面のエフェクトまで一緒に変えると、原因が特定できなくなります。1回の実験で動かすのは、高さと方向だけにとどめます。
次の行動
まず上のコードを保存し、自分でAからDを順に聞いて、低い帯の音が出ているかを確認してください。そのうえで協力者を3〜4人集め、記録表を作って24回の聞き取りを実施すると、題名の問いに対するその人たちの答えが得られます。結果をもとに、自分のゲームの成功音と失敗音を差し替え、アソバースに投稿して反応を見るのも一つの方法です。音の聞き分けを実際のゲームで確かめたいときは、「こだまの森」のように音色が中心にある公式作品を、音ありと音なしの両方で開いて比べてみてください。



