一.一些音乐基础

1.认识简谱

简谱中最重要的信息就是曲调、节拍,位于简谱左上角,

如图中的1=G,是以G调为基准频率,即1对应G调,其他常见的还有1=C等,

4/4为一节4个1/4拍,一节则为一个短竖线隔开的,相似的还有3/4排,1/2拍等。

对应数字是在以1为基频下的不同音频

0拍表示占位,不出声

数字左上角带#为半个音阶

数字上下方的点代表增加或者降低一个八度,也有两个点的情况,对应降低两个八度。

在4/4拍的谱中,一节有四个1/4拍组成,每个1/4拍为1秒,单个数字对应一个1/4拍,数字下方一个下划线表示这个音占1/8拍,两个表示1/16拍,以此类推...在一节中排数和总是等于这个谱对应的拍数,上例为4/4拍,即4秒。

数字右边的点表示这个音延长其1/2拍,如1·表示3/8拍,数字后面的-表示再延长1/4拍。

数字间的上连接符号表示过渡平稳,连贯,一般在演唱时需要考虑。

2.基本曲调频率

根据十二平均律计算,得出下面不同曲调对应频率

表示以这个频率振动发出声音,产生的调则为对应音调。

值得注意的是,一个八度音对应是倍频关系。这也是由于十二平均率计算规律。

根据此可确定出每个数字对应频率

在G调基础上对应频率

g0表示占位,g1_表示降调,g2_5表示#2

g0=0;2
g1_=195.998;
g2_=220.000;
g3_=246.942;
g4_=261.626;
g5_=293.665;
g6_=329.628;
g7_=349.228;
g1=391.995;
g2=440;
g2_5=415.305;
g3=493.883;
g4=523.251;
g4_5=554.365;
g5=587.330;
g5_5=622.254;
g6=659.255;
g7=698.456;
g33=987.767;

二.使用matlab产生声音

1.乐音频率,抽样频率 ,节拍

使用如220hz为频率的正弦波,持续一段时间

这个波的频率为乐音的频率,取一个个抽样的点的频率表示抽样频率,持续的时间则为节拍的时间

抽样频率一般要远大于发音频率,保证不失真。

因此我们可以创建一个频率为220,持续时间为1s,抽样频率为8000的一段矩阵

fs=8000;
f=220;
x=linspace(0,1,fs);
y=sin(2*pi*f*x);
plot(x,y);
sound(y,fs);

可以看到产生了频率为220hz,持续时间为1s,采样频率为8000的一段波。

只需要不断改变频率和节拍(持续时间),一个简单的音乐就可以播放了。

2.播放一段音乐

f1=[g0 g0 g0 g5_];
t1=[1 1 1 1];
f2=[g3 g2_5 g3 g6];
t2=[1.5 0.25 0.75 1.5];
f3=[g5 g3 g6_];
t3=[0.75 2.25 1];
f45=[g1 g2 g3 g5 g4_5 g5 g5_5 g5];
t45=[2 0.75 1.75 0.5 0.5 0.5 1.5 0.5];
f67=[g6 g33 g0];
t67=[1.5 4.5 2];
f0=[f1 f2 f3 f45 f67];
t0=[t1 t2 t3 t45 t67];
for i=1:size(f0,2)x=linspace(0,t0(i),8000*t0(i));y=sin(2*pi*f0(i)*x);sound(y,8000);pause(t0(i));
end

我们用两个一维矩阵储存音调和节拍信息,要求必须一一对应!否则播放矩阵对不上。

sound函数播放,pause函数延迟一段时间。

3.给音乐加包络

可以听到这一段音乐中在中间过渡的时候总是有杂音,影响音乐品质,因此我们这是由于相位不连续造成的,我们的解决方法是给声音加包络

关于包络信号讲解(10条消息) 利用包络函数优化MATLAB中sound函数的发声【matlab调音_2】_歪卜巴比的博客-CSDN博客_钢琴包络函数

其中最后的x/exp(-kx/rhythm)型包络函数表达形式有误或不完整。

这里进行修改

上式为完整的包络函数,其中t代表节拍时间。

修改后的包络函数解决了不同节拍时长和k值导致不同音量大小的问题

其形状为

