何が起きているか
- 打撃音は押した瞬間には鳴りません。 16 分音符のグリッドへ量子化され、いま鳴っている和音のコードトーンへ音程が寄ります。
- 連打すると音程が駆け上がります。 コードトーンを 1 つずつ登り、音域の上端まで行くと最低音へ戻ります。0.7 秒ほど間が空くと最初の音に戻ります。挙動は素材ごとに選べます(固定・駆け上がり・駆け下り・往復・ランダム)。
- セクションを切り替えると次の小節頭で遷移します。 調とコード進行が同時に差し替わり、以降の打撃音は自動的に新しい和声に従います。
- 水中にすると BGM も打撃音も同じフィルタを通ります。 両者が同じ音場バスを通る構造の帰結です。
- 向きを変えると音場全体が回ります。 音源ごとの再計算ではなく、B-format の回転 1 回で済みます。
.NET ランタイムは Web Worker の上で動き、そこが「レンダースレッド」になります。
生成した音は SharedArrayBuffer 上のリングバッファへ流し込まれ、AudioWorklet が
それを吸い出すだけです。メインスレッドは音声経路に一切入りません。