« 今回の目的 6/6 | トップページ | 15回目と16回目 »

2020年10月 2日 (金)

foobar2000で音楽サーバ構築

いい秋晴れの日中だった。

本当に過ごしやすくていいね。

 

ここでは、foobar2000を使っての音楽サーバの構築について書いている。

ネットで検索すれば、この手の情報は一杯あるけれど、僕がやりたい事例に関してはあまりなかった。
最近では、foobar2000に、DLNA/UPnPのコンポーネントを追加し、サーバとして動作させ、それを、スマホの方でコントロールするというやり方になっている。

僕がやりたいのは、Windows同士によるもの。
つまり、サーバはWindowsとfoobar2000、クライアントもWindowsとfoobar2000というもの。
foobar2000で全てやってしまいたい。

ここ数年、LinuxのVortexboxを使わせてもらって、音楽サーバを構築していた。
確か、僕にとっては、2.3が最初で、苦労して2.4に移行した。
最近は、更新はほとんどないし、正直、クライアントソフトが使いづらい。

Vortexboxは、DLNA、MPD両方動かすことが出来る。
僕は、MPDだけで運用していた。
今となっては、WindowsでのMPDは下火なのか、MPDのWindowsクライアントソフトは、4,5種類ほどしかない。
(DLNAのWindowsクライアントソフトって、癖があるというか、これも使いづらい。)

こういうのが若干ストレスフルで、普段使っているfoobar2000のインターフェースで操作出来たらどれだけいいか、と思っていた。
普段は、メインのPCにアクティブスピーカーを接続していて、自分用にカスタマイズしたfoobar2000で音楽を聴いている。
可能なら、この使い勝手のまま、音楽サーバを構築出来たら、と思ったのである。

ふと思って、そういう感じのことを調べてみると、いくつかのコンポーネントを追加すれば、それが出来そう、というのがわかった。

心機一転、ということで、Vortexboxとはおさらばし、foobar2000で音楽サーバを構築した次第。

ここでは、新たに何らかの機材を購入・追加することは考えていない。
基本的には、皆さんお持ちのものを再利用、有効活用しよう、という目的もある。
眠らせているだけなんて勿体ないからね。

ということで、必要な機材一覧。

ハードウェア

  • 使っていないPC
  • USB DAC
  • ステレオ(プリメインアンプ、スピーカー)とかアクティブスピーカー(アンプ内蔵)

ソフトウェア

これだけ。
これだけだったら、案外手元にあって、新規に何かを購入する必要性はないでしょ?

人によっては、USB DACはないかもしれない。
とりあえず、ということであれば、PCのイヤホンジャックとプリメインアンプを繋いで音出しすればいい。
この仕組みが気に入ったら、新規にUSB DACを購入。
今のご時世、ウン万円も出さなくても、1万円前後でもそれなりのものが買える。

 

【僕の事例】

僕の古いPCのハードウェア構成はこういう感じ。

CPU:Core 2 Duo T5500 1.66GHz
メモリ:2GB
ディスクインターフェース: SATA(1.5Gbps)

今時、こんなので作業している人なんていないと思う。(笑)
これに、Win10をインストールしようというのだ。

このPCは、XP→7→8とアップグレードしてきた。
イメージバックアップは、8年ほど前のWin8のものが残っていたので、それを戻すことに。
これがえらい大変だったのだけれど、なんとか戻すことが出来た。
ライセンス認証を見てみると、問題なさそう。
これに、Win10を当てる。

一般的には、Win10へのアップグレードは、Win7とWin8.1が対象と言われている。
でも、Win8でも問題なく出来るようだ。
ドライバ関連で問題はあるかもしれないけれど、ネットで検索すれば、なんとかなるかもしれない。

また、これを書いている時点でも、無償でWin10にアップグレード出来た。

Win8にWin10を当て、その後に、改めて、Win10をクリーンインストールした。
そういう順番だったからかどうかはわからないけれど、ライセンス認証も特に問題なし。

