• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

なかるうのブログ一覧

2024年05月25日 イイね!

CarPlayでUSBオーディオ

CarPlayでUSBオーディオ中学生の時、オーディオ店の試聴会でおじさん達を横目に
「右のスーパーツイーター鳴ってないですよ、それ」
とうっかり口走ったら追い出されました。若かったな~(遠い目)
それなりに機器を買えるようになる頃には聴力が衰えているなんて、オーディオとは無情な趣味です。










遅ればせながら我が車もハイレゾ対応を果たしました。96kHz処理となったプロセッサーアンプは48kHzまで、スピーカーも30kHzまでは出せるはず。
あ、これだと業界の定義には足りないんだっけ。まぁ、40kHzを再生できれば高音質!なんてものではないことは皆さんもう気付いてるんでしょ?気にせず進みます。
これまでプロセッサーが未対応であるのを言い訳にCD音質特化でやってきたのですが逃げられなくなったので、クルマで快適に、しかしダウンサンプルなど無くちゃんとハイレゾ体験するには?と考えていた方法を試してみました。


システム図
こんなシステムで実験しました。普通は黒のライン、今回は下のラインで、ここでのUSBはUSBメモリーではなくスマホからのUSBオーディオ出力であることに注意してください。
alt

ディスプレイオーディオ(ワイヤレスCarPlay対応品)
alt
国内メーカーではアルパインに続きカロからも対応機種が出ました(2024/11 ケンウッドも)。そちらはAndroid Autoもワイヤレス対応していますが、今回の使い方ではiPhoneをおススメしておきます。理由は後ほど。
CarPlayでは有線接続の方が音質が良いとされています(末尾に遠回しに書かれています)が、今回さらに高音質を目指すためスマホのUSBは別のUSBオーディオ出力用に使います。ワイヤレス接続となるDAは操作専用に使い音質には関与しません。
この場合車載ルーターなど他のWi-Fiネットワークには参加できません。これはワイヤレスCarPlayが(Android Autoも)通信方式として1対1接続のWi-Fiダイレクトを使用するためです。

USBオーディオ機器
alt
プロセッサー、DAC、DDCなどお好みで。上でも述べた通りUSBにはいくつかタイプがあり、ここで使えるのはUSB Audio Class対応のものです。

Lightning - USB 3カメラアダプタ
alt
スマホに給電しながら使えるのは「3」がつく方のアダプタ。本体部のUSB(A端子)側にUSB機器、Lightning側に電源を接続します。
最新のUSB-C対応iPhoneの場合は、Apple純正の同等品はまだ無くHDMI付きの大柄なものになるようです。市販のPD対応HUBは使えるんだろうか。

CarPlay/USBオーディオ対応アプリ

(2024/8/10更新)自分はこんなアプリを使ってます(データ専用SIMのため電話は未使用)。このうち「Apple Music」「Roon ARC」「ベルリンフィル(Digital Concert Hall)」はロスレスやハイレゾロスレスに対応しています。
今回は「自宅からロスレス配信」のRoon ARCで試します(他のアプリも追記)。述べたようにWi-Fiは使えないのでモバイル通信で受信します。


接続手順
スマホをCarPlayに接続しておきます。といってもエンジン始動で自動接続するので初回以外特にすることはありません。

スマホとUSBオーディオ機器を(こちらは物理的に)接続。
コントロールセンターを呼び出し、右上のAirPlayアイコンをタップ。
※アプリ側に同様の設定がある場合はそちらでも可能です。
alt

CarPlayとUSBオーディオが表示されています。
alt
USBオーディオ(「Primary Play Interface」がプロセッサーのUSB入力)を選択すると、画面はCarPlayのまま音声だけUSB側に切り替わりました。成功です。
実は以前USBオーディオの代わりにAirPlayレシーバーで同じことができないかと試した(この場合CarPlay側が有線接続)のですが、その時はAirPlayを選択するとCarPlayの接続が切れてしまいました。USBオーディオに対しては音声のみルーティングできるようです。

alt
もちろんハイレゾもロスレス伝送できています。CarPlayの音声仕様はUSB接続のロスレスでも48kHz止まりでワイヤレス接続時はAAC伝送(WWDC2016のプレゼンテーションより)、DAにはデジタル出力もないのに対してアドバンテージです。

ただし以前実験した結果では、4G回線でRoon ARCを使ってストリーミングできるハイレゾは24bit/96kHzがぎりぎりいけるかどうかで、安定的に常用するのは困難でした。その後回線を変更し96kHzの成功確率は上がりましたが、それでも100%にはなっていません。
高レートの音源はRoon ARCのダウンロード機能を使って予めスマホにコピーし、CDフォーマットはストリーミングするよう設定すれば全ての音源をロスレス再生できます。自分のライブラリを集計してみたら、512GBのiPhoneが必要と出ました…

このように最初だけスマホでの操作が必要ですがあとは自由。
alt
通常のCarPlayとしてDAの画面で操作することも、

alt
カメラアダプターが野暮ったいのと白くて目にうるさいので、CableJiveの延長ケーブルを使ってコンソールボックスに隠しました。

ナビアプリと併用したり、DAとスマホで2画面運用することも可能です。CarPlay対応でないアプリもこの方法で使えます。
残念ながらナビアプリの音声はUSB側には割り込んでくれませんでした。これさえクリアできればパーフェクトだったのに惜しい。(これは再生アプリがUSBを排他的に使用できていることの証左でもあります。96kHzや192kHzで再生中に案内音声を割り込ませる「ハイレゾ対応ナビアプリ」なんてあったらたまげるけどねw。余計な音声が出ないのでかえって好ましいという人もいると思います。)
案内が必要な時は音質を気にしている場合でもないのでアナログ接続を使えばいいか。




以上で実験終了。
ガチなオーディオではUSBと言えどソースユニットによる音質差はあり、今回のようなスマホベースのシステムで高級DAPやハイエンド車載プレーヤーのレベルまで行けるかどうかはわかりませんが、ロスレスで伝送できておりデータとしては同じ。十分高音質と言ってよいと思います。それが使い勝手の良いCarPlayで得られるのは魅力です。
ワイヤレスCarPlayなら今後も純正採用されるでしょうから、社外品の接続が難しくなってきたカーオーディオでは希望が持てる方法ではないでしょうか。

加えて、演算能力に長けるスマホなら信号処理による音質向上も期待でき、「化ける」可能性もあるのでは?と思っていますが、このネタはいずれまた。




(2024/9/9追記)
ロスレス再生が可能な他のアプリも試してみました。CarPlayとスマホの画面を並べています。

Apple Music / アップルミュージック

Apple Musicでは、44.1/48kHzのALACを「ロスレス」、88.2/96/176.4/192kHzを「ハイレゾロスレス」と表示します。配信されているフォーマットはスマホ側には表示されますがCarPlayの画面ではわかりません。


ロスレスのバッジをタップするとフォーマットが表示されます。


ロスレスやハイレゾロスレスでの配信には設定が必要です。設定してもディスプレイオーディオでは48kHz再生となるのは上で挙げた資料の通り。またUSB出力を選択し設定した音源があっても、回線速度が十分でない時は自動で下位のフォーマットにフォールバック(縮退)されるようです。フォールバックとは通信状態に合わせてデータ量を調整する(減らす)技術で、その昔電話回線にモデムをつないでいた人なら実体験としてご存じでは。

