MATLAB调音技巧:包络函数优化sound函数发声

/*仅当作学习笔记,若有纰漏欢迎友好交流指正,此外若能够提供一点帮助将会十分荣幸*/

摘要:在上一篇博文中(利用MATLAB对乐曲进行钢琴演奏【matlab调音_1】),已经简单实现了基于十二平均律的sound函数乐曲演奏,但对音色的处理办法介绍不多,本文介绍几种润色sound函数发声的包络函数。

基本参数设置

利用sound(y,Fs)函数播放声音,其中 Fs代表采样率,设置为Fs=8192(matlab的默认采样率区间为1000-38400,超出这个区间就不能播出声音了)。y代表音频信号矩阵,设f为音符频率,rhythm控制音乐节奏(用于控制每个音符的长度),并且在正弦函数的基础上可得音频信号矩阵y为:

利用包络函数润色发声

为了直观的展示音色处理效果,这里我们依然利用plot函数展示出声音波形,其中原始未经过包络函数处理的声音波形为:图1 未进行包络处理的声音波形

图1 未进行包络处理的声音波形

从图中的波形可以看出,声音几乎没有起伏,声音播放出来人耳也只会听到一段长长的“哔”。这显然是难以接受的,于时在此基础上我们利用包络函数对其进行润色处理。接下来我们将会介绍几种包络函数,并且遵循前文中的基础参数设置。

1 y=kx+b型包络函数

为了细化处理过程,我们将范围缩小到音频信号矩阵y的一个周期范围,其未作处理时

一个周期内生成的波形为

图1.1 未进行包络处理的信号矩阵y的单周期波形

从图中我们可以看到,声音信号遵循着sin函数自己的规律上下起伏变化,这并不符合从发声时声音最强并逐渐减弱的规律。因此,我们引入一个函数来辅助其“衰减”,首先展示y=kx+b型包络函数。

图1.2 y=kx+b型包络函数

 从图1.2中的”pic2”可以看到,相比于原始的sin函数,信号y已经有一个随时间衰减的过程了。

经过y=kx+b型包络函数处理的声音波形变为:

图1.3 y=kx+b型包络函数

与图1相比,可以看到y=kx+b型包络函数处理后的声音波形随时间呈线性减弱。

2 四段直线包络函数

四段直线包络方法,能保证前一个音符能量消失后,才发出后续音符,这样就能有效消除,音符交替时的轻微杂音。四段直线包络方法实现了每个乐音都经过“冲激”“衰减”、“持续”、消失”四个音强变化阶段。由下图可以看出四段直线段构成一次包络,因此只要确定了每段线段的前后端点座标,即可用端点座标求出直线方程,直线方程可以用斜截式通式写出,该四段直线包络技

术将作用于每个音符,所以可用简单的循环,逐个对原有音符的正弦波信号进行包络,最后完成对所有音符的包络。

图2.1 四段直线包络函数

对原始sin函数进行四段包络函数处理后的声音波形为:

图2.2 四段直线包络函数处理后的原始sin函数波形

 从图中可以看出,相比于图1.2中y=kx+b型包络函数简单粗暴的衰减,四段包络函数处理办法还原了乐音的“冲激”“衰减”、“持续”、消失”四个音强变化过程。

图2.3 四段函数包络处理后的声音波形 

3 exp(-x)型包络函数

在包络函数的处理中最常见的包络函数为指数衰减,最简单的衰减方式是对每个音乘以exp(-x)因子。

图3.1 exp(-x)包络函数处理后的声音波形

对原始sin函数进行四段包络函数处理后的声音波形为:

图3.2 exp(-x)包络函数处理后的声音波形

  这种处理办法不管是什么音符,都采用相同的衰减速度,通过人耳判听,可以发现噪音减弱但并没有消除,所以播放的音乐效果不是很好,同时还感觉音乐起伏性不强。

4 exp(-kx/rhythm)型包络函数

针对exp(-x)型包络函数处理方式的缺点,根据乐音音长标识来确定衰减速度的快慢,于是我们引入rhythm控制节奏。音长越长的乐音哀减越慢,音长越短的乐音衰减越快。

图4.1 exp(-kx/rhythm)型包络函数处理后的声音波形

对原始sin函数进行四段包络函数处理后的声音波形为: 

5 x/exp(-kx/rhythm)型包络函数

x/exp(-kx/rhythm)型

对原始sin函数进行四段包络函数处理后的声音波形为:

图5.2 x/exp(-kx/rhythm)型包络函数处理后的声音波形

x/exp(-kx/rhythm)型包络函数处理后的声音波形相比其它更加圆润,最终的效果也更好。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空