2016年10月4日火曜日

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

 さて、連載二回目となります。前回JavaMPDというjarを発見して、なんだこれをGUIに乗っけるだけじゃないか、と意気込んでいました。
 過去形ということで察していただきたいのですが、今回はそんな前回の発見と方針などどこへやら、だいぶん違う方策でMPDを制御してゆくことにしましょう。

 というのも、JavaMPDをコンパイルする段階で設定ミスなどなどあったのかも知れませんが、どうやってもコンパイルエラーを吐きまくり、コンパイルできる状態に無かったのです。
 本来は、どこがおかしいのか、どこをどう変えれば修正できるのか探って行くことになるのでしょうが、あいにくとそんな技術を持ち合わせていない以上に、そこまで時間を割くことができない、という状況があります。

 首都大学東京の大学祭、みやこ祭でのオーディオ研究会の展示の一翼を担うものであるだけに、失敗と遅れは許されません。他のメンバーたちは続々と展示物を完成させていく中で焦りが募ります。

 というわけで、JavaMPDを諦めることにしました。といっても、やはりGUIで実装するという目標を変えるというのもこれはこれで残念です。ということで、JavaMPDを使わず、何かの方法でMPDを制御するGUIを制作する必要がありそうです。

  

 では、現状を整理しましょう。現在、Raspberry Pi上ではxwindowを実行しない状態、つまりCUIでRaspbianが走っており、その上で MPDと基本の通信機能を走らせている状態になります。そして、MPDの制御にはとりあえずC言語で書かれたCUIベースMPDクライアントであるMPCが走っており、MPCを介してMPDを制御することには成功しています。
 MPCは大変シンプルなソフトで、mpc playで再生、mpc nextで曲送りなど、きわめて手軽かつ直感的なコマンド操作でMPDを制御できますので、Volumioなどを使わない人にとって、とりあえずMPDを入れた後の動作確認などの段階で同時に入れてしまうことの多いものです。
 
 ならば、MPDを直接いじるプログラムを書くのが難しいのなら、MPCコマンドをsshで送信するGUIアプリケーションを書いてしまえばとりあえず解決するんじゃ無いか、ということに思い至ります。

 以上から、MPDクライアントを自作するというよりは、二次的にMPDクライアントを制作する、つまりMPCをGUIでフロントエンド実装してしまおうという非常に文系的な発想で開発を進めて行くことにしました。

 このアイデアに思い至るまで、オーディオ研究会の皆々様には多大な意見をいただきました。ありがとうございます。

 では、改めて今回作るアプリケーションソフトの定義をしていきましょう。
  1.  MPC/MPDを導入したRaspbianに対して動作するアプリケーション
  2.  言語はJAVA
  3.  ひとまずmac/Windowsを対象としてjarファイルを以て完成とする
  4.  GUIアプリケーション
  5.  必須機能は「再生」「停止」「曲送り」「曲戻し」 「プレイリスト更新」
  6.  可能ならUSBから取り込みも行う
  7.  I2S出力を行うためその部分と干渉しない
ついでに、今回のDAPの定義もしていきましょう(アプリケーション定義以外の部分で)。
  1.  Raspberry Pi 3 Model B上で動作するRaspbian JessyをOSとするシステム
  2.  MPDをメインとする
  3.  音楽再生機能・ネットワークラジオ機能(ひとまずSHOUTcast対応)
  4.  曲は内部保存(あくまでポータブルDAPである)
  5.  電源はUSB経由
  6.  I2S接続のDACチップ経由で出力する
  7.  DACチップはPCM5102A(テキサスインスツルメンツ製品頁)を搭載したモジュール(サンハヤト社MM5102)
開発環境は
  1. macOS sierra macbookAir e2015 上 IntelliJ IDEA 2016.2
  2. Windows 8.1 Embedded Industry Pro 上 IntelliJ IDEA 2016.2
  3. JAVA 8
  4. Raspberry Pi 3 Model B
  5. So-net 0simで運用するテザリング用Android携帯(Xperia A) ←この端末を介してssh接続 
以上の条件で、明日からまた開発を進めていきましょう!

 次回!「正社員ってお給料を安くするための法の抜け穴!?」 お楽しみに!

0 件のコメント:

コメントを投稿