2016年9月28日水曜日

MPD+Raspberry Pi 3 BによるDAP、及び専用クライアント開発記録_Vol.1

 114514日ぶりの更新となってしまいました。ここ最近いわゆるこのような形式のブログというものに魅力を感じなくなってしまい、Twitterなど短文ブログやfoursquare等位置情報、及びGPSトラッカなどを活用し、なるべく簡易に日記のようなものを作り出すことに心血を注いで来ました。
 AppleWatchで散歩コースをトラッキングし、kmlデータとして抽出してGoogle Earthなどに落とし込んでみたり、日常の記録としてのブログ(日記)を文章として残すより相当に効率的に、かつ手軽なため三日坊主にならないことから、ズボラな自分には大変馴染むものでした。
 
 ところで、ブログに魅力を感じなくなってきつつある一方、Evernoteにも同時に別れを告げ、かといってOneNoteはまだまだmacで使いやすいとはいえない現状、何かの一連の創作などの記録をつけるのに良いサービスはないものかと模索していたところ、見捨てていたブログが目に留まりました。
 ブログはタグ機能も充実し、公開も容易であり、かつ執筆も容易で、BloggerではHTMLタグによる装飾も可能、ひいてはブログ内検索も標準のためEvernoteよりも優れたメモサービスとなりうる可能性を感じました。
 というわけで、これから暫く開発日記として当ブログを執筆していこうかと考えております。

 さて、現在開発を進めているのは表題の通りMPDのクライアントとDAPです。詳しくは冬コミで出す予定の部誌に譲るとして、備忘兼ねて簡単に書くと、MPDはMusic Player Daemon といい、UNIX系で動作する音楽を再生するためだけのデーモンです。
 このMPDはシングルボードコンピュータであるRaspberry Piとよく併用され、ラズパイの持ち前の単純さと、MPDの単純さが相まって非常にシンプルなDAPとなります。
 余計な機能がないDAPは当然ノイズなどの原因が少なくなるため、音質向上に寄与するわけですが、正直ココに関しては一個人、素人が設計するレベルでは都市伝説の域を出ないものかもしれません。ですが、DAPをイチから(サンくらいから?)設計するなど普通は出来ない体験でもあり、その達成感は何物にも代えがたいものです。
 
 以上の理由から、Raspberry PiにMPDをインストールし、できるだけ余計な機能を省きつつ(機能追加はそこから分化して開発するのも面白そうですね)、とりあえずはできるだけ音質を求めたオリジナルPDAP(ポータブル・デジタル・オーディオ・プレーヤ)を製作していくことにしました。
 といっても、音楽を鳴らすところまでは対して難しいことはありません。一度設定を書き間違えてしまい、イチから導入し直す機会がありましたが、そのときは手順も確立していたことから、真っ更な状態から全部込みで音楽再生まで3時間程度で行うことが出来ます。
 
 こちら(mpd導入まで)に関しては、部誌には詳細を改めてまとめてみようと思いますが、ブログとしては諸先輩方のサイトに譲ることにしたいと思います。最も参考とさせて頂いたのはn-mmra.net Web Site 様によるmpdの設定についてのページ(http://www.n-mmra.net/audio/raspimpd/raspimpd.html)です。
 Embed好きの諸兄御用達のエレキジャック様にも解説があるので、そちらも大変参考になります(http://www.eleki-jack.com/Kurobox-pro2/2007/09/music-player-daemon-mpd.html)

 mpdの導入と、mpcによる操作までは私の頭と能力でもすぐにできました。が、ここから躓いてしまったのです。
 さすがに、PDAPとして持ち運ぶのに毎度terminalを開いてssh接続を噛ませて"mpc play"と打っていたのでは現実的ではありません。せめて、ポータブル性は一旦置いておいたとしてもパソコンからGUIで操作するくらいのことは行いたい。そして、GPIO経由の物理操作もできれば受け付けたい。そういう思いになるのは当然です。
 ですが、これがなかなか難しいのでした。mpcも内部はCで書かれており、使えた気になっていただけです。私の技量ではライブラリは然るべきところからお借りするとしても、やはりクライアント程度は自作しなければ「ラズパイでDAP作った」とはとても冬コミ電子工作島の猛者の中で申し上げる勇気はありません。
 というわけで、ひとまずmpdクライアントの自作ができないか、調査をしていくことにしました。

 mpdクライアント  自作 と検索をかけると、2016/09/28時点で~magi mode~ver 3.10 様(http://ameblo.jp/magi-alphard/entry-12042016946.html)のページがトップに引っかかります。メイドちゃんに案内されながらブログを拝見すると、まさに自分の作りたかったMPDクライアント(JAVAベース)が。世の中には上がいるものですね。
 1時間半で作られたとのことで、調査にかかった時間よりも短く作成されており頭が下がるばかりですが、これを何十時間かけてでも完成させよう、ということになりました。
 実際こうして作っている方がいるわけですから、やってやれないことは無いはずです。

 mpdをjavaで制御するには、もちろん根本的に理解して作成するのはアリでしょうが、自動でsshなどを経由して制御を可能とするJavaMPD(http://www.thejavashop.net/javampd/) が存在するので、喜んで謹んで跪いて使わせていただくことにしまして、あとはGUIに乗っけるだけです。お手軽。

 しかし、重大な問題としてJavaのGUIアプリケーションを作成したことがないという致命的なものがありました。AWTでも、Swingでも作成したことがない。
 さて、明日から一旦MPDから離れ、ひとまずAWTの勉強が始まることになりました。

 
 次回!「城之内死す!」