文本阅读:
40第2章波表与采样器
须为0提供额外的样点(从N处复制),同样也要为N+1和N+2提供额外的样点(从1和2处复制),从而制作出一个长度为N+3的波表。对于上面提到的那个正弦,波表应该包含:
x【n】=c0s(2x(n-1)/N),n=0.....,N+2
2.6示例
2.6.1波表振荡器
图2.12所示为示例B01.wavetables.pd,它实现了一个波表振荡器,可以从一个名为
"table10"的波表进行回放。这里有两个新的Pd原语。第一个是波表本身,它位于图的右侧。
你可以在该波表上通过"鼠标点击"改变其形状并听到声音变化的结果。Pd能够自动计算出具有指定谐波幅度的波表,通常这要比手绘波形更好。这种功能没有在图中画出,但在该音色中是有演示的。你也可以从(文本或声音)文件中读入波表或是把波表写入(文本或声音)文件,这样就能与其他程序进行数据交换。另外一个新东西是一个对象类:
tabosc4~:波表振荡器。"4"指明该类使用了4点(3次)内插。在本例中,波表的名字"table10"是作为tabosc4~对象的创建参数被指定的。(你也可以通过发送适当的消息给该对象来动态地在各个波表之间切换。)table10
mtof
tabosc4-tablel0
(输出)
.2.12 波表振荡器:B01.wavetables.pd tabosc4~所用波表的周期必须为2的幂次。但如上所述,在波表的两端必须有3个额外的样点用于折回。因此允许使用的波表长度的形式为20+3,比如131、259、515等。
波表振荡器并非只能作为音频振荡器。音色B02.wavetable.FM.pd(未在这里绘出)使用了一对相互串联的波表振荡器。第1个振荡器的输出用作第2个振荡器的输入,因此能够对其随时间周期性变化的频率进行控制。