オーディオの裏技 — 機器セット(Aggregate Device)がうまく機能しないときの対処法
これが私のハードウェアや環境固有の問題なのか、それとも他の皆さんも同じ状況に直面しているのかはわかりませんが、同じことや似たようなことを実現しようとしている誰かの助けになるかもしれないと思い、その仕組みと対策をまとめてみました。少なくとも私にとっては…
- 筆頭著者
- @Dies 公開日: 2008-11-28
- 収録コレクション
- OSx86 10.X コア基盤&ブートアーキテクチャ
- アーカイブ記録規模
- 累計閲覧 212,798 回 · 厳選フィールドノート 5 件(全 6 件の投稿より抽出) · 2008-11-28 – 2011-11-13
- 参加・検証メンバー (5)
- @Dies (2)@Ianxxx@fahrvergnuugen@mr_murder@zorro23
- 対応ハードウェア参照
- Mac USB Audio DACs ↗ SATA III & NVMe SSDs ↗ USB 3.2 Boot Flash Drives ↗
これが私のハードウェアや環境固有の問題なのか、それとも他の皆さんも同じ状況に直面しているのかはわかりませんが、同じことや似たようなことを実現しようとしている誰かの助けになるかもしれないと思い、その仕組みと対策をまとめてみました。
少なくとも私にとってこの情報は非常に見つけにくく、ようやく解決策にたどり着いたときには内容がかなり古くなっていました。参考にしたスレッドへのリンクをここに貼りたかったのですが、残念ながら二度と見つけられなくなってしまいました…
非標準ハードウェア上でOS Xを動かすにあたって私が直面した大きな欠点の1つは、他の主要なOSであればドライバさえ入っていれば利用可能なすべての出力へ同時に音声を出力するくらい何の造作もないことなのに、OS Xではその扱いがまったく異なるという点でした。想定通りのコンポーネントが揃っている環境であれば他のOSよりはるかに優れたフレームワークなのかもしれませんが、今回のケースではあまり親切とは言えませんでした。
HDAにパッチを当てた後、オンボードサウンドは無事認識され、ヘッドフォン、ライン出力、S/PDIF、マイクと、必要なものはすべて問題なく動作しました。ここまでは順調です。あとはライン出力とS/PDIFの両方に同時に音を出すだけでした。調べた限りでは、「機器セット(Aggregate Device)」を作成するだけでいとも簡単に「そのまま動く」はずでした。
ところが、実際に試してみた結果は以下の通りでした:
a.) まったく機能せず、どう設定しても、機器セットのリストの一番上にある1つの出力からしか音が出ない。
b.) デジタル出力にはソフトウェア音量調整がないため、仮に機器セットが機能したとしても、そのデバイス全体のソフトウェア音量調整が効かなくなってしまう。
そこで私の環境で解決策となったのが、Soundflower ↗ と、Xcodeに含まれている /Developer/Applications/Audio/AU Lab の組み合わせでした。Soundflowerをインストールすると、2チャンネルと16チャンネルの仮想(擬似?)オーディオデバイスが追加されますが、これらはルーティングを指示するまでは何もしません。そこでAU Labの出番となります。
Soundflowerをインストールして再起動した後、「Audio MIDI設定」を開き、デジタル出力、ライン出力、そして新しく追加されたSoundflower 16chデバイスで構成される「Surround Sound」という名前の機器セット(Aggregate Device)を追加しました。次にAU Labを開いてそれらの新しいデバイスを活用します。アプリを開くと最初に表示されるウィンドウで出力をいくつか追加し、ライン出力用とS/PDIF用の出力を用意しました。
次のセクションでは、入力は1つだけで十分です。
その次のセクションが重要なポイントで、「Input Channels」をクリックしてSoundflower 16chデバイスを選択しました。
続いて「Output Channels」をクリックし、先ほど作成した「Surround Sound」デバイスを選択して「Done」をクリックしました。
その結果、このような構成になりました。
追加したBus 1とBus 2は、音をより大きくクリアにするアンプのような役割を果たしています。また、未使用の出力が1つ置いてあるのは、これがないと時折ひどいハウリング(フィードバック)が発生することがわかったためです。
この解決策はお世辞にもスマートとは言えませんし、厳密にはサラウンドではなくステレオの複製ですが、私の用途には十分機能しています。7つのスピーカーすべてとサブウーファーから音が出ていますし、ソフトウェアでの音量調整も効きます。ログイン時にこの設定ファイルが自動で開くようにしておけば、あとは最小化するか右クリックで隠すだけで済むため、手間もそれほどかかりません。
この情報が誰かのお役に立てば幸いです。
コミュニティ検証報告・技術フィールドノート
全 6 件のオリジナル投稿から技術的価値の高い 5 件の検証報告を収録
素晴らしい方法ですね、ありがとうございます。
起動するたびに手動で最小化しなくて済む方法を見つけました。
TextMateで .au ファイルを開き、一番下までスクロールして以下の記述を
<key>Window Frame</key>
<string>{{388, 40}, {355, 577}}</string>
<key>Window Max</key>
<string>{2560, 1622}</string>
<key>Window Min</key>
<string>{360, 540}</string>
次のように書き換えます:
<key>Window Frame</key>
<string>{{1, 1}, {1, 1}}</string>
<key>Window Max</key>
<string>{2560, 1622}</string>
<key>Window Min</key>
<string>{1, 1}</string>
先にファイルを閉じずにアプリを終了するとクラッシュメッセージが出てしまうのが玉に瑕ですが、まあ贅沢は言えませんね。
よりスマートなアプローチとしては、Soundflowerと同じ開発元が出している「Upmix」というプログラムを使う手がありますが、残念ながら有料ソフトであるばかりか、なんと500米ドル近くもします。
編集注:Ianxxxさん、申し訳ありません、誤ってあなたの投稿の前半部分を削ってしまいました。お手数ですが追記していただけますか?ごめんなさい。
全然構いませんよ :-) Ian
この記事へのお礼を言うためだけにアカウント登録しました。Macから2枚のサウンドカードへ同時出力する方法を探して丸2日も悪戦苦闘していたんです。まさかここまで難しいとは思ってもみませんでした。
素晴らしいガイドです (Y) ありがとうございます。いずれもっと「すっきりした」解決策が出るといいですね… VoodooHDAがなかなか有望そうです。
@Diesa.) まったく機能せず、どう設定しても、機器セット(Aggregate Device)のリストの一番上にある1つの出力からしか音が出ない。
ステレオ音源を再生している場合はそういう挙動になります。OS Xには統合されたスピーカーフィル(Speaker Fill)機能がないため、ソースメディア側で指定された個別のチャンネルにしか音声信号が送られないのです。Perianをマルチチャンネル出力に設定した状態で、AC3 5.1ch音声付きの動画ファイルなどを試されましたか?なお、Apple純正のDVDプレーヤーはS/PDIF(デジタル出力)経由でしか5.1ch出力ができないため、マルチチャンネル出力にはVLCを使う必要があります。
@Diesb.) デジタル出力にはソフトウェア音量調整がないため、仮に機器セットが機能したとしても、そのデバイス全体のソフトウェア音量調整が効かなくなってしまう。
S/PDIF出力でソフトウェア音量調整が効かないのは普通の仕様ですよね?出力がソフトウェア側で処理されているわけではなく、単にデジタル信号としてそのままパススルーされているだけですから。
私は5.1ch出力のために3系統のライン出力を機器セット(Aggregate Device)として束ねて使っていますが、それでもやはり音量調整が効きません(ALC888)。おそらくこれは機器セット自体の仕様上の制限だと思います。
ただ、ちょっとした回避策を編み出しましたので、同じ問題を抱えている方は以下の手順で強制的にソフトウェア音量調整を有効にできるはずです:
1) 使用する各出力の音量を、「サウンド」環境設定であらかじめ最大にしておきます。
2) 通常通り機器セットを作成し、「Audio MIDI設定」でスピーカーを割り当てます。
3) Soundflowerbedを使って、機器セットの6つのチャンネルをSoundflower (16ch) の最初の6チャンネルに割り当てます。
4) デフォルトの出力としてSoundflower (16ch) を選択し、「Audio MIDI設定」でマルチチャンネル出力用のスピーカー構成を設定します。
5) これで5.1ch環境でもソフトウェア音量調整が使えるようになります!
どなたかのお役に立てば幸いです…
@mr_murderS/PDIF出力でソフトウェア音量調整が効かないのは普通の仕様ですよね?出力がソフトウェア側で処理されているわけではなく、単にデジタル信号としてそのままパススルーされているだけですから。
技術的な観点から言えば、もちろんあなたの言う通りです。そのデジタル信号を受け取る機器、あるいは最終的な音声出力を行うアンプ側で音量調整を行うのが前提になっていると言えます。
ただ、少なくとも私の経験上、他の主要なOS(LinuxやWindows)では利用可能なすべての出力に対して標準でソフトウェア音量調整が提供されているんですよね。
特定のデバイスで発生する音声遅延(音ズレ)について
Lionでは「Audio MIDI設定」で「複数出力装置(Multi-Output Device)」を簡単に作成できるようになり、複数の出力から同時に音を出すこと自体は非常に手軽になりました。
私のHackintosh環境では、標準のアナログライン出力をステレオアンプに接続し、さらにHDMI出力をLG製液晶テレビ(小型のステレオスピーカー内蔵)に接続しています。
問題は、液晶テレビ側の音声に目立った遅延(ディレイ)が発生することです。
両方のスピーカーから完全に同じタイミングで音が出るよう、デジタル出力側にはディレイをかけず、ライン出力側にだけディレイ(遅延)を適用できるような解決策を探しています。
どなたか良いアイデアをお持ちではありませんか?
出典および貢献者来歴(クレジット登録 5 名 · 元スレッド #1645)
| ユーザー名 | 貢献ロール | 投稿数 | 活動期間 |
|---|---|---|---|
| @Dies | 筆頭著者 | 2 | 2008-11-28 → 2009-04-27 |
| @Ianxxx | 検証メンバー | 1 | 2008-12-17 |
| @fahrvergnuugen | 検証メンバー | 1 | 2009-04-03 |
| @mr_murder | 検証メンバー | 1 | 2009-04-25 |
| @zorro23 | 検証メンバー | 1 | 2011-11-13 |