Back to Blog

オーケストラの配置は本当に最適?

コンサートに行くと楽器の配置はほどんとのコンサートで固定で、かつ曲ごとに変更されることなく演奏されることほとんどに見えます(初心者視点では)(楽器の種類が変わったりはする)。そして、実際、調べてみるとアメリカ式やドイツ式などのテンプレートがあるようです。これは聞き心地として最適だから固定されているのか、それとも「人間が同じステージで一緒に弾く」ための物理制約によるものなのか、が気になったので、空間音響シミュレータと Optuna で検証しました。定量指標が評価基準として妥当かどうかは、適宜聴いて確認していますが、初心者の私にはなかなか難易度が高く精度は微妙かも...

結論としては、伝統的な配置はホールという環境に適応した解で、その環境では実質的にパレート最適でした。一方、残響が少なく楽器との距離が近い環境では明確にパレート最適ではなく、より良い配置が存在し、その差は聴き取れました。ただし、指標上の改善で実際に心地良いかどうかは微妙でした。

1. 何が疑問だったか

楽器の配置が固定されている理由を調べると、大半が奏者側の都合に見えます。

  • 同じセクションの奏者同士が近くにいないと合わせられない
  • 指揮者との視線
  • 楽器の指向性と舞台の反射板の関係 (ホルンのベルは後ろを向いている、など)

つまり「聴衆にとって最適だからあの形」というより、「あの環境で演奏が成立する形」がまず先にある気がしています。だとすると、リモート合奏や仮想環境のように奏者が物理的に集まる必要がなくなった世界では、もっとよい配置があるんじゃないかという気持ちになります。全部バラバラに置いてもいいし、リスナーを取り囲んでもいいはず。

そのときに、各楽器の配置を最適化したら伝統的な配置に勝てるのか? が気になりました。私、気になります。

調べた範囲では「配置そのものを最適化対象にした」先行研究は見つけられませんでした (関連分野は充実していて、無響室で楽器別に録音されたオーケストラ音源や、ホール音響の官能評価などはある)。

2. 作ったもの

以下のパイプラインを構築しました。

  1. 音源: パブリックドメインの弦楽四重奏 (Beethoven, String Quartet Op. 18 No. 1) を使用。楽譜を music21 の内蔵コーパスから読み込み、古典的なダブリング規則で 13 セクション (2 管編成 57 人相当) に編曲し、自作の加算合成シンセで楽器別ステムを生成
  2. 空間シミュレータ: 直方体の部屋を仮定した鏡像法で初期反射を求め、球面頭部モデル (両耳間時間差・レベル差・頭部遮蔽) を通して任意の配置をバイノーラルにレンダリング。拡散音場では残響レベルが音源位置にほぼ依存しないことに基づいて、後期残響は音源ごとには計算せず、全音源で 1 本の残響テールを共有する近似を採用
  3. 指標: 「全声部が聞き取れるか」「楽譜のバランスが保たれるか」「空間的な広がり」など、ホール音響の文献にある知覚属性を定量化 (できていないかもしれない)
  4. 最適化: 13 セクション × (方位, 距離) = 26 次元を、制約付き NSGA-II で探索

配置を切り替えて、俯瞰図と実際の音を比べられます (ヘッドホン推奨)。

設計面の要点は 3 つ:

  • 人間を最適化ループに入れない。1 試行ごとに試聴するのは遅すぎるし、多峰性がひどくて収束しない。シミュレータ由来の指標だけで回して、人間は「指標そのものの検証」に使う
  • 指標の健全性テストを常設する。「明らかに悪いはずの配置は既知の良い配置より悪いスコアになる」という順序関係を assert するテストを CI に常設し、指標を改訂するたびに回す
  • 目的関数をコードから分離する。目的関数の定義はバージョン付きの設定データとして管理し、各試行には目的関数を適用する前の全指標の生値を保存する。1 試行の計算時間はほぼレンダリングと指標計算なので、こうすることで目的関数を改訂しても、再レンダリング不要で保存済みの結果に新しい定義を当て直すだけで過去の全試行を再評価できる

3. 計算結果

ホール条件 (RT60 = 2.0 秒、聴取距離 6〜16 m) で、シード違い含めて約 14 万試行回した結果をまとめると:

  • 伝統的な配置 (アメリカ式) を 3 目的すべてで上回る配置は存在する (実行可能解の数 %)
  • ただしランダム探索 8,000 試行では 1 つも見つからない。進化的な方向付き探索で 1,500〜2,000 試行かけてようやく到達できる狭い領域にある
  • 伝統配置を上回った配置には解釈可能な共通構造があった:
    • ステージの全幅を使い切る
    • 同族楽器のクラスタを解体して混ぜる (ドイツ式の両翼配置の考え方の極端な例?)
    • 弦を近く、金管を遠くに置いて距離をつける

最適化がアメリカ式の配置をどう変形させていったかを確認できます。

