POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 23844|回复: 49
打印 上一主题 下一主题

[原创翻译]kX回放&录音技术指南

[复制链接]
跳转到指定楼层
1#
发表于 2006-11-8 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
推荐一下此文,难得有这么详细的讲解,kX的文档向来做的比较隐晦,很多高级内容只是一笔带过:6 ~7 V% X6 k% K
http://kxproject.lugosoft.com/tech.php?language=en
) N. L) O/ W* |# l3 \1 ~
5 @0 M5 O8 E& W$ ge文好的直接上吧,e文差的等我的翻译~) B& C. m9 _% r4 M

- W$ G/ j: W# X[ 本帖最后由 JoshuaChang 于 2006-11-9 19:35 编辑 ]
2#
发表于 2006-11-8 20:12 | 只看该作者
期待啊,JoshuaChang 老大要出手了。
回复 支持 反对

使用道具 举报

3#
发表于 2006-11-8 21:35 | 只看该作者
w00t) 我等你的翻译了。
回复 支持 反对

使用道具 举报

4#
发表于 2006-11-8 22:11 | 只看该作者
严重关注ing~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

5#
发表于 2006-11-8 22:18 | 只看该作者
期待~~~~~~~~~
回复 支持 反对

使用道具 举报

6#
发表于 2006-11-8 22:26 | 只看该作者
自己看,然后看LZ翻译
回复 支持 反对

使用道具 举报

玻璃心 该用户已被删除
7#
发表于 2006-11-9 08:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2006-11-9 19:14 | 只看该作者
kX回放&录音技术指南(本文谢绝转载,谢谢配合)+ L, m9 d+ D  u2 j

3 `' R; Z# Y# B1 C! L, K+ O5 i' E9 R$ I: N
综述:
# r; b2 f! T+ J9 W/ f1 g
兼容kX驱动的声卡基于复杂的emu10k1和emu10k2芯片,如果想用到他们所有的功能,你需要深入了解他们的内部结构。, w5 h1 k) ?$ D/ R8 [! U8 U& S5 C
  R; p% L5 U, N- I
6 B, \( N( i8 N
安装和系统需求:
, `0 T7 n+ Q8 g- e" n; s( _首先,你需要检查kX驱动是否已正确安装和正常工作,重新启动机器之后,你应该可以在系统栏看到kX的图标,并且,在控制面板——声音和音频设备——音频页面——高级中,确认将所有kX设备的扬声器设置成5.1(Audigy2 ZS是7.1);硬件加速设成完全加速;采样率转换质量设为最好。
4 ~; P' m. _1 l, v
3 W0 H+ Z5 o  K5 k8 {4 C通常情况下,kX混音器会自动配置除硬件加速外的所有选项——由于微软的限制,硬件加速选项无法通过软件更改,大部分操作系统会自动将硬件加速设成"完全加速",然而,Windows2000和某些其他的操作系统默认是"基本加速"。
" b) K! G9 x' ?8 n
( j. @8 X# M7 u) Y7 e9 ~" `7 O为什么需要设置"采样率转换质量"?kX驱动不提供任何软件采样率转换而使用声卡的硬件加速能力,因此,所有不被声卡硬件支持的采样率将由软件提供采样率转换——通常是KMixer组件(表看错了,是Kernel Streaming Mixer,核心流混音器,DirectSound的一部分),而将"采样率转换质量"参数设成最好保证了转换时可以使用最佳的算法。1 S, i) f7 e( w& v, F: o5 E* j* g

8 L- ]2 P6 ~! h' M* x% IkX驱动将一块声卡分解成几个不同的音频设备:Wave 0/1,Wave 4/5等等,任何对Wave 0/1的改动通常也会影响其他Wave x/x设备,不过"Wave HQ"除外,需要了解"Wave x/x"分配的更多信息,请参阅"Routing Guide"。- H/ |' q: A7 Q' S, e1 m. P

$ ~- U4 j5 I* r1 H* ykX驱动在Windows2000/XP及更新的操作系统上可以获得最好的效果,Windows98SE/ME对KMixer和DirectSound的某些特性支持不完全,导致音频输出有些问题(比如软件-6db衰减)。
4 b% A3 n7 P& W' E+ ]- W4 r2 b
* U2 i3 W9 x& p1 D0 G& l  D3 q
" s% \0 D" o+ u: q- U回放24bit/96kHz音频:1 i4 r. L5 A, p- ^& }6 J0 w6 V+ q
目前来说,只有Audigy2系列(包括Audigy2/Audigy2 ZS/Audigy2 Value,Audigy4系列应该也可以,具体未知)才能真正支持24bit/96kHz的回放,kX驱动自3537开始完全支持这个特性,然而,因为硬件设计的问题,kX驱动使用一种"狡猾"的方式提供24bit/96kHz的支持。由于dsp依然工作于16(24)bit/48kHz模式下,所有的24bit/96kHz信号通过一个块额外的"p16v"芯片来回放(详细信息请参阅"Audigy2/P16V Routings Guide")。音频信号直接传送至i2s/spdif而不被dsp处理,当然,p16v输出也同时被路由至emu10k2,你可以在dsp里面通过"p16v"插件来调用它。需要注意的是,24bit/96kHz信号在进入dsp之前将会被重采样,处理过的p16v信号将会和原信号混合(还要重采样一次),然后才被送进i2s/spdif(详细信息请参阅"kX IO Assignments Guide")。3 f9 H1 a' L9 y" k( ]: ^  J

