文本阅读:
3.2控制53
抵御折叠的第一道防线就是简单地使用高采样速率。有系统地使用你的计算机能够轻松处理的最高采样速率是一个很好的习惯。实际可用的最高采样速率将会根据以下几个方面的情况变化:是否在实时状态下工作,CPU时间和内存的限制,输入输出硬件,有时候甚至还有软件强加的限制。
【Bal03】以一种非技术的方式对采样理论进行了论述。更多细节请参阅【Mat69,pp.1-30】。
3.2控制
到目前为止我们处理的都是音频信号,它们就是一些定义在整数n上的序列x【n】,这些整数对应的是一些在时间上均匀间隔的点。对于描述各种合成方法来说,这种框架通常是完全够用的。但各种实时电子音乐应用还经常需要在非规则出现的时间点上进行其他计算。本节将开发一种框架来描述我们所说的控制(Control)计算。我们总是要求任意计算都与一个特定的逻辑时间(LogicalTime)相对应。逻辑时间控制着音频输出中的哪个样点是反映计算结果的第一个样点。
在一个非实时系统中(例如经典形式的Csound),这意味着逻辑时间将从零开始不断前行,直到输出声音文件的末尾。每个"记分卡"都有一个与之相关联的逻辑时间(记录下来的那个时间),并且会在音频计算达到那个瞬间时进行动作。因此音频计算和控制计算(辛苦地做出样点和处理记录卡)会被轮流处理,并且都以逻辑时间递增的顺序进行。
在一个实时系统中,逻辑时间仍旧与音频输出中下一个受影响的样点的时间相对应,但它总会比实际时间(Real Time)略微提前一点,这是由计算机当前正在输出的那个样点来测量的。控制计算和音频计算仍旧交替进行,并根据逻辑时间排序。
在计算机音乐的计算中使用逻辑时间而非实际时间的原因是让这些计算独立于计算机的实际执行时间。计算机的实际执行时间会由于各种原因而发生变化,甚至看上去完全一样的两个计算的实际执行时间也会不同。当我们计算音频信号的一个新值或是处理某些控制输入时,实际时间可能已经流逝,但我们需要让逻辑时间在整个计算过程中保持不变,就仿佛它是瞬时发生的一样。这样做的结果是,电子音乐的计算如果被正确完成的话,那么它将是确定性的:让同一个实时或非实时的音频计算运行2次,每次都给予同样的输入,那么2次运行将会得到完全一样的结果。
图3.2a用图示的方式解释了逻辑时间与样点计算是如何联系在一起的。音频样点会在那些固定的周期处(用波浪线标注)被计算,但在每个样点被计算之前,我们已经完成了所有可能对其有影响的控制计算(用直线段标注)。首先我们进行的是从逻辑时间0点开始直到1(但不包括1)的控制计算;然后计算位于逻辑时间1的第一个音频样点(索引值为0)。随后我们进行的是直到逻辑时间2(但不包括2)的控制运算,然后计算索引值为1的样点,