Androidの48kHz問題を回避する必要がある
Androidの音楽再生アプリをいくつか調べてみたので各アプリの特徴など。まず、その前に
- 普通の人間の「耳」ではハイレゾとCDの違いはわからない(しつこいw)。
- それでも少しでもオリジナルの音に近い状態で聴きたい。
- 外付けのDACとか面倒なので対象はイヤホン出力。
という前提での話。デジタル音源を聴く場合、エフェクト無しでのアプリからの出力は全部同じになるので実は使い勝手だけで選んでも問題はなかったりする。ただ1点注意が必要なポイントがあってAndroidのOSにリサンプルをさせてはいけないということ。非ハイレゾ端末(かAndroid7以前)の場合、アプリの出力が48kHz以外だとOSは48kHzにリサンプルするのだがOSにリサンプルをさせると16kHzくらいから上がカットされてしまう。さすがに16kHzでカットされると若い人にはわかってしまうのではないだろうか。方法としてはアプリで48kHz(96kHzも大丈夫だったかな?)にリサンプルするかAndroid8以降の端末でAAudioのAPIを利用可能なアプリを使用する。もっとも16kHzでのカットの話を除けばサンプリング周波数が44.1kHzだろうが96kHzだろうが違いはわからずそれよりもイヤホンやイコライザーの設定の方が音に対する影響は全然大きい。また、ハイレゾに拘るより聴きたい曲を聴く方が楽しい。クラシックがハイレゾ向きだからといって年中クラシックを聴きたいか(クラッシックファンの方、ゴメンナサイ)?あとOpenSL ESは音質に関しては何ら寄与しない模様。OpenSL ESの出力がOSのリサンプラーに取り込まれる。あくまでもレイテンシの向上。ということでその辺りを中心に。
(2022/03/06追記)AQUOS wish+Powerampのハイレゾ出力で苦労したついでに少し情報が増えた。AAudioをしようしていればハイレゾというわけでもなくAAudio+MMAPという構成でハイレゾになるようである。AAudio自体はOpen SL ESの代替となるAPIでこれもレイテンシに効く。MMAPがサポートされるとAudioFlinger(この中にSRC、すなわちリサンプラーがいる)を回避するらしい。AAudio と MMAP | Android オープンソース プロジェクト | Android Open Source Projectあたりに公式の情報がある。
Play Music(標準プレイヤー)
- Android8以降であればAAudioを利用している(と思われる)のでイヤホンジャックからのハイレゾ出力が可能。
- アプリから出力されるサンプリング周波数は不明。
- リプレイゲイン非対応
foobar2000(無償)
- AAudioを利用していないのでイヤホンジャックからのハイレゾ出力は不可能。
- アプリから出力されるサンプリング周波数はリサンプラーで変更可能なのでオンにして48000の設定をする。
- リプレイゲインの解析と利用が可能。ファイルのタグに書けるはずだが手許の端末では何故か書き込めない。OSの設定か?書き込み権限は与えているのだが。
Onkyo HF Player(無償利用)
- AAudioを利用していないのでイヤホンジャックからのハイレゾ出力は不可能。
- アプリからの出力はイヤホンの場合、88.2kHz以上は44.1kHzにリサンプリングして出力されるためモロにOS標準のリサンプラーの餌食に。イヤホン出力用のリサンプラーもないのでPC等で48kHzにリサンプルしてから端末に取り込んだ方がいい。
- リプレイゲインは利用のみ可能?PC等でタグに書き込んで置く必要あり。
- イコライザーは細かく設定出来るようなので音を弄りたい人向け。
Poweramp(有償?)
- AAudioを利用しているのでイヤホンジャックからのハイレゾ出力が可能。
- アプリからの出力はAAudioを利用する場合、DACの最高値に合わせられる模様。
- リプレイゲインは利用のみ可能。
Neutron Music Player(有償)
- AAudioを利用しているのでイヤホンジャックからのハイレゾ出力が可能。
- アプリからの出力はリサンプラーでの変更もソースのままとすることも可能。
- リプレイゲインは利用のみ可能。ファイルにタグが設定されているか画面ですぐにわかるのがいい。
こうしてみるとどこかのテストでPlay Musicの評価が高かったのもわかる。Play Musicはきっちり上限まで再生出来ていてその他のアプリが上限カットされていたらそういう評価にもなる。自分としては昔から使っていたfoobar2000にするかNeutron Music PlayerにするかだがソースのままDACにいれられるということでNeutron Music Playerかな?DACに入れる前にサンプリングレートをできるだけ高くした方がいいという説もありその理由も納得出来るものではあったが。どちらにしても違いはわからないだろうしそれならばなるべく加工の少ない方で。
AndroidのSRCとfoobar2000のリサンプラー
(2023/07/29追記)そもそもSRCって何の略?と思ったら「サンプリングレートコンバーター」らしい。で、これがこの記事を最初に書いた頃は16kHz位でカットされていたが最近では16kHzでカットされるという事もなく20kHzまでは出ているようである。そうなるとアプリで48kHzにリサンプリングするのとSRCに任せるのはどちらがいい?という話になってくる。そもそもリサンプリングを回避できればそれに越したことはないだろうがそこはそこでまたいろいろ問題が出てくるので。ということでXperia 10 IVとAQUOS sense6で試してみた。結果、THD+Nの値で見るとXperia 10 IVだとOSに任せた方がよくAQUOS sense6だとfoobar2000のリサンプラーの方がよかった。とはいえ僅かな差なのでおそらく聴き分けは出来ないだろう。周波数特性のグラフと違ってこのあたりは正確に計測出来ているか怪しいしTHD+Nが全てでもないのであくまで参考程度。それでも昔と違って今は20kHzに拘らなければあまり気にしてもしかたないという感じか。20kHzはそもそも聞こえないしハイパーソニック・エフェクトもイヤホンでは無意味なはずなので。なお96kHzの音源を使用した場合、SRCは20kHzで頭打ちだがfoobar2000で48kHzにリサンプリングした場合は22kHzまで出力される。まあここも20kHz超なのでそれほど拘っても意味が薄いかな。