: F1 z4 i5 ^, ]" j9 R6 ~例如,当你通过非"Wave HQ"设备回放16bit/48kHz内容时,音频流经dsp处理之后送入p16v混合器,如果这时没有同时在播放24bit/96kHz内容的话,音频将直接输出到i2s/spdif。注意:spdif采样率视用户设置而定(kX混音器主页面上)。所以,如果你将spdif采样率设成96kHz,音频信号将会被重采样。还需要注意的是:i2s codec默认一直工作在24bit/96kHz模式下(而且目前的驱动没有改变此设置)。  l/ k' c9 v7 J1 A

; K9 A: V9 j- ^, q7 ]( QkX驱动使用一个特殊的"Wave HQ"设备来回放24bit/96kHz内容,当使用此设备回放音频时,信号被发送至p16v设备,当然,也可选择进dsp(重采样至48kHz,bit数未知,可能是16或24bit)如果你同时播放一个16bit/48kHz信号,或者在dsp中使用p16v插件的话,emu10k2的输出会自动被重采样至24bit/96kHz并和原信号混合。2 ~$ o8 N8 V- Y. p- v1 L  y
3 L/ q# ~' A# J  ^. j
即,你可以在使用"Wave HQ"设备回放24bit/96kHz内容的同时使用dsp,比如混响插件(在16bit/48kHz模式下),两者会被混合,之后送入i2s codec(24bit/96kHz模式)或者spdif接口(重采样至用户设定的采样率),请注意,dsp的输出永远是24/48(ac97输出除外)。, ^/ F$ h) V; U, j
7 Y$ x9 l) M1 S/ U9 `0 }0 j
对于24bit/96kHz的数字信号输出,需要在kX混音器中设定合适的spdif输出采样率,基于emu10k2的声卡的数字输出都是24bit的。/ `6 K/ n5 |% j: {
$ n& G& i* d8 L2 U. m' g2 I+ A
在体验24bit/96kHz回放的同时请注意,dsp此时依然在工作且可能影响最终的信号,所以你需要禁用混响效果器并确认dsp的最终输出信号为"-inf"(用peak插件查看)。
, Q' p. }3 o: M; |8 b# h; `5 c' {5 K
禁用混响:由于混响算法通常会产生无限响应("reverb trail"),简单的将混响音量设为"0"之后还是会有微小的声音影响最终输出,因此你需要在dsp里手工禁用混响插件。& O5 E/ `% ?( ^" C& h8 B

$ G0 D  _$ l) }& r* N4 t[ 本帖最后由 JoshuaChang 于 2006-11-9 19:36 编辑 ]
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2006-11-9 19:21 | 只看该作者
音频接口:
3 t) G6 f& D% x; ^( c( @9 TkX驱动至少支持5种音频接口:
5 W0 E" b! o' k3 m3 u! y+ P-WinMM
" [% Z3 u' e, a-DirectSound/ m% d4 `2 Q. h0 [0 N" |
-Kernel Streaming( e+ ?( O# m  u- e, p6 I
-ASIO
+ ^5 u/ N. |" b/ ^-GSIF
4 B! u! F' O" n& s# T4 [每种音频接口都有其自身的限制和特性,有些是系统本身支持的音频接口,另一些则是基于硬件支持的。
' E6 G1 [8 r6 d2 I" }9 H
* J& h4 y0 Y* m8 ^) h4 ?Kernel Streaming接口被Cakewalk/Sonar,foobar2000等软件所采用,此接口将音频数据直接送至驱动而绕过系统音频处理层,这样可以确认声卡工作在指定的模式下,然而,当特定的格式不被支持的时候,就会有错误产生,"Wave 0/1"设备可以硬件支持的格式为:16bit,100~191999Hz。任何输入信号都会被自动(硬件)重采样至16bit/48kHz格式,由于软件重采样可以提供更好的音质,我们推荐你将播放器的输出设为16bit/48kHz并使用软件重采样。
4 {1 s0 T6 W. q4 C
$ D! y8 v6 m% \% B3 @对于原生24bit/96kHz的回放(Audigy2系列),唯一被硬件支持的格式是"24bit padded to 32bit"(有时也被称为"Alt 24bit")。如果播放器支持的话,尽量使用该格式;换句话说,p16v硬件本身(当然,也包括驱动)不支持"真正的"24bit回放(即每个采样占用3字节的音频模式)。由于很多播放器并不支持24-32bit的音频格式,最新的kX驱动可以兼容"32bit"模式,当然,因为硬件本身并不真正支持32bit回放,驱动只会使用32bit中的前24bit。
/ j7 d5 E$ S5 k3 f, Q5 |5 ~# A; o) b9 E! F
p16v芯片仅支持24bit/96kHz,24bit/48kHz,24bit/44.1kHz以及24bit/192kHz四种格式,在Kernel Streaming模式下,任何其他的采样率将直接被拒绝。注意:44.1kHz的支持还在试验阶段,在某些声卡上可能会产生错误的讯号。- _4 w4 p" C4 G

! T- j6 P* H  c! s+ \WinMM接口是Windows默认的音频接口,绝大多数软件将其作为默认输出方式,这个接口可以同时被几个应用程序所调用,因此它的功能较为复杂。默认情况下,kX驱动将WinMM的工作模式设定为16bit/48kHz(Wave 0/1)以及24bit/96kHz(Wave HQ),应用程序可以更改输出采样率,前提是当前只有该程序使用WinMM接口。否则,KMixer会将多条音频流混合&重采样。' R8 ^; U! r0 ]- U  P. x: f
' |9 i9 F- M% W4 w- m/ T
24bit/96kHz硬件同时只能支持一条音频流(需要注意的是,音频流可以是多声道的——即,你可以输出一条立体声音频流或者一条7.1声道音频流,但是2条立体声音频流就不行了)。
4 p5 N  ~, F; m- A# Q" N
1 A1 ~/ m& k4 }1 p/ q7 ?2 e& GWinMM接口会自动对硬件不支持的音频流进行格式转换,记住这个转换由KMixer完成,而不是kX驱动,这在特定的情况下会出问题,例如:用"Wave 0/1"设备回放24bit音频,KMixer的转换会产生额外的噪音(尝试播放一段数字静音的信号,然后观察peak表——当然,别忘了先禁用混响)。
( L; T: _4 O$ d8 u: R  t
" {/ D  ^( n, c, F! ~DirectSound接口不仅可以独立工作,更被用于作WinMM和Kernel Streaming之间的转换层。* x& m2 r0 y) s; O4 }2 p) h
3 X* T! K% |' h# ~5 F9 d
根据微软的技术文档所述,WinMM/DirectSound子系统会自动分配"最佳"的音频流并将格式设为最高可支持的模式,当这个音频流被分配之后,它将同时被用于WinMM回放和DirectSound软件缓冲。由于"Wave 0/1"最高可支持的格式为16bit/191.999kHz,为了避免WinMM默认工作在16bit/191.999kHz下(音频信号将被软/硬件反复重采样),kX驱动将其默认格式设成16bit/48kHz。
+ \( ~  @+ n7 O! E# s: ]4 @! O8 M6 F+ I
大部分DirectSound应用程序会自己分配额外的音频流作为实际使用的播放通道,而KMixer/WinMM初始分配的音频流将被闲置,这些音频流将被设置成需要的采样率以提高性能及使用硬件加速的采样率转换。
  {3 Y8 w5 o1 s
1 n4 |2 A, I* n- t5 D也就是说,当用WinMM接口回放的时候,实际采样率取决于程序设定以及其他任何基于WinMM/DirectSound的(后台)程序,如果当前只有一个程序访问硬件,那么动态的硬件采样率转换是可行的;如果此时还有额外的DirectSound/WinMM程序运行,最终WinMM采样率将有可能是16bit/48kHz(其余所有的WinMM/DirectSound(软件混合)音频流都将被重采样至16bit/48kHz)。
/ @4 k" b0 L$ N1 K( H1 V! j! U% M; h- T5 l
*最新的kX驱动会强制所有"Wave x/x"的WinMM音频流工作在16bit/48kHz下,动态硬件采样率转换依然可以在DirectSound模式下工作(除非指定软件缓冲),即,如果你使用WinMM来回放音频,牢记:改变采样率将会使用KMixer的转换算法而不是硬件转换!) v+ x& K; l9 F% k( r1 U. H
' Y9 i9 k8 r& m1 r/ e: |! d, n
这个操作方法在"Wave 0/1"设备下工作正常,但是在"Wave HQ"设备下会有问题。6 V  C( O9 e0 @" R/ h0 i; H) b
- D: e- `  `+ i# ^2 {$ ~
由于"p16v"硬件不支持多个独立的音频流,驱动将会报告KMixer当前仅有一个音频流可用,这时情况就会逆转:由于DirectSound无法分配额外的音频流,它会使用初始分配的音频流用于所有的音频回放,而音频数据将被送入KMixer(然后被重采样以及格式转换)。
, n, p& |) E% W1 B+ ]" Q
+ A/ ]: C+ r4 f* QkX驱动允许WinMM接口更改"Wave HQ"设备的采样率(44.1,48,96或192kHz)。也就是说,任何WinMM音频流(如果它是当前唯一访问"Wave HQ"设备的音频流话)将可以利用硬件采样率转换,而任何DirectSound程序的格式都会被KMixer转换成24bit/96kHz。
3 s' |# u% [  }
! X. y4 I9 e  M5 k2 P3 N* V目前还没有变通的办法可以解决该问题,所以当你配置你的音频程序的时候,请注意这个特性。9 @$ P* g; w6 j5 Y3 t9 u6 E. m

$ H& o0 m6 C4 F' N" x任何情况下,音频流的真实格式以及采样率的信息可以用debug工具获得。5 v# R9 u% ?* z* D6 {
% F! p! p7 m, Y+ O
ASIO和GSIF接口目前工作于16bit/48kHz上(ASIO也可以支持16bit/44.1kHz,但仅限回放)。以后将会有一个单独的ASIO驱动支持24bit/96kHz回放和录音(当然,仅限Audigy2系列)。
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2006-11-9 19:22 | 只看该作者
24bit/48kHz和bit-to-bit回放:( [- T7 j3 ?: T, l, ?% }
kX驱动支持一种特殊的方式来支持基于dsp的24bit/48kHz回放(Audigy和Audigy2系列),为了使用该特性,你需要将你的音频播放器设为24bit/48kHz输出(任何其他格式均不被支持!),然后在dsp中用"FXBusX"替换"FXBus",如果音频回放格式真的是24bit/48kHz的话,在kX混音器的分析器页面,你将可以看到深绿色的长条(普通音频流是红色的),绝大部分情况下,此特殊模式不会影响任何工作于16bit下的音频程序。然而,"FXBusX"会影响输入的音频信号,请参考下面的"DSP重采样"。% ^1 `2 r' |( \" z

6 ~( Q' F* \( S7 x. A请注意:只有"Wave 0/1"支持此特殊模式,而且,应用程序也要设成DirectSound输出,因为WinMM音频流将会被KMixer转换成16bit/48kHz。
- n; j6 b. O( _9 s7 u, l0 ?2 ?0 c, g

# Z# Z( n, R  w# dDSP重采样:, B  Q) K* G; w% I1 l! W4 E
众所周知,基于emu10k1/2的声卡会对所有的输入信号进行重采样,哪怕输入信号是标准的16bit/48kHz。由于其硬件内置的采样率转换算法并不出色,于是问题就产生了......对于Audigy1/2声卡(可能还包括芯片版本>=7的emu10k1声卡),被重采样过的"16bit/48kHz"信号可以通过dsp中的"b2b"和"FXBusX"来恢复。
' j0 r* n: ~; o, A0 [  t( t$ L+ B7 \  O* z0 r, n" B$ \% {; X8 N- |
SRC问题的本质是所有音频数据的第16bit发生了错误,因此我们只能得到"15.5bit"的回放信号(而不是真正的16bit)。已知的解决方法(使用上述的dsp插件)可以恢复产生问题的第16bit,但是仅限原始16bit/48kHz信号,也就是说,如果输入信号不是16bit/48kHz,而是44.1kHz,22.05kHz等其他采样率的话,"b2b"和"FXBusX"插件将只会略微改变信号,而不是修正它们。这也是为什么kX驱动没有默认使用这些插件的原因。) w( v: [$ _! ?/ Y8 X
. L5 T* `! }& g. ~" t, b3 H" D
b2b和FXBusX之间的区别
  _8 j6 A" A6 F主要的区别是FXBusX插件不但恢复第16bit,更将音频扩展至24bit(选择性的从FXBus2处获得最后的8bit),而"b2b"插件只恢复第16bit。从用户的观点来看,这造成了以下问题:如果被FXBusX扩展后的信号经过了xrouting和/或epilog插件,那么它又会变回原来的"15.5bit"(归咎于数学转换),而不再是24bit了。所以,当使用"FXBusX"插件用于bit-to-bit 16bit/48kHz回放的时候,应该避免使用任何音量控制插件而将信号直接路由至epiloglt(epilog的简化版)。"b2b"不会扩展音频信号,因此可以被简单的加在FXBus和音量控制插件之间。
: c2 F# H" u7 N; }, w8 H5 u0 A5 a. @
输出信号(比如SPDIF输出 )可能会被硬件改动,这取决于声卡的型号(一些特定的型号会改变信号,另一些则不会),因此我们推荐你在使用"b2b"和"FXBusX"进行bit-to-bit回放之前先检查一下它们能否正常工作(例如用数字音频线将声卡连成回路并用数字直录方式进行测试)。
4 g: i0 A: t' y7 A; }. B, S( q/ t. z3 I8 k& @; s. P% C* I4 P: Z: w: F
" c1 u2 Q! E) V. P( B
音量和kX dsp设置:
' _/ t4 {7 e5 }* m: ^, n" V# |7 U
为了避免任何软件处理和音质的损失,音量部分需要依照如下设置:
8 x4 B  h% k- a/ L! \-主音量:100%: q& Y5 _/ ^4 ?6 M: ]
-波形音量:100%(kX Mixer和音频软件都需要设置)2 Z) r" b. C$ J% b, T
-录音音量:100%. M8 {1 N% o" E7 N  M9 ?
-将所有输入和输出设为"0dB"或静音; s* U( S# N( ]. _5 I" @
-为了避免录到"你听到的声音",将波形,合成器,FX1/2和录音音量设成"-inf"; o( }: _) k6 r: H0 s

* c5 [2 [" g1 X2 a在数字直录模式下任何的音量控制都无效;在"p16v 24bit/96kHz"模式下录音,只有主音量调节有效。
( I  K( Q" e1 n% J& L
$ y6 B: k, X0 s% n4 P7 ~# H6 g当测试音质的时候,可能需要卸载"Surrounder"插件;或将其设成"5.1 Direct Path"模式;或将其bypass掉。
9 C. s- o+ T! ?% s' f4 V' q8 m; d6 B- p
注意:如果你依然需要调节音量的话(比如在RMAA里面设置-1.0dB的信号音量),请使用主音量,因为它是唯一使用硬件加速的音量调节器。
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2006-11-9 19:24 | 只看该作者
随便乱翻的~英语达人就表看了,免得伤偶自尊……
回复 支持 反对

使用道具 举报

loveofpearl 该用户已被删除
12#
发表于 2006-11-9 19:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

13#
发表于 2006-11-9 19:45 | 只看该作者
楼主辛苦了,这个要支持一下:)
回复 支持 反对

使用道具 举报

14#
发表于 2006-11-9 19:48 | 只看该作者
楼主辛苦了,这个要支持一下:)
回复 支持 反对

使用道具 举报

15#
发表于 2006-11-9 20:02 | 只看该作者
:lol: lz义务做苦力啦
回复 支持 反对

使用道具 举报

TT!! 该用户已被删除
16#
发表于 2006-11-9 20:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

17#
发表于 2006-11-9 21:00 | 只看该作者
好东西
回复 支持 反对

使用道具 举报

18#
发表于 2006-11-9 21:15 | 只看该作者
好文章啊!
回复 支持 反对

使用道具 举报

19#
发表于 2006-11-9 21:33 | 只看该作者
好。!要支持!!!
回复 支持 反对

使用道具 举报

20#
发表于 2006-11-9 22:01 | 只看该作者
A2系列有一个最直接的回放方式:P16V---->i2s codec直接输出,绕过DSP,通过下 图2 切换由前置还是后置输出。与经DSP的4/5端口输出对比(不加任何效果器),频响平直了,IMD也低很多了,实际听感高频平滑了一点,稍为没有那么刺耳了
9 M! ~7 i2 O2 z( _# D
+ B; _! J* Z1 H6 h( x$ s[ 本帖最后由 kingcole 于 2006-11-9 22:13 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-9-6 22:05

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表