理想は、OSのライセンスキーがあること。
なくても、今はこのように、ネット上でのライセンス認証になっているから、順を追ってアップグレードしていけば、問題ないと思う。
これは憶測だけれど、Win8のライセンス認証に問題ない状態で、Win10をクリーンインストールしても問題なかったかもしれない。確証はないけれど。

Win7、Win8/8.1をWin10にアップグレードするときの注意点

一番最初の画面に、
「Windows セットアップでの更新プログラムのダウンロード方法の変更」というのがある。

これをクリックし、更新プログラムの入手を「今は実行しない」にチェックしておいた方がいいだろう。

これをしないでアップグレードを始めると、それぞれのOSの更新プログラムのインストールが始まるようだ。
僕はそれに気付かず、進捗2%の状態を2時間待った。
なんかおかしいと思って、そこで強制終了し、再起動。
すると、134個の更新プログラムのインストールが始まった!終わるのに、2時間弱ほど...
合計、4時間ほど、時間を浪費してしまった。

Win10になるのだから、古いOSの更新プログラムの必要性はない。
ここだけ押さえておくといいと思う。

次に、どのWin10を当てるか?

メモリが3GB以下であれば、32bit、4GB以上であれば、64bitでいいと思う。

やはり32bitは古いPCには優しいみたいだ。(笑)

起動時のメモリ使用量は、1GBほど、ディスク使用量は、15GBほどと、64bitよりも少ない。

SSDであれば、128GBのもので十分。但し、音楽データが大容量の場合は、別途HDDを用意した方がいい。もしくは、大容量のSSDを用意するか。

環境構築後、このPCでの起動時間。
やはりちょっとしんどいみたい。(苦笑)
起動に2分40秒ほど。
これではちょっと、と思ったので、起動を少しでも速くするやり方(後述)をやってみて、1分50秒。
まぁ、起動するまで一服すればいいよね。(笑)

起動の遅さは、CPUが原因だけではない。
ディスク・インターフェースの問題もある。

古いSSDではあるけれど、USB 3.0で接続した状態で、250Mbpsほど出るものを使っている。

が、このPCのSATAは、1.5Gbps。最大で、150Mbpsしかでない仕様。
そういうこともあって、フルにSSDの性能を活かせないのである。
計測してみると、100Mbpsほどしか出ていない...(泣)
これでは、最近のHDDとさほど性能差はない。せめて、その200Mbpsくらい出てくれればね。
さすがに、ランダムアクセスはHDDよりいいけれど。
SATA IIの3.0Gbpsの仕様であれば、こんなことにはならないと思うので、起動はもっと速くなるだろうし、操作もキビキビすると思う。

と、僕のPC状況はこういう感じ。
参考にしてくれれば幸い。

前置きがかなり長くなっているけれど、ようやく、本題だ。

 

【foobar2000を使っての音楽サーバ構築案】

foobar2000を使っての音楽サーバの構築案としては、以下のものがある。

音楽データというのは、皆さんお持ちの、mp3やflacやWAVEやらのこと。

案1

  • サーバ-Win10、音楽データ
    foobar2000 + UPnP/DLNA Renderer, Server, Control Point
  • クライアント-Win10
    foobar2000 + UPnP/DLNA Renderer, Server, Control Point

案2

  • サーバ-Win10
    foobar2000 + UPnP/DLNA Renderer, Server, Control Point
  • クライアント-Win10、音楽データ
    foobar2000 + UPnP Media Renderer Output + UPnP/DLNA Renderer, Server, Control Point

案3

  • サーバ-Win10、音楽データ
    foobar2000 + Beefweb Remote Control
  • クライアント-Win10
    ブラウザ

大きく分けると、これら3つ。
案3がちょっと特殊だけれど、面白いので取り上げた。
他には、それぞれの案に、応用編がある。後述。

それぞれにメリットやデメリットがある。
それを簡潔に書く。

案1-DLNA/UPnPサーバ

  • サーバ側に全てがあるので、それさえ起動しておけば、クライアントは、Win10+foobar2000にこだわる必要はなく、スマホにfoobar2000をコントロールするアプリ(それに関連するコンポーネントをサーバのfoobar2000にインストール)を入れれば、コントロール出来る。
  • イマイチな点
    クライアントのfoobar2000は、自分の普段使っているインターフェースでいいのだけれど、サーバ側のライブラリやプレイリストを操作する時は、UPnP Browserを使う必要性がある。
    Colums UIを使っている人は、このパネルを追加すればいい。ただ、これがちょっと使いづらい。

