文本阅读:
3.3控制流55
我们需要一种描述信息如何在控制计算和音频计算之间流动的方法,为此我们要基于控制流(Control Stream)的概念。控制流仅仅就是一组数字--也可能是空的一-,它们体现为控制计算的一个结果,既可以出现在等间隔分布的逻辑时间上,也可以出现在非规则分布的逻辑时间上。最简单的可行控制流就是一个不包含任何其他信息的时间序列(Time Sequence):
.....【0】,【1】,f【2】...
虽然时间值最好是以样点为单位给出,但这些值却是未经量化的,它们可以是任意实数。我们确实需要它们以非递增顺序排列:
...≤【0】≤】≤【2】≤...
序列中的每一项被称为一个事件(Event)。
控制流可以如图3.3所示。图中用一条数值线表示时间,用一系列箭头指向与每个事件相关的时间点。图中所示的控制流没有任
何数据(它只是一个时间序列)。如果我们时间想在控制流中显示数据,我们需要将其写
图3.3一个控制流作为一系列时间点的图形化表示在每个箭头的底部。
数值控制流(Numeric Control Stream)是每个时间点包含一个数值的控制流,因此其形式是一系列有序数对:
....(【0】,x【O】),(【1】,1】)...
式中的【n】为各个时间点,x【n】为信号在这些时间点上的取值。
一个数值控制流大致与一个"MIDI控制器"类似。MIDI控制器的数值可以非规律地改变,例如在一个物理控制器被演奏者移动时。其他控制流的来源可能有更高的变化速率和/
或更高的变化精度。另一方面,一个时间序列可能是一系列踏板的触碰,它(尽管在MIDI中已经实现)不会被看作是各个数值(Values),而仅仅是次(Times)。数值控制流与音频信号类似,因为两者都只不过是随时间变化的一堆数值。不过,音频信号是以一个固定的速率出现的(因此无需为每个样点指明时间的取值),而控制流的出现则是无法预测的--可能是均匀出现的,可能是非均匀出现的,也可能永远不出现。
现在我们看一下在把数值控制流转换成音频信号时会发生什么。像以前一样,我们将块尺寸定为B=4。我们考虑用周期为5.5的方波信号作为控制信号:
(2,1),(4.75,0),(7.5,1),(10.25,0),(13,1)...
并演示将其转换为一个音频信号的3种方法。图3.4a所示为最简单同时也是尽可能快的转换。
输出中的每个音频样本仅仅反映了最新的控制信号的数值。因此由点(2,1)得出样点0到样点3(因为块尺寸的原因,所以会在逻辑时间4处进行计算)的值为1。接下来的4个样点取值也为1,因为在(4.75,0)和(7.5,1)这2个点中,最新的点的取值仍为1。