フォールバック状態ではこのような表示になります。「利用可能」だけど何らかの理由でそうなっていないことを示しており、この時は普段96kHzで再生される音源が48kHzで配信されていました。音質よりも安定して聴けることを優先しているわけで、Roon ARCが音飛びしようとエラーになろうと設定した音質で再生しようとするのに比べると設計思想の違いが見えて面白いですね。どちらが優れているとは言えません。


Apple Music Classical / アップルミュージック・クラシカル

Apple Music Classicalもロスレスやハイレゾロスレスでの再生が可能です。回線速度に対する挙動はApple Musicと同じ。
アプリはまだCarPlayに対応しておらず選曲をスマホで行う必要がありますが、この通り再生中の曲はDAに表示されました。
(2024/11/13追記)CarPlayに対応しました。


Digital Concert Hall / デジタル・コンサートホール

ベルリンフィルの配信サービス、デジタル・コンサートホール。動画が見られるスマホの画面にもフォーマット表示は見当たりませんが歯車アイコンの設定画面で確認可能です。


「ハイレゾ」設定で48kHzまたは96kHz(音源により固定)のFLACになります。回線速度が足りなければ自動的に「通常モード」のAACにフォールバックされます。つまりロスレス再生のためには96kHzまで対応する必要があり、再生システム的にも回線速度的にもApple Musicよりハードルは高めです。


回線が不安ならダウンロード機能が使えます。ただし動画や曲により空間オーディオも含まれるためデータ量は大きく、ダウンロード速度も速くないので家で準備しておいた方が良さそうです。クラシックなら1回ダウンロードすれば一日もつ場合が多いでしょうから負担感はそれほどでも。


Qobuz / コバズ

(2024/11/3追記)
全曲ロスレス対応の高音質配信サービス、Qobuzが日本で待望のサービスインを果たしたので早速加入しました。始まったばかりで楽曲のラインナップやメタデータの整備が追いついていない感はあるもののそのうち改善されてゆくでしょう。
QobuzはRoonと統合可能なためRoonのユーザーはRoonやRoon ARCアプリから利用できますが、このQobuzアプリもCarPlay対応しており使いやすく仕上がっています。高音質をうたうだけに?フォーマットの表示が他より直接的です。

回線速度が遅いと、バッファリングのため再生開始が遅れます。挙動としてはRoon ARCと同様フォールバックを避け音源のサンプリング周波数を守ろうとする傾向のようです。(本当によわよわな回線ではわかりませんが)
バッファリングは再生開始直後の早い時期に1曲分終わらせる動作で、次々にスキップしながら丸一日使ったらデータ量が10GBを超えましたw


ハイレゾ配信の上限を96kHzと192kHzから選べるのは現在のモバイル回線の実力に合っており、(DSPの処理レートが96kHzや192kHzへの移行期にある)カーオーディオでも使いやすいです。Roon ARCではCD Qualityの上はOriginal Formatとなりこういう設定ができないので、自分のライブラリがある程度カバーされたらこっちを主力アプリにしてもいいかも、と思いました。




回線状態さえ良好なら、という条件はつくものの各アプリとも音源通りのサンプリング周波数でUSB出力できており、アプリを切り替えても特に問題なく周波数がスムーズに切り替わります(USBDACモードにしたDAPで確認済み)。iOSでのUSBオーディオの処理はAndroidはもちろんMacOSと比べても洗練されているように思います。
また今回利用したアプリでは強制的なアップサンプリングもなくCD音源が44.1kHzで出力されるのもオーディオ的には安心できる動作です。Roon ARCでは明示的にアップサンプルすることも可能で、この「明示的に」選択できるのが大切なんです。

対してAndroidの場合ハイレゾ再生するには、というかそれ以上に重要なOSによるデータ改変なく再生するには、UAPPやRoon ARCのように独自のUSBドライバーを備えたアプリが必要で、その仕組みをもたない多くのストリーミングアプリではOSのミキサーを介した48kHz(ビット数はAndroid OSのバージョンにより16または24bit)での出力となります。ただ一部の機種では独自にOSを拡張してハイレゾ対応していたりと状況は複雑で、このあたりの事情は自分がAndroidでUSBオーディオを追いかけ始めた2014年から大きくは変わっていません。
HiByやiBassoなどSRC回避機能を備えたDAPという選択もできるようになりましたが、スマホのようなディスプレイオーディオとの連携は困難です。OS側ではようやく対応の動きがあったところなので、市場の入れ替えが進みアプリが対応するまでもうしばらくかかりそうです。

Android派の自分ですが、オーディオ端末としてiOSは優秀と認めざるを得ません。ストリーミングとローカル再生を取り混ぜ利用するには様々なアプリでイイ音で楽しめることが要求され、そういう使い方では依然差は埋まっていない感があります。
(2024/11追記)試していませんが、QobuzはUAPPやRoon ARCに対応しており、この組み合わせがAndroidにとって一つの解になるかも。


Geminiさんにちょっと意地悪な質問をしてみました。




(2024/11/17追記)自分の環境ではワイヤレスCarPlayとスマホのテザリング(インターネット共有)を併用可能なことがわかりました。レー探などWi-Fi接続が必要な機器がある場合はこれで対応できます。
共有はCarPlay接続後にONにする必要があり、ONのままにしていると次にエンジンを始動した時にCarPlayが自動接続されません。ちょっと面倒なので

iOSのオートメーション機能を利用し、CarPlayの接続に連動して共有をON/OFFさせるようにしました。
(2025/8/14追記)
ワイヤレスCarPlay接続用Wi-FiではDAがアクセスポイント、テザリングはスマホがアクセスポイントのため、スマホは親機と子機の同時動作が必要となります。このうち子機の周波数帯(2.4GHz/5GHz)はCarPlay接続時にDAとのネゴシエーションで決まるため選べません。自分の機種では2.4GHz、ワイヤレスAndroid Autoが5GHz必須のため両対応の機種ではCarPlayも5GHzとなるようです。
このときテザリング(=親機=アクセスポイント)動作が可能か・周波数帯がどうなるかはスマホのWi-Fiチップ次第で、自分のiPhone SE(3rd)ではクライアントと同じチャンネルが使用され2.4GHzでテザリングできています。
5GHz接続時のテザリングについては確認できていませんがこの周波数帯の屋外利用は制限が厳しく、DAが利用する5.2GHz帯でのテザリングは禁止(総務省HP)となっています。5.2GHzで子機動作しながら2.4GHzや6GHzで親機になれるかどうかですが、「ワイヤレスCarPlay接続時にテザリングはできない」という情報も多いところをみると不可かもしれません。5GHz(6GHz) Wi-Fi対応のレー探もまだ無いので2.4GHzしか使えないDA7Zで結果的に正解でした。
Posted at 2024/05/25 15:49:08 | コメント(1) | トラックバック(0) | オーディオ | クルマ
2023年11月05日 イイね!

Qobuz、来!

Qobuz、来!こ 【来】
動詞「来(く)」の命令形。(出典:学研全訳古語辞典)








ハイレゾ配信サービスQobuz(コバズ、コーバズ)の日本進出発表から1年。もともとクラシック系のタイトルが充実しているのと、e-onkyoの事業取得を行ったので邦楽も含め期待しています。

この度ようやく続報が届きました。現時点で判明した情報は以下の通り。太字が公式の情報、それ以外は自分の想像です。

・2023年12月プレオープン

→12月の時点では何か限定的なスタートとなるようです。
Qobuzアプリからの邦楽アルバム購入など、e-onkyoとの統合はもう少し後になるのかも。

