当前课程知识点:计算机音乐 >  第五章 一维振动模型 >  5.5 Karplus Strong算法 >  Karplus Strong算法

返回《计算机音乐》慕课在线视频课程列表

Karplus Strong算法在线视频

下一节:管状气鸣乐器模型

返回《计算机音乐》慕课在线视频列表

Karplus Strong算法课程教案、知识点、字幕

同学们大家好

这一节我们将会对梳状滤波器略加修改

让它变成一个更真实的音色合成算法

也就是karplus strong算法

为了了解梳状滤波器所合成的声音

为什么不真实的原因

我们需要观察一下

真实的弹拨乐和刚才我们合成的声音

为什么具有比较大的差别

那么这个工作

我们可以在audacity里面去完成

让我们在audacity里面打开

刚才我们合成的这个声音

Imp_comb.wav

我们听起来是

有种电子声音的感觉的

我们来通过这个分析

频谱分析

来看一下我们生成的这个声音的频谱

那么我们的窗口会选择的大一点

正好我们可以清楚的看到这个

声音的频谱

那么如果我们所愿

这个声音本来是一个

白噪音的输入

那么通过梳状滤波器之后

它变成了具有

整数倍的峰值的谐波的形状

所以它会形成一种乐音的感觉

那么我们再来看一下真实的这个

弹拨乐声音

比如说我们打开

一个吉他

A2这根弦所发出来的声音

同样我们去分析一下它的这个

频谱

那么我们也是用

2048

这样的

窗口大小

我们可以看到它虽然也是

成整数倍关系的这样的一些频谱

但是这个频谱不像我们刚才看到的

频谱一样

刚才的这个频谱是

它的谐波

它的强度是完全平均分布的

我们可以看到

无论到多高频的地方

它的谐波的强度都是

基本上是一样的

真实乐器他的谐波越高频

是越低的一个分布

也就是说它具有这样的谐波消失的现象

那为了实现刚才我们看到的

谐波消失的滤波器

我们需要在梳状滤波器的基础之上

对高频的频段进行削减

那么我们可以看到

越高频的频段

它的振幅

其实是越低的

所以我们需要

通过一个算法

把本来是均匀分布的峰值

变成一个峰值递减的一个结构

那么我们观察这样的结构

其实我们只要在原来的

梳状滤波器的基础之上

再增加一个低通滤波器

就可以实现

高频衰减而低频保持比较高的峰值

那么这就是所谓的karplus strong算法

那么这算法是Kevin Karplus

在Alex Strong的研究基础上

进行修改而得到的算法

karplus strong算法非常的朴素

他只需要在梳状滤波器的延迟后面

再增加一个低通滤波器

就可以实现刚才的谐波消失的现象

也就是可以把原来平均分布的谐波谱

变成递减结构的谐波谱

从而模拟谐波消失的现象

那么这低通滤波器我们可以选择

非常简单的实现

比如说我们使用一个两点均值滤波器

那么前面在讲

频域的信号处理的时候

我们讲过这样的一个

两点求平均它实际上起到了是一个

低通滤波的效果

那么它将会对高频的部分做逐步的衰减

那么我们可以把两点均值滤波器

加到系统框图当中

从而得到karplus strong算法的差分方程

那么这个方程相当于把原来的

YN减L再乘一个系数

这样单独的一项

拆解成YN减L再加上外N减L减1

这两项的一个平均值

让我们简单的计算一下

它的频率响应函数Hz

那么它分子只有一项1

分母有三项

一减去0.5Z的负L次方

再减去0.5的Z负L加一次方

我们其实可以把前面的

有关Z的负L次方进行合并

也就是我们可以把前面两项合起来合成

Z的负L次方

剩下的两项是1/2加上Z的-1次方

这样做一个合并

这样我们就可以从分解的角度

来看这个频率响应函数

那么它相当于是一个梳状滤波器

那么代表的是

Z的负L次方这一项

以及再加上一个两点均值滤波器

是1/2加上Z的-1次方这一项

他们的一个在频域上的相乘得到的一个是

虽然是也有整数倍的谐波的结构

但是

它的高频的谐波是衰减的

那么接下来我们就使用python来验证一下

karplus strong算法的效果

实际上我们只需要在

刚才梳状滤波器的基础之上稍作修改

就可以完成karplus strong算法

那么我们只需要把这个

滤波器进行一个复制

改名为ks

然后其中我们少要一项零

从而

再去增加两项0.5

增加0.5以及

0.5

这样话就完成了刚才的这个

karplus strong滤波器的设计

然后我们在这里能不能把

comb就是梳状滤波器替换成

karplus strong算法

然后我们把这个

数字也进行一个修改

让我们听一下这个结果

我们给它重新的

存一下它的名字

然后运行一下看一下这个结果

我们听一下最后生成的结果

那可以听到现在的结果

就更加真实一点了

如果我们在里面去打开这个声音

Imp_ks这个声音

然后我们可以同样去

看一下它的频谱

我们可以看到比起刚才这频谱

它已经具有了谐波消失的结构了

所以

我们可以听到的声音是具有

