|
1 DFD 详解+ G; A9 Y: P+ d' {& s
: Y" I$ g5 C) K/ ~" J
随着计算机技术的发展,使软件可以依赖于这一技术.几年前的电脑仅限于16MB物理内存。这意味着,乐器采样(instrument samples)是相当小和有限的。如果你还算走运的话,每个乐器(instrument)可以拥有5个采样(samples)!7 w7 G2 U- z3 N
同样地,你可以想像,一个采样移调两个八度后肯定难以达到很好的效果。令人欣慰的是那些日子已经成为过去,我们不再受到那些限制,来自以使用采样为基础的真实的乐器回放技术。4 {! p$ e ~' g5 h# g
现在一般的个人电脑最多4GB(或许更多)的物理内存。然而,我们大多数人的台式电脑或者作为现场演出的笔记本电脑仍然停留在1GB或2GB的程度。无论如何,似乎总是存在这么一个这个问题,没有足够的内存。
6 t% k" y' M* P7 H$ ] _如今采样文件的尺寸变得越来越大,通常,一件乐器中包含的采样大小可以超过现有的系统内存。
+ o9 {* c! v; o. q7 `" T即使你有4GB内存安装在机器上,操作系统也将拨出至少几百兆字节(往往更多)。你可以试着想象一下你的物理内存可以加载多少采样。这时DFD发挥作用。" {. X8 l$ o' O. e. a
! |& ~5 T! G3 B
8 ]9 U) y3 n- W5 y0 C
.2 什么是DFD! J. h. Y' z/ | ]( H& K
' r2 }" R, d8 [. i/ P* V( y
DFD标准意思是“direct from disk”,即“直接从磁盘读取”,是一个回放大甚至超大乐器和采样,而不需要把它们完全装载到 内存的技术。事实上,每个采样只有第一部分加载到内存,其余的是读计算机的硬盘来回放该乐器。
. N/ _2 x) m6 ]% d当需要回放时,内存几乎能够立即作出反应,提供第一部分用户请求的样本,而电脑从硬盘读取下一个部分样本。6 A3 _ S% W+ P" g9 t _& l1 y; W
当DFD启动,我们可以加载的采样可达2GB每个。 后面,我们将学习使用DFD工作,我们实际需要多少内存,以及如何建立我们的缓冲区大小。
+ M; F5 o; u% G7 l# \8 T/ b, S/ b) j1 w( Y' j9 C8 R
1.2 理论背景, Y1 R+ G, F! |$ o$ `* n
* R: u) v* R/ X T这一部分有利于我们了解DFD的工作流程,如果我们想要达到超越我们硬件和软件的最好表现。
/ ^. k: k5 y. N' z" @! _- g那么,如果我们能够直接从硬盘读取需要的采样,能不能不要内存?; G3 X- a7 m% V ~' j3 T- n& V* P. [3 N
答案是:不能。至少不能实时的满足需要。 假设我们敲响键盘,那么我们希望的是立即听到声音。 1 }+ o- N8 U" c8 x2 g6 `; l
严格意义上来说, 我们知道“立即”在宇宙中是不可能的,因为所有的声音都需要时间穿越空气,通过转换器, 通过布线等,但我们仍然期待声音“立即”让我们听到,可接受范围为1-10毫秒。
7 }1 ]+ X5 Q" c/ O3 [你可能知道这个值-这是所谓的“潜伏期”,它也可以作为衡量您的音频接口好坏的一个标准。最好的一些 潜伏期能低到1.5毫秒) 。总之,按下琴键我们需要等待很少的几毫秒后,声音才能被听到。! m9 f0 w$ M/ T1 |( u
因为还没有那么快的硬盘(设计最快的磁盘工作中的数据库服务器也需要约4毫秒) 。
2 u. y6 I" P* h6 }2 W+ h这样,解决这个问题的唯一途径是加载每个采样的第一部分到内存中(它有几乎在瞬间提供采样的能力),好让硬盘有机会获取后面的一部分采样,因为它需要时间。* K! g& ~4 U8 K+ Q
$ h3 B6 |: H! |
1.3 举例来说明一个采样发声的流程
. _+ \7 c J! p4 Z" h
% `( Q% J/ r# `8 T- B0 b9 b假设你有一个装有水的水箱,这个水箱有一个洞,水不断的流出。你的任务是使用一个水桶,不断填补流失的水,保持水箱不流空。 ?' Q6 l/ Z4 A8 Q9 ]- y6 x# l
如果您手脚不利索,水箱应该一开始就有比较多的水,为你填补上第一桶水提供时间。但如果以较少的水开始, 那么你必须提供更快的提供下一桶水以保证水箱不流尽。
/ c" |9 O6 @; L* Q: e然而,最开始的水位并不是唯一的因素。它还将继续,如果有较大的桶,您可以携带更多的水,从而不用 做那么多人次,但很明显的,这也需要花费较长的时间来填补。与此相反,小水桶需要你跑更多趟,但每次填补迅速。$ t6 n8 N, u& }- _! ]
假设我们能够增加更多的水桶(为每个发音的音符) ,那么你很快会发现速度又成为一个重要的因素。
+ H" n! c& i: F* G" K) L# o" ?) c" m' C- U6 }2 {" f& y" M6 N
1.4 请问这与DFD有什么关系?
: k: A1 t! _) M/ |+ ]' n( }
! p. e S4 A# s+ `9 h0 X; s1 F) ~% v' ~, j在DFD世界中,水箱是您的DFD发音内存,最开始的水位可以看成预存的缓冲,桶是一个通道缓冲区,而桶的容量,是您缓冲区大小。
! n8 x5 o$ D: o9 G$ B* y4 T1 F如果这些东西把你搞混了,请继续阅读下去。/ R q0 R6 r* b
( P) [. h$ V. `/ V" e5 D# Q1.5 技术背景5 \' T; m! K. S7 ]; p
3 W! b- r- d1 A0 o1.5.1 The Preload Buffer(预缓冲区)
$ `' K! H& j) M' [+ n
; l6 v- O% t% g- f/ `6 d# m一个预缓冲区对乐器里的每一个采样都是必要的。因为使用者可能弹奏键盘上的任何一个键,所以KONTAKT无法得知哪一个采样将被触发。, H3 V2 L' ?+ t* K0 O# ?/ H2 U
假设一个乐器由200个不同的采样构成,每个采样需要192KB大小的预缓冲区,那么我们最终将需要37.5MB的预缓冲区。请记住,这和采样的实际大小没有关系,这是相同的,无论采样大小是1GB一个还是200KB一个。
7 o. T+ M7 ^9 x3 U* F, R现在我们得到了第一个简单的公式:: t* K$ m/ d: S
一个乐器里面的采样数量*preload buffer size(预缓冲区大小)=这一乐器使用的内存。$ P8 D8 ]9 r* V) v7 X( E
换句话说,一个乐器加载需要的内存就是加载该乐器中每一个采样的第一部分所花的内存。通常,这仅仅是每一个采样的一小部分。
) ?: y6 N' b( M) U: i当我们加载一个乐器时,预分配多少内存取决于该乐器的预缓冲区设置。那么这里我们来看看乐器里面的Instrument Options对话框。(当你觉得有必要调整时,也该看看这里)
]2 {3 {5 ?. h/ ?( b预缓冲区的设置用来指定对于每个采样而言你要预载多少到内存。当回放的时候,随着载入预缓冲区的采样开始进入回放,硬盘也已经开始工作读取采样的余下部分用于回放。这一时间直接取决于采样装载入内存的第一部分的大小,即预缓冲区的大小。: M- q6 E# n8 U# g2 C
如果缓冲区比较大,可以维持回放较长的时间,那么硬盘上的工作容易得多。
4 E& ?" |: ?% _! y如果缓冲很短暂,硬盘就必须更努力,更快,但能节省更多的内存。因此,显然这里需要我们自己权衡。一方面可以让硬盘轻松,但需要大量的内存。另一方面,很可能使用很短的缓冲,导致硬盘提供采样的速度跟不上。
: @2 H+ Y2 n! e( D% [另外,复音数也是个问题,如果同一时间硬盘只是读取几个采样可能还行,但如果同时要读取数百个采样(比如一个完整的管弦乐采样库),可能硬盘就捉襟见肘了。每一位用户的硬件和性能需求是不同的,因此没有一个标准的的方案。不过,我们可以在这里提供一些指导性建议。 x- I9 e( T. V. L+ n! u B
6 m& f; S) _0 G. a1 f
1.5.2 通道缓冲
+ x- ]+ N8 m+ D7 J8 b) z) W2 m J6 {/ i, J
为了持续发音,DFD系统将不断读取下一个缓冲的声音并把它纳入一个专门的内存区,同时 Kontakt将读取这些采样。这一部分专用的内存领域(水箱)由Kontakt在启动时就预留好,基于两个DfD的大小。 |0 X- \" d g
设置:
$ M* V3 P8 W- A9 a7 s! K由于这些缓冲区是发声所必须的,而且一个声音有可能占用Kontakt多达16个通道,所以他们被称为通道缓冲。
# i3 f( B, g5 s; y6 h1 E2 q" C' o w# ]9 V; ?: p) V, y- c% Q
1.53 我们需要多少通道缓冲?
& n0 Y' A. {5 n# s" p5 j, z4 J' I
8 _" O. Y A* G这是相对容易的:这取决于我们打算同时发出多少个声音。如果我们需要的最大复音数为100,那么我们将需要100个这样的缓冲区。每个通道缓冲区的大小将决定采样的下一个部分是否跟得上。
7 _7 E }$ k1 J# y3 J' u) a了解了这一点,我们得到第二个公式:保留通道缓冲x通道缓冲区大小=总的DFD内存 这里重点是不要混淆总的DFD内存使用量和显示在Kontakt乐器栏的内存使用量。这是分别占用若干系统内存的两个值,由Kontakt在加载和运行乐器时分配。
% O, D- ?5 Q. W7 Z1 H( r) m1 `6 @# B! D9 y' A$ D- \5 d
(注意!一个立体声的声音将使用2个这样缓冲区,而一个5.1声道的声音将使用其中6个。这是设定预留多少数量通道缓冲需要考虑的重要因素)( |6 q7 i' G- c( i+ f3 H
% E; z% T7 i$ G7 I' o. I
1.6 放在一起来看
; \0 T% L3 |' d d9 f) D$ j% W$ M
! H; C1 q# Y" F, j现在,我们知道了DFD背后几乎所有的理论基础,得到以下关于内存的结论" E9 N0 e8 x; @4 r
注意:
1 C& O! d+ x0 D. y$ H1.我们需要一些预缓冲区,数量和我们加载的采样一样多。
# Y6 Z+ D& Z2 p. X3 G4 F2.我们需要通道缓冲区,以满足回放时的发音需要。* y$ F$ |6 o# O5 E3 K
3.我们可以调整每个缓冲区的大小,以配合我们各自的需求和内存。
. V$ f3 P+ c" H" n0 ^+ x) O' n8 a' ?/ i- ]此外,重点要记住:) J D N; x& G/ U, |1 ?
1.通道缓冲器总是存在,不管加没加载采样。
- I* R4 |! u7 Z# @7 m2 \2.预缓冲区可以变得相当多,如果加载的乐器或者多个乐器包含有很多采样。使用的采样数量决定预加载的内存消耗,所以可能有必要把它设置得尽可能的低,特别是要装载大型乐器,然而内存又比较有限的情况下。
% l; E) N: K3 B n8 x/ Z' ~! e& iDFD发声内存(DFD voice memory)将根据实际应用来分配给Kontakt中所有加载的乐器共享。% q2 {/ _- c0 S' M
4 X$ w' I) k9 B, l! G9 d
理论结合实例,使我们能够得出如下结论:
+ n* E( _" I$ V* S* x以更大的水桶和更多的复音数工作,水桶每次装水的时间就会越长。也就是说,如果要回放大量的音符(多复音数) ,这可能意味着装满所有水桶的时间过长,这样就可能导致DFD超载。
+ \- e( U1 N4 k当然,我们可以减少水桶(通道的缓冲器)的大小,但是有一个限制:桶越小,每次抵达的通道缓冲可提供的回放时间也会更短。在这种情况下,硬盘寻道时间将成为影响DFD性能的因素。
, K4 Q1 }1 B) N6 K' c2 其他注意事项
) J( }( Q! ? A. [0 a
* Q( k# x1 Y- |* [7 F7 [显然,面对各种不同的系统配置和个人需求,我们不能给出一个标准;不过在这里有一些一般准则应有助于让您的计算机获得更好的性能。
$ v' Z+ o) l- Q; X8 C4 d8 z2.1 硬件基础9 Q _/ _6 h; f' D
5 h" f$ B, Q; C( x8 c
2.1.1 硬盘驱动器+ i: a" T, W" M* C; b3 o) q
; k- M& L, p7 w8 ^: I ^" M
当然,最关键的部分还是硬盘,要获得速度很快的硬盘,我们可以有很多选择。 “快”对于硬 盘来说可以分为两方面来看:传输带宽(transfer bandwidth)和访问时间(access time)。 K& s+ D& Y8 t; S, I
虽然传输带宽是一个重要的因素,但访问时间更为重要。目前的3.5英寸台式机硬盘传输带宽大约40MB每秒,平均访问时间约为10毫秒。40MBs的传输带宽能够提供大约200到250个44.1kHz/16Bit的立体声复音。但不幸的是,还有访问时间需要考虑。这里说的是平均访问时间,这就需要解决一个问题,随机选择的目标可能在硬盘的任何位置,磁头从前一个目标到下一个目标需要到处跑。事实上,这正是DFD运行时要遇到的:只要同时回放几个音,就必须迅速读取许多不同的(事实上就是随机存放的)数据。
/ J l& p6 B2 b# F$ Q! j另一点关于访问时间的事实是,它不能被缩小,同样影响传输速率。通过使用廉价和比较大众的磁盘阵列,在 传输速率上可以很容易地提高到几乎任何程度,但访问时间仍然大致相同,即使我们联合4个或更多的硬盘。因此,我们得出以下非常重要的结论:如果您打算使用大型音色库,应该寻找一个访问时间非常好的硬盘。0 x6 e& W6 S! t& x& r! C7 y
大多数台式机硬盘,如前所述,转速为7200转,能够提供大约10毫秒的访问时间。但如果你想从大型音色库获得高复音数(150-250个立体声声音),可能还不够好。在这种情况下,您需要一个更快的硬盘。例如用在数据库服务器上的硬盘,通常运行在10000转甚至15000转每分钟(但不幸的是,他们更昂贵)。这些硬盘的存取时间能够下降到4到5毫秒。比如最新的西数“猛禽”10000转硬盘其出众的访问时间就是个很好的例子。如果您是高端用户或者使用巨大的音色库和高复音数,那么你很可能要使用这样的硬盘,甚至两个组成为RAID使用。+ ]& T+ J' Q `6 \0 e$ C' G
) p+ T# ]& K/ K" _& s; M
2.1.2 硬盘接口8 u9 p1 `% t2 l! y6 j u
7 \/ Z4 L, M; A
现在的主流接口标准之间几乎没有任何差异(对上述整个流程来说的话),比如ATA,SCSI,FireWire或SATA接口。他们能够提供的数据传输速度已经超过了任何硬盘本身可以提供的数据。当然,他们的连接方式仍然存在不同:要实现最佳的性能通常还要考虑内部连接。这并不意味着外部火线硬盘将无法正常工作,但是在某些情况下,这确实存在:在PC方面,火线(或RAID)控制器往往依赖PCI总线,其中还有声卡。便宜的适配器和/或者不良驱动都能在一定程度上影响DFD的性能以及声音形成。尽可能使用高品质的适配器和驱动,以及专用总线。# E, H4 l: e+ s+ H
7 \) i1 D W$ p0 M2 G! ^' {4 S. J2.1.3 缓冲区大小! p# R" V3 [/ \
7 B5 b; }8 M6 v. h: f: ]5 v
下一主题是缓冲区大小:结合上述理论和实例,我们看到,较大的缓冲区可以减轻来自硬盘的压力,从而改善 性能和复音数。事实上,较大的缓冲区可以(在一定程度上)补偿缓慢的访问时间。这不是一个简单的“更多的缓冲区==更大复音数“的关系。实际情况是这样,随着缓冲区大小的提高,性能会在提高到了某一点之后开始下降。$ M- r6 O& m6 R% ~
一个“对所有人来说都最佳的”设置并不存在,因此对于个人来说,一点小小的研究仍然是必须的。: M: e, S, h! m3 g- H
. S' I/ t; a$ R6 i+ ?2 n* g2.1.4 内存
. e0 e$ M, f6 k8 R. j: R* D$ H# ^$ o/ N' V
我们已经看到,我们需要相当多的内存,如果我们要使用很多采样的乐器,将直接导致内存需求大幅增加。我们要应付许多预缓存区域的需要,他们会增大许多。还有操作系统,你的宿主以及各种插件等等扩展程序可能也在运行。
# d! n/ R. N, S- w/ x1 A那么我们到底需要多少内存?答案是, “越多越好“,特别是在读取大型采样库的时候,内存是一个至关重要的资源。同样,在很大程度上取决于你想使用哪些乐器。这里再给你加深一下印象,在DFD控制面板会显示多少总DFD内存和通道缓冲配置,每个乐器的标题下面你能看到这一乐器占用了多少。当然还有更多额外需求的内存,(操作 系统本身,音序器,其他的软件工具等等) 。作为对内存要求的一个提示,我们可以声明如下:
; y7 a" X; a: u512MB可以被视为任何象样的音频系统所需最低配置
" L" F5 w7 E" D" x( r% ]' w- N1GB是一个很好的值,一个强大全面的系统,能够满足大部分标准的DFD应用。5 e/ I$ W8 F. Z7 ~) B
2GB高端系统,可以使用高端的大型音色库。/ Z( `7 }- v: A) a6 V
4GB实际上限制了所有的32位应用程序。目前为止甚至没有任何一个操作系统允许单个程序使用内存达到这个总数。( }* f9 d# P. m; g9 n0 H' K; }6 u, K
, I5 ~3 g+ J' \& O+ O0 ]/ O3 最后但并非不重要...0 {* t- F+ S* f5 ~, ^3 ?! f
, M) [9 M7 L- T2 b" I: r3.1 清楚你的计算机有多少资源可用
w: r# M' [5 j1 y3 L+ t% F a9 \好了,你不是一个技术人员,不要紧。如果您使用电脑制作音乐,那么至少基本的应该知道的。这里就包括了如何判断可用的系统资源。' ~/ U0 v, u. n$ \' V* ]
PC和Mac有一套先进的虚拟内存处理系统,但如果可用内存没有被正确监测的话,可能造成采样回放问题。
* G6 v2 K3 B4 ^- pPC:Ctrl+Alt+Detele,打开Windows任务管理器。在这里您可以看到整个系统的内存使用情况,包括单个程序占用的数量。 / g6 ^7 G& O8 c" }# T
Mac:Applications / Utilities / Activity Manager。在这里您可以看到还有多少空闲内存能供Kontakt使用。; {/ q# E- {3 a8 H5 f# U
关于这个问题欲了解更多,请查看我们的在线OS X教程。http://www.nativeinstruments.de/index.php?id=niosxtut_us
* T" J8 b; b$ S7 _$ h
- W* Y1 D5 r- M+ @# h0 L- e1 T3.2 试验各种设置/ e" W: `1 a2 y
4 u* f6 A! q7 J8 ?" E. V; q w
如果您没有播放的问题,那么这应该对您不适用。如果您遇到任何回放问题,那么DFD设置可解决。 }# C. k; I- p. v
请记住,这方面的事情是非常容易发生的。唯一的办法就是通过试验和错误为你的电脑找到“最佳性能点“,并请记住:如果没有问题,不要随便去改动设置。
. L$ a! A- X$ e% [
& ~( Z- q7 Q: y3.2.1 检查乐器预缓冲区
! T% _3 G" U6 b* Q& { [3 @2 w3 q; m0 I# @+ e
如果您的硬盘速度较慢,比如4200转或5400转,那么增大预缓冲区可以起到一定的作用。这将使DFD 有更多的余量完成其工作,它也需要更多的内存来完成工作。记住这是建立在在每一个采样的基础上,所以,如果给你上千层采样的三角钢琴设置240KB的预缓冲区,你的内存会消耗得很快,因此要合理的设置。
; i7 O; x* @" c7 E. S3.2.2 确定你要多大的复音数
5 k# x+ I8 h8 N9 ~4 a0 `* p2 d8 |# X你应该大概知道你的Kontakt要发出多少个声音。这不一定需要你一开始就必须搞清楚,但随着你的制作项目进展可能需要根据您的工程规模和总复音数调整DFD设置。现在,你知道DFD设置的意思是说,看看他们。实际操作中你真的需要1024个复音数?此选项存在并不意味着您的设置可以应付它。Kontakt的引擎已经事先准备好了对付如此极端的总复音数,但前提是电脑能够提供足够的资源。请记住,如果您需要比设置的保留通道缓冲更多的复音数,您将收到错误信息。: ^! o0 V$ s& @. @
! X" I/ N; v: b8 r) m
3.2.3 更多不代表更好, g! l) q9 V+ h; ~2 Y
R; \2 \2 s) d, u- Q& h5 h D
很多客户往往都有个错误观点,越多越好。 虽然这对于生活中很多事情来说是正确的,但对于DFD的设置不是。 无论你是在简单还是专家模式下都知道,移动滑块到极右将拨出大量的系统内存给DFD。如果您有额外的内存,那就太棒了!但如果内存吃紧,那就麻烦了,有这么多空闲的内存给Kontakt使用吗?最好的方式是往正确的方向移动滑块,然后尝试播放你想要的那么多复音数。大型工程中,不止一个Kontakt的情况下,DFD发声内存是建立在每个Kontakt的基础上。这就意味着你指定480MB到DFD的话,开两个Kontakt就会吃掉近1G。而这时你一个乐器都还没加载! K) l0 d, e1 P, f$ d, c
3 U' J% Z$ A& t6 O- V* m3.3 结论
$ g2 Z2 G' B# \/ Q3 G1 @: l: ~" l4 R8 ~" F
嗯,就是这样。已经到了Kontakt-DFD教程的尾声。这不是个轻松的话题,但我们希望你更好地了解这个神奇的 Kontakt功能,目的是让您能够加载比都加载到内存要多得多的乐器。 |
|