如何用matlab创作歌曲?

如何用matlab创作歌曲?,第1张

1、matlab播放音乐是由sound(Y,fs,bits)函数完成的,该函数的3个参数代表输入信号、采样率、比特率。先说采样率fs的设置,人耳能够听到的声音范围是20~20000Hz。

2、根据采样定理fs只需要大于40000即可。此处采样率的设置采用了MP3的标准,即fs=44.1k.再说输入信号Y,Y一般是一个正弦波,如A*sin(2*pi*w*t)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短,所以理论上利用这个公式可以发出任何声音,只是不能控制音色和音质比特率采用默认值即可。

3、于是用下面的公式就可以播放出标准音la:(座机电话提示音就是la,可以用来调吉他)

fs=44100

t=0: 1/fs: 0.5

la = sin(2*pi*440*t)(下文介绍440是怎么来的)

sound(la, fs)

4、下面介绍一下简单乐理:

音高和频率是指数的关系,它们满足下面的公式,其中p是音高,f是频率

标准音la,即钢琴的A4键,定义为p=69。音高每上升一个半音,p加1。

如上图所示,从C4到B4分别对应着do re mi fa sol la xi,它们的p值分别为 60 62 64 65 67 69 71,注意中间有黑键,你也可以根据下表来查询某个音的频率。

输入乐谱(midi),生成音乐,matlab程序我倒见过,好像是合成长号的曲子

识别曲子,生成乐谱,这方面的东西从技术上来讲,限制条件比较多,难以完美的实现。从音乐乐曲转换成midi的软件见过,效果并不不太好。转换成乐谱,难度就更大,首先是节拍,小节划分等,难以量化。单一乐器的曲子倒好说,合奏的曲子想都别想。

matlab这方面的现成的源代码,没有见过。可提示一下思路,主要是计算基音周期,确定各个音符的音高,音长,分析节拍,调号,小节划分等,对单一乐器的演奏曲子,这方面的东西实现起来,并不是特别困难。

[p,fs,bits]=wavread('E:\02-Convolution\female_voice_lab2')

N=length(p)

n=1:N

M=p(:,1)

t1=0.1t2=0.05

N1=0.1*fs

N2=0.05*fs

ht=zeros(1,N)

ht(1)=1,ht(N1)=0.8,ht(N2)=0.6

subplot(2,1,1)

plot(ht)axis([0 9000 0 1])


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8083970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存