この夏はlightMPDが熱い!
こちらの掲示板で話題になっていますlightMPDが、熱いです!
ことの発端は、ほ-りーさんの発見によるものでした。
RaspberryPi のI2Sのクロックは、内部PLLで作り出しているのですが、本来、PLL/デバイダーは整数で割り切れる数値しか作り出すことができません。
RaspberryPiは、MASHというオプションで、端数分クロックズレを起こさせて、狙った周波数へ近づけることができるようになっています。 一般的にはフラクショナルNと呼んでいます。 PLL内部のデバイダー、及び、単体のデバイダーが存在します。 RPiの内部のMASHは単体のフラクショナルNデバイダーのようです。
この定期的にズレを起こすクロックの辻褄合わせを、ジッターと呼んでよいのかはわかりません。(ジッターはノイズのように定常的に揺らぐものという認識でいます)
この定期的にズレを起こしてでも、正確に44.1kHzの64fsのBCKを作り出す機能を止めて、少しクロックが違っていても(再生ピッチがずれても)クロックズレさせずに再生しようというのがほーりーさんの発想です。
クロックズレは、こちらの記事の中の写真で見ることができます。
ほーりーさんのブログによると0.008%ほど再生速度が速くなるそうです。
そして、その方法を取り入れたlightMPD
もとより再生音が好評で、コアなファンが集まっているMPD応用ソフトウェアですが、今回のアップデートで、より一層の音質UPを実現したらしいとのことです。 早速試してみました。
raspberry pi 2 用の v1.01 をダウンロードしてSDカードに転送した後、
raspi-linux-4.0.5rt3-20150719.zip もダウンロードして、その中の
「kmodules.tgz」と「zImage」を SDカードのbootフォルダの中に入れます(上書きします)
その他、セットアップはこちらの通りです。
さくっと聴いてみた感想です。
とても音が濃く、低音からボーカル領域のパワー感もあり、楽器やボーカルの存在感が素晴らしいです。
ヘッドホンで聴いたときに感じていた、高域のキツさも感じなくなりました。 全体的には、ゆったりとくつろげる、大人のサウンドに変化したように思います。
おそれいりました。 私の好みにぴったりと来てしまいました。
絶対音感のない私には、再生ピッチズレは全く気になりません。 んまあ、その日のチューニングが440でも442でも、違和感を感じていなかったほど鈍い私ですから参考にはならないかもしれませんが。。。 (440と442を同時に比べると流石に差は分かりますよ。 念のため。)
また、ほーりーさんの方もvolumioに手をいれたバージョンを公開されていらっしゃいます。
こちらも大変興味深いです。 なんとマスタークロックをRaspberryPiから出力しているのです。 そんなことができたのか? と本当に感心しています。
近いうちにこちらも試聴してみたいです。
この夏、RaspberryPi がますます熱いですね。
追記=============================
再生ピッチを測ってみました。
まずはノーマルで1kHzの信号。
手持ちの測定機(オシロのカウンタ機能)によると 1.00000kHz
そして、カーネルを入換えたもの。 1.00100kHz と表示
この結果をみると、0.1%ほど速度が速くなっている模様。(若干あやしい?)
つぎに、LRCKを見てみる。 ノーマルは44.1000kHzと表示
カーネルを入換えたものは 44.1390kHz と表示
こちらを計算すると、約 0.9% ほど速いようです。 (どうなんだろうか)
ほーりーさんが0.008%と書いてらっしゃるのは、ラズパイ1のときのデータですので、ラズパイ2では、この実力値ということかもしれません。
その後、Jiroさんが解析してくれました。 ありがとうございます。
下記のコメント欄をご覧下さい。
※)オシロのカウンタ機能の精度は、さほど高くないので、参考にとどめておいて下さい。
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« ちいさな巨人DACあらわる? | トップページ | Stereo 2015年8月号の付録スピーカー 試聴 »
「Raspberry Pi」カテゴリの記事
- MotionEyeと余っているラズパイで監視カメラ(2024.11.21)
- 秋の夜長にはRaspberryPi5 RT-linux セルフビルド(2024.10.13)
- 秋の夜長にはRaspberryPi5 64bit版 Sabreberry32 ドライバコンパイル(2024.10.10)
- RaspberryPi 5 の公式OSは32bit版でも64bit?(2024.10.09)
- 秋の夜長にはRaspberry Pi5 64bit カーネル・セフル・ビルド (2024.10.07)
こんにちは。
当方も、「デジファイのおと」さんのlightMPDの記事で知りました。IrBerryDACをアドオンしたRas Piにはこれをインストールしています。
やなさんのP2D基板をメインに使用している関係から、Ras Pi 2を購入し「ほーりーさんの日記」からカスタマイズされたVolumio 1.55をダウンロードしてインストールしました。
どちらの組み合わせでも、本当に素晴らしいという印象です。当方も駄耳なもので(^^;、再生ピッチが早まるのですがそんな違和感は感じません。Volumioの再生画面で見ていると、表示された曲長時間の約4秒から5秒前くらいで曲が終了する感じです。
やなさんのP2D基板にはジッタークリーナーも搭載しているのですが、データそのものにジッターが理論上乗っていないということが効いているのではと思います。
長文駄文、失礼いたしました。
投稿: えふ | 2015年7月26日 (日) 13時02分
そろそろ私もlightMPD移行しようかなと思ったら、
たかじんさんのエントリ来た!
あちこち情報が散財してるので、「まとめ」的なものになるの期待しとりますm(__)m
投稿: | 2015年7月26日 (日) 17時28分
あっ、名前入れて無かった。
投稿: CR-X | 2015年7月26日 (日) 17時30分
えふさん
なるほど、5-6分の曲で4-5秒短くなるとなると、0.008%早いって所ではなさそうですね。
1分あたり1秒早いとすると1/60ですから 1.6667%高速。 メモリバッファ式DACだったらオーバーフローしそうです。
440Hzが447.3Hzになるほどの変化となると、絶対音感をもっていらたら気が付かないわけないってレベルですね。
CR-Xさん
ソフトの入換えは出費がないので、あれこれ試してみると、使い勝手、音の傾向で一番気に入ったものを使うのがでてくるんじゃないでしょうか。
投稿: たかじん | 2015年7月26日 (日) 17時44分
実際に、ストップウォッチを使って10分程度の曲を測ってみましたが、曲の終わりの誤差は1秒もありませんでした。
不正確な情報を流すのはソフトを公開して下さった作者さんに失礼だと思いますので、投稿させていただきした。
ちなみに私はPi+lightMPDで、アップサンプリングはしていません。
どなたか、正確に測っていただけるとありがたいです。
投稿: yseki118 | 2015年7月26日 (日) 19時00分
yseki118 さん
私も気になって計測してみました。 音程がおかしいとは感じなかったのですが、わずかに曲のテンポが早く感じられたからです。
ちなみに、volumioの曲の時間表示はjavaスクリプトで進んでいくようにプログラムされています。 つまり時間を進めているのはPCのクロック基準です。
ですので、PCのクロックとラズパイのクロックの差で4-5秒の違いがでることも考えられなくはない。 です。
追記部分のテストは、まったく同一のラズパイ基板で、カーネルだけを入換えて計測してみました。 1%くらい速度が速いようです。
テンポにすると、120の曲が121くらいになるので、感じられるのかもしれません。
ひとって、変なところに敏感なのかもしれませんね。
投稿: たかじん | 2015年7月26日 (日) 21時12分
たかじんさん、調査ありがとうございます。
Piの新カーネルを初めて聴いた時、音質の比較のためにAPU+lightMPDと同時に曲を流してスイッチを切り替えて交互に音を聴き比べていました。曲はベートーヴェンのピアノソナタです。確かに曲の終わりで少しずれたのは分かりましたが、10分で6秒のずれはありませんでした。PiとPi2で違いがあるのでしょうか。私はPiでしか音出しをしていませんので、Pi2のことは分からないのですが、できましたら、Piでもデータをとっていただきたいと思います。よろしくお願いします。
投稿: yseki118 | 2015年7月26日 (日) 22時15分
トップウォッチでの再生時間の測定でははっきりしないので,周波数を測定しました。
音源はWaveGeneratorで作成した1000hzのwavファイルで,16bit44.1khz,24bit96khz,24bit192khzの3つのフォーマットとしました。
それぞれヘッドホンアンプから音を出して,iPhonenのマイクから音を拾い(布団をかけました),n-Track Tunerというアプリを用いて周波数を測定しました。
どれほど正確かは分かりませんが,APU1D4でもCuboxi4でも,lightmpdで手持ちの3種類のusbのdacを用いたところ,すべて999.99~1000.00hzの表示をしています。(この範囲でふらついています)
次にRaspberryPi2とSabreberry+(I2S)にlightmpdのジッター対策バージョンでは,上記の3つのフォーマット順に
アップサンプリングあり(X4L4)の場合
1006.56hz,1017.25hz,1017.25hz
アップサンプリングなしの場合
1000.87hz,1004.69hz,1017.25hz
となっています(ただし,これも0.01hzの範囲でふらつきます)。
CDフォーマットでアップサンプリングしない場合は,セレクターで切り替えても違いは分かりません。しかし,それ以外の場合は,セレクターで切り替えなくても,はっきり聞き取れるレベルです。
音楽を聴くと,周波数の違いというよりも,曲の雰囲気が変わっていると感じます。
ここいらへんを理解したうえで使えば良いと思いますし,なにしろこんなに安価でお手軽に,こんな良い音が出せる,ということは素晴らしいですね。
真打はlinuxcomさんのBBB+ブリッジ基板で,クロックを別途持っているもの,ということになるのでしょうか。
投稿: Jiro | 2015年7月26日 (日) 23時58分
作者さんに失礼だとか、いろいろと云われていますが、当方は、ほーりーさんのVolumio 1.55カスタマイズ版の実際の挙動のことを云っているのですけどね。
何か論点がずれていませんか。lightMPDの挙動のことを評価したものではありませんが。
確かにたかじんさんのご指摘のとおり、明らかに尋常な誤差ではないので、時間表示の挙動に影響が出ている可能性が高いですが、素人ですので勝手な脚色を加えずに事実をそのまま報告させて頂きました。lightMPDのRas Pi版は、時間表示にずれが無いことも
確認しています。
投稿: えふ | 2015年7月27日 (月) 07時42分
たかじんさんのサイトで,このような議論をするのは本意ではないと思いますが,正確なデータが知りたいので投稿させていただきます。
2つ前の投稿の追加です。PiとPi2の比較を含め,再度測定しました。
すべてlightmpd1.0.1で,16bit44.1khz,24bit96khz,24bit192khzの順に再生した周波数です。
また,Pi(Bです。B+ではありません)についてはirBerry,Pi2についてはSabreBerry+を用いています。
1 Pi ジッター対策なし アップサンプリングなし
1000.03hz,1000.03hz,1000.03hz ゆらぎ0.03hz
2 Pi ジッター対策なし アップサンプリングあり(x4L4,soxr very high)
1000.03hz,1000.03hz,1000.03hz ゆらぎ0.03hz
3 Pi ジッター対策あり アップサンプリングなし
1000.91hz,1004.73hz,1017.29hz ゆらぎ0.02hz
4 Pi ジッター対策あり アップサンプリングあり(x4L4,soxr very high)
1006.59hz,1017.28hz,1017.28hz ゆらぎ0.02hz
5 Pi2 ジッター対策なし アップサンプリングなし
1000.00hz,1000.00hz,1000.00hz ゆらぎ0.01hz
6 Pi2ジッター対策なし アップサンプリングあり(x4L4,soxr very high openmp)
1000.00hz,1000.00hz,1000.00hz ゆらぎ0.01hz
7 Pi2 ジッター対策あり アップサンプリングなし
1000.87hz,1004.69h,1017.25hz ゆらぎ0.01hz
8 Pi2 ジッター対策あり アップサンプリングあり(x4L4,soxr very high openmp)
1006.56hz,1017.25h,1017.25hz ゆらぎ0.01hz
以上が測定した事実です。
ついでに付け加えると,周波数には”ゆらぎ”があります。ヘッドホンからの音を,iPhoneのマイクから拾い,アプリで測定しているので,測定系に由来するものが大きいと思います。
しかし,PiのゆらぎはPi2のゆらぎよりもすべてにわたって大きいので,測定系だけの問題ではないと思います。また,Piの周波数が,幾分高いのが気になります。
以上より言えるのは,lightmpdであれば,PiでもPi2でも,16bit44.1khzのファイルをアップサンプリングなしで再生した場合に限って音質評価ができる,ということです。
けっこう疲れました。Volumioについては,どなたか測定していただけませんか?
投稿: Jiro | 2015年7月27日 (月) 14時22分
Jiroさん
調査ありがとうございました。謎が解けました。
えふさん
「1曲につき、4~5秒速くなる」というコメントを見て、私の聴いたものとのあまりの違いに「そんなこと無いでしょ」と思いながら投稿したので、穏やかでない表現になり、申し訳ありませんでした。
結局、アップサンプリングするとピッチが異常に高くなるということなのですね。
アップサンプリングをしない状態でしか聴いていなかったので、思い込みで書き込みをしてしまい、たいへん失礼しました。
投稿: yseki118 | 2015年7月27日 (月) 16時41分
yeski118さん
時間のずれよりも,どれだけ周波数が変化しているかを知りたくて測定してみました。ちゃんとした測定機は持っていませんが。
私もはじめはジッター対策あり,アップサンプリングなしで24bit96khzのファイルを聞いたので,ずれは大きいと感じました。それでいろいろと条件を変えて調べてみたわけです。
ところで,16bit44.1khzだと1000hzに対し1hz以下の誤差ですから,聞き分けることは出来ないにしても,感じ取ることはできないのでしょうか?
このピッチのずれが,繊細感を生むのかもしれません。どなたか,アナログプレイヤーの回転数調整で0.1%程度早めてどう感じるかをテストしていただけないでしょうか?
また,測定して分かった,わずかな周波数のゆらぎが,響きとか豊かさに感じられることはないのでしょうか?
こういったことが明らかにならないと,I2Sだから音が良い,とは言えないのではないかと思っています。
投稿: Jiro | 2015年7月28日 (火) 14時20分
Jiroさん
大変、貴重なデータ、ありがとうございます。
ソフトウェア・アップサンプリングONだと差が激しくなるんですね。
再生音が1Hz違うと、同じ音を重ねるとうなりが生じるため、違いは判別可能です。
単独で音を聴いた場合は、絶対音感をもっていなければ大丈夫だと思います。
1%速いと、テンポに違いを感じ取れました。 17%速いと、もはや違う曲ですね。。。
yeski118さん
Jiroさんのおかげで、謎は解明しましたね。 まだ、どこかに改善の余地があるのかもしれません。 BCM2836のデータシートが公開されていないので、不明点が多いことだけは確かです。
DJ用のレコードプレーヤーなどでピッチベンドできるスライダーが付いているのですが、あれの最大値が8%とか10%です。
スライダ、1メモリ1%なので、その1/10くらい可変させると、そのときは違いは聞き取れると思います。 そのまま変化させずに聴き続けると慣れてしまう。
投稿: たかじん | 2015年7月28日 (火) 20時11分
たかじんさん
レスありがとうございます。lightmpdについては分かったのですが,volumioのホーリーさん改ではどうなのかは未測定ですので,どなたか測っていただければ,と思います。
ピッチの0.1%程度のずれは,分からないか,わかっても慣れてしまう,というのはその通りだと思いますが,疑問に思うのは”音質の違い”と感じられないでしょうか?ということです。
アンプの音の違いは,実は音量の違いだったということだそうです。
http://homepage1.nifty.com/iberia/column_audio_amptest.htm
僅かでもピッチが上がると,繊細になったと感じるのかもしれません。
ホーリーさんがピッチが下がる方にチューニングしていれば,また感じ方も違っていたのかもしれません。
投稿: Jiro | 2015年7月28日 (火) 23時18分
Jiroさん
おっしゃる通り、速度が違うと音が違ってくるというのも考えられますね。 なるほどと思いました。
ホーリーさん改は、まだ試していないですが、解説によるとDriverの
mash = BCM2708_CLK_MASH_1;
という1行を削除しただけのようで、高い方にシフトさせる記述は特に指定していない様子です。
https://github.com/raspberrypi/linux/blob/rpi-3.18.y/sound/soc/bcm/bcm2708-i2s.c
mashというのは、どうもこのCPUのDPLLの機能のひとつで、そいつをOFFにしただけ。
lightMPDもほーりーさん改も、同じ挙動の可能性が高いような気がしてます。
投稿: たかじん | 2015年7月30日 (木) 08時20分
たかじん さん
lightmpdの掲示板の中で、作者様が周波数ずれの理論的な説明をなされました。私の測定結果と一致するとのことでした。
アップサンプリングしないで44.1Khzを聞く分には何の問題もないような気がします。また、その上でのホーリーさんやデジファイの音様の提案ですから、お二人に敬意を表しながら、音楽を楽しめれば良いと思います。
投稿: Jiro | 2015年7月30日 (木) 10時16分
みなさま、こんばんは。
私は、raspberry pi (type B)に irBerryDAC を載せて使っています。掲示板やここの話題をみて、lightMPD や ほーりーさんが作成した Volumio で動作させようとしていますが、まだ音だしに成功していません。
log ファイルをみると、state_file をオープンできないというエラーです。 lightMPD の場合は、NASはWeb経由でみると見えているようなのです。 何で失敗しているのかわかりません。
何か試してみるべきことがあれば、ぜひ教えてください。
よろしくお願いします。
投稿: n'Guin | 2015年7月31日 (金) 23時08分
みなさま
自己解決しました。
実は動いていました。
IrBerryDAC のLEDの点滅が終わらないので、動いていないと勘違いしていたという・・・(以下略)
まことにすみません。
投稿: n'Guin | 2015年8月 1日 (土) 07時39分
はじめまして、Volumio の改造記事をご覧頂いているのを見かけてお邪魔さていただきました。
ご議論いただいてる、再生速度の割合についてですが、私の改造ポイントは、MASHレジスターを0に固定しているということです。
これにより、サウンドモジュールを駆動するクロックをCPUの内部PLLの整数除数に固定しています。
この結果、BCLKがPLL(500MHz)の1/整数に限定されてしまい、サンプリングレートもここから導かれる数字になります。
議論いただいているFirmwareでは、44.1kHz データを再生すると、サンプリングレート 44.138kHz で動作します。
0.038 / 44.1 で 0.09% の差と記述しています。
投稿: ほーりー | 2015年8月 1日 (土) 10時21分
投稿後に間違いに気づきましたので、訂正させてください。
対象のFirmwareでは、44.1kHz再生時には、44.103kHzで再生されます。
0.003/44.1 で 0.006% という記述です
投稿: ほーりー | 2015年8月 1日 (土) 10時35分
ほーりーさん
はじめまして。 MASHをディセーブルにする発見はとても素晴らしいと思いました。 実際、音質的にも変化があって、より一層楽しめるようになったと思います。
ありがとうございます。
周波数の変化は、ちゃんとした周波数カウンターを所有していないため、大雑把で申し訳ありませんでした。
1000Hzの信号を再生して、1001Hz~1000.9Hzなので、 Jiro さんの 測定結果 7 と一致するようです。 RPi2の実力なのか、lightMPDの特性なのかは、まだわかりません。 %にすると、0.1%程度。
もし、440Hzチューニングだとすると440.44Hzになりますから、伴奏をRPiで再生して、楽器を演奏しようとすると、異変に気がつく人は多いかもしれませんね。(アマチュア演奏家でも)
私は、単独で聴いている分には、全く気になりません。 音の印象はかなり良い方向に変わったと思います。
投稿: たかじん | 2015年8月 6日 (木) 23時42分
n'Guinさん
LED点滅は、RPiのGPIOのセッティングがPICからの信号受信OKとの判断をするまでやっているので、RPi側にスクリプトを走らせないといつまでも点滅する仕様です。
GPIOの出力とPICの出力が正面衝突してしまうのを回避するための仕様なのです。
投稿: たかじん | 2015年8月 6日 (木) 23時49分
たかじんさん、返信をありがとうございます。
たかじんさんが作成した Volumio 以外では、点滅し続ける仕様であると理解しました。
こちらに返信をいただいているのに気がつかず、失礼しました。
投稿: nGuin | 2015年8月18日 (火) 06時45分
nGuin さん
IrBerryDACでリモコン機能を使うのにはRaspberryPi上でスクリプトを動作させる必要があります。 それの起動をPICマイコンは待っています。
Archlinux系では
https://nw-electric.way-nifty.com/blog/2015/04/archphile-3ba4.html
こちらでスクリプトを導入できます。
Raspbian系は、こちら。
https://nw-electric.way-nifty.com/blog/2014/07/irberrydac-bff4.html
投稿: たかじん | 2015年8月18日 (火) 21時20分
たかじんさん
リモコンの件、掲示板の返答をありがとうございました。
時間がとれたら、試してみます。
一方で、問題点もでてきました。
それはピッチの差が感じ取れなくても、音色の差がわかることです。ピアノでだとベーゼンドルファー(メーカー名)よりスタインウェイのほうが音色が明るいのです。ベーゼンドルファーの演奏は確実に変に聞こえます。愛聴盤なら44.1KHzのソースでもはっきりわかります。
ピッチが同じ(A:440Hz)でも、楽器がB♭管よりC管の方が音色が明るいのです。この差がわかると言うことです。もちろん、聞いたことがない音源だとわかりませんが。
投稿: n’Guin | 2015年8月21日 (金) 20時27分
n’Guin さん
そこまで聞分けるとはさすがです。
楽器は同一でも奏者が代われば別の響きがでたりするし、マウスピースでも音が変わる。 楽器メーカーが違えばまた音が違う。 音だけ聴いて「これツェー管だ」って判別は、私にはできないです。
とくにチューバのB♭、C管は、全然わからないです。
ピアノの音色は不思議ですね。 内部のメカニカルなハンマーが弦を叩くので誰が弾いても同じ音がでそうなものですが、奏者が代わると別の音がする。
聴く立場としては、心地よく聴ければ(感動できれば)いいのかなって思ったりもしています。
投稿: たかじん | 2015年8月22日 (土) 15時12分