@パパリウス さん
追加報告です
PCMでも88.2KHzのファイルは再生しませんでした
DSDの2.8MHz,5.6MHzが同じ動作みたいですので
DSDが再生出来ないと言うよりも
44.1KHz系列の88.2KHz以上のクロックのファイルが
正常動作してないのではないでしょうか
何方か176.4KHzのファイルが異常動作と報告が有りました
先ほどの報告ではハングアップではないと報告しましたが
再生出来ないファイルを再生後はハングアップしている様です
検証いただきありがとうございます。
88.2KHz系に切り替わるときにハングアップする問題に対処しました。
ドライバを差し替えたあとは念のため再起動をお願いします。
再生開始直後やサンプルレートの切り替わり時、中断後の再開などに不具合が残っている可能性がありますので、お気付きの点がありましたら小さなことでもご報告いただけると幸いです。
V=v108b2;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
V=v107;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
皆さん、検証いただきありがとうございました。
ポップノイズなどお気付きの点がありましたらお知らせください。
今取り組んでいるのは『負荷を低減・平滑化していくとどんな音になるのか』というテーマとなります。
その実現手段として、セパレート構成の実装を進めています。
セパレート構成の実装にあたり、重要なポイントが二つあります。
一つは「カーネルのTCP/IPスタックをバイパス」すること。
もうひとつは「DMA転送バッファのスワップ」を実装することです。
再生負荷が低いRAMディスクからaplayで再生という事例で、再生までにどのような処理が行われるかを例示してみます。
RAM⇨aplayバッファ⇨ALSAバッファ >> FIFO
矢印(⇨)はメモリ上でのデータのコピーを表します。このようなデータのコピーはメモリからレジスタへの読み込みとレジスタからメモリへの書き込みを組み合わせて実現されます。
最後のFIFOへのコピーはDMAで、CPUを使わないデータコピーです。
次に、v0.4系のセパレート構成を例示します。
ncatでデータを受け取り、パイプ経由でaplayで再生する方式です。
ソケットバッファ⇨ncatバッファ⇨カーネルバッファ⇨aplayバッファ⇨ALSAバッファ >> FIFO
次はv1.0系でmpd再生する例です。
ソケットバッファ⇨mpdバッファ⇨xsinkバッファ⇨ALSAバッファ >> FIFO
今回のv1.0.8βでmpd再生する例がこちらです。
ソケットバッファ⇨mpdバッファ⇨xsinkバッファ >> FIFO
セパレート構成の実装のために研究していたDMA転送バッファのスワップを応用して、データコピーを1ステップ削減することができました。
最終的なセパレート構成で目指しているのがこちらです。
ソケットバッファ >> FIFO
ソケットバッファから直接FIFOにDMAしてしまうというシンプルなアイデアです。
メモリ上でのPCMデータのコピーはただの一度もありません。
低負荷を突き詰めていくとこの方式に収斂するだろうと思います。これ以上、処理を減らしようがないからです。
ネットワーク経由で受け取ったパケットのうち、PCMデータ以外は全てカーネルのTCP/IPスタックに渡します。(不要なパケットはこの段階でフィルタしてしまうことで、さらに負荷を下げることもできます。)
PCMデータの入ったソケットバッファはそのまま保持しておき、DMA転送が終わったソケットバッファと逐次交換していくことで連続再生します。
セパレート構成の実装に必要な2つの要素技術(カーネルバイパス・DMAバッファスワップ)は実用レベルになってきました。
引き続き、年内に試作版を公開できるよう進めたいと思います。
@yo さん
フロント側にはncatの代わりとなるプログラムを用意します。
バックエンドとの通信を細かく制御するためです。
物理的な接続については特に制限を設けず、ハブ(ルータ)経由での接続をサポートしたいと思います。
直結に限定すれば、IPヘッダ・UDPヘッダを省くことも技術的には可能です。
もし通信のスループット向上が狙いなら、そのような実装を目指したかもしれません。
今回は負荷の低減と平滑化が狙いであり、それは直結に限定しなくてもLinuxカーネルのTCP/IPスタックをバイパスするとともに緻密なフローコントロールを実装することで実現可能です。
通信の平準化により、ハブ(ルータ)への要求スペックも大幅に引き下げることになり、通信経路上の機器がボトルネックになる可能性は低くなると思います。
マイナーチェンジ版のβ3をアップしました。
ソースコードのクリーンアップがメインで、動作はβ2とほぼ同じです。
V=v108b3;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
V=v107;cd /run/;wget -O - https://www.symphonic-mpd.com/release/$V.tgz|tar xzf -;$V/install.sh;rm -r $V;cd
@パパリウス さん
お世話になっております。
SB32+PRO DoPと、Allo digioneを使用しています。
SB32+PRO DoPでは、問題無くRadioが鳴りますが、Allo digioneですと、Radio(Linn classical)を鳴らそうとすると、秒数のカウントが1秒で止まり、そのあと、time outとなり、全く鳴りません。
過去の書き込みを参考に、MPDの設定について、
バッファを640から960、Float→Integerを24に変更してみましたが、状況変わらずです。
なんとかDashboardを取ってみると、Format欄が空白となっていました。
接続も途切れるようですが、rebootを押した後、数分したらrebootされました。
対応方法について、ご教示下さい。
Logも取れましたので、後程お送りします。
よろしくお願いいたします。
@パパリウス san
Just providing feedback and encouragement for the excellent sound of β3.
The concepts you are implementing in this version appear to have compelling simplicity to them.
I have now tried β3 and played without a reboot and at first, I found that the player would not execute the play from the NAS until the 2nd or 3rd click of the play. It would pop but not play. That error reduced after a few instances and I also rebooted after a few hours and now I can not reproduce that error.
I am astounded by the improvement.
Describing improvements in sound is like catching air but I will try.
The timbre and sonority of the music has improved greatly. In comparison to previous version, the notes seem to be more complete in a way where the previous version might have flat spots around the edge of a circle, now the circle seems to be better formed. I think I hear more of the acoustic of the recording. The silence between notes is easier to hear and instruments and the notes they are playing seem to be easier to hear and there is more information in that note compared to the previous version.
I heard this all from the first recording I tried and I ended up listening for a few hours because I was hearing so much better into my collection.
I wait for the final release and in the meantime I will continue listening to β3.
Thank you to the team for all these improvements.