・CDロスレスクオリティだけでなく、最大192kHz/24bitのスタジオ・クオリティでのストリーミングに加え、DSDやDXDのカタログも取りそろえたダウンロード・ストアも展開。

→DSDやDXDのストリーミングは無し。e-onkyoで32bitやWAVの音源が配信終了となったことと関係しているのでしょうか。

・日本での、ストリーミングサービスの月額価格は税込1,280円から*の予定です。
*スタジオソロ年間プラン(ストリーミングプラン+ダウンロードのアラカルト購入)を月額換算した場合


→本国のプラン構成はこうなっています。
(英語サイトのためポンド表記ですが、Qobuzはフランス発です。)
alt
StudioとSublimeの2種類、それぞれ付与されるアカウント数が1(Solo)/2(Duo)/6(Family)の3種類で計6プランあります。Sublimeだとストリーミングに加えてファイル購入時のディスカウント(最大60%)がつきます。StudioとSublimeで配信可能なスペックに差はありません。
なおStudioプランの「ダウンロード」とはQobuzアプリでのオフライン再生のことで、FLACのファイルが手に入るわけではないので注意。ファイル購入はストリーミング契約が無くても可能です。

日本では最安のプランが1,280×12=15,360円の年払いということですね。本国のサイトだと同じStudio Soloの年間プランが£10.83×12=£129.96となっており、現在の為替レートだと24,000円ほど。差が大きいので本国のStudio Soloと同じ内容ではないかもしれません。個人的には仮にCD品質限定でも十分魅力的な価格設定だと思いますが、さてどうなるか。

何より、本国のQobuzでは可能なRoon(Roon ARCを含む)との統合が日本版でも確保されているのか、自分の興味はその1点ですがまだ情報なく詳報を待ちたいと思います。




(2023/11/8追記)
既に日本語サイト↓が閲覧可能と話題になっています。まだ登録はできませんが、この内容で来るなら文句なし。上に書いた心配事は問題なさそうで、やるじゃんザンドリージャパン!と震えています。

(2023/12/20追記)
延期だそうです。まぁ、長く待っているので少しくらい遅れても。

(2024/7/18追記)
まだ開始しておらず、ペシミスティックな外野の声には心底ウンザリ悲しくなりますが、Xandrie Japanからは「着実に移行準備を進めている」とのメールが届きました。期待しているので、がんばって!

(2024/10/4追記)
e-onkyo musicサービスの終了が発表されました。間もなくのようです。

(2024/10/24追記)
旧e-onkyo music会員を対象にプレオープンとなりました。プランはStudioのソロ・デュオ・ファミリーのみでSublimeはなし。シンプルに「高音質ストリーミング」一本で来た感じですね。
未完成なところは散見されるものの、日本国内で正式に利用できるサービスとしては唯一の「全曲ロスレス再生可能」なサブスクが登場したことを、まずは喜びたいと思います。もちろん加入しましたよ。
Roonとの統合もとりあえず実装はされているようで、もう少し待っていれば使えるのかな。

(2024/10/25追記)
プレオープンの翌日ですがグランドオープンとのメールが届きました。

(2024/10/26追記)
RoonおよびRoon ARCとの連携も機能するようになりました。こちらはRoon ARCの画面です。

「Q」の形(レコード?)のアイコンがQobuzのコンテンツ、本棚のアイコンは自分のライブラリです。タップすればQobuzのアプリに飛んだりせず、Roonの中で普通に再生が始まります。区別なく、というかアイコンを見なければ意識さえすることなく一つのアプリで聴けるのが素晴らしい。統合とはこういう事か!
Posted at 2023/11/05 20:00:57 | コメント(0) | トラックバック(0) | オーディオ | クルマ
2023年08月12日 イイね!

Roon ARCに思う

Roon ARCに思う自宅からのロスレス配信を実現したroon ARCを導入して8か月ほど。我が車の主力音源として定着しました。
思えばクルマ用のライブラリを作る作業はカセットテープの時代から連綿と続いてきたわけで、それが必要無くなったのは大きな変化です。
ドライブのシチュエーションを想像して選曲する、そこに意義を感じる人もいるでしょうけどプレイリストに変わったと思ってください。味気ないですか?

パーソナルストリーミングとしてはApple Music(iTunes Match)が先行していますが、自分のライブラリはAACに変換されるので音質にこだわりたい向きにはARCをオススメします。もちろんroonの使い勝手に惚れた人にも。








一番の心配事であり興味でもあった、
モバイル回線を経由したロスレスストリーミングは使い物になるのか?
については、音質設定を「CD Quality」にすれば車載ルーターや格安SIMでもほぼ実用レベルにあります。実際、自分がこれまで走った道ではトンネルを含め全く聴けなくなったことはありません。
カーオーディオの「5G無し」「高速移動」「地方」と、考え得る最悪条件でこれなら優秀、携帯さえつながる場所なら少なくともCD音質で楽しめる可能性は高いと思います。

ハイレゾもロスレス再生する「Original Format」設定の場合は当然ながら音源のフォーマットと回線次第となり、例えば45Mbpsにも達するDSD512なんて100%無理、自分の回線では24bit/96kHzでも時々音飛びや「Poor Connection」エラーを起こすので常用はちょっと厳しいかな、という感じです。車ほど動かないモバイル利用、都市部の安定した(最近は都市部がネックのようですが)高速回線、大手MNOの大容量プランとかなら使えるのかな?
なおopus圧縮となる「Balanced」や「Bandwidth Optimized」設定ではエラー無く配信できるものの、音質に少しデグレードを感じるため使っていません。

Roon ARCにはダウンロード機能があり、任意のアルバムをスマホの内蔵ストレージにコピーしておくことができます。自分の回線で再生できない高レートの曲だけダウンロードしておけば、全てのライブラリをダウンサンプルすることなくロスレス再生可能です。そういう意味で「CPUだけ最新の安い機種でいいだろう」とiPhone SE(3rd)の64GB版を購入したのはちょっと失敗でした。ハイレゾ再生にこだわる場合は、Roon ARCであってもストレージの大きな機種が良いです。

フォーマット毎のデータレートはExcelで簡単に計算できます。
alt
Roon ARCの「CD Quality」では最高24bit/48kHzまで通すので、flacで少し縮んで2Mbps以下、バッファリングを加味して4Mbpsもあれば安定再生できそうなものですが、車載ルーターの
alt
DCT-WR100D(carrozerria、回線はドコモin Car Connect)
では日によって、また時間帯によってエラーが頻発することがあります。昨年購入した頃はこんなことは無く快調だったのに、少しずつ速度低下して4月頃にどん底、最近は持ち直してきています。1年分の通信料と2年分のSIMを前払いして性能が保証されないのはちょっと、ね。

「主力」音源として使うからには、たまにでも聴けなかったり音質モードを落とすのは許せません。そこでバックアップとして
alt
のSIMを契約し別のモバイルルーターにセット、docomoの調子が悪い時は24時間の無制限プランを購入して運用しています。24時間といっても翌日24時まで有効※なので実質2日間使えて330円、土日だけならドコモ以下のコストで運用可能です。
※2024/9/17からはきっかり24時間となるそうです。

in Car Connectは停車時間や同時接続数の制限に少しストレスを感じてはいるもののデータ量無制限としては格安で、最終的な体制をどうするか?引き続き検討中です。
回線速度を担保してくれる業者が無い以上、「最終的」な解などなく2回線を確保して切り替え・状況により契約先も入れ替えるといった対応が必要かもしれません。

