マガジン

録音データの形は「時刻と音の組」なのか:雨音のピアノの30秒・128音から読む

遊びを見つける

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

つなぎ目のない銅色のリボンとテープリールで、自然なBGMループを表した写真風イメージ。
記事のテーマをもとに制作したAI生成イラスト。

「雨音のピアノ」で弾いた演奏を録音し、再生ボタンを押すと、同じ演奏がその場で鳴ります。このとき中身は、マイクで拾ったような音の波形なのでしょうか。それとも「何秒目にどの鍵を弾いたか」を並べた表なのでしょうか。題名の「時刻と音の組を順番に並べる」は、後者の形を指した言い方です。 先に断っておくと、この作品の内部データの形式は確認済みの情報に含まれていません。そのため、「実際にこの表で保存されている」とは言い切れません。確認できているのは、録音が30秒・128音までであること、その場で再生できること、画面を開いている間だけ残ることです。この記事では、この3点から「設計から読み取れること」を整理します。あわせて、読者が自分で内部の形を推し量れる確かめ方と、同じ考え方の最小の記録器も紹介します。

この記事の目次
  1. 確認できていることと、確認できていないこと
  2. 「30秒」と「128音」が並んでいることから読み取れること
  3. 「時刻と音の組」を表にすると
  4. 最小の記録器を作って、考え方をつかむ
  5. 雨音のピアノで確かめる手順
  6. 起こりやすい誤り
  7. 次の行動

確認できていることと、確認できていないこと

雨音のピアノについて、確認済みの事項は次のとおりです。

  • フェルトとガラスの2音色、3段階のタッチ、余韻の切り替えがある
  • 30秒・128音まで録音でき、その場で再生できる
  • 録音は画面を開いている間だけ残る
  • キーボードはA W S E D F T G Y H U J、Z/Xで音域を動かす
  • 13作品はすべて独立したHTMLで、外部通信なしに動く

一方、録音の保存形式、1音ごとに何を記録しているか、128音を超えたときの挙動は、確認済み事項にありません。この記事ではこれらを断定せず、「作品を開いて確かめる」ものとして扱います。

なお、保存があるのは余白の庭・WAVE / WAVE・かたちのあいだの3作品だけです。雨音のピアノの録音は、ページを閉じる、または再読み込みをすれば消える前提で作られています。

「30秒」と「128音」が並んでいることから読み取れること

上限が秒数と音数の2本立てになっている点は、設計を考える手がかりになります。

音の波形そのものを録音する方式なら、容量を決めるのは基本的に長さ、つまり秒数です。1音も弾かない時間でも、波形は同じ量だけ溜まります。この方式では「128音まで」という数え方は自然に出てきません。

「音の数」を上限にできるのは、弾いた1回ごとを区別して数えられる形でデータを持っているからだと考えられます。つまり、演奏を「出来事の列」として扱っているという読み方です。

ただし、これはあくまで推測です。次のような別の作り方でも、秒数と音数の両方に上限を置くことはできます。

  • 波形を録りつつ、数のほうは別に数えている
  • 演奏の出来事を記録し、再生時に作品内で同じ音を鳴らし直している

どちらかを決めるのは、この記事の役目ではありません。後の節で、作品を開いて見分けるための観察の観点を示します。

「時刻と音の組」を表にすると

出来事の列として録音するなら、最小の形は「録音開始から何ミリ秒後に、どの鍵を弾いたか」の組を、弾いた順に並べた表です。次の表は、考え方を示す仮の例です。雨音のピアノの実際のデータではありません。

  • 1、経過時間(ミリ秒):0、鍵:A
  • 2、経過時間(ミリ秒):480、鍵:D
  • 3、経過時間(ミリ秒):960、鍵:F
  • 4、経過時間(ミリ秒):1,500、鍵:D

この形には、扱いやすい点がいくつかあります。

  • 再生は、表を上から読み、各行の時刻になったらその鍵の音を鳴らすだけで済みます
  • 上限の判定が簡単です。行数が128に達した、または経過時間が30秒を超えた、のどちらかで止めればよいのです
  • 弾かなかった時間は、行と行の時刻の差としてしか現れず、データを増やしません

雨音のピアノには、音色・タッチ・余韻という選べる要素があります。出来事の列として記録するなら、各行にこれらを持たせるかどうかが設計の分かれ目になります。持たせれば、弾いたときの音がそのまま再現されます。持たせなければ、再生時の設定で鳴り方が決まります。どちらなのかは、作品を開けば手順で確かめられます。

最小の記録器を作って、考え方をつかむ

