Page 3 / 31 :  « ‹ Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Next › »

Current filter: »mpd« (Click tag to exclude it or click a conjunction to switch them.)

Jan 22, 2017

mpdのHTTPストリーミング機能でflacを配信してみる(24日追記)

今回はこれ。
MPD Stream lossless flac or wav / Takla's Weblog
https://takla.wordpress.com/2014/04/01/mpd-stream-lossless-flac-or-wav/

MPD HTTP streaming reducing CPU load ! / raspberrypi.org forum
https://www.raspberrypi.org/forums/viewtopic.php?f=35&t=43670
MPD and high CPU usage / raspberrypi.org forum
https://www.raspberrypi.org/forums/viewtopic.php?f=35&t=47400

Music Player Daemon/Tips and tricks HTTP ストリーミング / ArchWiki
https://wiki.archlinuxjp.org/index.php/Music_Player_Daemon/Tips_and_tricks#HTTP_.E3.82.B9.E3.83.88.E3.83.AA.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0

mpdをhttpサーバーに出来るという。flacでもストリーミングできるそうな。
よくよく読んだらvlcかmplayerじゃないと聴けないみたいなんだけど、まあ、試してみた。

使用したのはraspberry pi B+を2台。OSにはraspbian jessie。
まず1台にmpdをインストールしてhttpストリーミングサーバーにする。
流れは以下の通り。

sudo raspi-config
vi /etc/dhcpcd.conf
sudo reboot

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mpd mpc flac

chmod 777 /etc/mpd.conf
vi /etc/mpd.conf

#
music_directory         "/var/lib/mpd/music"
playlist_directory              "/var/lib/mpd/playlists"
db_file                 "/var/lib/mpd/tag_cache"
log_file                        "/var/log/mpd/mpd.log"
pid_file                        "/run/mpd/pid"
state_file                      "/var/lib/mpd/state"
sticker_file                   "/var/lib/mpd/sticker.sql"
#
#user                           "mpd"
#group                          "nogroup"
#bind_to_address                "localhost"
#bind_to_address                "/run/mpd/socket"
#
#port                           "6600"
#
#### audio_output {
# type          "alsa"
# name          "My ALSA Device"
# device                "hw:0,0"        # optional
#       mixer_type      "hardware"      # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
# }
#
audio_output {
type            "httpd"
name            "My HTTP Stream"
encoder         "flac"          # optional, vorbis or lame
port            "8000"
#### bind_to_address "192.168.1.85"               # optional, IPv4 or IPv6
#       quality         "5.0"                   # do not define if bitrate is defined
#       bitrate         "128"                   # do not define if quality is defined
format          "44100:16:2"
#       max_clients     "0"                     # optional 0=no limit
}
#
#### samplerate_converter               "Fastest Sinc Interpolator"
#### audio_output_format "96000:16:2"
#

sudo chmod -R 777 /var/log/mpd
sudo chmod -R 777 /run/mpd
sudo chmod -R 777 /var/lib/mpd

sudo mount -o addr=192.168.1.80,nolock -t nfs 192.168.1.80:/titan/jazz /var/lib/mpd/music
sudo mpd --kill
pstree