それにしても、たかだか数Mbps(それも下の方)のストリームでも100%安定再生できるわけではないのですね。5Gのギガbpsなんてどこの世界線の話ですか?と思ってしまいます。
携帯各社はいつ出るかもわからない最高速度なんて訴求するより最低速度を、10Mbps位は「いつでも」「どこでも」出せるようになってほしいものです。




さて、ここからは昔話をしてみようかの。

インターネット元年は何年?フレッツADSLが2000年12月提供開始だそうなのでその前後でしょうか。BSデジタルの放送開始も同じ2000年12月で、ネットにPCにAV機器(どれも今ほど安くはない)と、当時のオタクは欲しいものが多くて大変でしたなぁ。

ISDNがADSLに変わり、接続時間という概念が無くなったのはまさにパラダイムシフト、衝撃的でした。さらに光回線になって上り速度も上がったちょうどその頃登場したのが、かの
alt
上り帯域をガンガン使うアプリケーションで、日本で広く知られた最初のものではなかったでしょうか。

Winnyの技術的な仕組みは見れば見るほど興味深く、アップロードするデータ(暗号化されたキャッシュ)を多く持っているクライアントがダウンロードも高速に行えるという発想に、
ブロードバンドらしい使い方が現れた!
と軽い興奮を覚えたものです。
まぁ、作者の意図と関係あったかどうか不明ですが、主な使われ方が割れDVDISOの共有というアングラ行為※だったためにその後は残念な経過を辿ることになります。
※当時はまだ違法ではなくグレーゾーンだったかな?インモラルであることは間違いないでしょう

アニメでは1995年(Windows95の年)ヱヴァンゲリヲン放送。全人類の思考が共有されてLCLに溶けちゃう描写はネットが急速に広がってゆく、そんな時代背景と合致しています。(2023/9/20:年号を修正しました。)
攻殻機動隊やserial experiments lainあたりもそうで、個人が高速回線で常時つながる時代はすぐそこなんだろうと、割と普通に思っていました。

ところが世の中そうはならず。補完計画は発動しませんでした。
ソフトバンクのおじさんあたりが仕掛けてくると期待していたのですが。
全ユーザーが回線容量を使い切るような使い方にはネットワークが耐えられないとして、プロバイダーや携帯会社は回避呪文「ベストエフォート」を発動。「ベスト」という名の「出来たなり」を提供し、
ユーザーが行き過ぎた大容量の通信を行うのは悪(abuse)である
との認識醸成に成功します。

「行き過ぎたデータ量」って何だろう。
他の人より多いのはダメ?
事業者の想定(=価格)に見合わないから?
理由は理解もしますが、なんか楽しくない。

携帯の料金体系しかりで、
alt
「コネクテッド」の時代に、まだこんなことやってる。
接続時間分の電話代を払っていた頃に引き戻されたみたいで、もやもや。
これで「ギガ」の代わりに「Mbps(最低値)」だったら良いのに。
いちおう擁護しておくと、IIJmioは十分魅力的な価格で提供していると思います。しかし、その社名の通り日本のインターネットを切り開いてきたIIJさんだけに、こんな従量制の料金体系は打ち破って頂きたい。

mp3がflac、CDはハイレゾ、映像はHDになっても、ユーザーはサーバーのコンテンツを想定された回線容量の範囲内でダウンロードするだけ。
これではインターネット黎明期のユースケースと変わらないではないか。

あるいは、データ量の足りない双方向アプリの典型として古くは2ch、今ならTwitter改めXでしょうか。短絡的な感情だけは簡単に伝わるけど思考の共有なんて無理、すぐにミスコミュニケーションを誘発するので疲れます。

Winnyの作者である金子さんが亡くなって10年。あの事件以降ネットは進歩が止まってつまらない、と思うのはシニカルに過ぎるでしょうか。
alt




Roon ARCは久しぶりに登場した「ユーザーが上りも下りもフルに活用する」ネットワークアプリケーションで、もちろん違法性はなく便利だから使っているのですが、入れ込んでいるのはこんな意識があるからかもしれません。

ARCのようなアプリが当たり前になって、ユーザーは自由に大容量の通信を活用する時代が来て欲しいし、関係各社は「ベストエフォート」とか「速度制限」からの脱却を目指して欲しいと、真面目に思っています。
Posted at 2023/08/12 17:59:57 | コメント(1) | トラックバック(0) | オーディオ | クルマ
2023年06月05日 イイね!

AirPlayの実力を確かめてみる(私がApple嫌いなわけ)

AirPlayの実力を確かめてみる(私がApple嫌いなわけ)タイトル画像はAIで生成したApple Computer新社屋。確かこんな感じだったよね。宇宙船って言ってたし。














初めて買ったコンピュータはMacでした。
PCといえばMS-DOSの当時、Appleの演出する「エクスペリエンス」は、それはそれは圧倒的で。同期の皆がクルマやらバイクやら手に入れる中、それと同じくらいのローン組みました。その頃のマックは高嶺の花で、まだPCでは扱えなかった日本語アウトラインフォントをHDDに内蔵(!)したレーザープリンタが3桁まんえんでしたから。

でも、ひととおり使ううちに
「お客様は機械のことなど気にしなくて結構ですよ(シロートさんはこっち来ないでね)」
な雰囲気を感じるようになり。
製品全体で統一された思想、それを支える高い技術には魅了される一方で、コンピュータそのものが目的のオタクにとっては手の内を明かさない感じが気に入らなかったんですね。以来インテルPCに改宗しました。

それからン10年。Roon ARCはAppleの製品ではなくAndroidでも普通に使えるのですが、細かい部分ではiOS版の方が完成度が高いのがあちこちに伺えます。仕方なく入手したiPhoneを触っているとAirPlayは使い勝手が良いけど謎な部分も多く、Apple変わってないなぁと思ったのでした。
あ、Roon Labs.もちょっと似たとこありますよね。願わくばAppleのように長寿と繁栄を(Lifetimeユーザーなので)。




オープンソースなShairport Syncの助けを借りてAirPlayを高音質に使えるようにしたのが前回
alt
こんな構成で車載運用を始めています。

ラズパイZeroは低消費電力なので定格出力5V/1.1Aのリニア電源で動作しました。USBオーディオを使う場合でも、アイソレータを入れてもなお電源のクリーン化は音質に効きます。
車載ネットワークオーディオの時から目指していた(けど見つからなかった)、
「サンプルレート変換やDSD/PCM変換はソフトウェア演算で高精度に」
「USBホストは省電力PCをリニア電源で駆動」
のシステムが思っていたのとは違う形で実現しました。

が、ビットパーフェクトは実現できたのか?確かめたくなり
alt
こんな検証系を用意して実験してみました。
オーディオインターフェースを使い、DDCのデジタル出力をPCで録音して元のファイルと比較します。これで一致すれば文句ないでしょ。

ラズパイはクルマに持って行ってしまったのでもう一個買おうにも、Zero2Wあたりは需給状況未だ改善されず、家に転がっていた
alt
NanoPi R4S

にインストールし問題なく動作しました。(ただしoverlayrootは手順が異なるようで未使用)
この機種の場合、
・Wi-Fiは無く有線接続となります。2つあるLANポートのうちWAN側をルーターにつなぎます。
・HDMIも無く最初からリモートコンソールでの操作が必要です。IPアドレスはスマホアプリのFingなどで調べ、SSHを開いた後は同じ手順でいけます。

