Google Pixel 8

ご存じの方もいるかもしれないが、昨年10月にリリースされたAndorid 14において、OSのオーディオ機能が強化された。具体的には、「ロスレスUSBオーディオ」がサポートされたのだ。

まあ、半年も前の話なので「タイミング的に今ごろ!?」と言われてしまいそうだが、編集部から「詳しい情報がないので、ぜひ検証してほしい」とGoogle Pixel 8が送られてきたので、どんなものなのかチェックしてみた。

そもそも“ロスレスUSB”って何のことよ?

筆者は普段、Google Chrome、Google Drive、Google meet、Google Calenderと“Googleのサービス”にどっぷりハマっていて抜け出せないが、パソコンはWindows、スマホやタブレットはiPhone/iPadを使っているため、ハードウェア的にはGoogleのAndroidを使っておらず、あんまり慣れていないのが正直なところ。

数年に1度はAndroidのスマホを購入したりはしているけれど、前回買ったのはコロナ前だからAndroidスマホをちゃんと触るのは5年ぶりくらいかもしれない。

なので、Android 13とAndroid 14の違いがちゃんと分かっているわけではないけれど、PC Watchのニュース記事などを見ると、Android 14で「ロスレスUSBオーディオの対応」と書かれていた。しかし、それがどういう意味なのか、記事を読んだだけではよくわからない。

そもそも、ロスレスUSBって何のことだ? と。FLACとかApple Losslessに対応したという意味ではないようだし……。

そこで「Andorid14 ロスレス」などと検索してみたけれど、なぜかあまり多くの情報が出てこない。がいくつかの情報を見てみると、“排他モードをサポートした”といったことが書かれている。

確かにWindowsも、WDMにおいて共有モードだとビットパーフェクトが実現できない。しかし排他モードにして他のアプリからの音が入ってこないようにすることで、カーネルミキサー(正しくはオーディオエンジン)を通さずビットパーフェクトを実現できるようになっている。恐らくそれに近いことと思われる。

ただもう少しいうと、これまでAndroidでは、基本的に内部で48kHzにリサンプリングしてしまうという問題があった。

そのため、せっかくUSB-DACなどを使って高音質な再生をしようと思っても、そもそも44.1kHzの音源や96kHzの音源がすべて48kHzに変換されてしまうため、原音のまま聴くことができなかった。聴くためには「ONKYO HF Player」のような専用のアプリを使う必要があった。

それが今回のアップデートで改善され、カーネルミキサーのようなものをバイパスできるようになった、というのが、ここでいう「ロスレスUSBオーディオの対応」ということのようだ。

ビットパーフェクト再生の検証に、どの機材を使うか悩む

ここで気になるのは、OS側が「ロスレスUSBオーディオ」に対応すれば、自動的に既存のアプリがそれに対応するのか? ということだろう。

そうであれば、みんなハッピーで、誰でも簡単にAndroid 14の音質におけるメリットを享受できる。もしも、自動的に、とまではいかなくてもアプリ側が簡単にシステム変更できて各プレーヤーが「ロスレスUSBオーディオ」対応版を出してくれれば、問題はなさそう。ただ、ネット検索をしてみたところ、そうした情報がまったくといっていいほどないのである。

その中で見つけられたのが、Android Open Source Projectのページの中にある「USBデバイスで優先されるミキサー属性」という開発者向けのページ。

ここを見ると確かに「USBデバイスでの最適なビットパーフェクトの再生ミキサー動作もサポート」と記載されているほか、MQAやDSDもサポートしている、とある。

また「アプリ、フレームワーク、HAL間のインターフェース」としてシステム図が掲載されているが、ビットパーフェクトを実現させるためには、その設定が必要なようで、デフォルトではほかの音とミックスされてしまい、排他的な動作はしないように思える。

同ページより引用のシステム図

そこで実際にPixel 8でビットパーフェクトな再生ができるのか、試してみることにした。

そのためには準備が必要になるわけだが、まずはPixel 8にUSB-DACではなく、USB-DDCを用意する必要がある。DDCとはデジタルtoデジタル・コンバータ。つまりUSBからの出力をS/PDIFで出力するためのものだ。一方、その信号を捉えるためにレコーダーの準備も必要となる。つまりDDCから出てきたS/PDIFの信号を正確に捕まえることができる機材だ。

が、しばらくビットパーフェクトの実験をしてなかったので、どの機材を使えばいいのだろう……と少し手間取ってしまった。

