mbed はハイレゾな子守唄を奏でるか?


mbed とは

今さら私が語るようなところはないので、公式サイト見てください、ということになるけれど、ハードの知識がまったくない私でもブレッドボードと組み合わせば、いろいろ遊べるプラットフォームである。

オンライン・オフラインの開発環境が用意されている、mbed のマークがあれば気にしなければならないことがすごく減る、公式・非公式含めライブラリも最初からたくさんある、といったあたりがメリットだろうか。

あと、各社から出ている mbed ボードも安い。(外RAM積んだりして他に比べれば高いのもあるけど。)

それより何より、私としては機能ピンがほぼ全部取り出せるのが一番大きい。ハンダ付けができないわけでもないけれど、基本的にはソフトウェアを書く人間なので、それ以外の障壁は、少なければ少ないほど、低ければ低いほどいい。

Arduino もそうだけれど、とにかく、この数年でもろもろの障壁がものすごく低くなったのを知れたのはすごく楽しい。賛否両論あるだろうのだろうけど、ユーザーとして楽しいもんは楽しい。

電子工作のキホン

こういった環境が手に入ったら何をするか。やはりまずは L チカだろう。ハードウェアの設計で飯食ってる人でもやるのだから、まぁ、そういうことだ。

小難しく言えば、基板をちゃんと動作させられているか、プログラムは正常に動いているか、といった最低限のことが視覚的に分かるのは大きいということだろうか。実際には何も考えてなくてただの「お約束」である。

ただ、なぜか L チカには独特の魅力があるようで、ただピコピコしてるだけなのだが、確認という目的以上の長時間眺めてしまうことはよくある。

複数の LED が並んでいれば通称「ナイトライダー」をやらせたくなるし、PWM が使えるなら、じわっと光り消える効果を無駄につけてみたくなる衝動に駆られるなど、ただの LED を光らせるという行為にしては、全く侮れないところだ。

で、次は?

だが、これもよく見る光景なのだが、L チカが一通り(ここでいう一通りはだいたいその日丸一日を指す)終わったところで、己の業の深さを思い知ることになる積み基板の山に加える人も多い。

(この業の深さを思い知った人は、mbed 祭りなる奇祭に持ち寄り、すべての祭事の最後でお焚き上げをするという噂を聞いたことがある。場所によってはお焚き上げの周りで舞うこともあるらしい。)※デマ

そういう業の深さもあるのだが、ここで新しい一歩を踏み出せた人は、LCD に文字を出したり、SD からデータを読んで MP3 を鳴らしてみたり、というデモとしてきっちり成立するような道を歩むのだが、一方で Ethernet の利用に関する話題が、他に比べると少ない気がしていた。

私は途中がどうあれ、最終的には Ethernet を動作させて何かさせることが多く、手間も他とあまり差はないように思っていたのだが、最近私が思い至ったのは、

単体でデモができない

ということだ。

そりゃそうだ。Ethernet が使えます、というからには対向が必須なわけだし、いちいち IP うんたら気にしなくていいように DHCP しゃべらせるか、といった具合になってしまうので、結果的には、mbed ボード、DHCP のしゃべれるルーター、対向マシン、の少なくとも3つは必要になる。

展示と発表の同時2本立て、ということになれば展示用には専用のコンテンツサーバーを用意したくなる。

いまどきスマホとかで操作するでしょ、とかなるとルーターには無線 AP 機能くらいも欲しくなる。

たいしたデモでもないのに荷物も手間も多くなってしまってる

ということだ。

「おまえ、それ LUNA の前で言えんの?」という話をされると「すいませんでした」となるし、実際には NUC とか小さい NAS とかいろいろあるおかげでずいぶんと楽にはなってはいるのだが、もうちっとなんかとかしたい。デモ用電源確保を容易にする意味でも。

そういう話はあるかもしれないが、目の前に RJ-45 の口があるのだ。使うしかないだろう。

そうだ、音を奏でよう

とある世界最大の総合楽器メーカーに勤めていたのだし、音を奏でよう。

ただ音を鳴らすのではなく、無駄に頑張って、高音質とされる音源を奏でよう。

最近は、ハイレゾ音源が簡単に手に入る環境も整ってきたし、Apple Lossless も FLAC もあるので、そういった音源には事欠かない。そうだ、これを奏でよう。

ハイレゾ音源とは

私は「ハイレゾ音源」の定義を見たことがない。というか、雑誌、メーカー等で統一されているわけではなくバラバラである。

おおむね CD を基準に、それよりも分解能が高ければ高音質とされるのは一致している。

高音質化の方向性は主に2つあって、時間軸の分解能を上げる方向と振幅幅の分解能を上げる方向がある。

CD が 44.1kHz/16bit なので、44.1kHz/24bit も「ハイレゾ」だし、96kHz/16bit も「ハイレゾ」と呼ばれる。

サンプリング周波数が 96kHz になると量子化ビット数も 24bit になるのはなんか理由があるのだろうか。(マニアの人には時間と振幅の分解能のどちらが本当に音を「激変」させるのか調べていただきたいところではある。)

ハイレゾ音源を奏でられるのか

UPnP の仕様は公開されているし、実装もたいしたはないので、音源を取得できるようになるまではすぐにできた。

いざ、デコードしてみるべ。

すいません。無理でした。はい。なめてんのか、というくらい CPU 性能が足りません。分かっていたことだけれども、まったくダメですな。

LPC4088 だとそりゃ無茶というものでした。

そこで考えた。サーバーにデコードさせてしまえ、と。

そこで作ったのが musica という UPnP AV ベースのサーバー。

元々は検証用になんちゃってサーバーを作っていたのだけど、NAS に入れて常用できる程度に作り直して、トランスコード機能も載せたった。

これを使えば、受け側の性能が低くても全然気にすることなく、どんな音源も奏でられるようになったのでした。

musica のソースを公開する気は欠片もないけれど、mbed 側のコードはもうちょっと整理して出せるところは出す予定。2-clause BSD ライセンスあたりか。

出せるとこは、というのは「お察しください」というやつですな。

というわけで、mbed に UPnP AV スタックを載せてハイレゾ音源を奏でられるようになりました。

(実際はただリニア PCM を受け流すだけだし、192kHz は無理だけど。)

mbed 祭りもあるようだから、こういう使い方もできますよ、ってことで。


戻る