文本阅读:
3.10示例67
波由于折叠而彼此离得很近,从而产生了差拍效果。例如,在1423Hz上,其2次谐波是2846Hz,而第33次谐波将在1423*33-44100=2859Hz处发声--这是一个很不和谐的音调。
其他一些不那么极端的例子仍旧能够产生可闻的折叠,不过形式上的显著性要低一些。
这些折叠通常是令人不快的,并且值得去学会听出它们。示例C02.sawtooth-foldover.pd(未在这里绘出)在一个锯齿波(用phasor~对象)上演示了这种效应。对于存储了音频录音的波表来说,内插误差可以产生额外的折叠。其效果能在很宽的范围内变化;其声音有时被描述成是"嘎吱嘎吱"的,有时也被说成是"结结巴巴"的,这与录音本身、转调以及内插算法有关。
3.10.2将控制转换为信号
示例Co3.zipper.noise.pd(图3.13b)演示了将一个更新速度较慢的控制流转换成一个音频信号的过程。这里引入了一个新对象:
ine:具有控制输出的斜变发生器。与line~类似,line把一对数值作为(目标,时间)对,并且会在给定的时间内斜变到目标处;不过,与line~不同的是,其输出是一个数值控制流,其默认的时间间隔是20ms。
在本例中,你可以用line的输出控制幅度上升和幅度下降所产生的声音,并与用line~产生的音频信号控制幅度上升和下降所产生的声音进行比较。
line的输出在*~对象的输入处被转换成一个音频信号。将一个数字控制流连接到一个信号输入口上就暗含了这种转换。在Pd中,从数字控制流到音频流的隐式转换是按照图3.4a所示的"尽可能快"模式完成的。line的输出变成了一个每秒具有50级的阶梯信号。这种结果通常被称为"拉链噪声"。
line对象在生成音频信号方面的局限性是能被清晰地听到的,即使是在较长的比如300ms的时间里也能被听到,而其对应的信号对象line~则不会产生可闻的问题,除非时间长度变得非常短。示例CO4.control.to.signalpd(图3.13c)演示了使用line~产生一个250Hz三角波的效果。在这里,图3.5所示的那些效应开始显现。由于line~总是把线段对齐到块边界处,因此各条线段的确切时长是不同的,在本例中,这种变化(毫秒量级)对于它们本身的时长来说是很大的一个部分。
对于这类情形,可以使用一种更精确的(也是在计算时间上代价更大的)对象:
【vline~:精确的线段生成器。这是"线(line)"家族中的第3个成员,它输出的是一个音频信号(像line~一样),但会把信号的终点对齐到所需的时间点上,准确到一个样本的几分之几。(准确度仅受限于Pd所使用的浮点数字格式。)并且,在一个单一的音频块中可以指定多条线段;vline~能生成时长短至2个样点的波形(超过这个界限将会导致折叠)。