案2-ストリーミングサーバ

  • これは当初思い描いていたものとは違っていたけれど、案外いいのでは、と思った。
    クライアントのfoobar2000は、普段通りそのもの。
    そのデータを、ストリーミング・データとして、サーバに送り、サーバ側のスピーカーで音を鳴らす仕組み。
    これを知ることが出来たから、Vortexboxから移行しようと決意したのである。
  • イマイチな点
    音楽データがクライアント側にあるので、案1のように、スマホでもコントロールしたい場合には、無理な構成。
    但し、サーバ、クライアント両方を起動した状態で、クライアント側に、foobar2000をコントロールするコンポーネントをインストールすれば、コントロール出来る。

案3-ブラウザでコントロール

  • これはちょっと変わった構成なので取り上げた。
    Beefweb Remote Controlというコンポーネントを入れておけば、ブラウザでfoobar2000をコントロール出来るのである!
    ブラウザだから、OSとか関係なくなるのがいい。
  • イマイチな点
    使い勝手も良く、かなり出来がいい。が、プレイリストの追加や削除、曲の追加は出来るけれど、プレイリスト内の曲の削除や移動は出来ない。曲の選択は、foobar2000のライブラリ経由ではなく、実フォルダ/ファイルとなる。

それぞれにメリットやデメリットがあるけれど、結論を書くと、僕は、案2で運用中
理由としては、本腰を入れて音楽を聴く時だけ、サーバ側のスピーカーで聴くから。
普段は、作業をしているPCに接続しているスピーカーで音楽を聴いている。
だから、クライアント側に音楽データがないと聴けないのである。

これはあくまで僕の話であって、案1や案3でいい人もいるだろうし、後述する応用案の方がいいという人もいるだろう。

次からは設定について。

ここでは、細かい設定やら何やらについては書かない。
大事なポイントだけ書いていく。

サーバ側のfoobar2000のインターフェースは、最低限のもので十分。
設定さえしてしまえば、そこで何か操作することはないから。

デフォルト・インターフェースの状態。

画面右上に、ストリーミング中のファイル情報が表示される。

クライアント側のfoobar2000のインターフェースは、お好みのもので。

あと、サーバ側のWin10のユーザは、クライアントと同じユーザ名にしておくのが無難。
サーバのIPアドレスは、固定(静的)の方が融通が利く。

サーバ側に登録したコンポーネントは、太字のものだけ。
案によっては、不要のものもある。

共通の設定。

音楽データの登録は、ここで実施。

UPnP/DLNA Renderer, Server, Control Pointの設定で、Media ServerやMedia Rendererのオンオフはこの画面で。

案1の設定

  • サーバ
    (1)音楽データの登録
    (2)UPnP/DLNA Renderer, Server, Control Pointの設定は、Media Serverオン、Media Rendererオフ(オンでも構わないが、使わないので)
  • クライアント
    (1)UPnP/DLNA Renderer, Server, Control Pointの設定は、Media Serverオフ、Media Rendererオフ
    サーバ機能は使用しないけれど、サーバのライブラリやプレイリストを参照するために、UPnP Browserを使う必要性があるので、導入しておく。Colums UIを使っているなら、このパネルを組み込むといいだろう

    ツリー状になっているので、僕的には使いづらい。

案2の設定

  • サーバ
    (1)UPnP/DLNA Renderer, Server, Control Pointの設定は、Media Serverオフ(オンでも構わないが、使わないので)、Media Rendererオン
  • クライアント
    (1)音楽データの登録
    (2)Outputで、「UPnP:foobar2000 Renderer (サーバ名)」を選択

    こうすることで、ローカルの音楽データをサーバにストリーミングする。
    ちなみに、ここに、サーバのMedia Rendererが表示される。


    (3)UPnP/DLNA Renderer, Server, Control Pointの設定は、Media Serverオフ、Media Rendererオフ
    サーバ機能は使用しないけれど、音量の設定は、UPnP Controlerを使う必要性があるので、導入しておく。
    音量設定をしないなら、UPnP/DLNA Renderer, Server, Control Pointの導入は不要

