symphonic-mpdユーザーのためのLinux初心者講座 やっと其の三
予定では、今回が最後です。
今後の流れによっては、一部ユーザー向けの番外編を書くかもしれませんが...
今日現在(12/4)のsymphonic-mpd最新バージョン(v0.3.12)ならば、ユーザー自身がプラグイン機能の記述をいじっていなければ、こういう風にプルダウンメニューは見えているはずです。
このメニューの内、この部分...
この赤枠をつけた部分が、v0.3.10から新たに加わった「プラグイン機能」を利用するためのメニューです。
今回は、この部分をいじるだけでなく、symphonic-mpdの掲示板で新たに投下された“UPDATE THIS FOLDER”というプラグイン機能をsymphonic-mpdに付加し、その機能を呼び出すメニューをプルダウンメニューに追加するという作業までを見ていきます。
UuuuuuuH!!! Everybody! Clap Your Hands!!!
(って、何のアニメだよ!)
まず大前提として、使っているsymphonic-mpdのバージョンがv0.3.12以上である必要があります。
で、掲示板での説明にあるとおり、まず“update_folder.html”を作らにゃならんのですが、「いきなりhtmlかよ」と、かなり面食らった人もおられると思います。
エェ、私がその一人ですw
で、これから、私がやったことを、まんま書いていきたいと思います。
まず、使ったツールは、例によって例のごとく“nano”。
sshログイン後、何も考えずに、こう打ち込んでやります...
pi@smpddc:~ $ sudo nano /home/pi/plugins/update_folder.html
緑色と青色の“pi@smpddc:~ $”の部分は無視していただいて、それ以降の部分を素直にコピー・ペーストするなり、コイツを見ながら手打ちするなりして、入力してください。
enterキーを押せば、ヘッダーに“/home/pi/plugins/update_folder.html”と表示された“nano”の入力画面が広がっているはずです。
この段階では、画面は真っ白け!
なにせ“/home/pi/plugins/”ディレクトリーには、まだ“update_folder.html”なんて書類はありませんから。
これを今から、自力で作成しなければなりません。
とは言っても、何も難しいことではありません。
以下の内容を、そのまんまコピーして、“nano”の空白の画面上でペーストして下さい。
<form>
<input id="library_update_target" class="form-control" type="text" name="param" value="" />
<script>
$(function(){
$("#library_update_target").val(browsepath);
});
</script>
</form>
“<”から“>”までの間は、一行です。
で、こうなるはずです...
ペーストし終わったら...
ctrlキー + oキーを押して、enterキーを押します。
これで“update_folder.html”という書類が“/home/pi/plugins/”の中に作られました。
ctrlキー + xキーを押して、“nano”を終了します。
<与太話>
いきなり“/home/pi/plugins/”に“update_folder.html”を作るんだァ〜!と書きましたが、実はこの書類、ココになくても大丈夫です。
例えば一番上の階層に“/update_folder.html”と作っても全然大丈夫です。
実際、私の一台は、それで動いています。
しかし、プラグイン定義を記述している“.plugin.jison”ファイルも“/home/pi/plugins/”内にあるのですから、プラグイン機能関連はこのディレクトリーに置いておこうという私の勝手な方針で、今回はこういう内容になっています。
</与太話>
で、ここからがチョットだけ正念場です!
掲示板の説明には「/var/lib/mpd/music/以下にシンボリックリンクを貼る」と書いてあります。
私、この部分を読んで、膝から崩れ落ちそうになりました(T_T)
だって、シンボリックリンクって言葉さえ知らなかったのですから...
ましてや「シンボリックリンクを貼る」方法なんて知りません。
で、「Linux シンボリックリンク」で検索して、調べていったわけです。
実はこの経験が、ブログで「symphonic-mpdユーザーのためのLinux初心者講座」を書こうと、私を思い立たせることになりました。
だってぇ〜、PCアレルギーな人は、ぜってぇ〜にこんな内容を読んだら、素直に諦めますよ、普通...
(私は少々諦めが悪いのと、プラグイン機能には大変に期待していることがあるから頑張りましたけどさ)
シンボリックリンクについてもっと知りたい人は...
を読んでください。
(簡単に言えば、Windowsの「ショートカット」、Macの「エイリアス」のような機能です。しかし、それらよりも実はもっと便利!このシンボリックリンクはWindowsやMacでも使えます。Windowsならば「Windowsでシンボリックリンクを作る」が、Macでは「[Mac] OS Xでシンボリックリンクを作成してみよう!」あたりが分かりやすいんじゃないでしょうか)
さて、実際に“/home/pi/plugins/”にある“update_folder.html”のシンボリックリンクを、説明にあるように“/var/lib/mpd/music/”以下に作ってみましょう。
文法的には...
ln -s [シンボリックリンクを作成したいファイルのパス] [シンボリックリンクを置くフォルダのパス]
という構文になります。
もうPCアレルギーの人は、わっけ分かんないですよねぇ〜w
今回の場合、具体的には...
pi@smpd:~ $ sudo ln -s /home/pi/plugins/update_folder.html /var/lib/mpd/music/
(一行です)
を打ち込むなり、上の内容をコピー・ペーストしてenterキーを押すなりして、実行して下さい。
ハイ、画面の上では、何の反応も返ってきません!
(それで正解。何か表示されるようなら、何らかのエラーが発生している)
(コマンドの“ln”はリンク関連の作業を行うコマンドで、“-s”がシンボリックリンクを作るんだぞというコマンドの振る舞いを定義するオプションのようです)
それでは、コマンドが問題なく実行されたか確認します。
pi@smpd:~ $ ls -l
total 36
drwxr-xr-x 2 pi pi 4096 Nov 5 18:22 configs
drwxr-xr-x 2 pi pi 4096 Dec 2 23:06 misc
lrwxrwxrwx 1 pi pi 12 Sep 1 18:59 mpd -> /var/lib/mpd
drwxr-xr-x 2 pi pi 4096 Dec 2 23:07 plugins
-rwxr-xr-x 1 pi pi 540 Aug 31 12:25 util-backupconf.sh
-rwxr-xr-x 1 pi pi 979 Oct 21 14:22 util-dashboard.sh
-rwxr-xr-x 1 pi pi 635 Aug 24 12:37 util-freq.sh
-rwxr-xr-x 1 pi pi 266 Sep 12 20:38 util-loadbalance_on.sh
-rwxr-xr-x 1 pi pi 1421 Oct 21 14:22 util-plot.sh
-rwxr-xr-x 1 pi pi 662 Sep 8 13:15 util-stat.sh
“ls -l”を実行したんですけど(全部小文字ね)、エ〜ト、「何ですか、コレ...」by 滝昇(CV櫻井孝宏)
どうも5行目の“mpd -> /var/lib/mpd”がシンボリックリンクを表しているようです。
でも、Linux初心者の私には全く意味が分からんちんなので、“cat”コマンドを使って、実際にファイルの内容を見られるか確認してみました。
(アニメガタリズに限らず、“cat”はなにかと便利です!)
シンボリックリンクの大元のフィアルは...
pi@smpd:~ $ cat /home/pi/plugins/update_folder.html
<form>
<input id="library_update_target" class="form-control" type="text" name="param" value="" />
<script>
$(function(){
$("#library_update_target").val(browsepath);
});
</script>
</form>
こんな風に見えるはずです。
で、シンボリックリンクができているなら、コレでも内容を見れられるハズとやってみた...
pi@smpd:~ $ cat /var/lib/mpd/music/update_folder.html
<form>
<input id="library_update_target" class="form-control" type="text" name="param" value="" />
<script>
$(function(){
$("#library_update_target").val(browsepath);
});
</script>
</form>
赤色の太字にしたところが、シンボリックリンクを作ったはずのディレクトリーです。
この2つの“cat”コマンド実行結果を、画像で見比べたら、こんな感じ...
その下に、そこには存在しないはずの“update_folder.html”を読みにいって、大元の内容と全く同じ内容が表示されたのですから、確かにシンボリックリンクは“/var/lib/mpd/music/”の下に作成されているようです。
さぁ〜て、ここまでできれば、あとはしめたものです!
説明にあるプラグイン定義の記述を、“nano”で“/home/pi/plugins/.plugin.json”に加える編集してやればいいだけです。
pi@smpd:~ $ sudo nano /home/pi/plugins/.plugin.json
を実行。
この画面が現れます。
この記述の一番上の部分に、“UPDATE THIS FOLDER”というプラグイン定義を書き加えてみます。
(別に場所はどこでもいいです。今回、説明しやすいよう、一番上にしただけ)
下の画像のようにカーソルを移動させ、改行を加えます...
改行を加えた部分に、以下の内容をまんまコピー・ペーストします。
{
"menu" :"UPDATE THIS FOLDER",
"active" :"yes",
"icon" :"heart",
"form" :"/update_folder.html",
"command":"mpc update",
"output" :"",
"success":"Library updating",
"error" :"error!"
}
(記述内容の詳細は、symphonic-mpdの「プラグイン機能とは」を参照のこと)
上の画像のようにコピー・ペーストしたら、下の画像の位置に“,”(カンマ)を入れて下さい。
この“,”(カンマ)が、それぞれのプラグイン定義を区切る役割を果たします。
絶対に入力を忘れないで下さい。
これで“/home/pi/plugins/.plugin.json”の編集は終わりました。
ctrlキー + oキーを押し、enterキーを押して、編集内容を保存します。
ctrlキー + xキーを押して、“nano”を終了します。
ブラウザに戻って、symphonic-mpdのWebUIを再読込させてください。
ここまでの作業が全て正しく行われていれば、プルダウンメニューの内容は、こうなっているはずです...
ではではでは、実際に新しく加えた“UPDATE THIS FOLDER”という機能が使えるかどうか、確かめてみましょう。
=============================
通常、NASやUABメモリに格納されている音源の内容を、symphonic-mpdのデータベースに反映させる場合、普通はこのメニューにも見える“UPDATE LIBRARY”を使います。
でもこの機能、処理にチョット時間がかかっちゃうんですよねぇ〜。
メディア全体をスキャンしますから、当然っちゃ当然。
しかし、この“UPDATE THIS FOLDER”では、UIに表示させているフォルダ内だけをスキャンし、その結果をデータベースに反映させます。
そのための必要時間、瞬時!
お恥ずかしい限りなのですが、私のNASの中身を例に、実際に機能するさまを見てみましょう...
イヤァ〜、実にお恥ずかしい...
プレイリストの代わりに、“アニメ”フォルダを作成して、その中にさらにフォルダを作り、音源やアートワークをコピーして置いてます。
ですので、お恥ずかしいのでこれ以上はお見せできないのですが、各フォルダの中には、さらにナンバリングされたフォルダがあります。
そうしてフォルダの階層構造を作って、プレイリストのように使っています。
(ディストリビューションをまたいで使えるので、便利ですw)
(音源のタグも必要に応じて編集してあります...って、どんだけアニソン好きやねん!これでごく一部です。ただ今増殖中)
コレをsymphonic-mpdのUIで見ると、こうなってる...
そのフォルダに、エヴァを加えます。
(使徒襲来かよ...)
そして、プルダウンメニューから“UPDATE THIS FOLDER”を選択...
暴走はしません!
このパネルが表示されれば、うまく動いている証拠です!
(パネルの中に、ターゲットとなっているフォルダ名が表示されます)
“OK”をクリックすると...
UIの右上に、“Library updating”という表示がグリーンをバックに現れます。
この表示が消えたら、ブラウザでUIを再読込させる。
すると...
この度の使徒は、浸食系だったようですw
(話題が「プラグイン」だけに9番目の使徒かよ!)
以上が、実際のプラグイン機能の導入方法の一例です。
プラグイン定義の内容によっては、今回とは全く違うコマンドを使用する必要もあるかもしれません。
また、今後のsymphonic-mpdのアップデートによっては、作業内容が変わる可能性もあります。
(「赤」から「透明」に、そしてまた「赤」に戻ったように...って、シツコイ!こんなの聞いてない!w)
=============================
このプラグイン機能は、ユーザー自身の手で、symphonic-mpdに新たな機能を付け加えるための「仕組み」です。
今後、ユーザーサイド発で、新たなプラグイン定義が開発され、その実装方法も含めた情報が公開されていくことでしょう。
そうして発表される情報の中に、自分が求める機能があるかもしれない。
(イカン!プラグインの定義が、妙なアニメのイメージに浸食される...)
そうした時に、今回のように“/home/pi/plugins/.plugin.json”を編集したり、必要であれば新たなファイルの作成や、コマンドの実行が必要になります。
もちろん、そうした情報は全て公開されていくことになりますが、その作業自体は、あくまでもユーザー自身の責任において行われることになります。
(いったいアレはいつ公開されるんでしょうか...)
(きっとA監督にとっても...)
しかし、Raspberry Piを利用したオーディオ自体が、非常にDIYな要素を含むものである限り、これは避けられない工程です。
(エェ、補完計画の為にはいかなる犠牲も...)
symphonic-mpdを使い倒し、そこに高い再生品質とともに、自分なりの使い勝手向上を求めるのならば、この際、Linuxの操作に少しでも馴れておいた方がイイと私は思います!
(シンジくんもDATにこだわらずにコッチに来ればいいのに...)
内容に誤りなどがありましたら、方法はコメント欄でもメールでもTwitterでも方法は問いませんので、ぜひ声をお寄せ下さい!
(ア!括弧内は無視してください...ほぼ戯言です)
« symphonic-mpdユーザーのためのLinux初心者講座 そして其の二 | トップページ | 二段重ね »
「パソコン・インターネット」カテゴリの記事
- symphonic-mpd v0.9.0β覚え書き(2019.09.26)
- フィルター(ファイナル)(2019.08.04)
- フィルター(続編)(2019.08.04)
- フィルター(後編)(2019.07.27)
- フィルター(前編)(2019.07.27)
「趣味」カテゴリの記事
- SANSUI AU-α607(2021.02.21)
- 12V版DC-Yarrow(2021.02.21)
- NASの聴き比べ(2021.01.26)
- SANSUI SP-100iEXウーハーのエッジを貼り替える(2020.07.26)
- SANSUI SP-100iEXのウーハーを取り外す(2020.07.21)
「音楽」カテゴリの記事
- ナ(イ)スなiPod(2019.05.12)
- 猛暑から逃避行(2018.07.25)
- Terra-Berry DAC2ユーザーのためのLinux初心者講座(2018.07.15)
- 邪道の極み(2018.07.13)
- 求むヒトバシラー同志(2018.07.09)
“UPDATE LIBRARY"が時間掛かってしまうのが、なんだかなぁ〜と嘆いてましたけど、ジャイアンさんの名講座に導かれて、いとも簡単に“UPDATE THIS FOLDER”が使えるようになりました。
オープンソースコミュニティに貢献されるジャイアンさんにお礼申し上げます。
パパリウスさんがSMPD開発に専念できるように、脇(失礼!)を固める事はとっても大切だと思います。
ありがとうございます。
投稿: Shoe | 2017年12月 5日 (火) 18時43分
> Shoeさん
過分なお礼の言葉、ありがとうございます!
「いとも簡単に」と言っていただいて、ホッと胸をなで下ろしています。体を張って(笑)書いた甲斐があったというものです。
symphonic-mpdに限らずオーディオ全般にわたることですが、私自身が多くの先達の情報に導かれて、その楽しさを享受してきました。そうした方々の真似事がチョットはできたかなぁと、Shoeさんのコメントで思わせていただけました。コチラこそありがとうございますです!
投稿: ジャイアン | 2017年12月 5日 (火) 19時05分
ジャイアンさん、こんばんは。
丁寧な解説記事を書いてくださりありがとうございます。
配布サイトからリンクを貼らせていただきました。
事後承諾となりすみません。
プラグイン機能の開発の契機は、くれないさんが開発を進められているTerraBerryDac2のアッテネータ操作の件でした。
くれないさんがアッテネータ操作のコアの部分をpythonで実装され、Web UIにどうやって組み込もうかと二人で考えていたときに、追加機能を簡単に組み込める仕組みが欲しいと思いはじめました。
最終的に、アッテネータ操作についてはmpdにパッチを当ててpythonを呼べる形にしました。
(Web UI以外のmpdクライアントからも操作できるというメリットがあります)
ところが、くれないさんからアッテネータ操作以外の機能(デジタルフィルタ設定など)もすでに実装済みというお話を聞き、改めてプラグイン機能の実装を決意しました。
これらTerraBerryDac2固有の機能がsymphonic-mpdでうまく動くようになれば、プラグイン機能もその役目を果たしたと言えると思っています。
くれないさんはあっというまにプラグインのフォームも準備されていましたね。流石です。
あと少しバグ取りが終われば、アッテネータ操作を含む機能一式がくれないさんから公開されると思います。
楽しみにお待ちくださいませ。
投稿: パパリウス | 2017年12月 6日 (水) 22時20分
> パパリウスさん
コチラこそ、俺得な情報をありがとうございます!本当に俺得!!ですw
このシリーズの最初で書きましたが、そうした流れが見え隠れしている中でのプラグイン機能実装だったので、私の方も勝手に「ハハァ〜ン」と判断してましたw でなければ、私も「UPDATE THIS FOLDER」プラグインの実装をスルーしていたかもしれませんし、仮にチャレンジしても、ブログでここまでまとめることはしなかったかもしれません。
くれないさんとの話の中で実装にいたった機能とのことですが、自分でこのようにまとめてみて、この機能の実装によって、ユーザー目線の便利な機能が現れてくれないかなぁという期待も生まれました。イヤァ〜、色んな意味で本当に楽しみです!
「丁寧な」という評価、感謝です。さらにサイトで紹介までしていただいて、コチラの方こそ感謝しかありません。
こうした情報編集は馴れているというか、仕事云々に関係なく好きなんです。チョコチョコ親父なギャグが入ったり、アニメネタで暴走するところが悪いクセですけども(笑
投稿: ジャイアン | 2017年12月 7日 (木) 00時50分