• RPi4版 v1.0系のサポートはこちら

    @パパリウス さん

    nzatoです

    Sabreberry32 Syncドライバーで、v1.0.7β1を試しています。

    問題なく再生できています。切れのいい解像度の高い音で、I2S の TOPPING D70 で再生するよりはるかに良い音が出ています。 今は、D70 が控えの DAC になってしまいました。

  • 皆さん、ご報告ありがとうございます。
    動作しないドライバがあるようですね。

    こちらでは、

    • inno OK
    • Sabreberry32 OK
    • SB32+Pro DoP NG

    という状況です。

    SB32+Proで現象が再現しますので、対策を進めたいと思います。

  • パパリウス様
    私のES9038Q2Mで問題ありません。

  • @パパリウス さん
    0719に対応して頂いたkernel+v1.0.7β1ドライバーでrpi-dac+roonは問題なく動作しています。

  • パパリウスさん         CC.皆様

    V1.0.7b1ですが、「hifiberry digi+pro」にて再生不可です。

    選曲、再生指示まではできますが、そこでハング?
    おそらく既に報告のある事象と同様と思います。

  • @ゴンザエモン さん

    ご報告ありがとうございます。

    MPD設定でsox_format *:32:*または*:24:*を指定した場合は音がでますでしょうか?

  • パパリウスさん

    sox_formatは "none" にしておりましたので、

    *:24:*  (ちゃんと半角で入れてます)

    と変更してみました。これで、サーバーPC音源の再生は可能となりましたが、air play (Amazon Music HD)の音は出なくなりました。

    air playで音が出ないケースもハングしたかのような状態になります。

    このベータドライバはビットレートの変換を行っているものなのでしょうか、為念。

  • @ゴンザエモン さん

    AirPlay / Spotifyについては、SOUND CARD設定のDEFAULT_SAMPLE_FORMATをS24に変更してみてください。
    これでmpdと同じく24bit変換する設定になりますので、音が出るのではないかと思います。


    このベータドライバはrtalsaドライバを修正しています。

    もともとはv0.9.6で実装した「再生ソフトからxsinkへのコピー」「xsinkからALSAバッファへのコピー」という2つのアセンブラコードのうち、まだ64bit版に移植できていなかった後者の処理を実装したものです。

    16bit音源の場合、読み書きの最小単位が16bit x 2ch = 32bit (=4バイト)になるのですが、その扱いがバグっていてハングアップしてしまう状況です。

    ARM 64bitアーキテクチャでは、レジスタに読み込んでいるデータを物理メモリに書き込むときはSTR命令(ストアレジスタ)、STP命令(ストアレジスタペア)という命令を使います。
    STR命令は1バイト/2バイト/4バイト/8バイトの書き込みを使い分けることができます。
    STP命令は64bitレジスタ2つ分、つまり16バイトの書き込みが可能です。
    物理メモリからレジスタへの読み込みにはLDR命令,(ロードレジスタ) LDP命令(ロードレジスタペア)を使います。
    これらの命令を組み合わせ、必要なだけループ処理してメモリからメモリへのPCMデータのコピーを行います。

    汎用のメモリコピー関数は、1バイト単位であっても正確にコピーしてくれます。smpdで用意したPCMデータ専用のメモリコピー関数は、読み書きの最小単位が4バイト単位であることと、リングバッファの読み書きである点を考慮して、より高速なコードになるように工夫したものです。
    ARM 32bitとARM 64bitではCPUがサポートしている命令が大きく変わっており、v0.9.6からの移植が簡単ではありません。
    30行程度のコードですが、汎用の関数よりも効率的な実装にすることがなかなかできず、手こずっています。

  • パパリウス様

    あれこれ試しましたが、sox_resampler-formatを *:32:*とすることであっけなく解決しました。
    sound cardメニューでdtoverlayをrip-dac、i-sabre-q2m、dionaudio-locoなどと替えても融通無碍に音を出してくれます。

    音は素晴らしい!
    分離の良さはそのままに、音にコシとハリが加わり、重心も下げられたようで、ピアノの中低音部、コントラバスの低音がリアルに響きます。
    毎度のことながらありがとうございます。

  • @しろう さん

    ご報告ありがとうございます。
    直接の原因は判明しましたので、あとはうまく直すだけ、、、です。👷
    最終的には16bit音源もそのまま音出しできるように修正してからリリースしたいと思います。

    これをリリースできれば、32bit版(v0.9系)からの遺産はすべて移植完了となります。

  • パパリウスさん

    詳細、深謝です。

    DEFAULT_SAMPLE_FORMAT S24 にてAmazon Music HDもOKとなりましたので、取り急ぎご報告です。

  • パパリウス様

    もう解決済みだったのですね。

    よく聞き込んで見れば、分離も一段と素晴らしくなっていますね。

    新ヴァージョン楽しみにしています。

  • @mgroovy さん

    SoX Resampler Quality quick時のDSD PCM変換再生についてご報告ありがとうございます。
    不具合リストに載せておきたいと思います。
    (quick指定で運用することはまず無いと思いますので、実害無しということでそのままにしておこうと思います)

  • @パパリウス さん、お世話になります。
    MPD設定でsox_format :32: で音出しできました。
    とりあえずご報告まで。
    これから聴きこんでみます。

  • パパリウスさま

    ver 1.07b1、IANCanada Fifopi/D90 で、SoX :32: できちんと再生できました。

    このときの音はとてもいい感じです。Ver 1.05 のしっかりとした強さと、ver 1.06 の繊細な響きのどちらも備え音に輝きがありスリリングです。
    過不足のないとてもいいバランスで音楽に楽しく浸れます。素晴らしいです。NOSでどう聞こえるか正式版が楽しみです。

  • 手直ししたv107β2をアップしました。
    SB32+PRO DoPで16bit音源もハングアップせずに再生できることを確認しています。


    βドライバ(v107b2)への差し替え

    V=v107b2;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
    

    v1.0.6ドライバへの戻し

    V=v106;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
    
  • @パパリウス さん

    β2のアップ、ありがとうございます。
    β1では即ハングアップしていたAllo Digione Signatureですが、ハングアップすることなく無事に再生できています。

  • パパリウスさま

    Ver 1.07b2 下記2機とも問題なく再生しております。ありがとうございました。
    ①IANcanada FifoPi/D90 NOS
    ②Sabreberry32pro NOS

  • @ジャイアン さん @mike さん

    ご報告ありがとうございます。正常動作が確認できてよかったです。
    β2は動作優先のため性能はイマイチですが、これをベースに手直ししていこうと思います。

  • v107β3をアップしました。
    v106よりも(僅かながら)性能が良いことが保証されているバージョンです。


    βドライバ(v107b3)への差し替え

    V=v107b3;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
    

    v1.0.6ドライバへの戻し

    V=v106;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
    

    β2では16bit音源の対応のためにコードが複雑になってしまい、もともと目指していたシンプルさからは程遠い状態になってしまいました。

    このβ3は汎用関数を使った実装に戻しながらも、一部に改善を加えたものになっています。

    このβ3よりもより効率的な実装ができるかどうか、しばらく試行錯誤してみたいと思います。