Sep 26, 2018
raspberry piをncmpcppサーバーに仕立ててみた
最近はmpdクライアントが少なくなってきていて、いつだったかiPad用の定番ソフトがアップデートされないというので話題になった。現在もいくつかのソフトが残っているが、昔のようにいろんなソフトから好きなものを選べるという感じではなくなっている。
うちのデジタルオーディオ環境はCDをリッピングした flac + cue sheet が基本なので、mpd + cue sheetに対応したmpd client という手法を捨てられない。数千のアルバム単位のflacファイルを、曲ごとに切り分けるなんて作業は絶対に自分ではしたくない。
そういうわけで、cue sheet対応のncmpcppが使えるのは非常に有難い。開発終了にならないことを祈っている。
今回は、Linux用のクライアントソフトであるncmpcppを、ssh経由でwindowsやmacで使えないかという話だ。
うちでは家族の希望を聞いて、音楽を鳴らすことがある。だから、女房や子供が使うPCからオーディオを操作できたほうがいいんじゃないかという考えは、以前からあるのだ。
ncmpcppはターミナルソフト上でcuiで動くクライアントだ。
cuiと云いながら実際は、ターミナル「画面上」に表現された階層的な空間を、主にショートカットキーと補助的なマウス使用で、移動、選択、決定、指示を打ち込むことで操作するという、下手な文章で書いたらよく分からないけど、かなりgui的な性格を持っている。
個人的には、神憑り的に使いやすいと思っている。
不満といえばライブラリーブラウザが文字表示の一覧表(かなり使いやすいと思っている)で、itunesのようなアートワーク表示ができないことぐらいだ。アートワークを見て聴きたい曲を探すというのができたら、ほんとうに僕にとって完璧なクライアントなんだけど、、、cuiなんだから無理言うなって感じだ。
Fedoraでncmpcppを使っている画面をスクリーンショットしてみた。
これはプレイリスト画面。「1」キーで表示される。

この際なので、いくつかスクショを追記することにした。
以下の画像はFedoraのncmpcppではなく、Fedoraからssh経由で表示したraspbianのncmpcppのスクショだ。
下は、ブラウザ画面。「2」キーで表示。
mpdは、musicディレクトリがそのまま階層化されたライブラリになるんだけど、それがそのままブラウザ表示される。カーソルキーとショートカットキーでディレクトリを移動しスペースキーでプレイリストに追加する。慣れれば快適だ。

次は検索画面。「3」キーで表示。
タグやファイル名から検索する。日本語も検索できる。

最後はヘルプ画面。「f1」キーで表示。非常に細かい。
普段、音楽を聴くだけなら、そんなにたくさんのキーは使わないんだけど、ちょっと目がまわる感じだ。

ちょっと気になることがあって追記。
ヘルプ表示を下方にスクロールしていくと以下のような記載がある。
Keys - Browser Delete : Delete selected items from disk
ブラウザ表示の時に、何か音源等を選択して「delete」キーを押すと、ディスクから削除されるらしい。
じゃあ、実際やってみたら削除されるのかというとそういうことはなくて、代わりに下記のような一文が表示される。
Flag "allow_for_physical_item_deletion" needs to be enabled in configuration file
設定ファイルで設定しないと使えない機能ということだ。
逆に言えば、設定してしまえば、使えてしまう機能というわけで、さすがに[yes/no]は表示されるんじゃないかと思うんだけど、注意して使いましょうね、という感じ。
最初は、ncmpcppそのものをwindowsやmacにインストールできないかと考えていた。だけど、ncmpcppはlinuxのソフトなわけで、windowsやmacではインストールする環境を作ることから大変なのだ。
どうしようかと思っていたんだけど、先日ふと、macやwindowsからsshを使って、ncmpcppが動くlinuxにログインしたら、macやwindowsでncmpcppを使えるってことにならないか、と気が付いた。
うちではノートパソコン2台にlinux(Fedora)をインストールしていて、日常の使用とかncmpcppの運用に使っている。試しにこれらのlinux機2台で、sshによるncmpcpp共用を試みたところ、全く問題なく違和感なく使うことができた。
次にうちにあるwindows機、mac機から、sshでFedora機にログイン。ncmpcppを起動。表示に使われるフォントの違いによるものか、受ける印象は多少異なるものの、問題なく使用できた。
これでいいじゃん、と思ったんだけど考えてみると、うちだとこれでいいけど、一般的には簡単にncmpcppを動かせるlinux機が置いてある家庭は少ない。しかし、部屋のすみに転がって埃を被ってるraspberry piを使ったら簡単に出来るんじゃね?というのを思い付いた。
この際、うちでもやってみよう、ということだ。
下図のようなイメージ。

