电子音乐技术 80


分类:相关阅读 / 「电子音乐技术」

电子音乐技术 80
前一篇:电子音乐技术 79 下一篇:电子音乐技术 81
文本阅读:
  72第3章音频与控制计算
  stripnote:滤除音符关消息。当力度为非0值时,该对象可以让(音高,力度)成对通过;当力度为0值时则阻止消息通过。与notein不同,stripnote 并不直接使用硬件MIDI输入或输出。
  Itrigger,【t】:以从右往左的顺序复制一条消息到输出口,并进行类型转换。创建参数(在本例中为"b"和"f")指明了两个输出口,一个给出"bang"消息,另一个给出"浮点"(也就是数值】。每个创建参数都被创建了一个输出口。输出是按照Pd标准的从右向左顺序出现的。只要接收到一个MIDI音符开消息,该音色的控制对象就会给phasor~对象馈送频率。
  控制幅度(通过line~对象)是更为困难的。当接收到一个音符开消息时,selo对象在右侧输出该力度(因为输入与0不匹配);在除以MIDI力度的最大值127以后,它与时间值100ms一起构成一个消息发送给line~。
  不过,在接收到一个音符关消息时,只有当音符关的音高确实与该乐器正在播放的音高一致时,停止声音才是恰当的。例如,假设接收到的消息是"60127","72127","600"和
  "720"。当音高为72的音符开到达时,音高应该变为72,然后当消息"600"到达时应该被忽略,同时让音符继续播放,直到接收到"720"消息为止。
  为了实现这种处理,我们首先要把力度存储在上方的float对象中。然后,当音高抵达时,它也要被存储(存储在下方的float对象中),随后要检查力度是否为0(tbf的"bang"
  输出口会调取力度,将其发往selo)。如果力度为0,那么接下来就要调取音高并检查它(select 对象)是否与最近接收到的音符开音高一致。只有当这些都相等时(因此"bang"
  将出现在select的左输出口上),消息"01000"才会被送至line~对象。
  练习
  1.以44100Hz为采样速率对音高为A440的乐音进行数字化表示时,可以表示该乐音的多少个泛音?
  2.若你合成出了一个频率为88000Hz的正弦,那么当采样速率为44100赫兹时,你听到的频率是多少?
  3.假设你正在合成一个频率为44100Hz的声音,计算时使用的音频块尺寸为64个样点。
  假设一个控制事件所占用的时间恰好为1s,并使用"尽可能快"更新策略。试问更新实际将会发生在哪个样点上?
  4.以44100Hz采样,我们希望通过每N个样点重复一个固定波形来近似播放一个音高为中央C的乐音。那么N的取值应该为多少?这个声音与"真正"的中央C之间相差了多少音分(第5页)?
  5.两个锯齿波均为单位幅度,频率分别为200Hz和300Hz。两者和的周期是多少?若