次に、目的関数自体の妥当性を検討しました。保存済み試行で指標間の相関を調べると、3 目的のうち 2 つが r = −0.95 でほぼ同じ軸だったり、「空間の広がり」の指標が実は距離の代理変数 (r = −0.74) だったりしました。指標を健全なものに改訂するほど伝統的な配置の評価は上がり、支配する解の数は 7,297 → 249 まで減りました。これが歴史の重み...

副産物として、リスナーを楽器で取り囲む「サラウンド配置」を改訂後の指標で最適化した結果も挙げておきます。勝ち残るのは素朴な円環ではなく同心二層のシェル構造で、パレート解の中央値で見ると、高弦 (Vn.1・Vn.2・Va.) が 3 m 前後の内殻、低弦と一部の木管が 5〜6 m の中間帯、金管・ティンパニを含む残りが 7〜9 m の外殻に置かれ、金管はほぼ一貫してリスナーの背後に回ります。

4. 高速化

実験を素早く回すために 1 試行 2.25 秒 → 0.145 秒 (15.5 倍) まで高速化しました。内訳はメトリクス計算のベクトル化 (2.2 倍) と、NSGA-II の世代並列評価 (ワーカープール 10 プロセス) + Optuna の Journal ストレージ化です。ハマりどころとしては:

  • BLAS のスレッド数を制限せずにワーカーを並べると逆に 2.4 倍遅くなる
  • 並列評価の天井はメモリ帯域で、8 ワーカーくらいで頭打ち
  • ask が遅い正体は「26 パラメータ × 64 試行の逐次 SQL 書き込み」で、Journal ストレージにすると 10 倍速くなる

5. 聴取実験による指標の検証

計算上の最適解が得られたので、次に「指標が知覚と対応しているか」を実際に聞いて確かめました。ブラウザ上で音量を揃えた A/B 試聴環境を作り、伝統配置 (A) とパレート解 (B) を同じ再生位置のまま切り替えて聴き比べています (ヘッドホン必須)。

実際に聞いてみると以下の問題があることが分かりました。

  1. 「広がり」の指標は定位分離を測れていなかった。編成を 2 楽器に絞って残響を振ると、配置の気づきやすさは無響 ≫ 小部屋 > ホールの順で落ちます。原因は全音源で共有される拡散残響で、方位情報を持たず両耳に等しく届くため、ホール距離では配置の手掛かりをマスクします。そこでフレームごとの両耳間時間差 (ITD) のばらつきを測る localization_spread を新設しました。3 条件の聴感順序を再現する、本プロジェクトで唯一「実際に聞いて検証された」指標です。
  2. ホール条件では、そもそも差が聞き取れない。このマスキングのせいで、「良い配置」同士の A/B (20 ペア) は 58% が「同等」で、選好はノイズと区別できませんでした (符号検定 p = 0.145)。差が出るのは残響が少なく距離の近い条件で、そちらで localization_spread を目的関数に加えて再最適化すると、実行可能解の 44% が伝統配置を支配しました (ホールでは数 %)。そのうち 3 つの目的関数の値が最も釣り合う 1 つを選ぶと、全目的で上回り、定位分離のゲインは事前に較正した自分の知覚閾の約 2 倍。ラベルを伏せた比較でも 7 勝 1 敗 (片側二項検定 p ≈ 0.035) でした。
  3. 左右バランスの項が抜けていた。後日繰り返し聴くと選好が逆転し、「伝統配置のほうがまとまりが良い。新配置は左に偏る」に変わりました。この解は左非対称 ([−64°, +74°]) で、左右のエネルギーバランスを評価する項が目的関数になかったのが原因です。加えて、短時間の切替では分離の良い音が、持続聴取では凝集した音が好まれるという聴き方の違いも効いています (音響評価では知られた傾向)。

6. 結論

  • 伝統的な配置はホールという環境に適応した解。ホール条件では計算上わずかに準最適だけど、その差は知覚閾以下。150 年の経験則は実用上正しい
  • 仮想環境 (ドライ・近接) では明確に準最適。より良い配置の候補が存在し (弦の左右分割 + 深度活用、サラウンドなら二層シェル)、差は聴き取れる
  • ただし「どっちが好きか」は単一の答えを持たない。短時間ブラインドでは新配置が有意に選ばれ、反復聴取では伝統の凝集が好まれた。分離 vs 溶け合いのトレードオフがありそう。

7. 限界と今後

  • リスナーは私 1 人、音源はシンセ、頭部モデルは球面近似 (ピナがないので前後が曖昧、±55° を超えると「後ろ」に聞こえがち)
  • 完成した後に YouTube できちんとした演奏を聴いたら、自分の合成音とのギャップが大きかった。ので、今のシンプルな加算合成ではなく、もっとリッチな音の生成方法を考えたい
  • 実測 HRTF (SOFA) への差し替え
  • 「左右バランス指標」と「まとまり (blend) の目的化」、切替選好 vs 持続選好の 2 モード評価も未実装

おわりに

「オーケストラの配置って最適なの?」という素朴な疑問から、シミュレータ・最適化・高速化・心理物理実験 (n=1) まで一周しました。 実際にやって思ったけど、音の聞き分けは初心者には難しいし、いつも聞いてる音楽はだいぶノリで聞いてるんだな、と