[知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

專題,閒聊,吉他,器材, 亂扯一通。

Moderator: 閃電手

User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

[知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by 閃電手 »

這個也是在菜舖有些網友碰到的問題, 被問過好幾次, 就是例如用錄音軟體錄音時, 怎麼監聽喇叭聽起來同步, 但錄下的東西播放出來去都是慢了好多, 還速度忽快忽慢, 更糟糕的, 是根本只有一些劈哩啪啦聲! 或根本沒聲, 這就是有軟硬體音效處理的Latency(延遲)問題

最常碰到這種問題的, 應是玩"軟體合成器"或"軟體midi音源"(Software Synthesizer, 或簡稱Soft Synth)的人, 鍵盤彈壓一個音下去, 音卻延遲了一下才出來, 若這樣玩鍵盤樂器, 你會給它氣炸了!

現在的DAW軟體也都有一些Plug-in Effect, 這些也都是軟體在跑, 也是很容易延遲的原因


這Latency通常是以 Millisecond(翻譯做"毫秒"吧?)為單位, 簡寫成ms, 像我自己的聽力, 通常最好要在 10ms以下, 對我本人的耳力來說才不覺得有延遲, 不過很多音效卡做不到, 做的到的, 也不可能低到 0ms


如本帖標題講的, Latency還有分音效卡和其驅動程式(driver)的Audio Card Latency, 和Windows作業時的DPC Latency兩種造成延遲的問題來源, 所以這篇就把它分三章來講, 前兩章講音效卡部份, 第三章講DPC Latency:
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚解決

Unread post by 閃電手 »

第一章: Audio Card Latency, 來自音效卡和驅動程式的問題


1. 首先要解釋BUFFER

當發生了latency問題時, 大家都知道要到軟體本身裡某處的Audio設定裡去解決, 也就是軟體和音效卡作業的設定, 如下圖:

(51.70ms, 這延遲太嚴重了吧?)

Image


大家可能也會發現到, 很多這類設定都可以改Buffer Sample Size (或也可以改number of buffers, 上面照片中的Buffer Size應是指Number of Buffers), 通常是以Samples或Bytes為單位(上面照片中的1140 Sample Size), 改了這數字就會有差, 可能變成劈哩啪啦, 變成沒聲, 變成有延遲, 或最好的情形就是什麼問題都沒有了

那就先來解釋buffer是什麼東西?

Buffer是在RAM記憶體設定的暫存空間, 當電腦在處理播音或錄音的audio資料時, 資料先一批一批的先放進buffer裡, 播音的處理就是 - 音效卡從buffer把資料抓過來, 從digital轉成analog格式 (也就是人家說的D-A Converter功能), 再送去腦喇叭播放, 然後再去抓下一批被補進buffer的資料

錄音處理就是反過來, 錄音軟體一批一批的去buffer抓資料來處理, 轉成錄下的檔案

如果buffer size設太小, 那每次被抓過去處理的資料太少, 那就可能會變成前面提到的, 聲音劈哩啪啦的, 或是軟體合成器根本不發出聲音

若buffer size設太大, 或太多個buffer, 那光去buffer抓大塊的資料, 或是補那麼大塊的資料去buffer, 就要花一點時間, 處理大塊的資料也一樣要比較長的時間, 這樣就可能會造成延遲, 或聲音無法有連續性, 所以要慢慢找到不會出問題的最小Buffer Size, 和Number of buffers(很多沒有這項目, 通常意思就是它只有一個buffer)



2. 錄音時, 為什麼我彈的時候監聽沒有延遲, 但錄進去的東西卻有延遲, 或劈哩啪啦?

這是因為現在的音效卡(或有些網友叫錄音卡, Audio Interface界面卡等)都是這樣設計: 從Input孔都有一條獨立的訊號路徑, 直接去Output孔(再去喇叭或耳機), 根本就沒有經過電腦主機板, 也就是沒有被任何軟體做訊號處理就去喇叭, 所以你演奏又監聽, 完全不可能聽到延遲

但錄進電腦的演奏, 被軟體轉成資料的過程, 就是之前講的處理, 設定不好就有延遲的可能



3. 更改Sampling Rate設定

在例如上面的照片裡, 很多軟體的這個Audio參數設定頁裡也都有Sampling的設定, 也就是常聽人說的"取樣值", 這個值越高就是音質越高, 例如一般CD的聲音品值是 16bit, 44100Hz, 128K, 你改變這三個數字任何一個(或兩個, 或全部)到更高, 音質就越高, 但檔案size就越大

Sampling Rate這個值也會影響Latency, 就用上面照片裡的數字來解釋, 你看到它的Sampling Rate是44100Hz, Buffer size是 1140, 有兩個Buffer, 那51.7ms的Latency是這樣計算的:

1140 x 2 / 44100 = 0.0517

如果我把Sampling Rate改成更高, 也就是分母變更大的值, 那不就Latency值就變小? 完全正確! 例如調到 96000, 那就比44100減少超過一半的Latency

不過嘛! Sampling Rate調高, 如上述就是音品質變更高, CPU的處理工作就加重, 所以有時也不是好辦法, 尤其是比較舊的CPU, 你一提高取樣值就無法負荷, 嚴重時搞不好就當機

還有附在主機板上的音效卡, 常常最大值就是 44100, 沒法再調高, 你去買專業一點的USB, Firewire那些外接音效卡(錄音卡, Audio Interface, 名稱真多呀!), 通常一定有到 96000



4. 軟體裡調Offset修正參數

也就是很多錄音軟體裡, 都可以用一些處理程序, 把把Latency問題修到沒延遲, 例如下面照片中的Manual Offset就是這個功用, 你有Latency問題, 就增加這個參數的值, 一直實驗到問題解決

Image
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚解決

Unread post by 閃電手 »

第二章: 音效卡驅動程式(driver)的解決Latency的方案

請再回去看本帖的第一張照片, 它有個選項讓你選要用哪種類型的音效卡驅動程式, 也就是靠上面Driver Type那個選項

通常這個選項的項目會有:

MME, DirectSound(或DirectX), ASIO, 或WDM



1. MME

MME (MultiMedia Extension 1.0)是最早的音效卡驅動程式在Microsoft作業環境的….我也不知中文要怎麼說, 叫它Driver的一種作業方式好了, 到今天都還在應用, 也就是你裝好Windows後, 可能你用Windows裡面本身附來的Media Player, Sound Recorder的播放或錄音, 就是靠它的處理方法, Windows 3.0 (可能要我這麼老的人才用過)的時代, 電腦才開始有音效卡這種東西, MME算是第一代的驅動程式作業的編寫標準


2. DirectSound (DirectX)

DirectSound (或DirectX)是Windows 95版才開始有, 主要是因為電腦遊戲越來越先進, 早期的遊戲的音效都是播放midi檔, 早期的音效卡(例如最普遍的SoundBlaster)裡的midi音源爛到不像話(鋼琴聲對我來說像鼓聲), 漸漸的, 新一點的遊戲都是播放Wave類型檔(聲音才會感覺真實嘛), 所以Audio的播放就要加快囉! MME型式已常常無法勝任, 也可能會有Latency, 所以就出現了DirectSound, 就解決了很多MME做不到的問題

但DirectSound既然是為了電腦遊戲的音效, 所以它Latency問題的改進主要是在播放的方面, 錄音的方面並沒有比MME進步, 甚至有的文獻說在錄音方面比MME還不行



3. WDM

WDM (Windows Driver Model)在DirectSound之後出現, 它跟前兩者應不能混為一談, 如其名它只是給軟體工程師設計編寫Driver的一種Model(或說是一種格式 - format), 目的是要解決每次Windows出一新版, 舊版Driver就不能用的問題, 各種裝置的驅動程式如果是照這種WDM model寫的話, 在未來的Windows版本可能就會通(不絕對), 不用再重寫一個Driver

所以WDM並沒有比前兩者或下面要提的ASIO進步, 而且它還加了一個叫 Kmixer (Kernel Mixer)的東西, 主要就是混音, 解MP3, AC-3那些資料, 和處理各種Effect的功能, 這個Kmixer常常本身就會造成20-30ms的Latency

但是呢! 也是在約WDM的時代後, 比較現代功能的Audio, 錄音, 或DAW軟體才開始有, 這些軟體的設計工程師當然也知道WDM的問題, 所以在設計時都把它們解決了, 像很普遍的Cakewalk一開始就是以WDM驅動程式為藍本去設計的, 所以到現在版本, 選用WDM都完全沒問題



4. ASIO

ASIO (Audio Streaming Input/Output) - 很多網友都有在用Cubase這套DAW軟體, ASIO 是Steinberg公司要推出Cubase VST 3.5版時發明的, 他們就是要設計出比MME, DirectSound那些低Latency的驅動程式作業方式, 而且不光是顧播音功能, 錄音功能也會低Latency, CPU的負荷也不高, 而且硬體如果有很多組input/output channel, 也能同時一起用到(以前的驅動程式可能只能用某一組)

現在你去買比較好的USB, Firewire那些Audio Interface, 大多是ASIO的驅動程式, 所以應都是很低Latency的

還有一些什麼GSIF等驅動程式, 因為不常見, 所以本帖只討論到比較流行的ASIO為止



5. ASIO4ALL (救世主來了!)

但是有些人可能不方便或窮, 只想用主機板上的爛音效卡(通常當然不支援ASIO), 或者是有人還在用舊一代非ASIO的高檔專業音效卡, 當時花很多錢, 捨不得丟棄或是有某種原因要繼續用, 這要怎麼辦呀?

有一個叫Michael Tippach的德國人, 他就是這類的人, 但因為他正好是軟體工程師, 所以就寫了一個另外再掛上去的ASIO額外驅動程式給自己用, 只要安裝上它, 世面上幾乎所有的非ASIO音效卡, 就變成是ASIO了

當時在世界各地的音樂討論版, 都有人在發問音效卡不是ASIO而且有Latency問題怎麼辦呀? Michael就很好心的回答大家, 而且願意寄給你他所發明的, 這個放諸天下(幾乎)皆準的ASIO驅動程式, 漸漸的, 他的名聲就傳開了, 名氣越來越大, 他乾脆就去弄個網站, 把這個驅動程式叫做ASIO4ALL (也就是 ASIO for All), 放在上面給大家免費下載 (要下載對的語言版本, 也就是英文版的):


http://www.asio4all.com/



所以抱歉呀! 讓大家讀這麼長的文章到這裡, 最好的音效卡Latency解決方案就是這個ASIO4ALL, 甚至我有的專業音效卡本身已就是ASIO, 再掛上ASIO4ALL居然能達到更低Latency


這ASIO4ALL並不能取代你音效卡原有的驅動程式, 而是加裝上去的東西, 如果是全新或重新安裝的音效卡, 也要先把原廠來的驅動程式先安裝上, 再裝這個ASIO4ALL

你安裝好ASIO4ALL以後, 各種DAW軟體, SoftSynth等東西裡面的, 像本文第一張照片的Audio參數設定的地方, 你驅動程式若選ASIO (如下面照片, 有的軟體裡選項就是ASIO4ALL全名), 就會出現一個ASIO Control Panel的按鈕, 如下面照片:

Image

按下去以後的畫面是這樣, 你如果沒有看到畫面右邊那些項目, 要按下右下面那個, 像轉螺絲扳手的按鈕就會看到

Image

上面這個Control Panel並沒有OK(確定), Save(儲存), Apply(套用)那些鈕, 你改好後按右上角X關掉就好

左邊你看到我電腦裡有三個音效卡, 最上面的Realtek, 懂電腦的網友一定就知道那是主機板上的爛音效卡, 最下面那是WebCam上的麥克風

中間是約10年前公認最屌的Yamaha SW1000XG (WDM卡, 插PCI槽 , 高音質Audio和專業級Yamaha XG Midi音源都在這一張卡上, 當時好貴喔!), 所以ASIO4ALL就解決了這張音效卡不是ASIO, 我又捨不得丟的問題, 我就選用它, 因為今天沒把我的Firewire錄音卡接上, 所以我選用它

我這是一個功能算蠻複雜的軟體音源裡的Audio控制畫面, 下面的Buffer Size我實驗到256 samples就沒問題, 所以取樣值是 44100時, 照前面講的計算方法我的Latency是 256/44100 = 5.8ms, 真是太棒了啦! 讚!

右邊那些參數, 你安裝好後最好先都不要動它, 有問題再去實驗它們, 其中最重要, 你要先去實驗的是那個Hardware Buffer (Does not always work), 很多沒聲音的狀況, 選按它(或改成不選它)就解決! 當然也就如它講的, Does not always work.

(這個人本來可以靠這個撈一票錢的, 他卻選擇免費分享給大家去解決問題, 還一直努力改進出新版, 對我來說這種人才是世界偉人! 人類救星! 不是我小時候課本裡讀到的某些人)
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚解決

Unread post by 閃電手 »

第三章: DPC Latency

前兩章講的是音效卡的Latency, 但延遲問題也不是只有音效卡造成的, 這個DPC Latency也是個主要原因

DPC 是Deferred Procedure Calls的縮寫, 最簡單的解釋就是 - 當Windows有一大堆軟硬體功能送過來要處理的事情時, 為了讓使用者能很順的用電腦, 所以會排程優先順序, 它認為最需要馬上處理的的, 就當然排在前面

但常常你的播音, 錄音不是被排在前面的, 結果造成延遲問題, 這就是DPC Latency, 用簡單的media player不會延遲, 但用專業又複雜的DAW, soft synth等東西就有延遲

例如網路卡, 防毒軟體可能都是排優先的, 你若裝可以看電視那種卡, 為了讓你電視畫面不斷, 所以也可能是優先處理, 就算你不打開它來看電視, 它的驅動程式還是掛著, 可能也會影響

但是呢! 這個世界讓我感覺越來越美好! 因為世界偉人, 人類救星居然也不只有前面講的那位, 有另一位也寫了個叫DPC Latency Checker的軟體, 也一樣開了個網站免費分享給大家, 大家只要下載那個Download DPC Checker連結裡的那個.exe檔直接Run, 不用任何安裝步驟就可以, 這個網頁 (居然也是德國網頁):

http://www.thesycon.de/deu/latency_check.shtml


那網頁向下讀下去看那些圖就很清楚, 執行DPC Latency Checker後, 你如果是像第一個圖那樣一直都是跑綠色的, 那你就沒有DPC Latency問題, Audio可以很順的處理, 不會延遲

如果是像第二個圖有些紅色的, 那就是有DPC Latency問題, 這時你就要去關掉一些東西, 再回來跑這個程式, 看是不是會變成都綠色的, 或是紅色的有少了一些(關掉的東西不一定有影響), 像它網頁下面舉例, 跑去Device Manager去Disable一些裝置, 但是你當然要有什麼裝置可以Disable, 什麼不能Disable的知識, 例如把Display Adapter關掉, 那不就沒有畫面了!

像前面提的網路卡, 防毒軟體, 你在做音樂時不上網, 它們當然可以關掉, 像Fax Modem平時都沒在用, 也當然關掉試試看

也可去Task Manager關掉一些做音樂不需要用到的處理程序(或msconfig裡, 如果不懂那些處理程序, 最好要有這方面知識的朋友幫你看, 很多其實都google的到)

在美國有那種專門賣給搞音樂用途的電腦店, 他們通常就是跟搞音樂不相關的東西都不裝, 但你也可以要求說這台電腦我也要上網, MS Office那些一般的電腦用途, 那他們就只好裝, 但常常就會把這台電腦設成是Dual Boot, 開機時有兩種選擇: 是要搞音樂還是要一般電腦用途? 搞音樂的Boot就是不會用到的裝置, 程序, 或Start up的軟體都Disable掉, 主要目的也就是要控制DPC Latency, 而且也會儘量調整Windows到最適合搞音樂

本專題完畢, 我也不是這方面專家, 只是把長時間的研究心得拿出來分享, 讓一些網友少走一些冤枉路, 如果有專業級的網友發現錯誤, 請不吝指正!
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
carykenz
版主
版主
Posts: 2601
Joined: 2005-02-01, 18:38
Location: 搖滾天界
Contact:

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by carykenz »

我會一直不想要買錄音卡就是因為有ASIO4ALL這個軟體,不過還是敗了一台錄音卡,看會不會有正妹要來錄音
音樂是一種感覺
樂理是音樂的語言

如果已經找到感覺.......樂理就不太需要了
User avatar
暗武
版主
版主
Posts: 998
Joined: 2004-10-02, 00:37
Location: SecretStudio

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by 暗武 »

閃爺你那個big ben是Apogee的那台嗎? 如果是的話 這台好不好用呢?
╔╦╦╩╦╗╔══╦╦╗
*║║ ║║╠*╦╬╬╣
╠╬╩═╩╣║║╠╣║║
║╠═*═╣║║║║╚╣
╚╩═══╝╚╩╩╩*╝暗武
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by 閃電手 »

不是, 不知那個選項為什麼會有Big Ben, 我又沒有那台
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by 閃電手 »

忘記說明一點, 很多人對ASIO4ALL的誤解(在上面原文也補上這段):

這ASIO4ALL並不能取代你音效卡原有的驅動程式, 而是加裝上去的東西

如果是全新或重新安裝的音效卡, 也要先把工廠來的驅動程式先安裝上, 再裝這個ASIO4ALL
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
User avatar
carykenz
版主
版主
Posts: 2601
Joined: 2005-02-01, 18:38
Location: 搖滾天界
Contact:

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by carykenz »

閃電手 wrote:忘記說明一點, 很多人對ASIO4ALL的誤解(在上面原文也補上這段):

這ASIO4ALL並不能取代你音效卡原有的驅動程式, 而是加裝上去的東西

如果是全新或重新安裝的音效卡, 也要先把 "工廠" 來的驅動程式先安裝上, 再裝這個ASIO4ALL


什麼工廠??請問是原廠嗎
音樂是一種感覺
樂理是音樂的語言

如果已經找到感覺.......樂理就不太需要了
User avatar
閃電手
專欄作家
專欄作家
Posts: 8403
Joined: 2004-10-06, 02:12
Location: 加州養老院

Re: [知識]專題23: 討厭的音效卡延遲問題(Audio和DPC Latency), 一次給它講清楚和解決

Unread post by 閃電手 »

喔! 應要稱為"原廠"沒錯(上面原文我也改正)

例如主機板上的音效卡, 主機板的包裝盒裡應有一片cd, 裡面就有主機板上網路卡, 音效卡等等的驅動程式, 不然上主機板廠家的網站, 都下載的到
沒人有興趣聽你在那邊音階爬上爬下啦! 表演一首完整的歌來給我聽啦!
什麼??? 沒有一首能好好完整表演??
你這幾年在學什麼東西呀???
Post Reply