ラベル Music Player Daemon の投稿を表示しています。 すべての投稿を表示
ラベル Music Player Daemon の投稿を表示しています。 すべての投稿を表示

2015/06/21

Ubuntu 15.04で自分でビルドしたMPDを使用する

パッケージからインストールしたMPD(Music Player Daemon)が/usr以下に/usr/bin/mpd等のようにインストールされている状態で、ソースコードからビルドしたMPDを/usr/local以下にインストールしました。


まずはMPDを取得しインストールします。
ここは特に悩みませんでした。
configureするより先に、ビルドに必要なパッケージをインストールしています。
$ sudo apt-get build-dep mpd
$ wget http://www.musicpd.org/download/mpd/0.19/mpd-0.19.9.tar.xz
$ tar xJvf mpd-0.19.9.tar.xz
$ cd mpd-0.19.9/
$ ./configure
$ make
$ make install-strip


/etc/init.d/mpdのDAEMONで始まる行のMPDのパスを/usr/local/bin/mpdに変更します。
一応このファイルも修正したのですが、もしかしたら不要かもしれません。
$ sudo vi /etc/init.d/mpd

~編集します~

$ grep ^DAEMON /etc/init.d/mpd
DAEMON=/usr/local/bin/mpd


/lib/systemd/system/mpd.serviceのExecStartで始まる行のMPDのパスを/usr/local/bin/mpdに変更します。
これが最初分からず、修正してしまっていいものなのかも不安ですが、dpkg -L mpdで調べたらMPDパッケージに含まれるファイルのようですのでたぶん大丈夫かと。
$ sudo vi /lib/systemd/system/mpd.service

~編集します~

$ grep ExecStart /lib/systemd/system/mpd.service
#ExecStart=/usr/local/bin/mpd --no-daemon $MPDCONF
ExecStart=/usr/local/bin/mpd --no-daemon /etc/mpd.conf


変更をsystemdに反映させ、MPDを再起動します。
$ sudo systemctl daemon-reload
$ sudo service mpd restart


/usr/local/bin/mpdが起動していることを確認します。
$ ps ax|grep mpd
 2020 ?        Ssl    0:10 /usr/local/bin/mpd --no-daemon /etc/mpd.conf
 2053 pts/8    S+     0:00 grep --color=auto mpd

2015/06/16

Ubuntu 15.04をMPDサーバにする

Ubuntu 15.04をMPD(Music Player Daemon)サーバにした際のメモです。


MPDをインストールします。
$ sudo apt-get install mpd


/etc/mpd.confを編集します。

・music_directoryを自分の環境に合わせる
music_directory         "/misc/EXHDD2/Music"

・bind_to_addressを自分の環境に合わせる
bind_to_address         "192.168.xxx.xxx"

・audio_autputを自分の環境に合わせる

ここでdeviceに指定する値はaplay -lの実行結果から得ました。
$ sudo aplay -l                                                                                                         
**** ハードウェアデバイス PLAYBACK のリスト ****
Home directory not accessible: 許可がありません
カード 0: PCH [HDA Intel PCH], デバイス 0: ALC283 Analog [ALC283 Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: PCH [HDA Intel PCH], デバイス 3: HDMI 0 [HDMI 0]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: Interface [PCM-DSD USB Audio Interface], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0

私が使用したいのは次のデバイスです。
カード 1: Interface [PCM-DSD USB Audio Interface], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0

カードに1、デバイスに0と表示されているのでmpd.confのdeviceにはhw:1,0を指定すればいいようです。

また、DSD対応のDACを使用するのでdsd_usb "yes"を指定しました。

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:1,0"        # optional
#       mixer_type      "hardware"      # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
        dsd_usb         "yes"
}


最後にMPD再起動します。
$ sudo service mpd restart

2013/10/09

VortexBoxでMPDがビルドできない? その2

VortexBoxでMPDがビルドできない?」ではyumコマンドでインストールできなかったパッケージは無視していたのですが、今回はこれらをソースからインストールします。

VortexBoxインストール直後からMPD最適化パッチを当てるまでの手順」の「(3) MPDのビルドに必要なものをそろえる」の手順まで終えていることが前提です。

(1) MPDのインストールに必要なパッケージを取得
2013/10/9 の時点では幾つか取得できないパッケージがあるようです。

[vortexbox.localdomain ~]# sudo yum install autoconf automake alsa-lib-devel audiofile-devel avahi-glib-devel bzip2-devel faad2-devel ffmpeg-devel flac-devel fluidsynth-devel jack-audio-connection-kit-devel libao-devel curl-devel libcdio-devel libffado-devel libid3tag-devel libmad-devel libmms-devel libmodplug-devel musepack-tools-devel libmusicbrainz-devel libogg-devel libsamplerate-devel libsidplay-devel libshout-devel libvorbis-devel mikmod-devel mpg123-devel pulseaudio-lib-devel sqlite-devel systemd-units twolame-devel wavpack-devel wildmidi-devel zlib-devel zziplib-devel libsndfile-devel 

〜 省略 〜

パッケージ faad2-devel は利用できません。
パッケージ ffmpeg-devel は利用できません。
パッケージ libmad-devel は利用できません。
パッケージ libmms-devel は利用できません。
パッケージ musepack-tools-devel は利用できません。
パッケージ systemd-units-37-25.fc16.i686 はインストール済みか最新バージョンです
パッケージ twolame-devel は利用できません。

〜 省略 〜

完了しました!


(2) (1)で取得できなかったパッケージのソースファイルを入手する
LAMEも必要のようなので取得します。

[vortexbox.localdomain ~]# mkdir ~/src/
[vortexbox.localdomain ~]# cd ~/src
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/f/faad2/faad2_2.7.orig.tar.gz
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/libm/libmad/libmad_0.15.1b.orig.tar.gz
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/libm/libmms/libmms_0.6.2.orig.tar.gz
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/libm/libmpc/libmpc_0.1~r459.orig.tar.gz
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/t/twolame/twolame_0.3.13.orig.tar.gz
[vortexbox.localdomain src]# wget http://archive.ubuntu.com/ubuntu/pool/universe/l/lame/lame_3.99.5+repack1.orig.tar.gz
[vortexbox.localdomain src]# wget http://www.ffmpeg.org/releases/ffmpeg-1.2.4.tar.bz2


(3) faad2のインストール

[vortexbox.localdomain src]# tar xzvf faad2_2.7.orig.tar.gz 
[vortexbox.localdomain src]# cd faad2-2.7/
[vortexbox.localdomain faad2-2.7]# ./configure --prefix=/usr/local
[vortexbox.localdomain faad2-2.7]# make
[vortexbox.localdomain faad2-2.7]# sudo make install
[vortexbox.localdomain faad2-2.7]# sudo ldconfig
[vortexbox.localdomain faad2-2.7]# cd ..
[vortexbox.localdomain src]# 