mpdとクライアントを同じサーバー機にインストールするというのはよくあるし、操作端末にクライアントをインストールして使うというのもあるけど、敢えてmpdと操作端末の間にクライアントを設置するというのは、あんまり見ない気がする。
使用したのは、Raspberry pi B+。本当に使わずに放置されていた機体だ。
まず、piCoreで出来ないか試したけど、これが意外にncmpcppのインストール自体が面倒で却下。
ncmpcppのサイトには「Most of the popular Linux/*BSD distributions have ncmpcpp in their repositories, 」と書いてあるんだけど、piCoreのtczには登録されていない。
raspbianでどうか。
これが簡単にncmpcppサーバーになってくれる。
リポジトリにncmpcppがあるので「apt-get install ncmpcpp」とコマンドを打つだけでインストールできて、あとはconfigファイル、bindingsファイルで設定したら使えるようになる。バージョンもncmpcpp 0.7.4なので比較的新しい。
ちなみにFedoraのリポジトリにあるのはncmpcpp 0.8.2で最新だ。Fedoraはラズパイでも動くらしんだけど、これはこれで大変そうなので今回はやめている。Cent OSだと0.5あたりだったか、、、かなり古いバージョンだったと記憶する。それで普段使いをFedoraにしたという経緯がある。
今回、ncmpcpp専用機をraspbianで仕立てたけど、mpdが動いているラズパイにncmpcppをインストールしてしまうという手もある。しかしうちでmpdが動いているのはpiCoreで、ncmpcppのインストールが手軽にとはいかない。それにmpdサーバー機に余計な負担は要らないだろうというので、別にした。
Raspbianでのncmpcppインストール、設定のしかたについて、簡単に記載しておく。
まず、raspbianを設定。
raspbian stretchをダウンロード。microSDに書き込んで、bootディレクトリにsshファイルを作る。
ラズパイに刺して起動。
ipアドレスを確認しsshでログイン。ユーザーは「pi」、パスワードは「raspberry」。
コマンド「sudo raspi-config」で初期設定。
いろいろ設定するけど、ここでは多くは説明しない。ラズパイの解説サイトを参考にして欲しい。
さて、設定ができたら、ncmpcppをインストールする。
「apt-get install ncmpcpp」とコマンドを打ったら、文字がぞろぞろ表示される。
程なくインストール終了。
次に「man ncmpcpp」と打つとncmpcppのマニュアルが表示され、設定をどうしたら良いか書いてある、、、
けど、けっこう読むのは面倒だ。
ユーザーのホームディレクトリ(今回の場合、piディレクトリ)に.ncmpcppディレクトリをつくり、そこにconfigファイルとbindingsファイル、2つの設定ファイルを置く。ファイルの原本がどこにあるかは「man ncmpcpp」と打ったときに表示されるマニュアルに記載されている。一般的には「/usr/share/doc/ncmpcpp」にあるので、これを持ってきて使えばいい。
追記。Github上にある設定ファイルはこちら。
https://github.com/arybczak/ncmpcpp/blob/master/doc/config
https://github.com/arybczak/ncmpcpp/blob/master/doc/bindings
経験的には、ncmpcppのバージョンによって設定項目が違うこともあるようで、合ってないようならエラー表示されて起動しないということがある。そういうときはエラー表示の内容に沿ってconfigファイルを直せば問題なく使える。と思う。
その設定内容なんだけど、何十項目もあって、ちょっと僕自身が把握しきれていない。画面のカスタマイズをする項目もあって、昔に多少いじったこともあるんだけど、すっかり忘れてしまった。
しかし、絶対に設定しなくてはいけない項目は意外に少ない。それ以外はデフォルトのままでも使えてしまう。
configファイルで設定しておくのは、
mpd_host = "192.168.1.xxx"
mpdサーバーのip アドレス。
これだけは必ず設定しておかないと、mpdとncmpcppがつながらない。
各自の環境に合わせてアドレスを設定する。
あとは、タグエディターを使用したかったら設定しておかないといけない項目とかあるんだけど省略。僕はタグの管理は他のソフトで行っているのでよく知らないのだ。
Bindingsファイルではキーボードショートカットを設定できる。デフォルトのままで気に入らない場合は、ここで設定変更してしまえばいい。
僕の場合、「back space」キーで曲再生がリプレイするのが気に入らなかったので「t」に変更してある。
# #def_key "backspace" # jump_to_parent_directory # #def_key "backspace" # replay_song #
デフォルトはこんな感じ。コメントアウトされているけど、ブラウザ画面で上位ディレクトリへの移動、プレイリスト画面でリプレイが設定されている。
この下に、下記の4行を書き加える。
def_key "backspace" jump_to_parent_directory def_key "t" replay_song
こんな感じ。これでリプレイを「t」キーに設定できる。
他には「f1」キーでヘルプ表示なんだけど、これがFedoraの端末ソフトのヘルプ表示と競合したので(これもf1キーでヘルプ表示の設定)、ターミナルのほうの設定を変えている。それができないようなら、ncmpcppのほうの設定を変えることになっていたかな。
これで「ncmpcpp」とコマンドを打てば起動する。
設定が正しければ、使いたいmpdの状態が反映された画面が表示されるはずだ。
windows7にsshソフトをインストールしてラズパイにログイン。「ncmpcpp」とコマンドを打った画面が以下。
ちょっとレガシー感あるけど、フォントの設定とか変えたらかっこよくできるんじゃないかな、どうだろう。
見てくれは兎も角、ちゃんと使える。
MacだともっとFedoraの画面に近くなるのだけど、スクショは省略。

9月30日、追記。Macについて。
使えるのは使えるけど、よく見たら「back space」キーがない。
Macの「delete」キーが、通常の「back space」として機能する。「delete」の機能は「fn + delete」で代替する。これはMacの約束事らしい。数十年、Macとwindowsを触ってきて、初めて気付いた。
これは紛らわしいので、他のキーに設定してしまうのもありかもしれない。
もうひとつ、「f1」キーでヘルプ表示が機能しない。
アップルは最新型でfキーを廃止したり、ノーマリゼーションというものを甘く見てるようだ。
これはbindingsファイルで使えるキーに設定しないと、慣れないうちは使いにくい。
幸い「h」キーが空いているので、下記を書き加えて設定した。これでMacでもヘルプ表示できるようになる。
def_key "h" show_help
mac、windowsで使えるのは確認したが、iPadのような端末でどうなのかは試していない。うちには今どきタブレット端末がないのだ。android携帯にsshソフト(JuiceSSH)をインストールして、使えるかどうか試してみた。
現在は使えているが、最初は下記のようなエラーが表示された。
pi@raspberrypi:~ $ ncmpcpp Reading configuration from /home/pi/.ncmpcpp/config... Terminal doesn't support window title, skipping 'enable_window_title'.
「enable_window_title」というのはncmpcppのconfigファイルに記載されている設定で、デフォルトは「yes」。端末ソフトのウィンドウのタイトルバーに「ncmpcpp 0.7.4」と表示するかどうかの設定だ。androidのsshソフトにウィンドウタイトルがないから、こういうことになったらしい。
設定を「no」にしたら動くかというと、エラー表示されないまま止まってしまう。
繰り返しログイン、ログアウトするうちにncmpcppの操作画面が表示された。
これで使えるかと思ったんだけど、表示されただけでキーボードからの指示を受け付けない。ソフトウェアキーボードだからかどうかは、はっきりしない。
実際のところ、ncmpcppの操作はほとんどキーボードで行う。キーのひとつひとつに役割が振られていて、例えば「p」は一時停止、「r」はリピート、「s」は停止、「y」は1曲のみ再生などなど。ライブラリの階層移動や曲の選択もキーボード操作で行うので、キーボードに反応しないのでは使えない。
あんまり無理はしないほうが良さそうだ。
とか思っていたら、数日後に試みたら使えるようになっていた。
何が良くて何が悪かったのか、分からないままだ。
Android操作画面のスクリーンショットをアップしておく。


問題なく動くのかといったら、ひょっと何かの拍子に画面表示が不安定になる。
他の画面に切り替わった後で、戻したら曲順が正確に表示されていないとか不具合が生じる様子。
上の2つ目の図がそのスクリーンショット。一旦「exit」して、再度「ncmpcpp」を打ったら正常に戻る。扱いには注意がいるようだ。
使えるけど画面が狭いので不便だ。もっと画面が大きいタブレットだったら違うかな、、、
あとソフトキーボードに「delete」キーがない。これはデフォルトではプレイリスト上で選択した曲を削除するキーなので、使えないのは痛い。bindingsファイルで、使えるキーに設定したらいいかな。「d」あたりがいいのかな。
こんなのできるようにしたよ、と女房に言ったら「誰が使うの?」と言われてしまった。
大丈夫、想定内だ。
wikieditish message: Ready to edit this entry.
A quick preview will be rendered here when you click "Preview" button.