跳转到内容

卡普拉斯-斯特朗弦乐合成

维基百科,自由的百科全书

卡普拉斯-斯特朗算法(Karplus-Strong Algorithm, K-S Algorithm)是一种物理建模合成方法,它通过对一个短的起始波形循环地进行“滤波-延迟”来模拟击弦拨弦乐器,以及某些类型的打击乐器的声音。这种技术可以看作是在一个有梳状滤波器反馈回路进行减法合成;如果将存储信号的延迟块视作波表的话,也可以被看作是最简单的一类波表变换算法,即“数字波导合成”[1]

Alexander Strong发明了该算法,而Kevin Karplus首先分析了它的工作原理。他们一起开发了算法的软件和硬件实现,包括定制的VLSI芯片。他们将算法命名为“Digitar”合成,意为“数字的(Digital)”与“吉他(Guitar)”。

产生声音

[编辑]

概括而言,卡普拉斯-斯特朗算法由“激励-延迟-滤波-循环”四步组成,具体过程如下:

  1. 生成一个L样本长度的短激励信号。在最初的算法中,这是一个白噪声脉冲,但可以使用任何具有丰富谐波的信号(例如快速的正弦波啁啾或扫频,或者单周期的锯齿波方波)作为激励信号,这一信号决定了最终的音色。
  2. 直接输出激励信号,同时逐样本地放入同样长度为L个样本的暂存块(队列形式,先入先出)中。
  3. 暂存块中的信号通过一个滤波器,该滤波器的增益在所有频率下都必须小于 1,以保持反馈环路的稳定。在原始算法中,“滤波”是通过对两个相邻样本求平均实现的,这种实现很简单,仅需要移位和加法运算,无需乘法[2]。滤波器的特性决定了衰减后音调的谐波结构,一般实现中使用低通滤波器,这样声音的高频分量更快地损失,与弦振动的衰减情况相似。
  4. 滤波后的结果送往输出,同时也用以覆盖暂存块中的信号,接下来将这个新信号再次通过滤波器,如此循环。

下面是利用Karplus-Strong算法合成的中国民歌《茉莉花》片段,直观地展示了调整参数对声音带来的影响。 前四个乐句展示了不同激励信号对音色的影响,选用的激励信号依次为粉红噪声-白噪声-正弦波扫频-单个周期方波;最后一部分在激励信号不变的情况下从低到高调整滤波器截止频率,展示了滤波器频率对音色的影响。

改变音调

[编辑]

所得信号的基频(最低非零泛音)是延迟和滤波器的组合在相位响应为的最低频率,也就是说,暂存块和滤波器组成的系统中总延迟时间的确定了所得到信号的基频。基频F 0所对应的相位延迟D可以由D = Fs/F0 确定,其中Fs是采样频率。

虽然数字延迟器的大小是采样周期的整数倍,但可以通过插值滤波器提供延迟,从而获得非整数倍延迟,进而微调频率。IIRFIR滤波器都可以作为此用,但 FIR 滤波器的优势在于,所需延迟随时间变化时可以抑制瞬变。

最基本的非整数倍延迟实现方法是两个样本之间的线性插值(例如, s (4.2) = 0.8 s (4) + 0.2 s (5))。如果相位延迟随频率变化,谐波相对于基频可能会变尖或变平。原始算法对两个相邻样本使用相等的权重,因为这可以在没有乘法硬件的情况下实现,从而允许极其廉价的实现。

1983 年介绍该算法的论文中说明,Z 变换分析可用于更精确地获取谐波的音调和衰减时间[3]

保持缓冲周期(即暂存块的长度)恒定会产生类似于弦或铃的振动,而在短暂的激励信号后急剧增加缓冲周期则会产生类似鼓的声音。

算法的改进

[编辑]

