查看“︁卡普拉斯-斯特朗弦乐合成”︁的源代码
←
卡普拉斯-斯特朗弦乐合成
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
'''卡普拉斯-斯特朗算法(Karplus-Strong Algorithm, K-S Algorithm)'''是一种物理建模合成方法,它通过对一个短的起始波形循环地进行“滤波-延迟”来模拟[[擊弦樂器|击弦]]或[[撥弦樂器|拨弦乐器]],以及某些类型的[[打击乐器]]的声音。这种技术可以看作是在一个有[[梳状滤波器]]的[[反馈回路]]进行[[减法合成]];如果将存储信号的延迟块视作[[波表]]的话,也可以被看作是最简单的一类波表变换算法,即“数字波导合成”<ref>{{Cite web|title=The Digital Waveguide Oscillator {{!}} Physical Audio Signal Processing|url=https://www.dsprelated.com/freebooks/pasp/Digital_Waveguide_Oscillator.html|access-date=2023-07-09|website=www.dsprelated.com|archive-date=2023-01-31|archive-url=https://web.archive.org/web/20230131232552/https://www.dsprelated.com/freebooks/pasp/Digital_Waveguide_Oscillator.html|dead-url=no}}</ref>。 [[Alexander Strong]]发明了该算法,而Kevin Karplus首先分析了它的工作原理。他们一起开发了算法的软件和硬件实现,包括定制的[[超大规模集成电路|VLSI]]芯片。他们将算法命名为“Digitar”合成,意为“数字的(Digital)”与“吉他(Guitar)”。 == 产生声音 == 概括而言,卡普拉斯-斯特朗算法由“激励-延迟-滤波-循环”四步组成,具体过程如下:[[File:Karplus-strong-schematic.svg|center]] # 生成一个''L''样本长度的短激励信号。在最初的算法中,这是一个[[白雜訊|白噪声]]脉冲,但可以使用任何具有丰富谐波的信号(例如快速的正弦波[[啁啾]]或扫频,或者单周期的[[锯齿波]]或[[方波]])作为激励信号,这一信号决定了最终的音色。 # 直接输出激励信号,同时逐样本地放入同样长度为''L''个样本的暂存块(队列形式,先入先出)中。 # 暂存块中的信号通过一个[[低通滤波器|滤波器]],该滤波器的[[增益]]在所有频率下都必须小于 1,以保持反馈环路的稳定。在原始算法中,“滤波”是通过对两个相邻样本求平均实现的,这种实现很简单,仅需要移位和加法运算,无需乘法<ref>{{Cite web|title=Karplus-Strong算法:初探声音的物理建模合成(附Python实现)|url=https://zhuanlan.zhihu.com/p/92577332|access-date=2023-07-09|website=知乎专栏|language=zh}}</ref>。滤波器的特性决定了衰减后音调的谐波结构,一般实现中使用低通滤波器,这样声音的高频分量更快地损失,与弦振动的衰减情况相似。 # 滤波后的结果送往输出,同时也用以覆盖暂存块中的信号,接下来将这个新信号再次通过滤波器,如此循环。 下面是利用Karplus-Strong算法合成的中国民歌《茉莉花》片段,直观地展示了调整参数对声音带来的影响。 前四个乐句展示了不同激励信号对音色的影响,选用的激励信号依次为[[粉红噪声]]-白噪声-正弦波扫频-单个周期方波;最后一部分在激励信号不变的情况下从低到高调整滤波器[[截止頻率|截止频率]],展示了滤波器频率对音色的影响。 [[File:茉莉花-KS演示.opus|茉莉花-KS演示]] == 改变音调 == 所得信号的[[基本頻率|基频]](最低非零泛音)是延迟和滤波器的组合在相位响应为<math>-2\pi</math>的最低频率,也就是说,暂存块和滤波器组成的系统中总延迟时间的确定了所得到信号的基频。基频''F'' <sub>0</sub>所对应的[[群延迟与相位延迟|相位延迟]]''D''可以由''D'' = ''F''<sub>''s''</sub>/''F''<sub>0</sub> 确定,其中''F''<sub>''s''</sub>是采样频率。 虽然数字延迟器的大小是采样周期的整数倍,但可以通过[[插值|插值滤波器]]提供延迟,从而获得非整数倍延迟,进而微调频率。[[无限冲激响应|IIR]]和[[有限冲激响应|FIR]]滤波器都可以作为此用,但 FIR 滤波器的优势在于,所需延迟随时间变化时可以抑制瞬变。 最基本的非整数倍延迟实现方法是两个样本之间的[[线性插值]](例如, ''s'' (4.2) = 0.8 ''s'' (4) + 0.2 ''s'' (5))。如果相位延迟随频率变化,[[谐波]]相对于基频可能会变尖或变平。原始算法对两个相邻样本使用相等的权重,因为这可以在没有乘法硬件的情况下实现,从而允许极其廉价的实现。 1983 年介绍该算法的论文中说明,[[Z轉換|Z 变换]]分析可用于更精确地获取谐波的音调和衰减时间<ref name="KarplusStrong1983" />。 保持缓冲周期(即暂存块的长度)恒定会产生类似于弦或铃的振动,而在短暂的激励信号后急剧增加缓冲周期则会产生类似鼓的声音。 == 算法的改进 == 因为在一些情况下合成的音色类似于拨弦,Alex Strong和Kevin Karplus认为K-S算法某种意义上属于弦振动的物理建模,他们试着证明这一算法表示了弦的振动方程,但证明没有完成<ref name="KarplusStrong1983">{{Harvnb|Karplus|Strong|1983}}</ref>。 Julius O. Smith III <ref>{{Cite web|title=JOS Home Page|url=https://ccrma.stanford.edu/~jos/|access-date=2023-05-31|website=ccrma.stanford.edu|archive-date=2023-12-06|archive-url=https://web.archive.org/web/20231206213359/https://ccrma.stanford.edu/~jos/|dead-url=no}}</ref>认识到,当将 K-S 算法视为数字滤波器时,其[[传递函数]]与振动弦的传递函数一致,滤波器对应于弦振动过程中的能量损失。 后来他将 K-S 算法推广为数字波导合成(用于模拟弦、管和膜中的声波的算法)中的一个特例<ref name="JaffeSmith1983" />。 K-S 算法的第一次扩展和推广被称为扩展 Karplus-Strong (EKS) 算法,最初于 1982 年在意大利威尼斯举行的国际计算机音乐会议上发表在一篇论文中{{Citation needed|date=June 2021}},之后于 1983 年 David A. Jaffe 和 Julius O. Smith 在''计算机音乐杂志 (Computer Music Journal)'' 上发表的题为“Extensions of the Karplus Strong Plucked String Algorithm(卡普拉斯-斯特朗拨弦算法的扩展)”的文章<ref name="JaffeSmith1983">{{Harvnb|Jaffe|Smith|1983}}</ref>,以及 Smith 的博士/电子工程师论文中做了更详细的解释。 Alex Strong开发了一种用于弹拨合成的高级波表修改方法,但仅作为专利发布。 <ref>{{Cite web|title=inventor:(Alexander R. Strong)|url=https://patents.google.com/?inventor=Alexander+R.+Strong|access-date=2019-07-17|website=Google Patents|archive-date=2023-04-16|archive-url=https://web.archive.org/web/20230416112211/https://patents.google.com/?inventor=Alexander+R.+Strong|dead-url=no}}</ref>{{Clarify|reason=Which of these patents?|date=2019年7月}} == 使用该技术的产品 == 算法在1987年获得了专利<ref>{{Cite web|title=US4649783A Wavetable-modification instrument and method for generating musical sound|url=https://worldwide.espacenet.com/patent/search?q=pn=US4649783A|access-date=2023-07-09|website=worldwide.espacenet.com|archive-date=2023-07-09|archive-url=https://web.archive.org/web/20230709122017/https://worldwide.espacenet.com/patent/search?q=pn=US4649783A|dead-url=no}}</ref>,此后专利首先被授权给 Mattel Electronics,但公司倒闭前没有开发出任何使用该算法的产品。此后,专利被授权给了一家由一些Mattel前高管创立的初创公司。受限于资金,它们没有完成开发,也没有产品推向市场。最终,雅马哈通过斯坦福大学的 Sondius 专利包获得了该专利的许可。虽然不清楚是否由采用该算法的硬件被出售,但有许多未经过专利许可的软件实现已经发布。 有许多遵循Karplus-Strong合成基本原则(尽管可能在具体算法上有区别)的硬件合成模块已经被商业化地制造。这些模块的合成方法都可以概括为:通过一个倒置的比例缩放控制系统,把一块很小的样本通过延迟-滤波的方法变成[[十二平均律|平均律]]下的音调,而音高由[[控制电压]]或者[[MIDI|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)''中的女声合唱和录音带)中继续探索了算法的音乐和技术可能性。 == 参考 == ; 引文 {{Reflist}} ; 参考书目 * {{Cite journal |last=Karplus |first=Kevin |last2=Strong |first2=Alex |year=1983 |title=Digital Synthesis of Plucked String and Drum Timbres |journal=[[Computer Music Journal]] |publisher=MIT Press |volume=7 |issue=2 |page=43–55 |doi=10.2307/3680062 |jstor=3680062}} * {{Cite journal |last=Jaffe |first=David A. |last2=Smith |first2=Julius O. |year=1983 |title=Extensions of the Karplus-Strong Plucked String Algorithm |url=http://static1.1.sqspcdn.com/static/f/1195073/15927045/1326030818550/Jaffe-Smith-Extensions-CMJ-1983.pdf?token=jBAicC7FH9EIwp3LPLGs7NE%2BOjo%3D |journal=[[Computer Music Journal]] |publisher=MIT Press |volume=7 |issue=2 |page=56–69 |doi=10.2307/3680063 |jstor=3680063 |access-date=2023-07-09 |archive-date=2019-12-12 |archive-url=https://web.archive.org/web/20191212201016/http://static1.1.sqspcdn.com/static/f/1195073/15927045/1326030818550/Jaffe-Smith-Extensions-CMJ-1983.pdf%3Ftoken%3DjBAicC7FH9EIwp3LPLGs7NE%252BOjo%253D |dead-url=yes }} * {{Cite thesis |degree=PhD/EE |last=Smith |first=Julius O. |date=1983 |title=Techniques for Digital Filter Design and System Identification, with Application to the Violin |publisher=Stanford University}} * {{Cite patent|country=US|number=4649783|title=[https://patents.google.com/patent/US4649783A Wavetable Modification Instrument and Method for Generating Musical Sound]|status=application|pubdate=1987-03-17|fdate=1984-05-24|invent1=Alexander R. Strong, Kevin J. Karplus|<!-- class = G10H7/02 -->}} * {{Cite patent|country=US|number=4622877|title=[https://patents.google.com/patent/US4622877A Independently controlled wavetable-modification instrument and method for generating musical sound]|status=application|pubdate=1986-11-18|invent1=Alexander R. Strong|<!-- class = G10H7/04 -->}} * {{Cite book|last=Moore|first=F. Richard|date=1990|title=Elements of Computer Music|url=https://archive.org/details/elementsofcomput0000moor|location=Upper Saddle River|publisher=Prentice-Hall|isbn=0-13-252552-6}} == 外部链接 == * [http://ccrma.stanford.edu/~jos/pasp/Karplus_Strong_Algorithm.html Karplus-Strong 算法] {{Wayback|url=http://ccrma.stanford.edu/~jos/pasp/Karplus_Strong_Algorithm.html |date=20060218120338 }} * [http://ccrma.stanford.edu/~jos/Mohonk05/Karplus_Strong_Algorithm.html 声音示例] {{Wayback|url=http://ccrma.stanford.edu/~jos/Mohonk05/Karplus_Strong_Algorithm.html |date=20110514090417 }} * [http://www.freesound.org/browse/tags/karplus-strong/ CC 许可下的更多声音示例] {{Wayback|url=http://www.freesound.org/browse/tags/karplus-strong/ |date=20230419174713 }} * [http://lab.andre-michelle.com/karplus-strong-guitar 实现吉他的 Flash 应用程序] {{Wayback|url=http://lab.andre-michelle.com/karplus-strong-guitar |date=20231128162404 }} * [http://amid.fish/javascript-karplus-strong 上述应用程序的 HTML5 端口] {{Wayback|url=http://amid.fish/javascript-karplus-strong |date=20191222083532 }} * [http://www.jaffe.com David A. Jaffe 的音乐,包括声音示例] {{Wayback|url=http://www.jaffe.com/ |date=20161024034542 }} * [https://www.bilibili.com/video/av15630389/ 合成算法的演示视频] {{Wayback|url=https://www.bilibili.com/video/av15630389/ |date=20230709122017 }} {{声音合成类型}} [[Category:声学]] [[Category:声音合成类型]] [[Category:数字信号处理]]
该页面使用的模板:
Template:Citation needed
(
查看源代码
)
Template:Cite book
(
查看源代码
)
Template:Cite journal
(
查看源代码
)
Template:Cite patent
(
查看源代码
)
Template:Cite thesis
(
查看源代码
)
Template:Cite web
(
查看源代码
)
Template:Clarify
(
查看源代码
)
Template:Harvnb
(
查看源代码
)
Template:Reflist
(
查看源代码
)
Template:Wayback
(
查看源代码
)
Template:声音合成类型
(
查看源代码
)
返回
卡普拉斯-斯特朗弦乐合成
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息