乐音合成:天空之城 MATLAB钢琴版_嘉艺流行音乐_流行音乐歌词大全

  注:由于知乎文章无法上传音频,请有需要的读者自行复制代码运行。   乐音的基本特征可用基波频率、谐波成分和包络波形三个方面来描述:   1)每个音调对应固定的基波频率。例如对于钢琴,琴键中央音调A 对应的频率值是440Hz,其他A 音是440Hz 的整数倍,如高八度A 音是880Hz,低八度A 音是220Hz。一个八度内频率被等间隔分为12 等分,相邻两音之间的频率倍率关系是2 ^(1/12) 倍,称为半音。   2)谐波成分及其强度的比例影响音色。不同乐器有不同的谐波分布。   3)包络波形与乐器的类型有关。   试查阅相关资料了解相关知识,用MATLAB 合成一小段音乐。   1. 国际标准音高与频率对照表(Scientific Pitch Notation)   八度*10行:0,1,2,3,4,5,6,7,8,9   音符*12列:C(do),C#/Db,D(re),D#/Eb,E(mi),F(fa),F#/Gb,G(so),G#/Ab,A(la),A#/Bb,B(si)   钢琴88键:大字二/一组,大/小字组,小字一/二/三/四/五组;A0到C8,3+7*12+1=88   全局采样率设为8000   2. 模拟钢琴的音色和音量衰减   1)真实钢琴的标准音(A4, 440Hz)   2)虚拟钢琴的标准音(A4, 440Hz)   依据真实钢琴的各级谐波比例,设置k值;根据网络资料的推荐及真实钢琴音效的时域波形,设置包络函数;通过sound函数试听,进一步调整上述两组参数,以最大程度还原真实钢琴的音效。 由此结果编写文末的mypiano函数。   3. 创建一段简谱:《天空之城》节选   tune记录音调,其中升1,升2等用8,9来表示,以此类推;0.5代表休止符0,后续会用mod1方法筛选出休止符。   rhythm记录每个音调的持续时间,4/4拍下,以16分音符为1,全音符为16;延音符号的其起始位置,将其值加0.5,同样用mod1筛选。   4. 合成钢琴曲   对简谱的解释不完全同于音乐理论,各种分类方法及参数配置由听感决定。   上文已经详细给出了用以实现钢琴音并演奏曲目《天空之城》的代码,在此做以如下说明:   1)将sound函数的注释取消掉,即可通过试听来实时调整参数k,a,b,这也就是在实验进行中需要做的;   2)代码中通过audioread函数读取了“49.mp3”,此为互联网上下载的钢琴A4标准音音效,用来调整k,a,b等参数;   3)代码最后用audiowrite输出了“天空之城.wav”文件,此为用代码实现演奏的钢琴曲《天空之城》片段。   通过上述MATLAB代码演奏的钢琴曲,对真实钢琴有着较高的还原度。但音色不如真实钢琴清脆饱满,且受限于作者的乐理知识,忽略了乐谱中的复杂成分,故而连贯性和可欣赏性欠佳。真实的钢琴具有更加复杂多样的泛音特征,不同钢琴的音色也不尽相同,真实地还原钢琴音色需要及其复杂的数据作为支撑。   通过本文给出的代码,只要以同样的方式重新条件k,a,b,即可实现小提琴、吉他、二胡等其他乐器音色的模拟,理论上任何乐器,甚至人声,都可以通过相同方式、不同参数模拟出来。若想对此进行验证,可仅仅将a值改为0.5左右,其他保持不变,就可以得到类似管乐器或是弦乐器的声音。   根据1中的调试结果,构建用以生成单个钢琴音的函数mypiano;   参数a主要作用于开始阶段,a越小,琴音出现越陡峭,听感越清脆;a越大,开始的波形越圆滑,听感向管乐器和弦乐器靠近;   参数b主要起衰减作用,b越大,衰减越快,反之衰减越慢。   此外,为了方便,为每个音调配置了相同的泛音比例,而这与实际情况是不同的。真实的钢琴每个音的泛音比例是有差异的。   附录:国际标准音高与频率对照表和音乐简谱可自行在网络上搜索。   声明:作者并非相关行业从业人员,文中代码和结果均为原创,如有错误敬请批评指正。
发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章