OSはDietPi(公式サイトにR4S用があります)、Shairport Syncのインストール方法も前回と同じ。設定ファイルは以下のようにしました。

general =
{
    name = "Shairport Sync(NanoPi)";
    interpolation = "basic";
    output_backend = "alsa";
    alac_decoder = "apple";
    ignore_volume_control = "yes";
};
alsa =
{
    output_device = "hw:1,0";
    output_rate = 44100;
    output_format = "S24_3LE";
    disable_synchronization = "yes";
    disable_standby_mode = "auto";
};


ボリューム、サンプリングレート変換、同期(とそれに伴うリサンプル)といったデータ変更につながる動作を全て無効化しています。
レートを44.1kHzに固定しているのはAirPlay(AirPlay 1)の仕様からです。ビットパーフェクトが期待できるのはCDフォーマットのみで、ハイレゾはiPhoneからの出力の時点でダウンコンバートされているのでShairport Syncで高レートにしても元通りにはなりません。
わからなかったのがビット深度で、とりあえず24bitで来ても対応できるようにしました。結果は後ほど。なおこの設定はデバイス依存のため前回のブログをご覧ください。


追加でRoon Bridgeもインストールし、RoonのネイティブプロトコルであるRAATと比較します。Linux用の手順はこちら。ハードウェアに合わせて「The Easy Installer」にあるコマンド3行だけ入力すれば完了です。
Roon BridgeとShairport Syncは競合することもなく、アプリで使い分けできます。Roonリモートで再生すればコアからRAATで、Roon ARCならiPhoneからAirPlayにより伝送されます。この組み合わせはRoonもそれ以外も同じUSBオーディオで音が出せホーム用におススメです。




まずは検証系のチェックを兼ねてRAATで再生してみます。
alt
Roonリモートの再生画面。シグナルパス表示ではこの通りロスレスとなっています。
Sound Forgeで録音したwavファイルと、元のflacをデコードしたwavファイルを比較します。
比較アプリにはDeltaWaveを使いました。ファイル間で異なる先頭の無音時間などは自動補正した上で、様々な手法で比較してくれます。
alt
一番下、ビットパーフェクトと表示されています。さすがというか当然ながら、同軸や光デジタル信号にまでなってからの比較一致には「おおっ」となりますね。




続いてRoon ARC。
alt
ARCのシグナルパス表示ではロスレスから一段階落ちたHigh Qualityとなりますが、実際はどうでしょうか。
alt
無事ビットパーフェクト、精神の安寧が得られました。




調子に乗って24bit/44.1kHzのファイルも試してみました。
alt
Roon ARCからAirPlayに対しては24bitのまま渡しているようです。
alt
こちらは一致しませんでした。残念。なおRAATでは一致を確認しています。
24bit比較では一致率ほぼゼロ、16bit比較で50%一致、ということはAirPlay内で24→16の丸め処理が行われていると見ればよいのでしょうか。
AirPlayの対応が16bitなら、Shairport Syncの出力フォーマットも16bitで良かったですね。CPUの負荷も減りますし。

ということで、最終設定はこうなりました。

general =
{
    name = "Shairport Sync(NanoPi)";
    interpolation = "basic";
    output_backend = "alsa";
    alac_decoder = "apple";
    ignore_volume_control = "yes";
};
alsa =
{
    output_device = "hw:1,0";
    output_rate = 44100;
    output_format = "S16";
    disable_synchronization = "yes";
    disable_standby_mode = "auto";
};





以上で実験終了です。Shairport Syncを適切に設定すれば、AirPlayでもCDクオリティのビットパーフェクト再生が可能であることが確認できました。

DLNAやRAATがハイレゾまで無劣化伝送できるのに比べたらまだまだですし、Direttaなどはビットパーフェクトなんて当たり前、その上でデータの送り方を工夫することで伝送によるアナログ的な電源変動を減らすといった(一般の人にはワケワカラン?)次元で勝負しているわけですが、AirPlayもピュアなオーディオの末席に加えられるだけのポテンシャルはあると思います。それで使い勝手は言わずもがなですから、これは強い。

ただし下手すればビットパーフェクトどころかロスレスでもないAAC伝送になってしまうのは注意です。そーゆーとこやぞAppleさん!
Posted at 2023/06/05 22:25:57 | コメント(0) | トラックバック(0) | オーディオ | クルマ
2023年03月31日 イイね!

ラズパイとUSBオーディオで作る高音質(?)AirPlayレシーバー

ラズパイとUSBオーディオで作る高音質(?)AirPlayレシーバーTwitterやインスタを見ていると皆さん短いやり取りなのに的確にコミュニケーションがとれていて、何というか人間の通信プロトコルも変化していると感じます。おじさんはConnection TimeoutとかAccess Deniedとかされないようにしたいものです。体のどこかにUSBポートが隠されていてapt upgradeなんて入力できないもんかね。
(訳:今回のブログは長いよ!)








カーオーディオで愛用してきたUSB-DDCを新調したものの、Roon ARCで動作せず対策しました、というネタです。
ついでにスマホから生えるUSBケーブルが野暮ったいので、音質を確保しながらスマートにしてみようと。

iOS版Roon ARCはAirPlayに対応しており、AirPlayレシーバーを用意すればワイヤレスかつ良い音で聴けます。市販製品としては

alt
SOUNDFORM CONNECT (Belkin)

alt
WiiM Mini (WiiM)

などで、これらは光デジタル出力を搭載しています。自分はUSB-DDCを使うため、USBトランスポートになるAirPlayレシーバーを探したらそれもちゃんとあって、

alt
ZEN Stream (iFi audio)

や、ラズパイユーザーにはお馴染みのVolumioなどが対応しているようです。

しかし、これらをAirPlayで使ったときにロスレス伝送なのか、さらにビットパーフェクトなのかとなると判然としない。ネットを漁ってみると、
「AirPlay1は16bit/44.1kHzのALAC、AirPlay2は現時点ではAAC」
なんて情報もあり。
古い方が高音質ってこと?現時点って何?Appleさんが詳細な仕様を公開していないので本当のところがわかりません。

そこで、AirPlay1専用に設定することで音質を担保できそうなラズパイで自作することにしました。AirPlay2のメリットである低遅延やマルチルーム再生は捨て、できる限り音質重視となるよう構成してみます。途中でALACにしただけではビットパーフェクトにならないこともわかったので、その対策も行っています。




ハードウェア選定

AirPlayの受信用にWi-Fi、オーディオ出力用にUSBが1本あればよく、今回はラズパイシリーズの中でも小型の
alt
Raspberry Pi Zero 2 W

を使います。定価$15、国内でも3,000円以下で買え「た」ボードですが、半導体不足のため品薄が続いています。Amazonなどは転売ヤーか!って位の価格になってしまっていて、今買うのはおススメしません。
ラズパイで似たスペックなら3A+あたりはまだ良心的?な価格で入手でき、この後紹介するOSのページにあるハードウェアを試すのも面白いかも。(次のブログでNanoPiを使いました。)

Zero 2でCPUがクアッドコアとなり、ラズパイ3に近い性能があります。ただしRAMが512MBと少ないのでPCのようにウィンドウをパカパカ開いて動画を見たりするには向かず、デスクトップレス(GUI無し)で使うのが良いと思います。
USB(片方は電源)がmicro、HDMIがminiと小型コネクタになっており、変換ケーブルか変換コネクタを用意しておきます。microSDカードは現在購入できる最小クラスの4GBか8GBもあれば十分で、逆に64GBとかだと不具合の可能性も。




