文本阅读:
166第7章时间平移与延时
用半个周期正弦作为包络是个很好的选择。如果我们假设,在平均意义上2个延时输出是非相关的(第9页),那么,2个延时线的信号功率经过包络处理以后将增加一个常数(因为两个包络的平方和为1)。
在这个音高平移算法的基础上有很多变种。在一种典型的变种中使用了一个单一延时线,而且没有任何包络处理。在此种情况下,需要选择延时时间跳变的时间点,以及它要跳至何点,以便让输出保持连续。例如,可能可以找到这样一个点:输出信号穿过零点(一个
"过零点")并且非连续地跳到另外一点。仅使用一个延时线的优势在于信号输出听起来更"现场"。其缺点是:由于延时时间是输入信号值的一个函数,因此输出不再是输入的一个线性函数,所以非周期的输入可以引起人造声,比如其他的音高。
7.10示例
7.10.1固定的非内插延时线
示例G01.delay.pd(图7.23)在一个输入信号上使用了一个简单延时线。这里需要2个新对象:
Loadbangl
【delwrite~:定义并写入一个延时线。第1
metro 1000
个创建函数给出了该延时线的名称(并且两个延
【tabplay-Go1-tabl
时线不可共享同一个名称)。第2个创建参数是输入信号
延时线的长度,以毫秒为单位。输入口接收一个写到延时线中
音频信号,并连续地将其写入到延时线中。
delwrite-delay1 1000
【delread~】:从延时线中读取(或"抽取")。
第1个创建参数给出了该延时线的名称(它应0<--延时时间
(毫秒)
该与相应的delwrite~对象的名称一致;这让deiread-delay1
Pd知道哪个delwrite~对象与哪个delread~对产5从延时线读取
象相关联)。第2个(可选的)创建参数以毫秒为单位给出了延时时间。它不可小于0,也不可(输出)
7.23|示例音色G01.delay.pd 展示了一个超过由detwrite一对象指明的延时线长度。输入牛网指的亚高?"皇盖新料合解鉴华器粉"的数字(消息)可以用来动态地改变时间。不过,这将在输出中产生一个非连续的变化,因此,如果延时时间改变的话,需要对输出静该例仅简单地把一个delwrite~和一个delread-对象配对起来,构成一个简单的非内插