很明显,这使得声音更加圆润,对比传统指数包络,有一个先上升的过程,能保证前一个音符能量消失后,才发出后续音符,这样就能有效消除,音符交替时的轻微杂音

这里k值的大小决定了下降的快慢,根据不同谱子进行调整,一般来说,k值越大声音越清脆

4.完整代码

clc;clear all
fs=8000;
k=10;
k0=5;
g0=0;
g1_=195.998;
g2_=220.000;
g3_=246.942;
g4_=261.626;
g5_=293.665;
g6_=329.628;
g7_=349.228;
g1=391.995;
g2=440;
g2_5=415.305;
g3=493.883;
g4=523.251;
g4_5=554.365;
g5=587.330;
g5_5=622.254;
g6=659.255;
g7=698.456;
g33=987.767;
%前奏
f1=[g0 g0 g0 g5_];
t1=[1 1 1 1];
f2=[g3 g2_5 g3 g6];
t2=[1.5 0.25 0.75 1.5];
f3=[g5 g3 g6_];
t3=[0.75 2.25 1];
f45=[g1 g2 g3 g5 g4_5 g5 g5_5 g5];
t45=[2 0.75 1.75 0.5 0.5 0.5 1.5 0.5];
f67=[g6 g33 g0];
t67=[1.5 4.5 2];f0=[f1 f2 f3 f45 f67];
t0=[t1 t2 t3 t45 t67];
d=0.2;
for n=1:size(f0,2)x=linspace(0,t0(n),t0(n)*fs);if n==1m0=d*exp(1)*k0*x.*exp((-k0/t0(n))*x).*sin(2*pi*f0(n)*x);%m=k*x.*exp(-k*x).*sin(2*pi*f0(n)*x);%m0=exp(-k0*x).*sin(2*pi*f0(n)*x); else if n==size(f0,2)-1m0=[m0 d*exp(1)*2/t0(n)*x.*exp((-4/t0(n))*x).*sin(2*pi*f0(n)*x)]; elsem0=[m0 d*exp(1)*k0/t0(n)*x.*exp((-k0/t0(n))*x).*sin(2*pi*f0(n)*x)];%m=[m k*x.*exp(-k*x).*sin(2*pi*f0(n)*x)];%m0=[m0 exp(-k0*x).*sin(2*pi*f0(n)*x)];endend
end
sound(m0,fs*2)
plot(linspace(0,sum(t0),sum(t0)*fs),m0)
pause(sum(t0)/2-2)
%主调
f7=[g0 g0 g0 g5_ g6_ g1];
t7=[1 1 0.5 0.5 0.5 0.5];
f8=[g5 g3 g0 g5 g2 g1];
t8=[0.5 1.5 0.5 0.5 0.5 0.5];
f9=[g3 g2 g0 g5 g2 g1];
t9=[0.5 1.5 0.5 0.5 0.5 0.5];
f10=[g2 g2 g0 g3 g1 g6_];
t10=[0.5 1.5 0.5 0.5 0.5 0.5];
f11=[g2 g1 g0 g5_ g6_ g1];
t11=[0.5 1.5 0.5 0.5 0.5 0.5];
f12=[g5 g3 g0 g5 g2 g1];
t12=[0.5 1.5 0.5 0.5 0.5 0.5];
f13=[g3 g2 g0 g5 g2 g1];
t13=[0.5 1.5 0.5 0.5 0.5 0.5];
f14=[g3 g2 g0 g3 g6_ g1];
t14=[0.5 1.5 0.5 0.5 0.5 0.5];
f15=[g1 g1 g0 g0 g3 g4];
t15=[0.5 1.5 1 0.5 0.25 0.25];
f16=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t16=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f17=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t17=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f18=[g5 g3 g2 g1 g5_ g1 g1];
t18=[0.5 0.5 0.5 0.5 0.5 0.5 1];
f19=[g3 g3 g2 g3 g2 g1 g3 g4];
t19=[0.5 0.25 0.25 0.5 0.5 1.5 0.25 0.25];
f20=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t20=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f21=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t21=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f22=[g5 g3 g2 g1 g5_ g1 g1];
t22=[0.5 0.5 0.5 0.5 0.5 0.5 1];
f23=[g3 g3 g2 g3 g2 g1];
t23=[0.5 0.25 0.25 0.5 0.5 2];
f24=[g3 g3 g2 g3 g2 g3 g3 g2 g3 g2];
t24=[0.5 0.25 0.25 0.5 0.5 0.5 0.25 0.25 0.5 0.5];
f25=[g3 g3 g2 g3 g2 g1];
t25=[0.5 0.25 0.25 0.5 0.5 2];
f26=[g3 g3 g2 g3 g2 g3 g3 g2 g3 g2];
t26=[0.5 0.25 0.25 0.5 0.5 0.5 0.25 0.25 0.5 0.5];
f27=[g3 g3 g2 g3 g2 g1 g0 g3 g4];
t27=[0.5 0.25 0.25 0.5 0.5 1 0.5 0.25 0.25];
f28=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t28=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f29=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t29=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f30=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t30=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f31=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t31=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f32=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t32=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f33=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t33=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f34=[g5 g5 g3 g5 g5 g5 g3 g5 g6 g5 g5];
t34=[0.5 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 0.5 0.5];
f35=[g3 g5 g3 g2 g1 g5_ g1 g1 g1 g2];
t35=[0.125 0.375 0.5 0.5 0.5 0.5 0.5 0.5 0.25 0.25];
f36=[g3 g3 g2 g3 g3 g2 g3 g3 g2 g3 g4 g3 g2];
t36=[0.5 0.25 0.25 0.5 0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.25 0.25];
f37=[g1 g1 g2 g1 g7_ g6_ g0 g2 g3];
t37=[0.5 0.25 0.25 0.5 0.5 1 0.5 0.25 0.25];
f38=[g4 g4 g3 g4 g4 g3 g4 g4 g3 g4 g5 g4 g3];
t38=[0.5 0.25 0.25 0.5 0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.25 0.25];
f39=[g2 g2 g1 g7_ g1 g2 g5_ g1 g2];
t39=[0.5 0.25 0.25 0.5 0.5 0.5 0.5 0.5 0.5];
f40=[g3 g3 g2 g3 g3 g2 g3 g3 g2 g3 g4 g3 g2];
t40=[0.5 0.25 0.25 0.5 0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.25 0.25];
f41=[g1 g1 g2 g1 g7_ g6_ g0 g2 g3];
t41=[0.5 0.25 0.25 0.5 0.5 1 0.5 0.25 0.25];
f42=[g4 g4 g3 g4 g4 g3 g4 g4 g3 g4 g5 g4 g3];
t42=[0.5 0.25 0.25 0.5 0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.25 0.25];
f43=[g5 g3 g2 g1 g5_ g1 g1];
t43=[0.5 0.5 0.5 0.5 0.5 0.5 1];f=[f7 f8 f9 f10 f11 f12 f13 f14 f15 f16 f17 f18 f19 f20 f21 f22 f23 f24 f25 f26 f27 f28 f29 f30 f31 f32 f33 f34 f35 f36 f37 f38 f39 f40 f41 f42 f43];
t=[t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43];for n=1:size(f,2)x=linspace(0,t(n),t(n)*fs);if n==1m=exp(1)*k/t(n)*x.*exp((-k/t(n))*x).*sin(2*pi*f(n)*x);%m=k*x.*exp(-k*x).*sin(2*pi*f(n)*x);%m=exp(-k*x).*sin(2*pi*f(n)*x);elsem=[m exp(1)*k/t(n)*x.*exp((-k/t(n))*x).*sin(2*pi*f(n)*x)];%m=[m k*x.*exp(-k*x).*sin(2*pi*f(n)*x)];%m=[m exp(-k*x).*sin(2*pi*f(n)*x)];end
end
sound(m,fs*2)