谐波消失的这个特点的

目前我们使用的是一个极短的白噪音

来作为输入得到的合成效果

那么过于理想设置

难免会让人听出

这是一个人工合成的声音

那么我们也可以尝试使用

不同的激励信号作为输入

比如说我们在尤克里里面

我们可以让弦不要震动起来

那么简单的做法就是

用两个手指放在弦上面

那么我们用另一个手指去

扣这个两个手指之间的这部分

这样话它的振动就会被

我们放在弦上两手指所止掉

我们听到的是

这样单纯的一个弹拨的声音

那么如果我们把这个单纯的弹拨声音

录制下来

然后用刚才的python程序进行实验的话

我们就可以听到

有更真实的声音

那么接下来我们就使用刚才录制的这个声音

就是

单纯的一个弹拨的声音

不具有弦振动的声音作为一个激励信号

那么作为一个输入

也就是说我们把白噪声替换成

刚才的这个声音

X通过read函数进行读取

读取完之后一方面我们要做一个标准化

除此之外还

我们是一个两秒的信号

这个imp.wav是不足两秒的

所以我们需要在

X的后面补零

np.append

在X的后面补上若干个0

Np点zeros

一共是两秒这么多的

时间再减去X的长度

这样保证这个X能够扩充到两秒

然后输如到这个系统里面

它会产生一个两秒的合成的声音

那么运行一下看看

那么接下来我们再来听一下这个声音

听起来它质感就比刚才的

通过白噪声做输入信号的质感

就要强很多

因为它是用一个

真实的

激励信号来生成的声音

再加入低通滤波器之后

我们就完成了

谐波消失现象的模拟

从而使得合成的声音更加的真实

那在这个模型当中

我们是完全没有考虑到

弦的初始振动是如何完成的

显然使用不同的方式进行演奏

比如

我们可以用手指进行弹奏

我们可以用拨片进行弹奏

甚至我们可以用一个金属对弦进行敲击

我们听到的音色都会不一样

那么一个折中方法就是我们想办法

把刚才的这种

弦不振动的情况的初始震动录下来

那么把这个声音作为输入

进入到karplus strong算法当中

那么我们就可以得到一个更真实的声音

而实际上karplus strong算法

不仅可以模拟弹拨乐的声音

只要满足一维振动方程

那么通过不同的激励信号

我们可以得到不同的音色

下一节我们将会尝试把karplus strong算法

应用到管乐器当中

看一下它的效果

计算机音乐课程列表:

欢迎辞

-欢迎辞

第一章 基本概念

-1.1 计算机音乐导言

--计算机音乐导言

-1.2 计算机音乐课程主要内容

--计算机课程主要内容

-1.3计算机音乐课程资源

--计算机音乐课程资源

-1.4 音乐的基本表达

--音乐的基本表达

-第一章作业

第二章 时域音频处理

-2.1时域音频处理概述

--时域音频处理概述

-2.2 分窗处理1:OLA叠放

--分窗处理1: OLA叠放

-2.3 分窗处理2:音量计算

--分窗处理2 音量计算

-2.4 端点检测

--端点检测

-2.5 振幅包络

--振幅包络

-2.6 音频信号相乘

--音频信号相乘

-2.7 环形调制

--环形调制

-2.8 频率调制

--频率调制

-2.9 频率调制在音乐上的应用

--频率调制在音乐上的应用

-第二章作业

第三章 频域音频处理

-3.1 频谱概述

--频谱概述

-3.2 傅里叶变换

--傅里叶变换

-3.3 短时傅里叶变换

--短时傅里叶变换

-3.4 加法合成

--加法合成

-3.5 线性滤波器

--线性滤波器

-3.6 京剧锣鼓经分析

--京剧锣鼓经分析

-第三章作业

第四章 音色合成

-4.1 音色合成概述

--音色合成概述

-4.2 质点弹簧阻尼模型

--质点弹簧阻尼模型

-4.3 双线性滤波器

--双线性滤波器

-4.4 Modal合成

--Modal合成

-第四章测试

第五章 一维振动模型

-5.1 一维振动模型概述

--一维振动模型概述

-5.2 弦振动模型

--弦振动模型

-5.3 达朗贝尔的行波解

--达朗贝尔的行波解

-5.4 梳状滤波器

--梳状滤波器

-5.5 Karplus Strong算法

--Karplus Strong算法

-5.6 管状气鸣乐器模型

--管状气鸣乐器模型

-第五章作业

第六章 高音跟踪

-6.1 音高跟踪概述

--音高跟踪

-6.2 时域音高跟踪

--时域音高跟踪

-6.3 频域音高跟踪

--频域音高跟踪

-6.4 K歌评分

--K歌评分

-第六章作业

第七章 音频同步

-7.1 音频同步概述

--音频同步概述

-7.2 音乐特征提取 CQT

--音乐特征提取CQT

-7.3 音乐特征提取 Chroma

--音乐特征提取Chroma

-7.4 动态时间规划概述

--动态时间规划概述

-7.5 动态时间规划实现

--动态时间规划实现

-第七章作业

Karplus Strong算法笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。