Windows PCのデジタル(S/PDIF)とアナログの音声を同時出力させたい

S/PDIFとミニプラグのオーディオケーブル

今年の6月に自作PCをリプレースして、Haswell環境に乗り換えた。以前は安価なM/Bを使っていたためデジタル(S/PDIF)出力がなく、不便なので安いC-Media製のサウンドカードを追加していたのだが、M/Bの更新に伴い引退させることにした。

購入したのはASROCKの「Z87M Extreme4」というM/Bで、これには標準でS/PDIF出力がついている。しかし、それ以上にサウンドカードを引退させた大きな理由があって、それはこのM/Bのオンボードサウンドが想像以上に「音が良かった」ことによる。

B00CYA5E8M

Z87M Extreme4のサウンド機能は、ASROCKがアピールするように、オンボードなのにかなり力を入れた作りになっているようだ。買って後付けしたC-Mediaのサウンドカードより再生される音声がクリアで、低音も力強く、M/Bに直接ヘッドフォンを繋いでもノイズがまったく乗らない。まさに「(格安)サウンドカード形無し」といった感じで、オンボードより音が悪いサウンドカードなんてわざわざ付ける意味はない。というわけで、現在は完全にオンボードサウンドのみで使用している。

「音が良くなった」かわりに「音が出ない!」

とここまでの「サウンド環境が改善された!万歳!!」という話で終わればいいのだが、残念ながら困った事態が発生してしまった。Z87M Extreme4に搭載されているのはRealtekの「ALC1150」というサウンド用のチップなのだが、C-Mediaのチップで可能だった「デジタル(S/PDIF)とアナログの同時出力」がWindows 7環境でできなくなってしまったのだ。出力は排他処理になっていて、デジタルで音声を出力すればアナログ側は完全に沈黙するし、アナログ出力に設定を変えれば逆になる。

自分の環境の場合は、アンプに繋いでいるのはS/PDIFなので、「基本はデジタル出力」ということになる。しかし、ヘッドフォンはPC本体(の前面パネルの出力)に繋いでいるため、当然ヘッドフォンを使うときはそこから音が出て欲しい。ところが前述のように、デジタル出力のS/PDIFから音を出すとアナログのヘッドフォン出力は沈黙する。「アンプにヘッドフォンを繋げば?」と思うかも知れないが、アンプの設置場所はPCから離れているためヘッドフォンのケーブルが邪魔になるし、そもそも使うたびにケーブルを抜き差しするのは正直面倒としか言いようがない。つまりどうにかして「S/PDIFとヘッドフォン(アナログ)の出力を同時に使いたい」わけだ。

この「デジタルとアナログの出力が同時におこなえない」問題について色々試してみたので、結果を書いてみたい。

デジタルとアナログを同時に出力する方法はあるにはあるが……

この「Windows 7などでデジタル出力とアナログ出力が排他利用になり、『既定のデバイス』に設定した方でしか音が出ない」という問題は比較的メジャーなものらしく、対策方法を書いたページがいくつか見つかる。前述のように以前使っていたC-Mediaのチップでは普通にできていたので、OSと同時にドライバにも左右される問題なのだと思うが、できないチップ(環境)の方が多いのかもしれない。今回使用して問題が起きているのがRealtekの新型チップであることを考えると、オンボードサウンドではメジャーなRealtek製のドライバでは以前から起こっていた現象なのだろう。

話を戻すと、この問題への対処方法として、「アナログの音声をステレオミキサーで録音し、デジタル出力させる」というテクニックがある。元のソースがアナログになってしまう(デジタルを録音してアナログに回すことはできない)こともあってあまりスマートな方法ではないが、多くの環境でコストもかからず実行できるというメリットがある。

サウンド画面に表示される「ステレオミキサー」
デフォルトでは非表示になっている「ステレオミキサー」だが、「録音」タブの右クリックから「無効なデバイスを表示」を選択すると表示される。これでアナログ出力を“録音”してデジタル(S/PDIF)端子に出力する形になる。

