foobar2000 UPnPコンポーネント「Decoding to PCM」設定を見直し

foobar2000をDigital Media Server(DMS)として使うのエントリー内で、「Decoding to PCM」設定について「N-50は2年前の製品とはいえファームウェアアップのおかげもあって対応フォーマットは多いため「Never」にしています」と記述しましたが、この内容が間違いであることが判明しました(元記事は修正してあります)。

fb2k-DtP-000

 

「Decoding to PCM」設定の部分は右にある「Except」フィールドを考慮しつつ設定する必要がある項目で、以下のような挙動になります。

(ここでの「ストリーム」はWAVEやAAC、FLAC、ALACといった圧縮・非圧縮形式の事を指します)

・always – wav:Exceptフィールドに記入した拡張子はソースファイルのストリームのままDMRへ送出し、登録外拡張子の場合はWAVEに変換しDMRへ送出する。
・always – lpcm:Exceptフィールドに記入した拡張子はソースファイルのストリームのままDMRへ送出し、登録外拡張子の場合はリニアPCMに変換しDMRへ送出する。
・never – wav:Exceptフィールドに記入した拡張子関係なく、全てWAVEに変換しDMRへ送出する。
・never – lpcm:Exceptフィールドに記入した拡張子関係なく、全てリニアPCMに変換しDMRへ送出する。

以上の動きから考えると、N-50にとって一番良い選択は「always – wav」となります。N-50はDSD以外のファイル形式はほぼ対応で、WAVEであれば192kHz/24bitまで再生可能なためです(リニアPCMの場合は48kHz/16bitまで。USB-DACモードでは192kHz/32bitまで入る)。

この挙動に気がついたのは、AAC圧縮したファイルを再生しているときでもN-50側の液晶画面に「WAV 44.1/16」と表示されていたためです。N-50はAACストリームも再生できるので、DMSからなるべくファイルオリジナルのストリームで流れてくるように設定したはずなのに・・・と、前回記載したURLを見ていたところ、URLの末尾が「convert=wav」となっており、「Decoding to PCM」設定を変更しながらURLを確認したところ、上記の結果が判明しました。

 

AACストリームをWAVE送出していた(never – wav)場合のN-50の液晶画面とfoobar2000上のプロパティ。プロパティ内の「File path」末尾に「convert=wav」の文字が見える。File SizeもAACストリームにしては大きい。

リニアPCM送出に設定(never – lpcm)した場合のN-50の液晶画面とfoobar2000上のプロパティ。プロパティ内の「File path」末尾が「convert=lpcm」に変化する。ちなみに、N-50はリニアPCMストリームを受信したときはストリーム形式は何も表示されない。

 

ソースファイルのストリームで送出するように設定(always – wav)した場合のN-50の液晶画面とfoobar2000上のプロパティ。プロパティ内の「File path」は拡張子m4aのままとなり「codec」はAACとなっている。

「Decoding to PCM」設定がややこしいのは、「Exceptフィールドに登録した拡張子以外に対して」alwayなのかneverなのかを選択する設定のためかと思います。私も最初は登録拡張子のフィールドのことを深く考えずにエントリーを作成したため、間違いを書いてしまいました。

なお、今回のエントリーを作成する際に、Exceptフィールドに登録する拡張子も見直しして、N-50で再生できるストリームの拡張子を追加登録しました。

>mp3,mp4,wma,aac,m4a,wav,flac,aif,aiff,pcm,lpcm

これで、上記の拡張子は変換することなくDMRであるN-50に送出されるようになり、DMS役のfoobar2000を動かしているPCの負担は更に減る形となりました。

広告

foobar2000をDigital Media Server(DMS)として使う

さて、DMCは用意できましたが、DMS(Digital Media Server)がまだありません。UPnPではWindowsのファイル共有は見つけてくれませんので、何らかのUPnP対応メディアサーバーを動かさないといけないのですが、ここでもfoobar2000が活躍します。

今回は24時間動かしたままの自宅TV録画サーバーにfoobar2000を入れて、DMSだけを行うように設定しました。
設定はfoobar2000内の「Preferences」から行います。

まずは、foobar2000が音楽ファイル格納場所として認識するフォルダを登録します。

fb2k-dms-001

 

ウチの環境ではネットワークドライブ(Mドライブ)に、WindowsServer2008上の共有フォルダを設定しており、ネットワークドライブ中の「Music」フォルダを登録しました。登録後はfoobar2000によって自動ファイルスキャンが行われ、foobar2000のアルバムリストにファイルが登録されていきます。

次に「Tools→UPnP→Server→Basic Setting」にて、稼働させるサーバー(DMS&DMR)を設定します。

fb2k-dms-003

 

今回はMedia Server(DMS)だけ「Server is started」状態にし、サーバー名を変更しました。

「Always use the Default streaming profile for all devices」はチェックを入れています。このチェックは、DMSに接続してくるDMRの能力に合わせて設定プロファイルを切替える機能を有効にするかどうかだと思うのですが、その機能は使わないためです(下記参照)。

次は「Content」を設定します。ここはデフォルトのままでも良い感じですが、自分には必要の無いビュー項目があったので幾つか外しています。
(画面を見て頂くとわかりますが、DMSを選んだ後に出るアルバムやプレイリストビューといった表示項目を設定しています)

 

fb2k-dms-004