使用matlab制作音乐相关推荐

  1. 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌

    0.前言 时隔一年,又是一年圣诞时.仔细想想,距离上次更新已经过去了很久很久,打工人实在时间精力有限,疏于更新了,感谢还没取关的朋友们- 去年差不多这个时候的一篇关于Matlab画圣诞树的推送最近受到 ...

  2. matlab自带的音乐,MATLAB乐器(如何用matlab演奏音乐)

    近期在家无聊,刷B站视频的时候发现有up上传了matlab制作的音乐,效果很是有趣.顺带吐槽一下,手机端的B站总是推荐莫名其妙的内容,但是通过搜索关键词,你又总能搜到不错的视频,我试了几个教学课程,视 ...

  3. Matlab 制作《最炫民族风》弱爆了,附代码

    Matlab 制作<最炫民族风>弱爆了,附代码 分类: matlab2012-05-22 22:12 1212人阅读 评论(0) 收藏 举报 matlabreference [plain] ...

  4. 华为怎么删除自带的音乐_原来华为手机相册隐藏剪辑功能!按下这个开关,还能制作音乐相册...

    华为手机相册你肯定在用,但除了最近删除.智能搜索之外,你还知道手机相册的其他功能吗?这里就分享一个,相册中隐藏的实用剪辑功能,按下这个开关,还能把照片制作成音乐相册. 创作开关 首先将华为手机上的相册 ...

  5. matlab bad apple,【bad apple】matlab制作矩阵苹果~

    有屏幕的地方就有bad apple 那么作为一名工科生,熟练的操♂作马桶萝卜(matlab)是一项基本技能 下面开始讲解如何用matlab制作别具一格的"矩阵苹果"~ 实验环境 m ...

  6. windowbuilder怎么加图片_一键制作音乐图片,这效果太惊艳了!微信这个功能简直是“宝藏”...

    试过给视频添加音乐,那你有没有试过给图片添加音乐呢?如果没有试过的话,建议你可以试试,效果绝对让你惊艳.没有加音乐的图片就只是张图片,加了音乐之后,它就有了属于自己的故事~ 一.微信自带功能 不知道大 ...

  7. 大白小课程-跟着官方教程学习Scratch3.0-P04制作音乐

    本文是视频教程:大白小课堂:跟着官方教程学习Scratch3.0系列的讲义版本,方便大家查阅 视频地址:https://www.bilibili.com/video/av54055338/ 我们今天一 ...

  8. MATLAB 制作gif动态图

    MATLAB 制作gif动态图的基本思想就是,将一张张的静态图组合成一张能动的gif图片,并保存到相应的位置. 那么,要想制作一张动态图,首先要有若干个静态图,并且他们的索引值是连续的.下面先说一下m ...

  9. matlab仿真动画,用matlab制作简单仿真动画

    用matlab制作简单仿真动画,并生成.avi格式的电影文件 MATALB知识点2008-05-01 13:17:54 阅读152 评论0 字号:大中小订阅 第一种形式:利用for循环,在一定时间内控 ...

