Main controler |
|
Main画面
こんな感じです。結構無駄な機能いっぱい付けました。
Mon | モニター画面へ遷移 |
Cue | 再生中の曲を最初から再生しなおし |
Coda | 再生中の曲のラスト5%へジャンプ |
Gain Control | デバイス毎にプリセットされた音量へ変更 |
Off | シャットダウン |
液晶っぽい画面 | 液晶っぽい内容を表示 |
Seek bar | 現在の曲の再生位置(%)を表示するとともに、スライダーでseek可能 |
その下 | 各種ステータス表示 |
Volume bar | 現在のvolume値を表示するとともに、スライダーでvolume調整可能。誤爆注意 |
Prev/Next | 前/次の曲へジャンプ |
GetArt | ファイルに埋め込まれたartを抽出 |
Folder | Folder選択画面へ遷移 |
画像 | アルバム内の曲選択へ遷移 |
あとは、10秒前/後へjumpとか、アルバム単位、アーティスト単位でjump、音量調整(2step)&微調整(1step)とか
中央のHi-Resロゴが張り付いてるボタンはSYNC(同期)ボタンです。
ちなみにDSDを再生してればDSDロゴになりますし、ただのwavならpcmロゴとかです。
何に使うものかと言うと、まさにLIVAとリモコンを同期する時に使います。
実はこのリモコン、リアルタイムに残量表示、画面表示していますが、LIVAとは独立して動いています。
LIVAと通信するのはユーザがボタンを押した時と、次の曲へ移った(と計算された)時だけです。
ザックリ言うとクライアントからのリクエスト時にhtml内に曲の残時間を埋めて返し、クライアント側には独自で管理させます。
クライアント側でタイマーがゼロになったら、再度クライアントからリクエストを飛ばす仕組みです。
SYNCボタンはその同期が外れた場合に使用します。
同期が外れるのは、複数のリモコンから操作してるとか、別のssh画面とかからlivaの状態を変化させちゃった場合などです。
またAndroidなどのWebブラウザは、省電力の為でしょうけど画面が消えたりするとタイマーも停止しちゃいます。
ただ、この場合は画面復帰後に既にタイマー時間を過ぎていれば、勝手にリクエストするので問題ありません。
本当の意味でリアルタイムにすることも出来なくはないですが、可能な限りmpd以外の外部負荷変動は避けたいです。
外乱の発生はユーザが操作した時と、画面全更新が必要の場合に限りたい。
...未だにRaspberryPiの呪縛が解けてないのかもしれません。
もちろん使用するWebサーバも極力軽いものを使いたい。
Apacheは論外としても、nginxやlighttpdでは過剰な機能が多すぎる。
しかし逆にdarkhttpなどではそもそもCGIが使えないので意味がない。
lighttpdあたりで妥協しようかとも思いましたが...
-下に続く-
|
Folder selector - Song select - |
|
Main画面のアルバムアートをクリックすると、フォルダ/ファイルセレクタに遷移し、再生中のアルバムの曲選択ができます。
この画面にあるデータベースアップデートボタンによりDBの更新が可能です。
- 続き -
最終的にmattowsと言うWebサーバを使ってみました。
このサーバ、驚くべき事にたった800行のC言語で記述されている上に、CGIまで処理可能なのです。
バイナリのサイズもdarkhttpdの半分以下、たった15KBの実行ファイル1つのみです。
ちょっとした評価用に作られたものの様ですが、組み込み用途などにも使ってる人も居るみたいです。
まぁ、index.htmlをデフォルトで読んでくれない(1行改造すりゃOK)とか、
CGIは使えるけどPOSTが使えない(GETで頑張る!)とか...フルスペックって訳には行きませんけどね。
セキュリティ的な面ではInternetに公開する様なWebサーバとして使うのは無謀な気はします。
なにしろ、cgiから特権コマンドだろうとなんだろうと無制限に実行できますので....
でもクローズドなネットワーク上でのみ使うのであれば、各種制限一切気にせずcgiが書けるのは物凄く楽です。
|
Folder selector - Album select - |
|
Folder選択画面
再生中のアーティストフォルダが表示されます。
TOPボタンで最上位階層(アーティスト選択画面)へ移動します。
|
Album art selector - browse view - |
|
アルバムアート選択画面。
mp4動画の場合、動画の中の1フレームをアルバムアートにすることが可能です。
まずは曲を2%刻みで50枚切り出し。画像を選べば即アルバムアートとして採用します。
もっと細かく選びたければ、画像下のボタンを押下すると秒単位での切り出しモードへ遷移します。
この機能あたりから、もはやmusic playerとしての機能と言うよりは、完全に趣味のソフト開発になってるかも。
余談ですが、ipod touchがretina displayになったとき、結構頑張ってMusic videoやライブ映像などをリッピングしてました。
ところが、リッピングしてみたものの、移動中に動画を見るというスタイルは私にとっては「無し」だったのです....。
でもmpdでは動画だろうと区別なく普通に音楽ソースとして再生されますので、とてもうれしい。
反面、アルバムアートはとても重要と思っています。基本的にはCDジャケット写真で良いのですが、映像があるならそれを利用するのもいいかと。
|
Album art selector - seconds view - |
|
一秒単位での選択画面です。
気に入った画像があれば選択。
もっと細かく選びたければ、画像下のボタンを押下すると更にフレーム単位での選択画面へ遷移。
|
Album art selector - frame view - |
|
最終的なフレーム単位での画像選択画面です。
その気になればファイル内のすべてのフレームを見る事ができます。
ひたすらNextボタンを押すことになりますが...。
全フレームの中から好きな画像を選べます。
ここまでやるなら、動画を再生しちゃえば良い気もします。
が、それをやるにはストリーミングできるWebサーバとか必要です。
それはさすがに本質を逸脱しまくりな気がしたので却下です。
|
Monitor screen |
|
モニター画面です。
SoC温度の変化グラフと各種ログ情報がさっくり出せる様になってます。
下の液晶っぽい画面に各種ログを表示します。上下左右にスクロールするウィンドウになってます。
|
Temperature log screen |
|
過去の9回分(起動毎)の温度ログを見ることができます。
リモコン開発のきっかけとなった機能ですが、このフォーマットに統合してしまいました。
|
Psuedo terminal screen |
|
簡易ターミナル画面です。
いや、sshで直接接続すりゃいいので、オマケのオマケで作って見ました。
|
Shutdown/Reboot confirmation |
|
ほとんどの画面についてるOffボタンを押すと、reboot/shutdownが選べます。
いきなり電源断は危険なので、誤爆防止の目的でもあります。
|