因为在一些情况下合成的音色类似于拨弦,Alex Strong和Kevin Karplus认为K-S算法某种意义上属于弦振动的物理建模,他们试着证明这一算法表示了弦的振动方程,但证明没有完成[3]。 Julius O. Smith III [4]认识到,当将 K-S 算法视为数字滤波器时,其传递函数与振动弦的传递函数一致,滤波器对应于弦振动过程中的能量损失。 后来他将 K-S 算法推广为数字波导合成(用于模拟弦、管和膜中的声波的算法)中的一个特例[5]

K-S 算法的第一次扩展和推广被称为扩展 Karplus-Strong (EKS) 算法,最初于 1982 年在意大利威尼斯举行的国际计算机音乐会议上发表在一篇论文中[來源請求],之后于 1983 年 David A. Jaffe 和 Julius O. Smith 在计算机音乐杂志 (Computer Music Journal) 上发表的题为“Extensions of the Karplus Strong Plucked String Algorithm(卡普拉斯-斯特朗拨弦算法的扩展)”的文章[5],以及 Smith 的博士/电子工程师论文中做了更详细的解释。

Alex Strong开发了一种用于弹拨合成的高级波表修改方法,但仅作为专利发布。 [6][需要解释]

使用该技术的产品

[编辑]

算法在1987年获得了专利[7],此后专利首先被授权给 Mattel Electronics,但公司倒闭前没有开发出任何使用该算法的产品。此后,专利被授权给了一家由一些Mattel前高管创立的初创公司。受限于资金,它们没有完成开发,也没有产品推向市场。最终,雅马哈通过斯坦福大学的 Sondius 专利包获得了该专利的许可。虽然不清楚是否由采用该算法的硬件被出售,但有许多未经过专利许可的软件实现已经发布。

有许多遵循Karplus-Strong合成基本原则(尽管可能在具体算法上有区别)的硬件合成模块已经被商业化地制造。这些模块的合成方法都可以概括为:通过一个倒置的比例缩放控制系统,把一块很小的样本通过延迟-滤波的方法变成平均律下的音调,而音高由控制电压或者midi信号决定。尽管一些手册中使用了“Karplus-Strong合成”的术语,但并未特别注明发明者姓名。

支持Karplus-Strong合成的硬件合成组件包括 Moog Clusterflux 108M、Mutable Instruments 的 Elements 和 Rings、4ms Company Dual Looping Delay、2HP Pluck、Make Noise Mimeophon、 Arturia MicroFreak 以及 Strymon Starlab。

音乐中的应用

[编辑]

该算法首次在音乐中被使用是在 1981 年由David A. Jaffe创作的作品May All Your Children Be Acrobats中为八把吉他、中音女高音和计算机生成的立体声磁带配乐。 Jaffe在Silicon Valley Breakdown(1982)中依靠该算法生成了拨弦乐,并在后来的作品(如Telegram to the President(1984) 中的弦乐四重奏,以及Grass (1987)中的女声合唱和录音带)中继续探索了算法的音乐和技术可能性。

参考

[编辑]
引文
  1. ^ The Digital Waveguide Oscillator | Physical Audio Signal Processing. www.dsprelated.com. [2023-07-09]. (原始内容存档于2023-01-31). 
  2. ^ Karplus-Strong算法:初探声音的物理建模合成(附Python实现). 知乎专栏. [2023-07-09] (中文). 
  3. ^ 3.0 3.1 Karplus & Strong 1983
  4. ^ JOS Home Page. ccrma.stanford.edu. [2023-05-31]. (原始内容存档于2023-12-06). 
  5. ^ 5.0 5.1 Jaffe & Smith 1983
  6. ^ inventor:(Alexander R. Strong). Google Patents. [2019-07-17]. (原始内容存档于2023-04-16). 
  7. ^ US4649783A Wavetable-modification instrument and method for generating musical sound. worldwide.espacenet.com. [2023-07-09]. (原始内容存档于2023-07-09). 
参考书目
  • Smith, Julius O. Techniques for Digital Filter Design and System Identification, with Application to the Violin (PhD/EE论文). Stanford University. 1983. 

外部链接

[编辑]