(4) libmadのインストール
gcc-c++が必要なのでまず入手します。

[vortexbox.localdomain src]# sudo yum install gcc-c++

[vortexbox.localdomain src]# tar xzvf libmad_0.15.1b.orig.tar.gz 
[vortexbox.localdomain src]# cd libmad-0.15.1b/
[vortexbox.localdomain libmad-0.15.1b]# ./configure --prefix=/usr/local

このままmakeすると途中でエラーになってしまいました。
なので、Makefileを修正してmakeが通るようにします。
(こんなことしていいのか分かりませんが…)

CFLAGSで始まる行から--fforce-memを削除します。

[vortexbox.localdomain libmad-0.15.1b]# vi Makefile

CFLAGS = -Wall -march=i486 -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations gmove -fschedule-insns2 -fstrength-reduce

の行を下記のように-fforce-memを削除します。

CFLAGS = -Wall -march=i486 -g -O -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations gmove -fschedule-insns2 -fstrength-reduce

[vortexbox.localdomain libmad-0.15.1b]# sudo make install
[vortexbox.localdomain libmad-0.15.1b]# sudo ldconfig
[vortexbox.localdomain libmad-0.15.1b]# cd ..
[vortexbox.localdomain src]# 


(5) libmmsのインストール

[vortexbox.localdomain src]# tar xzvf libmms_0.6.2.orig.tar.gz 
[vortexbox.localdomain src]# cd libmms-0.6.2/
[vortexbox.localdomain libmms-0.6.2]# ./configure --prefix=/usr/local
[vortexbox.localdomain libmms-0.6.2]# make
[vortexbox.localdomain libmms-0.6.2]# sudo make install
[vortexbox.localdomain libmms-0.6.2]# sudo ldconfig
[vortexbox.localdomain libmms-0.6.2]# cd ..
[vortexbox.localdomain src]# 


(6) libmpcのインストール
musepackとはこれで良いのか疑問ですがとりあえずインストールします。

[vortexbox.localdomain src]# tar xzvf libmpc_0.1~r459.orig.tar.gz 
[vortexbox.localdomain src]# cd libmpcs-0.1/
[vortexbox.localdomain libmpcs-0.1]# ./configure --prefix=/usr/local
[vortexbox.localdomain libmpcs-0.1]# make
[vortexbox.localdomain libmpcs-0.1]# sudo make install
[vortexbox.localdomain libmpcs-0.1]# sudo ldconfig
[vortexbox.localdomain libmpcs-0.1]# cd ..
[vortexbox.localdomain src]# 


(7) twolameのインストール

[vortexbox.localdomain src]# tar xzvf twolame_0.3.13.orig.tar.gz 
[vortexbox.localdomain src]# cd twolame-0.3.13/
[vortexbox.localdomain twolame-0.3.13]# ./configure --prefix=/usr/local
[vortexbox.localdomain twolame-0.3.13]# make
[vortexbox.localdomain twolame-0.3.13]# sudo make install
[vortexbox.localdomain twolame-0.3.13]# sudo ldconfig
[vortexbox.localdomain twolame-0.3.13]# cd ..
[vortexbox.localdomain src]# 


(8) FFMPEGの入手とインストール
まずFFMPEGのビルドに必要なyasm-develをインストールします。

[vortexbox.localdomain src]# sudo yum install yasm-devel

FFMPEGのインストールをします。

[vortexbox.localdomain src]# tar xjvf ffmpeg-1.2.4.tar.bz2
[vortexbox.localdomain src]# cd ffmpeg-1.2.4/
[vortexbox.localdomain ffmpeg-1.2.4]# ./configure --enable-shared --prefix=/usr/local
[vortexbox.localdomain ffmpeg-1.2.4]# make
[vortexbox.localdomain ffmpeg-1.2.4]# sudo make install
[vortexbox.localdomain ffmpeg-1.2.4]# sudo ldconfig
[vortexbox.localdomain ffmpeg-1.2.4]# cd ..
[vortexbox.localdomain src]# 


(9) LAMEのインストール

[vortexbox.localdomain src]# tar xzvf lame_3.99.5+repack1.orig.tar.gz
[vortexbox.localdomain src]# cd lame-3.99.5+repack1/
[vortexbox.localdomain lame-3.99.5+repack1]# ./configure --prefix=/usr/local
[vortexbox.localdomain lame-3.99.5+repack1]# make
[vortexbox.localdomain lame-3.99.5+repack1]# sudo make install
[vortexbox.localdomain lame-3.99.5+repack1]# sudo ldconfig
[vortexbox.localdomain lame-3.99.5+repack1]# cd ..
[vortexbox.localdomain src]# 


(10) MPDのインストール
・MPDのソースと最適化パッチを取得する

[vortexbox.localdomain src]# mkdir mpd
[vortexbox.localdomain src]# cd mpd
[vortexbox.localdomain mpd]# wget http://www.musicpd.org/download/mpd/0.17/mpd-0.17.4.tar.xz
[vortexbox.localdomain mpd]# wget http://www.symphonic-net.com/kubotayo/cgi-bin/downlog.cgi?edata/mpd-0.17git-20120226rtopt.diff.gz

・MPDのソースを解凍しパッチを当てる

[vortexbox.localdomain mpd]# tar xJvf mpd-0.17.4.tar.xz
[vortexbox.localdomain mpd]# cd mpd-0.17.4/
[vortexbox.localdomain mpd-0.17.4]# zcat ../mpd-0.17git-20120226rtopt.diff.gz |patch -p1
patching file Makefile.am
Hunk #1 succeeded at 221 (offset 1 line).
Hunk #2 succeeded at 402 with fuzz 2 (offset 10 lines).
patching file configure.ac
Hunk #3 succeeded at 1584 (offset 8 lines).
patching file src/conf.c
Hunk #1 succeeded at 102 (offset -1 lines).
patching file src/conf.h
patching file src/decoder_thread.c
Hunk #2 succeeded at 464 (offset 4 lines).
patching file src/main.c
Hunk #2 succeeded at 314 (offset -3 lines).
Hunk #3 succeeded at 324 (offset -3 lines).
Hunk #4 succeeded at 381 (offset -3 lines).
Hunk #5 succeeded at 487 (offset -3 lines).
patching file src/output_internal.h
patching file src/output_thread.c
Hunk #1 succeeded at 32 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 584 (offset 5 lines).
patching file src/player_thread.c
Hunk #2 succeeded at 1087 (offset 27 lines).
patching file src/rt_opt.c
patching file src/rt_opt.h
patching file src/update.c
Hunk #1 succeeded at 33 (offset 2 lines).
Hunk #2 succeeded at 76 (offset 5 lines).

