引语
记录学习路程,抛砖引玉。如有更好的算法或者出现错误,欢迎指点。
项目
- 鼠标点击控件弹奏
- 键盘弹奏
- 显示相关波形数据以及频率数据
- 坐标显示数据,可选择是否显示坐标网络
- 可根据个人喜好通过代码编写曲子
- 可通过改指定处代码设定不同音色(即用另外不同的声音弹奏)
下载目录
资源已上传,感兴趣需要的话前往下载即可^^
音调的生成
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,2pirythm,floor(Fsrythm));
y = sin(freqs(tone)x).(1-x/(rythm2pi));
end