[レビュー & Tips] ODROID-X と Androidアプリで録音データを扱う時の注意点

3週間ほど間が空いてしまいました。
ブログはじめてから一番長く空いたかな?
北朝鮮がいろいろ騒がしかったりとネタが無かったわけではないのですが、ちょっと仕事が忙しかったりで疲れていたのでなかなか更新できず。

ということで、いい加減これ以上放置するとずっとほったらかしになりそうなので、一応更新しておこうと言うことで、仕事がらみのネタですが…

最近、仕事でODROID-Xという開発ボードをいじってます。

手のひらサイズ、開発向けクアッドコアプロセッサ Samsung Exynos 4412 搭載ボード「ODROID-X」発売、価格129ドル(約10,400円)
http://gpad.tv/develop/hardkernel-odroidx-exynos4412-quad/

会社で使っている実機の写真がこちら。
画像

画像



韓国の Hardkernel という会社が昨年夏に発売した機種で、特徴はなんといってもその大きさ。
先ほどのリンク先の記事の表を見ていただければわかる通り、サイズは9.0X9.4cm。ストレージとなるSDカードを刺した状態でも、11cmを超えない極小サイズです。

開発ボードと言うと、どうぶつの名前が付けられている PandaboardBeagleboard 、イギリスで安価にコンピューター教育ができるようにと言う主旨で作られた格安の Raspberry Pi などが有名(?)です。
が、個人的には、これまで仕事でPandaboardを触った上で、今回ODROID-X触ってみて、ODROID-Xの方に軍配を上げたいと思います。

ポイントをいくつか上げると
・コストパフォーマンスが良い~ Samsung Exynos4412 というかなり新しいCPUを使い、かなり高スペックにもかかわらず、ほかのボードとそん色ない価格。CPUやメモリの性能だけでなく、サイズの割りにUSBが6つも付いていたりと、外部拡張機能にも長けています。
・メーカーがAndroidOSを提供している~ほかのボードの場合、メーカーが提供しているのはほとんどLinuxディストリビューションのイメージだけで、Androidを使いたい場合、Linaroなど、別の団体がオープンソースで提供しているボード向けのOSを使います。が、オープンソースで任意団体が開発しているだけあって、いろいろ不具合があったり対応が遅かったりという問題が。OS自体をいろいろいじりたい、という方にとってはこれはむしろいいことなんだろうと思いますが、私のように、OSの上でアプリを動かしたい、というのがメーンの場合、OSは安定してしっかり動いてさえくれればいい、ということに尽きるので、メーカーが公式にAndroidOSを提供してくれるのはかなりうれしいポイントです。
・オプションパーツがメーカーサイトで買える~まだ使ったことはありませんが、買おうと思えば、ACアダプターはもちろん、外部接続するカメラやUSB I/Oボード、WiFiモジュール辺りまで一通り購入することができます。自分で動くかどうかわからないパーツを買って試さなくても、基本的には動くことが保証された状態で購入できるので、これもすごく助かります。
といったところ。
Pandaboardと比べたとき、劣る点といえば、WiFiやBluetoothなど無線通信機能が内蔵されていないというところですが、公式のオプションパーツを購入すれば使えるようになりますし、そもそも、本来的には日本国内では技適を取得していない無線機器は使用禁止のため、制度上使う事が出来ない機能となっており、大きな問題はありません。

個人的にもう一つポイントだったのは、韓国メーカーということで、メーカー直販サイトで購入した場合でも、発送のやり取りなどが韓国語でできると言うのも助かりました。

現在はODROID-Xの後継機であるODROID-X2や、ODROID-Xのサイズをさらに縮小したODROID-U2などを公式サイトで購入することができます。
http://www.hardkernel.com

英語や韓国語は苦手、という方や、注文して届くまで時間がかかるのはいや、と言う方は、一部輸入販売している国内販売者がいるようで、こちらのサイトなどから注文できます。

世界中で結構ファンは増えているようで、検索すると、英語圏の人が専用ケースを自作していたりします。
ということで、興味のある方はぜひぜひ。



==========================Android開発メモ
AudioRecordクラスを使って録音したデータを、UDPでネットワーク越しの別の端末に投げて、受けた端末でAudioTrackクラスを使って音を再生するアプリを作成中。
当初録音する時の再起呼び出し関数、 onPeriodicNotification の呼び出しタイミングにかかわる setNotificationMarkerPosition と setPositionNotificationPeriod について、512 と 1024 をそれぞれセットし、2048バイトを1つのフレームとしてデータを投げていた。
しかしこれでは音を再生する際にプツプツと切れるようなノイズがひどく発生。
いろいろ試行錯誤したが直らず、最終的に、それぞれの数値を 128 / 256 / 512 にすることでだいぶ状況が改善。
どうやら録音している音をストリームで扱う場合、getMinBufferSize で得られる数字より大きい数の setNotificationMakerPosition などを設定しなければいけないと考えていたのは勘違いのようで、ある程度小さい数でコマ切れにした方がいい様子。
今回作っているアプリのようにネットワークに流す場合は、ネットワークの負荷等も考慮したうえで適当な数値を見つけるとよさそう。


PandaBoard ES スタートセット
pandaboard.org

amazon.co.jpで買う
Amazonアソシエイト by PandaBoard ES スタートセット の詳しい情報を見る / ウェブリブログ商品ポータル



Raspberry Pi Model B (512MB)本体のみ
kalron

amazon.co.jpで買う
Amazonアソシエイト by Raspberry Pi Model B (512MB)本体のみ の詳しい情報を見る / ウェブリブログ商品ポータル



Raspberry Piユーザーガイド
インプレスジャパン
Eben Upton

amazon.co.jpで買う
Amazonアソシエイト by Raspberry Piユーザーガイド の詳しい情報を見る / ウェブリブログ商品ポータル


この記事へのコメント

この記事へのトラックバック

テーマ別記事