Windows Performance Analyzer |
NestHubを買って、NestHubからならばプレイリスト単位でのYoutubeMusic再生ができることがわかり、自分の中でBluetoothブームが再燃しました。
NestHubが対応しているBluetoothコーデックを調べてみると、特になにも書いてありません!!
ということはBluetooth機器ならば必ず持ってるSBCだと思われます。
私の中で「SBCはBluetooth音楽コーデックの中では最弱!」という認識があり、実際一般的にはそのような認識だと思います。
Bluetooth機器はスマートフォンと出会ってから長いこと付き合っており、経験上色々疑問も持っていたので併せて解消を試みました。
今までのbluetoothや音質関連のできごと、記事など
- GoogleHomeMiniで音を飛ばそうとした記事とか
- YoutubeMusicの無料版の音質設定が標準(128Kbps)だった件(まだ書けてない記事)
- ChromeCastAudio買った件(これも草案のまま)
1つ目の疑問
SBCでも案外いい音で鳴るよね?遅延も言うほど遅れてない?SBCについて調べていると、感覚じゃなくちゃんとデータを持ってコーデックについて語っている方のサイトで学ばせてもらい。SBCにも設定があって設定次第ではaptxやAACに負けないということを理解しました、遅延も別に調べましたが意外と遅くない(220ms)ということで感覚と一致します。
その設定がbitpoolという値のようで、これが53などに設定されていれば高音質(328kbps)で転送で来ているということらしいのです。
2つ目の疑問
そのBluetoothデバイスが対応しているコーデックを確認する方法はあるのか?
Androidの場合はBluetooth HCI snoopログを見ればよいということ。
こちらの経験値ノートさんが解説してくれています。
https://expnote.com/android-bluetooth-sbc-bitpool/
PCからはできないのか?と調べますと
qiitaでnobu-mapleさんが解説してくれている方法と、その記事のソースになった外人さんサイトでわかる
https://qiita.com/nobu-maple/items/8cb2f95a26228d0d22ed
最終的にどのコーデックが採用されたかもわかるので、
Macの場合はAdditional Tools for Xcode を入れてbluetooth explorerを使えば結構情報がわかるようです。時間があったらやってみます。
Nest Hubのコーデック
Windowsから調べたところNest HubはSBCとAACに対応してそうだった。
0,0,0(SBC)と2,0,0(AAC)のところ
Line #, Provider Name, Task Name, Opcode Name, Id, Process, Event Name, Cpu, ThreadId, PartA_PrivTags (Field 1), A2dpStandardCodecId (Field 2), A2dpVendorId (Field 3), A2dpVendorCodecId (Field 4), BTDeviceAddress (Field 5), Field 6, Field 7, Field 8, Field 9, Field 10, Field 11, Field 12, Field 13, Field 14, Field 15, Field 16, Field 17, Field 18, Field 19, Field 20, Field 21, Field 22, Field 23, Field 24, Count, Time (s) 84, , , , , , Microsoft.Windows.Bluetooth.BthA2dp/A2dpAvailableRemoteCodec/, 15, 0, 50333696, 0, 0, 0, 238505018397352, , , , , , , , , , , , , , , , , , , , 1, 10.808201000 85, , , , , , Microsoft.Windows.Bluetooth.BthA2dp/A2dpAvailableRemoteCodec/, 15, 0, 50333696, 2, 0, 0, 238505018397352, , , , , , , , , , , , , , , , , , , , 1, 10.880142800
Windowsとつなぐと、WindowsはAACはできないのでSBCかaptxなのでSBCとなりました。証拠残していないですが、AndroidとはAACでつながってた記憶。
bitpoolを確認する方法があるのか?
一応それっぽいのは出ている、608,53,5の53のところ
Line #, Provider Name, Task Name, Opcode Name, Id, Process, Event Name, Cpu, ThreadId, PartA_PrivTags (Field 1), A2dpSbcBitRate (Field 2), A2dpSbcMediaFrameSize (Field 3), A2dpSbcBitPool (Field 4), A2dpSbcFramesPerPayload (Field 5), A2dpSbcFrameSize (Field 6), A2dpSbcBlocks (Field 7), A2dpSbcChannels (Field 8), A2dpSbcChannelMode (Field 9), BTDeviceAddress (Field 10), Field 11, Field 12, Field 13, Field 14, Field 15, Field 16, Field 17, Field 18, Field 19, Field 20, Field 21, Field 22, Field 23, Field 24, Count, Time (s) 104, , , , , , Microsoft.Windows.Bluetooth.BthA2dp/A2dpSetSbcBitrate/, 5, 0, 50333696, 347428, 608, 53, 5, 119, 16, 2, 3, xxxxxxxxxxx, , , , , , , , , , , , , , , 1, 6.841020300 105, , , , , , Microsoft.Windows.Bluetooth.BthA2dp/A2dpSetSbcBitrate/, 16, 0, 50333696, 347428, 608, 53, 5, 119, 16, 2, 3, xxxxxxxxxxxx, , , , , , , , , , , , , , , 1, 11.883254000
Bluetooth機器を古いのから新しいのまで色々つないでみましたが、ここの値は変化しないため、現在の接続や機器の情報ではなくWindows自体の設定値なのではないかと感じます。列名で調べてみたりするが情報は見つかりませんでした。
疑問がなんとなく解決した情報
色々調べた挙句、こちらの株式会社シーデックスさんのサイトに到着しました。
https://www.cdex.co.jp/bluetooth_sbc.html
SBCはリアルタイムでの接続性を重視して、状況に応じてデータレートを落として通信するものらしく、通信中に環境に応じて賢く切り替えているということだ。
実証実験のデータ掲載があるわけでもないですが、内容が腑に落ちます。
それからワイヤレス機器は電池の都合もあり、転送量を減らす場合もあるということで、SBCは音質で勝負しているコーデックではないという説明をみてなんだか色々納得した。
bitpoolの値を一瞬見たところでリアルタイムモニタリングでもできないと意味がなさそう。
Nest Hubを活用に当たって
PCからNestHubへの接続とNestHubからBluetooth機器に接続するので両方が同じコーデックに対応しているかはわかりませんが、同じと仮定するとAACでつなげられるレシーバーを用意すれば良いのかな?という感想です。
でもsbcでもaacでも自分の耳では聴いてもわからないような気がします。安い中華イヤホンとSonyのイヤホンでは規格は同じでも聴いたときに受ける感覚が違ったりするので、色々組み合わせてみて自分が心地良いと思うパターンで聴けばいいのかな。
楽にBluetooth Codecを調べる方法
Bluetooth Tweakerなるソフトを使うと簡単に調べられました。
切断とか接続が必要だったので、やってることは上の手順と同じっぽい。
ただ制限が厳しく無料お試しでは調査できるのが1Bluetoothデバイスのみ、且つ、ライセンスはPC毎でPC変わったら再び課金ということで近いうちにマザーボード交換しようと考えていたので使うのを止めました。
とても便利なのでPC毎ライセンスとかいうケチくさいSDGsなこと言わなかったら迷いなくライセンス購入したんですが、 自分もケチくさいSDGsなのでそれほど手間でなければ節約方向で自分でやれるなら自分で。