・MPDをビルドし、インストールする
./configure時にPKG_CONFIG_PATH=/usr/local/lib/pkgconfigを指定しないと途中でエラーになってしまいました。

[vortexbox.localdomain mpd-0.17.4]# ./autogen.sh
[vortexbox.localdomain mpd-0.17.4]# PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --enable-wildmidi --enable-fluidsynth --enable-mikmod --enable-bzip2 --enable-zzip --enable-iso9660 --enable-pipe-output --enable-lastfm --enable-rtopt --prefix=/usr/local

〜 省略 〜

########### MPD CONFIGURATION ############

Archive support:
        (+bzip2) (+ISO9660) (+ZIP) 
Autodiscovery support:
        (+Avahi) (-Bonjour) 
Client support:
        (+IPv6) (+TCP) (+UNIX Domain Sockets) 
File format support:
        (+AAC) (-C64 SID) (+FFMPEG) (+FLAC) (+FluidSynth) (-GME) (+libsndfile) 
        (+MikMod) (+MODPLUG) (+MAD) (+MPG123) (+MP4) (+Musepack) 
        (-OggTremor) (+OggVorbis) (+WAVE) (+WavPack) (+WildMidi) 
Other features:
        (+libsamplerate) (+inotify) (+SQLite) (+rtopt) 
Metadata support:
        (+ID3) 
Playback support:
        (+ALSA) (-FFADO) (+FIFO) (+File Recorder) (+HTTP Daemon) (+JACK) 
        (+libao) (-Media MVP) (+OSS) (-OpenAL) (-OS X) (+Pipeline) 
        (+PulseAudio) (-ROAR) (+SHOUTcast) (-Solaris) (-WinMM) 
Streaming encoder support:
        (+FLAC) (+LAME) (+Ogg Vorbis) (+TwoLAME) (+WAVE) 
Streaming support:
        (+CDIO_PARANOIA) (+CURL) (-Despotify) (+Last.FM) (-Soundcloud) 
        (+MMS) (-SOUP) 

##########################################

〜 省略 〜

[vortexbox.localdomain mpd-0.17.4]# make
[vortexbox.localdomain mpd-0.17.4]# sudo make install

ここでインストールしたmpdを起動しようとしたところFFMPEG関連のライブラリが見つからないとのエラーが出ました。

そこで、/etc/ld.so.confに/usr/local/lib の記述を追加します。