systemd-+-2*[agetty]
        |-avahi-daemon---avahi-daemon
        |-cron
        |-dbus-daemon
        |-dhcpcd
        |-mpd-+-{decoder:flac}
        |     |-{io}
        |     |-{output:My HTTP }
        |     `-{player}
        |-ntpd
        |-rsyslogd-+-{in:imklog}
        |          |-{in:imuxsock) S 1
        |          `-{rs:main Q:Reg}
        |-sshd---sshd---sshd---bash---pstree
        |-systemd-journal
        |-systemd-logind
        |-systemd-udevd
        `-thd

途中で何回かリブートしたけど、大体こんな感じ。
mpdをサーバーにできるので、ncmpcppでファイルや曲の選択ができるのが強み。データベースのアップデートはスピーディで、cue sheetも使える。
今回はなぜかapt-get update upgradeしなかったら、apt-get mpdができなかった。
samplerate_converterでアップサンプリングしたら処理能力を超える感じだったので止めた。
sudo mpd --kill でmpdを落としたら、数秒で再起動するようになっているようだ。

次にストリーミング受信機の設定。
mpdで受けれたらいいんだけど無理っぽい。
https://wiki.archlinuxjp.org/index.php/Music_Player_Daemon/Tips_and_tricks には mpc add http://192.168.1.86:8000 とかコマンドでできるみたいなことが書いてあるけど、多分、vorbis or lameじゃないといけないんだろう。

https://takla.wordpress.com/2014/04/01/mpd-stream-lossless-flac-or-wav/ こちらのリンク先などに書いてあるとおり、mplayerを使う。
以下、流れを記載。
あらかじめbootのconfig.txtにi2sDACの設定を書き込んでおく。

sudo raspi-config
vi /etc/dhcpcd.conf
sudo reboot

sudo apt-get install alsa-base

sudo apt-get update
sudo apt-get upgrade

なんかalsaインストールが先になってる。ここらの流れで挙動が変わるかどうかは不明。
mplayerインストールする。

sudo apt-get install mplayer
man mplayer
mplayer -idle -cache 2048 http://192.168.1.86:8000

これで、httpサーバー192.168.1.86からのストリーミングを受信してras piのイヤホンジャックから音を聞ける。なかなかきれいな音だけど、再生開始までcache取り込みの時間がかかる。cacheはデフォルトだともっと少ないらしいのけど、ときに再生中に途切れたり、再生開始のときにノイズが乗るので、コマンドで2048にしている。

しかしi2sDACから音を出したい。
alsaを設定する。

cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_soc_hifiberry_dac

cat /proc/asound/cards
 0 [ALSA           ]: bcm2835 - bcm2835 ALSA
                      bcm2835 ALSA
 1 [sndrpihifiberry]: snd_rpi_hifiber - snd_rpi_hifiberry_dac
                      snd_rpi_hifiberry_dac

1 [sndrpihifiberry]をデフォルトにしないとi2sDACから音が出ないのでasound.confを作る。

sudo vi /etc/asound.conf

pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}

pi@raspberrypi:~ $ mplayer -idle -cache 2048 http://192.168.1.86:8000

MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team
Cannot open file '/home/pi/.mplayer/input.conf': No such file or directory
Failed to open /home/pi/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.

Playing http://192.168.1.86:8000.
Resolving 192.168.1.86 for AF_INET6...
Couldn't resolve name for AF_INET6: 192.168.1.86
Connecting to server 192.168.1.86[192.168.1.86]: 8000...
Name   : My HTTP Stream
Genre  : Set genre in config
Website: Set website in config
Public : yes
Cache size set to 2048 KiB
Cache fill:  0.00% (0 bytes)   
ICY Info: StreamTitle='NEBULA - Manabu Ohishi Trio - NEBULA';StreamUrl='';
Cache fill: 19.14% (401408 bytes)   
Detected file format: Audio only
Selected audio codec: FLAC (Free Lossless Audio Codec) [libavcodec]
AUDIO: 44100 Hz, 2 ch, s16le, 524.3 kbit/37.15% (ratio: 65536->176400)
AO: [pulse] Init failed: Connection refused
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
[AO_ALSA] Unable to find simple control 'Master',0.
Video: no video
Starting playback...
A:   4.5 (04.4) of 0.0 (00.0)  2.1% 12% 

これでi2sDACから音が出る。終了は「q」キー。
問題は、前記コマンドでmplayerを起動しても、ストリーミング信号が受信できないと数秒で終了してしまうこと。つまり先にmpdサーバーから配信開始してから、mplayerを起動しないといけない。これって楽曲の冒頭が聞けないのだ。バックグラウンドで動作させる方法を発見できないのも地味に困る。なにか方法があるんじゃないかと思うんだけど。

例によって、現時点では音質の確認はしていない。

24日、追記。
普通にvolumio1.55にNASをマウントしたのと比較したら、そっちのほうが音がいい。
そしてやっぱり圧倒的に扱いやすかった。快適に扱えるというのは、やはり助かる。

Posted at 16:24 in audio_diary | WriteBacks (0) | Edit Tagged as:

Jan 16, 2017

MinimServerをRaspberry Pi B+で動かしてみた(24日追記)

UPnP関連が続いている。
Raspberry Pi B+ / Raspbianでminimserverを動かしてみた。
以前、NASで扱おうとしてうまくいかなかったのは理解が不十分だったからっぽい。
音質評価はまだしていない。動かすだけでも僕の知識ではなかなか大変だからだ。そのうち追記するつもりだけど、いつになるか分からない。

現状、どんなことになっているか図示してみる。

図示

作業経過をメモしていく。

まずRaspbian Jessie Liteをダウンロード。
https://www.raspberrypi.org/downloads/raspbian/

今回使ったのは、2016-11-25-raspbian-jessie-lite.zip(今日確認したら既に上位バージョンが公開されていた)。
展開してイメージをmicroSDカードに焼く。
sshでログインして操作するつもりだけど、Jessie2016-11-25-raspbian-jessie以降はデフォルトで使えなくなっている。使えるようには、bootパーティションに「ssh」というファイルを置けばいい。カードを手元のPCにマウントして、エディタでファイルを作る。文面は無しでいい。

Raspberry Pi B+を用意して、Raspbianで起動。
sshでログイン。ユーザーはpi、パスはraspberry。

sudo raspi-configで初期設定。
sudo apt-get updateとsudo apt-get upgradeはしていない(というのはjavaのインストールでつまづいたから。しなかったら問題なくインストールできた)。
IPアドレスを固定。
/etc/network/interfacesで設定することが多いようだけど、そこにはman dhcpcd.confを参照しろとあって、/etc/dhcpcd.confを編集しろということらしい。

vi /etc/dhcpcd.conf

interface eth0
static ip_address=192.168.1.83/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

sudo reboot

こんな感じでIP固定される。

minimserverのサイトを参照。ras piではどうすればいいか書いてある。
http://minimserver.com/install-raspbian.html
minimserverはjavaで動くので、インストール。

sudo apt-get install oracle-java7-jdk
java -version

pi@raspberrypi:~ $ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) Client VM (build 24.60-b09, mixed mode)

下記からMinimServer-0.8.4-linux-armhf.tar.gzをダウンロード。
http://minimserver.com/downloads/index.html
Linux ARM用にはsoft floatとhard floatが用意されてるんだけど、ras piはhard float用。
以下、参考のサイト。

How can I tell if I am using the hard-float or the soft-float version of Debian/Raspbian?
http://raspberrypi.stackexchange.com/questions/4677/how-can-i-tell-if-i-am-using-the-hard-float-or-the-soft-float-version-of-debian

Check for the existence of the directory:
/lib/arm-linux-gnueabihf
the soft-float version do not have this directory, they have:
/lib/arm-linux-gnueabi
instead, or you can list the packages installed using:
dpkg -l
and see the platform in the third column (all/armhf/armel)

http://minimserver.com/install-raspbian.htmlに書いている通りに進む。
/home/piに落としたファイルをコピー。僕はFilezillaで転送した。

cd /home/pi
tar xf MinimServer-0.8.4-linux-armhf.tar.gz

mkdir music
minimserver/bin/setup

Do you want to change these settings (y/n)?
y
Enable automatic startup for MinimServer (y/n)?
y

minimserver/bin/startc

MinimServer 0.8.4, Copyright (c) 2012-2016 Simon Nash. All rights reserved.
autoUpdate: installed package 'minimserver-0.8-update-96'
Enter command (? for help):
autoUpdate: relaunching runtime
>MinimServer 0.8.4 update 96, Copyright (c) 2012-2017 Simon Nash. All rights reserved.
starting MinimServer[raspberrypi]
Enter content directory, or null to continue:
Enter command (? for help):
>#/

ここで、minimserverが管理するディレクトリを設定する。

>#/home/pi/music
MinimServer[raspberrypi] is running
>

この時点で、minimserverに端末からログインした状態になる。
さて、http://minimserver.com/install-raspbian.htmlからちょっと引用。

11. If MinimServer is running as a terminal application, MinimServer will terminate if the terminal window is closed for any reason. To prevent this happening, press Enter at the command prompt to exit MinimServer, then enter the command:
minimserver/bin/startd
This restarts MinimServer as a daemon background process that will continue to run after the terminal window is closed.

使ってみたらわかるんだけど、exitしたらminimserverも終了するということ。
minimserver/bin/startd
このコマンドで起動させたらデーモンとして動く。

minimserverのサイトはとても詳しく書いてくれているようなんだけど、読むのが大変。

下記コマンドでNASの共有フォルダ/titan/jazzをras piのmusicにマウントできる。
sudo mount -o addr=192.168.1.80,nolock -t nfs 192.168.1.80:/titan/jazz /home/pi/music

次に、minimwatchを手元のPCにインストール。minimserverをデーモン化したのでminimwatchからコントロールすることになる。
minimwatchがなくてもminimserver自体を操作することは出来るんだけど、前述の通り、exitしたら止まるのでminimwatchから操作する方が便利だろう。

ノートPCのFedoraにインストール。linuxなので下記を参照。
http://minimserver.com/install-raspbian.html
http://minimserver.com/install-linux-mwatch.html
書いてある通りに進む。
minimwatchのダウンロード。javaが合ってないといけないよとか書いてある。
うちのFedoraは32bitなのでMinimWatch-0.8.4-linux-x86.tar.gzを使う。

mkdir minim-home
cd /home/ab/minim-home

tar xf MinimWatch-0.8.4-linux-x86.tar.gz
minimwatch/bin/setup

MinimWatch desktop integration is disabled
MinimWatch automatic startup is disabled

Do you want to change these settings (y/n)?
n

minimwatch/bin/startc

[ab@hp6730bHitachi minim-home]$ minimwatch/bin/startc
MinimWatch 0.8.4 update 49, Copyright (c) 2012-2017 Simon Nash. All rights reserved.
Enter command (? for help):
Selected media server: MinimServer[raspberrypi]
MinimServer[raspberrypi] is running
>?
Commands:
 rescan     restarts the media server and rescans the media library
 props      shows current properties for the media server
 prop n=v   sets media server property name n to value v
 about      shows version and status information for the media server
 stop       stops the media server without exiting the server application
 restart    restarts the stopped or running media server
 close      exits the media server application
 select s   selects media server s for display and control
 refresh    refreshes the status of all media servers
 exit       exits this application
 packages   shows installed packages (with status) and available packages
 install p  installs package p
 remove p   removes installed package p
 undo p     undoes a pending change to installed package p
 relaunch   relaunches the runtime and applies pending package changes
 modules    shows installed modules (with status)
 updates    shows available updates for installed packages
 sleep t    delays execution for t seconds (can be useful for scripting)
 help       (or ?) displays this information
>
>rescan
restarting MinimServer[raspberrypi]
starting MinimServer[raspberrypi]
MinimServer[raspberrypi] is running
>

これで、minimwatchはオーケー。
端末からインストールした「minim-home」ディレクトリに入って、そこでコマンドを打つと操作できる。
うちのシステムではなぜかguiでの操作がうまくいかない。
>MinimWatch desktop integration is disabled
この設定がいけないのかと思って直しても見たけど、変わらない。でもシンプルな使い方ならcuiで困らないかな。

rescan でminimserverが再起動され、ライブラリがアップデートされる。
exit しても、minimwatchが終了するだけでminimserverは動き続ける。

レンダラーの操作。
過去のエントリで書いた手順でレンダラーに設定したvolumioを、ncmpcppで操作する。
「u」キーでアップデート。UPnPサーバのライブラリが、mpdのデータベースに反映される。

以下、ちょっと参考サイト。
Upmpdcli: MPD UPnP Renderer Front-End
https://www.lesbonscomptes.com/upmpdcli/upmpdcli.html

もうひとつ。
MPD and UPnP
https://www.lesbonscomptes.com/upmpdcli/upmpdcli-or-mpdupnp.html
引用。

Back-end integration: mpd-upnp

This is implemented as an MPD Database plugin. Instead of reading files and building its own catalog, MPD accesses an UPnP Media Server both for tag and audio data. Tags are accessed through UPnP, and data is retrieved through HTTP.
MPD then translates the UPnP catalog data to the native MPD client protocol, so that MPD clients think that they are talking to a normal MPD (but instead they are browsing the UPnP Media Server through MPD).
In this configuration, MPD can’t manage local data and tags. The file and UPnP database plugins are mutually exclusive.

そういうわけで、UPnPサーバとmpdの間でデータベースの擦りあわせを行う必要がある。これは、そこそこ時間がかかる。さすがにファイルが数枚なら大したことはないけど、数10枚以上になると数分以上かかってくる。
NASから直接データを読み込むよりもmpdにとっては手間らしい。
まあ、でもこれで音が出る。
レンダラーに、mpd以外の何かデータベースを必要としないものを選択したら、こんな手間は要らないんじゃないかと思うけど、よくわからない。minimstreamerというのを使うのかな。他にもJPLAYと繋いだりとか、色々と手段はあるようだけど。

さて、ncmpcppで検索ができる。
現在、minimserverに登録されているファイル数はこんな感じ、17だ。

17 items

ちょっと検索してみると、結果はこんな感じ。

search results : found 11 songs

1つのファイルが、Found 11 songsとして表示されている。他にも25 songsとか。
NASマウントでの使用状況では、こういう検索結果表示はみたことがない。1つのファイルは1行で表示される。

これはデータベース構築に時間がかかるわけだと思った。
あと、ファイルが多くなったら実質的に検索として機能するのかどうか。多数のファイルをサーバーに登録したとして、そこから検索で10枚ひっかかったとしたら、表示されるのは200行近くになるのかな。
Beethobenとか検索した日には、大変なことになりそう。
まあ、少なめのファイルを登録して検索なんか使わないという感じで運用したほうが良さそうだ。ncmpcppではなく、他のUPnPクライアントを使えば、きれいに表示されるのかもしれないけど、よく分からない。

気になるのはメモリ再生と比較してどうなんだろうということだけど、おいおいだ。

24日、追記。
piCoreでのメモリ再生と比較してみた。一番に感じたのは、やっぱり音の軽さだ。良くも悪くもしなやかで耳当たりがいい。
よく聴くとメモリ再生の方が情報量は多いんだけど硬くて重い。こんなだったかな、、、と思っていた。
ここで、ふとpiCoreにログインしtopを打ってみたら、mpdのメモリ消費が数%と。

ここで気付いた。
minimserverからの音は176400:24、Fastest Sinc Interpolatorにアップサンプリングした音で、メモリ再生のほうはしていなかった。以前、何かの比較をするのに設定変更してそのままになっていたのだ。
メモリ再生のほうの設定をアップサンプリングするようにしてみたら、当初感じていた硬さは霧散した。重さは濃厚さに転化したように感じる。
こうして比較すると、やはりpiCoreでのメモリ再生の方がいい。minimserverからの音は薄く感じる。
とはいえ、これはi2sDACからの音で、メモリ再生のほうはRATOCのusb-DDCからfirefaceに繋いでいるから、条件が違う。単純な比較じゃないのだ。しかしpiCoreでminimserverの受信環境を構築する余裕はないんだな、、。

ありふれたvolumioのNASマウントと比較してみる。ハードもOSも条件が同じで、違うのは音源がNASかUPnPかということだけだ。
こうなると、UPnPのほうが見通しがいい音がする。透明感が違うのだ。音の立ち上がりとかもいいんじゃないかな。NASマウントみたいに手軽に使えないのが残念という感じ。軽い音で聞きたい時というのもありそうだと思うので。

Posted at 21:05 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Jan 02, 2017

VolumioをUPnP/DLNAで繋いでみた(1月4日、追記あり)

あらためて明けましておめでとうございます。

昨年末、UPnP/DLNAは難しいというエントリを上げたんだけど、早々にvolumio1.55を2台、upnpで繋げてしまった。
音質はノイズが多いと書いたけど、i2sDACに出力するようにしたら、かなり解消した。ras piのイヤホン出力で聴いてノイズが多いと思ったけどi2sは影響が少ない様子だ。
ちなみに使ってるのは、raspberry pi B+。
ということで、メモ書きにエントリに書いておく。

早々にあちこちに気付いたこと、足りないことを追記した。つうか、このエントリーそのまま読んでも何をしたのか分からない。新しいエントリーでとも思ったけど、追記したほうがいいと思った。

メインのコンポに継いでみたりしたけど、意外に悪くない感じだ。
もっと扱いやすかったらいいんだけど。

まず、前回のエントリの流れで記載。
ras pi、volumioを2つ用意。両方、/etc/minidlna.confを編集、前回のエントリーの最初のほうに書いた通り。
1つをサーバーに、もう1つをレンダラーに割り当てる。
サーバーの設定は、UPNP\DLNA IndexingとDLNA Library ServerをON。レンダラーの設定は、UPNP ControlとUPNP\DLNA IndexingをON。

サーバー レンダラー

サーバーの設定について、前のエントリーを引用。

次に、sshでrootでログイン。パスはvolumio。
/etc/minidlna.confを編集。
#media_dir=/var/lib/mpd/music
上記の行のコメントアウトを外す。
dlnaサーバを再起動するのに以下のコマンドを打つ。
service minidlna restart

これでvolumio1.55がDLNA serverになる。
もしもvolumioにマウントしたNASのデータだけをupnpクライアントに認識させたかったら、/etc/minidlna.confを以下のよう編集したらいい。
media_dir=/var/lib/mpd/music/NAS

で、今回はDLNAサーバーにNASをマウントしてレンダラーに送る。
サーバー化したvolumioにwebブラウザでアクセスし、音楽データベースであるNASのディレクトリをマウントしていく。
ということなんだけど、ここで問題は、DLNAでは大量のファイルを扱えないし(どうも10000程度が限界らしい?)、原因は分からないが認識できないファイルも出るらしいということ。

当初、NAS上の音楽データ用ディレクトリをそのままvolumioにマウント。
そしてminiDLNAのデータベースを構築しようとしたら(うちのデータは音声ファイルとカバーアート画像ファイルあわせたら、ゆうに10000を超える)、ハングした。その経過は前のエントリに書いたとおり。

そこで対策として、登録する音声ファイルを減らすために、音楽データ用ディレクトリの子ディレクトリを、一つ一つマウントしていった。
次に、画像ファイルをDLNAで管理する必要はなく音声ファイルだけ認識してくれたらいいので、/etc/minidlna.confの記載は以下の様に書き直した。これで音声ファイルのみ管理するようになる。
media_dir=A,/var/lib/mpd/music/NAS

で、複数の子ディレクトリをvolumioにマウントして、トータルファイル数1600強(音楽ファイルのみ)をminiDLNAのデータベースに登録してみたら、数10分かかる。
上記、前回エントリの引用で、service minidlna restart とコマンドを打つと書いてある。
打って数分待つと「 ok 」と表示されて、もういいのかな、と思うんだけど、実はこの時点でtopコマンドを打つと、minidlnaがCPUの50%以上を食って大忙しにしていたりする。
これが仕事を終えるまでは次のステップには進めない、ということ。

volumioにNASをマウントし、volumioのデータベースを構築するだけなら、ファイル数が相当多くても正確に取り込んでくれて登録ミスなどはない(問題を生じるのはこっちが何か間違えているときだけだ)。一方、DLNAのほうは、ファイル数が少なくてもデータベースへの取り込みミスがしばしばあり、原因がはっきりしない。
現時点では、そういうものと思うしかない。

さて、volumioDLNAサーバーのminidlnaが仕事を止めたのを、sshのtop画面で確認し、次はレンダラーだ。
レンダラーのvolumioにwebブラウザ、ncmpcpp、sshでアクセスしてみる。

webブラウザではUPNPは表示されないようなので、これ以上の操作はできない。
ncmpcppからレンダラーのvolumioにアクセスしたら、UPNPと表示されている。そこを選択すると、upnpサーバーのvolumioが表示される。

UPNPにvolumioを表示

上の図では「root」と表示されているが「minidlna」と表示されるのが通常運用らしい。何回か再起動するうちに、今はうちでもそう表示されている。どうしたらそうなるかというのは、実はよく分からないんだけど、、、

あとは階層をたどって表示される音源を選択し再生を指示したら、レンダラーのvolumioから音が出る。

音源を表示

ということなんだけど、実はサーバー側でデータベースが再構築されていた場合、レンダラー側はこれに自動的に合わせてはくれない。レンダラーのほうで登録されているmpdのデータベースと、サーバーのデータベースをすり合わせる必要がある。
つまり、レンダラーのncmpcpp画面には、レンダラー側が作ったデータベースが表示されているということ。
サーバーの実体が表示されてるわけではないのだ。

ncmpcppのブラウズ画面で「u」キーを打つとアップデートできる。
サーバー側のminidlnaとかと、レンダラー側のdjmount、mpdとかで、データのやり取りを行い再構築が行われる。
これにも数10分かかる。
仕事が終わるのを確認するためには、sshでtopを打ち監視しておく必要がある。上級者なら仕事が終わったらビープ音を出すとかスクリプトを書けるんだろうけど、僕には無理。

top画面が落ち着いたら、お疲れ様です。
レンダラーvolumioからncmpcppを使って音が出せるはず。

そういえば、まだあった。
もしも、volumioを何かの事情でシャットダウンした場合、起動したらデータベースの再構築をしないと音が出ないみたいだ。
一旦切れたサーバーとレンダラーの繋がりを戻す必要があるらしい。再構築以外の手段はないのかな、、、

前回のエントリー追記で、問題は音にノイズが多いことと、インデックスの更新に手間がかかることと書いた。
まるでチューニングが合ってないラジオのように、ノイズが再生音に乗っている。
インデックスの問題はしょうがないとして、ノイズはなんとかできないだろうかと考えた。Phile webの記事では使えると書いてるんだし。

まず、サーバー側のmpdを止めてみた。
upnpサーバーなんだからmpdは要らないはずだ。sshからmpd --killで止める。問題なくサーバーとして機能している。しかしこうしたらwebブラウザからはアクセスできなくなる。
しかしさほどノイズは減らない。

追記。そういうわけで、その後はmpdを動かしている。
そのほうがNASをマウント、アンマウントするのにwebブラウザを使えて便利だから。

次にレンダラーの方、mpdのAudio buffer sizeとBuffer before playを増やしてみる。多少の違いはあるようだけど、やはりノイズは多い。

やっぱりイヤホン出力が良くないのかな、と考えてi2sDACを試すことにした。
結局、これで再生音に乗っかるノイズは消えた。これなら使えるレベルかな。
しかし試聴に使用したのはポータブルのアクティブスピーカー。本格的なオーディオシステムでの実力は不明だ。

ノイズは何とかなったとして、インデックスの問題が残っている。これが解消しないと実用に耐えないと思う。
これはUPnP/DLNAサーバーソフトの完成度によって決まると思うので、本気でUPnP/DLNAで音楽再生しようと思ったら、あれこれ探したり試行錯誤していくしかないだろうなと思う。
MinimServerのセッティングがうまくいかなかったのは、ちょっと無念。
個人的には、メモリ再生の方がよほど簡単で楽だと思ってしまった、この1ヶ月だった。

追記だ。
三が日の三日目使ってメインシステムで試聴した。
RCAケーブルを抜き差しして、NASマウント音源のvolumioと比較。

意外なことに、悪くない。
というか、NASマウント音源のvolumioよりいいような気がする。
UPnP音源のvolumio、i2sDACの音は、涼しげで見通しがいい気がする。いい意味で軽く、きめ細かくて陰影が深い。比べたらNASマウントのほうが平板な音に聞こえる。

UPnPを使う意味は、あるのかな、、、
メモリ再生との比較は出来ていないけど、、、

なんというか、、、聴いてみたら、なんとかなるもんならしてみたい、と思える音が出てしまった気がする。
でも、日常使用レベルにするにはそれなりのスキルは必要になりそう、という感じかな。

Posted at 10:47 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Dec 31, 2016

UPnP/DLNAは難しかった(volumioをupnpで繋いだので追記した)

最近はupnp/dlnaをvolumioで使おうと試みていた。
lightMPD/upnpgwがupnpを上手く使って音質向上に成功しているようで、NASをマウントするよりもシステムの負担が少ないのかもしれない。じゃあ手近で使っているvolumioで出来ないか、あわよくば音質改善が見込めないかとか考えた。
そもそも大したスキルがないので上手くいかなかったので、この際なので記録しておく。

追記。
DLNAで音出し : オーディオ日記 http://yseki118.exblog.jp/25998461/
こちらで書かれていることなど読むと、upnpで音質向上とはいかないということが今更分かる。
頭もハサミも使いようだ。身の丈にあったことを無理せずやったほうが効率いいんだろうな、と思うのだった。

1月4日、さらに追記。
次のエントリーにその後の経過を書いた。意外に音は良かったという結末だ。

volumio1.55ならupnpを使えるということらしい。

ラズパイ・オーディオをDLNAネットワークプレーヤーとして活用する - Phile-web
http://www.phileweb.com/review/article/201604/22/2053.html
Raspberry Pi+Volumio をネットワークオーディオプレイヤーとして使う : アジャイル株式会社
http://www.agilegroup.co.jp/technote/volumio-via-network.html
How to start the DLNA Server for Volumio 1.5 on the Pi
https://volumio.org/forum/how-start-the-dlna-server-for-volumio-the-t2401.html

まずvolumio1.55の設定。
webブラウザからアクセスしてDLNA関係の設定をONにする。
試験的に、volumioにはNAS上の適当なフォルダをマウント。

次に、sshでrootでログイン。パスはvolumio。
/etc/minidlna.confを編集。
#media_dir=/var/lib/mpd/music
上記の行のコメントアウトを外す。
dlnaサーバを再起動するのに以下のコマンドを打つ。
service minidlna restart

これでvolumio1.55がDLNA serverになる。
もしもvolumioにマウントしたNASのデータだけをupnpクライアントに認識させたかったら、/etc/minidlna.confを以下のよう編集したらいい。
media_dir=/var/lib/mpd/music/NAS

確認で、http://volumio:8200/ をwebブラウザで表示。
うちのノートPC(Fedora)はこれでは表示できなかったので、IPアドレスに書き換えて打ち込む。
スナップショット画面が以下。

miniDLNA画面

確かにdlna serverとして動いている。
windows PCのWindows Media Playerから、dlnaサーバーとしてvolumioを認識できた。しかしwindowsから音を出すのが目的じゃない。

まずvolumioを2台、upnpでつなぐことができないか考えた。
MPD-to- MPDでやれるはずなんだけど、レンダラー担当のvolumioが、volumio DLNA serverを認識してくれない。というか、認識させる方法がいくら調べても分からない。

MPD as client to an UPnP/DLNA Media Server
https://www.lesbonscomptes.com/pages/mpd-upnp.html

諦めて、QNAP NASの機能を使う。NAS-to-MPDということになるのかな。
まず、LINNが推奨してるというMinimServerを試みる。AppCenterを使って簡単にインストールできる。

ただ、インストールは簡単だったけど扱いがよくわからない。
設定次第で細かいことも出来そうなんだけど、設定の仕方がよくわからないのだ。設定するのに「MinimWatch」というソフトをインストールしないといけない、とまでは分かった。

サーバーソフトの紹介 『MinimServer』言の葉の穴 http://kotonohanoana.com/archives/1536
MinimServer 導入・設定・運用編 言の葉の穴 http://kotonohanoana.com/archives/8121

ただ細かい設定をしなくても、この時点でvolumioからupnpでNASを認識できている。
ncmpcppで表示できていて、操作して音も出せる。
しかし、cue sheetは表示されず、使えない。表示されている音楽ファイルの再生を指示して音が出るまでに若干時間がかかる。不便だな、設定したら便利になるだろうか、などと思っていたら、MinimServerが認識していないflacファイルが少なからずあることに気付いた。原因ははっきりしない。
MinimWatchは触ってもないけど、諦めることにする。

MinimServerを止めて、最初からQNAP NASに入ってるものを使うことにする。
DLNAメディアサーバー、Music Stationが組み込まれていて、追加でMedia Streaming Add-onをインストールしたらNASからデータをvolumioに送ることができる。操作は、NASのMusic Stationにwebブラウザでアクセスして行う。
つまり、webブラウザでNAS上のアプリを操作し、そのアプリがvolumioにデータを送り、volumioがそれを再生すると。

再生中のvolumioにsshでログインしてtopを打ってみたのが下の画像。
Upmpdcliが働いて、volumioがupnpレンダラーとして機能しているのが分る。

top画面

意外なことに、Music Stationはcue sheetの中を読み込んで曲別に楽曲管理してくれるようで、これはすごいと思った。しかし残念なのは、1曲再生するつもりで操作したら、その曲が終わったあと次の曲を再生していく。アルバムの2曲目を再生しようとしたら1曲目から再生される。つまり曲別に管理しているようでもデータの扱いはファイルということだ。再生されている曲と、Music Stationに表示されている曲に齟齬が生じる。
実際、ncmpcppでmpdにアクセスしたら、個別の曲じゃなくアルバムのflacファイルを再生してるのが一目瞭然だ。
upnp/dlnaというのはファイル別で楽曲管理するらしく、cue sheetを使うのは相当難しそう。

MinimServer Forum > MinimServer > General > CUE Sheets
http://forum.minimserver.com/archive/index.php?thread-138-3.html

> The UPnP server protocol requires each track to be sent as a complete file.

あれこれするうちに挙動がおかしくなった。これはまずい。負担はかけられないようだ。
他に触ってみて気づいたのは、やはり音が出るまでに若干時間がかかる。10秒前後かな。再生開始の時にノイズが乗ることがある。
あと、Music Stationでライブラリ管理を行うのは難しい。うちはファイルが多すぎるのだ。目的のファイルを探すのに時間がかかりすぎる。検索機能も使いやすいとは言えない。
アートワーク表示こそ出来ないけどスピーディにファイルにアクセスできるncmpcppに馴染んでいたら、かなり使いにくいと感じてしまう。

そんなわけで、ncmpcppでアクセスして、なんとか出来ることはないかとか考える。
ncmpcppでvolumio経由でupnpサーバーの状況を表示しようと思えばできるようなんだけど、うちにはメイン用とバックアップ用、2つのNASがあるんだけど、NASによってncmpcppで表示できたりできなかったりして理由がよくわからないし、表示できても全てのファイルを網羅できていなかったりして、いろいろわけが分からなかった。
しかし、片方のNASのupnpサーバーを停止してみたら、他のNASのupnpサーバーが機能し始めて?volumioとも繋がった。
ここで初めて気付いたのが、一つのネットワークにupnpサーバーは一つじゃないといけないのかな?ってことだ。よくわからないけど。

ここで興味本位で、ncmpcppのUPNPブラウザ画面からアップデートをかけてみたら(uキーを押すだけ)うちにあるNAS?があれもこれも表示されてきた。これって全部、upnpサーバー?
うちには音楽用のNAS以外に古くからあるファイルサーバーがいくつか動いている。それらが表示されているし他にもネットワーク上のデバイスがいくつか、、、

update画面1

このときNASでは何をしてるかというとmysqldというデーモンがCPUの70%を食って大忙しだ。webデータベースを作るMySQLのデーモンらしい。一方でvolumioはといえば、topコマンドを打ってみたら何もしてないようだ。データベースの完成待ちという所か。
これが、えらく時間がかかる。
mpdがデータベースを作るのにも時間がかかるが、多分、数10倍以上かかっている。

あまりに時間がかかるので、ncmpcpp上で唯一表示された[Beethoven]のフォルダの中を見てみたら下のスキャン画像のような状況! 同一ファイルのデータを重複して繰り返し取り込んでいるらしい。。。

update画面2

とりあえず、volumioをシャットダウン。
速やかにmysqldは仕事を止めて、NASのCPU使用率は通常レベルに戻った。やれやれだ、、、
MinimWatchをインストールしてMinimServerで粘ったほうが良かったかな、、、

volumioでupnpは、うちではハードルが高いかな。
cue sheetも使えないし、操作は手間がいるし、当面は素直にvolumioはNASをマウントして使うことにした。

しかし、あれこれやるうちに新たな発見があった。

うちでは複数のmpdをひとつのノートPCで扱うため、ポートの設定を各々のmpdで変えていた。
ノートPC上に複数のアカウントを作り、各々にmpdサーバーを割り振って、端末のウインドウを開いてアカウントを変えてncmpcppを立ち上げて使う。複数のウィンドウにアカウントを割り振ることで、同時に複数のmpdを操作できる。
mpdとncmpcppのポート設定を合わせて書き換えて使う。デフォルトは6600だが、これを6601、6602、などと変えている。つまり、IPアドレスとport番号をセットにして設定している。
下の図のような感じ。

IPとPort

書き換えていなかったら、以前は上記のような運用は出来なかった。混線するとでもいうのか、ncmpcppとmpdが繋がらなくなるのだ。
つまり、ポート設定を書き換えなければ、ひとつのPCで同時に使えるmpdは1つということで、そういうものなんだと理解をしていた。
ポートを変えるとvolumioはwebブラウザからのアクセスが出来なくなるが仕方ない。大して困らないし。

ところが、いつの間にか、ポートが6600のままで同時に複数のmpdを操作出来るようになっていた。
そもそもIPアドレスが異なるのに、ポートも変えないと繋がらないというのは、何かがおかしいのかもしれない。

気付いたきっかけは、volumioを2台、upnpでつないでみようとしたことだ。
volumioをupnpで継ぐにはUpmpdcliを動かしておく必要があり、mpdのポート6600を変更したら、これが動かなくなるので変えられない。ひとつのネットワークにポート6600のvolumioが2つ存在することになる。
ncmpcppからアクセスできなくなるだろうと思っていたら、問題なく出来てしまった。

以前とは何が変わったかというと、クライアントPCのOSが変わった。以前はVine Linuxだったが現在はFedoraとDebianを使っている。
ポートが6600のままでいいなら、設定などで余分な手間が要らなくなるし、volumioならwebブラウザからのアクセスも可能になる。

新しい知見があったので、やって良かったということかな。

追記。
イラストは下記のサイトのものを加工して使わせていただいています。
GATAG|フリー素材集 壱 http://01.gatag.net/0006178-free-illustraition/
Publicdomainvectors.org http://publicdomainvectors.org/ja/tag/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2

明けましておめでとうございます。元旦に追記。

なんやかんやでvolumio2つをupnpで繋げてしまった。
音質はノイズが多くピュアオーディオには無理。スキルがないからかもしれないけど。
せっかくなので記録しておく。

1月4日、追記。
エントリの上のほうにも追記したけど、実は意外に音は良かった。イヤホンだと以前よりも悪くなったと思ったんだけどな、、、
次のエントリーにその後の経過を書いた。

まず、ras pi、volumioを2つ用意。両方、/etc/minidlna.confを編集、このエントリーの最初のほうに書いた通り。
1つをサーバーに、もう1つをレンダラーに割り当てる。
サーバーの設定は、UPNP\DLNA IndexingとDLNA Library ServerをONに。実は、UPNP\DLNA IndexingはOFFでもいいのかもしれないけど、十分な確認が出来ていない。
レンダラーの設定は、UPNP ControlとUPNP\DLNA IndexingをONに。

サーバー レンダラー

webブラウザにはUPNPは表示されないようなので、これ以上の操作はできない。
ncmpcppからレンダラーのvolumioにアクセスしたらUPNPが表示されるので、そこに入るとUPNPサーバーのvolumioで設定された音源が表示される。

UPNPにvolumioを表示

あとは階層をたどって表示される音源を選択し再生を指示したら、レンダラーのvolumioから音が出る。

問題は、前述したとおり音にノイズが多いことと、インデックスの更新に手間がかかること。
本来、ファイルが追加されたら自動的にインデックス(データベース)が更新して欲しいんだけど、そうはいかないらしい。自動じゃないのはいいとして、手順がひどく面倒なのだ。
まず、miniDLNAの更新で以下のコマンドをsshから打ち込み。
$ sudo minidlna -R
$ sudo service minidlna restart
更にncmpcppから、レンダラーのmpdのdatabase更新をかける必要がある。以下を参考にした。

Why is the minidlna database not being refreshed? http://stackoverflow.com/questions/5180409/why-is-the-minidlna-database-not-being-refreshed

日常的に使用するのは無理じゃないかなという感想だ。

Jun 04, 2016

Raspberry Pi でメモリ再生を試みる2(raspbianにmpdをインストールする)

タイトルに2とあるが、実はメモリ再生はpiCore7よりも前にraspbianで成功していた。
そもそも、デバイスの設定をconfig.txtに書き込むとalsaが認識してくれるというのは、raspbianで試みて気付いたことだった。piCore7だけいじっていたときにはこれに気付かず、諦め、まあ気を取り直してraspbianでやってみっか、、、で、気付いたのだ。

ネットで探してもpiCoreのalsaの設定の仕方はよく分からない。
僕は出来合いのi2sDACでhifiberryから設定をもらえたので簡単だったが、USB-DACとかつなぐ場合の設定は全く分からない

それはともあれ。
大したことはないけど、これも備忘録にしておく。

raspbianをmicroSDにインストール、i2sデバイスを設定

僕が使ったのはRaspbian Jessie Liteだ。 https://www.raspberrypi.org/downloads/raspbian/ 上記のサイトからダウンロードできる。

これをmicroSDに焼いて、config.txtにi2sデバイスの設定を書き込む。
下記サイトを参考。
https://www.hifiberry.com/guides/configuring-linux-3-18-x/

raspbianをRas Piで起動した後で、/boot/config.txtに書き込んで再起動でもかまわない。
ちなみにpiCore7だとブート後はconfig.txtが見えなくなる。

ファイルイメージの拡張

Ras Piに刺して起動し、sshでログインする。
ユーザーはpi、パスワードはraspberry。

そこで以下のコマンドでファイルイメージを拡張しておく。ついでにローカル設定とかもしておく。
pi@raspberrypi:~ $ sudo raspi-config

alsaインストール

下記のコマンドでインストール。

pi@raspberrypi:~ $ sudo apt-get install alsa-base

swapを止める

ほっとくと100MB程がswapに取られてしまうので設定しなおす。
コマンドなど経過は下記のとおり。
本当はpiCoreでも止めたいんだけど、こっちは方法が分からない。まあ、音楽ファイル用にswapが使われるので放置でもいいんだろうけど、止めるほうがすっきりしてるんじゃないかという気がする。


pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124     191848     253276       4460      12388     150836
-/+ buffers/cache:      28624     416500
Swap:       102396          0     102396

pi@raspberrypi:~ $ swapon -s
Filename				Type		Size	Used	Priority
/var/swap                              	file    	102396	0	-1


 pi@raspberrypi:~ $ sudo swapoff --all

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124     191848     253276       4460      12396     150852
-/+ buffers/cache:      28600     416524
Swap:            0          0          0
pi@raspberrypi:~ $ 


pi@raspberrypi:~ $ sudo apt-get remove dphys-swapfile
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  dc
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  dphys-swapfile
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 85.0 kB disk space will be freed.
Do you want to continue? [Y/n] Y
Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_TIME = "en_US.UTF-8",
	LC_MONETARY = "en_US.UTF-8",
	LC_MEASUREMENT = "en_US.UTF-8",
	LC_NUMERIC = "en_US.UTF-8",
	LC_PAPER = "en_US.UTF-8",
	LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database ... 31037 files and directories currently installed.)
Removing dphys-swapfile (20100506-1) ...
Processing triggers for man-db (2.7.0.2-5) ...
pi@raspberrypi:~ $ 

pi@raspberrypi:~ $ sudo reboot

pi@192.168.1.116's password: 
Last login: Mon May 23 23:41:23 2016 from 192.168.1.52

pi@raspberrypi:~ $ free
             total       used       free     shared    buffers     cached
Mem:        445124      62396     382728       4456       6096      31940
-/+ buffers/cache:      24360     420764
Swap:            0          0          0
pi@raspberrypi:~ $ 

freeのメモリが250MBから380MB以上に増えている。

音楽ファイルの置き場をram diskで設定

以下のとおり。意味があるのかどうか分からないが。


pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.6G  890M  2.5G  26% /
devtmpfs        214M     0  214M   0% /dev
tmpfs           218M     0  218M   0% /dev/shm
tmpfs           218M  4.4M  213M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           218M     0  218M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   21M   43M  33% /boot

pi@raspberrypi:~ $ sudo vi /etc/fstab

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
##### ramdisk
tmpfs       /home/pi/music     tmpfs    defaults,size=400m 0      0  

pi@raspberrypi:~ $ sudo reboot

pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       3.6G  890M  2.5G  26% /
devtmpfs        214M     0  214M   0% /dev
tmpfs           218M     0  218M   0% /dev/shm
tmpfs           218M  4.4M  213M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           218M     0  218M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /home/pi/music
/dev/mmcblk0p1   63M   21M   43M  33% /boot

flacをインストール、mpdをインストール

以下のコマンドでインストールできる。

pi@raspberrypi:~ $ sudo apt-get install flac
pi@raspberrypi:~ $ sudo apt-get install mpd

あとはmpd.confを編集してmpdを動かすだけで音が出るはず。

Posted at 16:13 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Jun 02, 2016

Raspberry Pi でメモリ再生を試みる(piCore7にmpdをインストールする)-いろいろ追記あり

http://www.yung.jp/bony/ こちらのサイトで5月頃から興味深い試みの報告が行われている。
mpdサーバのRAMに音楽ファイルを読み込んで再生したら、NASをマウントするよりもサーバの負担が少ないので音質改善が見込めるのではないかという話だ。
うちでも昔、NASを交換したときの音質変化に驚いたことがある。
機種によってはcifs、nfsでマウントすることが負担になるNASがあるようで、そうした機種だと音が悪くなる。データの転送自体が不安定になってジッタが増加するのが原因だと思う。
そうした経験があったので「メモリ再生でNAS接続の負担から開放される」という話は、なるほどそうか、という思いだった。

試みたいが、うちにはTiny Core Linuxを走らせるハードがないから出来ないな、と思っていたら、Ras PiでPiCoreという派生OSを走らせることが出来るという。
これは面白そうだ。

結局、raspbianとpiCore7にmpdをインストールした。少々苦労したがなんとかなったので備忘録にしておく。
今回はpiCore7について。

2018年1月、追記。
このエントリーは読んでも分かりにくい面があるので、改訂版というのか、書き直しのエントリーをアップした。
分かりやすくするという目論みが成功したとは言い難いが。
piCore7にmpdをインストールする方法
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180103a.htm

microSDの準備。

piCore7はここから落としてくる。 http://tinycorelinux.net/7.x/armv6/releases/RPi/
これをmicroSDに焼く。

6月11日、追記。
Raspberry pi2以降の機種の場合は、こちらから落す。
http://tinycorelinux.net/7.x/armv7/releases/RPi2/
piはarmv6で、pi2以降はarmv7ということらしい。プロセッサーが違うということだ。

次に、下記のサイトから設定をもらってくる。hifiberryのデバイスの設定だ。
https://www.hifiberry.com/guides/configuring-linux-3-18-x/
以下にメモとして引用しておく。

DAC/DAC+ Light
dtoverlay=hifiberry-dac

DAC+ standard/pro
dtoverlay=hifiberry-dacplus

Digi/Digi+
dtoverlay=hifiberry-digi

Amp/Amp+
dtoverlay=hifiberry-amp

選択する機種によって設定が違うので合わせてconfig.txtに記載する。
ついでに、もとからある設定について下記のように記載変更した。
dtparam=i2c=off,spi=off,i2s=on,i2c_vc=off

piCore7を起動しsshでログイン。

microSDをRasPiに刺して電源供給するとpiCoreが起動する。
sshでログイン。
ipはxxx.xxx.xxx.116。ここらは環境によって変わる。
http://tinycorelinux.net/7.x/armv6/releases/RPi/README にも書いているが、userはtc、パスワードはpiCoreだ。

適宜、下記のコマンドで設定を保存していく。

filetool.sh -b

6月5日、追記。
ipアドレスを固定した。流れは下記のとおり。

tc@box:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:36:8A:DF  
          inet addr:192.168.1.116  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:775439 errors:0 dropped:92 overruns:0 frame:0
          TX packets:250166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1123681152 (1.0 GiB)  TX bytes:24070244 (22.9 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tc@box:~$ cd /opt
tc@box:/opt$ ls
alsa/         bootlocal.sh  bootsync.sh   shutdown.sh   tcemirror
tc@box:/opt$ vi eth0.sh

#!/bin/sh
pkill udhcpc
ifconfig eth0 192.168.1.82 netmask 255.255.255.0 broadcast 192.168.1.255 up
route add default gw 192.168.1.1
echo nameserver 192.168.1.1 > /etc/resolv.conf

tc@box:/opt$ ls
alsa/         bootlocal.sh  bootsync.sh   eth0.sh       shutdown.sh   tcemirror
tc@box:/opt$ chmod +x eth0.sh
tc@box:/opt$ ls -aFl
total 28
drwxrwsr-x    3 root     staff          200 Jun  4 12:46 ./
drwxr-xr-x   17 root     root           380 Jan  1  1970 ../
-rw-rw-r--    1 tc       staff          403 Jun  4 10:53 .filetool.lst
-rw-rw-r--    1 root     staff          145 Dec 31  2014 .xfiletool.lst
drwxr-sr-x    2 root     staff           40 May 31 08:36 alsa/
-rwxrwxr-x    1 root     staff          360 Jan 20  2015 bootlocal.sh*
-rwxrwxr-x    1 root     staff          272 Dec 31  2014 bootsync.sh*
-rwxr-xr-x    1 tc       staff          179 Jun  4 12:46 eth0.sh*
-rwxrwxr-x    1 root     staff          613 Dec 31  2014 shutdown.sh*
-rw-rw-r--    1 root     staff           31 Dec 31  2014 tcemirror
tc@box:/opt$ sudo vi bootsync.sh

#!/bin/sh
# put other system startup commands here, the boot process will wait until they complete.
# Use bootlocal.sh for system startup commands that can run in the background 
# and therefore not slow down the boot process.
/usr/bin/sethostname box
/opt/bootlocal.sh &
/opt/eth0.sh &

tc@box:/opt$ vi .filetool.lst

opt
home
etc/passwd
etc/shadow
etc/group
etc/gshadow
usr/local/etc/ssh/ssh_host_dsa_key
usr/local/etc/ssh/ssh_host_dsa_key.pub
usr/local/etc/ssh/ssh_host_ecdsa_key
usr/local/etc/ssh/ssh_host_ecdsa_key.pub
usr/local/etc/ssh/ssh_host_ed25519_key
usr/local/etc/ssh/ssh_host_ed25519_key.pub
usr/local/etc/ssh/ssh_host_rsa_key
usr/local/etc/ssh/ssh_host_rsa_key.pub
usr/local/etc/
etc/fstab
opt/bootlocal.sh
opt/eth0.sh

tc@box:/opt$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz\
Done.
tc@box:/opt$ 

これでsudo rebootしたらipアドレスが固定される。

ディスクイメージを拡張。

以下の流れでディスクイメージを拡張。もともとは最低限の大きさなので、拡張しないと後で諸々のインストールに支障を生じる

tc@box:~$ sudo fdisk -u /dev/mmcblk0
Command (m for help): p

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
3 heads, 8 sectors/track, 646826 cylinders, total 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1            8192       69631       30720   c Win95 FAT32 (LBA)
/dev/mmcblk0p2           69648       93119       11736  83 Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (8-15523839, default 8): 69648
Last sector or +size or +sizeM or +sizeK (69648-15523839, default 15523839): 15523839

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
tc@box:~$ 
tc@box:~$ sudo reboot
tc@box:~$ Connection to 192.168.1.116 closed by remote host.
Connection to 192.168.1.116 closed.



tc@192.168.1.116's password: 
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

tc@box:~$ 
tc@box:~$ sudo resize2fs /dev/mmcblk0p2
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p2 is mounted on /mnt/mmcblk0p2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 30
The filesystem on /dev/mmcblk0p2 is now 7727096 (1k) blocks long.
tc@box:~$ 

この流れは http://tinycorelinux.net/7.x/armv6/releases/RPi/README にも書いているが、ちょっと不親切。
コマンドの使い方を調べる必要があった。

各種ライブラリやalsa、flacなどなどインストール。

下記のコマンドでいろいろインストール。

tc@box:~$ tce-load -wi gcc.tcz glib2-dev.tcz
tc@box:~$ tce-load -wi ncurses.tcz ncurses-dev.tcz make.tcz automake.tcz
tc@box:~$ tce-load -wi compile-essentials.tcz squashfs-tools.tcz bash.tcz bc.tcz
tc@box:~$ tce-load -wi pkg-config-doc.tcz pkg-config.tcz

tc@box:~$ tce-load -wi alsa.tcz alsa-config.tcz alsa-doc.tcz alsa-dev.tcz alsaequal.tcz alsa-locale.tcz alsa-modules-4.1.13-piCore+.tcz alsa-modules-4.1.20-piCore+.tcz

tc@box:~$ tce-load -wi flac-dev.tcz flac.tcz flac-doc.tcz libcue.tcz libcue-dev.tcz icu-dev.tcz icu.tcz

ぞろぞろ文字やらなにやらインストールの状況が端末に表示される。
なかなか面白い。

当方ではflacをcue sheetで扱えれば充分なので上記のような感じだけど、他に扱いたいファイル形式があるなら適宜必要なものを追加してインストールしておく必要がある。

alsaはユーティリティとかなくてもいいのか?と思ってたけど、なくてもデバイスの認識は出来て音も出るようだ。
この時点でこんな感じ。

tc@box:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

6月24日、追記。
wavを再生する必要性が生じたため、下記コマンドにてインストール追加した。
tce-load -wi libsndfile-dev.tcz libsndfile-doc.tcz libsndfile.tcz

mpdを再インストールしないといけない。
以前にインストールした後に残っていた、mpd、mpd-0.17.6、両ディレクトリをsudo rm -rfで削除。 あとは、下記の流れに沿ってmpd-0.17.6.tar.gzを再解凍して再インストール、で問題なく動く。

mpdのインストール。

将来的には分からないけど5月31日の時点では、tce-load -wi mpd.tcz ではインストールできない。
libopus.tczがないとかでエラーになる。

なのでソースから自分でコンパイルしてということになる。
以下、コマンドを羅列。

tc@box:~$ wget https://www.musicpd.org/download/mpd/0.17/mpd-0.17.6.tar.gz
tc@box:~$ tar xvf mpd*
tc@box:~$ cd mpd*6
tc@box:~/mpd-0.17.6$ ./configure
tc@box:~/mpd-0.17.6$ make

tc@box:~/mpd-0.17.6$ sudo mkdir ../mpd
tc@box:~/mpd-0.17.6$ 
tc@box:~/mpd-0.17.6$ sudo make DESTDIR=../mpd install
tc@box:~/mpd-0.17.6$ cd ..
tc@box:~$ 

tc@box:~$ mksquashfs mpd mpd-0.17.6.tcz
tc@box:~$ ls
mpd/               mpd-0.17.6/        mpd-0.17.6.tar.gz  mpd-0.17.6.tcz
tc@box:~$ md5sum mpd-0.17.6.tcz > mpd-0.17.6.tcz.md5.txt
tc@box:~$ ls
mpd/               mpd-0.17.6/        mpd-0.17.6.tar.gz  mpd-0.17.6.tcz  mpd-0.17.6.tcz.md5.txt

tc@box:~$ ls /mnt
mmcblk0p1/ mmcblk0p2/
tc@box:~$ sudo mv *tcz* /mnt/*2/tce/optional

コマンドの羅列にしたら、こんな感じ。
本当は間に文字やら何やらが表示される。

まずwgetコマンドでmpdのサイトからソースを落として解凍。
解凍されたディレクトリでconfigure、make。

ここから後が通常のlinuxと違うところで、mpdフォルダを作ってそこに一式まとめて、make installする。
その一式を、mksquashfsコマンドでtczファイルに圧縮。
md5sumコマンドで付録をつけて、/mnt/mmcblk0p2/tce/optionalディレクトリに送り保存する。
これで管理するのがtiny coreの作法ということだ。

次に、onboot.lstの末尾に、mpd-0.17.6.tczを追記する。

tc@box:~$ sudo vi /mnt/*2/tce/onboot.lst

ちなみに、mpd-0.17.6、mpd-0.16.8はインストールできた。 mpd-0.18.19、mpd-0.19.4、mpd-0.19.5はインストール自体ができなかったり実用にならなかったりしている。

RAMDISKでmusicフォルダを設定

6月5日、追記。
RAMDISKでmusicフォルダを設定などという余計なことはせず、普通にmusicフォルダのままがいいようだ。

RAMDISKは、raspbianにmpdをインストールした時に試してみたもので、特に問題なかったのでpiCoreでも設定していたんだけど、swapとの関係なのかどうなのか分からないが、ファイルの転送がうまくいかないようだ。
現在は/etc/fstabの設定は止めている。

tc@box:~$ sudo mkdir music
tc@box:~$ sudo chmod 777 music

tc@box:~$ sudo vi /etc/fstab
tc@box:~$ 
# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
/dev/zram0  swap         swap    defaults,noauto   0       0
/dev/mmcblk0p1  /mnt/mmcblk0p1  vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/mmcblk0p2  /mnt/mmcblk0p2  ext4     noauto,users,exec    0 0 # Added by TC

tmpfs       /home/tc/music     tmpfs    defaults,size=400m 0      0

これは意味があるのかどうか良く分からない。RAMDISKとして設定しなくても動くみたいだ。
sftpソフトでアクセスして/home/tc/musicに音楽ファイルを転送する。
mpd.confで、ここをmusic_directoryに設定する。

6月4日、追記。
homeディレクトリ以下にmusicフォルダを置くと、filetool.sh -bでmusicフォルダの音楽ファイルが記憶されてしまう、ということに今更気付いた。つまり、何かの必要があって再起動したら、その記憶されていた音楽ファイルが現れてくるということ。
通常運用し始めたらfiletool.sh -bを使う機会はそうそうないと思うけど、注意がいるかも。
そういう意味では、/musicとかfiletool.sh -bの影響を受けない場所を、bootlocal.shで指示して確保したほうがスマートかもしれない。

.filetool.lstへの追記

これは、うちの環境で意味があるのかどうか分からないんだけど、一応。

sudo vi /opt/.filetool.lst

以下の3行を追記している。

usr/local/etc/
etc/fstab
opt/bootlocal.sh

bootlocal.shにmpdを記載することでboot時に起動するとかあるようなんだけど、うちでは上手くいかなかった。sshでログインしてmpdコマンドを打って起動させている。

mpdの設定。

tc@box:~$ 
tc@box:~$ mkdir .mpd
tc@box:~$ mkdir .mpd/playlists
tc@box:~$ sudo cp mpd-0.17.6/doc/mpdconf.example ~/.mpdconf
tc@box:~$ 
tc@box:~$ sudo vi .mpdconf

mpd.confを設定する。
mpdのINSTALLファイルにデフォルト指定があるので、そのひとつの~/.mpdconfを選択。
music_directoryなどの設定、alsaを出力に設定。
後は勝手知ったるもので、好きなように設定したらいい。
auto_updateを有効にしておけば、ファイルを入れ替えたらすぐに反映されるので便利。

とりあえず、以上だ。

6月6日、さらに追記。

nfsでNASをマウントする

nfsでNASをマウントするコマンド。
addr=を使う必要がある。

tc@box:~$ sudo mount -o addr=192.168.1.80,nolock -t nfs 192.168.1.80:/titan /home/tc/music

上記のコマンドで、192.168.1.80のNASの共有フォルダtitanを、piCoreのmusicディレクトリにマウントできる。
これでメモリ再生とNASをマウントした場合の比較が出来るかな。
いまさら気付いたが、NASをマウントした場合はライブラリの自動アップデートが効かない。これはmpdのバージョンが古いせいだと思う。
参考にしたサイトは以下。
http://forum.tinycorelinux.net/index.php?topic=19913.0

Posted at 17:15 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Jul 09, 2014

audio_output_formatについて(Vine Mpd ppcについて覚書-13)

NASを変更して2ヶ月になる。
その間になんとなく気になることが出てきた。

変更以前は、mpd.configのaudio_output_formatの設定でアップサンプリングして使っていた。
88200:24:2が良さそうだと感じていた。
それがどうも良さそうじゃなくなってきた。
最近は44100:24:2にしたりしていた。

なんだろうか、と思っていたところ、mpd.conf(5) - Linux man pageで興味深い記載を見つけた。
audio_output_formatの次、「samplerate_converter」の項目だ。
以下引用。読みやすいように改行を少し変えている。

samplerate_converter
This specifies the libsamplerate converter to use. The supplied value should either be an integer or a prefix of the name of a converter. The default is "Fastest Sinc Interpolator".

At the time of this writing, the following converters are available:

Best Sinc Interpolator (0)
Band limited sinc interpolation, best quality, 97dB SNR, 96% BW.

Medium Sinc Interpolator (1)
Band limited sinc interpolation, medium quality, 97dB SNR, 90% BW.

Fastest Sinc Interpolator (2)
Band limited sinc interpolation, fastest, 97dB SNR, 80% BW.

ZOH Interpolator (3)
Zero order hold interpolator, very fast, very poor quality with audible distortions.

Linear Interpolator (4)
Linear interpolator, very fast, poor quality.

internal
Poor quality, no floating point operations. This is the default (and only choice) if MPD was compiled without libsamplerate.

For an up-to-date list of available converters, please see the libsamplerate documentation (available online at ).

internalというのはmpdに組み込まれているという意味らしい。
和訳してみる。
「クオリティは低く、浮動小数点演算をしない。libsamplerateなしにmpdがコンパイルされているようならこれがデフォルトになる(そして、これしか選択できない)。」
なんとまあ。

mpdをインストールしたときに出来るconfig.logを確認したら記述があった。
「configure:8115: WARNING: libsamplerate not found -- disabling libsamplerate resampling」
96/24までリサンプリングしてもCPUの負担が大して増えないのは、増えないなりの理由があったというわけだ。

そういうわけで、audio_output_formatの項目をコメントアウトしてみた。
もとのflacファイルのフォーマット(44.1kHz/16bit)のままで出力されるはずだ。
どうも、悪くないようだ。
というか、これが一番良さそうだ。

NASを変更する前は、それでもリサンプリングしたほうが良いような気がしていた。
何で変わったのかは分からない。
しょっちゅう音切れを起こしていたし、NASからの信号自体の品質も低かったのかもしれない。そういう状況だったから、低品質でもリサンプリングするほうが多少ジッター軽減につながっていたのかもしれない。
かもしれないばっかりだが。

Posted at 13:36 in audio_diary | WriteBacks (0) | Edit Tagged as: , , ,

May 01, 2013

Vine Mpd ppcについて覚書(12)デーモンの刈り込み

必要がないのに動いているdaemonを停止することで音質向上が見込めるということでやってみた。
そんなに期待してなかったという面があるからかもしれないが、期待以上の変化があった。
画像で例えると、640*480が1600*1200になるような感じ、というと言い過ぎか。
解像度が上がり見通しが良くなる。

最近は過渡特性とかトランジェントと呼ぶらしいが、音声の立ち上がり、立下りが良くなってリアリティが増してくる。肌理細かい音になるので、打楽器のアタック音は際立つけれど耳に障らない音で再生される。ボーカルは細やかなニュアンスが再現されるようになる。
そういう感じを求めているんだけど、デーモンの刈り込みで求めるところに近づくと思う。
楽器の音とか優れた歌い手の声というのは本来から快い音なので、上手く再生されるとそれだけで音楽自体の好みとか関係なく聞き惚れてしまうということがある。オーディオマニアは音ばかり聴いて音楽を聴いてないというけど、それも仕方ないじゃないかという状況になるのが目標といっていいかもしれない。

現在の状況は以下の通り。
刈り込んだデーモンは赤色表示。起動中は青。

[root@localhost ab]# chkconfig --list 
NetworkManager  0:off   1:off   2:on    3:off   4:on    5:on    6:off 
anacron         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
apache2         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
atalk           0:off   1:off   2:off   3:off   4:on    5:on    6:off 
atd             0:off   1:off   2:off   3:off   4:on    5:on    6:off 
autofs          0:off   1:off   2:off   3:off   4:on    5:on    6:off 
avahi-daemon    0:off   1:off   2:off   3:off   4:off   5:off   6:off 
avahi-dnsconfd  0:off   1:off   2:off   3:off   4:off   5:off   6:off 
bluetooth       0:off   1:off   2:off   3:off   4:on    5:on    6:off 
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off 
cups            0:off   1:off   2:on    3:off   4:on    5:on    6:off 
dhcpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dhcrelay        0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dkms_autoinstaller      0:off   1:off   2:off   3:off   4:off   5:on    6:off 
dnsmasq         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
dovecot         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
firstboot       0:off   1:off   2:off   3:off   4:off   5:on    6:off 
haldaemon       0:off   1:off   2:off   3:off   4:off   5:on    6:off 
iptables        0:off   1:off   2:off   3:off   4:on    5:on    6:off 
irqbalance      0:off   1:off   2:off   3:off   4:off   5:off   6:off 
iscsi           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
iscsid          0:off   1:off   2:off   3:off   4:off   5:off   6:off 
lirc            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
mdmonitor       0:off   1:off   2:off   3:off   4:off   5:off   6:off 
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
messagebus      0:off   1:off   2:on    3:off   4:on    5:on    6:off 
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
netfs           0:off   1:off   2:off   3:off   4:on    5:on    6:off 
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off 
nfs             0:off   1:off   2:on    3:off   4:on    5:on    6:off 
nfslock         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
nmb             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off 
portmap         0:off   1:off   2:off   3:off   4:on    5:on    6:off 
postfix         0:off   1:off   2:on    3:off   4:on    5:on    6:off 
proftpd         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
random          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off 
rpcidmapd       0:off   1:off   2:on    3:off   4:on    5:on    6:off 
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off 
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off 
sshd            0:off   1:off   2:off   3:off   4:off   5:on    6:off 
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off 
uuidd           0:off   1:off   2:on    3:on    4:on    5:on    6:off 
winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off 
wpa_supplicant  0:off   1:off   2:off   3:off   4:off   5:off   6:off 
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off 
 
xinetd ベースのサービス: 
        chargen:        off 
        chargen-udp:    off 
        cups-lpd:       off 
        daytime:        off 
        daytime-udp:    off 
        echo:           off 
        echo-udp:       off 
        rsync:          off 
        services:       off 
        swat:           off 
        telnet:         on 
        time:           off 
        time-udp:       off 

atalkやbluetoothなど以前から止めてあったdaemonもあるが、分からないものは放置していた。
手始めにsshdから止めて、 irqbalance、 iscsi、iscsid、 mdmonitor、 avahi-daemon、 dkms_autoinstaller、 firstboot、 netfs、nfs、nfslock、rpcidmapd、portmap、 NetworkManager、 iptables、 haldaemon、messagebus、 anacron、atd、autofs、と止めてしまった。
今のところ、システムは安定していて問題は出ていない。

追記。
うちのシステムでは、OS起動時にNASをマウントするような設定はしていない。
手動でコマンドを打ちマウントさせている。

「/etc/fstab」に設定を記載し自動でマウントさせるということなら「netfs」は止めてはいけないかもしれない。fstabに関係するデーモンだからだ。他にも関連するデーモンがあるかもしれない。
各々のシステムの状況によって止めることが出来るデーモンは違うので、一応、注意書きしておく。

コマンドについて覚書。

# chkconfig --level 345 iscsi off

上記のような感じでランレベル、サービス名、on/off、で設定する。
システムを再起動したら元に戻ってしまう場合もあるらしいが、Vine Linux 5.2 ppcの場合はこれだけで再起動後にも反映される。

それにしても随分止めたものだ。
haldaemon、messagebusなどはサイトによってはOFFにすべきではないデーモンに分類されている。実際、Powerbookのほうでもあれこれと止めていたらマウスの入力を受け付けなくなって慌てた。
正直なとこ、最後のほうになってくると音がよくなってるのかどうかはっきりしない。十分な試聴が出来ないので評価しないままどんどん止めている。本当は評価しながらしたほうがいいのだろうけど、なかなか難しい。

以下、参考にしたサイト。

http://www.d3.dion.ne.jp/~koetaka/demon2.html 不要なサービスを停止する STARTUP LINUX
http://www.obenri.com/_minset_cent5/daemon_cent5.html ◇不要デーモンの停止(CentOS5)◇☆お便利サーバー.com☆
http://www.obenri.com/_minset_wbel3/daemon_wbel3.html ◇不要デーモンの停止(WBEL3)◇☆お便利サーバー.com☆
http://d.hatena.ne.jp/weblinuxmemo/20090911/p1 不要なサービスの停止 - Linux Memo: Vine Linux 5 設定 tips
http://ikubo.x0.com/unix/CentOS50_stop_Service.htm 不要なサービスを止める (CentOS 5.0)
http://linux.rakunet.jp/linux/service_stop/service_stop.html 不要なサービスを停止
http://www.kozupon.com/etc/daemon.html Kozupon.com - 不要なデーモンの停止とシステムのセキュアー化!

他にもあちこち見て回った。

自分用にdaemonの一覧表を作ることにした。
前述のサイトから記述をもらったりしている。この場で申し訳ないけど御礼申し上げます。

NetworkManager

off

無線LANの暗号化キーなどの管理を行い、利用状況に応じて複数のNICの自動切換えを行うデーモン、とのこと。動的なネットワーク管理システムで、モバイル状況などでGUIで設定を容易にできるので便利。しかし、/etc/resolv.conf を自動で上書きしたりするため困ることがあるらしい。

anacron

off

コマンドをタイムスケジュールに応じて実行する「crond」は、その実行予定時刻にシステムが稼動していない場合には実行がキャンセルされる。「anacron」は「crond」のタイムスケジュールを管理し、実行がキャンセルされてしまったコマンドを「後から追っかけて実行」するデーモン。

apache2

off

HTTPサーバを作るときに使う。

atalk

off

OS9以前のMacにAppleTalkで接続するためのデーモン。

atd

off

「at」コマンドのために必要なデーモン。「at」は単発的に指定時刻にコマンドを実行するために使用する。

autofs

off

フロッピーディスクやCD-ROM、DVD-ROMなどのリムーバブルストレージやNFSなどを自動的に接続、マウントし、設定時間以内のアクセスが無ければアンマウントするデーモン。

avahi-daemon

off

アプリケーションが、マルチキャストDNSを使って名前を公開したり解決したり出来るようにするためのデーモン。
※Avahi: MacOSXのボンジュールの様なもの。設定の必要なしにネットワークに参加できるようにするための技術。DHCP、DNS、プリンタやファイルの共有などを設定なしに行う。このデーモンはその一部。

avahi-dnsconfd

off

Avahi dns configuration daemon。ネットワークを監視して、設定なしでDNSサーバを見つける。見つけたDNSサーバは「resolv.confより優先させる」ということらしい。

bluetooth

off

bluetoothワイヤレス通信サービス。bluetoothを使わないなら止める。

crond

on

タスクスケジューラー。設定はユーザーごとに「crontab」に記述。システム全体用のcrontabも存在する。指定した時刻にサーバーが起動していなければタスクはスキップされる。決められた時間にジョブを実行するのに必要。止めてはいけないデーモンらしい。

cups

off

プリンタ関連のサービス。プリンタサーバーとして使用する場合は必須。

dhcpd

off

Dynamic Host Configuration Protocol(DHCP:動的ホスト設定プロトコル)とInternet Bootstrap Protocol(BOOTP)とを実装したもの。要はDHCPサーバーとして使用する場合に必要。

dhcrelay

off

DHCPサーバが直接には接続されていないサブネットからのDHCP要求やBOOTP要求を、他のサブネットにある1つまたは複数のDHCPサーバに中継する手段を提供する、とのこと。

dkms_autoinstaller

off

起動時にDKMS対応のカーネルモジュールを自動的にロード、インストールするという。

dnsmasq

off

小中規模の内部ネットワークなどで簡易的なDNSサーバを立てる場合に使う。

covecot

off

POP/IMAPサーバー(メール受信サーバー)として構築する場合に使用。

firstboot

off

インストール後、最初の起動時に初期設定を行う。このデーモンは一度実行されると初回起動時設定完了が記録された「/etc/sysconifg/firstboot」が作成され、このファイルを削除しない限り「firstboot」は再び実行されることはない、という。

haldaemon

off

デスクトップ間アプリケーション通信のプロトコル「D-BUS」をサポートするデーモン。
HAL(ハードウェア抽象化層)という仕組みに関係し、プラグ&プレイデバイス(USB外付けHDDやUSBメモリ等)に対応するハードウェア情報収集サービス。比較的新しい機構で、Linuxカーネルはこの仕組みを使ってデバイスを管理できるようになっている。PCI、SCSIなどのバスも監視する。「messagebus」を動かしておく必要がある、とのこと。
止めてはいけないデーモンらしいが。

iptables

off

IPv4用のパケットフィルタリングソフトウェアによるルーティング&ファイヤーウォール。ファイヤーウォールを設定しない場合でも、これが稼動していなければ動作しないアプリもあるというが、、。

irqbalance

off

マルチCPU環境で2ndCPU以降も割り込み処理を行えるようにして効率よく処理を分散させるデーモン。マルチCPUかどうかは「# cat /proc/interrupts」で確認できる。動作確認は「# /etc/init.d/irpbalance status」「# ps aux | grep irqbalance」で行う。
当然、シングルコアなら不要。

iscsi、iscsid

off

SCSIプロトコルをTCP/IPネットワーク上で使用する「iSCSI接続」をサポートするデーモン。

lirc

off

Linux Infrared Remote Control。リモコンと関係があるらしい。

mdmonitor

off

ハードディスクをソフトウェアRAIDで使用する場合の監視デーモン。エラーの発生時にシステム管理者への通知する。

mdmpd

off

MD multipath Daemon。ソフトウェアRAIDで、一つのハードディスクに対して複数のインターフェースから接続可能なサーバーシステムを使用する場合の監視デーモン。multipathデバイスの監視をサポートするサービス。

messagebus

off

デスクトップ上で相互にメッセージを送るためのデーモン、とのこと。
「D-Bus」を使用可能にするデーモン。haldaemon、dhcdbd、oddjobdなどを動かすなら必要。
※D-Bus:メッセージバスの1つ。特定のサービスにメッセージを送信したり、興味のある全てのサービスにメッセージをブロードキャストするためのAPIを提供。APとシステムの低レベルにあるコンポーネントとの間でイベントを送信が可能になる。
止めてはいけないデーモンらしいが、うちのibookでは止めている。

named

off

DNSサーバーアプリケーション「BIND」のデーモン。

netfs

off

「/etc/fstab」にsmbfs、cifs、nfsなどファイルシステムをマウントするように記述していると、システム起動時にマウント、シャットダウン時にアンマウントしてくれる。
NFSクライアントデーモン。NFSサーバーに接続してファイル共有するために必要。
これを稼動させていなければ「autofs」デーモンが稼動していてもファイル共有できないらしい。MacOSXやNFSサーバーを実装したWindowsOSとファイル共有をする場合にも必要となるらしい。

network

on

ブート時にネットワークインターフェイスを設定するサービスで、OFFにすると起動時にネットワークに繋がらなくなる。手動で設定を行わないといけなくなる。
止めてはいけないデーモン。

nfs

off

Network File System。Linuxファイルシステムのマウントに関わる。動かすには「portmap」も必要。

nfslock

off

NFSサーバーのデータを保護するための「ファイルロック機構」を提供するデーモン。「portmap → nfslock → nfs」の順に起動する必要がある。

nmb

off

Samba関連。名前解決プログラムであるnmbdと関係あるらしい。

nscd

off

ネームサービスキャッシュデーモン。passwd、group、hostsなどをキャッシュして、libc経由で提供する。DNSやNISの情報をキャッシュするので、/etc/resolv.conf などを編集したら再起動が必要。DNSを使っていれば必要ない?

ntpd

off

Network Time Protocol daemon。NTPで上位のNTPサーバーのタイムゾーンの設定を参照して時刻を調整し、同時にサーバーとして時刻を配信する。インターネット標準時サーバと同期してシステム時間をセットし維持するオペレーティング・システム・デーモン。
うちでは最初から止まってた気がするが、どうなんだろうか。止めてはいけないデーモンらしい。

portmap

off

Linux向けRPC(remote procedure call)関連のポートマッパー。RPCに対する要求に応答し要求されたRPCサービスへの接続を設定する。ポートマップはRPCサーバプログラムが起動される前に動作していなければならない。NFSやNISなどを使用する場合は必要だがNFSv4では不要。NIS、NFS、FAM以外ではほとんど使われないらしい。

postfix

off

メールサーバー。

proftpd

off

port mapperサービス。NFSやNISを使用する場合に必要。

random

on

システム上で乱数を発生させるデーモン。SSLなどセキュリティ関連で必要になったり、アプリケーションが「どちらでもいい」という曖昧な処理を行う場合に利用することがあるという。

rdisc

off

ローカルなサブネット内でルーターとして動作させるときの経路管理を行うデーモン。

rpcidmapd

off

NFSを利用するときに利用するセキュリティ関係のユーティリティで、ユーザー名/グループ名とUID/GID のマップを保持するデーモンとのこと。NFSを使わないならoff。

saslauthd

off

SASL(Simple Authentication and Security Layer)のデーモン。IMAP、POP3、SMTPなどの認証を支援する。コネクションベースのプロトコル認証をサポートするデーモン。

smb

off

LinuxでWindowsOSのファイルサーバーを稼動させるアプリケーション「samba」のデーモン。

sshd

off

リモートホストとの通信を暗号化してやりとりを行う「SSH」で通信するために必要。

syslog

on

システムのログを記録する。サーバー不調時にログが無いと困る。

udev-post

on

ハードウェア自動認識を行うデーモン。止めてはいけない。

uuidd

on

UUID(Universally Unique Identifier)ライブラリから利用されるデーモン。時刻情報に基づくUUIDを、安全にそして一意性を確保して生成する。最近のLinuxディストリビューションの場合、このUUIDを例えばハード・ディスクの個々のパーティションを識別するための情報として使っていたりする。UUIDは「/etc/fstab」ファイルの中身を見れば確認できる。

winbind

off

「samba」でWindowsOSのファイル共有を行う際に、ホスト機をNTドメイン(WidnowsOS独自のネットワークユーザー管理システム)に参加させるためのデーモン。

wpa_supplicant

off

無線LANの暗号化及び認証の規格であるWPA(Wi-Fi Protected Access)をサポート。

xineted

on

スーパーサーバーデーモン。telnetやswatなどxinetdでコントロールするサービスがあるならon。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Apr 17, 2013

Vine Mpd ppcについて覚書(11)mpd.conf : audio_buffer_sizeとbuffer_before_play

mpd.confの記載内容に関して。
過去のエントリーで以下のように書いていた。

# MPD Internal Buffering ####

audio_buffer_size		"384"
buffer_before_play		"5%"
#

ここの設定について追記。新規エントリーにする。
参考にリンク。
http://linux.die.net/man/5/mpd.conf

「audio_buffer_size」と「buffer_before_play」のデフォルトは2048と10%らしい。これらを変更することで音質が変わるという。
「audio_buffer_size」の数値はkbである。
「buffer_before_play」はaudio_buffer_sizeのうち何%使うかを0~100%の範囲で設定できる。

5%は少なめの設定だが、384kbの5%ということなら20kb弱だ。
この数値にどういう意味があるのか分からない。
ひどく少ない。
256kbの5%だと12.8kbになってしまう。
これは44.1/16の音楽データだと0.1秒に満たない。384kbの5%だと0.1秒を超える。

384kbの5%は、44.1/16の音楽データだと0.1秒を超えるぐらい。
しかしうちでは88.2/24にアップサンプリングしてるので、0.1秒よりもっと短いはずだ。

上記の設定で、CD1枚単位をflac+cue sheetにリッピングしたものを通して再生する分には、全く問題ない。
しかしiTSから買ったアルバムを通して聴く場合だと、ライブ盤を再生すると音が途切れるのが分かる。m4aをギャップレス再生できないのだ。
384kb/5%では足りないのだろうか。

bufferに関連してリンク。
http://mpd.wikia.com/wiki/Music_Player_Daemon_Crossfading_Troubleshooting
リンク先から引用してみる。

MPD does crossfading by using the buffer.
The amount of buffer used for crossfading is the size of the buffer minus the amount of space reserved for buffer_before_play.
By default (2MB buffer and 25% buffer_before_play) this is approximately 9 seconds of crossfading for 44.1 khz, 16-bit, stereo audio.
If you have the buffer_before_play set to 100%, there will be no crossfading.

crossfadingという操作がmpdクライアントから設定できる。
曲再生が終わって次の曲に移る際に数秒間かぶるように出来る(秒数も設定できる)。

ここで書かれていることから推測するに、buffer_before_playで使われる以外のbufferに、crossfadingのためのデータを読み込むということらしい。
こうした特別な使途がないなら、ほとんどなくてもいいbufferなのかもしれない。
逆に、before playとcrossfading以外で使うことがあれば不具合があるかもしれない。
ギャップレス再生の不具合とは関係があるのだろうか。
http://linux.die.net/man/5/mpd.confには「Try increasing this if you hear skipping when manually changing songs.」とあるが、skippingというのがどういう状態かよく分からない。

みみず工房掲示板からも引用する。

audio_buffer_size
decoderスレッドからoutputスレッドへデータを受け渡すfifoバッファーのサイズです。
buffer_before_play
audio_buffer_sizeのデータがこれより少なくなるとdecoderが動いてバッファーにデータを追加します。
再生開始時はバッファーにデータがこの値になるまで開始されません。
この値を100%にすると常に空きが出ないようにdecoderが動きます。

ここも参考にリンク。
http://d.hatena.ne.jp/propella/20061202/p2 ALSA PCM プログラミングのサウンドバッファ - 言語ゲーム

「audio_buffer_size "384" buffer_before_play "5%"」だと、20kb弱のbufferを切らさないようにdecoderが動いてるってことになる?
audio_buffer_size "1024" buffer_before_play "100%"といった設定だと、1MBのbufferを常に抱えることになる。
全く状況が違ってくるだろう。
常にdecoderが動いてるというのは望ましい状態なのかどうか。
buffer_before_playが100%だと常にdecoderが動くということだけど、buffer_before_playが小さい場合もdecoderが動く頻度が多くなると思う。
再生音にどんな変化があるのだろう。

どんな設定がいいのか、試行錯誤してみる。

こういう試行錯誤がやりやすくなった背景にはibook G4をtelnetサーバーにしたということがある。
当初はsshを考えていたんだけど「鍵」の扱いが面倒でやめた。もしかしたら鍵を使わない設定も出来るのかもしれないが分からなかった。家庭内LANなのでと割り切ってsshdも止めてしまった。

telnetサーバーはVine Linux ppc 5.2には最初からは入ってないので、Synapticパッケージマネージャを使ってインストールした。
当然だけどtelnetを使うと何かと楽だ。いちいちオーディオラックの下からibookを引っ張り出す必要がないし、ncmpcppを操作しながら、同じ画面でmpdサーバーの状況も操作できるというのは面白い。

クラシックの歌劇のCDを曲ごとにリッピングし、flacで保存したものを再生する。
「audio_output_format」は44.1kHz、16bitに固定した。

まず「audio_buffer_size "256"」にしてみる。
「buffer_before_play」の値は、0、10、50、100と換えてみた。
結果、これでは数秒間しか音が出ないことが分かった。
256では駄目みたいだ。

次に「audio_buffer_size "264"」にしてみる。
再生自体に問題はない。
しかし「buffer_before_play "100%"」にするとncmpcppでFキーを押して早送りすると、そのあと音が出なくなるなど再生の不具合が出る。
「buffer_before_play "10%"」にすると問題なくなった。
buffer_before_play以外のbufferは使用状況によっては不可欠かもしれない。
ギャップレス再生は問題なし。

いろいろ試していく。
こまごま書いていっても分かりにくいので、結果を表にする。
縦軸が「buffer_before_play」。
横軸が「audio_buffer_size」だ。


256 264 288 320 512 1024
0 b np np np np np
10 b np np np np np
20 b np, f



30 b np, f



50 b np, f np, f np np np
60 b f



80 b
f f f np
90 b



f
100 b f f f f f
  • b : 再生しても数秒間しか音が出ない状態。
  • f : Fキーで早送りしたときに不具合が生じる。
  • np : no problem

npとfの両方が付いているのは、不具合が出る頻度が少ないと感じた所である。
あまり厳密に回数を数えたりまではしなかったので、印象での評価だ。

ざっと見た感じ、早送りにはbuffer_before_play以外のbufferが必要だと分かる。
必要な数値を計算してみる。
1024*(1-0.8)≒200、320*(1-0.5)=160、264*(1-0.3)≒185

どうやら、200kb程の余裕があれば、問題なく早送り出来るようだ。
余分のbufferが足りないと早送りの後で音が出なくなったりする。それでも何回かFキーなどを連打したら音が出る。
しかし、buffer_before_playが100%だとそれも上手くいかない。早送り自体が出来ないこともあり、止まったときに音を出すにはトラックの初めから再生するしかないようだ。

ギャップレス再生はaudio_buffer_sizeが256kbのとき以外の条件だと問題なく出来た。
256kbでは再生自体がままならなかったので仕方ない。
ということは、ギャップレス再生の可否はbufferの大きさには依存しないということだ。

m4aだとどうか。実は、audio_buffer_sizeが1024でも音が途切れる感じがあった。では、audio_buffer_sizeの数値によって途切れる感じが違ってくるかというと、以外にそうでもない。
mpdの設定よりも、ファイル形式による影響のほうが大きいのかもしれない。

現在の設定は以下の通り。きりがいい数値にした。

audio_buffer_size		"320"
buffer_before_play		"10%"

設定によって確かに音色の感触は違う。
しかし、どの設定が優れているかの判断は難しいと思った。
audio_buffer_sizeが大きいとゆったりした感触になるというのは世評のとおりだと感じた。

buffer_before_playの数値による違いは、どうもはっきりしなかった。
100%だとやや窮屈に聞こえるような印象で、音飛びさえなければ0%のほうがいいような気がする。しかし、そんな印象は気のせいじゃないか?という気もする。
素人考えだが、「0%」というけど実際に再生直前の音楽データのbufferを「0kb」で回してるなんてことは考えにくくて、実はmpdが勝手に判断してデータを切り回してると考えたほうが実際に近いのではないかと思う。

ちなみに、選曲時に「skipping」と思われる不具合も生じなかった。
そういうわけでbuffer_before_playは少なめだ。

アップサンプリングについての音質評価はまだしていない。しかし、少なくともbuffer_before_playの数値よりは影響が大きい印象だ。

ファイル形式によるギャップレス再生の不具合の違いは、そのうちまた確かめてみようと思う。
僕が使ったm4aファイルが、もともと良くないものだった可能性だってあるからだ。
iTunesで同じCDをリップして確認する必要があると思う。

追記。
CDを楽曲ごとにリップして作ったm4aファイルを再生してみた。
サンプリング周波数は320kHz。
やはりiTSで買ったファイル同様、わずかに楽曲間で音が飛ぶ。

ギャップレス再生の可否は、mpd自体の問題ではなく、各々のファイル形式のCodecによるのではないだろうか。本来ギャップレス可能になるはずのCodecにmpdが充分に適応できていないということなら、mpdの問題ということになるだろうけど。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: ,

Apr 12, 2013

Vine Mpd ppcについて覚書(10)NASのマウントについて

これも結構困ったのを思い出したのでエントリーにする。

現在は、PCオーディオ実験室で紹介されてる自動マウントのような、高度な設定はしていない。
iBook G4の起動後、ランレベル3の端末からコマンドを打ち込んで「Music」ディレクトリにマウントさせるという、原始的な手法をとっている。
そんなに困らないから今のままでいいかな、と思っている。

ファイルシステムをマウントするにあたって、まず「マウントポイント」を作る。
うちの場合、「/root/Music」をmpdのmusic_directoryに指定してるので、ここに空のディレクトリを作りマウントポイントにする。
次に、以下のようなコマンドを打ってみた。
以下のようなというのは、はっきり覚えてないからである。

# mount -t nfs //192.168~(マウントするNASのディレクトリのパス) /root/Music/(マウントポイント名)

これが上手くいかなかった。マウントしない。
PCオーディオ実験室のエントリーには「cifs」とか「smbfs」といった文字列が出てくる。ファイルシステムをマウントするにあたって、ファイル形式によって選択する文字列が違ってくるらしい。
nfsじゃダメだったのでcifs、smbfsとやってみたけど、やはり上手くいかなかった。

そこで「man mount」でマニュアルを読んでみたけど、よく分からない。
これにはまいった。
外付けHDDにするなんて手間はかけられない。

ネット上で手がかりをさがしているうち「cifs」というのがあると知る。
Windows上のファイルにLinuxからアクセスするには(mount.cifs編) - @IT
これを試したら当った。

# mount -t cifs //192.168~(マウントするNASのディレクトリのパス) /root/Music/(マウントポイント名)

これで、NAS上のディレクトリをmusic_directoryにマウントできた。

ところがまだ問題があった。
NAS上にはiTunes Libraryの音楽ファイル用ディレクトリも置いてある。これを/root/Music/にマウントしようとしたら出来なかった。
ディレクトリ名に「iTunes Media」が使われているので、コマンドに半角スペースが混じる。そのままでは正しいコマンドとして成り立たなくなるのだ。

対策は簡単で、パスを""(ダブルクォーテーション)で囲むだけでいい。

# mount -t cifs //"192.168~(マウントするNASのディレクトリのパス)" /root/Music/(マウントポイント名)

これで問題なくマウントできた。
\(バックスラッシュ)を使ってコマンドを書く方法もあるということだが、試みていない。

毎回こんな長ったらしいコマンドを打つのは大変なので、「alias」に登録してある。
bashの設定ファイル「.bashrc」に、コマンドをマウントポイント名でaliasに登録してあるので、マウントポイント名を端末に打ち込むだけでマウントできる。
ダブルクォーテーションを使ってるコマンドは、'(クォーテーション)を併用して書いている。

これぐらいなら手間だとあんまり思わないので、これでいけてる感じだ。

Posted at 09:37 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Apr 03, 2013

オーディオ状況報告

いろいろ変わったので、現在のオーディオシステムについて記録しておく。

4月6日、ちょっといろいろ追記。
一部、書き間違えを訂正している。

BY50S HDL2-A2.0
(LAN: KB-FL7-05BK)

mac mini4.1 2.4GHz 8GB
OSX 10.6.8
audirvana plus / itunes
96/24 TOS
(TOS: HK50/huji parts)
AT-HDSL-1
TOS > RCA
(RCA: 型番不明)
ibook G4 12" 512MB
Vine Linux 5.2 ppc
mpd 0.17.3
88.2/24 USB
(USB: RAL-2496UT1付属ケーブル)
RAL-2496UT1
USB > TOS
(TOS: OPC-M1/SAEC)
DP-5090
44.1/16 RCA
NBR271
RCA > BNC
(BNC: BNC59/HOSA)
BJC-XP-TRC
BNC > XLR
SRC2496
>> 96/24 RCA
(RCA: D-75/DH LABS)
PB-500-2 odeon-lite
(RCA: basis1.4/AC Design)
SM-SX100
(5.5mmスケアキャブタイヤ/協和電線)
4425mk2 (omni8/Space&Time)
T900A

昨年9月のエントリーで書いたのと比べて、DACの上流が変わっている。

まずCDプレーヤーだけど、TEACのVRDS-25xsを外して、KenwoodのDP-5090に変更している。
理由は、実はVRDS-25xsだとCDを入れっぱなしにするとターンテーブルにCDがくっついてしまうことがあるから。めったにはないんだけど、そうなると天板を開けるなりしてCDを取り出さないといけない。僕以外の家族が使うことを想定しているので、マニアックで高音質目指した機種よりトラブルが少ない機種のほうが望ましい。
VRDS-25xsよりもいい音がPCトランスポートで得られる目星がついたかも?ということもある。

RCA(COAX)出力をBNC、さらにBJC-XP-TRCでXLRに変換してDACに入力している。
なぜか分からないけど、odeon-liteのRCA入力周りの状態によって、たびたびodeon-liteのリレーが動くということがある。25xsでもDP-5090でも同じで、電源ケーブルその他対策を講じてみたけど、なかなか直らない。
CDプレーヤーからの出力をBJC-XP-TRCをかませてXLRに入れると、この不具合がない。
これでいいや、ということにしてしまった。

PCトランスポートとしてibook G4を追加している。
mac miniのAudirvana Plusと、ibook G4のmpdを使い分けできるようにしているが、最近は主にmpdを使っている。
理由は、実はmac miniを子供に占拠されてるからだ。4才の子がPOCOYOを観てるのにいちいちどけと言ってゴソゴソするのは面倒だ。メモリを8GBも積んでいてメインマシンにするつもりだったんだけど、そうもいかなくなっている。
その点、mpdなら離れた場所にあるクライアントからオーディオ再生の指示が出せる。音質は、未だ試行錯誤中だけど定評どおり期待できそうな感じだ。

mpdの出力は、現在は88.2kHz/24bitにしている。
アップサンプリングの周波数は元のファイルの整数倍がいいという話を随所で聞くので44.1kHzの倍にした。
あと、整数倍でのアップサンプリングのほうがibookへの負担が少ないだろうと思ったから。デジタルオーディオではシステムが安定して動くという事が音質上極めて重要だと個人的に思っている。そのためには負荷が少ないほうがいいのではと考えた。
96kHzのときと聴き比べは出来ていないが、なんとなく音がしっかりしたような気がする。
じゃあなぜmac miniは96kHzなのかというと、こっちはなんとなく96kHzのほうがいいような気がしたから。理由はよく分からない。気のせいかもしれない。メモリ8GBが効いてるのかも知れない。

以前は、mac miniからの光出力を直接SRC2496の光入力に繋いでいたが、今はAT-HDSL-1に繋いで同軸出力に変換している。
代わりにibook G4、RAL-2496UT1からの出力を光入力に繋いでいる。以前はこっちをAT-HDSL-1に繋いでいたんだけど、USBから光、さらに同軸と、こんなに変換を繰り返すことにどういう意味があるのかと感じて入れ替えた。

ibook本体は、ラック下の床に邪魔にならないように置いている。のぞきこむと白いリンゴが光っているのが見える。
mac miniはコンポから若干離れたとこのTV台に、モニター付けてセッティングしている。前述したとおり最近はもっぱら子供が使っている。AudirvanaとiTunesからの音声を5mもの長さの光ケーブルでオーディオコンポに出力している。

トランスポートからのデジタル出力は全てSRC2496に入れている。
これはDDコンバーターで「リサンプリング」することでジッターを低減するという。
mac miniからの5mの光ケーブルをDACに繋ぐ場合、直接だととてもVRDS-25xsの音質に届かなかったが、SRC2496を間にかますだけで超えてしまった。それからというもの僕はリサンプリング信者になってしまった。

ほかにもいくつか変更がある。
以前は繋いであったTU-875を外している。これはスイッチが壊れてしまったから。
アナログプレーヤーを使う際に必要なのでいずれは修理したい。

DEQ2496によるイコライジング・室内音響調整は、したいけど出来ないまま。
繋いではいるけど使ってないので今回は書いていない。
本当はカセットデッキのテープ再生をデジタル変換してPCに記録するのにも使いたいんだけど、出来ていない。

AirMac Expressは繋ぐとこがなくなったしオーディオとして使ってないので外した。
別室のプリンタに繋いだら便利かも、とか考えている。

あと、ここには書いていないが、SRC2496の外部クロックに某製品を繋いでいた。
SRC2496の内部クロックは良くないという話を読んだことがあったから、ものは試しと。
しかし、これがどうも繋いでいるとポップノイズが出る。音声再生中に限らずクロックのスイッチを入れているとプチ、プチ、というので、クロックの不具合のような気がする。あれこれ思いつく対策をとってみたけど、結局、外部クロックを使わなかったら不具合ないようだということで、外してしまった。
使う方がいい音がするということもないように思ったので、当面は外部クロックなしで使うつもり。
もしかしたら、ヤフオクで落とした中古だったので壊れているのかもしれない。

odeon-lite以下の下流は、SM-SX100、4425mk2、T900A、と10年前から変わっていない。
それだけ気に入ってる構成なわけで、換え難いところがある。

今後の課題。まず、いずれはNASを変更したい。
オーディオルームで使うには静粛性に難がある。しばしばファン?の音が気になる。

次にDAC。
odeon-liteはいい音だと思うけど、DSDに対応してないし、ノイズに対してデリケートすぎるとこがあるので配線とか気を使う。
最新のDACの音に興味があるということもあるし、ibookのmpdからのUSB出力を受けるのが、そのUSBから電源供給を受けるRAL-2496UT1というのはどうなんだろうか、という気持ちもあったりする。外部電源が製品化されてるけど4万円もする。それなら新しいDACを買いたい。
ただ、odeon-liteが壊れない限り当分先のことになるとは思う。

Mar 02, 2013

Vine Mpd ppcについて覚書(8)サンプリング周波数とビットレートの変更+追記:mpd.confの設定

以前、覚書(5)で、以下のようなことを書いた。

usb出力が44.1kHzから48kHzになってしまった。
ファイルは44.1kHzなのでアップサンプリングしてる。
どうもこれはalsaのデフォルト設定らしく、どこかで変更も出来るらしいということが分かった。

いつまでも48kHzのままというのもどうなのかなということで、44.1kHzに戻すことにした。
以下のサイトを参考にした。

>Tuning - Music Player Daemon Community Wiki : ALSA dmix

Since version 1.0.9-rc2, ALSA enables dmix (allows multiple applications to play audio on a single sound card) by default. dmix is a little overhead, if you want direct output to the device, use something like the following syntax:

audio_output {
	type "alsa"
	name "my ALSA device"
	device "hw:0,0"
}

Another reason to bypass dmix is that dmix forces 48khz (see here). So if you playback 44.1khz this will require resampling even if your soundcards supports 44.1khz samplerate, this causes extra cpu usage.

前半を約してみる。
「version 1.0.9-rc2以降、ALSAはデフォルトでdmixを有効にしている(dmixによって複数のアプリを1つのサウンドカードで対応させて音を出すことが出来るようになる)。dmixというのは、デバイスにダイレクトに出力したい向きには、ちょっとやりすぎの感があるので、以下のような記述を使うといい。」

ここで書かれている記述には見覚えがある。mpd.confの、alsaの設定である。
というわけで、書かれているように直してみた。
mpdを終了し、mpd.confを編集する。

##	device		"hw:0,0"	# optional

文頭の##を削除して保存。
mpdを再起動する。

usb出力が44.1kHzになった。
なんと簡単なことか。

ここで「top」コマンドを打つと、mpdのCPU使用率が2、3%になっている。
48kHzだったときの1/10になってしまった。
システムへの負担は相当少ないみたい。
そもそもVoyage MPD Starter Kitとかみると、かなりのロースペックで動かしている。

後半も約してみる。
「dmixをバイパスするもう一つの理由は、dmixが強制的に48kHzにしてしまうことだ。例えば、サウンドカードが44.1kHzをサポートしていて、44.1kHz戻すためにリサンプリングする必要があるといった場合、余分なCPU負荷の原因になる。」
dmix自体のせいで無駄にCPU負荷が10倍になるのなら、バイパスするほうが順当だろう。

ちなみに、mpd.confのalsaの設定には、サンプリングレートを決める項目もある。

##	format		"44100:16:2"	# optional

コメントアウトを削除して96000:24:2にしたら、usb出力が不安定になった。
ブチブチ出力が途切れてしまう。
アップサンプリングして出力するには他の方法じゃないと駄目なようだ。
ちなみにこのときもCPU負荷は数%しかなかった。

音質がどうなったかというと、例によってちゃんとした比較は出来ていないんだけど、48kHzのときのほうがゆったりして暖かい音が出ていた印象がある。44.1kHzにしてからシャープな音になった。固いといえば固いのだけど、こちらのほうがリアルなような気もする。
そのうち余裕が出来たらじっくり聴き比べてみよう。

4月6日追記。
今更だけどmpd.confの記載内容を記録しておく。
うちでは「~/.mpd/mpd.conf」で設定している。
これは「INSTALL」ファイルに記載されてるデフォルトだ。

# Files and directories ####

music_directory		"~/Music"
playlist_directory		"~/.mpd/playlists"
db_file			"~/.mpd/database"
log_file			"~/.mpd/log"
pid_file			"~/.mpd/pid"
state_file			"~/.mpd/state"
sticker_file			"~/.mpd/sticker.sql"
#

rootでMPDを動かしてるので、~はrootディレクトリである。

# General music daemon options ####
#user				"nobody"
#group				"nogroup"
# For network
#bind_to_address		"any"

#bind_to_address		"~/.mpd/socket"

port				"6600"

#log_level			"default"
#gapless_mp3_playback			"yes"
#restore_paused "no"
#save_absolute_paths_in_playlists	"no"
#metadata_to_use	"artist,album,title,track,name,genre,date,composer,performer,disc"

auto_update	"yes"
auto_update_depth "6"
#

# Symbolic link behavior ####

follow_outside_symlinks	"yes"
follow_inside_symlinks		"yes"
#

portは6600で固定。
auto_updateは効いてるのかどうか分からない。ライブラリがオートアップデートしたの見たことないし。
depthは一応、深めに設定している。
MusicディレクトリにNASのディレクトリをマウントしてるんだけど、結構深いとこまで辿らないと音楽ファイルとか辿り付かない場合があるので。設定しなかったらどうなるかは試していない。

# Zeroconf / Avahi Service Discovery ####

# Permissions ####

# Input ####

ここは触っていない。

# Audio Output ####

# An example of an ALSA output:
#
audio_output {
	type		"alsa"
	name		"My ALSA Device"
	device		"hw:0,0"	# optional
##	format		"44100:16:2"	# optional
##	mixer_type      "hardware"	# optional
##	mixer_device	"default"	# optional
##	mixer_control	"PCM"		# optional
##	mixer_index	"0"		# optional
}

audio_output_format		"88200:24:2"
#

ここの項目で有効にしてるのはalsaの項目と、ずっと下のほうの「audio_output_format」という項目。
以前は「pulseaudio」の項目も有効にしていたんだけど、不具合があって現在はコメントアウトしている。

ここから4月1日に追記していた内容。

サンプリング周波数とビットレートの変更はalsaの設定以外でもできる。
mpd.confの、alsaのずっと下のほうに、以下のような記載がある。

# This setting will change all decoded audio to be converted to the specified
# format before being passed to the audio outputs. By default, this setting is
# disabled.
#
#audio_output_format		"44100:16:2"

ここのセッティングでは、デコードされた全てのオーディオ信号を出力される前に指定されたフォーマットに変換する、とある。
ここを以下のように書き変え、コメントアウト削除した。

audio_output_format		"96000:24:2"

これでusb出力を24bit/96kHzに変換できた。
alsaの設定でしたときのような不具合はないようだ。
CPU負荷は4%ぐらい。フォーマット変換を設定する前の倍ぐらいになっている。

音質の変化は、まだちゃんとした比較はしていない。
なかなか比較する余裕がないのが現状だ。

ここからまた4月6日追記分。

# Normalization automatic volume adjustments ####

replaygain			"album"
#replaygain_preamp		"0"
#volume_normalization		"no"
#

ここはよく分からない。
「See <http://www.replaygain.org>」とか書いてあるけど、充分読めていない。
リプレイと関係あるらしく、ここの設定を変えるとncmpcppでYを打ったときのmpdの反応が違ってくるようだ。しかしどうなってるのか充分に把握できていない。

# MPD Internal Buffering ####

audio_buffer_size		"384"
buffer_before_play		"5%"
#

ここの設定は音質にも影響があるらしい。
audio_buffer_sizeは多分「kb」だと思う。256だと音が出ない。
buffer_before_playだけど、何の割合か分からない。メモリのなのかファイルのなのか。現在少なめに設定している。

# Resource Limitations ####
# Client TCP keep alive ####

ここは触っていない。

# Character Encoding ####

filesystem_charset		"UTF-8"
#id3v1_encoding			"ISO-8859-1"
#

一応、UTF-8で、コメントアウト削除。

# SIDPlay decoder ####

ここは触っていない。

ざっとこんな感じ。
今後、変わるところもあるかもしれないけど

とりあえず、今回はここまで。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: , , , ,

Feb 23, 2013

Vine Mpd ppcについて覚書(6)不良cue sheetによる再生の不具合

前回は、mpdが順調に動作し始めたとこまで。
この覚書もだいぶリアルタイムでの状況進行に近づいてきている。
これから書くのは、2月中旬以降の話だ。

うちでは以前からCD1枚を1つのFLACファイルにしてNASに保存している。
今は持っているCDの一部だが徐々に増やすつもり。
リッピングに使うのはもっぱらEACで、cue sheetもリッピングと同時に作っていた。EACにはそういう機能があるのだ。
これをLAN経由で、Mac miniの「Audirvana Plus」を使って再生していた。

mpdでもcue sheetが使えるようになり、これは便利だと思っていたんだけど不具合が出てきた。
楽曲再生に際してトラックの開始がおかしくなる。
おかしくなるというのは、楽曲の途中から再生を開始するのだ。
それも前の曲の途中から再生される。
cue sheetを使って再生している時に限られるので、この関係で不具合があるんだろうと考えた。

分かりにくいので追記。
前の曲の途中から再生」というのは、前の曲が再生中に途切れて、続くトラックの頭が再生されるという意味。前の曲が途中から繰り返し再生されるという意味ではない。

Cue sheet - Hydrogenaudio Knowledgebase

cue sheetには「INDEX 01」という項目を必ず記載することになっていて、というのは、楽曲開始時間を指定する項目がこれにあたるから。
INDEX 00」というのもあって、これを記載すると楽曲開始前の「ギャップ」を設定できる。
CD再生してるとき、ときにトラックが始まる前に数秒間の無音があって、プレーヤーの再生時間表示に「マイナス」が出ることがある。こういうのをWAVやFLACのファイルからCDを焼くときなどに反映させるのに、cue sheet上に「INDEX 00」の時間を記載し、指定しておくということらしい。

再生に問題があったcue sheetをエディタで確認してみたら、「INDEX 00」と「INDEX 01」に指定された時間が、酷いときには数分以上も違っていることが分かった。

つまり、トラック再生開始時間の前にあるのは数秒間の無音どころではなく、トラック開始の数分前の部分からトラック開始時間までの楽音。つまり、FLACファイル上にある前のトラックの途中からトラック開始時間までの部分、ということになっていた。
EACでcue sheetを作ったときにこうなったということになる。
なぜこんなことになったのかは、はっきりしない。
今まで、foober2000やAudirvanaで再生している分には全く気付かなかったので、これらのソフトは「index 01」しか読まないのかもしれない。

とりあえず「INDEX 00」は削除してもcue sheetの体裁としては問題がないということなので削除してみたら、mpdでの再生の問題もなくなった。
つまり、mpdはINDEX00を読んで再生したから再生の不具合が生じたということだ。

こうした不具合がうちだけのものなのかどうか、はっきりしない。
ネット上で検索してみても、検索が下手なのか?、ひっかかってこないのだ。

原因は分かったけど、ではどうするかが問題になる。
今までにCDをリップして作ったcue sheetは数百万枚数百枚。1枚ずつチェックしていては、とても終わらない。
それどころか、これからもリッピングは続ける予定なのだ。

EAC以外のリッピングソフトを使うのか。
正直、この半年の間に使い慣れてしまって換える気にならない。なにしろスピードが速いというのが僕のニーズにあっている。
EACでcue sheet作成の設定が出来ないかと考えたけど、ないようだ。

では、mpdのほうで「INDEX 00」を読まない設定に出来ないか。
調べたけど、よく分からない、、。

では、cue sheetの書き換えをコンピューターにしてもらおう。
人間がやるよりずっと早いはず。
Linuxは、数百枚のファイルの内容を一瞬で書き換えるコマンドを打つことが出来るはず。

しかし結局、僕が使った手段はApple Storeで「Jedit X standard」を買うことだった。
このエディタには複数ファイルの内容を検索して書き換える機能が付いている。
Mac mini上のJeditからNAS上のフォルダを選択し、ファイルの種類に「cue」を指定して、「INDEX 00 .+/n」を検索して「/n」に書き換えるように、としてクリックすると、INDEX 00とこれに続いて記載された時間を表す数列が、削除される。
ちなみに「.+」は1文字以上の文字列、「/n」は改行という意味。

これで、自宅NASにあったcue sheetの「INDEX 00」とそこに指定された時間は、数分間で削除された。非常に助かった。
途中で文字コードの指定でひっかかるファイルがいくつかあった。UTF-8でいいか?ということなので、いいよとenter。確認していないが多分問題ないだろう。
無料のお試し版「Jedit X Rev.2」で同様の操作が出来るかどうかは知らない。

ちなみに、EACでリッピングしてcue sheetを作った時点で同様の操作をするのには「Mery.exe」というエディタを使った。こっちはWindows用のフリーウェア。
やはり複数のファイルの中を検索して、文字列を一括で置換できる。
操作する内容も大体同じだ。
今後はこっちで処理してからNASに持っていくと思うので、Jeditは今後の出番は少ないかもしれないが、まあ、いい仕事してくれたので高いという気がしない。

追記。
何で自宅NASのファイルを修正するのにMeryを使わないのかということだけど、自宅のWindowsXPにMeryをインストールして使ってみたら、なぜか前述の捜査が出来なかった。マシンのスペックの問題かもしれない。自宅のマシンはペンティアム3だ。
どこでリップしてるかというと、実は職場。夜勤で仕事がない時間帯に、自宅から持ち込んだもっと使えるノートでリップしてる。普段見ないTVとかぼーっと見てるよりいいかと思って始めた。それ以外の時間でリップできる時間はない。
だからリッピングが高速にできるというニーズは切実なのだ。
仕事さぼってるわけじゃないけど、こんなことあんまり進んで公言したくはない。しかし行きがかり上仕方ないので書いた。

しかし、INDEX 00だけでは終わらなくて、実は「INDEX 02、INDEX 03、、、」というような記述があるcue sheetがあることが分かった。ちなみに、このようなシートはAudirvanaでも受け付けない。foobar2000で使えるかどうかは、不明だ。
これは、もしかしたらと思って「INDEX 02」をJeditで複数ファイル検索して、ひっかかった。
そんなに多数ではなかったので、検索結果からファイル自体を開いて削除した。
この際に、03、04、、、とかあるのに気付いた。
たぶん、02を飛び越えて03、、、とかいうcue sheetはないと思うのだけど、今の時点では検索していない。

ちなみにそういうcue sheetの一例。
こんな感じのファイル
INDEX 00がないのは、Jeditで削除された後だからだ。

とりあえず、今回はここまで。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Feb 21, 2013

Vine Mpd ppcについて覚書(5)alsa関連で要らないものを入れすぎていた

mpdでcueシートが使えるようになった。
この時点のシステムの状況。

追記。mpdのバージョン書き間違いを訂正した。0.17.2を0.17.3に。

iBook G4 vine linux 5.2ppc runlevel 5mpd v0.17.3
Powerbook G4vine linux 5.2ppc runlevel 5ncmpcpp v0.5.10
RAL-2496UT1DD Converter(USB >> TOS)44.1kHzで動作・SRC2496に出力

mpdも0.17.3にヴァージョンアップしている。
多分、1月中旬にしてると思う。

「runlevel 5」にしてるのは、3では使えなかったから。
runlevel 3にしたらusbデジタル出力しなくなる。
どこを直せば出力できるようになるのか分からなかったので、runlevel 5で当面は使うことにした。
ネット上の情報によると、runlevel 5では音質上のメリットは得られないということらしく、目標はrunlevel 3での運用だったので残念だけど、仕方ない。使いながら設定の仕方を模索することにした。

実際のところ、それで音質はどうだったかというと、小音量で時々鳴らす程度だったのではっきりしたことは言えないというのが正直なところ。
少なくともBGMとして流す分には申し分ない。
求めるところはそんなレベルじゃないので、出来れば音量を上げてじっくり聴きこみたかったけど、あれこれするうちに機会がなくなった。
なぜ機会がなくなったかというと、他の問題に対処した結果、runlevel 3で動くようになってしまったから。
現在はそれで動かしていて、なかなかrunlevel 5に戻す機会がない。
比較できれば面白いかもしれない。

他の問題というのは、mpd、ncmpcppの挙動が安定しないということだった。
ncmpcppを操作するとフリーズしてしまう。
次曲に飛ぶ、早送り、cue sheetから選曲する、といった操作で動かなくなってしまう。

mpdの方もクライアントからの信号を受け付けなくなって端末で「netstat -t」とコマンドを打つと止まってる6600ポートがずらずらと表示される。音楽は流れ続けて、止めようがないのだ。
こうなると「kill」も受け付けないので、iBook自体をrebootするしかない。
しかし酷いときはrebootのコマンドを受け付けないのでスイッチを押して終了したり。
こんなでは落ち着いて使えない。

システムが不安定な理由は、「alsa」が安定しないからじゃないかと目星をつけた。
根拠はないのだけど、実は最初にalsa関係はいろいろインストールしたという経緯がある。こうして書いていて思い出したのだけど、mpdをインストールしたあとに動かせなかった期間がずいぶんあった。実はmpdの設定自体を間違っていたんだけど、その間に、何が必要か分からないので兎に角目に付いたものから入れていた。
alsa関連は色々あるので、余分なものもインストールしてしまっていたのだ。

とりあえず、必要最低限と思われる「alsa-lib」と「alsa-lib-devel」以外でいろいろ入ってたのをアンインストールした。もしかしたらalsa-lib-develも要らないのかもしれないけど、置いとく。alsa-toolsとalsa-utilsは、多分動作の邪魔はしてないと想定して置いとく。

そうしたら、RAL-2496UT1をvine linuxが認識しなくなった。
要るものがあったらしい。
「kernel-module-alsa-driver」を再インストールしたら、認識した。

参考リンク。
Advanced Linux Sound Architecture (日本語) - ArchWiki
AlsaProject

結局、alsa-firmware 、alsa-plugins-pulseaudio 、alsa-plugins-usbstream 、bluez-alsa をアンインストールしたら、安定して動作するようになった。
ncmpcppが止まることもない。
ただ、usb出力が44.1kHzから48kHzになってしまった。
ファイルは44.1kHzなのでアップサンプリングしてる。
どうもこれはalsaのデフォルト設定らしく、どこかで変更も出来るらしいということが分かった。

システムが不安定だったときは、iBookの端末でtopを打つとmpdとpulseが表示されてて、それが当たり前なのかと思っていたのだけど、前述の操作をしてシステムが安定した後には、pulseは表示されなくなってしまった。無駄に動いていたらしい。
mpdだけで音声出力しているようで、CPU使用率の半分をmpdが食っている。
これは多分、アップサンプリングしてるのが原因じゃないか?と思っているんだけど。
96kHz/24bitにして出力出来ればいいとか考えたこともあったけど、多分無理だ。

この時点で、ふと思いついてrunlevelを3にしたら問題なく動作した。
RAL-2496UT1にusbデジタル出力している。
何が邪魔してたのかは分からないけど、とりあえず目標に到達したということだ。

iBook G4 vine linux 5.2ppc runlevel 3mpd v0.17.3
Powerbook G4vine linux 5.2ppc runlevel 5ncmpcpp v0.5.10
RAL-2496UT1DD Converter(USB >> TOS)48kHzで動作・SRC2496に出力

とりあえず、今回はここまで。

Posted at 10:03 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,

Vine Mpd ppcについて覚書(4)ncmpcppのインストール

いろいろ忘れてしまうという話のあと間が空いて、やっぱり忘れてる気がするので、やや焦って書いている。
後々何かあったときに役立てばと思うのに、書き忘れてたら役に立たないじゃないか。

今回は、ncmpcppのインストールに際しての覚書き。
当初インストール出来たのはv0.4.1で、最新のv0.5.10は出来なかった。
それがどうやったら出来たのかという話だ。

以前のエントリーで「configure」でうまくいかないことがあれば、実は「configure.log」に記載されている、と書いた。
configure: error: libmpdclient >= 2.1 is required!という表示が出て、makeできない理由について、最初は対処が分からなくてバージョンを下げることでncmpcppをインストールした。本当は「configure.log」に残された失敗の記録を読んで対策を打てばよかったのだ。
で、その対策の内容について徐々に忘れてきてるということだ。
全く、年波には勝てない。
configure.logには以下のようなことが書いてあった。

configure:15321: checking for pkg-config
configure:15339: found /usr/bin/pkg-config
configure:15351: result: /usr/bin/pkg-config
configure:15376: checking pkg-config is at least version 0.9.0
configure:15379: result: yes
configure:15389: checking for libmpdclient
configure:15396: $PKG_CONFIG --exists --print-errors "libmpdclient >= 2.1"
Package libmpdclient was not found in the pkg-config search path.
Perhaps you should add the directory containing `libmpdclient.pc'
to the PKG_CONFIG_PATH environment variable

