2016年12月19日月曜日

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

 連載3回目です。大学祭も終わり、その後流れるようにその成果や、さらなる記事を追加したオーディオ研究会の本「METRONOTES」の2016年冬号を先日入稿しました。あとは印刷が間に合うことを祈るばかりです。
 
 さて、そんなこんなで当連載をまとめた、というかこの連載をベースとして改めて描き下ろした記事がMETRONOTES・2016冬に掲載されております。というわけで、この連載をどこに着地させるか非常に悩んでいたわけですが、結局そのまま継続してみることにしました。METRONOTESではUNIX系OSなどを扱い慣れていない方でもセットアップしてオーディオプレーヤを作成できるようになる一助となるべく、#と$の差などといった部分まで細かに補足を入れておりますので、まぁ、競合することもないかなと思っておりますこの連載ではそもそもまともに順序立てて書いていないですしね。
 
 それでは、いつものように雑に開発記録を書いていきたいと思います。
 
 前回Vol.2では、Javaを用いてssh経由で本体にmpc命令を送ってやるクライアントを作ろう、という事になっていましたが、開発期間的に厳しかったので当連載にて今後開発していくことにして、ひとまずRaspberry Pi単体(+ドータ+バッテリ)で動作するものを作ってみました。
 んで、更にDACも完全外部化してUSB-DACを新たに接続する形に逃げました。小型DACを直接駆動させて、アンプも乗っける件に関しても、(DACについては)必要な部品などをようやく揃えましたので、当連載にて継続開発していくこととします。アンプはまだない。
 
 では、ざっくり暫定版のオーディオプレーヤがどういうことになったか、先にまとめてしまいましょう。
  •  Raspberry Pi 3 B & Raspbian Jessie
  •  音声出力は3.5mmステレオミニとUSB-DAC(ALSA経由)のオルタネイティヴ
  •  操作はドータボードとしてブッ刺した安物のタッチパネルに実行形式に書き換えたshellの成れの果てを置く
  •  音量は100%で固定(mpd.confにて。100%にして直接インピとか気にしたこともないそこら辺のイヤホン刺しても、耳が壊れたりしない音量だったので)
という感じです。まずUSB-DACの話から。
 
 USB-DACを結局使うことにしたわけですが、たまたまDENONのDA-300USBが新型が来るとかなんとかで投げ売りされていたのをビックカメラで見つけたので、ヨドバシカメラに直行して買いました。だってクレカの還元率的に淀がいいんだもん。一般カードで買った時で2%分お得になります。とにかく、あのDA-300を3万ちょいで手に入れたわけです。お好きな方はご存知と思いますが、コレ以降のDENONは良いか悪いか、昔のDENONのどこか真空管じみた、というか柔らかな音を捨ててキッパリとした今流行の音になっているので、新型がどう出ようと、こちらが欲しかったところなのでした。正直、KORGのDS-DAC100mだっけ、あのちっちゃいやつを買おうかと思っていたのですが、小さい頃からDENON、もといデンオンの頃の音に親しんできたこともあって、飛びついてしまいました。
 
 後悔はしていない。DA-300USBはまさしくデンオンの息遣いを感じるDACでした。まぁしかも、これは予想外だったのですが、なかなか内部のHPAの性能がよろしい。まぁうちパワードしか無いんですが。PSVR買って次の大きな買い物あたりで買いましょう。
 そういうわけで、突如うちにDA-300がやってきたので、S/PDIF経由でPS4の音を拾って遊んでいたわけですが、Raspberry Piに戯れに繋げたところこれが意外とすんなり鳴ってしまったのです。
 
 というのも、どっかの窓OSと違って苹果OSとか最近のLinuxディストリビューションはUSB Audio Class2.0に対応しているのは当然です。が、CoreAudio、ASIOで鳴らせるのは殆どのメーカーが公称していますが、ALSAに対応していることを謳うメーカーはほぼない状況です。ので、ALSAでなかなかすんなり鳴ることって無いんです。Ubuntuくらいのディストリビューションになれば結構動いてくれたりもするんですが、Raspbianで動くとは。
 調べてみると、他のUSB-DACはやはり結構USBAudio2.0機種でも相性問題を起こしているようです(設定をどうだこうだすれば結構鳴りはするみたいですが)。そんな中、何故か出力系統の変更すら要らなかったDA-300ちゃんは何者なんでしょうかね。
 
 閑話休題、DACで鳴らすと当然ながらRaspberry Pi特有の4極プラグに由来するノイズが減るので、その分音が良くなるというか、まともになるのは当然として、アシンクロナス転送とデジアナの分離、左右独立設計など細かなDACの良さが光ります。これもうRaspberry Piじゃなくていいんじゃないか。今度ブラインドテストしてみましょうかね。
 
 次に、操作部分について。操作部分はひとまずシェルスクリプトに逃げました。といっても、シェルはダブルクリック実行ができないので、.xファイルに変換してくれる素敵な何かを使って.sh.xとかいう代物にしてデスクトップに置いておきます。そうすれば、ダブルタップからのexecuteで実行できますので。お手軽に再生/曲追加/停止など各ボタンをつくることが出来ました。UIデザイン?そんなものは知らん。再生停止だけはnode.js噛ませてDashボタンを使ってみる計画も進行中です。
 
 そうして、当初の計画から114514度回ったオーディオプレーヤがひとまず完成しました。次回の予定はチップを持ってきてブレッドボードに刺してとりあえずデータシートとにらめっこしながらDACを動かしてみることですかね。ポータブルがテーマなので、毎度電源をACから取るDA-300を使うわけにいきませんから。

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接続 
以上の条件で、明日からまた開発を進めていきましょう!

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