最新文章

  1. js基础知识温习:Javascript中如何模拟私有方法
  2. python数据结构与算法(二)
  3. tomcat日志切割
  4. 004-流程控制和类型转换
  5. 7、Power Query-合并查询
  6. DropDownList设置选定项,设置选择项,最安全的方法
  7. 程序员太牛了 公司年会整成代码讨论会
  8. 简单却实用的的例子:Jquery获取 radio 选中后的文字
  9. 判断 JS 中对象的类型
  10. 将iso镜像包设置成yum源_Centos7 Nginx搭建局域网yum仓库详细步骤,转发
  11. 基于树莓派的智能门禁及3D外壳打印设计
  12. matlab中plot画图的颜色线型
  13. 淘宝详情页排版布局怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  14. 公募“一哥”王亚伟已在深圳前海低调复出
  15. 万物互联大数据研究正式展开人才紧缺
  16. 树莓派3B网线连接笔记本电脑以及安装ubuntu16
  17. linux申请信号量,linux 信号量
  18. 站长必备-一键推送快速收录工具
  19. 双草酸硼酸锂(LiBOB)-市场现状及未来发展趋势
  20. Line regulation和Load regulation

热门文章

  1. 硅晶圆出货量大涨带好消息:电脑手机数码产品价格暂时平稳
  2. 平安校园:校园APP开发案例分析
  3. 八 EUI高级制作 ① 初认识
  4. 精易模块3.46 网页_访问u命令
  5. 企业微信怎么用?企业微信管理工具哪个好?【百问百答】
  6. SAP创建客户主数据事务码和透明表
  7. 什么软件可以用来提取图片文字?这几款软件超好用
  8. 使用rabbitmq实现提醒发送短信
  9. Spring5的WebClient使用详解
  10. 国际化常见快捷登录总结:使用 Google、Facebook 等三方平台实现快速登录