fresh digitable

めんどくさかったなってことを振り返ったり振り返らなかったりするための記録

ExoPlayerのAudioProcessorで頭外音像定位するオーディオプレイヤーを作っている

Androidのメディア再生のためのライブラリであるExoPlayerには、PCMになった音データを受け取って処理できるようにするAudioProcessorというインタフェースがある。これを実装したクラスのインスタンスを、プレーヤーインスタンスを作る時にいい感じに渡してやることでいろんな効果を掛けることができる。これを使って頭外音像定位を実現するオーディオプレイヤーを作っている。

github.com

主に頭外音像定位のデモ用に自分で使うために作ったものであるが、クローンしてビルドしたりその他ごにょごにょすることで手元の環境でも使うことができると思う*1。音量調整に難があり、たまにプチプチ鳴ることがある(2017/6/9 追記:あんまり鳴らないように修正した)。手元の開発環境はNexus5X(7.1.2)なのだが、これより動作の遅い端末では再生が難しいかもしれない。

頭外音像定位の原理などについては過去に触れたことがある。

akihito104.hatenablog.com

このアプリではいわゆるステレオ配置のスピーカシステム*2で音楽を聴く状況を再現しようとしている。イヤホンで音楽を聴いているのに、目の前にスピーカーが2つ置いてあってそこから音が聞こえるように感じたらいいな、ということである(弱気)。

デモでは普段イヤホンで音楽を聴くときの聴こえ方(頭内定位)と頭外定位の聴こえ方とを対比して体験してみてほしいので、効果を掛けるかどうかをスイッチで切り替えられるようにしている。

もし体験してみたいという方がいらっしゃれば、リポジトリのソースをビルドしたりその他ごにょごにょしていただいて手元の環境でお試しいただくか、リアルの私を捕まえてください。ちなみに私が持っている音源はアニソンか鼓童です。

追記

AudioProcessorでやってることについてちょっと詳しく書いた。

akihito104.hatenablog.com

*1:この記事を書いている途中で外部ストレージ読み取り権限をもらう処理を全然実装していないことに気がついたりした(小声) 2017/6/9 追記:実装した

*2:受聴者の正面から左右それぞれ30度(または45度)の位置にスピーカを置いて音を再生するシステム。このアプリでは30度。