起動用microSDカード作成

OSとして、今回は「純正」のRaspberry Pi OSよりさらに軽量(=RAMの使用量が少ない)の
alt
DietPi
をインストールしました。

ライトウェイトにこだわり32bit版のARMv7用を選択。公式サイトからダウンロードした7zipを展開して取り出したimgファイルで起動用カードを作成します。
alt
microSDカードへの書き込みにはRaspberry Pi Imagerを使用しました。Raspberry Pi OSなどをダウンロードから書き込みまでこれ一つで実行できるアプリですが、
alt
一番下、予めダウンロードしておいたimgファイルを焼くこともできます。




接続と初期設定

こんな環境で設定してゆきます。完成したらラズパイとiPhoneを別のネットワーク(車載ルーター・モバイルルーターなど)に持ち出すイメージです。
(家の中でRoonだけ使うならAirPlayよりRoon Bridgeの方が高音質です。)
alt
カードを基板にセット、ケースに入れてケーブル類を接続します。このksy製ケースも後で入手したflirc製も同じで、ケースに入れるとカードを交換できないのは誤算でした。基板を外す時は無理な力をかけないよう要注意。
alt
最初はHDMIポートにモニターやTV、USBポートにキーボードをつないだ「ローカルコンソール」で設定してゆくのが確実です。
少し慣れた人なら、カード作成時に設定ファイルを編集しておきキーボード無しでWi-Fiに接続させる「ヘッドレスインストール」に挑戦しても良いでしょう。その場合でも設定中HDMIだけはつないでおいた方が起動時の挙動を把握でき安心かと。USB接続のHDMIキャプチャーボード(2,000円くらいで買える)も使えます。

alt
起動しました。DietPiはDebian系LinuxなのでコマンドなどRaspberry Pi OSに近い感覚で使えます。
表示されている初期ユーザーとパスワードでログインすると、

alt
最初にOS更新が走りますがネットワーク接続がないとして中断します。この状態では何か設定を変更するとネットにアクセスしようとして数10秒タイムアウト待ちとなることがあります。「フリーズした!」とあわてて電源を落としたりせず、まずは家のWi-Fiアクセスポイントに接続します。
「Network Settings」を選択して「OK」(カーソルキーとTABキーが使えます)

alt
IPv6はOFFで良いでしょう。ONにする時は外部から侵入されないようルーターの設定を確認しておきます。

alt
Wi-Fiを有効にして設定に入ります。

alt
アクセスポイントを5つまで登録できます。複数登録した場合は起動時に見つかったAPの中で最も電波の強いものに接続するので、家以外のモバイルルーターなどもここで登録して大丈夫です。(後で追加も可能)
SSIDとパスキーを入力、完了すると再起動を促され、再度ログインするとOS更新を行って続行します。

alt
サーベイ(情報提供)に参加するかどうか

alt
ソフトウェアインストール用のパスワードを変更するか
この時点ではまだキーボードを設定していないのでキーと文字が一致していない可能性があり、スキップした方が良いでしょう。(2023/4/23追記)最新のv8.16で対策されたようです。

alt
rootおよびdietpiユーザー用のパスワードを変更するか。ここも飛ばします。

alt
UART(シリアル)は使用しないので「Yes」で無効にします。

alt
ここがメニューの最上位、DietPi-Softwareです。
SSHサーバーは軽量の「dropbear」がデフォルトで有効になっています。今回の使い方ならこのままで良いですし、ファイルのアップロードなどを行う場合はOpenSSHに変更することも可能です。

alt
最初にDietPi-Configを選択し、地域とキーボードを設定します。

alt
キーボードは使っているものに合わせます。日本語キーボードあるあるで、設定が違うとパイプ文字「|」が入力できなかったりします。

alt
USBオーディオを使うため「Audio Options」でALSAをインストールしておきます(DietPi-Softwareからのインストールも可能)。その他、先ほどスキップしたパスワード変更なども行えます。

alt
全て設定し終えたらDietPi-Softwareまで戻って「Install」

alt
ソフトウェアを選択していないので「最小インストールでいいか?」と聞かれています。「OK」でインストールが始まります。

ここまでコマンド入力も設定ファイル編集も一切なく完了です。至れり尽くせりですね。
ローカルコンソールでの設定はここまで。インストールが終了しコマンドプロンプトに戻ったら、logoutしキーボードを外してOKです。




USBオーディオ接続

キーボードをつないでいたUSBポートを空けるため、ここからはネットワーク上のPCからリモートコンソールを開いて設定してゆきます。

alt
コンソール用アプリのPuTTYでラズパイのIPアドレス(ローカルコンソールの画面左上に表示されていた数字。スマホアプリのFingなどで調べることもできます)を指定し、接続タイプ「SSH」でコンソールを開きます。
PCのキーボードとモニターを使ってローカルコンソールと同じように操作できます。

