雨音のピアノの余韻はどう作られているか:減衰する音の仕組み
遊びを見つける執筆にClaudeを使用しています。

鍵盤を一つ弾いて指を離したあと、音はすぐには消えません。ふっと小さくなり、雨音の向こうへ溶けていきます。「雨音のピアノ」には、この消えていく部分を切り替える「余韻」の設定があります。切り替えると変わるのは音の何でしょうか。この記事は、その変わる部分を「波形の大きさが時間とともに小さくなる曲線」として捉え直し、設定値と聞こえ方の関係を数字で読み解きます。 ここで扱う問いは三つです。余韻は波形のどこに現れるのか。「聞こえなくなる時間」は何と何で決まるのか。そして、自分の耳と端末でそれをどう確かめるのか。作品の内部の作り方は、確認済みの範囲を超えて推測しません。分からない点は、作品を開いて確かめる手順として示します。
余韻の正体は、振幅が小さくなっていく曲線です
音は空気の振動で、波形に描くと上下に揺れる線になります。揺れの幅を振幅と呼び、振幅が大きいほど音は大きく聞こえます。鍵盤を押した瞬間は振幅が大きく、そこから揺れの幅が徐々に狭まっていくと、それが余韻として聞こえます。
揺れの細かさ(周波数)は音の高さを決めます。余韻の間も高さはほぼ変わらず、変わるのは幅だけです。波形の山を外側からなぞった輪郭線を包絡線(エンベロープ)と呼びます。余韻とは、この包絡線が右肩下がりになっている部分のことです。
下がり方にも種類があります。一定の量ずつ減る直線的な下がり方と、一定の割合ずつ減る指数的な下がり方です。弦や共鳴体が自然に振動を失っていく現象は、一般に指数的な減衰に近いことが知られています。たとえば「1秒ごとに半分になる」音は、2秒で4分の1、3秒で8分の1になります。減る量は次第に小さくなるので、音は長い尾を引きながら消えていきます。
聞こえなくなるまでの時間を決めるもの
指数的な減衰は、時定数(ここではτと書きます)という一つの数で表せます。τは、振幅が約37%(1/e)まで下がるのにかかる時間です。τが大きいほど下がり方はゆるやかで、余韻は長くなります。
人の耳は音の大きさを対数的に感じ取るため、音量はデシベル(dB)で表すのが一般的です。振幅が1/1000になると約−60dBです。この性質から、τの音が−60dB下がるのにかかる時間は τ × ln(1000)、つまりおよそ 6.9τ と計算できます。τが0.3秒なら約2.1秒です。これは計算上の値で、特定の作品を測った結果ではありません。
「聞こえなくなる時間」は、τだけでは決まりません。最初の振幅も関係します。聞こえる限界の大きさを一定とすると、聞こえなくなるまでの時間は τ × ln(最初の振幅 ÷ 限界の振幅) です。同じτでも、最初の振幅が2倍なら、τ × ln2、つまり約0.69τだけ長く聞こえます。強く弾いた音ほど長く残るという感覚は、この式で説明できます。
限界の大きさは、周囲の音にも左右されます。雨のようなノイズが背景にあると、小さな音は雨音に紛れて先に聞き取れなくなります。余韻の「終わり」は音そのものの終わりではなく、背景に溶ける地点だということです。
雨音のピアノの設計から読み取れること
確認済みの事実は次のとおりです。
- 音色は「フェルト」と「ガラス」の2種類があります。
- タッチは3段階です。
- 余韻は切り替えられます。
- 30秒・128音までの録音をその場で再生できます。
- 雨音つきの自由演奏と、3音から8音へ育つフレーズの記憶ゲームがあります。
- キーボードはA W S E D F T G Y H U J で、Z/Xで音域を移せます。
- 録音は画面を開いている間だけ残ります。
音色、タッチ、余韻が別々の設定として並んでいることから、この三つは独立した軸として設計されていると読み取れます。音色は主に波形の形(倍音の構成)、タッチは最初の振幅、余韻は包絡線の下がり方に対応する、と整理すると前節の式と結びつきます。ただし、各設定が内部でどんな値や計算に対応しているかは確認されていません。この対応は仮説として持ち、次節の手順で確かめてください。
録音の上限が「30秒・128音」と二つの単位で決まっている点も、余韻と関係がありそうです。余韻が長いほど、音が重なって同時に鳴る場面が増えます。再生時に余韻が録音に含まれるのか、録音後に余韻を切り替えると再生が変わるのか、余韻の選択肢がいくつあるのか、雨音を止められるのか。これらの細部は、作品を開いて確かめる部分です。
自分で確かめる:余韻の長さを測る
手順
問いは「余韻の設定、タッチ、音色は、聞こえなくなるまでの時間をそれぞれどう変えるか」です。
準備するものは、作品を開いた端末、イヤホンかスピーカー、ストップウォッチ(スマートフォンので構いません)、記録用の紙です。次の条件をそろえます。
- 端末の音量を固定し、実験中は触りません。
- 静かな場所で行います。雨音の有無を切り替えられる場合は、最初は雨音なしの条件を選びます。切り替えられない場合は、その条件で通します。
- 同じ鍵(たとえばA)を使い、鍵を押している長さも統一します(短く叩く、など)。
- 基準条件を決めます(例:フェルト、中くらいのタッチ、余韻は初期設定)。
測り方は、鍵を押すと同時にストップウォッチを始め、「もう聞こえない」と感じた瞬間に止める、というものです。1回ごとに秒数を記録し、同じ条件で3回測って中央値を使います。一度に変えるのは一つの設定だけです。
- 余韻、条件:画面にある各選択肢、1回目:、2回目:、3回目:、中央値:
- タッチ、条件:3段階、1回目:、2回目:、3回目:、中央値:
- 音色、条件:フェルト/ガラス、1回目:、2回目:、3回目:、中央値:
結果の読み方
- 余韻を変えたときに中央値が大きく動き、タッチや音色では動きが小さければ、余韻の設定が包絡線の下がり方(τ)を主に担っている、と考えられます。
- タッチを強くすると中央値が長くなれば、最初の振幅が時間に効く前節の式と整合します。変わらなければ、タッチは音の明るさなど別の要素に使われている可能性があります。
- 音色を変えたときだけ長さが変わる場合は、音色ごとに減衰の設定が異なるか、倍音の違いで聞こえ方が変わっている可能性があります。この二つは秒数だけでは区別できません。
手元で減衰を作ってみる
τと聞こえ方の関係は、自分で短いコードを書くと実感できます。次のHTMLを .html として保存し、ブラウザで開いてボタンを押してください。外部ライブラリは不要です。
<button id="b">鳴らす</button>
<input id="t" type="range" min="0.05" max="1.5" step="0.05" value="0.3">
<span id="v">τ=0.3秒</span>
<script>
const ctx = new (window.AudioContext || window.webkitAudioContext)();
function note(freq, tau) {
const t = ctx.currentTime;
const o = ctx.createOscillator();
const g = ctx.createGain();
o.frequency.value = freq;
g.gain.setValueAtTime(0.0001, t);
g.gain.linearRampToValueAtTime(0.5, t + 0.01);
g.gain.setTargetAtTime(0, t + 0.01, tau);
o.connect(g).connect(ctx.destination);
o.start(t);
o.stop(t + 0.01 + tau * 8);
}
t.oninput = () => v.textContent = "τ=" + t.value + "秒";
b.onclick = () => { ctx.resume(); note(440, parseFloat(t.value)); };
</script>setTargetAtTime は、値を目標へ指数的に近づける命令で、第3引数が時定数τです。スライダーでτを変えて何度か鳴らし、前節の式(−60dBまで約6.9τ)と自分の耳の感覚を比べてみてください。0.5 を 0.25 に変えて最初の振幅を半分にすると、聞こえなくなるまでが約0.69τだけ短くなるかも確かめられます。
起こりやすい誤り
- 「聞こえなくなった」の基準が回ごとにぶれます。ストップウォッチを止める基準を、最初に言葉で決めておきます(例:「息を止めても聞こえない」)。
- 音量や周囲の騒音が途中で変わると、比較が成り立ちません。
- 複数の設定を同時に変えると、どれが効いたのか分からなくなります。
- 3回分の秒数がばらつく場合は、平均ではなく中央値を使い、ばらつきが大きいことも記録に残します。
- 作品の設定は、画面を開いている間の状態です。ページを再読み込みしたら、条件を確かめ直してください。
次の行動
雨音のピアノを開き、基準条件で同じ鍵を3回測ることから始めてください。そのうえで、余韻の設定を一つずつ切り替えて記録表を埋め、前節の「読み方」に当てはめます。コードを試した場合は、作品の余韻とコードのτのどちらが自分の耳に近いかも書き添えると、次に測る条件が決まります。
参考資料
- MDN Web Docs「AudioParam.setTargetAtTime()」
- MDN Web Docs「Web Audio API」