案3の設定

  • サーバ
    (1)音楽データの登録
    (2)Beefweb Remote Controlの「Allow remote connections」にチェック
    (3)Beefweb Remote Controlの「Music directries」に、参照したい音楽データのフォルダを登録
    このコンポーネントは、foobar2000のライブラリを使用しないので
  • クライアント
    (1)ブラウザで、「http://サーバのIPアドレス:8880/」と入力。初回起動時は、準備があるようで、時間が掛かるけれど、2回目からはすぐに参照可能となる

    プレイリストがタブのようになっている。

 

【案2でのパフォーマンスモニタの様子】

参考までに、案2でのストリーミング中のパフォーマンスモニタの様子。

こんな貧弱なスペックでも、この程度。
メモリは1GBちょっとの使用量。CPUは、10%前後の推移。

そのメモリ、このPCでは、スワップ(ページファイル)はオフにして、実メモリの2GBだけで運用中。

通信量は、音源によりけりだけれど、例えば、flacで1,000bpsくらいで、常に音が鳴っているようなロックであれば、1~2Mbps。

 

以上で、各案についての簡単な設定を書いた。

試してみて、気に入った案で運用してみよう。

以下は、補足的な話。

 

【音質】

音質を少しでもよくしたいなら、WASAPIやASIOのコンポーネントをfoobar2000に入れるといいだろう。
ASIOは、USB DACが対応している必要性がある。

https://www.foobar2000.org/components/view/foo_out_wasapi

https://www.foobar2000.org/components/view/foo_out_asio

案2のストリーミングによる音質は、案1とどのくらい違いがあるのかわからない。
音質にこだわりつくす人は、案2のストリーミング再生はダメかもしれないけれど、普通に聴いている限りでは、音質が悪くなったとは思わない。
だから、案2を採用したんだけれどね。

 

【音楽データの場所】

これが、案の応用編になる。

音楽データがサーバにあるかクライアントにあるかによって、メリットやデメリットがある。
どちらがいいとかよくないではなく、その人の使い方次第。
常にいい音で音楽を聴きたい、という人は、サーバに音楽データを置いておき、スマホでコントロール、というのもいいだろう。
僕のように、基本はクライアントのPCで音楽を聴く、という人なら、僕のようなやり方もあり。

それぞれに一長一短があるけれど、それを補うやり方がある。

サーバに音楽データを置いておき、そのフォルダを共有し、クライアント側から参照する、というやり方もある。
そうすれば、クライアント側でも音楽を聴くことが出来る。
その時、サーバは起動しておく必要があるけれど、ステレオの電源は切っておいていい。

いちいちサーバを立ち上げるのは面倒、僕のように、時々しかステレオで聴かない、という人は、クライアント側に音楽データを置き、そのフォルダを共有し、サーバはそれを参照する、というやり方もある。

少し奮発出来るなら、HDDをもう1台用意し、サーバとクライアントそれぞれに同じ音楽データを置くという案もある。
こうすればかなり融通の利く仕組みが出来るし、万が一の時のバックアップにもなっていい。
(Vortexboxで運用していた時は、こうしていた。)

もし、別途ファイル・サーバを立ち上げられるなら、それがベター。
そうすれば、サーバもクライアントもそこにある音楽データを参照出来る。

どういう運用がいいかは、人それぞれなので、自分のライフスタイルに合わせた仕組みを作ってほしい。

 

【こんなことも】

複数のアンプやスピーカーを持っていて、聴く音楽によって出力先を変更している人、複数のUSB DACをサーバに接続してみては?
それを、foobar2000の方で切り替えるのである。
とても簡単に音の切り替えが出来ていいと思う。

下記は、2つのUSB DACを接続している状態。
ノートPC自体のサウンド・デバイスもあるので、3種類のスピーカーが表示されている。

ここで選択すれば、出力先を変更出来る。

 


