|
|
什么是VST插件?
2 p6 p* C' v) d) U3 r2 H; P 从本质上来说,VST插件就是一种纯粹的音频处理组件,而不是音频应用程序;它是一种在宿主程序内使用的组件。该宿主程序则提供由插件代码所处理的音频信号流。9 P0 z7 [1 H! b0 o e% A0 ^- b
一般意义上地说,VST插件可以接收音频数据流,对音频进行处理,并将结果返回给宿主程序。VST插件通常使用计算机处理器来进行处理操作,并不专门需要专门的数字信号处理器。音频数据流分成一系列的数据块。宿主依次提供这些数据块。宿主及其当前环境控制区块大小。VST插件则保留其运行处理相关的自身参数的状态;宿主并不会保留关于插件在其处理的最后数据块操作方面的任何信息。8 k5 `# L s; H( V* o/ A
从宿主程序的角度来看,VST插件就好象一个黑盒子一样,有着特定数量的输入、输出(MIDI或音频)以及相关参数。宿主并不需要以使用插件的关于插件处理方面的固有知识。插件处理可以使用其希望的任何参数,内部进行处理,但要视宿主程序的能力而定,它可以允许由宿主程序来自动操作用户参数的变化。
0 R `; O; ~8 { VST插件的源代码是独立的平台,但是交付(生成)系统则要视平台结构而定:
. e" ^, q# ?. H, C, H 在 Windows 平台上,VST插件是多线程的DLL(动态链接库)。用于VST插件的标准(默认)文件夹在注册表“HKEY_LOCAL_MACHINE\SOFTWARE\VST\VSTPluginsPath”下进行定义。
. J4 _$ _ p: h E$ g3 B- J: N$ z 在Mac OS X上,VST插件是文件包的形式。您可以在plist.info文件内通过CFBundle命名键来定义插件名称。
. v8 \$ Z) \& w) n; Y3 t X: w' g 在BeOS 与 SGI (在MOTIF, UNIX下)上,VST插件是一种共享库。 0 ]: L2 B5 w: Y( ]! K
音频处理
! z2 I5 a, C9 T( ]6 j 插件中的音频处理可通过3种方式完成,即process (),processReplacing () 和 processDoubleReplacing ()。当 process () 接收输入数据时,应用其处理算法,然后再把结果添加到输出上(堆积:accumulating),processReplacing () 与 processDoubleReplacing ()则重写输出缓冲。
' ~. S: y$ u; w- [ 提示:在VST 2.4中不允许堆积处理模式。请执行processReplacing (强制!)与processDoubleReplacing (选项)。
" f8 N( w) Z, D% N: _& v- Q 由VST插件所处理的音频数据可以是32位(单精度)也可以选用64位(双精度)浮点数据。默认使用范围为-1.0 到 +1.0 括弧为 [-1.0, +1.0] (而1.0对应为0dB,0.5对应为-6dB,0.0对应为-oodB)。请注意效果器可能会产生超过这个范围的数值。
7 j. |7 t, N, l' } A# T. v3 u 所有参数——用户参数,都直接或间接作用于该数据,可由宿主自动操作——都是32位浮点数据。它们的范围始终为0.0 到 1.0 括弧为 [0.0, +1.0],而不管其内部或外部表示为何。 |
|