というのも、近年S/PDIFの入出力が可能なオーディオインターフェイスが減っていて、現行機種として使えるものが少ないのだ。

さらにS/PDIFは乗っていればどれでも同じというわけ行かないのが難しいところ。

その機材が何もせずにそのままUSBとのやり取りをしてくれればいいのだが、このインターフェイス内にサンプリングレートコンバーターを入れてしまっているものが多く、それだと例えサンプリングレートを変えなくても、一旦48kHzにしてから戻すといった処理をしてしまうためビットパーフェクトが成り立たないのだ。

というわけで、先にレコーディング側の機材として、Windowsに「Sound Forge Pro 17」をインストールし、オーディオインターフェイスにRMEの「FIREFACE UCX」を接続。これでCDプレーヤーからの音がビットパーフェクトで録れるかを試してみた。

が、なぜかうまくいかない。これは筆者の設定の仕方が悪かった可能性が高そうだが、どうしてもサンプリングレートコンバータを間に挟んでしまうようなのだ。

実際、CDプレーヤーから44.1kHzの信号をオプティカルで送り、FIREFACE UCXのオプティカルで受けたものを48kHzや96kHzの設定で受けても録音できてしまう。確かにいい音ではあるけれど、これではビットパーフェクトにならない。

この問題は後日確認するとして、とりあえずビットパーフェクトの実績のあるものを……ということで、Digital Audio Laboratoryの過去記事で使った機材を探してみると、Rolandの「UA-101」があった。

上がUA-101、下がFIREFACE UCX

UA-101は、2005年発売の機材なので14年も前のものだ。調べてみるとWindows 10まではドライバがあったけれど、Windows 11は非サポートとなっている。試しにUSB接続してみたものの、やはり動作しない。

が、ここで諦めるわけにもいかない。

ちょっと調べてみたところ、どうやらWindowsのデバイスセキュリティの「コア分離」というところにおいて、「メモリ整合性」をオフに設定すると、自動的にWindows 10用のドライバがネットから降ってきて使えるようになる、らしい。

「メモリ整合性」をオフに設定する

試してみたところ、確かにASIOドライバも含めて使えるようになった。もちろんメーカー保証対象外の方法だし、あくまでも応急措置的なものではあるけれど、これを使ってみることにしよう。

ASIOドライバも含めて使えるようになった

一方、Pixel 8に接続するDDCはコンパクトでシンプルな機材であるオーディオテクニカの「AT-HA40USB」を使ってみた。これも以前、この連載で使っていてうまく利用できていたものだ。実際接続してみたところ、Pixel 8のバスパワーだけでしっかり動作した。

オーディオテクニカ「AT-HA40USB」

ちなみにアナログ入出力しかないけれど、ZOOMのオーディオインターフェイスである「AMS-22」の場合、USB-C to USB-Cケーブルで利用できる。AT-HA40USBの場合は、MiniUSB端子であるため、OTGアダプタを介して接続している。

ZOOM「AMS-22」の場合は、USB-C to USB-Cケーブルで利用可能

オーディオテクニカ「AT-HA40USB」は、OTGアダプタを介して接続

アプリを変えて色々試すも「出力は48kHz固定」だよ

準備に時間がかかってしまったが、これでビットパーフェクトの実験ができるようになった。

さっそくPixel 8に実験素材とする短い44.1kHz/16bitステレオのデータを転送し、これを再生しようと思ったところ、以前使ったことのあったGoogle Play Musicのプレーヤーが見当たらない……。まさに浦島太郎状態だが、2020年に廃止され、YTMusic(YouTube Music)に置き換えられていたことに初めて気づいた次第……。

“YouTube”がベースだとすると、48kHzが基本となっていそうなため「ビットパーフェクトは期待薄だな」と思いつつも試してみる。

そもそもYTMusicでどうやってPixel 8内にあるファイルを再生するのか分からず、ここでも戸惑ってしまったのだが、ライブラリの「デバイスのファイル」というのを選ぶことによって、再生できるようになった。

最初、YTMusicでどうやってPixel 8内にあるファイルを再生するのか分からず戸惑った

ライブラリの「デバイスのファイル」というのを選ぶことによって、再生できるようになった

さっそく、これをWindows側で録音しようとしたところ、うまく動作しない……。

