[簡介]foobar2000 --- 簡單且高品質的audio player
版主: DearHoney
在好奇心的驅使下, 原本只用 win98 的我灌了個 win2000 來試試 foobar...
這是我的設定:
SBLive value 2 (CT4830)
Win2000 + SP3 + DirectX 9 + 官方 WDM driver (5.12.0001.0244)
Win98SE + DirectX 8.1 + 官方 VXD driver (4.11.01.0711)
1. 把 foobar 裡的 foo_output_std.dll 移除或改名, 確保自己除了 ks 之外不會誤用 ds 和 waveout, 然後開啟 windows mixer 確保 wave 的音量是否能夠控制 (不能控制的話就表示 ks 已經啟動了)
2. 把 resampler 關掉或者把 foo_dsp_extra.dll 移除或改名, 確保沒有啟動 resampler
3. 把 foobar 的 output bit depth 設定成 16-bit
4. 到這裡下載一個 16-bit 44.1khz 的 IMD test tone
http://bennetng.uhome.net/foobar/Reference-IMD.rar
http://bennetng.uhome.net/foobar/Reference-IMD.png
5. 在 foobar2000 播放這個 test tone, 會聽到很多雜音, 可是在 win98 + vxd driver 之下播放同一個 file, 雜音卻明顯地少了, 這是因為 sblive 的硬體 src 比 kmixer 的好得多的原故。由此可見 ks 的功能只是 bypass 音量控制以達致降低 latency 的效果而已, 而沒有 bypass kmixer 的 src, 我亦完全不覺得用了 ks 之後聲音會比較開揚。
這是 win2000 + foobar + ks (無 resampler) 的結果
http://bennetng.uhome.net/foobar/foobar ... 44-IMD.rar
http://bennetng.uhome.net/foobar/foobar ... 44-IMD.png
這是在 win98 + winamp2.8 + ds (無 ssrc) 的結果
http://bennetng.uhome.net/foobar/None-IMD.rar
http://bennetng.uhome.net/foobar/None-IMD.png
另外, sblive driver 預設的高低音值並不一定是最佳化的 (見圖)
http://bennetng.uhome.net/foobar/EQ.png
請開啟 windows mixer 自行調整, 調到正中間就差不多了 (那個 digital output only 千萬別選, 否則會有雜音), 這個高低音控制即使是用了 ks 仍然會有反應的。如果想看到 output 的曲線的話你要有另一張具備數位輸入的 soundcard 才可以一邊看一邊調。不要試圖用 what u hear (您聽到的聲音) 的方法去調, 因為高低音控制是不會影響 what u hear 的。
這是 win98 和 win2000 的 sblive coaxial 輸出結果, 高低音控制已經盡量最佳化:
http://bennetng.uhome.net/foobar/Coaxial-out.htm
你會看到 win2000 的 noise 好像少一點, 其實並不是, 那是因為 sblive 在 win2000 的輸出最大只得 -1.7db 左右, 但在 win98 的輸出卻有 -0.2db。
這是 win98 和 win2000 的 sblive analog loopback 結果, 其實兩者相當接近
http://bennetng.uhome.net/foobar/Analog-Loopback.htm
我要比較 vxd 和 wdm, 是因為 vxd 沒有 kmixer 但 wdm 有 kmixer。結論就是 ks 只是 bypass 了 kmixer 的音量控制而沒有 bypass kmixer 的 src, bypass 音量控制之後音質亦不會有可以測量得到的改變。所以有些人在用 ks 後發現有明顯的改善, 應該是受其他因素影響 (例如不同的 soundcard, 不同的 driver, 不同的 directx...) , 而不是 kmixer 的問題。
備註:
Roland SC-D70 的 driver 我選用了 MME 而不是 WDM, 因此絕不會受 kmixer 影響, foobar 甚至沒有把 SC-D70 的裝置顯示出來。
這是我的設定:
SBLive value 2 (CT4830)
Win2000 + SP3 + DirectX 9 + 官方 WDM driver (5.12.0001.0244)
Win98SE + DirectX 8.1 + 官方 VXD driver (4.11.01.0711)
1. 把 foobar 裡的 foo_output_std.dll 移除或改名, 確保自己除了 ks 之外不會誤用 ds 和 waveout, 然後開啟 windows mixer 確保 wave 的音量是否能夠控制 (不能控制的話就表示 ks 已經啟動了)
2. 把 resampler 關掉或者把 foo_dsp_extra.dll 移除或改名, 確保沒有啟動 resampler
3. 把 foobar 的 output bit depth 設定成 16-bit
4. 到這裡下載一個 16-bit 44.1khz 的 IMD test tone
http://bennetng.uhome.net/foobar/Reference-IMD.rar
http://bennetng.uhome.net/foobar/Reference-IMD.png
5. 在 foobar2000 播放這個 test tone, 會聽到很多雜音, 可是在 win98 + vxd driver 之下播放同一個 file, 雜音卻明顯地少了, 這是因為 sblive 的硬體 src 比 kmixer 的好得多的原故。由此可見 ks 的功能只是 bypass 音量控制以達致降低 latency 的效果而已, 而沒有 bypass kmixer 的 src, 我亦完全不覺得用了 ks 之後聲音會比較開揚。
這是 win2000 + foobar + ks (無 resampler) 的結果
http://bennetng.uhome.net/foobar/foobar ... 44-IMD.rar
http://bennetng.uhome.net/foobar/foobar ... 44-IMD.png
這是在 win98 + winamp2.8 + ds (無 ssrc) 的結果
http://bennetng.uhome.net/foobar/None-IMD.rar
http://bennetng.uhome.net/foobar/None-IMD.png
另外, sblive driver 預設的高低音值並不一定是最佳化的 (見圖)
http://bennetng.uhome.net/foobar/EQ.png
請開啟 windows mixer 自行調整, 調到正中間就差不多了 (那個 digital output only 千萬別選, 否則會有雜音), 這個高低音控制即使是用了 ks 仍然會有反應的。如果想看到 output 的曲線的話你要有另一張具備數位輸入的 soundcard 才可以一邊看一邊調。不要試圖用 what u hear (您聽到的聲音) 的方法去調, 因為高低音控制是不會影響 what u hear 的。
這是 win98 和 win2000 的 sblive coaxial 輸出結果, 高低音控制已經盡量最佳化:
http://bennetng.uhome.net/foobar/Coaxial-out.htm
你會看到 win2000 的 noise 好像少一點, 其實並不是, 那是因為 sblive 在 win2000 的輸出最大只得 -1.7db 左右, 但在 win98 的輸出卻有 -0.2db。
這是 win98 和 win2000 的 sblive analog loopback 結果, 其實兩者相當接近
http://bennetng.uhome.net/foobar/Analog-Loopback.htm
我要比較 vxd 和 wdm, 是因為 vxd 沒有 kmixer 但 wdm 有 kmixer。結論就是 ks 只是 bypass 了 kmixer 的音量控制而沒有 bypass kmixer 的 src, bypass 音量控制之後音質亦不會有可以測量得到的改變。所以有些人在用 ks 後發現有明顯的改善, 應該是受其他因素影響 (例如不同的 soundcard, 不同的 driver, 不同的 directx...) , 而不是 kmixer 的問題。
備註:
Roland SC-D70 的 driver 我選用了 MME 而不是 WDM, 因此絕不會受 kmixer 影響, foobar 甚至沒有把 SC-D70 的裝置顯示出來。
KS 的作用就是跳過 KMixer,所以可以縮短 latency,這一點是無庸置疑的。
我看了一下 bennetng 兄作的測試,2000 + KS 的測試圖形中的 IMD 失真,看起來很像是 APS 失真的情形。
EMU10K1 有兩種 SRC 計算法可以選擇,其中一種用在 APS 上,其缺點就是 IMD 失真遠比另一種嚴重。我看那個圖形和 APS 的圖形很像,所以大膽假設 bennetng 兄在 2000 下裝的 Driver 版本,使用的是 APS 的 SRC 計算法,所以才會出現如此和 98SE 不同的結果。
我用過有幾版的 2000/XP 的 Live! Driver,的確是改為使用 APS Driver 的 SRC 計算法,不過後來又改回原本的 SRC。
所以 bennetng 兄可以做個一般的頻率響應的測試(用 RMAA 即可),看看 2000 下 Live! 的頻率響應圖形是否會出現和 APS 一樣的特性(1K~16K 之間會凹陷、17K 回復水平然後又急遽滑落)。如果出現一樣的頻率響應特性,則可以推斷 IMD 失真是因為不同的 SRC 算法所引起的,而非 KMixer 的作用。
或是換裝幾個不同版本的 Driver 試試,看看結果是否仍然一樣。
至於 KMixer 的影響,我的看法和 bennetng 兄一致,我認為 Kmixer 的對音質應該沒有太大的影響。KMixer 會做混音,那是在有混音需要的時候才會處理。KMixer 會做 SRC,那是在有 SRC 需要的時候才會處理(多個不同頻率的聲波需要混音時),而且如果音效卡有 SRC(Driver 或 硬體),Driver 通常可以接受許多種類的頻率輸入,此時 KMixer 便會交給音效卡處理。KMixer 還會做 BDC,位元大小的轉換,這也是在也需要的時候才會處理,例如播放 24bit,你的 Audio Driver 不接受 24bit 的輸入,KMixer 才會做 BDC,轉為 16bit 再送給你的音效卡處理。
除此之外,我沒有讀過有任何文件寫過,KMixer 會做 EQ, 音場.. 等其他的音效處理,所以一般使用的情況下,KMixer 對音質的影響應該是沒有。
跳過 KMixer 的好處,最主要就是縮短那 ~30ms 的 latency。
當然,以上只是一般的通論,每種音效卡、Driver、作業系統的情況都不一樣,也許有些音效卡就是會受到 KMixer 的影響也不一定。當然如果可能的話,我建議找旁人協助做 A/B test,確定自己是否能夠聽出差異,會是比較客觀的作法。
我看了一下 bennetng 兄作的測試,2000 + KS 的測試圖形中的 IMD 失真,看起來很像是 APS 失真的情形。
EMU10K1 有兩種 SRC 計算法可以選擇,其中一種用在 APS 上,其缺點就是 IMD 失真遠比另一種嚴重。我看那個圖形和 APS 的圖形很像,所以大膽假設 bennetng 兄在 2000 下裝的 Driver 版本,使用的是 APS 的 SRC 計算法,所以才會出現如此和 98SE 不同的結果。
我用過有幾版的 2000/XP 的 Live! Driver,的確是改為使用 APS Driver 的 SRC 計算法,不過後來又改回原本的 SRC。
所以 bennetng 兄可以做個一般的頻率響應的測試(用 RMAA 即可),看看 2000 下 Live! 的頻率響應圖形是否會出現和 APS 一樣的特性(1K~16K 之間會凹陷、17K 回復水平然後又急遽滑落)。如果出現一樣的頻率響應特性,則可以推斷 IMD 失真是因為不同的 SRC 算法所引起的,而非 KMixer 的作用。
或是換裝幾個不同版本的 Driver 試試,看看結果是否仍然一樣。
至於 KMixer 的影響,我的看法和 bennetng 兄一致,我認為 Kmixer 的對音質應該沒有太大的影響。KMixer 會做混音,那是在有混音需要的時候才會處理。KMixer 會做 SRC,那是在有 SRC 需要的時候才會處理(多個不同頻率的聲波需要混音時),而且如果音效卡有 SRC(Driver 或 硬體),Driver 通常可以接受許多種類的頻率輸入,此時 KMixer 便會交給音效卡處理。KMixer 還會做 BDC,位元大小的轉換,這也是在也需要的時候才會處理,例如播放 24bit,你的 Audio Driver 不接受 24bit 的輸入,KMixer 才會做 BDC,轉為 16bit 再送給你的音效卡處理。
除此之外,我沒有讀過有任何文件寫過,KMixer 會做 EQ, 音場.. 等其他的音效處理,所以一般使用的情況下,KMixer 對音質的影響應該是沒有。
跳過 KMixer 的好處,最主要就是縮短那 ~30ms 的 latency。
當然,以上只是一般的通論,每種音效卡、Driver、作業系統的情況都不一樣,也許有些音效卡就是會受到 KMixer 的影響也不一定。當然如果可能的話,我建議找旁人協助做 A/B test,確定自己是否能夠聽出差異,會是比較客觀的作法。
我也是覺得只有變大聲些.....nakeho 寫:http://www.hydrogenaudio.org/index.php? ... entry58328hmm...Case 寫:The sound is louder, not brighter. Put your wave volume in mixer to maximum and there won't be any difference, unless there's something broken in your sound card drivers.nihues 寫:Works perfect here, the sound is more bright, much better than directsound!
我也聽不出來 Directsound 和 KS 有音質上的差異,不過我同意 Case 所說的,用 KS 聲音的確變的更大聲。 :roll:
kmixer真的有對48k 16bits的音訊做音色處理嗎?
印象中似乎沒有....
p.s 24bits的會處理的樣子
說一下foobar2k的ReplayGain 的使用心得Tiberius 寫:把其他的檔案也加上 ReplayGain 才是正途啊 ... [XD]
一首mp3的ReplayGain 資訊是儲存在mp3檔案內的
可以在撥放清單上面的檔案點右鍵->show file info觀看 右邊那個方格裡面有
bitrate = 128
channels = 2
samplerate = 44100
REPLAYGAIN_TRACK_GAIN = -5.5600 dB
REPLAYGAIN_TRACK_PEAK = 1.0385
REPLAYGAIN_ALBUM_GAIN = -4.5800 dB
REPLAYGAIN_ALBUM_PEAK = 1.0690
內容像上面那樣
從上面可明顯的發現
REPLAYGAIN有分兩種TRACK_GAIN ALBUM_GAIN
TRACK_GAIN 是以單首mp3圍單位去計算其REPLAYGAIN
也就是在MusePack and ReplayGain
這篇文章中所提到的Title Based模式
ALBUM_GAIN 是以整個專輯為單位去計算 如之前的REPLAYGAIN文件所寫的
也就是那篇文章所說到的Album Based模式
撥放時要用哪一種模式 FB2K裡面可以設定
但是REPLAYGAIN是一種需要事先去計算出來的結果
所以在使用的時候必須先作計算工作
方法:撥放清單點右鍵->REPLAYGAIN
選第一個是對單獨一個檔案計算其TRACK_GAIN
第二個是ALBUM_GAIN
但是記得要先把整個專輯選取 這樣才會列入計算
第三個是清除檔案中的REPLAYGAIN記錄
作完可以show file info看一下
p.s 如果沒有ALBUM_GAIN參數 卻在FB2K使用ALBUM模式的話
會以TRACK的參數來決定
最後由 BLUEBLUE 於 2003-01-19 21:35 編輯,總共編輯了 4 次。
做了一個很簡單的比較:
音效卡為
98第一版:Live value2+APS1.83使用後置聲道
Vibra128+Vxd Driver 4.12.01.2016
XP:Live value2+XP預設驅動程式
Vibra128+WDM Driver 5.12.01.5017
在XP底下foobra2000使用KS:
output bit depth 16bit:
Live value2:有聲音
Vibra128 :有聲音
output bit depth 24bit:
Live value2:有聲音
Vibra128 :雜音一堆,類似電視沒訊號的噪音
在98第一版底下foobra2000使用DS:
output bit depth 24bit:
APS1.83 :無反應
Vibra128 :噪音一堆,類似電視沒訊號的噪音
在98第一版底下foobra2000使用Wave out:
output bit depth 24bit:
皆無反應
以上,有沒有使用resampler結果皆一樣
有網友提到使用KS仍然還是會經過Kmixer作SRC
那我有一個疑問就是...
foobra2000使用KS以24bit output在Vibra128
底下是噪音一堆,是因為Kmixer的關係?還是跟
本沒通過Kmixer?還是說Kmixer沒辦法24bit轉16bit?
撇開Kmixer有沒有影響...單純就用聽感來比較,KS在
我聽來感覺比DS跟Wave out的聲音還乾淨,
buffer length太低有時會產生爆音,而且音質似乎比較鬆散
音效卡為
98第一版:Live value2+APS1.83使用後置聲道
Vibra128+Vxd Driver 4.12.01.2016
XP:Live value2+XP預設驅動程式
Vibra128+WDM Driver 5.12.01.5017
在XP底下foobra2000使用KS:
output bit depth 16bit:
Live value2:有聲音
Vibra128 :有聲音
output bit depth 24bit:
Live value2:有聲音
Vibra128 :雜音一堆,類似電視沒訊號的噪音
在98第一版底下foobra2000使用DS:
output bit depth 24bit:
APS1.83 :無反應
Vibra128 :噪音一堆,類似電視沒訊號的噪音
在98第一版底下foobra2000使用Wave out:
output bit depth 24bit:
皆無反應
以上,有沒有使用resampler結果皆一樣
有網友提到使用KS仍然還是會經過Kmixer作SRC
那我有一個疑問就是...
foobra2000使用KS以24bit output在Vibra128
底下是噪音一堆,是因為Kmixer的關係?還是跟
本沒通過Kmixer?還是說Kmixer沒辦法24bit轉16bit?
撇開Kmixer有沒有影響...單純就用聽感來比較,KS在
我聽來感覺比DS跟Wave out的聲音還乾淨,
buffer length太低有時會產生爆音,而且音質似乎比較鬆散
最後由 SamLin 於 2003-01-20 10:53 編輯,總共編輯了 1 次。
- BooBooBird
- 神人
- 文章: 1424
- 註冊時間: 2001-12-11 08:00
- 來自: 不知有漢 無論魏晉
我在 win98 + vxd + winamp2 時, ds 的設定是沒選 create primary buffer, 但選了 allow hardware acceleration, 音質和 waveout 沒有分別, 不過很明顯地, ds 的 latency 是少了, waveout 的反應比較遲鈍。BooBooBird 寫:我自己研究出答案了。就是 wa2 那個 "create primary buffer" 的選項,顯然 foobar2000 裡面缺了這個功能。BooBooBird 寫:換成 winamp2 ,只要使用 waveout ssrc 就能達到最佳品質,可見 foobar2000 在 vxd 的 waveout 部分處理得不好,導致使用 vxd 可能無法達到最佳品質。