文本阅读:
82第4章自动化与单音管理
在不同的音高上同时演唱或演奏"。在谈及电子乐器时,多复音这个术语用来指"维护某一过程的多个复本相互并行地运行"。为了保持这种类比性,我们通常把每个复本称为一个"单音(Voice)",不过各个单音并不需要播放出各不相同的声音。
在这种语言中,钢琴是一件多复音乐器,有88个"单音"。钢琴的每一个单音通常都只能演奏一个音高。"用哪个单音来演奏一个给定音高的音符"永远不会成为一个问题,在同
-音高上同时演奏多个音符也不是问题。
很多多复音电子乐器采取了一种更为灵活的方法进行单音管理。大多数软件合成程序(比如Csound)使用了一种动态单音分配方案,因此,其效果是为总谱上的每一个音符创建一个新的单音。在Max或Pd这类面向实时交互单音1|
应用的系统中,会事先分配一个单音库(Voice Bank),需要完成的各种操作(播放音符或是其他任何动作)会在该|单音2单音3|
库中的各个单音之间分配。
图4.8给出了单音库的图示,图中的每个单音都能产生一个输出信号,这些输出被加在一起作为单音库的总输出。各个单音经常需要多个分立的输出;比如,它们可以输出多个通道以便进行单独的声像定位;或者它们可以有输出多个独立的发送效果从而让每个发送通道都有其自己的发圆48日用于多复音合成的单音库送电平。
4.5单音分配
通常都希望能够自动完成对各个单音的选择,使其与各个独立的任务(Task)--比如演奏音符一-相关联。例如,乐手在演奏键盘时事实上是无法选择哪个单音应该与演奏的哪个音符相对应的。为了能自动地进行单音选择,我们需要一个单音分配算法,其用法如图4.9所示。
在配备了合适的单音分配算法以后,控制源本身无须再考虑"哪个单音负责哪个任务"这样的细节;算法音符生成器和音序器常常依靠这种分配算法。另一方面,为乐队编写音乐时经常要明确地指明哪件乐器演奏哪个音符,因此各个音符将以一种适当的方式彼此连接起来。
图4.10展示了一种简单的单音分配算法。这里我们假设该单音库内仅有2个单音,我们现在试图为任务a、b、c、d分配单音。在任务d到来之前都是很平顺的,但随后我们发现没有空闲的单音了(它们被b和c占了)。我们现在需要决定:要么丢掉任务d,要么挪用任