繁体 简体
作者:StudioCover | 出处:StudioCover | 06-08-09 20:05:58 | 阅读:
我们已经学习了数字音频的基本原理,知道声音的数字化和采样和量化,以及将声音作为一系列数字序列加以储存。假如我们不有数字化采样手段录制现成的自然声音,而是直接在计算机中生成这些数字化音频是否可以呢?我们能否用计算机简单地生成这些代表声音的数字?答案当然是肯定的。
|
数字合成器基础
数字音频合成是一种信号生成技术,它创造作曲家想要的声音资源。
我们已经学习了数字音频的基本原理,知道声音的数字化和采样和量化,以及将声音作为一系列数字序列加以储存。假如我们不有数字化采样手段录制现成的自然声音,而是直接在计算机中生成这些数字化音频是否可以呢?我们能否用计算机简单地生成这些代表声音的数字?答案当然是肯定的。
数字音频合成技术已经发展了很多年,它与电子模拟合成一样,基本是在两个大的领域和方向中发展,一个领域是模仿或再现外部世界自然的音响,如众多管弦乐乐器音响等等;另一个领域是创造“新”的外部物质世界不存在的音响,这个领域主要是在电子声学音乐(Acoustic)中应用。
数字合成还可以分为现场合成应用系统与工作室合成系统两类,前者立刻回应到演奏者的控制(如在实时状态下),后者则是工作室先期制作,和采用非实时的声音建构。非实时系统一般用于音乐的研究和工作室的创作中。不过,在非实时计算机系统中许多技术发展已经与后来的现场实时数字合成系统的应用相结合了。
·在计算机音乐语言中,Instrument的含义和级别
一、Instrument的含义
Instrument一词在传统音乐中译为乐器,在计算机音乐语言中,Instrument一词很难用一个恰当的词汇加以对应。它是指一种实现音乐参数的运算法则。它需要计算机程序来解读储存在内存中的信号,或是解读在传感器一进行的声音活动。Instrument的运算法则,用来计算音频信号的各种取样值,取样值也称为参数,它们用在输入中,并被专业程序接收。
二、Instrument的级别
Instrument级别的最底层,是采用逐步或逐级(Step-by-step)编辑程序来生成取样值。在这个级别上工作当然是很困难的,必须有对生产何种特殊的声音的运算法则怎样修改的技术和感觉。首先应当承认,这是计算机程序专业工程师的工作,或是计算机、音乐交叉性知识结构人才的专利,一般音乐人很难深入到这个层次。退一步说,即便能够深入到这个层次,一个从事创作的音乐人也很容易为了这些细小繁琐的工作而影响对音乐创作的整体的构思。
Instrument的第二个级别是单位发生器(Unitgenerator)。单位发生器是通过将全部的声音生成运算法则划分为次级的、分别的运算,这个级别的Instrument语言运用最为普遍。很多音乐语言都是根据单位发生器,并应用单位发生器作为建筑块,来表现综合运算的。每个单位发生器内部的运算已经被音乐系统程序师界定了、编码了。音乐家的工作只是使单位发生器的输入和输出相互连接,获得一种全面的综合运算,以产生想要的效果。
Instrument的第三个级别是信号生成模式(Signal-generatingModel)。用信号生成模式,使计算机与相应的单位发生器的内部连接预先编辑好,这样音乐家就可以根据需要选择任何一种类型或技术。在很多教科书中,第三级别与第二级别合并在一起,实现如我们后面章节将详细介绍的声音合成技术,如加法合成、减法合成、变形合成、粒子合成等。
Instrument的最后一个级别是物理模式(PhysicalModel)。这是一种通过物理模仿的声音处理模式,这种模式带有可变的参数,以便获得特殊的声音。例如,一个软件可以通过一系列参数,用物理性手段模仿乐器,如模仿小提琴等,作曲家用这种软件,可以通过改变有关乐器音量大小、琴弓的位置、琴码的位置的相关参数等手段来改变声音的品质。
物理模式已经创造了许多Instrument语言,而且随着物理模式的发展,它会为作曲家带来更直接的手段,来接触计算机Instrument设计,这种手段会比直接规范信号处理运算法则的参数得到更广泛的应用。
·信号流程图
单位发生器(Unitgnerator)还用来限定这里所说的基本合成技术,这也是合成基础理论中的核心部分。一个信号流程图,就是一种图像陈述的方式,在这种较图像陈述中,单位发生器相互连接在一起,形成一个次一级的Instrument
用在单位发生器的相互连接中有两个基本原则:
第一,一个单位发生器的输出,要与其他一个或多个单位发生器的一个或更多的输入相连接,这样,一个输出能够控制一个以上的输入。
第二,输出不可以直接相互连接。当多个单位发生器被提供相冲突的数值时,直接的相互连接会导致模糊不明确的局面。
在一般的单位发生器实例中,输入一般出现在单位发生器(信号)的上方,输出出现在单位发生器的下方。
[page]
输出可以与数字操作结合。最常用的操作结合是加法,这体现在流程图加法器(ADDER)信号中,一个加法器有两个或多个输入和一个输出,多个输入由箭头标示。一个加法器的主要用途,是将数个信号混合在一起。减法的操作也用一个加法器,在这种情况下,减数的标记恰恰在进入加法器之前被倒转过来,这显示在连接减数和加法器的箭头附近的负数标记上。
这个信号流程图还显示了包括一个乘法器和一个除法器。用一个大于1的常数乘以一个信号,会增加信号的振幅,这种处理手段叫做增大(Amplification)。反过来的处理手法,叫做衰减,是通过一个小于1的常数相乘获得的。在早期的普通计算机上,乘法和除法要比加法与减法用更多的时间。因此,Instrument的设计者通常尝试用最小的数来从事这种操作。不过,今天的计算机,CPU速度和硬盘品质都使乘法和除法的速度大大加快,使得上述问题加以解决。除法的应用尤其需要留意,为了避免错误,Instrument设计者必须确保分数不是0,因为这会产生无限的商(quotient)。在一些系统中,这种错误会引起系统程序列机。或至少产生一些意外的取样值,在声音中产生诸如劈啪之类似声音。
这个用样板流程图表形式标出的Instrument,被六个参数控制,它们显示在振幅(AMP)和时值(DUR)之类的寄存中。每次Instrument需要生产一个声音时,每个参数的值从主程序到其他分枝Instrument运行一个周期。这些参数一般是通过分类储存分别标注了的。例如,控制一个Instrument振幅的参数一般是指定在AMP中。
每一个主程序Instrument至少有一个输出,流程图中的输出的记号是一个小的空圆圆,写在流程图的最底下。通常也可能有与多通道音频系统相应的多输出。
·数字振荡器基本原理
对于所有的计算机声音合成来说,单位发生器的根基是振荡器。一个振荡器产生一个周期的波形,并控制和决定振幅、频率和波形种类。
在振荡器内部的符号(即WF)指振荡器的波形,这个信号可以是一个特定波形或是一个周期波形图的记忆储存器。在左边的输入中的数值规定信号振幅峰值,在右边的输入值决定频率,根据这个系统,频率可以在两个途径得以具体确定,一个途径是实际的Hz数,另一个途径是用一个取样增量(SamplingIncrement),即一个与频率相均衡的数。振荡器右边的相位值决定振荡器在波形的哪一个点上开始。相位一般是不被规定的,除非是需要更明确的手段。振荡器的输出是一个取样序列,它形成一个代表波形的数字信号。
一个实现振荡器运算法则的方法规定着作为时域数学函数的波形。为了用这种方法生成一个正弦波,这个运算必须在每一个取样上计算数字函数值,即正弦值。这种直接的求值方法,速度相对慢。
为了更有效率,多数数字振荡器采用一个储存波形,即一个在任何声音生成之前已经求值了的波形。计算机在这个波形周期上算出许多一致间隔的点,然后将其作为一个记忆块储存,称为一个波表(WaveTable)。这样,一个波表就包括了一个很长的数字序列,每个数字对应这个波形上一个接续点的取样值,一旦波形被储存,振荡器就能从波表中很简单地重新获得数值来生成取样值,这要比通过波形数学函数的直接求值快得多。
一、波表
为了了解数字振荡器的作用,首先我们看下面的波表。这个波表内包含一个在512数值内的正弦波的周期。每个输入都用0到511的整数地址标出。振荡器的运算保持一个数值,称作相,它表示当前的输入地址,在操作开始,振荡器给出一个初始相值,它表示波表中的第一个输入。在每一个取样中,振荡器的运算获得当前的相值,然后将它添加到一个与操作频率成比例的总数上。这个新的相值决定着计算下一个输出取样的输入。在每一个取样中添加到相中的量,称作取样增量(SamplingIncrement,简称SI),也就是波表中振荡器选择的连续进入的间距。
当超值超过波表中最后输入的数时,它就通过从这个相开始减去波表输入的所有的数,来绕回到接近波表最开始的点上。用这种例证,表中最后输入的数是511,如果在添加取样增量之后,当前的相值(φ)=512,那么,振荡器的运算就会对这个相进行修改,以便φ=φ-512=0,这样就将这个相送回到表的最初位置上。因此,振荡器的运算可以视为一种循环式的波表扫描。
[page]
二、振荡器的两个变种
在计算机音乐中,通赏会遇到数字振荡器的两个变种(Varieties),它们固定取样值振荡器(FixedSamplingRateOscillator)和可变取样值振荡器(VariableSamplingRateOscillator)。下面集中介绍固定取样值振荡器的操作原理,可变取样值振荡器一般用在后面介绍的声音调制中。
在图8-4的波表图示中,假如取样值是40kHz,振荡器通过编程,用1的取样增量来浏览整个波表,即每次一个输入。在表中总共有512个输入,这个表就使512个取样形成一个循环,这样,振荡器的基本频率就会是40000/512=78.13Hz。
假如想获得一个再高一个八度的音,振荡器就会编程,在上图波表的512个取样值中每隔一个数值取样一次,使取样增量SI=2,因为振荡器会以快一倍的速度在波表中通过,就会出现前面取样循环的一半的值(256),最终,振荡器的基本频率就是40000/256=156.25Hz。频率数比以前的取样大了一倍,因为波表的浏览速度快了一倍。
取样增量一般不是精确的整数,例如,N=512,以40-kHz的取样率生成一个440-Hz的音,需要5.632的取样增量。在这种情况下,假如振荡器在一个相当于0的相位上开始,这个相位就是0+5.632=5.632,那么,假如波表中的输入是在整数上,振荡器是怎么处理一个有分数(fractional)的相的呢?有三种处理技术:
第一,断断(Truncation),在切断技术中,波表输入内,相的小数部分被忽略掉。
第二,凑整(Rounding),用凑整技术,输入是取相周边最近的值。这种技术比切断技术更准确一些。
第三,插补(Interpolation),在三种技术中,插补是能给出最准确的波形的技术,当一个相落在两个整数的值之间,计算的波形方式是通过计算两个整数值之间相的平均数,例如5.623,是5与6之间的平均数,用这种技术的解释,就是6输入的63.2%和5输入的36.8%。
这三种技术都有误差,从而在音响中产生噪音和意外信号,噪音和意外信号的量的大小是根据波形、波表的大小,取样增量的值和所运用的技术而定的。波表越大,信噪比SNR越好一些(即signal-to-noiseratio)。
在早期计算机配置较低时,计算机速度和内存是决定数字振荡器信噪比的关键,很多音乐系统设置了切断技术和插补技术两种振荡器,以便使用者根据自已计算机的速度和内存情况加以选择,今天,计算机技术已经有了飞跃性的变化和发展,速度和内存都不是问题。
·两个典型的声音系统语言中的Instrument定义
在解读Instrument的方法上,计算机有许多具体的手段来实现声音合成语言。最广泛流行的两种Instrument应用语言是Csound和Cmusic两种。两种语言都及为好用,尽管在界面上和语言程序排列上两者有时有一些不同,但在用法上,两者任何一种的应用都会对另一种的应用起到帮助和启发作用。而且,两个程序也有一定的共同特征,例如,它们都应用储存在计算机内存里的波形和其他时域函数,它们都拥有为生成储存了的函数和波表而设置的各种子程序。而且它们逻辑上将总谱(Score)和乐队(Orchestra)分开。
Csound和Cmusic可以被看作是1960年代MaxMathews创立的Bell实验室早期合成语言的后代,尽管关系远一些。这两种软件都有一个结构,这个结构要求音乐家提供一个以特殊语言编码的器乐弦乐队(在语言上两个软件是不同的),并提供总谱或音的目录。管弦乐队输入到这些程序中是一种新的语言编码的指令形式,这种新的语言代表着制作者希望获得理想声音的单位发生器的结构。总谱输入是以波表的形式生成的指令,并控制各种类型的命令和被管弦乐程序演奏的数据“音”。例如,如果一个Instrument需要一个不同频率的音符的选项,该频率就会被作为音的指令的参数值,为Instrument提供所需的这种频率。 |
责编:admin