Aug 28, 2016
mpd + SoXによるアップコンバートについて (Ras pi2用のpiCore7にはmpdのインストールが簡単にできる - 追記あり)
Ras pi 2 + piCore7 + mpd + libsamplerateによるメモリ再生をメインシステムとして使い始めて(と言いながらRas pi B+ + Volumioも普段使いに併用してるけど)、アップサンプリングは微妙なものだということに初めて気付いた。
デジタルだからある程度は正確なのかな、融通きくのかな、という先入観があったのだけど、意外と注意がいるもんなんだな、みだりに上げ下げしちゃいけないんだな、という感じ。
libsamplerateは http://tinycorelinux.net/7.x/armv7/tcz/ ここから簡単にRas pi2用のpiCore7にインストールできるのだけど、よく見たら、soxr.tcz、sox.tcz というのも用意されている。
用意されてるから動くとは限らないが、やってみても損はない。
SoXについては、本家のサイトなどを読んでみようとしたんだけど、よく分からない。
SoX - Sound eXchange
| HomePage http://sox.sourceforge.net/Main/HomePage
| Resampling http://sox.sourceforge.net/SoX/Resampling
| FAQ http://sox.sourceforge.net/Docs/FAQ
| Documentation http://sox.sourceforge.net/Docs/Documentation
https://sourceforge.net/p/soxr/wiki/Home/
http://src.infinitewave.ca/
ここでは、コンバーターの比較をしてるようなんだけど、見方が分からない、、、
lightMPDで採用されてて、libsamplerateよりも軽くて音がいいらしいということなので、どういう仕組みなんだろうというのは興味があるのだけど、英語に弱いというのもあって、どこに何が書いてあるのかよく分からないのだ。
とりあえずpiCore7にインストールしてやってみよう。
早速問題が。
http://git.musicpd.org/cgit/master/mpd.git/plain/NEWS?h=v0.19
>ver 0.19 (2014/10/10)
>* new resampler option using libsoxr
つまり、mpd ver 0.19以上じゃないとSoXが使えない。
piCore7に0.19はインストールできない。 http://blown-lei.net/endive/blosxom.cgi/audio_diary/20160602a.htm
piCore7は止めて、Raspbianでやるか、、、
RaspbianはDebianでVolumioだし、たぶんいけるだろう。
でも、前に試みてから3ヶ月になる。piCoreの中の人ががんばっていればなんとかなってるかもしれない。Ras pi B+用ではダメだがRas pi2用だったらいけるという可能性もある。とりあえずはpiCore7でやれないかどうか確かめる。
Raspberry pi2用piCore7のファイルイメージをこちらから落す。
http://tinycorelinux.net/7.x/armv7/releases/RPi2/
microSDに焼いて設定を書き込んで、Ras pi2に刺して起動。イメージの拡張、アドレス設定、各種インストールしていく。
何がtczに用意されているかは、ここを参考に。http://tinycorelinux.net/7.x/armv7/tcz/
ときにバージョンアップされてファイル名が変わってることがある。
さて、SoXだ。
tce-load -wi sox-dev.tcz sox-doc.tcz soxr-dev.tcz soxr-doc.tcz soxr.tcz sox.tcz
こんなコマンドでいいか?と思ったら、以下のような感じでインストールが始まった。
sox-dev.tcz.dep OK sox.tcz.dep OK libao.tcz.dep OK twolame.tcz.dep OK libsndfile.tcz.dep OK flac.tcz.dep OK libvorbis.tcz.dep OK lame-dev.tcz.dep OK libao-dev.tcz.dep OK libid3tag-dev.tcz.dep OK libmad-dev.tcz.dep OK libpng-dev.tcz.dep OK opencore-amr-dev.tcz.dep OK twolame-dev.tcz.dep OK libsndfile-dev.tcz.dep OK flac-dev.tcz.dep OK libogg-dev.tcz.dep OK libvorbis-dev.tcz.dep OK sqlite3-dev.tcz.dep OK wavpack-dev.tcz.dep OK
lameとかうちでは要らない気がするんですけど。まあ、いいや、任せよう。
mpdのインストール、できるだろうか。
tce-load -wi mpd-doc.tcz mpd.tcz libmpdclient.tcz libmpdclient-dev.tcz libmpdclient-doc.tcz Downloading: mpd-doc.tcz mpd.tcz.dep OK Connecting to repo.tinycorelinux.net (89.22.99.37:80) curl.tcz.dep OK mpd-doc.tcz 100% |***********************************************************************| 36864 0:00:00 ETA mpd-doc.tcz: OK libavformat.tcz.dep OK gnutls.tcz.dep OK nettle.tcz.dep OK p11-kit.tcz.dep OK libavcodec.tcz.dep OK celt.tcz.dep OK libswresample.tcz.dep OK libtheora.tcz.dep OK libwebp.tcz.dep OK libtiff.tcz.dep OK schroedinger.tcz.dep OK speex.tcz.dep OK mpg123.tcz.dep OK pulseaudio.tcz.dep OK dbus.tcz.dep OK Xorg-7.7-lib.tcz.dep OK fontconfig.tcz.dep OK freetype.tcz.dep OK harfbuzz.tcz.dep OK jack.tcz.dep OK libsamplerate.tcz.dep OK libcap.tcz.dep OK libudev.tcz.dep OK samba4-lib.tcz.dep OK acl.tcz.dep OK python.tcz.dep OK readline.tcz.dep OK Downloading: talloc.tcz libmpdclient-dev.tcz.dep OK
これ全部いるんだろうか。
なんか、今回は使うつもりがないlibsamplerateとかも落ちてきてるんですけど。
最小限のシステムでいいんだけどな、、、
tc@box:~$ mpd -V Music Player Daemon 0.19.9 Copyright (C) 2003-2007 Warren DukesCopyright (C) 2008-2014 Max Kellermann This is free software; see the source for copying conditions. There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Database plugins: simple proxy Storage plugins: local smbclient Neighbor plugins: smbclient Decoders plugins: [mad] mp3 mp2 [mpg123] mp3 [vorbis] ogg oga [oggflac] ogg oga [flac] flac [opus] opus ogg oga [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2 [dsdiff] dff [dsf] dsf [faad] aac [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg opus psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve [pcm] Output plugins: null fifo alsa ao oss pulse jack httpd recorder Encoder plugins: null vorbis opus lame twolame wave flac Archive plugins: [bz2] bz2 Input plugins: file alsa archive curl ffmpeg smbclient Playlist plugins: extm3u m3u pls xspf asx rss cue embcue Protocols: file:// http:// https:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps:// smb:// alsa://
なんと、目出度くMusic Player Daemon 0.19.9のインストールができてしまった。しかしなんか、豪勢なシステムが出来てしまった。まるでVolumioだ。
これってメモリ再生に適してるの?
ちなみに、今迄うちでメモリ再生に使ってきているmpdはこんな感じ。
tc@box:~$ mpd -V mpd (MPD: Music Player Daemon) 0.17.6 Copyright (C) 2003-2007 Warren DukesCopyright (C) 2008-2012 Max Kellermann This is free software; see the source for copying conditions. There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Decoders plugins: [vorbis] ogg oga [oggflac] ogg oga [flac] flac [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2 [dsdiff] dff [dsf] dsf [pcm] Output plugins: null fifo alsa oss httpd recorder Encoder plugins: null vorbis wave flac Input plugins: file Playlist plugins: extm3u m3u xspf pls asx rss cue cue Protocols: file://
こっちのほうがだいぶシンプルだ。
でも、これでSoXで音が出せるかな。
こちらのサイト(http://tatsumi.audio-asc.co.jp/article/425494296.html)を参考に、.mpdconfを設定。
とりあえず、
samplerate_converter "soxr very high"
に設定。
ネット上には、OpenMPは複数のCPU(複数コアを含む)を持った計算機上での並列化に威力を発揮する、とあり、pi2は4coreなので、設定しといたほうがいいんじゃないかと思うけど、どうやらOpenMPをインストールしないといけないらしく、今のところはやめておく。
他、設定はlibsamplerateのほうと同じ。
audio_buffer_size "4096"
buffer_before_play "25%"
audio_output_format "176400:16:2"
音はちゃんと出ました。
ちょっと聴いただけだが、なるほど、SoXとlibsamplerateでは違いはありそう。といっても他の条件があれやこれやと違うんだけど。
現時点では、libsamplerateのほうが耳に優しい音がする感じだ。
SoXのほうが刺激が強い。システムをもっとシンプルにシェイプアップしたらどうなるか、mpdのバージョンによってどう違うのか(libsamplerateのほうはmpd 0.17.6だ)、試みる時間があればやってみたいけど、いつになるかは分からない。
ちなみにtopで確認したら、SoXでは%CPUが4%台。libsamplerateでは20%台になる。
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1520 1 tc S 135m 14.6 0 4.5 mpd PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1414 1 tc S 62272 6.5 0 25.1 mpd
仮想メモリの数値が違う(SoXのほうがlibsamplerateの倍)のも謎なんだけど、そこで何かしてるんだろう。
追記。
今回作ったシステムにはlibsamplerateもインストールされているということは、同じシステムで音の違いを比べることができるじゃないかということに後から気づいた。
いろいろ比較はまた、余裕があるときに気が向いたらしようかと思う。
9月1日、追記。
Raspberry pi2を2台で運用しようとしたら動作が不安定になってきた。
mediumの設定でアップサンプリングが出来なくなり、ついにはpiCore7が落ちた。
確認したらras pi2の赤いLEDが消えている。
usb電源周りの不具合ということ。
過去にRaspberry pi B+を2台で運用していたときは、サンワサプライのUSB-HSM410Wで問題なく動作していた。
https://www.sanwa.co.jp/product/syohin.asp?code=USB-HSM410W
これはスイッチが付いていたりして扱いやすかったけど供給電流は最大2A。
pi2を2台だと供給し切れない。
そこでusb電源をサンワダイレクトの700-AC011Wに変更した。アマゾンから買ったので型番は700-AC011WAZなのだけど。
http://direct.sanwa.co.jp/ItemPage/700-AC011W
これだと10Aを給電できるので問題なく動く。
給電が安定したら、音も安定した気がする。
mpd 0.19,19のインストールをソースからコンパイルでやってみたらどうだろうと思ってやってみた。
wget https://www.musicpd.org/download/mpd/0.19/mpd-0.19.19.tar.gz
boostとかlibid3tagとか、何かが足りないとconfigureやmakeでエラーになるので適宜、足りないものを追加しながら、、、
tc@box:~$ tce-load -wi boost-dev.tcz boost.tcz
tc@box:~$ tce-load -wi soxr.tcz sox.tcz soxr-dev.tcz sox-dev.tcz
tc@box:~$ tce-load -wi libid3tag-dev.tcz
あれこれ追加を繰り返し、ようやく動いた。
tce-load -wiでmpdをインストールした時よりも使用してる仮想メモリが半分近くに減っている。
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1317 1 tc S 85724 9.0 0 4.3 mpd
mpd -Vはこんな感じ。
tc@box:~$ mpd -V Music Player Daemon 0.19.19 Copyright (C) 2003-2007 Warren DukesCopyright (C) 2008-2014 Max Kellermann This is free software; see the source for copying conditions. There is NO warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Database plugins: simple Storage plugins: local Decoders plugins: [mad] mp3 mp2 [vorbis] ogg oga [oggflac] ogg oga [flac] flac [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2 [dsdiff] dff [dsf] dsf [pcm] Output plugins: null fifo alsa ao oss httpd recorder Encoder plugins: null vorbis lame twolame wave flac Archive plugins: [bz2] bz2 Input plugins: file alsa archive Playlist plugins: extm3u m3u pls cue embcue Protocols: file:// alsa://
軽ければいいとばかりは言えないけど、すっきりしてるほうが好きなら気休めにはなるかもしれない。
wikieditish message: Ready to edit this entry.
A quick preview will be rendered here when you click "Preview" button.