No package 'libmpdclient' found

libmpdclientが見つからないと。

Perhaps you should add the directory containing `libmpdclient.pc' to the PKG_CONFIG_PATH environment variable
これは「libmpdclient.pc」があるディレクトリのパスを環境変数PKG_CONFIG_PATHに設定したらいいかもよ、って感じの意味らしい。

PKG_CONFIG_PATHの設定はシェルによって使うコマンドが違うということらしく、ちょっと戸惑った。
vine linux ppc の場合は「bash」なので「export」を使う。

export PKG_CONFIG_PATH=/(libmpdclient.pcがあるディレクトリのパス)

これでパスが通ったので、その同じ端末からconfigureする。違う端末を開いてconfigureしようとしても受け付けてくれないらしい。
というわけで、めでたくconfigure成功。
make、make installと順調に進んで、ncmpcpp v0.5.10がインストールできた。

ncmpcppの最新版がインストールできたということは、cueシートに対応できるはずってことだ。
cueシートを使えるようにするには、mpdサーバーのiBookにcueシートを扱えるようにするライブラリをインストールしなくちゃならない。
たしか、↓から落としたと思うけどはっきりしない。
http://mirror.transact.net.au/sourceforge/c/project/cy/cygwin-ports/release-2/libcue/

4月1日追記。
mpd-0.17.3は、独自でcue sheetに対応したらしい。
だから多分、libcueがなくても動作する。
以下、説明にリンク。

https://wiki.archlinux.org/index.php/Music_Player_Daemon/Tips_and_Tricks#Cue_Files

libcueをインストールしてmpdを起動する。
ncmpcppを起動。
uキーを押すとライブラリがアップデートされる。
3キーを押すとブラウザ表示になる。
カーソルキーとenterキーを使って、ディレクトリの階層を辿っていく。
端末の画面に表示される音楽ファイル一覧の下方に、cueシートのファイル一覧が表示された。
カーソルキーでファイルを選択しspaceキーを押してプレイリストに送る。
2キーを押すとプレイリスト表示となる。cueシートに載っている曲がリスト表示されてるので、カーソルキーで曲選択。enterを押すと音楽が再生される。

なかなか良く出来たインターフェイスだと思う。

Ncmpcpp - ArchWiki

とりあえず、今回はここまで。

Posted at 10:00 in audio_diary | WriteBacks (0) | Edit Tagged as: , ,
Page 3 / 31 :  « ‹ Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Next › »