和弦名检测装置以及和弦名检测用程序的制作方法

文档序号:2837354阅读:388来源:国知局
专利名称:和弦名检测装置以及和弦名检测用程序的制作方法
技术领域
本发明涉及和弦名检测装置以及和弦名检测用程序。
技术背景作为根据音乐CD等的多个乐器声音混合其中的音乐声音信号(声 音信号)来检测和弦名(和声名)的和弦检测装置,本申请人已经在先 提出了日本特愿2006-1194的专利申请。在该申请的结构中,作为小节内由多个和弦(和声)构成的情况下 的判断方法,使用了基音。即,将小节分割为前半部分和后半部分这两 个部分,并分别在两部分检测基音,当检测出其他的基音的情况下,将 和弦也分为前半部分和后半部分进行检测。但在该方法中,当基音相同但和声不同时,例如小节的前半部分为 C和弦,后半部分为Cm和弦的情况下,由于基音相同因而无法对小节进 行分割,具有以小节整体来检测和弦的问题。而且在以前开发的设备中,在检测范围整体中检测基音。即,当检 测范围为小节的时候,在小节整体中以强音为基音。但在爵士乐那样的 基音频繁变化(基音以4分音符等变化)时,无法通过该方法正确检测 基音。发明内容本发明是鉴于上述问题而提出的,提供即使在小节内例如具有相同 基音而发生和弦变化的情况下也能正确地检测和弦的和弦名检测装置以 及和弦名检测用程序。因而,本发明的和弦名检测装置的基本特征在于,该和弦名检测装 置具有 输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的 帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,并根据该表示每个拍子的全体音符的变化程度的值,来检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将它们分别按照强度从强到弱的顺序重新排列,然后根 据后续区间的强音中的最强的3个以上的M个音阶音符中是否有C个以 上被包含在其之前的区间的强音中的最强的3个以上的N个的音阶音符
中,来判定和声是否产生变化,根据该和声的变化程度来确定是否可以 将小节分割为多个;以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度,来确定各和弦检测范围的和弦名,并且在通过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下,根据基音和该小节的各音阶音符的强度,来确定该小节的和弦名。在上述结构中,不仅根据基音,还根据和声的变化程度来对小节进 行分割。当基音不同、或和声的变化程度大的情况下对小节进行分割来检测和弦。该小节的分割不仅是分割成前半部分和后半部分的2分割, 当曲子为4节拍的情况下,还可以再将前半部分和后半部分分别分割成 一半,将小节整体分割为4部分,如有需要,还可以进一步分割。关于 基音的检测,并非在检测范围全体中进行检测,而是仅在检测范围的开 头1拍中进行检测。这是由于即使在基音频繁变动的情况下最初的第1 拍也大多弹奏和弦的根音。关于基音的检测,与以前开发的设备相同。即,以规定的时间间隔 (下面称为"帧")来对输入波形进行FFT运算,根据求出的强度谱来求 出各音阶音符的强度,计算该各音阶音符的强度在每一帧中的增量值, 在全部音阶音符中对该增量值进行合计而求出每帧的全体音符的变化程 度,根据该每帧的全体音符的变化程度来检测拍子(拍子间隔和拍子位 置)。当检测出了拍子位置时,按照每个拍子间隔来计算各音阶音符的强 度的平均,计算该各音阶音符的强度的平均在每个拍子中的增量值,在 全体音阶音符中对该增量值进行合计而求出每个拍子的全体音符的变化 程度,根据该每个拍子的全体音符的变化程度来检测节拍和小节线位置。 由于这样来检测小节,所以将小节分为前半部分和后半部分这2个部分, 在各个部分中检测基音。关于基音,是使用在之前求出的每帧的各音阶 音符的强度中的基音域(例如E1 E3)的强度,对该检测范围内的强度 进行平均,将平均强度大的作为基音。或者对12个音阶音符进行平均, 将最强的音阶音符作为基音。
在以前开发的设备中,对检测范围内的强度进行平均,将平均强度 大的作为基音,但在本发明中仅使用检测范围的第1拍来进行检测。其 理由如上所述。检测步骤及结构与以前开发的设备相同。接下来说明作为本发明的主要着眼点的根据和声的变化程度进行的 小节的分割。本发明中,不仅根据上述的基音,还根据和声的变化程度来对小节 进行分割。如下计算和声的变化程度。首先设定和弦检测音域。在主要演奏和声的音域中,例如为C3 E6 (C4是中央的Do)。在小节的一半等检测区间对该和弦检测音域的每帧的各音阶音符的强度进行平均。然后再按照每12个音阶音符(C、 C#、 D、 D#.....B)对平均后的各音阶音符的强度进行累积,除以累积的数目,求出12个音阶音符的平均强度。在小节的前半部分和后半部分求出该和弦检测音域的12个音阶音符的平均强度,按照强弱顺序对它们进行重新排列。如图15(a)(b)所示,调査后半部分的强音中的例如最强的3个(将该数设为M)是否包含在前半部分的例如最强的3个(将该数设为N)之中。当所包含的数量例如在3个(将该数设为C)以上时(即包含全部), 判断为在小节的前半部分和后半部分没有和声的变化,不进行基于和声 的变化程度的小节分割。通过适当设定M、 N、 C的值,从而可以改变基于该和声的变化程 度的小节分割的强度。在之前的例子中M、 N、 C的值都为3,非常认真 地检查了和声的变化,但例如设为]\4=3、 N=6、 C-3 (后半部分的最强的 3个音符是否包含于前半部分的最强的6个音符中),则只要为某种程度 上相似的声音,就能判断为是相同和声。之前描述了在4节拍的情况下,将前半部分和后半部分再分成一半, 将小节整体分割为4部分的情况,但在前半部分和后半部分的分割判断 中,设1VK3、 N=3、 C=3,在判断是否进一步将前半部分和后半部分再分 成一半的判断中,设M-3、 N=6、 C=3,从而可以进行适合于实际的一般
音乐的更准确的判断。在本发明的结构中,不仅根据基音,还根据和声的变化程度来对小 节进行分割,来检测和声,所以即使基音相同的情况下,当和声的变化 程度大时,也对小节进行分割来检测和弦。即,即使在具有例如相同基 音的小节内和弦产生变化的情况下也可以准确地检测和弦。关于该小节 的分割,可以根据基音的变化程度、和声的变化程度来进行各种分割。本发明第二方面的结构是使用其他结构来构成本发明第一方面的基 于和声的变化程度的小节分割的结构。艮口,本发明第二方面的和弦名检测装置构成为具有输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的 帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,并根据表示该每帧的全体音符的变化程度的强度增量值的合计,来检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,并根据该表示每个拍子 的全体音符的变化程度的值,来检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是
否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间,在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将这12个音阶音符的平均强度根据强度小的一方的强度 来进行归一化,计算各音阶音符的强度的欧几里得距离,根据该欧几里 得距离是否超过所有帧的所有音符的强度的平均值XT,来判定和声是否 产生变化,根据该和声的变化程度来确定是否可以将小节分割为多个; 以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度,来确定各和弦检测范围的和弦名,并且在 通过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下,根据基音和该小节的各音阶音符的强度,来确定该小节的和弦名。 上述结构与本发明第一方面的结构不同,是通过构成为计算各音阶音符的强度的欧几里得距离,从而检测和声变化的程度,对小节进行分 割来检测和弦。其中,此时在单纯计算欧几里得距离时,由于急剧的音提高(乐曲 开始等)或急剧的音衰减(乐曲结束、中断等)而使欧几里得距离成为 大的值,有可能虽然和声没有变化但仅根据音符的强弱而对小节进行分 割。于是,如图17所示,在计算欧几里得距离之前,将各音阶音符的强 度归一化(图17 (a)如图17 (c)所示进行归一化,并且图17 (b)如 图17 (d)所示进行归一化)。此时,如果不根据强度大的一方而根据强 度小的一方(参照图17 (a) (d)),则在急剧的音符变化下欧几里得距 离变小,不会错误地进行小节分割。通过下式16来计算上述各音阶音符的强度的欧几里得距离。[式16] 欧几里得距离=_Vll 2 (PowerOfNote2BJ - PowetOlNotelK!) * (PowerOfNote2tC — PowerOlNotelDJ) i=oPowerOfNotel:和弦检测范围1的12个音阶音符的平均强度的数组 (从C到B的12个)PowerOfNote2:和弦检测范围2的12个音阶音符的平均强度的数组 (从C到B的12个)例如在该欧几里得距离超过所有帧的所有音符的强度的平均时对小 节进行分割。进一步具体而言,可以在(欧几里得距离>所有帧的所有音符的强度 的平均值XT)时对小节进行分割。如果改变该式的值T,则可以将小节 分割的阈值改变(调整)为任意值。本发明第三方面和第四方面的结构是关于通过由计算机读取并执 行,以作为上述本发明第一方面和第二方面的和弦名检测装置的计算机 程序的发明。艮口,作为用于解决上述课题的结构,公开了使用计算机的结构来执 行上述本发明第一方面和第二方面中所规定的和弦名检测装置的各结构 中的处理单元的可由该计算机读取并执行的计算机程序。当然这些结构 不限于计算机程序,当然也可以作为后述那样的存储了具有同样功能的 程序的记录介质的结构被提供。此时,所谓计算机,除了包含中央运算 处理装置的结构的通用计算机的结构之外,还可以包含面向特定处理的 专用机等,只要是伴随有中央运算处理装置的结构,则没有特别限定。用于使计算机执行上述各处理的这种程序一旦被计算机读取,则执 行与通过本发明第一方面和第二方面中所规定的装置结构中的任一个单 元所达成的处理相同的处理。而且通过使用现有的硬件资源来执行该计算机程序,从而可以容易 地通过现有的硬件来执行作为新应用的本发明第一方面和第二方面所规 定的和弦名检测装置的结构。而且通过把这种计算机程序记录在上述记
录介质中,易于将其作为软件商品进行发布、销售。除此之外,作为记录介质的结构,除了上述形式的情况之外,还可以为RAM和ROM等内 部存储装置的结构和硬盘等外部存储装置的结构,如果将这种程序记录 于这些存储装置中,则当然也包含在本发明所规定和存储介质中。而且,执行后述的本发明第三方面和第四方面所述的各单元中的一 部分处理的功能是通过组装到计算机内的功能(既可以是以硬件方式组 装到计算机中的功能,也可以是通过组装到该计算机中的操作系统和其 他应用程序等实现的功能)来实现的,在上述程序中也可以包含调用或 链接到可由该计算机达成的功能的命令。这是因为,通过例如由操作系统等达成的功能中的一部分来代替执 行本发明第三方面和第四方面所规定的各单元的一部分,并非直接记录 用于实现该功能的程序或模块等,如果调用或者链接到实现这些功能的 操作系统的功能的一部分,则实质上成为相同的结构。上述程序除了成为自身使用的对象之外,还可以如后所述那样记录 在记录介质中被发布或销售,还可以通过通信等被发送,从而作为转让 的对象。其中本发明第三方面的结构对应于上述本发明第一方面的结构,作 为其具体结构, 一种和弦名检测用程序,通过由计算机读取并执行该和弦名检测用程序,从而使该计算机作为如下单元发挥作用输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的 帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,并根据表示该每帧的全体音符的变化程度的强度增量值的合计, 来检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值,求出表示每个拍子的全体音符的变化程度的值,并根据该表示每个拍子 的全体音符的变化程度的值,来检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将它们分别按照强度从强到弱的顺序重新排列,然后根 据后续区间的强音中的最强的3个以上的M个音阶音符中是否有C个以 上被包含在其之前的区间的强音中的最强的3个以上的N个的音阶音符 中,来判定和声是否产生变化,并根据该和声的变化程度来确定是否可 以将小节分割为多个;以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度,来确定各和弦检测范围的和弦名,并且在 通过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况 下,根据基音和该小节的各音阶音符的强度,来确定该小节的和弦名。并且本发明第四方面的结构是对应于上述第二方面的结构的和弦名 检测用计算机程序,作为其具体结构,通过由计算机读取并执行该和弦 名检测用程序,从而使该计算机作为如下单元发挥作用
输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,并根据该表示每个拍子 的全体音符的变化程度的值,来检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将这12个音阶音符的平均强度根据强度小的一方的强度 来进行归一化,计算各音阶音符的强度的欧几里得距离,根据该欧几里 得距离是否超过所有帧的所有音符的强度的平均值XT,来判定和声是否
产生变化,根据该和声的变化程度来确定是否可以将小节分割为多个; 以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度,来确定各和弦检测范围的和弦名,并且在通过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下,根据基音和该小节的各音阶音符的强度,来确定该小节的和弦名。 根据本发明第一方面至第四方面的和弦名检测装置以及和弦名检测 用程序,能获得即使在小节内例如具有相同基音而发生和弦变化的情况 下,也能正确地检测和弦的优良效果。


图1是以前开发的设备的节奏检测装置的整体框图。图2是音阶音符强度检测部2的结构的框图。图3是表示拍子检测部3的处理流程的流程图。图4是表示某乐曲的一部分的波形与各音阶音符强度、各音阶音符强度增量值的合计的图的图表。图5是表示自相关性计算的概念的说明图。图6是说明开头的拍子位置的确定方法的说明图。图7是表示最开始的拍子位置确定之后的确定其以后的拍子位置的方法的说明图。图8是表示根据s的值而改变的系数k的分布状态的图表。图9是表示第2个之后的拍子位置确定方法的说明图。图10是表示拍子检测结果的确认画面的例子的画面显示图。图11是表示小节检测结果的确认画面的例子的画面显示图。图12是本实施例1中的本发明的和弦检测装置的整体框图。图13是表示乐曲的相同部分的和弦检测用音阶音符强度检测部5所输出的各帧的音阶音符强度的图表。图14是表示基音检测部6的基音检测结果的显示例的图表。
图15是表示小节前半部分和后半部分的各音阶音符强度的状态的 各音阶音符强度示意图。图16是表示和弦检测结果的确认画面的例子的画面显示图。 图17是表示权利要求2的第2小节分割确定单元中的各音阶音符强 度的欧几里得距离的计算方法的概要的说明图。标号说明l输入部;2拍子检测用音阶音符强度检测部;3拍子检测部;4小 节检测部;5和弦检测用音阶音符强度检测部;6基音检测部;7第1小 节分割确定部;8第2小节分割确定部;9和弦名确定部;20波形预处理 部;21FFT运算部;22强度检测部;23、 30、 40、 50、 60、 90缓冲器。
具体实施方式
下面与图示例一并说明本发明的实施方式。图1是表示本申请人的以前开发的设备中作为该实施例结构表示出的节奏检测装置的主体框图。根据该图,本节奏检测装置的结构具有 输入声音信号的输入部h根据所输入的声音信号,以规定的时间间隔(帧)来进行FFT运算,并根据求得的强度谱来求出每帧的各音阶音符强度的音阶音符强度检测部2;对所有的音阶音符合计该每帧的各音阶音符强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值的 合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计,检测平均的拍子间隔和各拍子的位置的拍子检测部3;计算该每个拍子的各 音阶音符的强度的平均值,对所有的音阶音符合计该每个拍子的各音阶 音符的平均强度的增量值,求出表示每个拍子的全体音符的变化程度的 值,根据该表示每个拍子的全体音符的变化程度的值,检测节拍和小节线位置的小节检测部4。输入音乐声音信号的上述输入部1是输入进行节奏检测的对象的音乐声音信号的部分。其既可以通过A/D变换器(未图示)来将从话筒等 设备输入的模拟信号变换为数字信号,又可以当为音乐CD等的经过了
数字化的音乐数据的情况下,直接作为文件取入(割裂,ripping),指定 该文件来打开。当这样输入的数字信号为立体声的时候,为简化其后的 处理而将其变换为单声道。该数字信号被输入到音阶音符强度检测部2中。该音阶音符强度检 测部2由图2的各部分构成。其中,波形预处理部20构成为将音乐声音信号中来自上述输入部1 的声音信号下采样(Down sampling)为适合于今后处理的采样频率。下釆样率是根据用于拍子检测的乐器的音域来确定的。即,为了使 铙钹、镲等的高音域的节奏乐器的演奏声音反映到拍子检测上,需要使 下采样之后的采样频率为高频,但在主要从基音和大鼓、小鼓等的乐器 声音和中音域的乐器声音中进行拍子检测时,无需使下采样之后的采样 频率很高。例如设检测出的最高音为A6 (C4为中央的"Do")时,由于A6的 基本频率为大约1760Hz (A4^440Hz时),所以下采样之后的采样频率中 奈奎斯特频率(Nyquist frequency)大于等于1760Hz,只要大于等于3520 Hz即可。由此,当原本的采样频率为44.1kHz (音乐CD)的情况下,下 采样率为1/12左右即可。此时,下采样之后的采样频率为3675 Hz。关于下采样处理,通常在通过了使作为下釆样之后的采样频率的一 半的频率的奈奎斯特频率(此例中为1837.5Hz)以上的分量截止的低通 滤波器之后,通过跳读数据(本例中为放弃波形样本的12个中的11个) 来执行。这样进行下釆样处理的目的在于,在其后的FFT运算中,通过降低 同样为获得频率分解能所需的FFT点数,来减少FFT运算时间。而且如音乐CD那样已通过固定的采样频率对声源进行了采样的情 况下,需要这种下采样,但在音乐声音信号的输入部1通过A/D变换器 将从话筒等设备输入的模拟信号变换为数字信号的情况下,当然可以通 过将A/D变换器的采样频率设定为下采样之后的采样频率,从而可以省 略该波形预处理部。当这样的波形预处理部20的下采样结束之后,以规定的时间间隔(帧)来通过FFT运算部21对波形预处理部的输出信号进行FFT (快速 傅里叶变换)。设FFT参数(FFT点数和FFT窗口的移位量)为适合于拍子检测的 值。即,如果为了提高频率分解能而增大FFT点数,则会增大FFT窗口 的尺寸,会用更长时间进行1次FFT,时间分解能会降低,对这种FFT 特性必须加以考虑(即,优选在拍子检测时牺牲频率分解能来提高时间 分解能)。虽然存在不使用与窗口尺寸相同长度的波形,而通过仅在窗口 的一部分上设置波形数据,对剩余部分嵌入0,从而即使增大了 FFT点 数也不会使时间分解能变差的方法,但为了正确检测低音侧的强度,需 要某种程度的波形采样数。考虑上述情况,本实施例中,设定为FFT点数是512、窗口的移位 是32采样(窗口的重叠是15/16)、没有嵌入0。如果用这种设定来进行 FFT运算,则时间分解能为大约8.7ms、频率分解能为大约7.2Hz。如果 考虑在四分音符=300的节奏的乐曲中,32分音符的长度为25ms的情况, 则可知时间分解能为大约8.7ms这个值是足够的。这样按照每帧进行FFT运算,根据分别对其实数部和虚数部的平方 的值的和的平方根来计算强度,将该结果发送给强度检测部22。在强度检测部22中,根据在FFT运算部21计算出的强度谱来计算 各音阶音符强度。由于FFT只是对将采样频率除以FFT点数得到的值的 整数倍的频率的强度进行计算,所以为了根据该强度谱来检测各音阶音 符强度,需要进行如下处理。即,对于计算音阶音符的所有音符(Cl至 A6),将与该各音符的基本频率的上下50森特(cent)的范围内(IOO森 特为半音符)的频率相当的强度谱内具有最大强度的频谱的强度作为该 音阶音符的强度。当对所有的音阶音符检测完强度时,将其保存在缓冲器内,使波形 的读取位置推进规定的时间间隔(l帧;之前的例子中为32个样本),重 复FFT运算部21和强度检测部22的处理直到波形结尾处。由此,音乐声音信号中输入到输入部1的声音信号中每隔规定时间 的各音阶音符强度保存在缓冲器23中。 下面说明图1的拍子检测部3的结构。该拍子检测部3通过图3所 示的处理流程来执行。拍子检测部3以音阶音符强度检测部输出的每帧的各音阶音符强度 的变化为基础检测平均的拍子(拍)间隔(即节奏)和拍子位置。为此,拍子检测部3首先计算各音阶音符强度的增量值的合计(用所有的音阶音符来合计与之前帧的强度增量值所得的值。强度比前一帧减少的情况下加0)(步骤S100)。艮P,当设帧时间t内的第i个音阶音符强度为Li (t)时,第i个音阶音符强度的增量值Laddi (t)如下式1所示,使用该Laddi (t),可通过下式2计算帧时间t内的各音阶音符强度的增量值合计L (t)。此处,T为 音阶音符的总数。 式l<formula>formula see original document page 22</formula>式2<formula>formula see original document page 22</formula>
该合计L (t)值表示每帧的整帧上的音符变化程度。该值在声音开 始响起时急剧增大,同时鸣响的声音越多则为越大的值。由于音乐多在 拍子位置处开始响起声音,所以该值为较大值的位置很有可能在拍子位 置上。作为例子,图4表示某个乐曲的一部分的波形和各音阶音符强度、 各音阶音符强度的增量值的合计的图。上段表示波形,中央以浓淡表示 每帧的各音阶音符强度(下为低音、上为高音。该图中为从C1到A6的 范围),下段表示每帧的各音阶音符强度的增量值的合计。该图的各音阶 音符强度是从音阶音符强度检测部输出的,所以频率分解能为约7.2Hz, 成为无法用G#2以下的一部分音阶音符计算强度的不齐状态,但由于此 时目的在于检测拍子,所以即使无法测定低音的一部分音阶音符强度也 没有问题。如该图下段所示,各音阶音符强度的增量值的合计成为定期地具有 峰值的形状。该定期的峰值的位置为拍子位置。为了求出拍子位置,需要在拍子检测部3中首先求出该定期的峰值 间隔、即平均的峰值间隔。平均的峰值间隔可以根据该各音阶音符强度 的增量值的合计的自相关性来计算出来(图3;步骤S102)。如果设某帧时间t中的各音阶音符强度的增量值的合计为L (t),则 该自相关性^ (O可由下式3计算出来。式3<formula>formula see original document page 23</formula>此处,N为总帧数,r为时间延迟。图5表示自相关性计算的示意图。如该图所示,当时间延迟r为L(t) 的峰值周期的整数倍时,- (。成为较大的值。因此,如果对某范围的r 计算^ (r)的最大值,则可以求出乐曲的节奏。求得自相关性的T的范围可以根据设想的乐曲的节奏范围而发生改 变。例如如果用节拍记号来计算四分音符=30到300的范围,则计算自相 关性的范围为从0.2秒到2秒。由时间(秒)向帧的变换式如下式4所示。式4<formula>formula see original document page 23</formula>巾贞#=时间(秒),采样频率 ~~每帧的样本数~~虽然可以将该范围的自相关性- (T)为最大的H乍为拍子间隔,但 由于未必在所有乐曲中自相关性为最大时的r都为拍子间隔,所以最好根 据自相关性为极大值时的r来求出拍子间隔的候选(图3;步骤S104), 从这些多个候选中由用户确定拍子间隔(图3;步骤S106)。这样确定了拍子间隔之后(设确定的拍子间隔为rmax),首先来确定 最开头的拍子位置。
使用图6说明开头的拍子位置的确定方法。图6的上段是帧时间t 中的各音阶音符强度增量值的合计L (t),下段M (t)是在确定的拍子 间隔rmax的周期中具有值的函数。用数式表示则为下面的式5。
式5M (t) ^/1G为r^的整数倍时) \()(上述情况之外时)一边使该函数M(t)在从0到Z^M-l的范围内偏离, 一边计算L(t)和M (t)的相互相关性。相互相关性r (s)可通过上述M (t)的特性来根据下式6来计算。 式6此时的n可以根据最开始的无声部分的长度来适当确定(在图6的 例子中,n=10)。
在s为从O到r,-l的范围内求出r (s),只要求出r (s)为最大的 s,则该s的帧则为最开始的拍子位置。
一旦确定了最开始的拍子位置,则一个接一个地确定之后的拍子位 置(图3;步骤S108)。
使用图7说明该方法。设在图7的三角标记的位置处发现了开头的拍子。设距离该开头的拍子位置为拍子间隔r^x的位置为假设的拍子位置,根据其附近处L (t)和M (t)取得最大相关性的位置来确定第2个 拍子位置。即,当开头的拍子位置为bo时,求出使下面的式子中的r (s) 为最大的s值。该式的s是距离假设的拍子位置的偏离,是下式7中的范 围内的整数。F是摆动的参数,为0.1左右的值是适当的,但在节奏摇摆 大的乐曲中,也可以取最大值。N在5左右较好。K是根据s的值而变化的系数,例如成为图8所示的正态分布。式7nl'Os) = H k ' L(bo十T max ' j + S) (— TT max F ^ S ^T maxF)
如果求出r (s)为最大的s值,则第2个拍子位置b,通过下式8求出。
式8<formula>formula see original document page 25</formula>
之后还可以同样求出第3个及之后的拍子位置。
在节奏几乎不变化的乐曲中,虽然可以通过该方法来求出拍子位置 直到乐曲结尾,但实际的演奏多少会发生节奏变动,经常会一部分一部 分地渐渐变慢。
于是,为对应这种节奏的变动,还探讨了如下的方法。
艮P,使图7的M (t)的函数如图9那样变化。
1) 在以往的方法中,如图使各脉冲的间隔为rl、 r2、 r3、 t4日寸,r 1=t2=z~3=t4=tmax。
2) 使r 1到r 4均等地增大或减小。
由此可以对应节奏急剧变化的情况。
3) 对应rit.(逐渐舒缓、渐渐变慢)或者accel.(渐速、渐 渐变快),如下计算各脉冲间隔。
<formula>formula see original document page 25</formula>
1、 2、 4的系数不过是举例,可以根据节奏变化的大小进行改变。
4) 对3)那样的rit.或者accel.的情况下的5个脉冲位置中 的哪个位置是欲求当前拍子的位置进行改变。
将它们都组合起来,计算L (t)与M (t)的相关性,从其中最大的 值来确定拍子位置,则还可以对节奏变化的乐曲确定拍子位置。而且, 在2)和3)的情况下,还是根据s的值来改变计算相关性时的系数k的值。
而且,虽然当前使5个脉冲的大小都相同,但也可以仅增大要求出 拍子的位置(图9的假设拍子位置)的脉冲,或者离要求出拍子的位置
越远则越减小值,强调求出拍子的位置的各音阶音符强度的增量值的合 计[图9的5)]。如上确定了各拍子的位置之后,也可以将该结果保存在缓冲器30 中,并显示检测的结果,请用户确认,修改错误之处。图io表示拍子检测结果的确认画面的例子。该图的三角形标记的位置是检测出的拍子位置。如果按下了 "再现"按钮,则当前的音乐声音信号经过D/A变换而从扬声器等再现。当前的再现位置如图所示,通过竖线等再现位置指示 器来显示,所以可以一边听音乐一边确认拍子检测位置的错误。而且, 如果与检测的原波形的再现同时,在拍子位置的定时上再现例如节拍器 那样的声音,则不仅可以目视确认还能用声音来确认,能更易于判断错误检测。作为再现该节拍器声音的方法,例如可考虑MIDI设备等。按下"拍子位置修正"按钮来进行拍子检测位置的修正。 一旦按下 该按钮,则在画面上显现十字光标,所以在最开始出现拍子检测错误的地方点击正确的拍子位置。从被点击的地方稍微靠前处(例如^m的一 半的位置)起将之后的拍子位置都清除掉,将被点击的地方作为假设的 拍子位置,对之后的拍子位置进行再次检测。 下面说明节拍和小节的检测。由于通过之前的处理已经确定了拍子位置,所以下面求出每个拍子 的音符的变化程度。每个拍子的音符的变化程度是根据音阶音符强度检测部2输出的每帧的各音阶音符强度来计算的。当设第j个拍子的帧数为bj、其前后的拍子的帧为bj-l、 bj+l时,第j个拍子的每个拍子的音符的变化程度的计算方法是计算从帧bj-l到bj一l的帧的各音阶音符强度的平均、和从帧bj到bj+"为止的帧的各音阶 音符强度的平均,根据其增量值求出各音阶音符的每个拍子的音符的变 化程度,用所有的音阶音符来对该变化程度进行合计来计算。艮P,当帧时间t中的第i个音阶音符强度为Li (t)时,第j个拍子的第i个音阶音符强度的平均I^gi (j)为下式9,所以第j个拍子的第i个 音阶音符的每个拍子的音符的变化程度Baddi (j)如下式10所示。
式9<formula>formula see original document page 27</formula>因此,第j个拍子的每个拍子的音符的变化程度B (j)如下式11所示。此处T为音阶音符的总数。式ll<formula>formula see original document page 27</formula>图11的最下段是该每个拍子的音符的变化程度。根据该每个拍子的 音符的变化程度求出节拍和第1拍的位置。节拍是根据每个拍子的音符的变化程度的自相关性求出的。 一般由 于认为音乐中大多在第1拍上音符发生变化,所以可以根据该每个拍子 的音符的变化程度的自相关性求出拍子。例如根据下式12所示的求出自 相关性^ (r)的式子,在延迟r为从2到4的范围内求得每个拍子的音 符的变化程度B (j)的自相关性- (r),将自相关性- (r)为最大的延迟H乍为节拍的数。 式12<formula>formula see original document page 27</formula>N是总拍子数,在7=2~4的范围内计算- (r),将- (r)为最大的 r作为拍子的数量。下面求第1拍,将每个拍子的音符的变化程度B (j)最大的位置作
为第1拍。即,当设- (r)为最大的r为rm狀、下式13的X (k)为最 大的k为kma^寸,第kmax个的拍子成为最开始的第l拍的位置,之后将 满足rmaJ勺拍子位置作为第l拍。 式13<formula>formula see original document page 28</formula>nmax是在r max 'n+k<N的条件下为最大的n。如上所述,优选在确定了节拍和第1拍的位置(小节线的位置)之 后,将该结果保存在缓冲器40中,并对检测结果进行画面显示,由用户 进行变更。特别地,变节拍的乐曲无法使用该方法进行处理,所以需要 由用户指定变节拍的位置。通过上述结构可以根据人所演奏的节奏变化的演奏的声音信号来检 测乐曲全体的平均节奏和正确的拍子(拍)的位置,以及检测乐曲的节 拍和第1拍的位置。[实施例1]图12是本发明的和弦检测装置的整体框图。该图中,拍子检测和小 节检测的结构与上述结构基本相同,在相同结构中,由于节奏检测用和 和弦检测用的结构与上述结构有不同的地方,所以除去算式等,如下重 复相同说明。根据该图,本和弦检测装置构成为具有输入声音信号的输入部l; 根据所输入的声音信号,以规定的时间间隔(帧)使用适合于拍子检测 的参数来进行FFT运算,并根据求得的强度谱来求出每帧的各音阶音符 强度的拍子检测用音阶音符强度检测部2;对所有的音阶音符合计该每帧 的各音阶音符强度的增量值,求出表示每帧的全体音符的变化程度的强 度增量值的合计,根据表示该每帧的全体音符的变化程度的强度增量值 的合计,检测平均的拍子间隔和各拍子的位置的拍子检测部3;计算该每 个拍子的各音阶音符强度的平均值,对所有的音阶音符合计该每个拍子 的各音阶音符的平均强度的增量值,求出表示每个拍子的全体音符的变
化程度的值,根据该表示每个拍子的全体音符的变化程度的值,检测节 拍和小节线位置的小节检测部4;根据上述所输入的声音信号,以不同于 之前的拍子检测时的时间间隔的其他的规定时间间隔(帧),使用适合于 和弦检测的参数来进行FFT运算,根据求得的强度谱来求出每帧的各音 阶音符强度的和弦检测用音阶音符强度检测部5;将检测出的各音阶音符 强度中的各小节设定为若干个检测范围,根据各检测范围内相当于第1 拍的部分的低音域侧的音阶音符强度,来检测各检测范围的基音的基音 检测部6;根据所检测出的基音在各检测范围中是否不同,来判定基音是 否产生变化,根据该基音是否产生变化来确定是否可以将小节分割为多 个的第1小节分割确定部7;同样将小节设定为若干个和弦检测区间,在 主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对每 帧的各音阶音符强度进行平均,再按照每12个音阶音符对这些平均后的 各音阶音符强度进行累积,用累积后的数来进行除法运算求出12个音阶音符的平均强度,将它们分别按照强度从强到弱的顺序重新排列,根据是否有C个以上的后续区间的强音中的最强的M个(3个以上)音阶音 符包含于其之前的区间的强音中的最强的N个(3个以上)的音阶音符 之中,来判定和声是否产生变化,根据该和声变化的程度来确定是否可 以将小节分割为多个的第2小节分割确定部8;以及当通过第1或第2小 节分割确定部7、 8确定为需要将小节分割为若干个和弦检测范围的情况 下,根据基音和各和弦检测范围中的各音阶音符的强度来确定各和弦检 测范围的和弦名,当通过第1或第2小节分割确定部确定为不需要对小 节进行分割的情况下,根据基音和该小节的各音阶音符强度来确定该小 节的和弦名的和弦名确定部9。输入音乐声音信号的上述输入部1是输入进行和弦检测的对象的音 乐声音信号的部分,但由于其基本结构与上述结构中的输入部1相同, 所以省略其详细说明。其中,当通常定位于中心上的口声(vocal sound) 妨碍后面的和弦检测时,也可以通过将右声道的波形和左声道的波形相 减来进行口声消除。该数字信号被输入到拍子检测用音阶音符强度检测部2和和弦检测
用音阶音符强度检测部5中。这些音阶音符强度检测部都由上述图2的 各部分构成,结构完全相同,所以能够仅改变参数来再次使用相同设备。 而且作为该结构进行使用的波形预处理部20与上述相同地构成,将 音乐声音信号中来自上述输入部1的声音信号下采样为适合于今后处理 的采样频率。其中,既可以利用拍子检测用和和弦检测用来改变下采样 之后的采样频率、即下采样率,也可以为了节约下采样的时间而使其相 同。在拍子检测用时,下采样率是根据用于拍子检测的音域来确定的。 为了使铙钹、镲等的高音域的节奏乐器的演奏声音反映到拍子检测上, 需要使下采样之后的采样频率为高频,但为了主要从基音和大鼓、小鼓 等的乐器声音和中音域的乐器声音中进行拍子检测时,也可以使用与下 面的和弦检测时相同的下采样率。和弦检测用的波形预处理部的下采样率根据和弦检测音域而改变。 所谓和弦检测音域是指和弦名确定部在检测和弦时使用的音域。例如设和弦检测音域为从C3到A6 (C4为中央的Do)时,由于A6的基本频率 为大约1760Hz (A4-440Hz时),所以下采样之后的采样频率只要是奈奎 斯特频率(Nyquist frequency)大于等于1760Hz的3520 Hz以上即可。 由此,当原本的采样频率为44.1kHz (音乐CD)的情况下,下采样率为 1A2左右即可。此时,下采样之后的采样频率为3675Hz。通常在通过了将作为下采样之后的采样频率的一半频率的奈奎斯特 频率(此例中为1837.5Hz)以上的分量截止的低通滤波器之后,通过跳 读数据(本例中为放弃波形样本的12个中的11个)来执行下采样处理。 关于这点,基于上述结构中说明的理由相同的理由。这样结束了波形预处理部20的下采样之后,以规定的时间间隔,通 过FFT运算部21来对波形预处理部的输出信号进行FFT (快速傅里叶变 换)。设FFT参数(FFT点数和FFT窗口的移位量)在拍子检测时与和弦 检测时为不同的值。这是由于如下的FFT的特性:如果为了提高频率分 解能而增大FFT点数,则会增大FFT窗口的尺寸,会用更长时间进行l
次FFT,时间分解能会降低,(即,优选在拍子检测时牺牲频率分解能来提高时间分解能)。虽然存在不使用与窗口尺寸相同长度的波形,而通过仅在窗口的一部分上设置波形数据,对窗口的剩余部分嵌入o,从而即使增大了 FFT点数也不会使时间分解能变差的方法,但在本实施例的情况 下,为了也能正确检测低音侧的强度,需要某种程度的波形样本数。考虑上述情况,本实施例中,在拍子检测时,设定为FFT点数是512、 窗口的移位是32个样本(窗口的重叠是15/16)、没有嵌入0;而在和弦 检测时,设定为FFT点数是8192、窗口的移位是128个样本(窗口的重 叠是63/64)、在一次FFT中针对波形样本使用1024个样本。如果用这种 设定来进行FFT运算,则在拍子检测时,时间分解能大约为8.7ms、频 率分解能大约为7.2Hz;而在和弦检测时,时间分解能大约为35ms、频 率分解能大约为0.4 Hz。由于当前准备求出强度的音阶音符在从Cl到 A6的范围内,所以和弦检测时的频率分解能约0.4Hz也能应对频率差最 小的C1和CW的基本频率之差、即约1.9Hz。而且,如果考虑四分音符 =300的节奏的乐曲中32分音符的长度为25ms,则可知和弦检测时的时 间分解能为约8.7ms是足够的。这样按照每帧进行FFT运算,根据分别对该实数部分和虚数部进行 平方的值的和的平方根来计算强度,将该结果发送给强度检测部22。在强度检测部22中,根据在FFT运算部21计算出的强度谱来计算 各音阶音符强度。由于FFT只是对将采样频率除以FFT点数得到的值的 整数倍的频率的强度进行计算,所以为了根据该强度谱来检测各音阶音 符的强度,需要进行与上述结构相同的处理。即,对于要计算音阶音符 的所有音符(Cl至A6),将与该各音符的基本频率的上下50森特(cent) 的范围内(IOO森特为半音符)的频率相当的强度谱内具有最大强度的频 谱的强度作为该音阶音符的强度。当对所有的音阶音符检测了强度时,将其保存在缓冲器内,使波形 的读取位置推进规定的时间间隔(1帧;之前的例子中拍子检测时为32 个样本、和弦检测时为128个样本),重复FFT运算部21和强度检测部 22的处理直到波形结尾处。
由此,音乐声音信号中的输入到输入部1的声音信号的每帧的各音 阶音符强度被保存在拍子检测用和和弦检测用的两种的缓冲器23和50 中。下面,由于图12的拍子检测部3和小节检测部4的结构与上述结构 的拍子检测部3和小节检测部4为相同结构,所以此处省略其详细说明。由于通过与上述结构相同的结构和步骤来确定小节线的位置(各小 节的帧号码),所以接下来检测各小节的基音。基音是根据和弦检测用音阶音符强度检测部5所输出的各帧的音阶 音符强度来检测的。图13表示与上述结构的图4相同的乐曲的相同部分的从和弦检测用 音阶音符强度检测部5所输出的各帧的音阶音符强度。如该图所示,和 弦检测用音阶音符强度检测部5的频率分解能为大约0.4Hz,所以提取出 从Cl到A6的所有音阶音符强度。在本申请人以前开发的设备中,由于基音在小节内前半部分和后半 部分有可能不同,所以将小节分割为前半部分和后半部分这两个部分, 分别在两部分检测基音,当检测出其他的基音的情况下,将和弦也分为 前半部分和后半部分进行检测。但在该方法中,当基音相同但和声不同 时,例如小节的前半部分为C和弦,后半部分为Cm和弦的情况下,由 于基音相同因而存在无法对小节进行分割,在小节整体上来检测和弦的 问题。而且,在上述以前开发的设备中,在检测范围整体中检测基音。艮口, 当检测范围为小节的时候,在小节整体中将强音作为基音。但在爵士乐 那样的基音频繁变动(基音以4分音符等变动)时,无法通过该方法正 确检测基音。因此,在本实施例中,构成为首先用基音检测部6来检测基音,但 在检测出的各音阶音符强度中将各小节设定为若干个检测范围,根据各 检测范围内相当于第1拍的部分的低音域侧的音阶音符强度来检测各检 测范围的基音。如上所述,这是由于即使在基音频繁变动的情况下,大 多数情况下最初的第1拍都弹奏和弦的根音(rootnote)。
基音是根据相当于第1拍的检测范围内的部分中的基础检测音域的 音阶音符强度的平均强度来求出的。如果设帧时间t中的第i个音阶音符强度为Li (t),则从帧f;起的fe的第i个音阶音符的平均强度Lavgi (fs、 fe)可通过下式14计算出来。 式14<formula>formula see original document page 33</formula>在基音检测音域、例如从C2到B3的范围内计算该平均强度,基音 检测部6将平均强度为最大的音阶音符确定为基音。为了在基音检测音 域中不包含音符的乐曲中或者无声部分中不错误地检测基音,也可以设 定适当的阈值,当检测出的基音的强度在该阈值以下时不检测基音。而 且,当在之后的和弦检测中把基音看得很重要的时候,也可以检査检测 出的基音是否在第1拍的基音检测范围中持续保持某强度以上,仅将更 可靠的作为基音检测出来。进而,还可以不将基音检测音域中平均强度 最大的音阶音符确定为基音,而是按照每12个音符名将该各音符名的平 均强度进行平均,将该每个音符名的强度最大的音符名确定为基音名, 在具有该音符名的基音检测音域中的音阶音符中,把平均强度最大的音 阶音符确定为基音。确定了基音之后,也可以将该结果保存在缓冲器60中,并对基音检 测结果进行画面显示,在有错误的情况下让用户进行修改。而且,由于 还考虑到根据乐曲不同基音域发生变化的情况,所以也可以由用户改变 基音检测音域。图14表示基音检测部6的基音检测结果的显示例。接着通过第1小节分割确定部7根据检测出的基音在各检测范围中 是否不同,来判定基音是否存在变化,根据该基音是否存在变化来确定 是否可以将小节分割为多个。即,如果检测出的基音在各检测范围中相 同,则确定为无需分割该小节。而且如果检测出的基音在各检测范围中 不同,则确定为需要分割该小节。此时,也可以重复判断是否还需要对 各分割后的一半部分再进行分割。另一个第2小节分割确定部8的结构中,首先设定和弦检测音域。在主要演奏和声的音域中,例如为C3 E6 (C4为中央的Do)。在小节的一半等检测区间对该和弦检测音域的每帧的各音阶音符强 度进行平均。进一步按照每12个音阶音符(C、 C#、 D、 D#、 ...、 B) 来累积平均后的各音阶音符的强度,除以累积的数,求出12个音阶音符 的平均强度。在小节的前半部分和后半部分求出该和弦检测音域的12个音阶音 符的平均强度,按照强弱顺序对它们进行重新排列。如上述图15 (a) (b)所示,调查在前半部分的例如最强的3个(将 该数设为N)音符之中是否包含后半部分的强音内的例如最强的3个(将 该数设为M)音符,根据所包含的数量是否在该数字以上,来判定和声 是否产生变化。通过该判定,第2小节分割确定部8判定该和声变化的 程度,由此确定是否可以将小节分割为多个。当所包含的数量在例如3个(将该数设为C)以上时(即包含全部), 判断为在小节的前半部分和后半部分没有发生和声的变化,第2小节分 割确定部8确定为不进行基于和声的变化程度的小节分割。通过在第2小节分割确定部8中适当设定该M、 N、 C的值,从而 可以改变基于该和声变化程度的小节分割强度。在之前的例子中该M、N、 C全部为3,非常认真地检查和声的变化,但如果例如设为M-3、 N=6、 C=3 (在前半部分的最强的6个音符中是否包含后半部分的最强的3个音 符),则只要为某种程度上相似的声音,就能判断为是相同的和声。之前描述了在4节拍的情况下,将前半部分和后半部分再分割成一 半,将小节全体分割为4部分的情况,但在前半部分和后半部分的分割 判断中,设M^3、 N=3、 C=3,通过在判断是否进一步将前半部分和后半 部分再分割成一半的判断中,设M4、 N=6、 C=3,从而可以进行适合于 实际的一般音乐的更准确的判断。和弦名确定部9构成为在通过第1或第2小节分割确定部7或者8 确定为需要将小节分割为若干个和弦检测范围的情况下,根据基音和各 和弦检测范围内的各音阶音符的强度来确定各和弦检测范围的和弦名; 在通过第1或第2小节分割确定部7或者8确定为不需要对小节进行分 割的情况下,根据基音和该小节的各音阶音符强度,来确定该小节的和 弦名。如下由和弦名确定部9进行实际的和弦名的确定。在本实施例中,设和弦检测范围与基音检测范围相同。计算和弦检测音域、例如从C3到 A6的各音阶音符的和弦检测范围的平均强度,依次从具有大的值的音阶 音符中检测多个音符名,从该多个音符名和基音的音符名中提取和弦名 候选。此时,由于不一定是强度大的音符为和弦构成音,所以检测多个例 如5个音符名的音符,从所有的组合中选出其中的2个以上的组合,根 据该选出的组合与基音的音符名提取和弦名候选。关于和弦也可以不检测平均强度为阈值以下的和弦。而且还可以由 用户来改变和弦检测音域。进而,也可以不依次从和弦检测音域中平均 强度为最大的音阶音符中提取和弦构成音符候选,而是按照每12个音符 名对该和弦检测音域内的各音符名的平均强度进行平均,从该每个音符 名的强度最大的音符名中依次提取出和弦构成音符候选。关于和弦名候选的提取,是通过由和弦名确定部9检索保存了和弦 的类型(m、 M7等)和距和弦构成音符的根音的音程的和弦名数据库来 提取的。即,从检测出的5个音符名中选出所有的2个以上的组合,彻 底调査这些音符名间的音程是否与该和弦名数据库的和弦构成音符的音 程具有关系,如果是相同音程关系,则根据和弦构成音符中的任一个音 符名计算根音,对该根音的音符名赋予和弦类型,确定和弦名。此时, 和弦的根音和5度的音有时在演奏和弦的乐器中被省略,所以即使不包 含根音和5度的音也作为和弦名候选而提取出来。在检测出基音的情况 下,把基音的音符名加在该和弦名候选的和弦名上。即,如果和弦的根 音名与基音音符名相同则原样即可,如果不同则作为分数和弦。在上述方法中,当所提取的和弦名候选过多时,也可以基于基音进 行限定。即,在检测出基音时,在和弦名候选之中删除其根音名与基音
音符名不同的候选。在提取出了多个和弦名候选的情况下,为了在其中确定某一个候选, 需要通过和弦名确定部9来计算似然度(最相似性)。似然度是根据和弦检测音域中的所有和弦构成音符的强度的平均和 基音检测音域中的和弦的根音的强度的强度来计算的。即,设所提取出 的某和弦名候选的所有构成音符在和弦检测范围内的平均强度的平均值 为Lavge、和弦的根音在基音检测范围的平均强度为La^,则如下式15所 示,通过该2个的平均来计算似然度。作为计算似然度的其他方法,也 可以使用和弦检测音域中的和弦音调(和弦构成音符)和无和弦音调(和 弦构成音符之外的音符)的(平均的)强度之比。式15此时,当和弦检测音域和基音检测音域中含有多个相同音符名的音 符时,使用其中平均强度强的音符。或者也可以分别在和弦检测音域和基音检测音域中按照每12个音符名对各音阶音符的平均强度进行平均, 使用该每个音符名的平均值。进而,还可以对该似然度的计算导入音乐知识。例如,在所有帧中 对各音阶音符的强度进行平均,按照每12个音符名对其进行平均来计算 各音符名的强度,按照该强度分布来检测曲调。然后,考虑对曲调的顺 阶和弦(Diatonic Chord)乘以某常数以使其似然度增大,或者使在构成音符 中包含曲调的自然音阶(diatonic scale)上的音符之外的音符的和弦根据 该之外的音符的数量来减小似然度等。还可以将和弦进行中经常出现的 模式(pattern)作为数据库存储,并与之比较,从而乘以某常数以使和弦 候选中常使用的进行的和弦的似然度变大。虽然将似然度最大的确定为和弦名,但也可以将和弦名的候选与似 然度一起显示,让用户选择。无论如何, 一旦由和弦名确定部9确定了和弦名,则将该结果保存 在缓冲器90中,并且将和弦名进行画面输出。图16表示和弦名确定部9的和弦检测结果的显示例。不仅对这样检
测出来的和弦名进行画面显示,而且优选使用MIDI设备等再现检测出来 的和弦和基音。这是由于一般无法仅凭看到和弦名来判断是否正确。
根据上面说明的本实施例结构,即使不是具有特别的音乐知识的专 家也能对于音乐CD等多个乐器声音被混入输入的音乐声音信号,不用 分别检测音符信息就能从全体的声音中检测和弦名。
而且根据该结构,即使构成音符相同也能进行判别,对于演奏节奏 变动的情况或者相反故意打乱节奏进行演奏的声源,也能检测出每个小 节的和弦名。
特别是在本实施例结构中,不仅根据基音,还根据和声的变化程度 来对小节进行分割,从而来检测和弦,所以即使基音相同的情况下,当 和声变化程度大时,也对小节进行分割来检测和弦。即,即使在例如具 有相同基音的小节内发生和弦变化的情况下也能正确地检测和弦。关于 该小节的分割,可以根据基音的变化程度、和声的变化程度来进行各种 分割。
本实施例结构与实施例1的结构不同,是通过计算各音阶音符强度 的欧几里得距离,从而探测和声变化程度,对小节进行分割来检测和弦 的结构。
其中,此时如果单纯计算欧几里得距离,则由于急剧的音提高(乐 曲开始等)或急剧的音衰减(乐曲结束、中断等)而使欧几里得距离成 为大的值,所以有可能虽然和声没有变化但仅根据音的强弱来对小节进 行分割。于是,如图17所示,在计算欧几里得距离之前,使各音阶音符 的强度归一化(图17 (a)如图17 (c)所示进行归一化,图17 (b)如 图17 (d)所示进行归一化)。此时,如果不根据值大的一方而根据值小 的一方(参照图17 (a) ~ (d)),则在急剧的音的变化下欧几里得距离变 小,不会错误地进行小节分割。
上述各音阶音符强度的欧几里得距离可以通过上述式16来计算出 来。例如在该欧几里得距离超过了所有帧的所有音符的强度的平均的情 况下,通过上述第1小节分割确定部7来确定对小节进行分割。
进而,详细而言,可以在(欧几里得距离>所有帧的所有音符的强度 的平均值XT)的时候对小节进行分割。如果改变该式的值T,则可以将 小节分割的阈值改变(调整)为任意值。并且,本发明的和弦名检测装置以及和弦名检测用程序不仅限于上 述图示例,当然可以在不脱离本发明主旨的范围内施加各种变更。本发明的和弦名检测装置以及和弦名检测用程序可以用于音乐宣传 视频的制作等时使视频轨道中的事件与音轨中的拍子的时刻同步的视频 编辑处理、通过拍子跟踪来发现拍子位置、切取粘贴音乐的声音信号的 波形的音频编辑处理、与人的演奏同步地控制照明的颜色/亮度/方向/特殊 效果等要素、或者自动控制观众拍手和助威等的现场舞台的事件控制、 与音乐同步的计算机图片等各种领域中。
权利要求
1.一种和弦名检测装置,其特征在于,该和弦名检测装置具有 输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的 帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,根据该表示每个拍子的全体音符的变化程度的值,检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将它们分别按照强度从强到弱的顺序重新排列,根据后 续区间的强音中的最强的3个以上的M个音阶音符中是否有C个以上被包含在其之前的区间的强音中的最强的3个以上的N个的音阶音符中,来判定和声是否产生变化,根据该和声的变化程度来确定是否可以将小节分割为多个;以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度来确定各和弦检测范围的和弦名,并且在通 过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下, 根据基音和该小节的各音阶音符的强度来确定该小节的和弦名。
2.—种和弦名检测装置,其特征在于,该和弦名检测装置具有输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的 帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,根据该表示每个拍子的 全体音符的变化程度的值,检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将这12个音阶音符的平均强度根据强度小的一方的强度 来进行归一化,计算各音阶音符的强度的欧几里得距离,根据该欧几里 得距离是否超过所有帧的所有音符的强度的平均值XT,来判定和声是否产生变化,根据该和声的变化程度来确定是否可以将小节分割为多个; 以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度来确定各和弦检测范围的和弦名,并且在通 过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下, 根据基音和该小节的各音阶音符的强度来确定该小节的和弦名。
3.—种和弦名检测用程序,其特征在于,通过由计算机读取并执行该 和弦名检测用程序,从而使该计算机作为如下单元发挥作用输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,根据该表示每个拍子的 全体音符的变化程度的值,检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将它们分别按照强度从强到弱的顺序重新排列,根据后 续区间的强音中的最强的3个以上的M个音阶音符中是否有C个以上被 包含在其之前的区间的强音中的最强的3个以上的N个的音阶音符中, 来判定和声是否产生变化,根据该和声的变化程度来确定是否可以将小 节分割为多个;以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若干个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度来确定各和弦检测范围的和弦名,并且在通 过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下, 根据基音和该小节的各音阶音符的强度来确定该小节的和弦名。
4.一种和弦名检测用程序,其特征在于,通过由计算机读取并执行该 和弦名检测用程序,从而使该计算机作为如下单元发挥作用 输入单元,其输入声音信号;第1音阶音符强度检测单元,其根据所输入的声音信号,以规定的帧间隔使用适合于拍子检测的参数来进行FFT运算,根据求出的强度谱 来求出每帧的各音阶音符的强度;拍子检测单元,其对所有的音阶音符合计该规定的每帧的各音阶音 符的强度的增量值,求出表示每帧的全体音符的变化程度的强度增量值 的合计,根据表示该每帧的全体音符的变化程度的强度增量值的合计, 检测平均的拍子间隔和各拍子的位置;小节检测单元,其计算该每个拍子的各音阶音符的强度的平均值, 对所有的音阶音符合计该每个拍子的各音阶音符的平均强度的增量值, 求出表示每个拍子的全体音符的变化程度的值,根据该表示每个拍子的 全体音符的变化程度的值,检测节拍和小节线位置;第2音阶音符强度检测单元,其根据上述所输入的声音信号,以不 同于之前拍子检测时的帧间隔的其他规定的帧间隔,使用适合于和弦检 测的参数来进行FFT运算,根据求出的强度谱来求出每帧的各音阶音符 的强度;基音检测单元,其在检测出的各音阶音符的强度中,将各小节设定 为若干个检测范围,根据各检测范围内的相当于第1拍的部分的低音域 侧的音阶音符的强度来检测各检测范围的基音;第1小节分割确定单元,其根据所检测出的基音在各检测范围中是 否不同,来判定基音是否产生变化,根据该基音是否产生变化来确定是 否可以将小节分割为多个;第2小节分割确定单元,其同样将小节设定为若干个和弦检测区间, 在主要被设定为演奏和声的音域的和弦检测音域中,在上述检测区间对 每帧的各音阶音符的强度进行平均,再按照每12个音阶音符对这些平均 后的各音阶音符的强度进行累积,除以所累积的数目,求出12个音阶音 符的平均强度,将这12个音阶音符的平均强度根据强度小的一方的强度 来进行归一化,计算各音阶音符的强度的欧几里得距离,根据该欧几里 得距离是否超过所有帧的所有音符的强度的平均值XT,来判定和声是否 产生变化,根据该和声的变化程度来确定是否可以将小节分割为多个; 以及和弦名确定单元,其在通过第1或第2小节分割确定单元确定为需 要将小节分割为若千个和弦检测范围的情况下,根据基音和各和弦检测 范围中的各音阶音符的强度来确定各和弦检测范围的和弦名,并且在通 过第1或第2小节分割确定单元确定为不需要对小节进行分割的情况下, 根据基音和该小节的各音阶音符的强度来确定该小节的和弦名。
全文摘要
本发明提供和弦名检测装置以及和弦名检测用程序,该和弦名检测装置即使在小节内例如具有相同基音而和弦发生变化的情况下也能正确地检测和弦。在由第1小节分割确定部7判定为小节内基音不同的情况下,或是由第2小节分割确定部8判定为小节内的和声的变化程度大的情况下,和弦名确定部9对小节进行分割来检测和弦,使得即使在小节内具有相同基音而和弦发生变化的情况下也能正确地检测和弦。
文档编号G10H1/00GK101123085SQ20071014033
公开日2008年2月13日 申请日期2007年8月9日 优先权日2006年8月9日
发明者澄田錬 申请人:株式会社河合乐器制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1