ライブラリ発見

先日、.NET環境でオーディオ再生アプリのサンプルを探していたら、NAudioというライブラリとそれを使っているサンプルを見つけた。

サンプルを動かし、ソースもあったのでダウンロードして軽く見た。高速FFTのソースも含まれていて、利用しているアプリをダウンロードして動かしたら、スペアナ(古いか、スペクトル・アナライザー、リアルタイムで周波数成分を解析、表示するあれですな)を表示するサンプルだった。

それもソースを読んだ。ざっくりなので、自分のアプリに利用できるまではライブラリの使い方を理解していない。

が、素のNAudioではAACファイルに対応していないはずなのに、このスペアナを表示するアプリは、AACファイル(iTunesで作ったファイルだからMP4コンテナ形式)を再生できた上に、アルバムアートワークまで表示した。プロジェクトを見ると、base_aac.dllというライブラリが追加してあった。

調べると、このサイトBASE Audio Libraryとして、ライブラリが一式あった。非商用利用ならフリーでいいらしい。とりあえず、問題ない。標準で、MP3とWaveファイルがサポート、アドオンで、AACとAppleロスレスのアドオンがあった。他にもアドオンがあったけれどもとりあえずここまであれば当面の目的には足りる。

.NET用のインタフェースがあったのでダウンロードしておいた。

ダウンロードしたファイルを確認していないのでまだ使い方も何もわかっていないが、これで、再生したいファイルに対する、デコーダ、出力がとりあえず揃ったことになる。しいて言えば、DAAPをハックしたライブラリを.NET用に移植するか探してくるかしないといけないくらいか。それは後回しでも問題はない。プレイヤーとしては機能を作り込める。

ゴール地点は、Android用の音楽プレイヤーであり、Android用にデコーダを自作するわけではなく、NDKでコンパイルするだけなので、Windowsで他からライブラリを引っ張ってきても問題はない。再生のAPIを変えるだけだ。重要なのは、ファイルを順番に取得して、デコードして、出力するという制御をうまくこなすこと。それをきっちり実装できれば問題はない。

そして、Android2.1をターゲットに考えているから、NDKかJavaを使って、イコライザやスペアナを実装して行かないといけないので、その部分のソースを用意するというのが本題。Windows用のプレイヤーは本題ではなく、アプリの本題はiTunesとの連携、Androidプレイヤーの母艦機能である。iPodの母艦のiTunesをプレイヤーとして使う、だから、Androidプレイヤーの母艦もプレイヤーとして使えるように作る、というのが副題。Androidアプリでデコード、再生のテストはパフォーマンス的に時間が掛かり過ぎるというのもあった。

Windows用アプリならメモリの管理やCPU使用量などをいい加減に作ってもとりあえず動く状態に持っていけるので、そこからパフォーマンスチューニングして、軽くしていく、というアプローチができたらいいな、という計算である。

コメント