仕組みを手元で確かめたい人向けに、「時刻と鍵の組」を溜めて再生するだけの最小のHTMLを示します。外部ライブラリやサーバーは使いません。保存ファイルとして貼って開けば動きます。雨音のピアノの実装ではなく、この考え方の説明用です。

html
<button id="rec">録音開始</button>
<button id="play">再生</button>
<p>A S D F G H J キーで鳴らします</p>
<pre id="log"></pre>
<script>
const keys = {a:261.63,s:293.66,d:329.63,f:349.23,g:392,h:440,j:493.88};
const MAX_MS = 30000, MAX_N = 128;
let ctx, events = [], start = null;
function beep(freq) {
  ctx = ctx || new AudioContext();
  const o = ctx.createOscillator(), g = ctx.createGain();
  o.frequency.value = freq;
  g.gain.setValueAtTime(0.2, ctx.currentTime);
  g.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + 0.6);
  o.connect(g).connect(ctx.destination);
  o.start(); o.stop(ctx.currentTime + 0.6);
}
function show() {
  document.getElementById('log').textContent =
    events.map(ev => ev.t + 'ms ' + ev.key).join('\n');
}
document.getElementById('rec').onclick = () => {
  events = []; start = performance.now(); show();
};
document.addEventListener('keydown', e => {
  const f = keys[e.key];
  if (!f || e.repeat) return;
  beep(f);
  if (start === null) return;
  const t = Math.round(performance.now() - start);
  if (t <= MAX_MS && events.length < MAX_N) {
    events.push({ t, key: e.key }); show();
  }
});
document.getElementById('play').onclick = () => {
  start = null;
  events.forEach(ev => setTimeout(() => beep(keys[ev.key]), ev.t));
};
</script>

録音ボタンのあとにキーを弾くと、画面に「経過時間と鍵」の行が増えていきます。これが「時刻と音の組を順番に並べる」形のすべてです。再生は、各行の時刻に音を鳴らし直しているだけで、音そのものは保存していません。

この記録器で気づくことがあります。このデータには音色もタッチも入っていないので、再生は常に同じ音です。何を行に持たせるかが、再現できる範囲を決めるのです。

雨音のピアノで確かめる手順

実際の作品で内部の形を推し量るには、結果を見比べる観察が役に立ちます。次の4つを、自分の環境で行ってみてください。各項目は、何を見るかと、結果の読み方を添えています。

1. 128音の境目を見る

できるだけ速く、同じ鍵を連打して30秒以内に128音を超えるまで弾きます。録音の終わり方(自動で止まるか、音が記録されなくなるか)と、再生される音数を見ます。再生の音数が128で頭打ちになるなら、音を1回ずつ数えていると読めます。

2. 30秒の境目を見る

今度はゆっくり、128音に届かない数の音を、30秒を超えるまで弾き続けます。30秒の時点で録音が止まるなら、秒数の上限が別にかかっています。

3. 和音の数え方を見る

2つの鍵を同時に押す演奏を繰り返し、再生を聞いて音数の消費を見ます。上限に達するまでの回数が半分に近ければ、鍵1つずつを1音として数えていると読めます。

4. 設定の変え方を見る

フェルトで録音したあと、ガラスに切り替えて再生します。タッチや余韻も同様に試します。再生の音色が録音時のままなら、音色も記録に含まれている可能性があります。切り替え後の設定で鳴るなら、再生時に作品が鳴らし直していると考えられます。

どの項目も、比べる前に1回目の条件(音色、タッチ、余韻、テンポ)をメモしておきます。複数の設定を同時に変えると、どの変更が効いたのか分からなくなるためです。

起こりやすい誤り

観察のときに気をつけたい点を挙げます。

  • 手元のキーボードによっては、同時押しできる鍵の数に制限があります。和音が鳴らないのは、作品ではなく入力機器の都合かもしれません
  • 長押しで鍵が連続入力されることがあります。連打と長押しは区別して数えます
  • 再生中に鳴る音の数が減って聞こえるのは、余韻が重なって聞き取りにくくなっているだけの場合があります。耳だけに頼らず、数えられる範囲で数えます
  • 画面を再読み込みすると録音は消えます。観察の途中で閉じないようにしてください

次の行動

雨音のピアノを開き、上の4つのうち1つを選んで、条件と結果をメモに取ってみてください。そのうえで、最小の記録器を手元で動かし、作品の挙動と見比べると、内部の形についての自分なりの仮説が立てられます。仕様に関する最終的な情報は、作品の画面と現在の案内で確認してください。