この画面の下部に「Customize Media Library Tree」ボタンがありますが、ここも変更しています。デフォルトで登録されている「アルバム・アーティスト」や「アーティスト」といったビューは使っていないので、表示されたファイルの元ファイルを(XML)をテキストエディタで削除し、一番使う「Folder」ビューを一番上に持ってきてあります。

fb2k-dms-005次に「Straming Profiles」を設定。ここではDMRへ送り出すストリームの設定を行いますが、使っているDMRの性能に合わせて設定を行わないと、適切なフォーマットが送信されなくなってしまいます。N-50はネットワーク経由でも192/24データを受けてくれるので「Renderer Capabilities」はsamplerate rangeを44100~192000、Max bit depthを24へ変更しました。

次の「trancecoding to MP3」は特定のフォーマット(拡張子で判定)をMP3に変換して送出する機能のようですが、使わないため「never」にしています。

その下の「Decoding to PCM」は登録した拡張子以外のフォーマットを、PCMに変換して送出するかどうかの設定かと思われます。更にそのフォーマットをWAVE互換にするのが、リニアPCMで送るかといった設定かなと。これもDMRが対応していないフォーマットをフォローするための機能の一つで、N-50は2年前の製品とはいえファームウェアアップのおかげもあって対応フォーマットは多いため「Never」にしています。「Always」にしています。「Decoding to PCM」部分について間違いがありましたので、訂正も兼ねて別エントリーを作成しました(2014/4/19追記)。

ここまで設定したら完了で、OKをクリックし設定画面を閉じ、foobar2000を再起動します。再起動するのはライブラリ内容がDMS部分に反映されないためです。本来は自動更新なのだろうと思いますが、自分の環境ではその連携が上手くいきませんので、手動再起動しています。

設定が完了した後はハイレゾファイルなどを再生して、オリジナルファイルのフォーマットのまま再生されているか確認します。N-50は本体側に液晶画面があるので、この点はラクです。

なお、DMSとしてのfoobar2000は起動させたままですが、CPUパワーとメモリは殆ど使っておらず、本来のTV録画には全く支障がありません。

fb2k-dms-007fb2k-dms-008

 

 

 

フォーマット変換機能を使用した場合は不明ですが、素のまま送出している限りは「そよ風」レベルでした。

foobar2000をDigital Media Controller(DMC)として使う

2月下旬にパイオニアのUSB-DAC兼ネットワークオーディオプレイヤーである「N-50」を購入しました(詳しくは別エントリーの予定)。

N-50をDMRとして使うにはDLNAクライアント(DMC)のアプリケーションが必要ですが、DMCアプリはiOS等では幾つもアプリケーションが出ているのでそちらを使えば良いのですが、PCの前にいるときは、なるべくそのPCで用事を済ませたい身としては、Windows上のアプリでこなしたいなぁと。

そこで、これまで使用頻度が低かった「foobar2000」を「メディアコントローラー(DMC)」として使うことにしました。
使用しているプラグインは「foo_upnp」です。

foobar2000: Components Repository – UPnP/DLNA Renderer, Server, Control Point
http://www.foobar2000.org/components/view/foo_upnp

インストールなどの手順は省略します(このエントリーを見つける人なら、それぐらいは大丈夫かなと)。インストール後、DMCと使う場合は設定箇所は殆ど無く、メニューからウィンドウを2つ呼び出すだけです。

まずは、「View」メニューから「UPnP Browser」を呼び出します。

 

fb2k-dmc-001

自動的にネットワーク上のDigitalMediaServer(DMS)をリストアップし、一覧にしてくれます。一覧から対象のサーバーをクリックしていくと、DMSからアルバムやフォルダといった他のDMCでもおなじみの表示がツリー状に展開されていきますので、あとは目的のアルバム、フォルダまで進みます。

 

fb2k-dmc-002

たどり着いた後は(今回はフォルダ表示)目的のアルバム・フォルダ上で右クリック→「Send to Current List」にて「UPnP Controller Playback Queue」へ曲リストを送信すると、DMRへ送信する曲リストに入ります。曲リストに入ったあとは、foo_upnpが用意している「UPnP Controller」ウィンドウで再生操作が可能です。

fb2k-dmc-003ウィンドウ上部プルダウンメニューからDMRを選択(今回はN-50と表示されている)

ハマりやすいのはfoobar2000の通常のライブラリ登録から選んで、「UPnP Controller Playback Queue」タブへ登録しても再生できないことです。必ず、DMS上にあるファイルを「UPnP Controller Playback Queue」タブへ登録しないといけません。

なお、この手順では曲データはDMSからDMRへ直接送信となり(正確にはDMRがDMSへ取りに行っているのですが)、DMCを行っているfoobar2000は経由しません。DMCはUPnp内部で処理されているURLをDMRに渡すだけで、データを直接流したりはしないようです。その証拠に、DMCアプリを動かしているPCのネットワーク送受信状況を見ていると、DMRやDMSとはほぼ通信をしていない状態になっています。

DMCとして使っているfoobar2000上で「UPnP Controller Playback Queue」に登録した曲をクリックし、Propertiesを見るとわかりますが、DMRへの指示もHTTPベースで行われていて、UPnP自体はWebの技術をベースに拡張された物だとわかります。

fb2k-dmc-004
「File Path」部分のグレー塗りつぶし下にはDMSを行っているPCのIPアドレスが表示

次はfoobar2000でMedia Serverを動かす事について書いてみます。