[vortexbox.localdomain mpd-0.17.4]# sudo vi /etc/ld.so.conf
/usr/lib/nvidia-graphics-304.51
include ld.so.conf.d/*.conf
/usr/local/lib

[vortexbox.localdomain mpd-0.17.4]# sudo ldconfig


後は「VortexBoxインストール直後からMPD最適化パッチを当てるまでの手順」の「(7) MPDの起動スクリプトを修正する」の手順から行えば終了です。

2013/09/16

VortexBoxでMPDがビルドできない?

以前書いた下記の記事へ頂いたコメントで気付いたのですが、2013/9/16の時点では記事の手順ではMPDのビルドに失敗するようです。
VortexBoxインストール直後からMPD最適化パッチを当てるまでの手順

先の記事では次のコマンドを実行することでMPDのビルドに必要なパッケージをインストールしていたのですが、どうやら現在はインストール出来無いようです。

[vortexbox.localdomain mpd]# sudo yum-builddep mpd

./autogen.shを実行する前に必要なパッケージを手動でインストールすれば良いのですが、全ては分かりませんでした。

確認は仮想PCのテスト環境でしか行なっていないため、実際の音出し等は出来ていません。

[vortexbox.localdomain ~]# sudo yum install autoconf automake alsa-lib-devel audiofile-devel avahi-glib-devel bzip2-devel faad2-devel ffmpeg-devel flac-devel fluidsynth-devel jack-audio-connection-kit-devel libao-devel curl-devel libcdio-devel libffado-devel libid3tag-devel libmad-devel libmms-devel libmodplug-devel musepack-tools-devel libmusicbrainz-devel libogg-devel libsamplerate-devel libsidplay-devel libshout-devel libvorbis-devel mikmod-devel mpg123-devel pulseaudio-lib-devel sqlite-devel systemd-units twolame-devel wavpack-devel wildmidi-devel zlib-devel zziplib-devel libsndfile-devel

(2013/09/18 追記)
インストールするパッケージを追加。
下記の./configureの結果も合わせて変更。

いくつか取得出来無いパッケージがあるようです。
(2013/09/18 追記終了)

上記のパッケージをインストール後、autogen.shとconfigureを実行したところ、次のような結果になりました。

[vortexbox.localdomain mpd-0.17.4]# ./autogen.sh

~省略~

[vortexbox.localdomain mpd-0.17.4]# ./configure --enable-wildmidi --enable-fluidsynth --enable-mikmod --enable-bzip2 --enable-zzip --enable-iso9660 --enable-pipe-output --enable-lastfm --enable-rtopt --prefix=/usr/local

~省略~

########### MPD CONFIGURATION ############

Archive support:
        (+bzip2) (+ISO9660) (+ZIP) 
Autodiscovery support:
        (+Avahi) (-Bonjour) 
Client support:
        (+IPv6) (+TCP) (+UNIX Domain Sockets) 
File format support:
        (-AAC) (-C64 SID) (-FFMPEG) (+FLAC) (+FluidSynth) (-GME) (+libsndfile) 
        (+MikMod) (-MODPLUG) (-MAD) (+MPG123) (-MP4) (-Musepack) 
        (-OggTremor) (+OggVorbis) (+WAVE) (+WavPack) (+WildMidi) 
Other features:
        (+libsamplerate) (+inotify) (+SQLite) (+rtopt) 
Metadata support:
        (+ID3) 
Playback support:
        (+ALSA) (-FFADO) (+FIFO) (+File Recorder) (+HTTP Daemon) (+JACK) 
        (+libao) (-Media MVP) (+OSS) (-OpenAL) (-OS X) (+Pipeline) 
        (+PulseAudio) (-ROAR) (+SHOUTcast) (-Solaris) (-WinMM) 
Streaming encoder support:
        (+FLAC) (-LAME) (+Ogg Vorbis) (-TwoLAME) (+WAVE) 
Streaming support:
        (+CDIO_PARANOIA) (+CURL) (-Despotify) (+Last.FM) (-Soundcloud) 
        (-MMS) (-SOUP) 

##########################################

~ 省略 ~


まだ必要なパッケージのインストールが不十分のようですが、今のところ分かっているのはここまでです。

この後、makeが通ることは確認しました。

2013/05/05

VortexBoxのMPDを--enable-zzipオプション指定してビルド

VortexBoxインストール直後からMPD最適化パッチを当てるまでの手順では、--enable-zipオプション指定したけどそんなオプションはないと怒られていたので作り直しました。

それで困ったことになっていたわけではありません。

・MPDを動かしているサービスを停止
[vortexbox.localdomain mpd-0.17.4]# sudo systemctl stop vortexbox-player.service

・ソース解凍
[vortexbox.localdomain mpd]# tar xJvf mpd-0.17.4.tar.xz

〜 省略 〜

mpd-0.17.4/AUTHORS
mpd-0.17.4/NEWS


・パッチを当てる
[vortexbox.localdomain mpd-0.17.4]# zcat ../mpd-0.17git-20120226rtopt.diff | patch -p1
patching file Makefile.am
Hunk #1 succeeded at 221 (offset 1 line).
Hunk #2 succeeded at 402 with fuzz 2 (offset 10 lines).
patching file configure.ac
Hunk #3 succeeded at 1584 (offset 8 lines).
patching file src/conf.c
Hunk #1 succeeded at 102 (offset -1 lines).
patching file src/conf.h
patching file src/decoder_thread.c
Hunk #2 succeeded at 464 (offset 4 lines).
patching file src/main.c
Hunk #2 succeeded at 314 (offset -3 lines).
Hunk #3 succeeded at 324 (offset -3 lines).
Hunk #4 succeeded at 381 (offset -3 lines).
Hunk #5 succeeded at 487 (offset -3 lines).
patching file src/output_internal.h
patching file src/output_thread.c
Hunk #1 succeeded at 32 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 584 (offset 5 lines).
patching file src/player_thread.c
Hunk #2 succeeded at 1087 (offset 27 lines).
patching file src/rt_opt.c
patching file src/rt_opt.h
patching file src/update.c
Hunk #1 succeeded at 33 (offset 2 lines).
Hunk #2 succeeded at 76 (offset 5 lines).


・./autogen.shを実行
[vortexbox.localdomain mpd-0.17.4]# ./autogen.sh

〜 省略 〜

config.status: creating Makefile
config.status: creating doc/doxygen.conf
config.status: creating mpd.service
config.status: creating config.h
config.status: executing depfiles commands
MPD is ready for compilation, type "make" to begin.


・./configureを実行
[vortexbox.localdomain mpd-0.17.4]# ./configure --enable-wildmidi --enable-fluidsynth --enable-mikmod --enable-bzip2 --enable-zzip --enable-iso9660 --enable-pipe-output --enable-lastfm --enable-rtopt --prefix=/usr/local

〜 省略 〜

########### MPD CONFIGURATION ############

Archive support:
(+bzip2) (+ISO9660) (+ZIP)
Autodiscovery support:
(+Avahi) (-Bonjour)
Client support:
(+IPv6) (+TCP) (+UNIX Domain Sockets)
File format support:
(+AAC) (-C64 SID) (+FFMPEG) (+FLAC) (+FluidSynth) (-GME) (+libsndfile)
(+MikMod) (-MODPLUG) (+MAD) (+MPG123) (+MP4) (+Musepack)
(-OggTremor) (+OggVorbis) (+WAVE) (+WavPack) (+WildMidi)
Other features:
(+libsamplerate) (+inotify) (+SQLite) (+rtopt)
Metadata support:
(+ID3)
Playback support:
(+ALSA) (-FFADO) (+FIFO) (+File Recorder) (+HTTP Daemon) (+JACK)
(+libao) (-Media MVP) (+OSS) (-OpenAL) (-OS X) (+Pipeline)
(+PulseAudio) (-ROAR) (+SHOUTcast) (-Solaris) (-WinMM)
Streaming encoder support:
(+FLAC) (+LAME) (+Ogg Vorbis) (+TwoLAME) (+WAVE)
Streaming support:
(+CDIO_PARANOIA) (+CURL) (-Despotify) (+Last.FM) (-Soundcloud)
(+MMS) (-SOUP)

##########################################

〜 省略 〜

config.status: creating config.h
config.status: executing depfiles commands
MPD is ready for compilation, type "make" to begin.


・make実行
[vortexbox.localdomain mpd-0.17.4]# make

〜 省略 〜

vorbis -lm -logg libmixer_plugins.a -lpulse libutil.a -pthread -lgthread-2.0 -lrt -lglib-2.0 -lmp3lame -lm
make[1]: ディレクトリ `/home/hanaguro/src/mpd/mpd-0.17.4' から出ます


・インストール
[vortexbox.localdomain mpd-0.17.4]# sudo make install-strip

・MPDを動かしているサービスを開始
[vortexbox.localdomain mpd-0.17.4]# sudo systemctl start vortexbox-player.service

2013/04/30

VortexBoxインストール直後からMPD最適化パッチを当てるまでの手順

VortexBox 2.2にMPD最適化パッチを当てるまでの手順です。

VortexBoxのMPDに最適化パッチを当て、Voyage MPDの場合に必要な設定と同等の設定を既にしていてもmpdプロセスの優先度が変わらない場合の対策は、「(9) 再起動時にMPDの優先度が設定されるようにする」の内容だけ行えば良いみたいです。

VortexBoxのMPD(Music Player Daemon)に最適化パッチを当てる」で実行したコマンドの手順になります。

こちらこちらを参考にいたしました。
PCオーディオ実験室
みみず工房

「(9) 再起動時にMPDの優先度が設定されるようにする」についてはこちらを参考にしました。


以下の例では他のPCからVortexBoxマシンにSSHでログインしています。

ユーザ追加とsudoを使えるようにするまでの手順はこちら

bash-3.2$ ssh -l hanaguro VortexBoxのIP
hanaguro@VortexBoxのIPs password: 

Last login: Wed May  1 00:17:44 2013 from 作業PCのIP
[vortexbox.localdomain ~]# 


(1) VortexBoxをアップグレードする

[vortexbox.localdomain ~]# sudo yum upgrade

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for hanaguro:

〜 省略 〜

トランザクションの要約
==================================================================================================================
インストール   1 パッケージ (+2 依存するパッケージ)
更新          59 パッケージ

総ダウンロード容量: 81 M
これでいいですか? [y/N]y

〜 省略 〜

file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-i386 から鍵を取得中です。

〜 省略 〜

From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-i386
これでいいですか? [y/N]y

〜 省略 〜


完了しました!
[vortexbox.localdomain ~]#


再起動します。

[vortexbox.localdomain ~]# sudo reboot

〜 再起動 〜




SSHでVortexBoxにログインします。

bash-3.2$ ssh -l hanaguro VortexBoxのIP
hanaguro@VortexBoxのIP's password:

Last login: Tue Apr 30 15:31:10 2013 from 作業PCのIP



(2) VortexBoxにデフォルトでインストールされているのMPDのプロセスの状態を調べる

[vortexbox.localdomain ~]# ps -eLo pid,ppid,lwp,rtprio,priority,cmd|grep mpd
 1336     1  1336      -  20 /usr/bin/mpd /etc/vortexbox-player/mpd0.conf
 1336     1  1338      -  20 /usr/bin/mpd /etc/vortexbox-player/mpd0.conf
 1336     1  1339      -  20 /usr/bin/mpd /etc/vortexbox-player/mpd0.conf
 1336     1  1341      -  20 /usr/bin/mpd /etc/vortexbox-player/mpd0.conf
 1336     1  1342      -  20 /usr/bin/mpd /etc/vortexbox-player/mpd0.conf
 1369  1050  1369      -  20 grep --color=auto mpd


当然優先度はまだ設定されていません。


(3) MPDのビルドに必要なものをそろえる

作業ディレクトリを作成し移動する。

[vortexbox.localdomain ~]# mkdir -p src/mpd/
[vortexbox.localdomain ~]# cd src/mpd
 


yum-builddepコマンドを使用してMPDのビルドに必要な必要なパッケージのインストールを試みますが、VortexBoxインストールしてupgradeしただけの状態だと失敗します。

[vortexbox.localdomain mpd]# sudo yum-builddep mpd
No source RPM found for mpd-1.17.2-2.fc16.i686
No uninstalled build requires
[vortexbox.localdomain mpd]#


そこで、setup-mplayerを実行します。

[vortexbox.localdomain mpd]# sudo /usr/local/sbin/setup-mplayer
読み込んだプラグイン:langpacks, presto, refresh-packagekit

 〜 省略 〜

tar: これは tar アーカイブではないようです
tar: 前のエラーにより失敗ステータスで終了します
cp: `essential-20071007/*' を stat できません: そのようなファイルやディレクトリはありません
Done.
[vortexbox.localdomain mpd]#


最後エラーになっていますが、目的は果たせたので先に進みます。
また、setup-mplayerを実行することによりffmpegもインストールされます。

再度yum-builddepコマンドを使用してMPDのビルドに必要な必要なパッケージのインストールを試みます。

[vortexbox.localdomain mpd]# sudo yum-builddep mpd
読み込んだプラグイン:langpacks, presto, refresh-packagekit
Enabling atrpms-source repository

〜 省略 〜

インストール  33 パッケージ (+45 依存するパッケージ)

総ダウンロード容量: 157 M
インストール済み容量: 218 M
これでいいですか? [y/N]y

〜 省略 〜

完了しました!

[vortexbox.localdomain mpd]# 


今度は成功しました。

まだgcc、make、patchコマンドがインストールされていないのでインストールします。

[vortexbox.localdomain mpd]# sudo yum install make
[vortexbox.localdomain mpd]# sudo yum install gcc
[vortexbox.localdomain mpd]# sudo yum install patch




(2013/09/16 追記)
sudo yum-builddep mpd を実行しても必要なパッケージがインストールされなくなっているようです。

下記の./configure等でエラーになる場合、それらを手動でインストールすれば良いのですが、全ては分かりませんでした。
MPDがビルドできない?
(2013/09/16 追記終了)


(2013/10/09 追記)
MPDがビルドできない?」ではyumコマンドで取得できないパッケージを無視していましたが、それらをソースからインストールする手順を下記に記述しました。
MPDがビルドできない? その2 
(2013/10/09 追記終了)



(4) MPDのソースと最適化パッチを取得する

[vortexbox.localdomain mpd]# wget http://www.musicpd.org/download/mpd/0.17/mpd-0.17.4.tar.xz
[vortexbox.localdomain mpd]# wget http://www.symphonic-net.com/kubotayo/cgi-bin/downlog.cgi?edata/mpd-0.17git-20120226rtopt.diff.gz



(5) MPDのソースを解凍しパッチを当てる

[vortexbox.localdomain mpd]# tar xJvf mpd-0.17.4.tar.xz

〜 省略 〜

mpd-0.17.4/NEWS

[vortexbox.localdomain mpd]# cd mpd-0.17.4/

[vortexbox.localdomain mpd-0.17.4]# zcat ../mpd-0.17git-20120226rtopt.diff.gz |patch -p1
patching file Makefile.am
Hunk #1 succeeded at 221 (offset 1 line).
Hunk #2 succeeded at 402 with fuzz 2 (offset 10 lines).
patching file configure.ac
Hunk #3 succeeded at 1584 (offset 8 lines).
patching file src/conf.c
Hunk #1 succeeded at 102 (offset -1 lines).
patching file src/conf.h
patching file src/decoder_thread.c
Hunk #2 succeeded at 464 (offset 4 lines).
patching file src/main.c
Hunk #2 succeeded at 314 (offset -3 lines).
Hunk #3 succeeded at 324 (offset -3 lines).
Hunk #4 succeeded at 381 (offset -3 lines).
Hunk #5 succeeded at 487 (offset -3 lines).
patching file src/output_internal.h
patching file src/output_thread.c
Hunk #1 succeeded at 32 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 584 (offset 5 lines).
patching file src/player_thread.c
Hunk #2 succeeded at 1087 (offset 27 lines).
patching file src/rt_opt.c
patching file src/rt_opt.h
patching file src/update.c
Hunk #1 succeeded at 33 (offset 2 lines).
Hunk #2 succeeded at 76 (offset 5 lines).


リジェクトはされていないようです。


(6) MPDをビルドし、インストールする

なお、VortexBoxにインストールされているconfigure時のオプションはこちらの方法で調べてなるべくそれに合わせました。

--enable-rtop: は最適化パッチを使用するために必要なオプションのようです。

--prefix=/usr/local: を指定して/usr/local以下にインストールするように明示的に指示しました。

(2013年5月5日 追記)
問題があったわけではないのですが、 --enable-zzipオプションを指定して作り直しました。
VortexBoxのMPDを--enable-zzipオプション指定してビルド
(2013年5月5日 追記終了)

[vortexbox.localdomain mpd-0.17.4]# ./autogen.sh

〜 省略 〜

MPD is ready for compilation, type "make" to begin.

[vortexbox.localdomain mpd-0.17.4]# ./configure --enable-wildmidi --enable-fluidsynth --enable-mikmod --enable-bzip2 --enable-zip --enable-iso9660 --enable-pipe-output --enable-lastfm --enable-rtopt --prefix=/usr/local
configure: WARNING: unrecognized options: --enable-zip

〜 省略 〜

########### MPD CONFIGURATION ############

Archive support:
        (+bzip2) (+ISO9660) (-ZIP)
Autodiscovery support:
        (+Avahi) (-Bonjour)
Client support:
        (+IPv6) (+TCP) (+UNIX Domain Sockets)
File format support:
        (+AAC) (-C64 SID) (+FFMPEG) (+FLAC) (+FluidSynth) (-GME) (-libsndfile)
        (+MikMod) (-MODPLUG) (+MAD) (+MPG123) (+MP4) (+Musepack)
        (-OggTremor) (+OggVorbis) (+WAVE) (+WavPack) (+WildMidi)
Other features:
        (+libsamplerate) (+inotify) (+SQLite) (+rtopt)
Metadata support:
        (+ID3)
Playback support:
        (+ALSA) (-FFADO) (+FIFO) (+File Recorder) (+HTTP Daemon) (+JACK)
        (+libao) (-Media MVP) (+OSS) (-OpenAL) (-OS X) (+Pipeline)
        (+PulseAudio) (-ROAR) (+SHOUTcast) (-Solaris) (-WinMM)
Streaming encoder support:
        (+FLAC) (+LAME) (+Ogg Vorbis) (+TwoLAME) (+WAVE)
Streaming support:
        (+CDIO_PARANOIA) (+CURL) (-Despotify) (+Last.FM) (-Soundcloud)
        (+MMS) (-SOUP)

##########################################

〜 省略 〜

configure: WARNING: unrecognized options: --enable-zip
MPD is ready for compilation, type "make" to begin.
[vortexbox.localdomain mpd-0.17.4]# 


--enable-zipオプションは存在しないみたいですが、問題なさそうなので無視します。

[vortexbox.localdomain mpd-0.17.4]# make

〜 省略 〜

-lpulse libutil.a -pthread -lgthread-2.0 -lrt -lglib-2.0 -lmp3lame -lm

make[1]: ディレクトリ `/home/hanaguro/src/mpd/mpd-0.17.4' から出ます

[vortexbox.localdomain mpd-0.17.4]# sudo make install-strip

〜 省略 〜

/usr/bin/install -c -m 644 doc/mpd.conf.5 '/usr/local/share/man/man5'
make[2]: ディレクトリ `/home/hanaguro/src/mpd/mpd-0.17.4' から出ます
make[1]: ディレクトリ `/home/hanaguro/src/mpd/mpd-0.17.4' から出ます
[vortexbox.localdomain mpd-0.17.4]#



(7) MPDの起動スクリプトを修正する

MPDは/usr/local以下にインストールしたため、起動スクリプトを修正します。
色を変えているところが修正した箇所です。

[vortexbox.localdomain mpd-0.17.4]# sudo vi /etc/rc.d/init.d/vortexbox-player

〜 省略 〜

start() {

if [ ! "`pidof /usr/bin/vortexbox-player`" ]; then
         # restore sound card settings
          /sbin/alsactl restore
          /opt/vortexbox/unmute_all.sh

         for macaddr in $(cat /etc/vortexbox-player/mac_list.conf )
         do
                echo -n $"Starting mpd: "
#               /usr/bin/mpd /etc/vortexbox-player/mpd$COUNT.conf
                /usr/local/bin/mpd /etc/vortexbox-player/mpd$COUNT.conf

                echo

〜 省略 〜


[vortexbox.localdomain mpd-0.17.4]# sudo systemctl --system daemon-reload



(8) MPDの設定ファイルに優先度の設定を追加する

MPDの起動時に/etc/vortexbox-player/mpd0.confを読むようになっていますが、このファイルを直接修正して優先度の設定を追加しても、他のPCのブラウザからVortexBoxの設定画面にアクセスし、

「Configure VortexBox Player」(http:// VortexBoxのIP /vortexbox-player.php)

で設定を変更すると修正して追加した設定内容が消えてしまいます。

これを避けるために、

 /opt/vortexbox/mpd_config.php

に優先度の設定を記述します。
色が変わっている箇所が変更点です。

(2013年5月16日 追記)
 outputのproirityをFIFO:99からFIFO:98に変更
(2013年5月16日 追記終了)


[vortexbox.localdomain mpd-0.17.4]# sudo vi /opt/vortexbox/mpd_config.php

〜 省略 〜

        if (strtoupper($devarray['DEVICENAME']) != "DEFAULT") {
                $devicelist=(preg_split('/\s+/', $devarray['DEVICENAME']));
                $count=1;
                foreach ($devicelist as $v) {
                        $configcontent.='audio_output {'."\n";
                        $configcontent.='       type            "alsa"'."\n";
                        $configcontent.='       name            "'.$devarray['NAME']."-".$count.'"'."\n";
                        $configcontent.='       device          "'.trim($v).'"'."\n";
                        $configcontent.='       dsd_usb     "yes"'."\n";
                        $configcontent.='       priority    "FIFO:98"'."\n";
                        if ($devarray['softvol_ischecked'] == "softvol") { $configcontent.='    mixer_type      "software"'."\n";}
                        $configcontent.='}'."\n";
                        $count++;
                }      
        }      
       
        $configcontent.='realtime_option {'."\n";
        $configcontent.='    memlock        "yes"'."\n";
        $configcontent.='    stack_reserve    "1024"'."\n";
        $configcontent.='    heap_reserve    "0"'."\n";
        $configcontent.='    main_priority    "OTHER:0"'."\n";
        $configcontent.='    player_priority "FIFO:52"'."\n";
        $configcontent.='    decoder_priority "FIFO:48"'."\n";
        $configcontent.='    update_priority "OTHER:0"'."\n";
        $configcontent.='}'."\n";

       
        fwrite($mpdfile,$configcontent);
        fclose($mpdfile);

〜 省略 〜




ここで他のPCのブラウザからVortexBox設定画面の

「Configure VortexBox Player」(http:// VortexBoxのIP /vortexbox-player.php)

にアクセスして「Submit」ボタンを押します。

mpd_config.phpの修正に成功していれば/etc/vortexbox-player/mpd0.confは以下のようになるはずです。

[vortexbox.localdomain ~]# less /etc/vortexbox-player/mpd0.conf

〜 省略 〜

audio_output {
        type            "alsa"
        name            "Player1-1"
        device          "plughw:0,0"
        dsd_usb     "yes"
        priority    "FIFO:98"
}
realtime_option {
    memlock        "yes"
    stack_reserve    "1024"
    heap_reserve    "0"
    main_priority    "OTHER:0"
    player_priority "FIFO:52"
    decoder_priority "FIFO:48"
    update_priority "OTHER:0"
}

〜 省略 〜



もしここで再起動しても、mpdプロセスの優先度の設定は有効になりません。


(9) 再起動時にMPDの優先度が設定されるようにする

/etc/sysctl.confを修正し、kernel.sched_rt_runtime_us=-1を追加します。

[vortexbox.localdomain ~]# sudo cp -i /etc/sysctl.conf  /etc/sysctl.conf.orig
[vortexbox.localdomain ~]# sudo vi /etc/sysctl.conf
[vortexbox.localdomain ~]# tail -n1 /etc/sysctl.conf
kernel.sched_rt_runtime_us=-1
[vortexbox.localdomain ~]# 


再起動し、mpdプロセスの優先度が設定されていることを確認します 。

[vortexbox.localdomain ~]# sudo reboot

bash-3.2$ ssh -l hanaguro VortexBoxのIP
hanaguro@VortexBoxのIP's password:
Last login: Tue Apr 30 18:09:58 2013 from 作業PCのIP

[vortexbox.localdomain ~]# ps -eLo pid,ppid,lwp,rtprio,priority,cmd|grep mpd
  917     1   917      -  20 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
  917     1   918      -  20 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
  917     1   919     52 -53 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
  917     1   920     48 -49 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
  917     1   921     99 -100 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
 1049   987  1049      -  20 grep --color=auto mpd



(2013年5月16日 追記)

(10) MPD以外のプロセスの優先度を設定する

MPDを使用しての音楽再生時のプロセスの動きをtopコマンドで調べたり、また/proc/interruptsから割り込みの発生回数を調べた結果、私の環境では/etc/rc.d/rc.localに下記の内容を追加しました。
優先度の設定はその日の気分で色々いじってみたいと思います。

chrt -p -f 99 `pgrep irq/23-uhci_hcd`
chrt -p -f 99 `pgrep irq/23-ehci_hcd`
chrt -p -f 51 `pgrep mount.exfat`
chrt -p -f 51 `pgrep irq/16-uhci_hcd`
chrt -p -f 51 `pgrep irq/16-0000:01:`

[vortexbox.localdomain ~]# sudo vi /etc/rc.d/rc.local

〜 省略 〜

[vortexbox.localdomain ~]# tail -n5 /etc/rc.d/rc.local
chrt -p -f 99 `pgrep irq/23-uhci_hcd`
chrt -p -f 99 `pgrep irq/23-ehci_hcd`
chrt -p -f 51 `pgrep mount.exfat`
chrt -p -f 51 `pgrep irq/16-uhci_hcd`
chrt -p -f 51 `pgrep irq/16-0000:01:`


(2013年5月16日 追記終了)

VortexBoxにインストールされているMPDのconfigureオプションを調べる

VortexBoxにインストールされているMPD(Music Player Daemon)のソースパッケージを取得してspecファイルからコンパイルオプションを調べます


(1) MPDのソースパッケージ(SRPM)の取得を試みるがVortexBoxのインストール直後だとエラーになる

[vortexbox.localdomain mpd]# yumdownloader --source mpd
読み込んだプラグイン:langpacks, presto, refresh-packagekit

〜 省略 〜

No source RPM found for mpd-1.17.2-2.fc16.i686
Nothing to download

[vortexbox.localdomain mpd]#


(2) setup-mplayer コマンドを実行する

ffmpegコマンドがインストール出来ない問題の対策でsetup-mplayerを実行したのですが、MPDのソースパッケージを取得する場合にも必要のようです。

[vortexbox.localdomain mpd]# sudo /usr/local/sbin/setup-mplayer
読み込んだプラグイン:langpacks, presto, refresh-packagekit

 〜 省略 〜

tar: これは tar アーカイブではないようです
tar: 前のエラーにより失敗ステータスで終了します
cp: `essential-20071007/*' を stat できません: そのようなファイルやディレクトリはありません
Done.
[vortexbox.localdomain mpd]#


最後エラーになっていますが、目的は果たせたので先に進みます。


(3) MPDのソースパッケージを取得する

[vortexbox.localdomain mpd]# yumdownloader --source mpd
読み込んだプラグイン:langpacks, presto, refresh-packagekit

〜 省略 〜

mpd-0.17.2-25.src.rpm
[vortexbox.localdomain mpd]#

今度は成功しました。


(4)  取得したMPDのソースパッケージからspecファイルを取り出す

まず作業ディレクトリを作成し移動します。

[vortexbox.localdomain mpd]# mkdir srpm/ 
[vortexbox.localdomain mpd]# cd srpm/

ソースパッケージからファイルを取り出します。

[vortexbox.localdomain srpm]# rpm2cpio ../mpd-0.17.2-25.src.rpm |cpio -id


(5) specファイルを調べる

取り出したmpd.specファイル内でconfigureを実行している箇所を見つけます。

[vortexbox.localdomain srpm]# less mpd.spec

〜 省略 〜

%configure \
           --with-systemdsystemunitdir=%{_unitdir} \
           --enable-wildmidi \
           --enable-fluidsynth \
           --enable-mikmod \
           --enable-bzip2 \
           %{?with_pulse:--enable-pulse} \
           %{!?with_sqlite:--disable-sqlite} \
           --enable-zip \
           --enable-iso9660 \
           --enable-pipe-output \
           --enable-lastfm

〜 省略 〜

2013/04/29

VortexBoxのMPD(Music Player Daemon)に最適化パッチを当てる

安かったので購入したのに全く使っていなかったノートPCにVortexBoxというLinuxディストリビューションをインストールしました。
VortexBox user forum - News:

インストールしたVortexBoxのバージョンは2.2です。

VortexBoxは音楽配信に特化したLinuxディストリビューションとのことですが、外部DACをUSBに接続してMPD(Music Player Daemon)を使って音楽を聴くことも出来ます。

ノートPCのパーティションを全部初期化してインストールした限りでは、VortexBoxのインストールはとても簡単でした。

VortexBoxで動いているMPDの最適化パッチをこちらこちらを参考に当てました。
とてもすばらしいパッチをありがとうございます。
PCオーディオ実験室
みみず工房

パッチを適用したMPDのバージョンは0.17.4です。

パッチを使用する上で悩んだのは以下の点でしょうか。
  1. /etc/mpd.confや/etc/vortexbox-player/mpd0.confに記述した設定が前者は無視され、後者はいつの間にか消えている
  2. mpdの優先度が設定されていない
  3. mount.exfat-fuseなどのプロセスにchrt コマンドで優先度を設定しようとするとOperation not permittedになる 

1は後回しにします。

  • 2と3について
2と3については関連しているようです。

システム起動時にmpdを起動するようにした場合、後から優先順位を設定しようと下記のコマンド

# sudo chrt -p -f 99 `pgrep mpd`

を実行すると "Operation not permitted"になってしまいました。

さんざん悩んだのですが、こちらにある方法で上手くいくみたいです。

私は/etc/sysctl.confに

kernel.sched_rt_runtime_us=-1

と記述し、

/etc/rc.d/rc.local



/usr/bin/chrt -p -f 49 `pgrep -f mount.exfat-fuse`
/usr/bin/chrt -p -f 49 `pgrep usb-storage`


を記述しました。

[vortexbox.localdomain ~]# tail -n1 /etc/sysctl.conf
kernel.sched_rt_runtime_us=-1
[vortexbox.localdomain ~]# tail -n2 /etc/rc.d/rc.local
/usr/bin/chrt -p -f 49 `pgrep -f mount.exfat-fuse`
/usr/bin/chrt -p -f 49 `pgrep usb-storage`


またmpdは

/usr/local

以下にインストールしたので、

/etc/rc.d/init.d/vortex-player

のmpdを起動している部分を修正しました。

[vortexbox.localdomain ~]# cat /etc/rc.d/init.d/vortexbox-player

~ 省略 ~

#               /usr/bin/mpd /etc/vortexbox-player/mpd$COUNT.conf
                /usr/local/bin/mpd /etc/vortexbox-player/mpd$COUNT.conf

~ 省略 ~


ここまでの設定と、下の方に記述した「1について」の設定を行った状態で再起動した直後のpsコマンドの結果です。
一応設定通りになっているかなと思っています。

[vortexbox.localdomain ~]# ps -eLo pid,ppid,lwp,rtprio,priority,cmd
 PID  PPID   LWP RTPRIO PRI CMD
    1     0     1      -  20 /sbin/init

 ~ 省略 ~

  235     2   235     49 -50 [usb-storage]

 ~ 省略 ~

  733     1   733     49 -50 /sbin/mount.exfat-fuse /dev/sdb1 /mnt/EXHDD2 -o rw,umask=000

 ~ 省略 ~

 1665     1  1665      -  20 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
 1665     1  1666      -  20 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
 1665     1  1668     52 -53 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
 1665     1  1669     48 -49 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf
 1665     1  1673     99 -100 /usr/local/bin/mpd /etc/vortexbox-player/mpd0.conf

 ~ 省略 ~



  • 1について
1についてですが、mpdの起動などを行っているらしい

/etc/rc.d/init.d/vortexbox-player

では次のように記述されています。

/usr/bin/mpd /etc/vortexbox-player/mpd$COUNT.conf

ですので

/etc/mpd.conf

は存在していても使用していないようです。

また、VortexBoxの主要な設定は他のPCのWebブラウザから変更することが出来るのですが、「Configure VortexBox Player」のページから設定を変更すると

/etc/vortexbox-player/mpd0.conf

で行った設定はクリアされてしまいます。

ブラウザから設定変更した際に呼ばれているPHPスクリプトは

/opt/vortexbox/mpd_config.php

のようです。

私のmpd_config.phpは次のようにしています。
色を変えてある箇所が加えたところです。

私は音を出すのは外部DAC経由でしか行っていませんので、複数のサウンドデバイスから音を出すのであればもう少し考えて記述しなければいけないかもしれません。
(もっと言うと、適当にいじっただけです…)
    <?php
    // This program is free software; you can redistribute it and/or
    // modify it under the terms of the GNU General Public License
    // as published by the Free Software Foundation; either version 2
    // of the License, or (at your option) any later version.
    //
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU General Public License for more details.
    //

    error_reporting(E_ERROR);

    $configfile = "/var/www/html/config/playergui.cfg";
    $configall = file_get_contents($configfile);
    $config = unserialize($configall);

    $vbplayer="";
    $vbplayerfile = fopen("/etc/vortexbox-player/mac_list.conf",'w');
    $x=0;
    foreach ($config as $devarray) {
      if (isset($devarray['NAME'])) {
        $mpdfile = fopen("/etc/vortexbox-player/mpd".$x.".conf",'w');

        $configcontent="# Created by Configure VortexBox Player on ".date('F j, Y, g:i a')."\n";
        $configcontent.="# If you edit this file it will be over written the next time you make\n";
        $configcontent.="# changes in the Configure VortexBox Player GUI.\n";
        $configcontent.="#"."\n";
        if ($x == 0) {
            $configcontent.='music_directory  "/storage/music/flac"'."\n";
            $configcontent.='playlist_directory  "/var/lib/mpd/playlists"'."\n";
            $configcontent.='db_file  "/var/lib/mpd/database"'."\n";
            $configcontent.='log_file  "/var/log/mpd.log"'."\n";
            $configcontent.='pid_file  "/var/lib/mpd/pid"'."\n";
            $configcontent.='state_file  "/var/lib/mpd/state"'."\n";
            $configcontent.='sticker_file  "/var/lib/mpd/sticker.sql"'."\n";
    }
    if (file_exists("/etc/vortexbox/mpd_auto_update.no")) {
            $configcontent.='auto_update "no"'."\n";
        } else {
            $configcontent.='auto_update "yes"'."\n";
        }
        $configcontent.='port  "'.(6600 + $x).'"'."\n";
        $configcontent.='zeroconf_enabled  "yes"'."\n";
        $configcontent.='zeroconf_name  "'.$devarray['NAME'].'"'."\n";
        $configcontent.="\n";
        if (strtoupper($devarray['DEVICENAME']) != "DEFAULT") {
            $devicelist=(preg_split('/\s+/', $devarray['DEVICENAME']));
            $count=1;
            foreach ($devicelist as $v) {
                $configcontent.='audio_output {'."\n";
                $configcontent.='    type        "alsa"'."\n";
                $configcontent.='    name        "'.$devarray['NAME']."-".$count.'"'."\n";
                $configcontent.='    device        "'.trim($v).'"'."\n";
                $configcontent.='    dsd_usb     "yes"'."\n";
                $configcontent.='    priority    "FIFO:99"'."\n";
                if ($devarray['softvol_ischecked'] == "softvol") { $configcontent.='    mixer_type    "software"'."\n";}
                $configcontent.='}'."\n";
                $count++;
            }
        }

        $configcontent.='realtime_option {'."\n";
        $configcontent.='    memlock        "yes"'."\n";
        $configcontent.='    stack_reserve    "1024"'."\n";
        $configcontent.='    heap_reserve    "0"'."\n";
        $configcontent.='    main_priority    "OTHER:0"'."\n";
        $configcontent.='    player_priority "FIFO:52"'."\n";
            $configcontent.='    decoder_priority "FIFO:48"'."\n";
            $configcontent.='    update_priority "OTHER:0"'."\n";
        $configcontent.='}'."\n";

        fwrite($mpdfile,$configcontent);
        fclose($mpdfile);
        $vbplayer.=$devarray['MAC']."\n";

        }
    $x++;
    }

    fwrite($vbplayerfile,$vbplayer);
    fclose($vbplayerfile);

    // restart vortexbox-player
    exec("/bin/systemctl restart vortexbox-player.service");

    ?>