matlab大作业|电子琴Mypiano

引语

记录学习路程,抛砖引玉。如有更好的算法或者出现错误,欢迎指点。

项目

  1. 鼠标点击控件弹奏
  2. 键盘弹奏
  3. 显示相关波形数据以及频率数据
  4. 坐标显示数据,可选择是否显示坐标网络
  5. 可根据个人喜好通过代码编写曲子
  6. 可通过改指定处代码设定不同音色(即用另外不同的声音弹奏)

下载目录

资源已上传,感兴趣需要的话前往下载即可^^

音调的生成

1.我们都知道声音是一种波,所以只要生成一个波形(正弦波sin(x)为例)就能够有声音产生
在这里插入图片描述

为了能产生琴键按下后声音渐小的节奏感效果,需进一步优化函数,采样率fs=8192,最终确定成为:x = linspace(0,2pi,8192);y=sin(x)(1-x/(2pi))
在这里插入图片描述
2.使用sound(y,fs)函数生成声音,通过设置频率x值大小形成不同音调,这时候要引用十二平均律
在这里插入图片描述
根据十二平均律表设置对应音调的频率值,案例取小字组~小字三组各七个基本音调共28个值放在列表freqs中,然后定义节拍和音调的变量,最后放在一个function函数里。
function y = gen_wave(tone,rythm) %gen_wave(音调,节拍)
Fs = 8192;
freqs=
[130.8,146.8,164.8,174.6,196.0,220.0,246.9,261.6,293.7,329.6349.2,392.0,440.0,493.9,523.3,587.3,659.3,698.5,784.0,880.0,987.8,1046.5,1174.7,1318.5,1396.9,1568.0,1760.0,1975.5];
x = linspace(0,2
pirythm,floor(Fsrythm));
y = sin(freqs(tone)x).(1-x/(rythm2pi));
end

曲目的代码

在这里插入图片描述

页面展示

在这里插入图片描述

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值