DoPのDSD Marker 0x05/0xFA:DSD64 0x06/0xF9:DSD128 左記以外:PCMというロジックでDSD64,DSD128,PCMの自動切り替えを実装しました。
全く保護を取らないのは、意図しない切り替えが発生する可能性が高まるので、デフォルト連続3回検出でモード切替を実行するようにしました。
また、FPGAのアーキテクチャとして、任意数の入力ポートと出力ポートをMatrixSwitchを介して接続する構成をとっていることと、DSD128の時はADAT2portを使用し、それらを連動させること、また入力ポート側のモード変更検出で出力ポートもモード変更が必要になるので入力ポート0をマスタポートとし、このポートのDSD Markerのみを監視して制御するようにしました。
なんとかDSD Marker識別で自動的に切り替わるようになりましたが、モード切替時には、ポツッとノイズがのります。
次はこれをどうやって消すかですが、今のところ妙案はありません。
I2Cでミュートを放り込む…ってか、DSDデータの曲間ノイズをハード処理でとるのは大変かとー…1bitストリームのフェードイン・フェードアウト処理を用意しないとダメなので…SACDP南下に使われてるチップには入ってるようですが
返信削除なので、ソフト側で工夫する、のが一番なのですが…PCMとDSD混在だとそれも大変だろなぁ
ってわけで、I2Cでボリューム処理、が…質的にどうかはアレとして…
Audio GateにFade In ,Fade Outを付加する機能があり、それを試してみましたが、完全ではないようですが、ある程度効果があるようです。
返信削除DSD再生開始前の波形を見ると、L/Rのデータはいずれも"L"固定から開始するので、これがノイズを大きくする原因のようにも思います。無音時は、H/Lオルタネートにしておけばある程度効果があるかもしれません。
SDTrans384のDSDサポートでも同じ問題があって、解決は結局DSD信号のフェード機能をFPGAで実装する羽目に…
返信削除ES9018相手なら電子ボリュームでも良さそうですが、他のDACチップには使えませんしねぇ…
DSDのフェードってどうやっているんでしょうね?
返信削除ちなみにAudio Gateのフェードつけるとファイルサイズが大きくなっていて前後に指定した時間分フェードが足されているのかと思われます。この方式をDDCでのハード化は無理ですし... とりあえず無音時は、H/Lオルタネートパターンにして効果があるか試してみますか....
Bunpeiです。
返信削除私がちあきさんから少し聞いた話では対象オーディオデータのフェードインではなくて、その前にスムーズにつなげるためのプリアンブルを付けているとのことでした。AudioGateのその部分を参考にされてはいかがでしょうか?
だとすると、曲間に無音バターンを挿入すれば回避できそうですね。
返信削除AudioGateは、フェードパターンが選択できるので、本当にフェード処理していそうです。どう処理しているか参考のため見てみます。
http://www.sony.co.jp/Products/SC-HP/cx_pal/vol41/pdf/tw_sacd.pdf
返信削除をみると、DSD処理チップ中に「フェード」ってのが入ってます。
http://www.npc.co.jp/ja/general/sm5951a_1.pdf
ここらにもうちょっと詳しい話が…
無音は、なにも処理せずに無音にすると、DSDデータの末尾とのゲイン差でプチっと言う音がモロに…
(SDTransのDSD出力をオシロ眺めてたら結構がくっと違いが…今のは改善されていますが)