文本阅读:
7.10示例171
把一个脉冲(或是其他激励信号)送入一个循环梳状滤波器来产生一个音高,有时候这被称为卡普拉斯-斯特朗合成(Karplus-Strong Synthesis),论文【KS83】对此进行了描述,不过这种思想出现得更早,例如在保罗·兰斯基(PaulLansky)1979年的作品《六首幻想曲--以托马斯·坎皮恩的一首诗为题(Six Fantasies on a Poem by Thomas Campion)》中就体现了这种思想。
7.10.5非循环延时线中的执行顺序
在非循环延时网络中,"写入到延时线"这一操作在整个执行顺序中可以位于读取之前。
因此就应该没有延时线长度的下限(除了由内插方案产生的任何影响;参见7.7小节)。在Csound这类语言中,组件发生器计算的序列(几乎)是明确的,因此很容易指明。不过,在图形化音色搭建环境中,顺序是不明显的,必须采取另一种方式来保证"一个delwrite~对象必须在相应的delread~对象之前计算"这类要求。实现这个目标的一种方式如示例G05.execution.order.pd(图7.28)所示。
在图7.28a中,音色的连接并没有决定2个延时操作在整理后的代字号对象计算中的先后顺序;delwrite~对象可以在vd~对象之前计算,也可以在其之后计算。如果我们希望确保写入操作在读取操作之前发生,可以如图7.28b所示那样处理,把2个操作放到两个子音色中,通过音频信号把两者连起来,所以第1个子音色必然在第2个子音色之前计算。(子音色中的音频计算是作为一个基本单位完成的,即对于子音色的音频计算来说,整个子音色的内容被看成是一个整体。因此第1个子音色中的每个操作都发生在第2个子音色中的任何一个操作之前。)
744.11
pd pulse
delwrite-Gos dl 10001
|ine-
vd-G05 d1
|pd pulsel
pd delaywriter1
(不好的)
pd delay reader
(好的)
图7.28使用子音色确保非循环网络中延时线的写入发生在读取之前:(a))delwntte一和v-对象可以按"正确"的顺序也可以按"错误"的顺序被执行;(b)delwrite~对象在子音色pd delay-wrlter里,vd-对象在子音色pd delay-reader里。两个子音色之间的音频连接使这对读/写操作的执行顺序被强制到正确的顺序上在本例中,"正确"和"错误"地制作一个梳状滤波器的方法会产生听得出来的区别。
对于少于64个样点的延时,音色的右侧(使用了子音色)给出了正确的结果,但音色的左