そう。UA-101の場合、サンプリングレートの切り替えが自動ではなく、スイッチを使って手動で設定する形になっている。だからこそ、このビットパーフェクトの実験では安心でもあるが、44.1kHzの信号が送られてこないためインジケーターのLEDが点滅状態となっていて、入ってこないのだ。

レートはスイッチを使って手動で合わせる設計

そこで48kHzにすると、今度はしっかりロックされて音が聴こえてくる。つまり、ビットパーフェクトの実験うんぬんの前に失格。サンプリングレートコンバータを通ってしまっており、YTMusicがAndroid 14でサポートされた「ロスレスUSBオーディオ」に対応していないのだ。

次に試してみたのが、ハイレゾ音楽プレーヤーとして実績のあるOnkyo HF Player。これはアプリ内課金することで、USB-DACへのハイレゾ出力を可能にし、Android内のミキサーやサンプリングレートコンバータを通さずにオーディオ出力することができた。もしかしたらアプリ内課金をしない無料の状態でも、それが実現できるようになっているのでは……と試してみた。

が、残念ながら結果はYTMusicの場合と同様。出力は48kHz固定となってしまって、録音するところまでたどり着くことができなかった……。

Onkyo HF Player

そんな中、発見したのが、FilesアプリからWAVデータを直接開く、という方法だ。

Filesで音声フォルダの中を開いてみると、WAVファイルの一覧が見え、紫の音符のアイコンがついている。そして、これをタップするとYTMusicではないプレーヤーが起動し、再生することができる。

Filesで音声フォルダの中を開くと……

……WAVファイルの一覧が登場

タップすると、YTMusicではないプレーヤーが起動・再生された

見たところ、Filesが持つ簡易プレーヤーのようで他のアプリが起動しているわけではなさそう。では、これが「ロスレスUSBオーディオ」に対応しているのだろうか……。

が、残念ながら結果はこれもYTMusicと同様で、44.1kHzのデータを再生しても48kHzにリサンプリングされてしまっているので、失格。

どゆこと!? 1度目と2度目の録音データ不一致なの怪

もしかしたら、AT-HA40USBやUA-101側に問題があってうまく動かないのでは……と不安になり、USB接続をそのままPixel 8からiPhone 15 Proに差し替えて、iOS標準のミュージックで再生してみる。

Pixel 8からiPhone 15 Proに差し替えてみる

すると、この場合は44.1kHzでロックされて、Sound Forge側に音が入ってきた。そして、これを録音した上で、efu氏開発のWaveCompareで原音と比較してみたところバッチリ一致してくれた。ちなみにWaveCompareはすでに公開が中止されているが、以前に使ったものが手元にあったので、これを利用している。

Sound Forge側に音が入ってきた

WaveCompareで原音と比較してみたところ、バッチリ一致

最後にもう一つ試してみたのは、先ほどのOnkyo HF Playerをアプリ内課金した状態でのビットパーフェクトについてだ。実験用に課金をしようと思ったところ、10年近く前に購入していたようで、それを復元することができた。

この状態で、改めてAT-HA40USBを接続すると「HF PlayerにUSB Headphne Ampへのアクセスを許可しますか?」という表示が出てくる。

これをOKすると、AT-HA40USBの対応サンプリングレートが4つ表示され、接続が確立される。そして、確かに44.1kHzでの出力が可能になり、UA-101側もロックされた。そこで、これを録音して、元データとWaveCompareで比較してみたのだが、なぜか一致しない。

再度同じ実験をしてみてもダメで、試しに1回目の結果と2回目の結果を比較しても一致しないという状況になってしまった。

1回目の結果と2回目の結果を比較しても一致しない

音を聴く分にはまったく問題なく、キレイな音で再生できているのだが……。この原因については探り切れていないが、どうもアプリの内部的になんらかが不安定要素がありそう、ではある。

以上が、Android 14がリリースされてから半年後の現在行なった実験結果である。これを見る限り、OS側は音をよくするための準備は整えたものの、アプリ側がまだ対応できていないというのが実情のようだ。

可能であればGoogleが率先してこれに対応するプレーヤーを標準搭載してほしいところだが、Windowsと同様でOS側の担当とアプリ側の担当がまったく別部門すぎてうまく連携がとれていないということなのかもしれない。

そうだとすればサードパーティーに期待するしかなさそうだが、せっかくGoogleがいいAPIを作ってくれたのだから、ぜひそれに対応するいいアプリを作ってほしいところだ。