在MATLAB如何生成一个WAV文件

在MATLAB如何生成一个WAV文件,第1张

分类: 电脑/网络 >>软件 >>多媒体软件

问题描述:

在MATLAB中

用以下代码可以发出一个拨号声,

n = 1 : 999

d5(n) = sin(0.5906n) + sin(1.0245n)

sound(d5, 8192)

但如果我想把一个声音输出为了一个WAVE文件的话,应该怎么做,请高手指点

解析:

for n = 1 : 999

d5(n) = sin(0.5906*n) + sin(1.0245*n)

end

sound(d5, 8192)

d6=d5/2%avoid to be clipped

wavwrite(d6,8192,16,'d5.wav')

首先要理解wav和midi的本质区别:wav及绝大多数音频文件(包括MP3,flac,ape,ogg,aac等等),其内容是对声音波形的描述,所以他们之间互相转换要相对容易一些。midi文件的内容的是指令,像乐谱,也就是“在哪个时间,指定哪种乐器,发出怎样的声音”。不包含对声音波形的描述。而真正发音的是合成器(硬件或软件的)。所以即使是演奏同一本乐谱,不同合成器(不同乐团)演奏出来的效果也不一样。

为什么wav转midi效果很不好?不知道楼主了不了解“扒谱”这个技能?玩乐队玩编曲的人都要有这个技能,但真正扒明白是相当相当难的。“扒谱”就是把一首曲子里用到的乐器,以及他们的演奏,完完全全地依原样给记下谱子。打个常见比喻,就好像咱们仔细品尝一道大菜,然后精确说出里边用了多少油盐酱醋一样,很难很难的。咱们人来扒谱,首先就是感觉声音里包含了多少种乐器(乐器特征识别),然后紧跟住某种乐器的声音,听出它的谱子并记下来(抓住乐器特征而识别音高和时值等)。很多时候乐器的声音会互相掩盖,让人很难分辨出旋律。软件算法做这个事情也是一样,甚至还没有人做得更好。因为人还是有经验的,可以根据某些乐器和声音的特点而“猜”出音符,但计算机没有这个本领的。

综上所述,wav转midi效果很不好的,还不如自己训练扒谱技能,自己动手丰衣足食。如果原音频是单独乐器,转化效果能好一些。但注意,计算机是区分不出拍节的,所以……还是自己扒谱吧……


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

原文地址: http://outofmemory.cn/tougao/11527182.html

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

发表评论

登录后才能评论

评论列表(0条)

保存