Current filter: »piCorePlayer« (Click tag to exclude it or click a conjunction to switch them.)
Feb 20, 2023
なぜpiCorePlayerとM500でMQAを再生すると、音が途切れることがあるのだろう
今回のエントリーは前回エントリーの続きだ。
(http://blown-lei.net/endive/blosxom.cgi/audio_diary/20230214a.htm)
Deezer hifiのMQAを、Daphile経由でpiCorePlayerに送って再生しようとした顛末を書いている。
有線LANで音が途切れて、WiFiでつないで改善したのは前回エントリーに書いたとおり。
問題は、なんで有線LAN経由だったら途切れるのかということだ。
有線LAN Deezer, 2LのMQA(352.8kHz) | とぎれる |
有線LAN Deezer, Fairytales MQA(176.4kHz) | とぎれない |
有線LAN NAS音源のMQA(352.8kHz) | とぎれない |
WiFi Deezer, 2LのMQA(352.8kHz) | とぎれない |
Deezer MQA音源の352.8kHzで音切れし、176.4kHzではしない。
これはどういうことなのか、最初はM500が行うエンコードの負担が352.8kHzと176.4kHzで違うのかと思った。だから、その上流にあるSqueezeliteの設定を変えることで、多少でも負担を減らせないかと考えた。
しかしNAS音源のMQA 352.8kHzでは音切れしないことが判明。
Squeezeliteの設定は関係ないだろうと判断して、そこを弄るのは止めた。
Deezer音源とNAS音源、ともにMQA 352.8kHzであり、flac 44.1kHz/16bitの同一のフォーマットとして伝送処理される筈と思いきや、音切れが起きるかどうか差異が生じるのはおかしい。
信号処理経路のどこかで、両者に差異が生じている。
どこかで、って、Daphileサーバーより下流には差異がない。上流のデータ信号の差異が、下流に影響しているということか。
Daphileサーバーを変えたらどうか。
6730bは実はテスト用で運用しているサブマシンで、メインのDaphileサーバーはhp Elitebook 2570pが担当している。6730bよりもずっと高性能だ。こっちを使ったら、ちゃんと鳴る?
やってみた。残念でした。同じである。
ということは、NASかストリーミングか、それこそが問題ということになるのか。
どうにかして問題なく再生出来ないか。
他に弄れるところは?、ということで、有線LANからWiFiに変えたら、音切れがおさまった。
これもまた、理由がよく分からない。
Raspberry Pi上の信号伝達経路を変えたら、Deezer MQA 352.8kHzの音が途切れなくなった。WiFiのほうが、Raspberry Pi、piCorePlayerにとって、信号データの処理がやりやすいのだろうと想像できる。
しかし、ボードPCのUSBポートからUSB DACにデータを送るのに、どれほどの大きな負担の差異が生じるというのだろう。
というか、Deezer MQA 352.8kHzは、有線LANだったらラズパイが処理に困るようなデータの伝わり方をしている、ということになるのだろうか。
しかし、ポイントは絞られた。
MQA 352.8kHzが、ストリーミングで、Raspberry Piに有線LANでデータが送られUSB出力される。この3つの条件が揃ったら音切れが起きる。
いくつかの仮説が導かれる。
まず、うちでのストリーミング信号の伝送は、NAS音源データの信号を伝送するよりも、システムの負担になっているらしい、ということ。
これは思い当たることがある。
というのは、今回とは関係なく、MQAではない楽曲で、NAS音源とストリーミング音源を比べたら、わずかだがNASの方が音が良い。
音が違うのは音源のマスターが違うんじゃないかという疑念もあろうけど、僕が聞くような音源は、そうそうお金をかけてリマスターとかされるような音源は少ない。ほとんどがCD化された時点と同じマスターだと思うので、同じデジタルデータで比較できていると言って良いと思うのだ。
話を戻す。
NAS音源の方が音が良いということは、音楽デジタルデータとして、NAS音源の方が上等でシステムにとって扱いやすいということだと思う。
つまりジッターが少ないのだ。
以前、海外のサイトでジッターの解説が書いてあるのを読んだけど、そこにはジッターが多いと音が途切れると書いてあった。僕は、そんな状況が今時あるのかというようなことを書いた気がするけど、どうも今回は当てはまるのかもしれない。
しかし、そもそもMQAというのは、PCMだと原理的に逃れられないジッターの影響を極力排除しようというフォーマットではないかと思うんだけど、そういうフォーマットであるせいか、音がブチブチと切れるような状態であっても、途切れていないときに出てくる音自体はきれいな気がする。なんとかつなげて聴けるようにしたいと思わせる音がする。
次に、Raspberry Pi 3B+のデータ伝送について。
有線LANからWiFi伝送に変更したら音切れがなくなったということは、有線LANで入力しUSBから出力すると音楽信号が劣化する、つまりジッターが増加すると言っていいのではないか。
これは、異論を挟む余地はほとんどないと思う。
たぶんハードの特性によるものだ。USBと有線LANを1つのチップで処理していると思うので、安定した信号送信が出来ないのだと思う。音楽以外で使う分には問題ないのかもしれないが、音楽データだとジッターが大問題になるのだろう。
以上を踏まえて。
ジッターが多い状況だったら、MQA 352.8kHzと、MQA 176.4kHzとで、伝送結果(音が途切れるかどうか)に違いが生まれる。
MQAは折りたたまれたファイルを展開する行程がある。
たぶん展開後のデータ量が多い方、ファイルが大きくなる方が、フルデコードするDACにとって負担が大きくなる。そしてジッターが多いMQA音楽データの処理は、M500にとって、より厄介な仕事になるのだろう。
そうした違いが、再生音が音切れするかどうかに関わってくるのだと思う。176.4kHzはなんとかなったけど、352.8kHzは無理だったのかな。
デジタルデータ処理というのは、一部で問題が生じたら、他にも問題が飛び火するということがあるのかもしれないと思っている。
一部で生じているジッターが、他の場所のジッターの原因になるというようなことだ。
よく分からないから、いい加減な考えだけど。
以上、想像に過ぎないけど考えてみた。音はいい感じで鳴っている。
Feb 14, 2023
Deezer hifiのMQAをDaphile、piCorePlayerで再生する(追記:WiFiでつなぐことにした)
趣味のオーディオはBGMで聴くだけになっていたけど、Deezerを日々使ううち、昨年12月に2Lレーベルの音源にMQAがあることに気付いた。
どういう状況で気付いたのかは忘れたけど、、いや、思い出した。何の気なしにDeezerで「MQA」を検索したら2LのMQAサンプラーがヒットしたのだ。
調べたらDeezerはずいぶん前にMQA対応してるのだ。
下記、5年前のネット記事のurl。
https://www.phileweb.com/news/audio/201709/06/19032.html
2017/09/06
音楽ストリーミングサービス“Deezer”がMQA音源の配信を開始 PHILEWEB
そして最近になって、どうやら2Lの音源は多くが(全部が?)MQA、352.8kHzらしいということに気付いた。
今回はこの件についてアップしておこうということ。
下記に関連のurlを記載。
2L - the Nordic Sound All releases - 2L Music Store | https://www.2l.no/ https://shop.2l.no/collections/all |
Deezer | https://www.deezer.com/ |
Daphile | https://daphile.com/ |
piCorePlayer | https://www.picoreplayer.org/ |
使用機器の構成は下記のとおり。
Daphile(logitech media server) | Compaq 6730b |
piCorePlayer(Squeezelite) | Raspberry Pi 3b+ |
USB DAC | S.M.S.L M500 |
6730bは古いノートPCだが、使い慣れていたのであちこちで使っていた。
このスペックでもDaphileは問題なく動く。ストリーミングが聴けてDeezer以外にSpotify、Qobuz、Tidal、Youtubeなど対応しているがAmazon、Appleには対応していない。
DaphileではLMS(logitech media server)が動いている。
Daphileサーバー自体をプレーヤーにすることも出来るが、うちではラズパイのpiCorePlayerをプレーヤーにして、家庭内LAN経由でデータを送信している。
MQAを鳴らすためには、ウェブブラウザでアクセスして、「Settings」、「Advanced Media Server Settings」の画面から、「player」のタグ選択、「Basic Settings」ボタンから「audio」項目を選択して、プレーヤーのボリュームを100%に固定する必要がある。固定していないとMQAがただのPCMになってしまう。
文章にするとわけが分からないけど、実際に触りながらなら分かると思う。
piCorePlayerは、LMSから受信したデータを「Squeezelite」で受けて、USB DACに出力する。
Squeezeliteというのは、Squeezeboxのエミュレーターということだけど、要はmpdみたいなもんじゃないかと思う。
ウェブブラウザからアクセスして、あれこれと設定ができる。現状の設定は後述。
S.M.S.L M500は数万円の中国製DACだが768kHzに対応、MQAをフルデコードする。久しぶりに使っているけど、音も良いように思う。
しかしファームの当て方がはっきりしなかったり、使うのに多少の覚悟がいるかも。
僕が買ったのは数年前で、今はmk2、mk3まで製品が出ているらしい。
Squeezeliteの設定。
備忘録でもあるので、説明なく書き変えるかもしれない。
Audio output device settings | USB Audio(これは必須。設定しないと音が出ない) |
Output setting | hw:CARD=AUDIO,DEV=0 |
ALSA setting <b>:<p>:<f>:<m>:<d> |
<8192>:<128>:<f>:<0>:<d> |
Buffer size settings | 4096:8192 |
Priority setting | 45 |
他に「Name of your player」と「LMS IP」を設定してある。LMS IPはDaphileのIPだ。
Squeezeliteのマニュアルがネット上にあるので、引用しておく。
squeezelite - Man Page
https://www.mankier.com/1/squeezelite
-a <params>
Specify parameters used when opening an audio output device.For ALSA, the format <b>:<p>:<f>:<m>:<d> is used where <b> is the buffer time in milliseconds (values less than 500) or size in bytes (default 40ms); <p> is the period count (values less than 50) or size in bytes (default 4 periods); <f> is the sample format (possible values: 16, 24, 24_3 or 32); <m> is whether to use mmap (possible values: 0 or 1). <d> open ALSA output device twice. (possible values: 0 or 1).
For Linux PortAudio, the value <l> is simply the target latency in milliseconds.
For MacOS, <l>:<r> <l> is target latency in milliseconds. <r> open device in Pro Mode or Play Nice (respective values: 0 or 1).
For Windows, <l>:<r> <l> is target latency in milliseconds. <e> use exclusive mode for WASAPI (possible values: 0 or 1).
When the output is sent to standard output, the value can be 16, 24 or 32, which denotes the sample size in bits. Little Endian only.-b <stream>:<output>
Specify internal stream and output buffer sizes in kilobytes. Default is 2048:3446.
問題は、音が途切れることがままあること。
設定を詰め切れていないせいなのか、ハードの問題なのか、通信環境によるものやら、はっきりしない。せっかく音は良いのだから、もったいない。
そういうわけで、2LのMQAを聴いているのだけど、少ないながら2L以外でもMQAで配信されている音源があるようだ。
例えば、これとか176.4kHzのMQAだ。
Fairytales - Steve Dobrogosz, Radka Toneff
https://www.deezer.com/ja/album/79443672
Radka Toneffはノルウェーの女性歌手とのこと。どこかで2Lと関わりがあるのかな、などと思っていたら、1982年に亡くなっている。これは名盤なのでお薦め。
ところで、この音源だと音が途切れない。ということは、352.8kHzのMQAはM500の処理能力を越えている、ということがあり得るのか。
ところが、うちのNASに置いてある352.8kHzのMQA(MQA-CDからリッピングしたもの)を再生する分には途切れない。ということはストリーミング環境が良くないのか。聴いてる人が多いのかな。
これは様子を見ながら考えていく。
16日、追記。
Squeezeliteの設定調整では音が途切れるのを止められない。
どうしようかなあ、と思って思い付いた2案。
ひとつはi2sボード(Hifiberry Digi+)を使ってS/PDIF出力してみる方法。光か同軸を使えないか。
しかし確認したらM500は、USB入力はMQA対応しているが、S/PDIF入力はしていない。残念でした。M500 mk2では対応しているようだ。
もうひとつの方法は、WiFiでLANにつないだらなんとかならないかな、というもの。
Rasperry Pi3B+に付いている無線で、家庭内LANにつないで使ってみようと。
Raspberry PiはUSBと有線LANを1つのチップで処理しているという話を昔に聞いたことがある。3B+でもそうなのか、分からないのだけど、無線LANは取り敢えず専用の処理チップが充てがわれている、らしい?、よく分からないけど。
まあ、やってみたら分かるさ、ということで、piCorePlayerをWiFi接続するように設定。
これで今のところ、音切れなくDeezerのMQA 352.8kHzを再生出来ている。
ああー、よかった。これで使える。

もう一つの問題は、音源の曲名などに記載がなければMQAなのかどうか、分からないこと。
うちだとM500で鳴らしてみて初めて分かる。
これはDeezerのほうで、表記なりをどうにかすべきだと思うんだけど、たぶん気にしてないのだろう。まあいっかあ、である。
Mar 03, 2021
DaphileとpiCorePlayerでDeezer hifiを聴いてみる
最近は、web player、pulseaudio、libsamplerateを使って、Deezerなど音楽ストリーミングサービス音源をアップサンプリングして聴いている。しかし、もう少しスマートにやれないかな、という気持ちはあった。
そんな気持ちでいた時に、Daphile(https://www.daphile.com/)が今年1月のアップデートでDeezer hifiに対応したのを知って、取り敢えず使ってみた。
以下、その経過をメモ。
まずハードを用意。
処分しようと思いながら置いてあったノートPC、Compaq 6730bを使う。HDDは外してある。
Daphileをインストールするusbメモリスティック。
普段使いのPCに、Daphileのサイトからイメージファイルをダウンロード。64-bit x86、32-bit x86、64-bit x86 with realtime kernel、3種類用意されている。今回はrealtime kernelを使用した。
usbメモリにイメージを書き込み。
6730bにそれを刺し、有線LANケーブルを接続、usb DACを繋ぐ。biosでusbメモリから起動するように設定し起動する。
Daphileのipアドレスを確認しLan経由でウェブブラウザからアクセス。
2023.02.22.追記。
今更気付いたが、このエントリーにはDaphileをインストールする下りが欠落している。
USBメモリにイメージを焼いて、そのメモリから起動して、この時点でDaphileは起動しているんだけど、そこからDaphileを日常的に使えるようにインストールする必要がある。
何処にインストールするか。
それが、起動イメージを焼いたUSBメモリ、そのものにインストールできる。うちではそのようにして使っている。
インストール方法の詳細は、下記pdfで読める。
Daphile Installation
https://daphile.com/download/DaphileInstallation.pdf
起動画面のキャプチャとかあれば気が利いてていいんだけど、撮っていない。
画面左側に並んだボタンの中から「settings」をクリック。
設定画面の一番下に「Advanced Media Server Settings」というボタンがあるので、クリック。
上に並んだタグの中から「plugins」をクリック。
ズラッと並んだプラグイン一覧から「Deezer(v1.0)」を探しチェックボックスにチェックして有効化。再起動の操作が必要だったかな。
これだけではまだ使えなくて、一覧表のDeezer(v1.0)表示の右の方、「Logitech」という表記のリンクをクリックし「Logitech Squeezebox」のサイトに飛んで、ユーザー登録する必要がある。手順は忘れたが、登録したらSqueezeboxサイトの「My Apps」にDeezerが登録される。
これで、DaphileでDeezerを使えるようになる。
Deezerの会員じゃないのに登録を試みたらどうなるかは試していない。そんなことする人はいないだろうとはと思うけど。
Daphileの画面に戻って、操作画面左上のボタン「Audio Player」をクリック。
Player操作画面の「My Apps」の中にDeezerのアイコンが表示されるので、そこをクリックしたらDeezerの操作画面に入れる。
このアイコンは直ぐに表示されないことがある。暫く待つうちに表示されるようだ。
大雑把だけどこんな感じ。
Compaq 6730b、Daphileで、Deezerのストリーミング音声データをusb出力からDACに出力。
音質は、44.1/16レベルのちゃんとした音質、そこそこ良好な印象だ。
しかし、web player + pulseaudio + libsamplerateで384kHzにアップサンプリングした音には及ばない。比較したら情報量が少なくて粗っぽい。
しかしギャップレス再生してくれる。
これは大きい。
web player-384kHzは音はいいんだけど、楽曲によってはトラック間で途切れるのは音楽的じゃないし、改善する目途も立っていない。
Daphileの音質を改善して使いたいと思うには十分な理由だ。
libsamplerateでアップサンプリングできるだろうか。
しかしDaphileはそれ自体で完結した音楽用ディストリビューションで、sshによる外部からのアクセス等は出来ないようになっている。つまり、ウェブブラウザからの操作しか基本的に受け付けないので、libsampleratのインストール操作自体が出来ない。
ベータ版ならsshでログイン出来るらしいが、それで弄って使うというのは気乗りしない。Daphileのアップデートに際して困るだろうし、sshでログインできたとして簡単にlibsamplerateが使えるようになるとは限らない。
ならば、LMSレンダラーでやるか。
DaphileはLMS(Logitech Media Server)として機能している。
piCorePlayer(https://www.picoreplayer.org/)をレンダラーにして音声データを送ることができる。
つまり、piCorePlayerにlibsamplerateをインストールするという案。
そんなわけで、まずpiCorePlayerをLMSレンダラーにしてみた。
まず、Raspberry Piを用意。今回使用したのは3B+。
現在、piCorePlayerのバージョンは7.0.0。せっかくなので64Bit Kernel版をダウンロードしmicroSDカードに焼いて3B+に刺す。
LANとusb DACを繋いでusb電源で起動。
この段階では、まだ音は出せない。DACの設定をする必要がある。
ウェブブラウザからpiCorePlayerのipアドレスにアクセス。
操作画面上に表示されたタグ「squeezelite settings」をクリック、Choose audio outputの項目で「USB audio」を選択し「Save」をクリック。続いてpiCorePlayerを再起動。これで音声出力の設定が変更、保存される。
他にイヤホン端子出力を止める設定とかあった気がするが今回は省略。
ここからはDaphileを操作。
操作画面右下で、プレーヤーにpiCorePlayerを選択。
音楽再生の操作をしたらpiCorePlayerに繋いだusb DACから音が出る。
というわけでCompaq 6730b、DahileでLMSを介してDeezerの音声データをpiCprePlayerからusb出力。
音質は悪くない。
しかし、Daphileのusb出力から音出しした時と比べて、意外に大きな向上はないかな、、、
せっかくRaspberry Piを使っているんだから、i2s DACを使うほうが賢いのかもしれない。
そうこうしながらpiCorePlayerにsshでログインして中を見てみたんだけど、libsamplerateをインストールして、というような細工は、僕にはちょっと出来そうにない。
これはお蔵入りか、とも思ったが、試しに電源やusb端子に簡単なノイズ対策をしてみたら、なんだか結構、良くなってきた感じ。
情報量は少ないままだけど音色はいい。粗さが気にならなくなってスムーズになった。
これなら、web player-384kHzと併用しても良さそうだ。なにしろギャップレス再生ができるんだから。
しかし、こうなると残る選択枝は、libsamplerateをインストールしたupnpレンダラーをDaphileに繋ぐ案だ。
Daphileをupnpサーバーとして運用する。
出来るかな、upnpは随分昔に弄ったことはあるけど、、、
まだ手が付いていない。後日、もしも出来たらエントリーにする。
ちょっと余談だけど、Daphileで表示されるDeezerは、web playerのDeezerの表示とは若干違っている。
お気に入り登録の扱いとか、Daphileで再生した曲は、web playerの「最近再生した曲」には表示されないけどアカウントから入る「再生履歴」には表示されるとか、なんだか色々分かっていないことがある。
使ううちに分かっていくだろうと思うが、今の段階では使い勝手はweb playerのほうが良い感じだ。