BeagleBone Blackの風が吹いていますね(^_^;)
私は地道にArchlinux+APU1Cを弄っています(笑)
ところで
(APU1C+linux-4.9.8+native-dsd-noise.patch+patch-4.9.6-rt4.patch.gz+mpd-0.20.4)
を試してみたところ
4.8.15-rt10まで問題なかったDSD256(11.2MHz)ファイルの再生が
音が途切れ途切れ+早送りになるようになりました?
ちなみにDSD5.6MHzのファイルは問題ありません。
念のため、intel i5 4コアマシンで同じ条件で
試した見たところでは問題なしです?
うーん どこが悪いのか見当がつきません。
過去の経験から、もし何か分かればヒントを貰えないでしょうか(^_^;)
koma さん
なりゆきで、BBB lightmpdに熱中していますが、arch linux & apu を忘れたわけではありません(^^;;;。
> 4.8.15-rt10まで問題なかったDSD512(11.2MHz)ファイルの再生が
> 音が途切れ途切れ+早送りになるようになりました?
> ちなみにDSD5.6MHzのファイルは問題ありません。
「intel i5 4コアマシンでは問題なし」ということなので、性能的差により発生しているのでしょうね。
arch はローリングリリースですから、以前OKだからといって、新しいバージョンでOKという保証はありません。新バージョンによるレベルダウンは日常茶飯です。arch使いの嗜みは「ちゃんと動いている旧バージョンはしっかり残しておいて、いざとなったらそっちに戻す」です。
まあ、このご返事では身も蓋もないので、ちょっとだけ僕のあまり役に立たない推理です。
rtカーネルではいったん制御権を渡されたモジュールは仕事が終わるまで、制御権を握りぱなしで動きます。従って、osから制御権を渡されたら、出来るだけ速やかに処理を終わらせ、制御権をosに返すというのが仁義です。仁義を守らないヤクザが頑張ると、ひとときの神戸や福岡のような状態になるので、問題です。同じように、rtの世界でも仁義を守らないモジュールが登場すると、音が途切れとか雑音とか早送りとかいろいろな問題が発生します。
arch新版により、多分、このような問題が起きているのではないかと思います。
対応策は上記したように旧版に戻すというのがお勧めですが、あとrtカーネルを諦めるという方法もあります。full rtをやめて、Preemptible Kernelにすれば、一定時間以上制御権を握り続けるモジュールから強制的に制御権を奪い返すというosの機能が有効になりますので、問題に対処することが出来る可能性があります。
アドバイスありがとうございます。現状で普通にアップデートすると
Linux arch 4.9.6-1-ARCHのカーネルがインストールされます。
このrtでは無いカーネルでも同じ症状です。
なので打つ手はカーネルの軽量化?ぐらいしか思いつきません(^_^;)...
最新カーネルは音がとても良いので残念です。
最新のカーネルとmpdの組み合わせでは曲間のノイズさえ我慢して
且つカーネル指定のDDC or DACを使用すれば
何の加工も無しにDSD-nativeが実現されているのが凄いと思います。
またカーネルで指定のないDDC or DACを接続してDSDファイルを再生すると
勝手にPCMに変換されて出力してくる様です(^_^;)
もちろん/etc/mpd.conf で dsd type dsd_usb とかの指定は一切必要無いです。
koma さん はじめまして
11.2MHzということはDSD256ですよね。
以下を確認してみてください。
DSD256を再生しているときに
cat /proc/asound/Botic/pcm0p/sub0/hw_params
を実行して format: に何と表示されていますか?
ひょっとしたらDSDフォーマットとして再生できていないのかもしれません。
mpd-0.19系のときはdigififan さんのパッチ
0008-native-DSD-u32le.patch
(lightMPDのbuildroot設定ファイル類 lightmpd-buildroot-beaglebone.tgz https://drive.google.com/file/d/0B6wqcK_p4l0ROTFjR3drZk1RWkk/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B6wqcK_p4l0ROTFjR3drZk1RWkk/view?usp=sharing に含まれています)
をmpdにあてて明示的に
dsd_usb "no"
dsd_native "yes"
dsd_native_type "3"
とすることで format: DSD_U32_LE としてDSD64/128/256を再生できていました。
mpd-0.20系ではそのような明示的な指定はできないようです。(自動判別におまかせ)
digififan さんが自身のlightMPD掲示板でmpd-0.20のnative dsdの問題点を述べられています。
kensさんありがとうございます。
>cat /proc/asound/Botic/pcm0p/sub0/hw_params
残念ながら確認済みで
--------------------------------------
カード 0: DIYINHK
access: RW_INTERLEAVED
format: DSD_U32_BE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 32768
buffer_size: 131072
--------------------------------------
となっています(^_^;)
ちなみに最新アップデート済みのArchlinuxだとmpd-0.19.7の全部パッチ済みの
コンパイルはたぶんffmpeg関連の何かが原因でコンパイルできません(悲)