音の高さで「上・下」は伝わるか:目を閉じて位置を当てる実験の設計書
遊びをつくる執筆にClaudeを使用しています。

画面の外にいる敵や、壁の向こうのアイテムの位置を、音だけで知らせたい場面を考えてみます。いちばん手軽な方法は、高い音を「上」、低い音を「下」に対応させることです。ただし、この対応が説明なしで通じるのか、通じるとしてどの程度の精度なのかは、自分で確かめるまでわかりません。 高い音を上に感じやすいという傾向は、感覚どうしの結びつきを扱う分野で広く話題になっています。ただし、その強さは人や状況によって違うはずです。そこで、自分と周りの数人で「目を閉じて、鳴った音の位置を当てる」実験を組み、設計に使える数字を手元で作ります。この記事は、その手順書です。結果は書いてありません。 確かめるのは次の三つです。
準備するもの
必要なのは、ブラウザ、イヤホンかヘッドホン、そして実験を手伝ってくれる人です。自分一人でも実施できますが、「高い=上」を事前に知っている人の結果は、説明なし条件の参考になりません。説明なし条件は、この実験の意図を知らない人に担当してもらいます。
下のコードを pitch.html として保存し、ブラウザで開きます。外部ライブラリは使いません。サイン波を0.5秒鳴らし、1・2・3キーで回答を記録します。ランダムに「上・中・下」を選び、対応する高さの音を鳴らすだけの構成です。
<!doctype html>
<meta charset="utf-8">
<p>スペース:出題 / 1=上 2=中 3=下 / Enter:結果表示</p>
<pre id="log"></pre>
<script>
const FREQ = {1:880, 2:440, 3:220}; // 条件Cは 1:220, 3:880 に書き換え
let ctx, ans = null, t0 = 0, rows = [];
function play(f){
ctx = ctx || new AudioContext();
const o = ctx.createOscillator(), g = ctx.createGain();
const t = ctx.currentTime;
o.frequency.value = f; o.connect(g); g.connect(ctx.destination);
g.gain.setValueAtTime(0.0001, t);
g.gain.exponentialRampToValueAtTime(0.2, t+0.02);
g.gain.exponentialRampToValueAtTime(0.0001, t+0.5);
o.start(t); o.stop(t+0.55);
}
addEventListener('keydown', e=>{
if(e.code==='Space' && ans===null){
ans = 1+Math.floor(Math.random()*3);
play(FREQ[ans]); t0 = performance.now();
} else if(ans!==null && e.key.length===1 && '123'.includes(e.key)){
rows.push([rows.length+1, ans, +e.key, Math.round(performance.now()-t0)]);
ans = null;
} else if(e.key==='Enter'){
const ok = rows.filter(r=>r[1]===r[2]).length;
document.getElementById('log').textContent =
'回,出題,回答,ms\n'+rows.map(r=>r.join(',')).join('\n')+
'\n正答 '+ok+' / '+rows.length;
}
});
</script>このコードは、回答するたびに正誤を表示することはしません。Enterを押したときだけ結果を出します。回答のたびに答えが見えると、その場で学習が始まり、「直感」を測れなくなるためです。
出題の「出題」列は位置(1=上、2=中、3=下)です。音の高さは FREQ で決まります。条件Cでは、1と3の周波数を入れ替えます。
手順:三つの条件と試行の組み方
条件の定義
条件は次の三つです。いずれも、フィードバックなしで30回を1セットとします。
- A、事前の説明:「音が鳴ったら、上・中・下のどれだと感じるか選んでください」とだけ伝える、FREQ:1:880、2:440、3:220
- B、事前の説明:「高い音が上、低い音が下です」と伝える、FREQ:同上
- C、事前の説明:「高い音が下、低い音が上です」と伝える、FREQ:1:220、2:440、3:880
条件Aは、「正解」を知らない回答者に選んでもらう条件です。コード上は高い音を「上」としているので、Aの正答率は「直感が高い=上にどれだけ揃うか」の指標になります。ここで見たいのは、正答率というより、回答の揃い方です。
順序の決め方
同じ人が全条件を受けると、先に聞いた説明が後に影響します。次の順序を守ってください。
- 全員が最初にAを受けます。
- 次にBとCを受けます。順序は人ごとに入れ替えます。1人目はB→C、2人目はC→Bという具合です。
- 条件の間に2〜3分の休憩を入れます。
人数が少なく入れ替えが難しい場合は、「順序の影響が残る」と記録に書き添えて読んでください。
1セットの進め方
- 音量を、小さく聞こえない程度の中くらいに合わせます。セット中は変えません。
- 本番の前に、練習として5回だけ鳴らします。正答の確認はしません。目的は、キーの位置を指で覚えることです。
- 目を閉じます。画面を伏せる方法でも構いませんが、目を閉じるほうがログが目に入りません。
- スペースで出題し、音を聞いたら1・2・3で答えます。これを30回繰り返します。
- 30回が終わったらEnterで結果を表示し、内容を記録シートに写します。
練習の5回は、ログの先頭5行にあたります。集計時に除いてください。つまり1セットは練習5回+本番30回の計35回です。
記録の取り方
記録の単位は「1回の出題」です。ログに出る行をそのまま使えます。1セットが終わるごとに、次の表の形で写してください。
- 回答者ID、内容:名前ではなく A1、A2 などの記号
- 条件、内容:A・B・C と、実施した順番
- 正答数、内容:本番30回のうち、出題と回答が一致した回数
- 上下の取り違え数、内容:出題が1で回答が3、または出題が3で回答が1だった回数
- 隣の誤り数、内容:上と中、中と下を取り違えた回数
- 反応時間の中央値、内容:本番30回の ms の中央値(平均ではなく中央値)
- 使用機器・音量、内容:イヤホン/ヘッドホン、スピーカーの別と音量メモ
「上下の取り違え」を別に数えるのが、この実験のポイントです。ゲームで「上にいる」と知らせたつもりが「下」と受け取られるのは、「中」と間違われるよりも深刻な失敗です。正答率が同じでも、誤りの内訳が違えば設計の判断は変わります。
反応時間に中央値を使うのは、1回だけ極端に遅い回答(迷った、キーを探した)が平均を引きずるのを避けるためです。
結果の読み方と、起こりやすい誤り
偶然との見分け方
3択で当てずっぽうに答えると、30回のうち正答は平均10回前後になります。偶然のばらつきは標準偏差で2.6回ほどなので、15回前後までは偶然の範囲として揺れる可能性があります。そこで、次のような目安を自分たちで置いてください。
- 正答15回以下:偶然と区別しにくい。その条件では位置が伝わっているとは言いにくい。
- 正答16〜24回:偶然よりは高いが、ゲームで頼るには不安が残る。
- 正答25回以上:安定して読み取れている。
境界は自分たちで置く目安であり、統計的な保証ではありません。人数が少ないうちは、個人の差が大きく出ます。1人分の結果で結論を出さず、全員の傾向を並べて読んでください。
条件の比べ方
三つの条件の比較で、次のように判断します。
- AとBの差が小さい場合: 説明がなくても通じやすい対応だと言えます。案内文なしでも使える可能性があります。
- BがAを大きく上回る場合: 一言の説明が効いています。ゲーム内のチュートリアルや最初の一回の例示を入れる価値があります。
- Aで「上下の取り違え」が目立つ場合: 回答者が逆の対応で受け取っています。説明なしで使うのは避け、必ず案内を添えます。
- BとCの差が小さい場合: 対応の向きよりも、「事前に伝えたこと」のほうが効いています。直感に合わなくても、伝えれば使える対応だと読めます。
- CがBより低く、上下の取り違えが増える場合: 逆の対応は覚えにくく、とっさの場面では間違えやすい対応です。理由がなければ高=上にそろえるのが無難です。
- 反応時間が条件で違う場合: 正答率が近くても、遅いほうは迷いが多い対応です。アクションの速いゲームでは、反応時間の差を重く見てください。
起こりやすい誤り
- 音量や機器がセットごとに変わる: 聞こえ方が変わり、条件の差か機器の差か区別できません。セット中は固定し、変えたら記録します。
- 周波数の差が小さすぎる: 3段階の差を狭くすると、音の高さの違い自体を聞き分けにくくなります。聞き分けの問題と空間の対応の問題が混ざるので、まずは本記事の3つの周波数で試し、その後に差を縮めて試してください。
- 音色を変える: サイン波以外に変えると、高さ以外の要素(明るさ、鋭さ)が位置の印象に影響する可能性があります。比較するなら、音色を変える実験を別に組みます。
- ログを途中で見てしまう: 回答のたびに結果が見えると学習が起きます。Enterは30回が終わるまで押さないでください。
- キー位置を忘れて目を開ける: 目を閉じると1・2・3の場所を見失う人がいます。練習の5回で指の位置を確認し、必要ならキーボードに付箋を貼ります。
- 人数が少ないのに断定する: 3〜5人では個人差がそのまま結果になります。「この範囲の人では」という言い方にとどめてください。
- 出題の偏り: 乱数なので、1が12回、3が6回のように偏る回もあります。偏りが大きい回は、位置別の正答も見てください。
ゲームの設計に持ち帰る
結果が出たら、ゲームへの落とし込みを三つの観点で考えます。
一つ目は、音を唯一の手がかりにしないことです。聞こえ方には個人差があり、環境によっては音を出せません。「こだまの森」のように音なしでも遊べる作品があるのは、そうした条件を考えた設計の一例です。光や形など、見た目の手がかりを併用する案も並べて考えてください。
二つ目は、音域を変えて同じ実験をくり返すことです。「雨音のピアノ」にはZとXで音域を切り替える機能があります。使いたい音域が決まっていない段階なら、このような道具で高い・低いの聞こえ方を耳で確かめてから、FREQ の値を決めるのも手です。
三つ目は、上下だけでなく左右も試すことです。本記事のコードは FREQ の定義を増やすだけで、段階数を変えられます。左右の定位(左右のスピーカーに振り分ける方法)を加えれば、二次元の位置を音で伝える実験に広げられます。
次の行動
まずは pitch.html を保存し、自分でBの条件を30回試して、キー操作と音量に慣れてください。次に、事情を知らない1人にAの条件をお願いし、回答が「高い=上」に揃うかを確かめます。記録シートの「上下の取り違え数」を見れば、自分のゲームで高低を使ってよいかの判断材料になります。