alt
ビルトインユーザー「dietpi」でログイン。(以降、プロンプトが$となっているものは「dietpi」、#は管理者権限「root」でのログインを示しています。)

空いたUSBポートにUSBオーディオ機器をつなぎます。
ユーザーをaudioグループに追加。
$ sudo adduser dietpi audio 
$ sudo reboot 

再起動してSSHで再度ログインし、以下のコマンドで機器のIDを取得します。USBの接続状態が変わるとIDも変わったりするので、最終状態で確認します。
$ aplay -l 
**** ハードウェアデバイス PLAYBACK のリスト **** 
カード 1: U20F1 [USB Audio 2.0(F1)], デバイス 0: USB Audio [USB Audio] 
サブデバイス: 1/1 
サブデバイス #0: subdevice #0 

「カード」と「デバイス」の番号を覚えておきます。




shairport-syncのインストール

AirPlayレシーバーとして
alt
Shairport Syncを使います。

Appleの非公開技術であるAirPlayを独自に解析して作られたのがオリジナルのShairport(現在は開発停止)で、Shairport Syncはそのフォーク(分家)の一つとなります。
公式のガイド:Build and Install Shairport Syncに従ってインストールしてゆきます。

旧Shairport Syncのクリーンアップ
実はDietPiでは先ほどのDietPi-Softwareから簡単に導入できるのですが、今回はロスレス伝送を確実にするため手動でインストールします。
DietPi-Software用の設定が残っていると不具合の元になるため、ガイドの 1.Prepare の手順に従いクリーンアップを実行しておきます。(DietPi-Softwareからを含め初回のインストールであればおそらく不要です。)


ビルド用ツールとlibalacのインストール
Shairport Syncの作者さんが公開しているApple純正のALACデコーダをビルドします。
$ sudo apt-get install build-essential git autoconf automake libtool 
$ git clone https://github.com/mikebrady/alac.git 
$ cd alac 
$ autoreconf -fi 
$ ./configure 
$ make 
$ sudo make install 
$ sudo ldconfig 
$ cd 

長いコマンドはここで選択・コピーしてSSHのウィンドウ上で右クリックするとペーストできます。


ライブラリのインストール
ガイドで「classic」と書かれている手順でAirPlay1対応に必要なライブラリをインストールします。
$ sudo apt-get install --no-install-recommends libpopt-dev libconfig-dev libasound2-dev avahi-daemon libavahi-client-dev libssl-dev libsoxr-dev 
(2023/5/7追記)畳み込み演算を行う場合は以下のライブラリを追加しておきます。
libsndfile1-dev libglib2.0-dev 

ん?なんでリサンプル用のライブラリであるsoxrが必要なんだ?
公式のReadmeと掲示板のスレッドに説明がありました。

Bit perfect stream for a DAC through USB?

AirPlayでは1/44100秒ごとの各サンプルにタイムスタンプが付加されていて、受信側ではこれを自分の時刻と比較することでサンプル数の調整(補間・間引き)を行っているそうです。
例えば受信側のクロックが遅ければデータを間引きし、352個のサンプルを351個に作り直すといったことが行われます。それを高品質に実行するためのsoxrとのこと。なるほどHomePodを2つ使ってステレオにできるのはそういう仕掛けか。

確かに、USBオーディオのようにDACのクロックに合わせてデータを送っていたら複数の機器で同期再生なんて無理ですよね※。ガチのオーディオマニアの人達にはAirPlayが格下に見られるのも、ストリーミング系プロトコルの音質が(ファイル再生に比べると)どこか100%に思えないのもこのあたりの要因があるのかも。
でもAirPlayが劣っているということでは決してなく、ビットパーフェクトとタイムパーフェクト、目指すもの・設計思想の違いでしょう。(自分は前者を取りますけど。)
※USB Audio Classのアシンクロナス-アイソクロナス転送ではUSBのバスクロックでデータが「送りつけられる」わけですが、このモードでは受信側から送信側に対してリアルタイムにデータ量を増減させる通信経路(パイプ)が存在し、DACのクロックスピードに同期してデータを供給できるようになっています。
対してネットワークオーディオの場合、UPnP/DLNA/OpenHomeは受信側がデータを「取ってくる」プロトコルなのでDACのスピードで伝送可能、RAATも詳細は不明ながらクロックのオーナーシップがDACにあることを明言しています。



ビルドとインストール
続いてShairport Sync本体をビルドします。ALACおよびAirPlay1対応を指定しています。
$ git clone https://github.com/mikebrady/shairport-sync.git 
$ cd shairport-sync 
$ autoreconf -fi 
$ ./configure --sysconfdir=/etc --with-alsa --with-soxr --with-apple-alac --with-avahi --with-ssl=openssl --with-systemd 
$ make 
$ sudo make install 
$ cd 

(2023/5/7追記)畳み込み演算を行う場合は、configure 時に以下のオプションを追加します。
--with-convolution --with-dbus-interface 


設定ファイルの編集
/etc にある設定ファイルを好みのテキストエディタで開いて編集します。
$ sudo nano /etc/shairport-sync.conf 
ほとんどの行がコメントアウトされています。設定する行のみ行頭の//を消してパラメータを指定します。自分は以下のようにしました。

general =
{
    name = "Shairport Sync(DietPi)";
    interpolation = "soxr";
    output_backend = "alsa";
    alac_decoder = "apple";
    ignore_volume_control = "yes";
};
alsa =
{
    output_device = "hw:1,0";
    output_rate = 44100;
    output_format = "S16";
    disable_synchronization = "yes";
};


"hw:1,0"が先に調べたUSBオーディオ機器のIDです。
ボリュームを100%に固定、ALAC指定、バックエンドの出力フォーマットを16bit/44.1kHzとしてビットパーフェクトを目指しています。当然ですがiPhoneからのボリュームコントロールは効かないのでUSB以降のアンプなどで音量を絞れるシステムでないとスピーカーが壊れます。
ライブラリも入れていないのでAACでの伝送はやんないんじゃないできない仕様です(どや!)

soxrは高音質なリサンプラですがリサンプル自体無い方が望ましいので、スレッドの情報に従い同期を無効に設定しています。
この場合iPhoneとラズパイのクロックの誤差が補正されないためバッファが次第に埋まってor減ってゆき、いつかは必ずオーバーフロー・アンダーフローすることになります。その時は音が途切れるのかエラーで止まってしまうのか、不具合覚悟の音質優先設定というわけです。

(2023/4/6追記)
USBオーディオ機器によって曲の頭がミュートされる場合は、alsaセクションに以下の設定(autoまたはalways)を加えます。
    disable_standby_mode = "auto";

(2023/4/16追記)
いっそ明示的にsoxrを使わせないよう
    interpolation = "basic";
としても良いかも。soxrの場合はnサンプルから(n±1)サンプルを生成するのに対して、basicでは単純に時刻が合わなくなったサンプルの補間・間引きとなります。このためsoxrの方が高音質とされていますが、そもそも同期を無効化している以上サンプル数の調整は発生しないはずです。


動作確認
最初はコマンドラインで起動して動作確認します。
$ shairport-sync 
※畳み込み演算を設定した場合はここでワーニングが出ますが気にしなくて大丈夫です。

alt
Roon ARCの場合は再生画面の下にあるAirPlayアイコンから

alt
簡単に選択できます。

alt
シグナルパス表示ではAirPlayはロスレスとは見なされないようです。Wi-Fiの向こうの処理がどうなっているかはRoonの知る範囲ではないはずで気にすることもないでしょうけど、実際どこまで出来ているかは気になります。
(2023/6/5追記)気になったので次のブログで設定を追い込みました。音質に特にこだわる方はご覧ください。

再生確認できたら、Ctrl + Cで終了します。

(2023/4/28追記)
alt
Roonでは再生機器に合わせたフォーマット変換をサーバー(コア)が実行しますが、AirPlay用の変換は現在Roon ARC側で行われています。コアと同様64bit浮動小数点の高精度な演算です。
シグナルパス表示を見ていると、レート変換を行う時などAirPlayに対して24bitで渡しているようなので、(AirPlayが24bitで送信しているかは不明ですが)バックエンドの出力フォーマットも24bitにしてみました。
Audiophilleo2の場合は
    output_format = "S24_3LE";
Singxer F-1では
    output_format = "S32_LE";
が使えました。

(2023/5/3追記)
16bitを超えて指定できるパラメータはUSBオーディオデバイスによって異なり、次のコマンドで調べることができます。数字は環境に応じて変更してください。
$ cat /proc/asound/card1/stream0 
alt
24bit用、16bit用、DSD用の3つのセットがあることが読み取れます。


サービス化
電源ONで自動起動するよう設定します。
$ sudo systemctl enable shairport-sync 
$ sudo reboot 

再起動して、ラズパイに何も触れずに再生できれば成功です。


Wi-Fiのスリープ無効化
(2023/5/10追記)長時間再生しないとWi-Fiが省電力モードになることがあります。Wi-Fiが「寝て」しまうとAirPlayに応答できなくなり今回のようなヘッドレス構成では「起こす」ことも難しいので、パワーマネジメントを無効化しておきます。
rootでログインし、以下のコマンドを入力。
# iwconfig wlan0 power off 
alt
「Power Management」がOFFであることを確認します。




ファイルシステムのROM化

(2025/10追記)
別件で久しぶりに最新のDietPi(Debian13「Trixie」)を使ったところ、ここで紹介している方法は動作しませんでした。バグレポートが出ていたので一つ前のDebian12「Bookworm」も試しましたがこれもダメ。ここで使った実績のあるバージョンはサポート終了で公式サイトから消えており、どこかで旧版を落としてくるか、手動で設定する必要がありそうです。またはRaspberry Pi OSが標準の設定画面でこの機能をサポートしたのでこちらが簡単です(OS選定とインストールの事例はこちら、設定方法はこちら)。


「電源ブチ切○」は登録商標らしいです。気に入らんな。
車載運用する場合シャットダウンコマンドなんてやってられないので、突然電源が落ちてもファイルシステムが破損しないよう対策します。
以前ラズパイサーバーを製作した時にはスーパーキャパシタによるUPSを準備しましたが、今回は楽曲用のSSDもなくラズパイだけなのでもっと簡単にします。

overlayroot、オーバレイされた(重ねた)ルートファイルシステムという意味で、RO(Read Only)としてマウントしたmicroSDと、RW(Read/Write)属性のRAMディスクを「重ねた」ファイルシステムです。読み出しは普通にSDカードから行い、カード上のファイルに書き込みが発生した時はRAMディスクに書き込みます。書き込み中に電源が切れてもRAM上のデータが消えるだけなのでSDカードは元通り、つまりoverlayrootの動作中に更新したファイルは電源OFFで全て無かったことになります。

DietPi用のoverlayrootはまだありませんが、こちらのスレッドの方法でインストールできました。
Samba Fails on RO filesystem - dietpi.com
rootでログインし以下の通り入力
# apt update 
# apt install initramfs-tools 
# git clone https://github.com/chesty/overlayroot.git chesty 
# cd chesty 
# ./install.sh 


.bashrcファイルを開きスクリプトを追加
# cd /root 
# nano .bashrc 

if [ ! -z "${IMCHROOTED}" ]; then
    PS1="chroot(${IMCHROOTED})\w:# "
fi


リブートして有効化。
# reboot 

mountコマンドでoverlay関連の表示があれば動作しています。
$ mount 
overlay on / type overlay (rw,relatime,lowerdir=/overlay/lower,upperdir=/overlay/upper,workdir=/overlay/work) 
tmpfs on /overlay type tmpfs (rw,relatime) 
/dev/mmcblk0p2 on /overlay/lower type ext4 (ro,relatime) 


設定変更などファイルを更新する時は、/boot/config.txtファイルを開き「initramfs init.gz」の行を#でコメントアウトして再起動するとアンインストールされます。
# nano /boot/config.txt 
再度有効化するにはインストールスクリプトinstall.shを(1つ前のcdコマンドから)再実行します。安易にconfig.txtだけ戻したら起動不能となりOS導入からやり直す羽目になりました。




車載!

ファイルシステムをROM化しても、起動中それが有効になる前に電源が落ちたらやっぱりファイル破損の原因になります。
車載ではエンジン始動時が問題で、ACCONして起動が始まったちょうどいい(まずい)タイミングでイグニッション=電源OFFとなるので対策します。
以前PCの車載用に製作した、タイマーリレーによる遅延起動回路を使用し、イグニッション終了後に電源ONとなるようにします。
alt
ラズパイの電源電圧に合わせ、この後に接続するDC/DCコンバータを5V出力品に変更しています。
alt
シガーソケットからの12Vをタイマーリレーに接続、DC/DCコンバータ、電源ノイズフィルターのiPurifier DCを通してラズパイに入力しています。USBはプロセッサー近くのDDCへ。
ラズパイは放熱性能に優れデザインも良いflirc製のメタルケースに入れてみました。こちらもカードスロットに開口部が無く、ケースとCPUを放熱パッドで貼り付けたり基板の取り付けにドライバーを使ったりでカード交換はksy製以上に面倒です。




以上で完成です。
AirPlayはOSの標準機能だけあって、UPnPなどネットワークオーディオのように配信と相性が悪かったりすることもなく
alt
YouTubeの音声も飛ばせたり

alt
ネットラジオを流してみたり、手軽に使えるのが良いですね。

AirPlayの仕様上CD品質までとはなりますが、ハイレゾ音源はRoon ARCで再生すればうまいことダウンコンバートしてくれるので意外に「使える」印象です。
AirPlayもMac相手(AirPlay to Mac)ならハイレゾを通すようなので、いずれラズパイでも可能になるかもしれませんし、これは願望ですがRoon ARCからRAATで出せるようになれば理想的ですよね。




(2023/4/2追記)
追記にさらっと重要事項を書くことの多いブログでごめんなさいw
Shairport Syncはコンボリューション(畳み込み演算)をサポートしており、一部界隈で話題の音響補正ができます。これ楽しそう。
再生側に近い非同期ドメインで演算するので音質的にも有利なのではないかと。




(2023/4/8追記)
RAMの使用量を確認してみました。
alt
・・・極小です。ただでさえ少ないラズパイZeroのRAMの半分をoverlayrootが使うので軽量化を心がけたのですが、これなら64bit版のOSでも全く問題なさそうです。




(2023/4/9追記)
Roon ARCをモバイル回線で使う時などiPhoneとラズパイの間にネットワーク接続がない場合は、iPhoneのテザリングを有効にするとAirPlayで再生できます。
alt
iPhoneの「設定」-「インターネット共有」で表示されるSSIDとパスキーをラズパイに登録します。ただしiPhoneのDHCPではうまくアドレス配布されず、ラズパイのIPアドレスを固定しました。よくある192.168...ではなく画像のような設定になります。
DietPiで静的アドレスにする場合SSIDの登録は一つだけにする必要があるとのことで、家や車載のルーター環境と切り替えて使うことはできません。最近ドコモの車載ルーターの速度が低下していてモバイル回線との併用を目論んでいたのでちょっと残念。




(2023/6/18追記)
Roonについては中の人が見ているんじゃないかと思う位(まさか)改良が進んでいて、不満はほぼ無くなってきたので、細かな要望を一つ。
Roon ARCの「Original Format」設定でストリーミング、またはダウンロード再生したハイレゾ音源をAirPlayに出力した場合、こんなシグナルパスで一発でレート変換されるのですが、
alt

「CD Quality」設定だといったん48kHzにダウンサンプルされて配信され、ARC側で44.1kHzに再度変換されます。
alt
alt
64bitフロートで行われるとはいえ変換処理が2回入るのはちょっと嫌ですね。Roonは音声処理をきっちりやる印象があるので、ここも最適化して頂きたいです。
Posted at 2023/03/31 23:49:32 | コメント(3) | トラックバック(0) | オーディオ | クルマ

プロフィール

「@なかるう のではなく、CableJiveのライトニング延長ケーブルが機能しなくなっていました。メジャーバージョンアップ怖い。」
何シテル?   09/20 15:04
「なかるー」改め「なかるう」、「う」は大きい「う」です。 音楽のあるドライブが好きです。いい音だったらもっと楽しいですよね。なのでいい音を追求してます。 更...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2025/12 >>

 123456
78910111213
14151617181920
21222324252627
28293031   

リンク・クリップ

3Wayスピーカーのクロスオーバー設定 位相合わせ 
カテゴリ:その他(カテゴリ未設定)
2025/06/14 21:11:12
備忘 Passat Variant 11年14万kmの整備振り返り 
カテゴリ:その他(カテゴリ未設定)
2024/10/18 00:02:25
Ottocast A2AIR Pro 
カテゴリ:その他(カテゴリ未設定)
2024/06/18 03:24:43

愛車一覧

フォルクスワーゲン パサート セダン フォルクスワーゲン パサート セダン
フォルクスワーゲン パサート セダン (DBA-3CCAX) に乗っています。 シトロエ ...
日産 ティーダラティオ 日産 ティーダラティオ
(2015/8)乗り換えのため手放しました。 日産 ティーダラティオ15G(DBA-S ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation