Current filter: »mpc« (Click tag to exclude it or click a conjunction to switch them.)
May 04, 2021
mpdでCD再生に対応する(2022.03.29./.08.16./2025.04.08. 追記)
今回は備忘録。
うちのメインシステムにはCDプレーヤーがない。
でも、リッピングする前に聴きたいと思うこともある。そこを何とか出来ないかということ。
参考にした記事はこちら。
海上忍のラズパイ・オーディオ通信(10)ラズパイ・オーディオで音楽CDのダイレクト再生に挑戦!果たして使い物になるか?
https://www.phileweb.com/review/article/201602/12/1965.html
この記事にもあるけど、トラックの選曲が出来ないのでリッピングしたほうが便利に使えるしCDドライブがうるさいので、限局的な使用に留まるだろうとは思った。けどまあ、使えるようにしたよ、ということで。これはこれで楽しい。
今はテスト環境で運用中。
sshでサーバにログインし「mpc」でCDをmpdのプレイリストに登録して鳴らしている。CDからmpdが768kHzにアップサンプリングし、PPAPでメインシステムに送る。
リップしたファイルより音がいい?
これは、多分に気のせいだと思う。ブラインドでは区別不能だ。
手順をごく簡単に書いておく。Googleにアップしたアップサンプリングサーバーを加工する。
まず、tceでCD関係のtcz、以下をインストール。
libcdio.tcz libcdio-dev.tcz libcdio-paranoia.tcz libcdio-paranoia-dev.tcz
続いて、mpdを再インストールする必要がある。
mpdがcdio-paranoiaに対応していないからだ
tc@box:~$ mpd -V Music Player Daemon 0.20.20 Protocols: file:// http:// https:// alsa://
まず、インストールされているのをアンインストールする。
/mnt/sda1/tce/optional にあるmpd関係を削除。
続いて、/mnt/sda1/tce/onboot.lstのmpdの記載を#でコメントアウト(今回、行削除せずコメントアウトでも問題ないことを確認した)。
これで再インストール行程に入れる。
sudo ntpclient -s -c 1 -h ntp.nict.jp wget https://www.musicpd.org/download/mpd/0.20/mpd-0.20.20.tar.xz xz -dv mpd-0.20* tar -xf mpd-0.20* ls cd mpd-0.20* ./configure --enable-pipe-output --enable-cdio_paranoia-input make mkdir ../mpd sudo make DESTDIR=../mpd install cd mksquashfs mpd mpd-0.20.20.tcz md5sum mpd-0.20.20.tcz > mpd-0.20.20.tcz.md5.txt sudo mv *tcz* /mnt/*1/tce/optional sudo vi /mnt/*1/tce/onboot.lst sudo rm -rf mpd*
これで、mpdがCD-DAに対応。
tc@box:~$ mpd -V Music Player Daemon 0.20.20 Protocols: file:// http:// https:// cdda:// alsa://
.mpdconfにcd入力対応の設定したのを書き忘れていたので追記。
下記記載している。
input { plugin "cdio_paranoia" speed "1" }
2022.03.29. 追記。
上記の設定だと、ときにCDの読み込みが間に合わず音が途切れる。
speed "4" ぐらいにしておいた方がいいようだ。音質への影響はないように思う。
2022.08.16. 追記。
音が途切れるのはスピードの問題ではないようだ。
ドライブが正確に読み取れていないかもしれないと判断した時に、再読み込みを行うかどうかを設定できるようなんだけど、デフォルトはどうやら、しっかり読み込む設定になっているようで、繰り返し読み込むことで、音が途切れるらしい。
下記のように設定を書き換えたら、音が途切れなくなった。
input { plugin "cdio_paranoia" speed "4" ## mode "overlap" mode "disable" }
overlapという設定も出来るけど、これでも音が途切れる。読み込み速度を例えば32倍など設定し早くしても、再読み込みするほうが時間がかかるものらしい。
参考にmpdのマニュアルのアドレスと引用。
Music Player Daemon 0.24~git documentation » Plugin reference
cdio_paranoia
https://mpd.readthedocs.io/en/latest/plugins.html#cdio-paranoia
Setting
Description
default_byte_order little_endian|big_endian
If the CD drive does not specify a byte order, MPD assumes it is the CPU’s native byte order. This setting allows overriding this.
speed N
Request CDParanoia cap the extraction speed to Nx normal CD audio rotation speed, keeping the drive quiet.
mode disable|overlap|full
Set the paranoia mode; disable means no fixups, overlap performs overlapped reads, and full enables all options.
skip yes|no
If set to no, then never skip failed reads.
2025.04.08. 追記。
今更の追記になるが、音が途切れる原因は cdio_paranoia の設定ではなく、audio_buffer_size、buffer_before_play の問題と判明した。これらの現在の設定は下記の通り。環境によって調整が必要な可能性がある。
audio_output_format "384000:32:2" audio_buffer_size "32768" buffer_before_play "75%" input { plugin "cdio_paranoia" speed "4" ## mode "overlap" mode "disable" skip "yes" }
操作は「mpc」から行う必要があるので、インストール。
当初は最新のバージョン0.33をインストールしようとしたが、例によってmesonを使うので慣れないので0.28にした。
wget https://www.musicpd.org/download/mpc/0/mpc-0.28.tar.xz xz -dv mpc* tar -xf mpc-0.28* cd mpc-0.28 ls ./configure make mkdir ../mpc sudo make DESTDIR=../mpc install cd mksquashfs mpc mpc-0.28.tcz md5sum mpc-0.28.tcz > mpc-0.28.tcz.md5.txt sudo mv *tcz* /mnt/*1/tce/optional sudo vi /mnt/*1/tce/onboot.lst sudo rm -rf mpc*
これでインストール完了。
使うには、CDドライブを表すデバイスファイルのパーミッション変更が必要とのこと。
/opt/bootlocal.sh にコマンド追記し、OS起動時に変更するように設定しておく。
sudo vi /opt/bootlocal.sh chmod 666 /dev/sr0 filetool.sh -b sudo reboot
設定保存し、再起動。これでCDから音を出すことができる。
CDドライブが2つ以上ある時はどうなるかは検証していない。
CDをドライブにセットしsshから「mpc add cdda://」と打つことで、CDをmpdのプレイリストに登録。
続いて「mpc play」で、音が出る。
CD1枚が1つのファイルとして認識されるので不便だけど、通しで聴くとか、それでもいいならという感じ。
音量調整や再生停止程度のことはmpcで出来る。「mpc volume 70」「mpc stop」こんな感じ。
下記、操作説明書のアドレス。
mpc 0.34 documentation
https://www.musicpd.org/doc/mpc/html/
Mar 13, 2017
mpdからmpdにflacをHTTPストリーミング機能で配信する
前回、mpdをhttpサーバーにしてflacをストリーミングするというエントリーを上げた。
vlcかmplayerじゃないと聴けないみたいと書いたんだけど、mpdでストリーミングを受けることができた。
内容は薄いので前エントリーへの追記で済まそうかとも考えたけど、新規にした。
使用したのは、サーバーに日常使いのhp 6730b Fedora25にインストールしたmpd。
レンダラーはraspberry pi2にインストールしたMoode Audio。
Moode Audioは384kHzへのアップサンプリング出力をi2sDACに送ることが可能。最近これにlibsamplerateをインストールしてBGM用に使っている。ちゃんと音質を確認したわけでは無いけど、いい感じじゃないかな。
普段はNASをマウントして使っているんだけど、httpストリーミングではどうかという考えもあった。
まず普段使いの6730bの、.mpdconfを設定。
audio_output { type "httpd" name "My HTTP Stream" encoder "flac" # optional, vorbis or lame # port "8000" # bind_to_address "0.0.0.0" # 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 }
こんな感じで。
ちなみに"flac"が"wave"だと上手くいかなかった。もとのファイルがflacだからなのかどうか分からないが。
操作は普通にmpdクライアントから行う。
次にレンダラー。
参考にしたのは下記、Arch Linuxのサイトの説明。
https://wiki.archlinuxjp.org/index.php/Icecast_%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0#MPD
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
使うのは、既にインストールされている「mpc」。
これはcuiモードで使用するクライアント。
当初はpiCore7でやろうと思ったんだけど、考えてみたらmpcをインストールしていない。
そこでインストールというのも面倒になってraspbianの使用も考えたけど、ありもののMoodeを使うことにした。
Moode Audioにsshでログイン。ユーザーはpi、パスはraspberry。
サーバーの6730bを操作してストリーミングを開始しておく。
Moode Audioのsshに戻って以下のコマンドを打つと数秒待って音が出始める。
mpc add http://192.168.1.24:8000/mpd.flac | mpc play
http://192.168.1.24 というのは6730bのアドレス。8000はポート番号で変更設定していなければこれで固定。
「mpc add http://192.168.1.24:8000/mpd.flac」だけだと、ストリーミングがmpdのplaylistに登録されるだけで音はでない。
パイプ「|」を使って「mpc play」を追加することで、再生される。
「mpc play」を続けて打っても別に構わないんだけど、1行のコマンドで済む方がいいよね。
ちなみにmpcのマニュアルは「man mpc」でも読めるけど以下のリンクにもある。
https://linux.die.net/man/1/mpc
マニュアルを読んで、今回初めて上手く使えたように思う。
要するに普段使っているncmpcppでしていることをコマンドでやるソフトということ。
ncmpcppは端末上で動くけど、実際の操作感覚はかなりguiな感じで、マウスも時には使ってみたりと感覚的に使える。
mpcはそれを剥ぎ取った感じで、すべてcuiだ。mpcを使いやすくしたのがncmpcppという感じだ。ncmpcppはマニュアルを熟読しなくても使える。まあ、操作キーの確認ぐらいは必要だけど。
さて、音はめでたく出たのだけど、音が出るまで数秒以上かかるのと、どうも安定しない。
ぽつぽつ途切れる感じだし音色もよくない。
top画面で見た限りでは、Moodeの負担が増えたようにも見えないんだけど、どこかで上手くいかないんだろう。
結局、Moodeの設定でアップサンプリングを止めたら解消した。
コマンドを打つとすぐに音が出るし(出音の直後は少しだけ不安定だけど)、途切れるような感じもない。
音質の比較はしていないけど、まあ、現時点ですごく良くなったという驚きは感じない。普通にいい音だね、といいう感じだ。
upnpでは普通にアップサンプリング出来ていたのでそういうものだと思っていたんだけど、httpストリーミング受信では勝手が違うらしい。upmpdcliのような連携して補助するソフトの有無によるのかな。
以上、備忘録。