电子音乐技术 146


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

电子音乐技术 146
前一篇:电子音乐技术 145 下一篇:电子音乐技术 147
文本阅读:
  6.5示例139
  过了由cos~对象定义的正半周。
  口
  bell-curve
  在bbl
  品tl(
  EF1
  【611999 tff日
  expr($f1-100)/25|
  lexpr exp(-$f1*sf1)
  tabwrite bell-curvel
  【6.18 为图6.17填写波表
  半正弦的幅度随后被调制指数(就是带宽商数0。/o)所调整。波表("bell-curve【钟形曲线】")存储的是一个非归一化的高斯曲线,其范围为-4到4,采样点为200个(每个单位25个样点),因此波表的中央(样点100)对应的是钟形曲线的中央谱峰。在-4到4区间之外,高斯曲线的取值很小,可以忽略不计。
  图6.18所示为如何准备该高斯波表。这里需要一个新的控制对象:
  【until:当左输入口即"开始"输入口接收到"bang"消息时,它将反复地按顺序输出多个"bang"消息(在各个bang消息之间没有经行时间),直到右输入口即"停止"输入口接收到"bang"消息为止。用于停止的"bang"消息必须以某种方式由until~对象的输出口发起;否则,输出口将一直发送"bang"消息,逼走可能打断循环的任何对象。
  在本例中,由一个until对象驱动的循环从0计数到199,包含端点在内。循环的计数由"f"和"+1"对象维护,两者相互将输出馈送给对方。但由于"+1"对象的输出进入到
  "f"的右输入口,因此其结果(大于1)将在"f"下一次接收到"until"的bang消息时才会出现在"f"处。这样,来自"until"的每个"bang"消息都会让数值增加1。
  循环以何种顺序开始是有关系的:上部的"tbb"对象(即"trigger【触发】bang bang"
  的缩写)必须先发送0给"f",即对其进行初始化,然后再设置until对象让它发送"bang"消息,让数值开始递增,直到被停止。为了当数值达到199时让其停止,由一个select对象检查该数值,当它看到两者匹配时,就向until对象的"停止"输入口发送"bang"消息。
  其间,对于由"f"对象产生的每个在0到199之间的数字,我们创建一个有序消息对发送给tabwrite对象。第一个消息就是指数本身,从0到199,它被送到右输入口。然后对于左输入口,第一个expr对象把指数调整至-4到4区间(之前位于0到199之间),然后第二个expr 对象计算出高斯函数的值送到左输入口。
  在该音色中,我们没有完全解决在适当的时间对中心频率商数进行更新的问题。只要载