• v0.9.4 リリース (v0.9.4 release)

    @yo さん

    flacでは上手く再生出来ることを考慮すると、どうもlinuxのwavフォーマットのデコードに伴う問題のようです。

    V0.7系のころにwmaファイルの再生で同様な現象になった事もありましたので、デコーダ系の問題の可能性は確かにありますね。
    ただ、henzajimaさんは音が途切れ途切れと仰っていますが、拙宅では音切れというよりブツブツといったノイズが混じった再生となります。
    wavはflacに対してデータ量が大きくなる為、ネットワークからデータを受け取る際のバッファに起因する問題なのかもしれませんね。

    @hiroget9 さん

    私もほとんどCDからのリッピング派です。ただ、クラシックファンにはCDで購入できない音源を多数ハイレゾ音源で購入されている方もいらっしゃるようですね。
    なので、いずれにしても原因を特定するところからですかね。その結果で行われる対策が44.1kフォーマットの音質を損なわないようであれば、より多くの方がsmpdの高音質を享受できるので、是非ともハイレゾのwavにも対応して頂きたいですね。

  • 当方の事例ですが、ご参考となれば幸いです。

    プツノイズ的なものの発生は3B、3B+というプラットフォームの違い、あるいは最適化の差異もあるかもしれませんが、当方の音源はFLAC(uncompressed)で、3B、3B+いずれにおいても192KHz/24bitまでの再生で全く問題ありません。CPUクロックはいずれも1152,1200で、(3B+のみ)1368,1400でも試しましたが変化はありませんでした。

    ただし、UPnP化して、サーバーからWAVにtranscodeして送り込むと3Bではプツノイズが入り始めハイレゾに向かって症状は顕著になります。ちょっと不思議なのですが3B+では全く入りません。(この点は稼働状態の差異にもあると思いますが)

    なお、他のディストリビューションでは3BでもWAVのハイレゾ系音源でもプツノイズ発生はない(Stand Alone、UPnPいずれでも)ケースもありますので、WAVデコーダーの課題以外の要素として44.1KHz/16bitへ最適したSymphonic-MPDのコアの部分も何かしら絡んでいるのかもしれません。

    この辺りはハードウエアのパワーである程度解決できるものもあるような気がいたします。

  • 皆様

    切り分けのためのデータです。

    GentooPlayerのラズパイ3版を使い、ハード側はSMPDと同じ構成(SDカードを入れ換えただけ。rpi3B+hifi-dac-hat+GLA I2S-TX-C1+キツネDAC)で確認しました。ハイレゾのPCMデータはあまり持ち合わせはないので、雑誌の付録、WAONのサンプル版に入っている88KHz、96KHz、192KHzを使いました。
    全て問題なく再生できました。GentooPlayerはgp-update後、Mpdと UpMPDcliを有効にしただけのディフォルト状態です。

    ということで、問題は「PCMデータがリクエストに遅延しないようリアルタイムカーネル(Xenomai)を使って±100ナノ秒のタイミング精度でバッファへの書き込みを制御しています。」が間に合っていないということなのでしょう。GentooPlayerはここまでのシビアな追い込みは行っていないので,alsaのバッファに助けられ、音切れなく再生できるようです。

    GentooPlayerはイタリア産のソフトですが、SMPDの良きライバルだと思います。ラズパイ3版も素晴らしい音がしますね。
    もちろん僕はラズパイに関してはSMPDの肩を持ちますが。

  • @yo さん @ゴンザエモン さん @Pass さん

    情報提供ありがとうございます。
    いまPi4版の作業を進めておりますので、ハイレゾの安定性という面も意識していきたいと思います。

  • 「direct_io」に関連してちょっと判らない事象が起きていますのでご教授いただければ幸甚です。

    古いテーマで恐縮なのですが、ジャイアンさんの「NASな部屋」のスレッドの中にこのdirect_ioに関する記述があり改善効果への言及もありましたので試してみました。

    ところが、MPD Client(当方の場合はiOS上のyaMPC)を使える設定にしますと、数十秒程度再生したところで次の曲へどんどん飛んで行ってしまいます。

    6600ポートを閉じて、WEB UI(ympd)だけで操作しますとこの現象は起きません。また、6600ポートを開けてyaMPCからの操作でも、direct_ioをコメントアウトしておけば、発生いたしません。

    MPD Client(yaMPC)側の問題かもしれませんが、direct_io設定とも関連もありそうでしたので質問させていただきました。

    なお、当方今までずっとdirect_ioをコメントアウトしておりましたが、過去のバージョン(記憶が定かではありませんが)でこの機能を有効にすると、音源(Server PC上の共有フォルダをNASの代用)がうまく読み込めず?再生できない、という状況があったため、このようにしてきました。現状は再生できない、ということはありませんが、、、

  • @ゴンザエモン さん

    普段 direct_io "yes"、6600ポートは閉じた状態で使用しています、yaMPCは使用していないのですが今回ポートを開いて試してみました。

    yaMPCで、
    FLAC(無圧縮) 44.1/16、96/24 再生問題なし。FLAC(無圧縮) 192/24 再生途中でブツブツと音切れ発生。
    ympdで direct_ioは "yes"、6600ポート off では 192/24 も問題なく再生できています。

    yaMPCは使い勝手の良いアプリですが、SMPDで6600ポートを開けると若干音質に影響するような気がしますので状況にお応じて切り替えて使用しています。
    yaMPCの問題でもなさそうですがお役に立つ情報でなくてすみません。

  • @flyingace さん

    情報ありがとうございました。
    (報告を失念いたしましたが、当方の環境は3B+です。)

    direct_io設定と6600ポートオープンの組み合わせは好ましいものではないようですね。(最適化の状態とも関連性があるのかも?)

    ympdのソケットをクローズしたらどうなるかを含めてもう少し状況を確認、整理してみます。

  • @ゴンザエモン さん

    mpdのdirect_ioオプションは独自に追加したものであり、もともとmpdで動作が保証されているものではありません。
    これがうまく機能する条件はとても限られていますので、何か問題があればオフにしていただくとよいと思います。


    通常、アプリケーションがファイルを読み込むとき、まず初めにカーネルがハードウェアからデータを読み込み、メモリ上に保持します。これがディスクキャッシュです。
    その後、ディスクキャッシュ上のデータをカーネルから受け取り、アプリケーションが自分で確保したメモリ領域にコピーしてからデコードなどの後続処理を行います。

    direct_ioオプションを有効にすると、読み込んだ音源ファイルのデータをカーネルはディスクキャッシュに保持せず、mpd内部で確保したメモリ領域に直接コピーします。
    データが壊れてないか、データコピーが中断されなかったか、といった仔細にカーネルは関与せず、全てmpd側で担保する必要があります。
    私がテストしている条件以外では動作の確認は取れておりませんので、ご了承くださいませ。

  • @パパリウス さん

    ご親切な回答ありがとうございました。
    direct_ioが高音質化のひとつのテクニックとしてSymphonic-MPD独自の付加機能であること等は存じ上げておりましたが、MDPクライアントとの同時使用はできない、ということは理解できておりませんでした。ちょっと残念な気もいたしますが動作確認していない、ということであればやむを得ないかと。お手を煩わせてしまい申し訳ありませんでした。

  • @Pass さん、お世話になっています。
    ハイレゾの件ですが、クラシックを聴かれる方の事情に疎いので、不用意な書き込みをしてしまいましたm(_ _)m
    私もレコードからデジタル化した音源は持っていますので、ハイレゾに対応されれば、望ましいことだと思います。
    Pass さんがおっしゃるとおり、原因の特定で利用者の幅が拡がれば良いですね。
    失礼いたしました。