文本阅读:
18第1章正弦、幅度与频率
新的轨迹变化。
可能会有两个消息同时到达line~,或是两者相互之间的时间间隔非常近,以至于在此期间没有任何DSP计算发生;在这种情况下,较早达到的消息不起任何作用,因为line~来不及跟随第1条消息改变输出,当前的输出(没有改变)就被用作第2条消息所指定的线段的起点了。这条规则有一个例外:如果line~接收到了一个值为0的时间,那么其输出值将会立即被设置为新的数值,接下来的线段也将会以新的数值为起点;因此,发送两对参数,第1对的时间数值为0,而第2对的时间数值为非零,这样就能分别指明line~输出线段的起点值和终点值。
对line~右输入口的处理方式并非是Pd对象的惯常处理方式,因为它会丢弃旧值;只有单一数值的消息--比如"0.1",总会等价于一对数值"0.10"。几乎所有其他对象都会为右输入口保留原先的数值,而不是将其重置为0。
示例A04.line2.pd用图形展示了line~对象的输出。通过使用多种消息块,你就可以重建出如图1.6所示的效果。
1.9.4大三和弦
示例A05.output.subpatch.pd中的有效部分如图1.12c所示,这里有3个正弦,其频率比为4:5:6,因此图中下方2个正弦的音程间隔为大三度,上方2个正弦之间为小三度,顶端和底端正弦之间为五度。最低正弦的频率为440Hz,其音高等于中央C上方的A,即MIDI69。
其他两个正弦的音高分别近似为上方4个半音和7个半音。3个正弦具有一样的幅度。
本例中使用了一个名为output~的新对象进行幅度控制。它不是Pd内置的对象,它本身是一个Pd音色,以文件形式存在,名为"output.pd"(你可以打开该对象块的属性菜单并选择"open"查看其内部结构)。它有2个控制,一个以dB为单位进行幅度控制(100意味着"单位增益"),另一个是"静音"按钮。在你设置输出电平时会自动打开Pd的音频处理--一般来说这可能不是最好的行为方式,但对于这些示例文件来说它是合适的。将一个Pd音色作为一个对象块嵌入到另外一个音色中的运行机制将在章节4.7中讨论。
1.9.5在频率和音高之间进行转换
示例A06.frequency.pd(图1.13)展示了将音高转换为频率单位的Pd对象(mtof,意为"MIDI到频率"),以及相反的转换ftom。我们还会介绍另外两个对象类,send和receive。
mtof,ftom】:根据音高/频率转换公式(第5页)进行MIDI音高与频率单位之间的