早速試してみたところ、確かに両方から音が出るようになった。しかし、以下の理由により「自分の環境では常用できそうにない」という結論に達してしまった。

  • デジタル出力の音量がアナログ出力の音量に“引きずられて”しまう。つまり、アナログのボリュームを調節するとデジタル側の音量もそのまま変わってしまうので、実質的にデジタル出力単体での音量調整ができない。
  • (上と関連して)ヘッドフォン用なのでアナログ出力の音量は常用できるレベルに絞りたいが、そうするとそれ(アナログ)を録音しているデジタル側の音が出なくなる。(正確にはボリュームが非常に小さくなって、聞き取れないレベルになる。)
  • デジタル(S/PDIF)側はアンプのボリュームを上げる方法もあるが、アナログのボリュームをかなり絞った状態で無理に音量を上げても、ノイズが酷くなってまともに聞ける状態にならない。

アナログ出力で使いたいのがヘッドフォンではなく、普通のライン出力だったら良かったのかもしれないが、とにかく自分の環境では使い物にならなかった。仕方ないので「ステレオミキサーを使う」という方法は諦めて、別の手段を探すことにした。

同時出力は諦めて「切り替える」方法に変更

その後も別の方法がないかと色々探してみたのだが、結局のところ同時出力は無理だった。ドライバの更新なども試してみたのだが、「アナログでフロントパネルとバックパネルの出力を同時におこなう」ことはできても「デジタルとアナログを同時に出力する」ことはできない。タイトルに書いた当初の目的は、残念ながら達成できなかったということになる。

ALC1150のデバイス詳細設定
デバイスの詳細設定の画面。「前面および背面の出力装置で同じオーディオストリームが再生されます。」はアナログ出力のときに、フロントとリアパネルの両方で同じ音声を出力する項目で、デジタルとアナログをまたぐような運用はできない。

その後少し考えて、発想の転換をすることにした。Windows 7の音声の出力対象は、どのデバイス(出力)を「既定のデバイス」に設定するかによって変わる。OSの内部処理としては、「デジタル出力とアナログ出力は別のデバイス」として認識しているわけだ。

「既定のデバイス」の設定
Windows 7での「既定のデバイス」の設定。Vista以降はここで設定したデバイスしか出力されない場合が多い。ただし、サウンドカードによっては、ドライバ側で両方の同時出力に対応していることがある。

今回自分がやりたいのは「普段はS/PDIFで出力し、ヘッドフォンを使いたいときはアナログ(フロントパネル)出力を使う」ことで、これなら必ずしも同じものが常時出力されている必要はない。アンプをメインと考えるなら、ヘッドフォンを使いたい任意のタイミングで、出力を動的かつ簡単に切り替えられれば良い。

早速いいソフトがないかと思って探してみたところ、見つけたのは「App=Device」というフリーソフト。起動するとポップアップメニューが開いてサウンドデバイスの一覧が表示され、1クリックで「既定のデバイス」を切り替えることができる便利なソフトだ。

ダウンロードして(インストーラーはないので)任意のフォルダに保存し、ショートカットを作ってクイック起動に設置したのが以下の画像になる。ソフト自体にアイコンがなかったので、わかりやすいようにスピーカーアイコンを別途用意したが、それ以外は何の問題もなく使用準備が整った。

「App=Device」をクイック起動に入れた状態
「App=Device」をクイック起動に設置した様子。標準ではアイコンが用意されていないので、わかりやすいように青いスピーカーアイコンを設定した。

実際に左クリックしてみると以下のようになる。両方とも「Realtek High Definition Audio」と表示されて同じものに見えるが、実際は上がデジタル(S/PDIF)出力で、下がアナログ出力になっている。ここで選択を変えると、音楽の再生中やゲームの最中でも即座に音声の出力先が切り替わる。「サウンドの設定プロパティを開く → 既定のデバイスを変更」という普通の手順よりずっと楽だ。

「App=Device」をクリックしたときのデバイスの表示
「App=Device」をクリックするとデバイスの一覧が表示される。デジタルとアナログを切り替える場合はデバイス名が変わらないため、どっちがどっちなのか、かなりわかりにくい。

もちろん、この方法にも問題はある。上記のようにデバイス名が同じになってしまうため、慣れるまではかなり間違えやすいし、結局手動で切り替えないといけない点は変わらない。切り替え忘れて「あれ、音が出ない?」ということはあるし、逆に「意図しないときに、意図しない方から音が出る」ということもある。「両方同じものが出力される」という一番望ましい状態から考えれば、手間が増えてしまうことは避けられない。

それでも今のところ、自分が探した限りこれ以上いい方法は見あたらない。「同時出力できる新しいサウンドカードを買う」というような別途コストがかかる方法を選ばず、かつステレオミキサーを使う手段も選べないなら、現状これが「ベターな解決法」ということになるのではなかろうか。