http://www.katoemba.net/makesnosenseatall/mpod/
MPoDがバージョンアップしています。
ver 1.6になって、ちょっとばかりユーザーインターフェースが変わっています。
プレイリストの追加/置換ボタンの部分のインターフェースが変更になっています。
これが一番大きな変更でしょうか。
また、プレイリストの表示が若干変わっています。
http://www.katoemba.net/makesnosenseatall/mpod/
MPoDがバージョンアップしています。
ver 1.6になって、ちょっとばかりユーザーインターフェースが変わっています。
プレイリストの追加/置換ボタンの部分のインターフェースが変更になっています。
これが一番大きな変更でしょうか。
また、プレイリストの表示が若干変わっています。
某巨大掲示板で、libresampleについての書き込みがあったので、試してみました。
libresampleというのは、
https://ccrma.stanford.edu/~jos/resample/
で配布されているツールです。
UbuntuやDebianでは、パッケージとして配布されているので、インストールはとっても簡単です。
libresample1
をインストールするだけです。
設定はというと、これまた、とっても簡単です。
mpdの設定ファイル、
/etc/mpd.conf
を、ちょこっと編集するだけです。
初期状態ではコメントアウトされている
#audio_output_format “44100:16:2”
を有効にして、44100:16:2のところを、所望の値に変えるだけです。
例えば、
192000:24:2
とすれば、サンプリングレート192KHz、量子化ビット数24ビットで出力されます。
最初の数字がサンプリングレート、次の数字が量子化ビット数、最後の数字はチャンネル数です。
じゃ、48000:16:5.1とすれば、48KHz/16bit、5.1chで出力されるのか?については、僕にはわかりません。
ただ、2Lでは、96KHz/24bit/5.1chのFLACを売ってるので、多分再生できる環境があるんでしょう。
リサンプリングの精度は、そのすぐ下にある
#samplerate_converter “Fastest Sinc Interpolator”
で指定します。
この行も有効にして、リサンプル処理のコンバーターを指定します。
初期値は、”Fastest Sinc Interpolator”になっています。
ここに設定できるコンバーターは、
man mpd.conf
で調べることができます。
選択肢は、以下の六つです。
下の三つは、“poor quality”と説明がありますので、実質的な選択肢は上の三つになるでしょう。
上記設定を終えたら、mpdをリスタートします。
sudo /etc/init.d/mpd restart
想像通り?、BestがもっともCPUのパワーを必要とします。
普段GIGABYE GA-E350N-USB3を載せたPCを使用していますが、topでCPUの負荷を見てみたところ、Mediumの場合でCPUの使用率は50%弱でした。Bestにすると、CPU使用率は99%となり音が途切れてしまいました。
Bestを実行するには、ソコソコのCPU処理能力が必要なようです。
じゃ、libresampleはどういう処理をしているのか?ということに関しては、
https://ccrma.stanford.edu/~jos/resample/
を頑張って読んでください。
また、ググればその手のことが書かれた日本語のサイトは沢山出てきますし、書籍も沢山あります。
僕は、大学4年の時に信号処理の講義をちょっとだけかじっただけで、あまりの難しさに放り投げてしまいました(笑)
特に問題なく使っていますが、ちょっと気になる点があります。
直前に再生していた楽曲と次に再生する楽曲のサンプリングレートが異なる場合に、サンプリングレートの切り替わりを認識できず、再生音がグチャグチャになります。
再生を一旦停止して、再び再生を開始すると、問題なく再生されます。
この現象は、USB入力では、ほぼ100%起きます。
S/PDIF入力では、この現象が起きるかは、確認していません。
これが、送り出し側(Ubuntu+mpd)の問題なのか、DAC-1000の問題なのかは、ようわかりません。
個人的には、特に大きな問題ではないので、あまり深く調べてはいませんが(笑)
mpdを使い始める前に、しばらく、DLNAを使っていました。
その時のmediatombの設定内容です。
こんな設定で、一応動いていますので、大きな間違いはないと思います。
まずは、ディストリビューションのパッケージを使ったのですが、手持ちのアルバムが結構多いので、目的のアルバムにたどり着くのに結構手間がかかるのが気にいりませんでした。
そこで、音楽ジャンル毎にDLNAサーバーをたてられないものかと、アレコレ試してみて、以下の方法に落ち着きました。
もっとも、今は、DLNAを使っていませんが…
まずは、mediatombのソースコードを取得します。
http://mediatomb.cc/
適当な場所で展開します。
また、必要なライブラリも取得します。
僕の場合、適当にconfigureして、出てきたエラーメッセージを眺めながら、必要なライブラリをインストールしてます。かなり乱暴かつ適当です(笑)
mediatombは、そのままでは複数のDLNAサーバーをたてられないので、複数のmediatombを起動するようにします。
クラシック、ジャズ、和物、洋物の4種類に分けたいので、mediatombも四つ起動させる必要があります。
ということで、mediatombのインストール先を
/usr/local/md1
/usr/local/md2
/usr/local/md3
/usr/local/md4
として、ビルドすることにします。
configureの設定は以下の通りです。
./configure \
–bindir=/usr/local/md1 \
–with-avformat-libs=/usr/local/lib \
–with-libmp4v2-libs=/usr/local/lib \
–with-libmp4v2-h=/usr/local/include \
–disable-id3lib \
–with-ffmpegthumbnailer-libs=/usr/local/lib \
–with-expat-libs=/usr/lib \
–with-lastfmlib-libs=/usr/local/lib
僕の場合は、FLACのみに対応していればいいので、結構適当ですが…
色々あって、IPアドレスも4つ必要になります。
/etc/network/interfaces
に、以下のような記述を行って、1台のPCに複数のIPアドレスを割り当てます。
なお、追加するIPアドレスのために、NICを1枚追加しています(eth1のほう)。
iface eth0 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1auto eth1
iface eth1 inet static
address 192.168.0.111
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255auto eth1:1
iface eth1:1 inet static
address 192.168.0.112
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255auto eth1:2
iface eth1:2 inet static
address 192.168.0.113
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
これで、準備OKです。
次は、mediatombの設定ファイルです。
config.xmlのserver部分を以下のように設定します(一部抜粋)。
<server>
<ip>192.168.0.111</ip>
<port>50001</port>
<name>ROCK</name>
<home>/home/music/ROCK</home>
</server>
これで、それぞれのconfig.xmlのIPアドレスを変更します。portは変えなくても大丈夫だと思いますが、僕は50000〜50003で割り振りました。
そして、
/usr/local/md1/mediatomb -d -c /usr/local/md1/config.xml
/usr/local/md2/mediatomb -d -c /usr/local/md2/config.xml
/usr/local/md3/mediatomb -d -c /usr/local/md3/config.xml
/usr/local/md4/mediatomb -d -c /usr/local/md4/config.xml
のようにしてmediatombを起動すれば、DLNAサーバーが4つ見えるはずです。
なお、iptablesなどで、ポートを閉じてる場合は、config.xmlのportで指定したポートの他に、以下を許可して下さい。
・LAN内に対して、port1900を許可
・224.0.0.0/4に対して、port1900を許可
後者はマルチキャストで使用するんだそうです。
こういったことは、ネットワーク対応HDD(NAS)として売られている製品では、対応できないところです。
このあたりは、Linuxならではの便利さでしょうか。
これまでCDプレイヤーのデジタル入力を使っていたのですが、ONKYOのDAC-1000を購入しました。
usb接続した結果は以下の通りです。
sudo aplay -l
の結果は、以下のものが追加されて出てきました。
なぜ、二つ出てくるのかは、僕にはわかりません。
カード 2: Device [USB HS Audio Device], デバイス 0: USB Audio [USB Audio]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 2: Device [USB HS Audio Device], デバイス 1: USB Audio [USB Audio #1]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
cat /proc/asound/cards
を実行すると、以下のデバイスが追加されていました。
2 [Device ]: USB-Audio – USB HS Audio Device
ONKYO USB HS Audio Device at usb-0000:00:12.2-5, high speed
デバイス番号が2なのは、使用しているマザーボードGIGABYE GA-E350N-USB3には、HDMI出力とオンボードサウンドがあるためです。
/proc/asound/card2には、stream0とstream1という二つのファイルができています。
それぞれの中身は、stream0が、以下の通り。
ONKYO USB HS Audio Device at usb-0000:00:12.2-5, high speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 5 OUT (ASYNC)
Rates: 44100, 48000, 96000, 192000
Data packet interval: 125 us
Interface 1
Altset 2
Format: S32_LE
Channels: 2
Endpoint: 5 OUT (ASYNC)
Rates: 44100, 48000, 96000, 192000
Data packet interval: 125 us
Interface 1
Altset 3
Format: S32_LE
Channels: 2
Endpoint: 5 OUT (ASYNC)
Rates: 44100, 48000, 96000, 192000
Data packet interval: 125 us
stream1は以下の通り。
ONKYO USB HS Audio Device at usb-0000:00:12.2-5, high speed : USB Audio #1
Playback:
Status: Stop
Interface 1
Altset 4
Format: S16_LE
Channels: 2
Endpoint: 5 OUT (ASYNC)
Rates: 44100, 48000, 96000, 192000
Data packet interval: 125 us
雑誌記事にもあったっ通り、DAC-1000のUSBではサンプリングレートが88.2kHzや176.4kHzの音源は受けられません。
実際、そういう音源を再生したらノイズまみれになりました。
もちろん、光からは問題なく再生されます。
また、EndpointのとろこにASYNCと出ています。非同期転送で受けているということでしょう。
ちなみに、ONKYO ND-S1のそれは以下のようなものです。
Burr-Brown from TI USB Audio DAC at usb-0000:00:02.1-8.2, full : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 2 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000
Interface 1
Altset 2
Format: S16_LE
Channels: 1
Endpoint: 2 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000
CD-ROMドライブの無いPCにUbuntuをインストールする場合の手順を、備忘録もかねて、簡単にまとめておきます。
まず、NASとして使用しているLinuxに、dhcpdとtftpdをインストールします。
最初に我が家のLAN構成を説明しますと、ネットワークは192.168.0.0/24です。
で、LAN側dnsを192.168.0.212で動かしています。
このホスト上で、一時的に、dhcpdとtftpdを動かします。
dhcpで割り当てるアドレスは、192.168.0.140〜192.168.0.149とします。
ゲートウェイ(WANルーター)は192.168.0.1で、普段は、これがdhcpサーバーとして動いています。
まず、dhcpdの設定です。
/etc/dhcp/dhcpd.conf
に以下の記述を追加します。
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.140 192.168.0.149;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.212;
filename “/ubuntu/pxelinux.0”;
}
次にtftpdの設定です。
/etc/default/tftpd-hpa
に以下の記述を追加します。
TFTP_USERNAME=”tftp”
TFTP_DIRECTORY=”/srv/tftp”
TFTP_ADDRESS=”0.0.0.0:69″
TFTP_OPTIONS=”–secure”
ブートイメージを保存するためのディレクトリを作成します
/srv/tftp/ubuntu/
netboot用のイメージをダウンロードします。
amd64用イメージは以下から
理研のサイト(http://ftp.riken.jp/Linux/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/)
Ubuntu本家(http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/)
i386用イメージは以下から
理研のサイト(http://ftp.riken.jp/Linux/ubuntu/dists/natty/main/installer-i386/current/images/netboot/)
Ubuntu本家(http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/)
当該ディレクトリにあるnetboot.tar.gzをダウンロードします。
展開したファイルを、/srv/tftp/ubuntu/内にコピーします。
ブロードバンドルーターなどで、dhcpサーバーが動いていれば、それを一時的に停止させ、NASのほうのdhcpサーバーとtftpサーバーを起動させます。
UbuntuをインストールするPCのBIOS設定画面で、起動優先順位の最上位にPXEネットワークブートを持ってきます。
この状態でPCを再起動させると、NASにあるUbuntuのイメージから起動し、インストールが開始されます。
インストールが終了したら、PCの起動優先順位を変更し、IPアドレスをdhcpからstaticに変更します。
また、NASのdhcpサーバーとtftpサーバーを停止させ、ブロードバンドルーターのdhcpを起動させます。
ラットクシステムさんのブログが大変参考になります。
http://blog.ratocsystems.com/pcaudio/
技術的な内容も多いので、理解するのはちょっと大変かもしれませんが、オカルト商品(笑)に騙されないためにも、ご一読をオススメします。
S/PDIFの仕組みに関する記述はこのへんから
http://blog.ratocsystems.com/pcaudio/2008/04/index.html
USB DACに関する記述はこのへんから
http://blog.ratocsystems.com/pcaudio/2009/12/index.html
Ubuntu 11.04がリリースされています。
http://www.ubuntu.com/
パッケージリストから、mpdに関係しそうなものをざっと探してみると…
mpd
バージョン0.16.1になっています。
ALSA
バージョン1.0.24.1になっています。
どちらもほぼ最新のバージョンになってますね。
さっそく、10.10から11.04へアップデートしてみました。
手順は、このページに紹介されています。
sudo do-release-upgrade
を実行すれば一発です。
ネット回線の速度等もありますが、小一時間もあれば、アップグレードは完了すると思います。
再起動後、mpdのバージョンを確認したら、
mpd (MPD: Music Player Daemon) 0.16.1
となりました。
ということで、前の記事に書いた、mpdをソースコードからビルドする件は、保留となりました(笑)
mpdをソースコードからビルドするために、僕があれこれ試しいるうちに、Ubuntuの新しいバージョンがリリースされ、mpdのバージョンも上がることでしょう(笑)
只今、あれこれとトライ中です。
mpdで音楽再生中のCPU負荷について調べてみました。
ProLiant ML115で、44.1KHz/16bitのFLACをUSB接続したND-S1で再生した場合、CPU負荷はtopコマンドで見る限りでは最大2%位です。
クライアントソフトから、早送りなどを行うと、5%くらいまで上がるようです。
ProLiant ML115のCPUは、AMD Athlon Processor 1640Bです。
GIGABYE GA-E350N-USB3のS/PDIF出力の場合については、以下のような状況でした。
44.1/16 2ch FLAC再生時:1%以下
96/24 2ch WAV再生時:2%
192/24 2ch FLAC再生時:7%
96/24 5.1ch FLAC再生時:9%
もっとも、最後の96/24 5.1chは、受け側がデコードできていませんが(笑)
とにかく、mpdのCPU負荷はかなり低いと言えますね。
Intel AtomやAMD Fusion E350といったCPU付きで安価に売られているマザーボードでも、性能面では全く問題無しと言えるんじゃないでしょうか。