基于Matlab实现音乐识别与自动配置和声的功能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关 键 词:乐音识别;傅里叶变换;和声理论;和声构造 Abstract: This paper deals with a set of methods for how to use Matlab to carry on the recognition for the musical performance, and the automatic disposition corresponding harmony. It analyzes the entire process, which the harmony of many timbre comes automatically from a section of existing piano single-tone melody finally, and synthesizes physics, mathematics, automation and music and so on related knowledge, finally realizes the function of configuration of harmony automatically. Key words: Musical sound identification ; Fourier transformation ; Harmony theory ; Harmony construction 中图分类号:TP29 文献标识码:B 文章编号:1001-9227(2011)01-0126-03
最终通过叠加构造出、配置好和声的波形,如图 4 所 示。
图4 配置和声之后的波形
按照相应的采样频率播放(s o u n d 函数)即可听到最 终配置出和声的《小星星》音乐。和声的音色,可以通过 和声配置中的各个音的谐波成分的比例进行设定,这可以 根据听者自己的不同要求进行选择。 4 结束语
以上实现方法,基于物理、数学、信号分析、自动化与 音乐理论的角度,解决了“给乐器演奏的旋律自动配置和 声”这一交叉领域的新课题,弥补了音乐学,尤其是和声 学中对于现有音乐进行“自动识别”及“和声配置”的空 白 。它 将 会 对 音 乐 知 识 、文 化 的 普 及 和 发 展 产 生 推 动 作 用,并在音乐教学领域发挥重要的功效,同源自文库给声音识别 的应用提供了新的思路。
基于M a t l a b 实现音乐识别与自动配置和声的功能 杨若芳,等
基于Matlab实现音乐识别与自动配置和声的功能
杨若芳1,项 顶2 (1 甘肃兰州城市学院教育学院 甘肃兰州,730070)
(2 清华大学电机系 北京,10086)
摘 要:给出了如何使用M a t l a b 对现实演奏的音乐进行识别、并自动配置相应的和声的一套方法。详细分析 了,从一段现有的钢琴单音旋律到最终自动产生和谐的多音色和声的整个过程。综合了物理、数学、自动化、音乐 等领域的相关知识,最终实现自动给音乐配和声的功能。
127
基于M a t l a b 实现音乐识别与自动配置和声的功能 杨若芳,等
end JL=[];% 和弦根音 JM=[];% 和弦三音 JH=[];% 和弦五 音 Y=[];% 配和弦的点位 for k=1:length(C) if sz(k)==1 n1(k); Y=[Y,n1(k)]; AL(k); JL=[JL,AL(k)];% 和 弦根音 BM(k); JM=[JM,BM(k)];% 和弦三音 CH(k); JH=[JH,CH(k)];% 和弦五音 end end % 产生相应的和弦 AY=[];% 和弦根音向量 for l=1:length(Y)-1 TL=[(Y(l)+1)*1/fs:1/fs:Y(l+1)*1/fs]; hexianl=0.4*sin(2*pi*JL(l)*TL);% 该乐音基波 AY=[AY,hexianl]; end TL0=[1/fs:1/fs:Y(1)*1/fs]; hexianl0=0*TL0; TL1=[(Y(length(Y))+1)*1/fs:1/fs:length(w1)*1/ fs]; hexianl1=0.4*sin(2*pi*JL(length(JL))*TL1). *baoluo(length(TM1)); AY=[hexianl0,AY,hexianl1];% 和弦根音 B Y = [ ] ; % 和弦三音向量(与和弦根音构造模式相同) …… CY=[];% 和弦五音向量 ……
的音高、节拍、以及每个小节对应的长度以及旋律,原始 音乐的波形如图2 所示。
图1 自动配置和声整体流程 收稿日期: 2 0 1 0 - 0 9 - 1 1 作者简介: 杨若芳( 1 9 6 3 - ) , 女, 副教授, 主要从事音乐教育工 作。
126
图2 一段《小星星》的旋律波形
首先做出该音频波形的包络线:由于波形的对称性, 只取原波形的正顶点,然后对其做线性插值得到一条较平 滑的包络线,之后再取包该络线的顶点,再做插值,以此 类推,做多次后(4 次以上),提取此时的顶点,即得原波形
% p 是音符的频谱中各个峰值点的向量 F=[174.61,184.99,196,207.65,220,... ]; %固有 的频率 G={'F','bG','G','bA','A',... }; % 固定音高 f(1:length(p))=0; for i=1:length(p) for j=1:19 if p(i)/12.5<F(j)+2 && p(i)/12.5>F(j)- 2 % 给定范围 f(i)=F(j); end end end 确定了每个音的音高、音值之后,接下来进行和声配 置,由于和声的配置方式多种多样,最为基本的可以是分 解和弦与旋律配合而成,也可以是三和弦、七和弦等与音 乐并行进行,或者是二者的结合,亦或是在适当的节奏上 保持、延长、休止、添加附点等等来产生各种各样的音乐 效果。由于配置和声之前我们要确定旋律的调性,以使最 终的音乐更加和谐,这里我们采取通过旋律结束音的音高 来进行判别其调性,同时选择以三和弦与旋律的并行进行 来配置和声。对于不同歌曲、小节的判定标准不同,这可 以通过开始的模式选择来确定,此处我们所用的钢琴录制
《自动化与仪器仪表》2011 年第 1 期(总第 153 期) 每个音的包络线的顶点,如图 3 所示。
图3 原波形每个音的包络线
此 时 可 以 很 明 显 地 看 出 ,包 络 线 每 两 个 顶 点 之 间 对 应一个音符,所以将每个音符从曲子中提取出来就可以进 行音高(音频)、节奏(音值)、音色(谐波成分)的分析。但 是,前一个音符和后一个音符的衔接对于该音符的音调会 产生一定影响,因此在分析音高(音频)的时候,应截取 某该音其中一部分波形进行频谱分析,避免周围的乐音对 其波形产生干扰。
对 于 音 符 时 长 的 判 断 ,只 需 根 据 采 样 频 率 ,计 算 出 “二分音符”、“四分音符”、“八分音符”……的对应采样点
个数范围,并将各个音符的采样点个数与之比对,即可确 定每个音符的时长,从而确定旋律的节奏。
以下需要分析每个音的频谱,将音节中波形较稳定 的部分提出来,即除去两头的衔接部分波形,并去除非线 性谐波和噪声。由十二平均律可以知道,各个音的基频之 间应该满足这一规律,然而由于存在噪声等不稳定的因 素,我们必须要做一定的近似。即认为某一固定频率可以 存在一定的波动范围:
1 所涉及的基本知识 音高(音频)、音色(谐波成分)、音值(时值)、包络波
形、快速傅里叶变换、频谱分析、除噪声、十二平均律、调 式、调性、和声。
2 实现思路 整体流程如图1 所示。
首 先 给 出 一 段 现 实 中 乐 器 演 奏 的 旋 律 ,通 过 录 音 设 备转化为音频文件(以wav 格式为例),通过Matlab 对该音 频文件进行音高、音色、音值、节奏的分析,并判断调性, 构造出匹配该旋律特性的对应和声音频文件(和声音色和 方式可自由选取),并将它与原有音频叠加,产生出新的 音频文件,并可直接播放试听效果。
的《小星星》旋律为2 / 4 拍。下面是部分简单和声配置规则 的程序:(如果有新的配置方案,可以根据听者的习惯修 改或者添加。)
shizhi=[];每个音的时值(作为处理变量)shizhi(1) =0;% 初值,后面循环中将会使用
shizhi0=[];% 每个音的时值(作为记录,不做运算) s z = [ ] ; % 判断向量,1 表示该音是小节第一个音,0 表 示非小节第一个音 s z ( 1 ) = 1 ; fs=8000; for i=1:length(C)% 从第一个音到结束 % 按所提取的音的不同配置和声 if (d{i}(1)==20)||(d{i}(1)==8)||(d{i}(1) ==24)||(d{i}(1)==12)||(d{i}(1)==15) AL(i)=130.81*2; BM(i)=164.82*2; CH(i) =196*2; end if d{i}(1)==17 AL(i)=130.81*2; BM(i)=174.62*2; CH(i)=220*2; end if d{i}(1)==22||d{i}(1)==10||d{i}(1)==13 AL(i)=196*2; BM(i)=246.94*2; CH(i)=293.66*2; end % 每个音的时值记录 if jp(i)==1/8 shizhi(i+1)=1/8; shizhi0(i)=1/8; end if jp(i)==1/4 shizhi(i+1)=1/4; shizhi0(i)=1/4; end if jp(i)==1/2 shizhi(i+1)=1/2; shizhi0(i)=1/2; end end (3 )配置和声音频文件生成、播放 为了使和声与它对应的第一个音同时进行,一方面 需要划分出小节,另一方面我们需要构造和声的三个音, 我们知道构造一个音,不仅需要给定它频率,也需要给定 它时值,对于此处采样频率我们已知(8 0 0 0 H z ),对于长度, 此处由于符值并不能准确反映一个音的出现时间(因为在 分析音的符值的时候已经设定了一定的误差范围),所以 我们必须以小节第一个音的采样点数进行构造,也就是说 我们要准确对应好从小节音开始到小节的音结束的这段 和声。最后经过循环拼接成所有和声的根音向量、三音向 量、五音向量,并进行叠加产生配置好的和声。 % 判断小节何时产生和声 for j=2:length(C) shizhi(j)=shizhi(j)+shizhi(j-1); if shizhi(j)>=1/4 sz(j)=1;% sz 为1 的音即小节的起始音 shizhi(j)=0; end
3 实现方法 (1 )现有乐器演奏的旋律及录制音频文件 笔者通过钢琴演奏了一段《小星星》的音乐旋律,并
通过录音机录制了音频文件(. w a v ),其后将以此音频文件 为实例,进行分析处理,并给出配置和声后的音频文件。
(2 )乐音分析、和声构造 通过M a t l a b 进行文件的读取,并分析出音乐每个音
0 引 言 给 乐 器 演 奏 的 旋 律 自 动 配 置 和 声 ,这 是 笔 者 所 提 出
的一个交叉领域的新课题,它综合了物理中声波的特性、 数学中傅里叶变换、信号处理中的频率分析、乐理中的十 二平均律以及和声理论等,通过M a t l a b 软件的分析、作图 和构造,实现这一自动配置和声的功能。这一功能弥补了 音乐领域,尤其是和声学中对于现有音乐进行自动识别及 和声配置的空白。下面对于整个功能实现的思路和方法作 以介绍,以供参考。
相关文档
最新文档