ここ最近みた映画3本+αについて

 ここ最近になって、割と映画を見るようになりました。というのも、ガルパンやマッドマックスの爆音上映で話題となった立川シネマシティとの出会いがあったからです。

 立川シネマシティは名前の通り東京都立川市、その中心部にあり、それぞれ複数のスクリーンを構える「シネマ・ワン(元シネマシティ)」、「シネマ・ツー」に分かれます。
 もともと立川の街が大好きだった私ですが、あまり最近の映画というものに興味を持てなかったため、存在だけは知っていたものの、一度も訪れたことがありませんでした。

 自分の大好きな三大TVアニメが「えとたま」「ズヴィズダー」「てーきゅう」なのですが(TVアニメシリーズとして。原作は好きだがアニメとしてはランクインしないものも当然あり)、そのうちのズヴィズダーはもろ立川が舞台です。
 大変立川愛にあふれたアニメなのでぜひ皆さんご覧ください。

 それはともかく、IKEAやららぽーと、フロムに東京地裁立川支部まで、みどころ満載の街立川にある単館系映画館が立川シネマシティです。

 もともとそれなりにガルパンが好きで、映画化されたと聞き、とりあえず見に行ってみようかと近所の映画館を検索していたところ、そういえば、立川に映画館あったよな、と思い至り見てみると、なにやら爆音上映なるものをやっている。まだ爆音上映が全国的に有名になっておらず、ガルパンも一介のアニメ映画だったころでした。

 ガルパンから向こう、何本か見たい映画が来るようだったのでわずかな年会費を払い「シネマシティズン会員」になってみました。これは大変お得なプログラムで、会員特典として予約が一日早くできるなどを抜きにしても、二本見れば元が取れるという奇跡のようなものです。
 地域に愛されている映画館なんだなぁと実感しつつ、初の爆音上映を楽しみました。

 そして、ハマってしまいました。爆音上映やガルパンにはまったのはもちろん(ガルパンは劇場で5回見てBDも買いました)、映画そのものにも目をむける機会を得たのです。
 生まれてこの方、割と勉強続きの人生でなかなか映画など見る機会を得なかった(もっとも、興味をもつきっかけにめぐりあわなかったというだけであって、そこまで勉強漬けで暇なしだったわけではない)自分には感動的でした。

 以降、家でオンデマンドサービスを活用し昔の良い映画を鑑賞したり、大学のアーカイブからVHSで映画を見たり、当然映画館に最新の映画を見るべく足を運ぶようにもなりました。

 というわけで、前置きが長くなりましたが、ガルパンとシン・ゴジラ、君の名は。の話です。

 公開順にざっくり述べると、ガルパン(劇場版)はアニメシリーズで一旦免れた廃校の危機を文科省の役人が親切にも映画のために呼び起こし、今までの戦友、敵校と共に大学選抜チームと戦って再び廃校の危機を免れるというものです。
 今度最終章の製作も決定したそうですが、今度はどんな理由で廃校になるんでしょうか。

 ガルパンの映画は戦車アニメである中で、絶対に怪我をしない「謎カーボン」や、武道として嗜まれている、といった無茶苦茶な設定により、純粋に胸躍る戦いを楽しむことができます。
 いろいろわずらわしいところを捨象してくれていることで、楽しみやすくしたのが成功の鍵でしょう。
 その一方で、戦車のディテールや音などは異常なまでのこだわりを見せ、軍事もの特有の「これは違う」といいたいおじさんたちをも黙らせてしまいました。

 シン・ゴジラはエヴァでおなじみ庵野監督作品です。随所にエヴァの音楽が入っていたり、個人的な感想ですが「博士の異常な愛情 または私は如何にして心配するのを止めて水爆を愛するようになったか」を彷彿とさせる会議シーンや展開など、庵野監督自身が「私の好きにした。君たちも好きに見ろ」と言っているかのような仕上がりです。
 私の大好き「えとたま」を製作した「白組」もCGの部分で参加しており、その見ごたえも圧倒的でした。にゃ~たんとゴジラを同じ会社が作っているんですよ。

 しかし一方で日本らしい、日本人的感覚という文脈を持っていなければ理解しがたいシーンも多々あったようです。たとえば東南アジア某国からの留学生はまだゴジラが弱い時に撃ち殺せるチャンスがあったにも関わらず、地域住民たった二人の避難を待ったがために取り逃がしてしまった、というシーンで「なぜ撃たなかったのか・・・・・・」と気になっていたら映画が終わっていたと言っていました。
 また、会議シーンや首相の決裁の長さと多さ、そして形骸化も理解が難しいようです。
 それでいて、海外はどう評価しているのか見てみますと

 大手ゲーム情報会社IGNは「8.5」というなかなかの好評価ですし(IGNによるシンゴジラレビュー)、IMDbでも「7.8」という悪くない評価を出しています(IMDb、ShinGodzilla)。映画を見慣れている人にはそのよさが伝わりやすいのでしょうかね。某大国の友人に遠慮はいらないからお前ならどうした?と聞いたら最終形態上陸して米軍機が来た時点で核爆弾ぶち込むよねHAHAHAと言っていましたが。

 君の名は。・・・・・・。映画の良し悪しを正常に評価するには映画館を貸しきる必要がありそうです。周囲が精神的苦痛を強いてきたのでとてもまともに評価できません。
 
 ということで、最近話題になった三本の映画についてざっくり書いてみましたが、この三本のおかげで再び映画館で映画を見る、ということを久しぶりにした人も多かったのではないでしょうか。
 
 今週末あたりスーサイド・スクワッドの字幕版でも見てこようかと思います。スースクはできれば完全に原語で見たいのですが、なかなかどうして難しいので。

 そういえば、deadpoolも見ましたね。デッドプールはマーヴェルにぜんぜん詳しくない自分ですが(一応そこそこ映画だけは見てる)、ダントツ好きですよね、まずキャラが。
 公開当日一番に近くの東宝で見ましたが、結構な人気でした。続編も決定したらしいですし、うれしいですね。
 アメリカ映画にしては異常な低予算映画だと第四の壁を平気で突破したデッドプールは作中で語りますが、アメリカも予算使わなくても面白い映画作れるんだなぁと新しい発見ができました。
 
 ネガソニックが呼ばれた理由もクソみたいな理由ですし、マーヴェルのくせに年齢制限かかってるし、といろいろひどいのですが、それが受ける要因になったみたいですね。

 さて、一本増えて四本の感想を述べてきましたが、皆さんもぜひ、特にガルパン・ゴジラはまだシネマシティならかかってますので、劇場に足を運んで、その迫力あるスクリーンで体験していただければと思います(もちろん、家で見ても良いものは良いですが、戦闘シーンなどはやっぱり違います)。

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の勉強が始まることになりました。

 
 次回!「城之内死す!」