《信号与系统》实验-使用 MATLAB 进行生成数字音乐、生成乐器音乐、音乐处理与添加音乐特效(题解)

简介: 《信号与系统》实验-使用 MATLAB 进行生成数字音乐、生成乐器音乐、音乐处理与添加音乐特效(题解)

实验方案

重难点技术.


1.基波频率和音高的推算


实现思路:

乐音是指发音物体有规律地振动而产生的具有固定音高的音。基波频率是指声音中使声音达到最强的特定的最低频率。音乐是基波频率和谐波频率合成的,从音乐中首先要准确提取出每个乐音的基波频率,以便推算其他各个乐音的相对的音高频率。

比如标准F调的do音基波频率是174.610Hz,按照十二平均律的算法112i+1i2 ff=×,7个乐音频率对应基波频率的倍数依次是:1、21/6、21/3、25/12、 27/12、23/4、211/12、2,即174.610Hz、195.993Hz、219.994Hz、233.076Hz、261.619Hz、293.657Hz、329.619Hz。


1.通过FFT得到频域波形.


相关原理:


利用傅里叶分析(DFT)可以对频率构成、频率宽度等特征进行分析。


因为计算机只能处理离散的有限 长的序列数据,所以计算机进行DFT时使用的输入值是N个具体的采样值,也就是时域的信号值,输 入采样点的数量N决定了转换的计算规模。


而快速傅里叶变换(FFT)是离 散傅里叶变换DFT的快速算法,可以加快计算机的处理速度。根据采样定理, FFT能分辨的最高频率为采样频率的一半(即Nyquist频率),函数FFT返回值是以Nyqusit 频率为轴对称的。我们通过截取结果中小于等于Nyquist频率的前一半图像,从而得到相关的频域波形。


实现代码:




实验效果:




可见,信号经过FFT后的频谱图可以采用N/2+1个点的信息, x 轴是对应于时间序列的频率序列, x 轴最大的频率是FS/2, y 轴是幅值,是FFT后所得复数的模。


2.回响效果.


相关原理:


回响的说明:即对音乐信号进行“延时”+“叠加”。


(注:人耳能分辨出的声音延迟至少是0.1s,因此,最小延迟量不能小于0.1s。)


具体步骤如下:


1).暂停当前音乐;


2).从下拉菜单中获取所需延迟的采样点数num;


3).利用矩阵置零产生延迟信号z;


4).将原始信号y与延迟信号z相加,得到回响信号;


5).继续当前播放。


实现代码:




3.基波频率和音高的推算 .


实现思路:


乐音是指发音物体有规律地振动而产生的具有固定音高的音。基波频率是指声音中使声音达到最强的特定的最低频率。音乐是基波频率和谐波频率合成的,从音乐中首先要准确提取出每个乐音的基波频率,以便推算其他各个乐音的相对的音高频率。


比如标准 F调的do音基波频率是174.61Hz, 按照十二平均律的算法fi+1=fi*2 (1/12),7个乐音频率对应基波频率的倍数依次是:1、21/6、21/3、25/12、 27/12、23/4、211/12、2,即174.610、195.993、219.994、233.076、261.619、293.657、329.619。


3.通过单音节频域特性求泛音列.


相关原理:


乐器的音高通常和谐波震荡有关。譬如弦乐器或管乐器可对空气震荡以产生声音,并且可同时以不同的频率震荡,以发出不同频率的声音。而根据驻波的原理可知这些频率大多数呈现倍数关系,而这些不同频率的声波即组成泛音列。


我们先对时域信号进行傅里叶变换,得出频域特性,再通过设置最高频率和开窗的宽度,得到各个N倍频的振幅,最后通过归一化得到该乐器的泛音列。


实现代码:


得到频域特性:



求泛音列:



实验效果:


(1)频域图形:



(2)所求泛音列:




4.回响效果


相关原理:

回响的说明:即对音乐信号进行“延时”+“叠加”。(注:人耳能分辨出的声音延迟至少是0.1s,因此,最小延迟量不能小于0.1s。)

1. 具体步骤如下:

2. 暂停当前音乐;

3. 从下拉菜单中获取所需延迟的采样点数num;

4. 利用矩阵置零产生延迟信号z;

5. 将原始信号y与延迟信号z相加,得到回响信号;

6. 继续当前播放。



5.人声消除

相关原理:

首先,背景音乐一般是双声道的,也就是说两个声道的相关数据不同,而人声音频数据一部分是单声道的,也就是人声一部分音频数据平均分配到两个声道。根据这一点,我们可以使用声道数据作差抵消来达到一定的人声消除效果,而且对伴奏造成的影响也较小。

然后,我们可以利用MALAB的滤波器来进行人声频带的滤除进一步提升人声消除效果。而且可以轻松得到很高阶的滤波器。

涉及到的主要函数为fir1和filter。

fir1是基于窗口的滤波器函数,传入参数依次为滤波器阶数以及通带频率范围,返回滤波器系数,此处为了达到消除人声效果设计了相关的参数。

filter使用是y =filter(b,a,x) ,使用由分子和分母系数 b 和 a 定义的有理传递函数 对输入数据 x 进行一阶滤波,返回滤波后的音频数据。

目录
相关文章
|
17天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
31 8
|
1月前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
1月前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
1月前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
47 3
|
2月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
2月前
|
算法 5G 数据安全/隐私保护
MIMO系统中差分空间调制解调matlab误码率仿真
本项目展示了一种基于Matlab 2022a的差分空间调制(Differential Space Modulation, DMS)算法。DMS是一种应用于MIMO通信系统的信号传输技术,通过空间域的不同天线传输符号序列,并利用差分编码进行解调。项目包括算法运行效果图预览、核心代码及详细中文注释、理论概述等内容。在发送端,每次仅激活一个天线发送符号;在接收端,通过差分解调估计符号和天线选择。DMS在快速衰落信道中表现出色,尤其适用于高速移动和卫星通信系统。
|
2月前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
|
2月前
|
算法
基于最小二乘递推算法的系统参数辨识matlab仿真
该程序基于最小二乘递推(RLS)算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计并计算误差及收敛曲线,对比不同信噪比下的估计误差。在MATLAB 2022a环境下运行,结果显示了四组误差曲线。RLS算法适用于实时、连续数据流中的动态参数辨识,通过递推方式快速调整参数估计,保持较低计算复杂度。
|
2月前
|
Python
基于python-django的matlab护照识别网站系统
基于python-django的matlab护照识别网站系统
18 0
|
3月前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。

热门文章

最新文章