【面白そうなクライアント・ソフトウェア】

先述した通り、DLNAのクライアント・ソフトウェアって、ものすごく癖のあるものが多い。

DLNAというのは、音楽だけではなく、映像も含められるので、そういうものを観るための作りになっている。

今回のことを切っ掛けに、ひょんなことから、音楽に特化したDLNAクライアントを知った。

RCP – AUDIONET - Audionet Remote Control Point.

なぜ以前見つけられなかったのだろう?と不思議。(笑)

起動すると、自動的に、ネット上にあるDLNAサーバを検出してくれる。

それを選択すると、メディアやプレイリストを選択する画面が出てくる。

上記の左画面は、メディアを選択し、そのアーティスト、アルバムを選択した状態。

ここに表示された曲を、右側のリストに渡す。

そして、再生。

foobar2000は、プレイリス上で再生可能だけれど、このソフトは、MPDと同じように、プレイリストとは別に、再生用リストがあり、そこで再生させることになる。

これの面白いところは、Media Rendererの機能があるところ。

一般的なDLNAクライアントは、サーバのデータを参照するだけで、再生音はそのPC上で行われる。

でも、これは、サーバのMedia Rendererがオンになっていたら、そのサーバに接続されているオーディオ・デバイスを使って再生してくれる。

foobar2000で言えば、 UPnP Media Renderer Outputのコンポーネントの役割も持っている。

これは面白いなぁ、と思った。

ツリー状のUpnP Browserはちょっとな、という人や、foobar2000にこだわらない人は、このインターフェースが気に入ったら、これを使ってみるのもいいだろう。

 


【リモート起動・シャットダウン】

サーバを起動させるのに、いちいちその場所に行って、電源オンというのも億劫かもしれない。たった1m先であっても。(笑)
その時に役に立つのが、リモート起動やリモート・シャットダウン。

まず、リモート起動だけれど、Wake On Lanという仕組みを使えばいい。詳細はネットで調べてね。
ここ10年くらいのPCであれば、対応しているのがほとんどではないだろうか?
僕の今回のPCは未対応なので、手でスイッチを押す必要性あり。

それを使うためにも、可能なら、IPアドレスは固定(静的)にしておくといい。
IPアドレスが固定だと、何かと便利だしね。

クライアント側から、Wake On Lanが出来るソフトウェアを使ってサーバを起動させる。

次に、リモート・シャットダウンは、設定が必要。
僕が参考にしたのは、これらのページ。

Windowsをリモートシャットダウンする方法 | あいしんくいっと
Windows PCをリモートシャットダウンする方法やエラー時の対処方法
RPC 動的ポートへトラフィックを許可するルールを追加する | Radar | 3.0 | F-Secure User Guides

ここでは詳しくは書かないけれど、僕がやったことだけを書く。

  • サーバ側でレジストリ追加
    キー名︓HKEY̲LOCAL̲MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
    値の名前︓LocalAccountTokenFilterPolicy
    値の種類︓REG̲DWORD / DWORD(32ビット)
    値のデータ︓1
  • サーバ側のファイアウォールのルール追加
    3つ目の記事参照

そうして、バッチファイルを作成。

@echo off
setlocal enabledelayedexpansion

set SERVER=(サーバのIPアドレス)
set USER=(サーバWin10のユーザ名)
set PASS=(そのパスワード)

net use \\!SERVER! /user:!USER! !PASS!
net use \\!SERVER! /delete"

IF "%1" == "" (
shutdown /m \\!SERVER! /s /f -t 0
) ELSE (
shutdown /m \\!SERVER! /r /f -t 0
)

endlocal

exit 0

これを「適当な名前.bat」にして、ショートカットキーを作ればいい。
引数がなければ、シャットダウンし、何らかの引数(一文字以上であれば何でもいい)があれば、再起動するようにしている。

サーバを終了したいと思ったら、このバッチファイルを起動させるだけ。
結構便利。

結局、リモート起動・シャットダウンしても、ステレオの電源は切りに行かないといけないんだけれどね。(笑)

 

【リモートデスクトップアクセス】

