«

»

1月 14

Foobar2000 と WASAPI 排他モード と Steinberg UR12、SoundBlaster Z の設定

あけましておめでとうございます(・_・)(._.)

自分でも驚き!の1年ぶりの更新でござります。
最早このサイトも運営している意味を失っているような気がしてなりませぬ・・・
もとよりMMORPGのプレイ日記という位置づけで始めたものですが、最近ほんとにゲームしなくなってしまったので単純に 『記載するネタが無い』 のと 『ちょっとしたことでも載せれば良いのだけれど、存外時間を確保できない』 というのにつきますね。

ここ数ヶ月は League of Angels 2 というブラウザゲームをちまちまとプレイしてました。いちおうMMORPG的な要素はありますが実際のところはソロゲーですw とまぁこれについてはもし別に語る機会があればということで閑話休題。




もはやMMORPGネタでもなんでもありませぬが、最近PCでBGMを掛けながら作業をするときは Foobar2000 という音楽プレイヤーを使っております。日本語対応はされていませんが、利用者が多いフリーウェアなので分からないことをWEB検索すると沢山の有識者のサイトがヒットするのであまり困りません。
ありがたや〜

Foobar2000は普通にデフォルトのまま使うのであれば大して難しいことは無いのですが、ややこしくなるのが Hi-Res 再生をしたい時です。

Windowsの場合、音の出力は通常はOS側でハンドリングされていて WASAPI 【Windows Audio Session API】といふ機構で、音楽プレイヤー、WEBブラウザ、Windowsの警告音などの出力が並列処理されて同時に出力可能となってます。

詳しい解説:
WASAPI 排他モード – foobar2000でさらなる音質向上を目指してみよう
楽しいハック講座 (4) Windows7 オーディオアーキテクチャの概要

んで、簡単に言うと同時に出力するためにWindows側で、いわゆるダウンミックス的な事が行われます。それが WASAPIの 『共有モード』 ってやつでして標準動作なわけです。日常使いであればむしろそれぞれのアプリケーションから並列して音が鳴ってくれないと不便ですよね。

例えばフルスクリーンでゲームしつつ、バックグラウンドでのメール着信音、Skype関連の音など聞こえないと不便なわけですし。

ただ、音楽プレイヤーで純粋な音で楽しみたい場合に、 WASAPIの 『共有モード』 だと Windows側で処理してから出力されているので、言わば意図せぬ加工が掛かった音ということになります。

これが気になる皆さんは世界中にいらっさるわけでっす。そこで WASAPIの 『排他モード』 を使って純粋な出力を行おうという形。もちろん文字通り排他なので、Foobar2000で音を出しているときは他のアプリの音は完全に遮断されてます。この場合、Foobar2000で音楽再生を始めると他のアプリで鳴っていた音が無音になります。

2018-0108-Foobar2000-WASAPI-01 この機能、Foobar2000に標準で付いていて欲しいところですが手動でそれ用のコンポーネント入れて設定する必要があります。

WASAPI output support ←これを入れて有効にします

2018-0108-Foobar2000-WASAPI-02(1) Foobar2000のFileメニュー>Preferenceで Playback>Output のところで出力Deviceの選択を変更します。 WASAPI の場合、Event と Push ってありますが色々な参考サイトによれば Event の一択みたいなので、 WASAPI(Event) の Steinberg UR12 のを選びます



各種レートの確認用にサンプルファイルを使っています:
ハイレゾ音源の無料サンプルダウンロード先一覧
SONYのハイレゾファイルのサンプルのダウンロード
JVCのハイレゾファイルのサンプルのダウンロード


2018-0108-SteinbergUR12-Error01まぁ結論から言うと素直には音がでません。
どうやら Steinberg UR12 側の設定でサンプルレートを 192Khz に設定しているので、これ以外のレートだと図のようにサポートしていない形式だとエラーになるからです。




2018-0108-Foobar2000-WASAPI-04(2) なので192KhzでないファイルはReSamplingして192Khzに変換(アップサンプリング)して再生する必要があります。Foobar2000には標準で Resamplerは2つ付いているのですがどちらも最大96Khzまでしか設定できないので使えません。なので MultiResampler というコンポーネントを入れて、192KhzにResampleできるようにしました

これの設定には ReSampling Quality といふ項目があるのですがアタクシは規定値のまま使ってます。これについてのちゃんとした説明もあります


これでエラーは出ずに再生できました・・・とはいえ192Khz以外のサンプルレートのファイルの再生が純粋な出力と言えるのかどうかは微妙ですがw



という感じで頑張ってみたもののホント身も蓋もない話なのですが、アタクシがそもそも外付けしている Steinberg UR12 や内蔵サウンドカードの SoundBlaster Z (略してSBZ) には ASIO ドライバーというのが付属しているので、コレを使って再生するほうが世話無しでした。

WASAPI は Windows に含まれる機能なのですが、ASIOは対象機器(Device)専用の製造元が提供しているドライバーです。ぢつわASIOドライバーを経由したほうが尚のこと純粋な出力がされるようなのです。

参考サイト:ASIOとWASAPIの解説
そしてFoobar2000のASIOをさぽーとするコンポーネント:ASIO support

ASIOドライバー経由だと Steinberg UR12の場合、こんどはMultiResamplerは不要でした。Output に Steinberg UR12 の ASIO のを選択するだけです。どうやら Steinberg UR12 側で上手いことやってくれているようです。




さてさて、Steinberg UR12 経由での出力は結局 ASIOドライバー を使うことで解決かなと。

2018-0108-SBZ-ASIO-Setup02で、もう1つはPCに内蔵している SBZ 経由での出力関する設定です。正直これが面倒な感じでした。

まず、SBZ はサウンドカード側のソフトでいろいろやってます。なのでまずは出力の設定を変更する必要があります。SBZ用の PRO STUDIO を開いて 「ステレオダイレクト」 に切り替えます。これによりパススルー出力が可能になり、出力時のサンプルレートに192Khzが選択可能となります。SBZの場合、ステレオダイレクトではない場合の最高レートは92Khzとなってしまいますので。

Foobar2000 の Preference で Steinberg UR12 と同じように OutputのDeviceに WASAPI(Event) :スピーカ(Sound Blaster Z) を選択するだけでOKです。 MultiResampler は不要でした。どうやらSBZのハードウェアのなかで上手いこと処理してくれているようです。そういう意味ではSBZのほうが非常に簡単に WASAPI の排他モードが実現できました。

2018-0108-SBZ-Error-01問題があったのはSBZのASIOドライバー経由です。OutputのDeviceに ASIO:Creative SBZ Series ASIO を選んで再生しようとしたもののエラーになります。SBZ用の PRO STUDIO で『ステレオダイレクト』にしているとエラーになってしまう・・・ いろいろガチャガチャといじっているうちに再生できたこともあったのですが、いまは何をしても再生できなくなりました(汗  SBZのステレオダイレクトをやめると再生はできますが192Khzの音楽ファイルは92Khzにダウンサンプリングされていることは間違いなさそうです。

このため Steinberg UR12 で再生するときは ASIOドライバー、SBZで再生するときは WASAPI 排他モード を選択する感じとなりました。 ま、今はフロント側のスピーカーがたいした物では無いのでサンプルレートを上げても良く違いが分からないという(*/..)o

コメントを残す

メールアドレスが公開されることはありません。

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

CAPTCHA


Share