
DSP ManagerでCrossfaderを追加し、Fade durationを20000msに設定
DSP ManagerでCrossfaderを追加し、Fade durationを20000msに設定
DLNAでのややこしいメディアライブラリー一覧が嫌いな自分は、foobar2000でのDMS導入時に一覧内容をカスタマイズしシンプルな表示に変更しました。が、まだシンプル化が足りていないことが判明。
foobar2000のUPnP Browserから「Albums」を選択した後が、いわゆる「Album/Artist表示」になっていました。だいたい、アルバム毎に聞きたいのに、そこからさらにアーティスト毎に分けて聞きたいとは思わないわけですよ。というわけで、今回も「foo_upnp_ml_tree.xml」を編集して改善します。
変更前
<MediaLibraryTree>
<SubTree label="Folders" type="filesystem"/>
<SubTree label="Albums">
<spec type="object.container.album.musicAlbum">%album%[ ‘[‘%album artist%’]’]</spec>
</SubTree>
<SubTree label="Genres">
<spec type="object.container.genre.musicGenre">%<genre>%</spec>
<spec type="object.container.album.musicAlbum">[%album artist% – ]%album%</spec>
</SubTree>
<SubTree label="Codecs">
<spec>%codec%</spec>
<spec type="object.container.album.musicAlbum">[%album artist% – ]%album%</spec>
</SubTree>
</MediaLibraryTree>
変更後
<MediaLibraryTree>
<SubTree label="Folders" type="filesystem"/>
<SubTree label="Albums">
<spec type="object.container.album.musicAlbum">%album%</spec>
</SubTree>
<SubTree label="Genres">
<spec type="object.container.genre.musicGenre">%<genre>%</spec>
<spec type="object.container.album.musicAlbum">%album%</spec>
</SubTree>
<SubTree label="Codecs">
<spec>%codec%</spec>
<spec type="object.container.album.musicAlbum">%album%</spec>
</SubTree>
</MediaLibraryTree>
ついでなので「[%album artist%]」関係を全てのサブツリーで削除しました。これで単純にアルバム毎に選べるようになり快適です。
追記:しかし、この後Album/Artist表示の利点(特定のアーティストの曲だけ聴きたいとか)を見つけてしまい、他のUPnPサーバー使用時にはAlbum/Artist表示は削除しないで使用しています。
foobar2000をDigital Media Server(DMS)として使うのエントリー内で、「Decoding to PCM」設定について「N-50は2年前の製品とはいえファームウェアアップのおかげもあって対応フォーマットは多いため「Never」にしています」と記述しましたが、この内容が間違いであることが判明しました(元記事は修正してあります)。
「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の負担は更に減る形となりました。
さて、DMCは用意できましたが、DMS(Digital Media Server)がまだありません。UPnPではWindowsのファイル共有は見つけてくれませんので、何らかのUPnP対応メディアサーバーを動かさないといけないのですが、ここでもfoobar2000が活躍します。
今回は24時間動かしたままの自宅TV録画サーバーにfoobar2000を入れて、DMSだけを行うように設定しました。
設定はfoobar2000内の「Preferences」から行います。
まずは、foobar2000が音楽ファイル格納場所として認識するフォルダを登録します。
ウチの環境ではネットワークドライブ(Mドライブ)に、WindowsServer2008上の共有フォルダを設定しており、ネットワークドライブ中の「Music」フォルダを登録しました。登録後はfoobar2000によって自動ファイルスキャンが行われ、foobar2000のアルバムリストにファイルが登録されていきます。
次に「Tools→UPnP→Server→Basic Setting」にて、稼働させるサーバー(DMS&DMR)を設定します。
今回はMedia Server(DMS)だけ「Server is started」状態にし、サーバー名を変更しました。
「Always use the Default streaming profile for all devices」はチェックを入れています。このチェックは、DMSに接続してくるDMRの能力に合わせて設定プロファイルを切替える機能を有効にするかどうかだと思うのですが、その機能は使わないためです(下記参照)。
次は「Content」を設定します。ここはデフォルトのままでも良い感じですが、自分には必要の無いビュー項目があったので幾つか外しています。
(画面を見て頂くとわかりますが、DMSを選んだ後に出るアルバムやプレイリストビューといった表示項目を設定しています)
この画面の下部に「Customize Media Library Tree」ボタンがありますが、ここも変更しています。デフォルトで登録されている「アルバム・アーティスト」や「アーティスト」といったビューは使っていないので、表示されたファイルの元ファイルを(XML)をテキストエディタで削除し、一番使う「Folder」ビューを一番上に持ってきてあります。
次に「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録画には全く支障がありません。
フォーマット変換機能を使用した場合は不明ですが、素のまま送出している限りは「そよ風」レベルでした。
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」を呼び出します。
自動的にネットワーク上のDigitalMediaServer(DMS)をリストアップし、一覧にしてくれます。一覧から対象のサーバーをクリックしていくと、DMSからアルバムやフォルダといった他のDMCでもおなじみの表示がツリー状に展開されていきますので、あとは目的のアルバム、フォルダまで進みます。
たどり着いた後は(今回はフォルダ表示)目的のアルバム・フォルダ上で右クリック→「Send to Current List」にて「UPnP Controller Playback Queue」へ曲リストを送信すると、DMRへ送信する曲リストに入ります。曲リストに入ったあとは、foo_upnpが用意している「UPnP Controller」ウィンドウで再生操作が可能です。
ウィンドウ上部プルダウンメニューから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の技術をベースに拡張された物だとわかります。
「File Path」部分のグレー塗りつぶし下にはDMSを行っているPCのIPアドレスが表示
次はfoobar2000でMedia Serverを動かす事について書いてみます。
iOSデバイス向けアプリ「Remote」からfoobar2000をリモートコントロールする拡張コンポーネント。
TouchRemote DACP server | wintense.com
使い方は簡単で、4つのファイルをfoobar2000の「component」フォルダに入れる→foobar2000の初期設定ツリー内「Media Library」から「Remote iPhone/iPod touch/iPad」を選択→「Add New Device」ボタンをクリックすると「Remote」の起動待機になるので、iOSデバイス上で「Remote」を起動→「Remote」内で「iTunesライブラリを追加」をすると、ペアリングコード(4桁)が表示されるので、foobar2000側のフィールドへ入力→完了。
なお、開発者のblogにもあるが、AppleのBonjour Service、.NET Framework 4とVC++ 2010 runtimeがOSに入ってないと動かない。他、DACPの通信ポートとして7000番(標準設定)、Bonjour Service関連のポートも開けておく必要があるので、ファイヤーウォール・セキュリティ系ソフトの設定には注意。