運用が始まったら、そのPCのモニタは不要となる。
ノートPCの場合は、すぐに画面をオフする設定にしておくといい。

デスクトップPCの場合は、セットアップする時はモニタに接続し、運用が始まったら、本体のみ、ステレオの近くに置いておく。
ただ、その場合だと、何かあった時に画面が見られないのが問題。

でも、リモートデスクトップアクセスソフトウェアを使えば、クライアント側からサーバの画面を見ることが出来る。

そのPCにディスプレーがなくてもいいので、とても便利である。

 

【古いPCの高速起動】

古いPCは、スペック的に問題大あり。
だから、少しでも起動が速くなるように、また、Win10起動中は動作が軽くなるようにしたい。
そこで、僕がやったことを箇条書きにしておく。

  • 「設定」の中の「バックグラウンドアプリ」を開き、「アプリのバックグラウンド実行を許可する」を「オフ」にする。
    音楽サーバでのみ運用するのだから、ここに上がっているソフトウェアやアプリを使うことはほとんどないだろう。
    使うものがあれば、個別にオンオフする。
  • 「msconfig」を開き、「ブート」タブをクリック。「GUIブートなし」にチェック。

これは、Win10インストールした後のこと。
やたらとディスクの使用率が高かった。
ずーっと何かがディスクにアクセスしている。
何かわからなかったので、ネットで検索し、関係ありそうなものを片っ端からやってみた。

  • これが一番効果があった。
    タスクスケジューラを起動。Microsoft-Windows-Application Experienceを開き、「Microsoft Compatibility Appraiser」を無効
    これをした途端、ピタッとディスクのアクセスが減った。
    スペックの高いPCであれば、あっという間に終わる作業かもしれないけれど、スペックの低いPCだと高負荷になるのだろう。
  • コントロールパネルの「システム」-「システムの詳細設定」の「システムの保護」タブをクリック。「保護設定」をオフにする
  • 自動メンテナンス無効
    レジストリ・エディタを起動し、
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance]
    に「 MaintenanceDisabled」というDWORDのキーを作り、値に「1」を設定
  • 「SysMain(旧SuperFetch)」サービスを無効
  • 「Windows Search」サービスを無効にするか、「インデックスのオプション」の設定で、検索場所を限定的にする。例えば、検索場所を「デスクトップ」だけにするとか

これらをすることにより、起動時間の短縮、起動中の動作軽減につながった。

 

【更に】

こうやって、音楽サーバを構築すると、もうちょっとこうしたい、というのが出てくるだろう。

音質改善の一番は、やはりなんと言っても、スピーカーの新調。
いや、そうではなく、違うところに手を入れたい、というのであれば、USB DACにこだわってみるといいだろう。
まだUSB DACを持っておらず、PCのイヤホンジャックから音を取っているなら、USB DACの導入をお勧めする。
1万円前後のもので十分だと思う。

次に、PC自体について。

やはり遅いのは嫌だ!と思ったら、新しいPCがほしくなる。

今は本当にいい時代になったもので、手頃な価格で新しいPCが手に入る。
今回のように、機能限定用途であれば、高スペックなものは不要。
また、先述の通り、モニタも不要。
だから、ノートPCや大きめのデスクトップPCを新規導入する必要性はない。

違う形態のもの、NUCのような手の上に乗るサイズのミニPCが売られている。中には、手のひらに収まりそうなくらいの小さいサイズのものもある。
しかも、探せば、2万円前後で売られている!
確かに、スペックはそんなに高くないけれど、今回の目的であれば、十分。
10年以上前のPCに比べれば、性能ははるかに上!
また、下手に中古PC買うより安いしね。
もし、中古でも、Core i世代、メモリ4GB、SSD128GB、OS付きで、1万円前後で買えるなら、それでもいいと思う。

 

と、以上、長々と、foobar2000を使った音楽サーバ構築について書いた。

これをヒントに、是非、自分の音楽再生環境を構築し、音楽を存分に楽しんでほしい!

|

« 今回の目的 6/6 | トップページ | 15回目と16回目 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 今回の目的 6/6 | トップページ | 15回目と16回目 »