matlab高级编程与应用-音乐合成实验报告.docVIP

matlab高级编程与应用-音乐合成实验报告.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
音乐合成实验报告 简单音乐合成 (1)(2)(4)题可以合并成一道题,即最终合成的音乐要求如下: 1、每个音符有准确音高和节拍; 2、每个音节有合理的包络线,且相邻音节有部分叠接; 3、每个音节有至少三个谐波分量。 解决步骤: 构造一个音高向量的生成函数m,入口参数为简谱的数字和升降八度,出口参数为一个波形向量,长度为乐曲总时间、例如:在F调中,降F为m(1,-1),A为m(3,0),升C为m(5,1)。 构造一个包络线向量的生成函数shape,控制节拍,考虑到包络线和包络线还有叠接的部分,这个函数应该还能控制音符的起始时间。即入口参数为节拍和起始时间,出口参数为一个包络线向量,长度也为乐曲总时间。这样音高向量与这个包络线向量的对应位相乘就得到乐曲中的一个音符了。例如:一个01:00开始的四分音符的包络为shape(4,1)。 根据乐谱做出所有符合节拍、音高、和起始时间的音符向量,再把所有音符向量叠加起来就得到一个乐曲的向量了。 具体实现: function music() clc;clear; m=m(5,0).*shape(4,0)+m(5,0).*shape(8,0.48)+ ... m(6,0).*shape(8,0.70)+m(2,0).*shape(2,0.93)+... m(1,0).*shape(4,1.92)+m(1,0).*shape(8,2.4)+ ... m(6,-1).*shape(8,2.62)+m(2,0).*shape(2,2.85); %完整乐曲 sound(m,8000); return function m0=m(x,y) %音高函数,x为简谱数字,y为升降八度 t=[0:1/8000:4]; a=[349.23,392,440,493.88,523.25,587.33,659.25]*2*pi; %基频向量 m0=sin(a(x)*(2^y)*kron(t,[1:3]))*[1 0.2 0.1]; %谐波幅度:二次0.2,三次0.3 return function s=shape(x,a) t=[0:1/8000:4]; speed=0.5; %四分音符为0.5秒 limit=a+4*speed/x*[0 0.1 0.2 0.8 1]; %分段函数的各个界点向量 for i=1:4 u(:,i)=(tlimit(i) t=limit(i+1)); %生成分段函数和区间 end s=3*x/speed*(t-limit(1)).*u(:,1)+ ... (1.2-0.5*x/speed*(t-limit(2))).*u(:,2)+... 1.*u(:,3)+(1-1.25*x/speed*(t-limit(4))).*u(:,4); %生成包络 Return 代码优化: 实验中我的大部分时间花在了代码优化上,即尽量少的出现循环,尽量多的化归为二维矩阵或向量。如程序中的 m0=sin(a(x)*(2^y)*kron(t,[1:3]))*[1 0.2 0.1]; 张量积构成含有3次倍频的矩阵,与分量系数列向量相乘得到含有谐波的音高列向量。 (3)用最简单的办法使乐曲升降八度、升降半音阶。 问题分析: 不改变sound采样频率,只要改变信号自身的采样密度即可。 具体实现: m_d=resample(m,1,2); %降八度 m_u=resample(m,2,1); %升八度 md=resample(m,1059,1000); %降半音阶 mu=resample(m,1000,1059); %升半音阶 (5)自选其他音乐合成 解决步骤: 把总时间拉长到6秒t=[0:1/8000:6]; 把F调降到C调,重写函数m的基频向量 a=[261.63 293.66 329.63 349.23,392,440,493.88]*2*pi; 重写原程序乐谱 m= m(1,1).*shape(16/3,0)+m(1,1).*shape(16,0.375)+... m(1,1).*shape(8,0.5)+m(1,1).*shape(8,0.75)+ ... m(1,1).*shape(8,1)+m(1,1).*shape(8/3,1.25)+ ... m(1,0).*shape(8,2)+m(1,0).*shape(4,2.25)+ ... m(3,0).*shape(8,2.75)+m(5,0).*shape(8,3)+ ... m(5,0).*shape(4,3.25)+m(6,0).*shape(8,3.72)+ ... m(1,1).*shape(8/3,4)+m(6,0).*shape(8,4.75)+ ... m(5,0).*shape(8/3,5); 用傅里叶级数分析音乐

文档评论(0)

晓风迷梦 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档