讓電腦端輸出DAC/一體機播放音樂時
不受電腦軟硬體任何不可考因素影響音質的解決辦法
---
1.光纖輸出(電腦或是音效卡) + DAC端獨立Master Clock (如HP-A8MK2)
最佳方案
2.USB走ASIO輸出, DAC端不吃USB電且有做好訊號內部隔離(isolation) (如TEAC UD-503)
次佳方案
3.走DLNA接收器+光纖輸出給DAC
手機播放的方法之一, 但有時候會不順
4.選用impedance 50歐姆, Shield設計良好, 符合USB 2.0 HighSpeed規格的線材(可選用大廠產品)
5.選用實惠且作工良好的TOSLINK光纖線材, 如Amazon Baisc光纖線
6.DAC/AMP放離電腦遠一點, 不要共用插座(有預算就上隔離電供)
7.電腦機殼蓋上以免內部的電磁波向外逸散, 若選用無風散系統可減少環境噪音
如果家裡有地下室, 可允許的前提下把整套系統直接搬到地下室(電波雜訊對策)
如果DAC驅動程式爛或是USB相容性爛上了ASIO也不斷爆音
先試著換USB孔, 透過獨立供電USB HUB, PCI-E USB擴充卡...
如果還是無解那就無解了把DAC扔了...
電腦的軟硬體設置(不含播放程式)會影響DAC/一體機音質
只說明了DAC端對於USB/光纖輸入的處理不周到不完美, 請多花錢換更好的設備
如果換了USB線讓音質更好(不含電源分離線)
其實要怪DAC內部對於雜訊處理的不完美, 以及你家電波環境太過雜亂
如果換了SSD音質變好聽, 換了電腦PSU聲音變純淨
請檢討1到7的哪個環節哪裡沒做好
以上, 看到各種討論的一點感想
----
光纖同軸進來的訊號要消除Jitter有很多方法
最簡單的就是DAC自己有兩顆石英振盪器
進來的訊號先進Buffer, 依照其PLL解出的Clock是44.1還是48系列改用自己更好的石英震盪器(TCXO)來生成
在這個前提下只要電腦端不要傳"錯"的資料, 輸出Clock的精度相對地就沒這麼重要
當然, 這樣的處理通常只會在中階/高階DAC上看到
---
以我個人在各種店家耳機展拿NB接DAC的經驗來說
USB認不到主要是OS系統的問題, 跟硬體反而較無關聯
有時候甚至要手動進裝置管理員把Driver砍掉, 或是把Unkown Device(未知的裝置)以全手動模式指定驅動程式
換USB孔認的到的原因
主要是電腦除了CPU內建北橋提供的原生USB Host Controller外, 因為廠商想要增加USB孔所以在主機板內部就以PCI-E連結了第三方廠商的USB晶片組
當接上由外部晶片組提供的USB, 在Windows內部其核心驅動程式是不同的
這種情況下升級WIN10或許會改善, 但或許也不會
把作業系統完全重新安裝也可能會改善
這就是Windows一直到現在都不預設支援USB Class Audio 2.0留下的弊病
現在在外面試聽DAC, 直接拿手機搭配ONKYTO HFPlayer OTG都還更穩定不容易出問題
---
在傳統的Windows音效播放中, 要放出聲音是要經過層層轉換與關卡的
如果單純呼叫Win32 API播放一個"叮"的效果音
需要經過的路徑可能是是
0 應用程式呼叫Windows Audio API (MME)
1 -> 放入MME的播放用Buffer
2 -> SRC轉換成Windows預設取樣頻率
3 -> 與正在播放的音訊做數位混音
4 -> 經過Windows內建的軟體DSP效果器
5 -> 放入USB Audio Class驅動程式的專用buffer
6 -> 經由軟體執行週期(CLOCK)將之前Buffer的音訊內容丟到USB輸出用Buffer(例如在44.1KHz PCM中, 16bit封包中僅傳13bit)
7 -> USB控制晶片由USB輸出用Buffer提取資料(在此做內頻外頻轉換), 傳送給音效裝置(基頻12MHz)
8 -> 音效裝置(通常為12MHz基頻)取得一定封包數量後(13bit代表要接收至少兩個封包才能拼成一個Frame), 轉換為I2S訊號餵給DAC晶片, DAC晶片需要播放取樣率的256倍頻率當作Master Clock, 故USB裝置上的12MHz OSC無法完美除頻成44.1KHz, 故留下Jitter
然後以上所有流程大概要耗掉個50ms以上
播放音樂或許沒差, 現場樂器演奏, MIDI鍵盤按下去後到發出聲音的間隔就有差了
WASAPI的話, 流程則簡略成這樣
0 應用程式呼叫WASAPI API播放 >> 上面的流程直接從5開始跑下去
優點是減少處理暫存流程, 沒有SRC. 但5到8的問題仍然走傳統路徑, 由於USB基頻所產生的Jitter一樣少不了
ASIO則是設計思想不同, 流程大略如下
0 應用程式呼叫ASIO API
1 -> 經由USB Audio Class 2.1以ASIO Profile編碼內容丟到USB硬體輸出用Buffer (480MHz全速傳輸)
2 -> SB控制晶片由USB輸出用Buffer提取資料(在此做內頻外頻轉換), 傳送給音效裝置(480MHz全速傳輸)
3 -> 裝置接收資料後, 放入Buffer並由ASIO封包內容判斷其取樣頻率, Bit深度(16/24/32)
4 -> 依照其取樣頻率不同, 以44.1KHz系列或是48KHz系列OSC來生成主時脈(Master Clock). 並以其時脈來從Buffer提取資料以I2S傳送至DAC
這樣做理論上可消除因為USB基頻所產生的Jitter
據我所知無論是一般USB Audio Class 1.0 (MME/DirectSound/WASAPI)還是ASIO都沒有封包偵錯重傳的功能
要是真的產生Bit Error, 那就是爆音一下躲不掉的(代表USB控制晶片電路設計不良, USB線材不良, 音效裝置硬體接受功能不良...etc)
http://www.andaudio.com/phpbb3/v ... start=5200#p1174375 |