JP2010032809A - 自動演奏装置及び自動演奏用コンピュータ・プログラム - Google Patents

自動演奏装置及び自動演奏用コンピュータ・プログラム Download PDF

Info

Publication number
JP2010032809A
JP2010032809A JP2008195428A JP2008195428A JP2010032809A JP 2010032809 A JP2010032809 A JP 2010032809A JP 2008195428 A JP2008195428 A JP 2008195428A JP 2008195428 A JP2008195428 A JP 2008195428A JP 2010032809 A JP2010032809 A JP 2010032809A
Authority
JP
Japan
Prior art keywords
beat
rhythm
tapping
tempo
sound
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008195428A
Other languages
English (en)
Inventor
Akihiro Fujita
明裕 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP2008195428A priority Critical patent/JP2010032809A/ja
Publication of JP2010032809A publication Critical patent/JP2010032809A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Auxiliary Devices For Music (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

【課題】 どのような楽器からもリズムパターンの検出が可能で、且つ曲全体を通して適していると言えるリズムパターンの検出が可能な自動演奏装置を提供する。
【解決手段】 セクション指定部13aによって指定された各セクション毎に、上記リズムパターン決定部90aによるリズムパターンの決定を行っているため、最もそのセクションに適していると言えるリズムパターンが選択されるようになる。
【選択図】 図2

Description

本発明は、音楽CD等の音楽音響信号(オーディオ信号)からその中で演奏されているリズムパターンを検出する自動演奏装置及び自動演奏用コンピュータ・プログラムに関する。
オーディオ信号からドラム音を自動採譜する装置として、例えば、後述する特許文献1がある。同文献では、FIR(有限区間インパルス応答)フィルタを用いてバスドラム、スネアドラム等の音を検出し、ドラム音を自動採譜している。
このようにして、ドラムのパートを自動採譜して、それとあらかじめ用意したリズムパターンのデータベースとのマッチングを取ってリズムパターンを検出することもできる。
特開平6−27940号
しかし、この方法では、ドラム以外の他のリズム楽器、例えば、ベースやギター、ピアノ等の演奏するリズムは判定に一切使われない。また、FIRフィルタの係数を求めるために使ったバスドラム、スネアドラム等の波形と、検出するオーディオ信号の中に含まれるバスドラム、スネアドラム等の波形とは必ずしも一致するとは限らない。
他方、楽曲はイントロ、Aメロ、Bメロ、エンディングなど複数のセクションで構成されることが多い。にもかかわらず、このような楽曲に最も近いリズムパターンを選択する場合において、曲全体を通して一つのリズムパターンを選択している。
このため、あるセクションに最適なリズムパターンであっても、別のセクションでは全く適していないリズムパターンは採用されず、全セクションに対して、ある程度適したリズムパターンが選択されることになる。すなわち、図31に示すように、曲全体を通して最適とは言えないリズムパターンが選択されてしまう問題があった。
本発明は、以上のような問題に鑑み創案されたもので、どのような楽器からもリズムパターンの検出が可能で、且つ曲全体を通して適していると言えるリズムパターンの検出が可能な自動演奏装置及び自動演奏用コンピュータ・プログラムを提供せんとするものである。
このような問題を解決するため、本発明では、入力された音響信号の波形を所定の時間間隔(後の実施例では、フレームと言う)でFFT演算し、求められたパワースペクトルから各音階音のパワーを求め、この各音階音のパワーの所定の時間毎の増分値を算出し、これを全音階音で合計して所定の時間毎の全体の音の変化度合いを求め、この所定の時間毎の全体の音の変化度合いのピークからリズム情報、すなわちリズム抽出パラメータを生成し、このリズム抽出パラメータと、予め用意し記憶されているリズム抽出パラメータ(リズムパターン)とのマッチングを取ることにより、或いは、抽出・生成されたリズム抽出パラメータと、後述するように、演奏データ記憶手段に記憶された演奏データから抽出された各演奏データのリズム抽出パラメータとのマッチングを取ることにより、入力された音響信号のリズムパターンを検出しようというものである。またその際、どのセクションに対しても各適したリズムパターンが検出されるようにするものである。
すなわち本発明に係る自動演奏装置は、より具体的には、
音響信号を入力する入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と、
入力音響信号及び/又は決定されたリズムパターンを演奏する演奏手段と
を有することを基本的特徴としている。
上記構成によれば、上記リズムパターン決定手段において、最終的に上記リズム抽出パラメータ算出手段により入力音響信号から抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関が算出され、最も相関の大きなリズムが、入力音響信号のリズムパターンとして決定されることになる。
また構成によれば、セクション指定手段によって指定された各セクション毎に、上記リズムパターン決定手段によるリズムパターンの決定を行っているため、最もそのセクションに適していると言えるリズムパターンが選択されるようになる。
さらにこのようなリズムパターン決定の前提となる、ビート(拍)間隔、各ビート位置、拍子及び小節(1拍目の位置)の検出では、入力手段に入力された音響信号から所定の時間毎の各音階音のパワースペクトルを音階音パワー検出手段によって求め、上記パワー増分値算出手段によって、この所定の時間毎(フレーム毎)の各音階音のパワーの増分値をすべての音階音について合計して所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求め、さらにビート検出手段により、この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート(拍)間隔(つまりテンポ)と各ビートの位置を検出し、次に上記小節検出手段により、このビート毎の各音階音のパワーの平均値を計算し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す上記値求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置(1拍目の位置)を検出することになる。それを前提として、上記リズムパターンは決定されることになる。
第1の発明の構成では、リズムパターン決定手段において、入力音響信号のリズムパターンを決定するために、予めリズム抽出パラメータ記憶手段に記憶させておいた複数のリズム抽出パラメータをその比較対象としている。それに対し、第2の発明の構成では、演奏データ記憶手段に、リズムパターンを含む複数の演奏データがプリセットされており、リアルタイムで、該演奏データ中に含まれるリズムパターンを抽出しながら、上記2つのパターンの比較を行って、入力音響信号のリズムパターンを決定する構成である。
すなわち、第2の自動演奏装置の構成では、
音響信号を入力する入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
を有することを特徴としている。
2つのリズム抽出パラメータ算出手段があるのは、上述のように、プリセット演奏データ中に含まれるリズムパターンを、リアルタイムで抽出しながら、上記2つのパターンの比較を行って、入力音響信号のリズムパターンを決定する構成だからである。
両構成とも、上記パワーの増分値の合計の局所的なピークを検出するピーク検出手段は、上記パワーの増分値の合計の最大値を求め、その後所定の時間毎のパワーの増分値の合計を平滑化してから、各最大値の所定分の比率より小さな増分値を全て0にして、残った所定の時間毎の局所的なピークを検出すると良い。このように処理することで、ピークがより明確に検出できるようになるからである。
他方、本発明の第3及び第4の構成は、平均的なビート間隔(テンポ)とビート位置をより誤りが少ない状態で検出できる構成に、上記リズムパターンの検出構成を、適用できるようにするものである。すなわち、その構成とは、ビート検出波形の先頭を演奏させながら、タッピング検出手段(例えばパソコンのキーボードなど)を用い、ユーザにビート位置を、タッピングしてもらうようにし、ユーザがタッピングしたビートの間隔が数拍に渡って安定してきたら(タッピングの揺らぎが一定の範囲内であると判定されたら)、その間隔をビート間隔として採用し(後述するように、テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択する)、また、安定したところのタッピング位置をビート検出の先頭ビート位置とするようにしている(正確には、揺らぎが一定の範囲内であると判定された時のタッピング位置をビート検出の先頭ビート位置として出力し、さらに、この時のビートの数値からそれより前で最も近い1拍目の位置を1拍目位置として出力している)ので、ユーザに数拍タッピングしてもらうだけで、曲全体のビート検出をより正確に行えるようになる。簡単に言えば、より誤りが少ない状態で検出できる該構成は、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出し、テンポ検出精度を上げるというものである。このように、ユーザ側に再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出し、テンポ検出精度を上げているので、それらの構成に、上記リズムパターンが検出できる本発明の構成を適用すれば、その検出精度はより高まることが予想される。
より具体的には、第3の発明の構成として、
音響信号を入力する信号入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
ユーザの拍子の入力を受ける拍子入力手段と、
ユーザのタッピング入力を検出するタッピング検出手段と、
タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
を有する自動演奏装置を提案する。
この構成は、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出することで、テンポ検出精度を上げる上述の構成に、第1の発明と同じようなリズムパターンの検出のできる構成を適用したものである。従って、第1の発明の構成より、テンポ検出精度が向上した分、リズムパターンの検出精度も向上することになる。
一方、第4の自動演奏装置の構成は、
音響信号を入力する信号入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
ユーザの拍子の入力を受ける拍子入力手段と、
ユーザのタッピング入力を検出するタッピング検出手段と、
タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
を有することを特徴としている。
この構成は、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出することで、テンポ検出精度を上げる上記構成に、第2の発明の構成と同じようなリズムパターンの検出ができる自動演奏装置の構成を適用したものである。従って、第2の発明の構成より、テンポ検出精度が向上した分、リズムパターンの検出精度も向上することになる。
また第3及び第4の発明の自動演奏装置の構成において、上記ビート位置確定手段によるビート位置を確定するには、各音階音のパワー増分値の合計と、テンポ確定手段によって確定されたビート間隔で周期を持つ関数との相互相関を計算して、求めるようにすると、テンポ検出精度が上がり、従ってまたリズムパターンの検出精度も向上する。
さらに、第3及び第4の発明の自動演奏装置の構成において、上記ビート位置確定手段によるビート位置を確定するには、各音階音のパワー増分値の合計と、テンポ確定手段によって確定されたビート間隔に+α又は−αの間隔を加算した関数との相互相関を計算して求めるようにすると、テンポ検出精度が上がり、従ってまたリズムパターンの検出精度も向上する。
加えて、第3及び第4の発明の自動演奏装置の構成において、上記ビート位置確定手段によるビート位置を確定するには、各音階音のパワー増分値の合計と、テンポ確定手段によって確定されたビート間隔から次第に広くなる又は次第に狭くなる間隔にした関数との相互相関を計算して求めるようにすると、テンポ検出精度が上がり、従ってまたリズムパターンの検出精度も向上する。
そして、第3及び第4の発明の自動演奏装置の構成において、上記ビート位置確定手段によるビート位置を確定するには、各音階音のパワー増分値の合計と、テンポ確定手段によって確定されたビート間隔から次第に広くなる又は次第に狭くなる間隔にした関数との相互相関を、その途中のビート位置をずらして計算することにより求めるようにすると、テンポ検出精度が上がり、従ってまたリズムパターンの検出精度も向上する。
上記第3及び第4の発明の自動演奏装置の構成においても、上記のように、上記パワーの増分値の合計の局所的なピークを検出するピーク検出手段は、上記パワーの増分値の合計の最大値を求め、その後所定の時間毎のパワーの増分値の合計を平滑化してから、各最大値の所定分の比率より小さな増分値を全て0にして、残った所定の時間毎の局所的なピークを検出すると良い。このように処理することで、ピークがより明確に検出できるようになるからである。
第5の発明の構成は、第1の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定している。すなわち、上述した課題を解決するための構成として、上記各手段を、コンピュータの構成を利用することで実現する、該コンピュータで読み込まれて実行可能なプログラムである。この場合、コンピュータとは中央演算処理装置の構成を含んだ汎用的なコンピュータの構成の他、特定の処理に向けられた専用機などを含むものであっても良く、中央演算処理装置の構成を伴うものであれば特に限定はない。
上記各手段を実現させるためのプログラムが該コンピュータに読み出されると、第1の発明の構成で規定された各機能実現手段と同様な機能実現手段が達成されることになる。
第5の発明のより具体的構成は、
コンピュータに読み込まれて実行されることにより、該コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と、
入力音響信号及び/又は決定されたリズムパターンを演奏する演奏手段と
して機能させることを特徴とする自動演奏用コンピュータプログラムである。
第6の発明の構成は、第2の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定しており、より具体的には、
コンピュータに読み込まれて実行されることにより、該コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
して機能させることを特徴とする自動演奏用コンピュータプログラムである。
第7の発明の構成は、第3の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定しており、より具体的には、
コンピュータに読み込まれて実行されることにより、該コンピュータを、
音響信号を入力する信号入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
ユーザの拍子の入力を受ける拍子入力手段と、
ユーザのタッピング入力を検出するタッピング検出手段と、
タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
して機能させることを特徴とする自動演奏用コンピュータプログラムである。
第8の発明の構成は、第4の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定しており、より具体的には、
コンピュータに読み込まれて実行されることにより、該コンピュータを、
音響信号を入力する信号入力手段と、
入力された音響信号を記憶する音響信号記憶手段と、
入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
ユーザの拍子の入力を受ける拍子入力手段と、
ユーザのタッピング入力を検出するタッピング検出手段と、
タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
して機能させることを特徴とする自動演奏用コンピュータプログラムである。
以上のようなプログラムの構成であれば、既存のハードウェア資源を用いてこのプログラムを使用することにより、既存のハードウェアで新たなアプリケーションとしての本発明の夫々の装置が容易に実現できるようになる。
このプログラムという態様では、通信などを利用して、これを容易に使用、配布、販売することができるようになる。また、既存のハードウェア資源を用いてこのプログラムを使用することにより、既存のハードウェアで新たなアプリケーションとしての本発明の装置が容易に実行できるようになる。
尚、第5の発明〜第8の発明の構成のいずれか1つに記載の各機能実現手段のうち一部の機能は、コンピュータに組み込まれた機能(コンピュータにハードウェア的に組み込まれている機能でも良く、該コンピュータに組み込まれているオペレーティングシステムや他のアプリケーションプログラムなどによって実現される機能でも良い)によって実現され、前記プログラムには、該コンピュータによって達成される機能を呼び出すあるいはリンクさせる命令が含まれていても良い。
これは、第1の発明〜第4の発明の構成の各機能実現手段の一部が、例えばオペレーティングシステムなどによって達成される機能の一部で代行され、その機能を実現するためのプログラムないしモジュールなどは直接存在するわけではないが、それらの機能を達成するオペレーティングシステムの機能の一部を、呼び出したりリンクさせるようにしてあれば、実質的に同じ構成となるからである。
第1の発明乃至第8の発明の自動演奏装置及び自動演奏用コンピュータ・プログラムによれば、どのような楽器からもリズムパターンの検出ができるだけでなく、リズムパターン決定手段により、セクション毎にリズム検出を行う結果、各セクションに最適なリズムパターンが選択されることになり、完成度の高い自動演奏を行うことができるようになるという優れた効果を奏し得る。
特に第3及び第4の発明の自動演奏装置及び第7及び第8の発明のコンピュータ・プログラムによれば、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出することで、テンポ検出精度を上げる構成に、上記のようなリズムパターンの検出ができる構成を適用したものであるため、他の発明の構成より、テンポ検出精度が向上した分、リズムパターンの検出精度もさらに向上している。
以下、本発明の実施の形態を図示例と共に説明する。
図1は、本発明の望ましい実施形態が適用されるパーソナルコンピュータの構成を示している。同図の構成では、後述するCD−ROMドライブ1016に、CD−ROM1016aを入れて、それに読み込ませ、実行された場合に、該パーソナルコンピュータが、本発明の自動演奏装置として利用可能なプログラムが、該CD−ROM1016aに格納されている。従って、このCD−ROM1016aを上記CD−ROMドライブ1016に読み込ませて実行させ、パーソナルコンピュータ上に、本発明の自動演奏装置が実現されることになる。
図1に示されるパーソナルコンピュータの回路概要は、システムバス1000を介して、CPU1002、ROM1004、RAM1006、画像コントロール部(図示無し)を介して接続されるディスプレイ1008、I/Oインターフェース1010、ハードディスクドライブ1020がつながっており、該システムバス1000を介して、夫々のデバイスに制御信号、データの入出力がなされることになる。
CPU1002は、CD−ROMドライブ1016により上記CD−ROM1018から読み込まれ、ハードディスクドライブ1020乃至RAM1006に格納される上記プログラムに基づき、自動演奏装置全体の制御を行う中央演算処理装置である。また後述する音階音パワー検出部20aと、パワー増分値算出部30aと、ビート検出部40aと、小節検出部50aと、ピーク検出部60aと、リズム抽出パラメータ算出部70aと、リズムパターン決定部90aとは、上記プログラムが稼働した該CPU1002によって構成される。さらに後述するセクション指定部13aは、プログラムが稼働した該CPU1002とマウス1018とで構成され、加えて後述する入力部10aと演奏部200aは、プログラムが稼働したこのCPU1002とサウンドシステム1014とで構成されることになる。
ROM1004は、本パーソナルコンピュータのBIOSなどが記憶されている格納領域である。
RAM1006は、本プログラムの格納エリアの他、ワークエリア、種々の係数、パラメータ等の、一時的な記憶領域(例えば後述するような各変数を一時的に記憶しておく)等として使用される。
ディスプレイ1008は、CPU1002の指令により、必要な画像処理を行う画像コントロール部(図示無し)によって、制御されており、その画像処理結果は、後述する表示部12aなどに表示される。そのため、該表示部12aは、ディスプレイ1008で構成されることになる。
I/Oインターフェース1010は、これを介してシステムバス1000につながるキーボード1012、サウンドシステム1014及びCD−ROMドライブ1016、マウス1018に接続されており、これらのデバイスとシステムバス1000上につながった上記デバイスとの間で、制御信号やデータの入出力がなされることになる。
このサウンドシステム1014は、プログラムが稼働した上記CPU1002と共に、後述する入力部10a及び演奏部200aを構成している。
またCD−ROMドライブ1016は、リズム検出用のプログラムが格納されたCD−ROM1016aから、該プログラムやデータなどを読み出す。そのプログラムやデータなどは、ハードディスクドライブ1020に格納され、またメインとなるプログラムは上記RAM1006上に格納され、CPU1002により実行される。
上述のように、ハードディスクドライブ1020は、上記リズム検出用プログラムの読み込み及びその実行によって、該プログラム自身と必要なデータ等を格納する。該データとしては、後述するリズム抽出パラメータ及び夫々のパラメータに対応する各リズムパターンなどがあり、ハードディスクドライブ1020は、後述するリズム抽出パラメータ記憶部80aとしても機能する。該ハードディスクドライブに記憶されるデータは、サウンドシステム1014やCD−ROMドライブ1016から入力されるものと同等の演奏データや、上述のリズム抽出パラメータ及び該パラメータに夫々対応するリズムパターン等のデータがある。
本実施形態に係る自動演奏用プログラムを、パーソナルコンピュータ(RAM1006及びハードディスクドライブ1020)に読み込ませて、(CPU1002に)実行させることで、図2に示すような自動演奏装置の構成となる。
図2は、本発明に係る自動演奏装置の全体ブロック図である。同図によれば、本自動演奏装置の構成は、音響信号を入力する入力部10aと、入力音響信号を記憶する音響信号記憶部11aと、その音響信号を表示すると共に、リズム検出用の操作表示を行う表示部12aと、表示部12aで音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定部13aと、入力音響信号から、所定の時間間隔(所定のフレーム;窓)で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出部20aと、この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出部30aと、この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出部40aと、このビート毎の各音階音のパワーの平均値を計算し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出部50aと、上記パワー増分値算出部30aによって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出部60aと、所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出部70aと、プリセット伴奏データ(プリセット演奏データ)中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶部80aと、入力音響信号から最終的に上記リズム抽出パラメータ算出部70aにより抽出された上記リズム抽出パラメータと上記リズム抽出パラメータ記憶部80aから読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズム(リズムパターン)を、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定部90aと、入力音響信号及び決定されたリズムパターンを演奏する演奏部200aとを有している。
音楽音響信号を入力する上記入力部10aは、テンポを含むリズムパターンの検出をする対象の音楽音響信号を入力する部分であり、上述のように、サウンドシステム1014により構成されている。マイク等の機器から入力されたアナログ信号をA/D変換器(図示無し)によりディジタル信号に変換しても良いし、音楽CDなどのディジタル化された音楽データの場合は、そのままファイルとして取り込み(リッピング)、これを指定して開くようにしても良い。
上記音響信号記憶部11aは、入力された音響信号を一旦記憶しておく機能を有しており、上記ハードディスクドライブ1020で構成されている。
上記表示部12aは、このようにして取り込まれた音響信号と共に、リズム検出用の操作表示を行う、後述する図3に示すような画面を表示する構成であり、上記ディスプレイ1008により構成されている。
上記セクション指定部13aは、表示部12aで音響信号が表示される際に、図3に示すように、上部のボタンスイッチアイコンの表示部位下の箇所にカーソルを動かし、その任意の箇所で、マウス1018をクリックすることで、ユーザがその入力された音響信号の任意の箇所を区切ることで、セクションを指定できるようにする機能(その指定したセクションにはセクション区切りマークが付く)を有しており、上述のように、上記プログラムが稼働したCPU1002と(表示部12a上に表示されるカーソル及び)マウス1018とで構成される。
以下図3を用い、上記セクション指定部13aによる、上記表示部12aの表示画面構成におけるセクションの具体的な指定の仕方につき説明する。
取り込まれた音響信号は、図3に示すように、音響信号表示エリアに表示される。
この上段部の表示エリアには、左から、演奏停止ボタン、演奏開始ボタン、リズム検出ボタン、演奏情報選択ボタンのボタンスイッチアイコンが表示されており、上記マウス1018でクリックすることにより、後述する演奏の停止、音響信号又は検出されたリズムパターンの演奏の開始、リズムパターンの検出、入力された音響信号又は検出されたリズムパターンの演奏情報の選択(どちらを演奏するかの選択)が夫々行われることになる。
他方、上記セクション指定部13aは、マウス1018を使って、図3の音響信号表示エリアで、カーソルをドラッグすることで、演奏区間を指定することができる。同図には、すでに網掛けの表示で、演奏区間が指定されている状態が示されている。なお、音響信号の演奏やリズムパターンの演奏に関わる動作は、演奏部200aによるので、後述する。
上記セクション指定部13aによるセクションの区切りは、次のようにして行う。
まず、上記音響信号表示エリアの下段のセクション区切りマーク表示エリアに、カーソルを持っていき、その上でマウス1018をクリックすると、その位置に、縦線に黒く塗りつぶした三角マークの入ったセクション区切りマークが挿入される。該セクション区切りマークの上で再度クリックすると、セクション区切りマークが削除される。図3では、3カ所にセクション区切りマークが挿入された状態が示されており、その状態では、入力された音響信号は、4つのセクションに分割されることになる。
上記状態で、最上段のリズム検出ボタンがクリックされると、セクション毎にリズムパターンの検出処理が行われることになる。検出されたリズムパターンは、最下段のリズム表示エリアに表示されることになる。この表示は、パターン名と演奏情報の音階、音の継続時間を簡単な図柄で表したものなどとしている。
次に、リズムパターンの検出処理について、上記図2を用いて、説明する。
入力されたディジタル信号がステレオの場合は、後の処理を簡略化するために、上記入力部10aから音階音パワー検出部20aに送られる際にモノラルのディジタル信号に変換される。
この音階音パワー検出部20aは図4の各部から構成される。そのうち波形前処理部21は、音楽音響信号の上記入力部10aからの音響信号を今後の処理に適したサンプリング周波数にダウンサンプリングする構成である。
ダウンサンプリングレートは、ビート検出に使う楽器の音域によって決定する。すなわち、シンバル、ハイハット等の高音域のリズム楽器の演奏音をビート検出に反映させるには、ダウンサンプリング後のサンプリング周波数を高い周波数にする必要があるが、ベース音とバスドラム、スネアドラム等の楽器音と中音域の楽器音から主にビート検出させる場合には、ダウンサンプリング後のサンプリング周波数はそれほど高くする必要はない。
例えば検出する最高音をA6(C4が中央のド)とする場合、A6の基本周波数は約1760Hz(A4=440Hzとした場合)となるので、ダウンサンプリング後のサンプリング周波数は、ナイキスト周波数が1760Hz以上となる、3520Hz以上にすれば良い。これから、ダウンサンプリングレートは、元のサンプリング周波数が44.1kHz(音楽CD)の場合、1/12程度にすれば良いことになる。この時、ダウンサンプリング後のサンプリング周波数は、3675Hzとなる。
ダウンサンプリングの処理は、通常、ダウンサンプリング後のサンプリング周波数の半分の周波数であるナイキスト周波数(今の例では1837.5Hz)以上の成分をカットするローパスフィルタを通した後に、データを読み飛ばす(今の例では波形サンプルの12個に11個を破棄する)ことによって行われる。
このようにダウンサンプリングの処理を行うのは、この後のFFT演算において、同じ周波数分解能を得るために必要なFFTポイント数を下げることで、FFTの演算時間を減らすのが目的である。
なお、音楽CDのように、音源が固定のサンプリング周波数で既にサンプリングされている場合は、このようなダウンサンプリングが必要になるが、音楽音響信号の入力部10aが、マイク等の機器から入力されたアナログ信号をA/D変換器によりディジタル信号に変換するような場合には、当然A/D変換器のサンプリング周波数を、ダウンサンプリング後のサンプリング周波数に設定することで、この波形前処理部21を省くことが可能である。
このようにして波形前処理部21によるダウンサンプリングが終了したら、所定の時間間隔で、波形前処理部21の出力信号を、FFT演算部22によりFFT(高速フーリエ変換)する。
このFFT演算部22は、上記プログラムが稼働した該CPU1002によって構成されている。そしてFFTのパラメータ(FFTポイント数とFFT窓のシフト量)は、ビート検出に適した値とする。つまり、周波数分解能を上げるためにFFTポイント数を大きくすると、FFT窓のサイズが大きくなってしまい、より長い時間から1回のFFTを行うことになり、時間分解能が低下する、というFFTの特性を考慮しなくてはならない。つまりビート検出時は周波数分解能を犠牲にして時間分解能をあげるのが良い。窓のサイズと同じだけの長さの波形を使わないで、窓の一部だけに波形データをセットし残りは0で埋めることによって、FFTポイント数を大きくしても時間分解能が悪くならない方法もあるが、低音側のパワーも正しく検出するためには、ある程度の波形サンプル数は必要である。
以上のようなことを考慮し、本実施例では、FFTポイント数512、窓のシフトは32サンプルで、0埋めなしという設定にした。このような設定でFFT演算を行うと、時間分解能約8.7ms、周波数分解能約7.2Hzとなる。時間分解能約8.7msという値は、四分音符=300のテンポの曲で、32分音符の長さが、25msであることを考えると、十分な値であることがわかる。
このようにして、所定の時間間隔毎にFFT演算が行われ、その実数部と虚数部のそれぞれを二乗したものの和の平方根からパワースペクトルのレベルが計算され、その結果がパワー検出部23に送られる。
パワー検出部23では、同じく上記プログラムが稼働した該CPU1002によって構成されており、FFT演算部22で計算されたパワースペクトルから、各音階音のパワーを計算する。FFTは、サンプリング周波数をFFTポイント数で割った値の整数倍の周波数のパワーが計算されるだけであるので、このパワースペクトルから各音階音のパワーを検出するために、以下のような処理を行う。つまり、音階音を計算するすべての音(C1からA6)について、その各音の基本周波数の上下50セントの範囲(100セントが半音)の周波数に相当するパワースペクトルの内、最大のパワーを持つスペクトルのパワーをこの音階音のパワーとする。
すべての音階音についてパワーが検出されたら、これをバッファに保存し、波形の読み出し位置を所定の時間間隔(先の例では32サンプル)進めて、FFT演算部22とパワー検出部23を波形の終わりまで繰り返す。
以上により、音楽音響信号の入力部10aに入力された音響信号の、所定時間毎の各音階音のパワーが、バッファ24に保存される。
また、図2のパワー増分値算出部30aは、同じく上記プログラムが稼働した該CPU1002によって構成されており、上記音階音パワー検出部20aにより、後述する図6の中段に示されるように検出される、この所定の時間(以下、この1所定時間を1フレームと呼ぶ)毎の各音階音のパワースペクトル(図6の例ではC1〜A6の縦方向に夫々示されたパワースペクトル)の増分値を、すべての音階音について合計する機能を有しており、それによって、所定の時間毎の全体の音の変化度合いを示す、後述図6の下段に示されるパワーの増分値の合計が求められることになる。
すなわち、該パワー増分値算出部30aは、各音階音のパワー増分値の合計(前のフレームとのパワーの増分値をすべての音階音で合計したもの。前のフレームからパワーが減少している場合は0として加算する)を算出し、後述するビート検出部40aに出力する。
つまり、フレーム時間tにおけるi番目の音階音のパワーをL(t)とするとき、i番目の音階音のパワー増分値Laddi(t)は、下式数1に示すようになり、このLaddi(t)を使って、フレーム時間tにおける各音階音のパワー増分値の合計L(t)は、下式数2で計算できる。ここで、Tは音階音の総数である。
Figure 2010032809
Figure 2010032809
この合計L(t)値は、フレーム毎の全体での音の変化度合いを表している。この値は、音の鳴り始めで急激に大きくなり、同時に鳴り始める音が多いほど大きな値となる。音楽はビートの位置で音が鳴り始めることが多いので、この値が大きなところはビートの位置である可能性が高いことになる。
例として、図6に、ある曲の一部分の波形と各音階音のパワー、各音階音のパワー増分値の合計の図を示す。上段が波形、中央がフレーム毎の各音階音のパワーを濃淡で表したもの(下が低い音、上が高い音。この図では、C1からA6の範囲)、下段がフレーム毎の各音階音のパワー増分値の合計を示している。この図の各音階音のパワーは、音階音パワー検出部20aから出力されたものであるので、周波数分解能が約7.2Hzであり、G#2以下の一部の音階音でパワーが計算できずに歯抜け状態になっているが、この場合はビートを検出するのが目的であるので、低音の一部の音階音のパワーが測定できないのは、問題ない。
この図の下段に見られるように、各音階音のパワー増分値の合計は、定期的にピークをもつ形となっている。この定期的なピークの位置が、ビートの位置である。
次に、図2のビート検出部40aの構成について説明する。該ビート検出部40aは、図5のような処理の流れで実行される。
ビート検出部40aは、同じく上記プログラムが稼働した該CPU1002によって構成されており、音階音パワー検出部20aが出力した所定時間毎の各音階音のパワーの変化を元に平均的なビート(拍)間隔(つまりテンポ)とビートの位置を検出する。そのために、ビート検出部40aは、ビートの位置を求めることを目的として、まずこの定期的なピークの間隔、つまり平均的なビート間隔を求める。平均的なビート間隔はこの各音階音のパワー増分値の合計の自己相関から計算できる(図5;ステップS100)。
あるフレーム時間tにおける各音階音のパワー増分値の合計をL(t)とすると、この自己相関φ(τ)は、以下の式数3で計算される。
Figure 2010032809
ここで、Nは総フレーム数、τは時間遅れである。
自己相関計算の概念図を、図7に示す。この図のように、時間遅れτがL(t)のピークの周期の整数倍の時に、φ(τ)は大きな値となる。よって、ある範囲のτについてφ(τ)の最大値を求めれば、曲のテンポを求めることができる。
自己相関を求めるτの範囲は、想定する曲のテンポ範囲によって変えれば良い。例えば、メトロノーム記号で四分音符=30から300の範囲を計算するならば、自己相関を計算する範囲は、0.2秒から2秒となる。時間(秒)からフレームへの変換式は、以下の数4式に示す通りとなる。
Figure 2010032809
この範囲の自己相関φ(τ)が最大となるτをビート間隔としても良いが、必ずしもすべての曲で自己相関が最大となる時のτがビート間隔とはならないので、自己相関が極大値となる時のτからビート間隔の候補を求め(図5;ステップS102)、これら複数の候補からユーザにビート間隔を決定させるのが良い(図5;ステップS104)。この候補からの決定については、後述する実施例2で述べる。
このようにしてビート間隔が決定したら(決定したビート間隔をτmaxとする)、まず最初に先頭のビート位置を決定する。
先頭のビート位置の決定方法を、図8を用いて説明する。図8の上段はフレーム時間tにおける各音階音のパワー増分値の合計L(t)で、下段M(t)は決定したビート間隔τmaxの周期で値を持つ関数である。式で表すと、下式数5に示すようになる。
Figure 2010032809
この関数M(t)を、0からτmax−1の範囲でずらしながら、L(t)とM(t)の相互相関を計算する。
相互相関r(s)は、上記M(t)の特性から、下式数6で計算できる。
Figure 2010032809
この場合のnは、最初の無音部分の長さに応じて適当に決めれば良い(図8の例では、n=10)。
r(s)をsが0からτmax−1の範囲で求め、r(s)が最大となるsを求めれば、このsのフレームが最初のビート位置である。
最初のビート位置が決まったら、それ以降のビートの位置を1つずつ決定していく(図5;ステップS106)。
その方法を、図9を用いて説明する。図9の三角印の位置に先頭のビートが見つかったとする。2番目のビート位置は、この先頭のビート位置からビート間隔τmaxだけ離れた位置を仮のビート位置とし、その近辺でL(t)とM(t)が最も相関が取れる位置から決定する。つまり、先頭のビート位置をbとするとき、以下の式のr(s)が最大となるようなsの値を求める。この式のsは仮のビート位置からのずれで、以下の式数7の範囲の整数とする。Fは揺らぎのパラメータで0.1程度の値が適当であるが、テンポの揺らぎの大きい曲では、もっと大きな値にしてもよい。nは5程度でよい。
kは、sの値に応じて変える係数で、例えば図10のような正規分布とする。
Figure 2010032809
r(s)が最大となるようなsの値が求まれば、2番目のビート位置bは、下式数8で計算される。
Figure 2010032809
以降、同じようにして3番目以降のビート位置も求めることができる。
テンポがほとんど変わらない曲ではこの方法でビート位置を曲の終わりまで求めることができるが、実際の演奏は多少テンポが揺らいだり、部分的にだんだん遅くなったりすることがよくある。
そこで、これらのテンポの揺らぎにも対応できるように以下のような方法を考えた。
つまり、図9のM(t)の関数を、図11のように変化させるものである。
1)は、従来の方法で、図のように各パルスの間隔をτ1、τ2、τ3、τ4としたとき、
τ1=τ2=τ3=τ4=τmax
である。
2)は、τ1からτ4を均等に大きくしたり小さくしたりするものである。
τ1=τ2=τ3=τ4=τmax+s (-τmax・F≦s≦τmax・F)これにより、急にテンポが変わった場合に対応できる。
3)は、rit.(リタルダンド、だんだん遅く)又は、accel.(アッチェレランド、だんだん速く)に対応したもので、各パルス間隔は、
τ1=τmax
τ2=τmax+1・s
τ3=τmax+2・s (-τmax・F≦s≦τmax・F)
τ4=τmax+4・s
で計算される。
1、2、4の係数は、あくまで例であり、テンポ変化の大きさによって変えてもよい。
4)は、3)のようなrit.やaccel.の場合の、5個のパルスの位置のどこが現在ビートを求めようとしている場所かを変えるものである。
これらをすべて組み合わせて、L(t)とM(t)の相関を計算し、それらの最大からビート位置を決めれば、テンポが揺らぐ曲に対してもビート位置の決定が可能である。なお、2)と3)の場合には、相関を計算するときの係数kの値を、やはりsの値に応じて変えるようにする。
さらに、5個のパルスの大きさは現在すべて同じにしてあるが、ビートを求める位置(図11の仮のビート位置)のパルスのみ大きくしたり、ビートを求める位置から離れるほど値を小さくして、ビートを求める位置の各音階音のパワー増分値の合計を強調するようにしてもよい[図11の5)]。
以上のようにして、各ビートの位置が決定したら、この結果をバッファ41に保存すると共に、検出した結果を表示し、ユーザに確認してもらい、間違っている箇所を修正してもらうようにしてもよい。
ビート検出結果の確認画面の例を、図12に示す。同図の三角印の位置が検出したビート位置である。
「再生」のボタンを押すと、現在の音楽音響信号が、D/A変換され、スピーカ等から再生される。現在の再生位置は、図のように縦線等の再生位置ポインタで表示されるので、演奏を聞きながら、ビート検出位置の誤りを確認できる。さらに、検出の元波形の再生と同時に、ビート位置のタイミングで例えばメトロノームのような音を再生させるようにすれば、目で確認するだけでなく音でも確認でき、より容易に誤検出を判断できる。このメトロノームの音を再生させる方法としては、例えばMIDI機器等が考えられる。
ビート検出位置の修正は、「ビート位置の修正」ボタンを押して行う。このボタンを押すと、画面に十字のカーソルが現れるので、最初のビート検出が間違っている箇所で正しいビート位置をクリックする。クリックされた場所の少し前(例えばτmaxの半分の位置)から後のビート位置をすべてクリアし、クリックされた場所を、仮のビート位置として、以降のビート位置を再検出する。
次に、上記小節検出部50aによる拍子および小節の検出について説明する。
これまでの処理で、ビートの位置が確定しているので、今度は、小節検出部50aによって、まずはビート毎の音の変化度合いを求める。該小節検出部50aは、同じく上記プログラムが稼働した該CPU1002によって構成されている。そしてビート毎の音の変化度合いは、音階音パワー検出部20aが出力した、フレーム毎の各音階音のパワーから計算する。
j番目のビートのフレーム数をbとし、その前後のビートのフレームをbj−1、bj+1とする時、j番目のビートのビート毎の音の変化度合いは、フレームbj−1からb−1までのフレームの各音階音のパワーの平均とフレームbからbj+1−1までのフレームの各音階音のパワーの平均を計算し、その増分値から各音階音のビート毎の音の変化度合いを求め、それらをすべての音階音で合計して計算することができる。
つまり、フレーム時間tにおけるi番目の音階音のパワーをL(t)とするとき、j番目のビートのi番目の音階音のパワーの平均Lavgi(j)は、下式数9であるから、j番目のビートのi番目の音階音のビート毎の音の変化度合いBaddi(j)は、下式数10に示すようになる。
Figure 2010032809
Figure 2010032809
よって、j番目のビートのビート毎の音の変化度合いB(j)は、下式数11に示すようになる。ここで、Tは音階音の総数である。
Figure 2010032809
図13の最下段は、このビート毎の音の変化度合いである。さらに、上記小節検出部50aは、このビート毎の音の変化度合いから、拍子と1拍目の位置を求める。
拍子は、ビート毎の音の変化度合いの自己相関から求める。一般的に音楽は1拍目で音が変わることが多いと考えられるので、このビート毎の音の変化度合いの自己相関から拍子を求めることができる。例えば、下式数12に示す自己相関φ(τ)を求める式から、ビート毎の音の変化度合いB(j)の自己相関φ(τ)を遅れτが、2から4の範囲で求め、自己相関φ(τ)が最大となる遅れτを拍子の数とする。
Figure 2010032809
Nは、総ビート数、τ=2〜4の範囲でφ(τ)を計算し、φ(τ)が最大となるτを拍子の数とする。
次に1拍目を求めるが、これは、ビート毎の音の変化度合いB(j)がもっとも大きい箇所を1拍目とする。つまり、φ(τ)が最大となるτをτmax、下式数13のX(k)が最大となるkをkmaxとするとき、kmax番目のビートが最初の1拍目の位置となり、以降、τmaxを足したビート位置が1拍目となる。
Figure 2010032809
maxは、τmax・n+k<Nの条件で最大となるn
以上のようにして、小節検出部50aにより、拍子及び1拍目の位置(小節線の位置)が決定したら、この結果をバッファ51に保存すると共に、検出した結果を画面表示して、ユーザに変更させるようにすることが望ましい。特に変拍子の曲は、この方法では対応できないので、変拍子の箇所をユーザに指定してもらう必要がある。
以上の構成により、人間が演奏したテンポの揺らぐ演奏の音響信号から、曲全体の平均的なテンポと正確なビート(拍)の位置、さらに曲の拍子と1拍目の位置を検出することが可能となる。
次に、リズムパターンの検出について説明する。
これまでの処理で、平均的なテンポ、ビート位置、拍子及び1拍目の位置が確定しているので、今度は、テンポ検出に用いたフレーム毎の全体の音の変化度合いのピークをピーク検出部60aにより検出し、そのピークから、さらに、リズム抽出パラメータ算出部70aによって、リズムに関するパラメータ(リズム抽出パラメータ)を抽出する。その後上記リズム抽出パラメータ記憶部80aに対応する複数のリズムパターンと共に記憶されたプリセット伴奏データ中に含まれる各リズム抽出パラメータと、各セクション毎にマッチングさせて、リズムパターン決定部90aにより、指定された各セクション毎に、入力音響信号のリズムパターンを決定することになる。
上記ピーク検出部60a、リズム抽出パラメータ算出部70a及びリズムパターン決定部90aは、上記プログラムが稼働した該CPU1002によって構成されている。また上記リズム抽出パラメータ記憶部80aは、上記ハードディスクドライブ1020により構成される。
図14は、リズムを検出しようとする曲に対してのリズム抽出パラメータの算出工程を示すフローチャートであり、図15は、このフローチャートに従って、求められた検出元波形からリズム抽出パラメータを示すグラフである。
図15の最上段に示すように、元波形が入力されると、上述のようにして、各音階音のパワー増分値の合計L(t)が求められる。
この各音階音のパワー増分値の合計L(t)は、そのままでは、値の変動が激しく局所的なピークを計算しにくいので、一旦該合計L(t)の最大値Lmaxを計算し(ステップS200)、図15の4段目のL(t)を平滑化したL(t)'を計算する(ステップS202)。
このように合計L(t)を平滑化してから、ピークがより明確に検出できるようにするため、各最大値の所定分の比率より小さな増分値を全て0にして、残った所定の時間毎の局所的なピークを検出する。その際、上方向ベクトルから下方向ベクトルに変わるところをピークとして、図15の5段目に示すLp(t)を計算する(ステップS204)。
上記ピーク検出部60aは、上述のように、上記パワー増分値算出部30aによって求められた、図15の2段目に示されたような所定の時間毎の全体の音の変化度合い(テンポ検出に用いたフレーム毎の全体の音の変化度合い)を示すパワーの増分値の合計についての、局所的なピークを検出する。
図15の第4段目に示されるように、局所的なピークは、まず、幾つかのフレームの値をまとめて滑らかにし、その後極大値を求めることにより得る。
tは、図15に記載してあるように、フレーム(窓)数であり(Nは総フレーム数)、同図の3段目に示すビート位置(上向き三角形)の各間隔を16分割したk(ビートを16個に区切った単位)の値に直す。すなわち、ビート区間を16に分割した各区間でLp(t)の最大値を計算して、図15の6段目に示す曲のリズム抽出パラメータR(k)を求める(ステップS206)。
さらに、該R(k)の最大値を計算して、後述するように、リズム抽出パラメータ記憶部80aに記憶された各リズム抽出パラメータとのマッチングを容易にするため、R(k)を127で正規化した値にする(ステップS208)。
図16は、上記図14のステップS202の、各音階音のパワー増分値の合計L(t)の平滑化算出処理フロー[L(t)'を求める処理]を示すフローチャートである。
まずフレーム時間である変数tを初期化する(ステップS300)。そして該フレームtが総フレーム数Nを超えない範囲であるか否かをチェックする(ステップS302)。ここで、フレームtが総フレーム数N以上になったら(波形の分析処理の終わりまで達したら;ステップS302;Y)、そこで、平滑化算出処理[L(t)'を求める処理]を終了する。
反対にフレームtが総フレーム数Nより少ない値なら(S302;N)、フレームtを4で割り残った余り(t%4)が3であるか否かをチェックする(ステップS304)。ここでは、フレーム数Nが4回に1回、L(t)の最大値を求めるので、余り(t%4)が3であれば(ステップS304;Y)、その最大値変数Maxの値と4回をカウントするカウンタ変数jを初期化し(ステップS306)、以下に示すように処理を4回ループさせながら、L(t−j)の最大値Maxを求める。
すなわち、その後変数jが4になるまで(4回ループを回すまで)4回の中での各音階音のパワー増分値の合計L(t)の最大値を求める処理が行われる。すなわち、変数jが4より小さい場合(ステップS308;Y)、各フレーム毎(t−j)の各音階音のパワー増分値の合計L(t−j)が上記最大値Maxを超えているか否かをチェックする(ステップS310)。合計L(t−j)が上記最大値Maxを超えている場合(ステップS310;Y)、その合計L(t−j)を最大値Maxにセットし(ステップS312)、さらに変数jをカウンタでインクリメントして(ステップS314)、上記ステップS308に復帰させる。すなわち、上記各4回の中での各音階音のパワー増分値の合計L(t−j)の最大値Maxを求める計算処理を行う。上記ステップS310で、各音階音のパワー増分値の合計L(t−j)が上記最大値Max以下の場合(ステップS310;N)、該Maxがすでに最大値であるので、ステップS312をジャンプさせてステップS314に移行させる。
他方、上記変数jが4以上になった場合(すなわち、4回ループしてその間の最大値を求めた後;ステップS308;N)、カウンタ変数jを初期化し(ステップS316)、以下に示すように、L(t−j)'に、4回の中でのL(t)の最大値Maxを代入する処理(ステップS320)を4回ループさせながら繰り返す。すなわち、変数jが4より小さい場合(ステップS318;Y)、各フレーム毎(t−j)の各音階音のパワー増分値の合計L(t−j)'を、既に求めた上記最大値Maxを代入して(ステップS320)、変数jをカウンタでインクリメントし(ステップS322)、上記ステップS318に復帰させ、L(t)'に4回の中でのL(t)の最大値Maxを埋めることで、平滑化処理を行う。変数jをインクリメント後(ステップS322)、該変数jが4以上の値になったら(ステップS318;N)、後述するステップS324に移行して、フレームtをカウンタでインクリメントさせ(ステップS324)、上記ステップS302に復帰させ、フレームtが総フレーム数N以上になるまで、上記の処理を繰り返す。
また、上記ステップS304で、フレームtを4で割り残った余り(t%4)が3以外の場合(ステップS304;N)も、ステップS324に移行して、フレームtをカウンタでインクリメントさせ(ステップS324)、上記ステップS302に復帰させ、フレームtが総フレーム数N以上になるまで、上記の処理を繰り返す。
図17は、上記図14のL(t)'のピークLp(t)を算出する計算処理フローを示すフローチャートである。
まずピーク値として求められる全ての変数Lp(t)を0に初期化する(ステップS400)。ここで、フレームtは0以上総フレーム数N未満の値をとるが、次のステップS402で、該フレームtの値を4にセットして(ステップS402)、初期化する。これは、以下に示す処理で、L(t-4)、L(t+1)を計算しているので、フレームtの値は4〜N-1以下までにする必要があるからである。
そして、フレームtが最後の値N-1までになったか否か、すなわち該値がN-1未満であるか否かをチェックする(ステップS404)。フレームtがN-1以上であれば(ステップS404;N)、そこで処理は終了する。
反対にフレームtがN-1未満であれば(ステップS404;Y)、平滑化したL(t)'の値が、現在のフレームtより4フレーム前の値L(t-4)より大きく、且つ1フレーム後L(t+1)よりも大きいか否かをチェックする(ステップS406)。すなわち、このステップS406では、平滑化したL(t)'の値が、増加から減少に変わるところ、すなわちピークを検出しようとしている。
L(t)'の値が、現在のフレームtより4フレーム前の値L(t-4)より大きく、且つ1フレーム後L(t+1)よりも大きいという条件を満たさない場合(ステップS406;N)、すなわち、L(t)'の値がまだピーク値を示していない場合、後述するステップS412に移行し、フレームtをカウンタによりインクリメントする(ステップS412)。
反対にL(t)'の値が、現在のフレームtより4フレーム前の値L(t-4)より大きく、且つ1フレーム後L(t+1)よりも大きい場合(ステップS406;Y)、すなわち、L(t)'の値がピーク値を示している場合、平滑化したL(t)'の値がL(t)の最大値Lmaxの1/4以下か否かをチェックする(ステップ408)。すなわち、最初にLp(t)の値は0に初期化しているので0のままにし、ここでは、L(t)の最大値Lmaxの1/4以下のデータは、次のステップで無視することになる。
L(t)'の値が、L(t)の最大値Lmaxの1/4よりも大きい場合(ステップS408;Y)、Lp(t)の値に、平滑化したL(t)'の値を代入して、ピークを残す(ステップS410)。
その後、或いは、L(t)'の値が、L(t)の最大値Lmaxの1/4以下の場合(ステップS408;N)、上記ステップS412に移行し、フレームtをカウンタによりインクリメントし(ステップS412)、フレームtがN−1以上になるまで、上記処理を繰り返す。
以上の処理で、L(t)'の局所的なピーク(値が一旦上がりさらに下がっているところ)以外は全て0になる。あまり小さな値(Lmaxの1/4以下の値)は、ノイズなどによるものであるので、無視することになる。
他方本プログラムが稼働したときにユーザの選択により演奏される伴奏データは、上記ハードディスクドライブ1020上にプリセットされており(場合により後からユーザが追加することが可能)、図18は、そのうちの1つの伴奏データの各パート毎のイベントを示しており、同図(a)はピアノパート、また同図(e)はベース、同図(f)(g)はパーカッションを各示している。また各図の下には夫々のイベントのベロシティデータが一緒に示されている。
以上のような伴奏データの中には対応するリズムパターンがあるはずである。上記リズム抽出パラメータ記憶部80aには、このハードディスクドライブ1020上に設定されており、プリセット伴奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、夫々の伴奏パターン(リズムパターンの)データと共に、予め複数記憶してある。
図19は、リズム抽出パラメータ記憶部80aに記憶された、プリセット伴奏データ中に含まれるリズムパターンのリズム抽出パラメータについて、記憶する前にどのように抽出されたかを示す算出方法の処理フローチャートである。
まず、リズム抽出パラメータQ(k)を0に、すなわち、初期化する(ステップS500)。そして、ユーザの選択により演奏される伴奏データ(スタンダードミディファイル;SMF)を開く(ステップS502)。
次に全トラックのイベントからNoteOnイベントを抽出する(ステップS504)。そしてイベントの時刻が拍の1/16毎の区間のどの場所(k)になるかを計算する(ステップS506)。
その場所(k)のリズム抽出パラメータQ(k)にこのNoteOnイベントのベロシティ値を加算する(ステップS508)。
以上の処理が現在の伴奏データ(SMF)の全てのイベントについて行われたか否かをチェックする(ステップS510)。全てのイベントについて行われていなければ(ステップS510;N)、上記ステップS504に復帰し、以上の処理を伴奏データの終わりまで繰り返す。
反対に全てのイベントについて行われた場合(ステップS510;Y)、リズム抽出パラメータQ(k)の最大値を計算して、該リズム抽出パラメータQ(k)を127の値で正規化する(ステップS512)。
以上の処理で得られるものは、拍(4分の4拍子の場合、4分音符)の1/16の区間毎に存在するNoteOnイベントのベロシティ値を合計したものを127の値で正規化した、リズム抽出パターンが得られることになる。
上記リズムパターン決定部90aは、同じく上記プログラムが稼働した該CPU1002によって構成されている。該構成は、入力音響信号から最終的に上記リズム抽出パラメータ算出部70aにより抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶部80aから読み出される複数のリズム抽出パラメータとの、相互相関を算出して、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定する機能を果たす構成である。すなわち、入力音響信号の波形から抽出されたリズム抽出パラメータと、プリセットリズムパターンのSMFから読み出されたリズム抽出パラメータとの相互相関を、リズムパターン決定部90aによって計算し、各セクション毎最も相関の大きなリズムを入力波形のリズムパターンとして選択することになる。
この相互相関の計算は、図15の6段目[検出曲のリズム抽出パラメータR(k)]と、7及び8段目[リズムパターン(SMF)のリズム抽出パラメータQ(k)]との関係で示されているが、図20の方がさらに詳しく説明されている。
すなわち、入力音響信号から最終的に上記リズム抽出パラメータ算出部70aにより抽出された上記リズム抽出パラメータR(k)と、上記リズム抽出パラメータ記憶部80aから読み出される複数のリズム抽出パラメータQ(k)との、相互相関を算出する場合、同図の4段目の検出曲のリズム抽出パラメータR(k)に対して、リズム抽出パラメータ記憶部80aから読み出されるリズム抽出パラメータQ(k)の1つとの相互相関を取る場合、5〜7段目に示すように、読み出されるリズム抽出パラメータQ(k)を1小節ずつずらしながら、検出曲のリズム抽出パラメータR(k)との相関を計算する。
より、具体的には、リズムパターン決定部90aは、下式数14式に従って、相関φ(i)を計算する。
Figure 2010032809
ofsNum=(検出曲の小節数)−(リズムパターンの小節数)+1
4分の4拍子の場合、m=64
4分の4拍子の2小節パターンの場合、M=128
以上のようにして、求められた相互相関相関φ(i)の中から、最も相関の大きなリズムが、入力音響信号のリズムパターンとして、決定されることになる。
以上のようにして、各セクション毎のリズムパターンが決定されたならば、ユーザは、図3の演奏情報選択ボタンで音響信号又はリズムパターンのいずれかを選択しながら、演奏開始ボタンをクリックすることで、演奏部200aにより、音響信号又は決定されたリズムパターンが演奏されるので、その内容を確認することができる。
以上の実施例1に係る構成によれば、上記リズムパターン決定部90aにおいて、最終的に上記リズム抽出パラメータ算出部70aにより入力音響信号から抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶部80aから読み出される複数のリズム抽出パラメータとの相互相関が算出され、最も相関の大きなリズムパターンが、夫々のセクションの中で入力音響信号のリズムパターンとして決定されることになる。
またこのようなリズムパターン決定の前提となる、ビート(拍)間隔、各ビート位置、拍子及び小節(1拍目の位置)の検出では、入力部10aに入力された音響信号から所定の時間毎の各音階音のパワースペクトルを音階音パワー検出部20aによって求め、上記パワー増分値算出部30aによって、この所定の時間毎(フレーム毎)の各音階音のパワーの増分値をすべての音階音について合計して所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求め、上記ビート検出部40aにより、この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート(拍)間隔(つまりテンポ)と各ビートの位置を検出し、次に上記小節検出部50aにより、このビート毎の各音階音のパワーの平均値を計算し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す上記値求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置(1拍目の位置)を検出することになる。
これらの検出構成を前提として、上記リズムパターンは決定されることになるので、どのような楽器からもリズムパターンの検出ができるようになるという優れた効果がある。また構成によれば、セクション指定部13aによって指定された各セクション毎に、図21に示すように、上記リズムパターン決定部90aによるリズムパターンの決定を行っているため、最もそのセクションに適していると言えるリズムパターンが選択されるようになる。
尚、以上の実施例構成では、伴奏データ(リズムパターン)と共に、リズム抽出パラメータ記憶部80aにそれらのリズム抽出パラメータが予め記憶された構成としているが、伴奏データのみ記憶されていて、リアルタイムで、その伴奏データから、夫々のリズム抽出パラメータを抽出し、入力音響信号から最終的に抽出されたリズム抽出パラメータと比較するような構成としても良い。
実施例2の構成は、平均的なビート間隔(テンポ)とビート位置をより誤りが少ない状態で検出できる構成に、上記実施例1と同様なリズムパターンの検出のできる自動演奏装置の構成を、適用できるようにする構成である。すなわち、その構成とは、ビート検出波形の先頭を演奏させながら、本実施例ではパソコンのキーボード1012で構成されるタッピング検出部120を用いて、ユーザにビート位置を、タッピングしてもらうようにし、ユーザがタッピングしたビートの間隔が数拍に渡って安定してきたら(タッピングの揺らぎが一定の範囲内であると判定されたら)、その間隔をビート間隔として採用し(後述するように、テンポ候補検出部100で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択する)、また、安定したところのタッピング位置をビート検出の先頭ビート位置とするようにする構成である。
そのため、ユーザに数拍タッピングしてもらうだけで、曲全体のビート検出をより正確に行えるようになる。簡単に言えば、より誤りが少ない状態で検出できる該構成は、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出し、テンポ検出精度を上げるというものである。
このように、ユーザ側に再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出し、テンポ検出精度を上げているので、それらの構成に、上記リズムパターンの検出構成を適用すれば、その検出精度はより高まることが予想される。
図22は、上記パソコン上に構築された実施例2の機能ブロックを示すブロック図である。同図に示すように、本実施例構成は、音響信号を入力する信号入力部10bと、入力音響信号を記憶する音響信号記憶部11bと、その音響信号を表示すると共に、リズム検出用の操作表示を行う表示部12bと、表示部12bで音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定部13bと、入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出部20bと、この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出部30bと、この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出部100と、ユーザのタッピングによる拍子の入力を受ける拍子入力部110と、ユーザのタッピング入力を検出するタッピング検出部120と、タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録部130と、タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出部140と、直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出部150と、上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力部160と、上記タッピングテンポ出力部160から出力されたタッピングテンポを元に、該テンポ候補検出部100で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定部170と、上記タッピングテンポ出力部150から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力部180と、同じく上記揺らぎ算出部150でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定部170で決定されたテンポを元に確定させるビート位置確定部190と、上記1拍目位置出力部180から出力される1拍目の位置とビート位置確定部190から出力される各ビート位置に基づき小節線位置を検出する小節検出部50bと、上記パワー増分値算出部30bによって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出部60bと、所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出部70bと、プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、予め複数記憶しておくリズム抽出パラメータ記憶部80bと、入力音響信号から最終的に上記リズム抽出パラメータ算出部70bにより抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶部80bから読み出される複数のリズム抽出パラメータとの相互相関を算出し、最も相関の大きなリズムを、入力音響信号のリズムパターンとして決定するリズムパターン決定部90bと、入力音響信号及び決定されたリズムパターンを演奏する演奏部200bとを有する、自動演奏装置の構成である。
この構成は、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出することで、テンポ検出精度を上げる構成に、実施例1と同じようなリズムパターンの検出構成を適用したものである。従って、実施例1の構成より、テンポ検出精度が向上した分、リズムパターンの検出精度も向上することになる。
リズム検出のできる自動演奏用プログラムを、パーソナルコンピュータ(RAM1006及びハードディスクドライブ1020)に読み込ませて、(CPU1002に)実行させると、最初に、拍子入力部110により、図23のような画面が表示され、ユーザは、テンポを検出しようとする曲の拍子の入力が要求され、それに応じて、拍子を入力することになる。同図では、4分の何拍子かを選択している状態を示している。
上記構成のうち、入力部10b、音響信号記憶部11b、表示部12b、セクション指定部13b、音階音パワー検出部20b、パワー増分値算出部30b、小節検出部50b、ピーク検出部60b、リズム抽出パラメータ算出部70b、リズム抽出パラメータ記憶部80b、リズムパターン決定部90b及び演奏部200bの構成は、実施例1の夫々に該当する構成と同じなので、その詳細な説明は、省略する。
本実施例構成では、上述のように、平均的なビート間隔(テンポ)とビート位置をより誤りが少ない状態で検出できるようにするために、ビート検出波形の先頭を演奏させながら、パソコンのキーボード1012からなるタッピング検出部120を用いて、ユーザにビート位置を、タッピングしてもらうようにし、ユーザがタッピングしたビートの間隔が数拍に渡って安定してきたら(タッピングの揺らぎが一定の範囲内であると揺らぎ算出部150の揺らぎ算出とタッピングテンポ出力部160による判定がなされたら)、その間隔をビート間隔として採用し(後述するように、テンポ候補検出部100で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択する)、また、安定したところのタッピング位置をビート検出の先頭ビート位置とする(正確には、揺らぎが一定の範囲内であると判定された時のタッピング位置をビート検出の先頭ビート位置として出力し、さらに、この時のビートの数値からそれより前で最も近い1拍目の位置を1拍目位置として出力している)ようにする構成が、実施例1の構成以外に付加されている。
上記残りの構成のうち、上記テンポ候補検出部100は、上記プログラムが稼働した該CPU1002によって構成されており、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出する構成である。
該テンポ候補検出部100による処理は、図24のような流れで実行される。
テンポ候補検出部100は、音階音パワー検出部20bが出力した1フレーム毎の各音階音のパワーの変化を元に平均的なビート(拍)間隔(つまりテンポ)とビートの位置を検出する。そのために、まずテンポ候補検出部100は、各音階音のパワー増分値の合計(前のフレームとのパワーの増分値をすべての音階音で合計したもの。前のフレームからパワーが減少している場合は0として加算する)を計算する(ステップS600)。
つまり、フレーム時間tにおけるi番目の音階音のパワーをL(t)とするとき、i番目の音階音のパワー増分値Laddi(t)は、下式数15に示すようになり、このLaddi(t)を使って、フレーム時間tにおける各音階音のパワー増分値の合計L(t)は、下式数16で計算できる。ここで、Tは音階音の総数である。
Figure 2010032809
Figure 2010032809
この合計L(t)値は、フレーム毎の全体での音の変化度合いを表している。この値は、音の鳴り始めで急激に大きくなり、同時に鳴り始める音が多いほど大きな値となる。音楽はビートの位置で音が鳴り始めることが多いので、この値が大きなところはビートの位置である可能性が高いことになる。
例として、図25に、ある曲の一部分の波形と各音階音のパワー、各音階音のパワー増分値の合計の図を示す。上段が波形、中央がフレーム毎の各音階音のパワーを濃淡で表したもの(下が低い音、上が高い音。この図では、C1からA6の範囲)、下段がフレーム毎の各音階音のパワー増分値の合計を示している。この図の各音階音のパワーは、音階音パワー検出部20bから出力されたものであるので、周波数分解能が約7.2Hzであり、G#2以下の一部の音階音でパワーが計算できずに歯抜け状態になっているが、この場合はビートを検出するのが目的であるので、低音の一部の音階音のパワーが測定できないのは、問題ない。
この図の下段に見られるように、各音階音のパワー増分値の合計は、定期的にピークをもつ形となっている。この定期的なピークの位置が、ビートの位置である。
ビートの位置を求めるために、テンポ候補検出部100では、まずこの定期的なピークの間隔、つまり平均的なビート間隔を求める。平均的なビート間隔はこの各音階音のパワー増分値の合計の自己相関から計算できる(図24;ステップS602)。
あるフレーム時間tにおける各音階音のパワー増分値の合計をL(t)とすると、この自己相関φ(τ)は、以下の式数17で計算される。
Figure 2010032809
ここで、Nは総フレーム数、τは時間遅れである。
自己相関計算の概念図を、図26に示す。この図のように、時間遅れτがL(t)のピークの周期の整数倍の時に、φ(τ)は大きな値となる。よって、ある範囲のτについてφ(τ)の最大値を求めれば、曲のテンポを求めることができる。
自己相関を求めるτの範囲は、想定する曲のテンポ範囲によって変えれば良い。例えば、メトロノーム記号で四分音符=30から300の範囲を計算するならば、自己相関を計算する範囲は、0.2秒から2秒となる。時間(秒)からフレームへの変換式は、以下の数18式に示す通りとなる。
Figure 2010032809
この範囲の自己相関φ(τ)が最大となるτをビート間隔としても良いが、必ずしも全ての曲で自己相関が最大となる時のτがビート間隔とはならないので、自己相関が極大値となる時のτからビート間隔の候補を求め(図24;ステップS604)、これら複数の候補から、後述するように、直近の移動平均毎のタッピングテンポの揺らぎが一定の範囲内の場合になった場合にタッピングテンポ出力部160から出力されるタッピングテンポと上記タッピングの最後の時間とそのときのビートの数値に基づき、テンポ確定部170により、タッピングテンポに数値的に近いテンポが決定される(図24;ステップS606)。
図27は、このステップS606におけるテンポ確定までの処理フローを示している。
まず、RAM1006上に設定された変数が初期化される(ステップS700)。該変数としては、タッピングされた回数(TapCt)、前回タッピングされた時の時刻(PrevTime:この変数ではNow()で現在時刻を取得する、ここではパーソナルコンピュータを起動してからの時間msが入る)、現在のビート(CurBeat;4拍子の場合、0、1、2、3の値を取る、同図のステップS730のFlashでビートの数字を光らせる場合この数字に+1して表示している)、揺らぎチェックに合格した回数(PassCt)などがある。これらの変数が全て0にセットされる。
ユーザが、再生される楽音を聴きながら、キーボード1012のスペースキーをタッピングすることで、該キーボード1012がタッピング検出部120として構成されるので、該タッピング検出部120により、タッピングがあるか否かがチェックされる(ステップS702)。タッピングがない場合(ステップS702;N)、該チェックは継続される。
反対にタッピングがある場合(ステップS702;Y)、タッピングされた回数(TapCt)が0回より大きいか否かがチェックされる(ステップS704)。タッピング回数(TapCt)が0回以下の場合(ステップS704;N)、変数更新処理[タッピング回数(TapCt)のインクリメントされ、前回タッピング時刻(PrevTime)が現在時刻Now()にセットされる]がなされ(ステップS728)、タッピングに合わせて中にビートの数字を書いた四角を光らせ(ステップS730)、上記ステップS702に復帰して、以上の処理を繰り返す。
反対にタッピング回数(TapCt)が0回より大きい場合(ステップS704;Y)、タッピング間隔[DeltaTime.Add(Now()-Prevtime)]と時刻[Time.Add(CurPlayTime)]が記録部130に記録される(ステップS706)。ここで、DeltaTimeは前回タッピングされた時刻から今回タッピングされた時刻までの経過時間の配列を、意味する。またCurPlayTimeは現在の再生位置、波形先頭からの時間を意味する(この値を取っておいて、テンポが最終的に確定したとき、1拍目に相当する時間をプログラムに返す)。さらにTimeはCurPlayTimeを保存しておく配列を意味する。
そしてビートがインクリメントされる(ステップS708;CurBeat++)。ここでは、CurBeatが、拍子入力部110で入力された拍子(BeatNume;拍子の分子)−1まで進むことになる。
次にタッピング回数[DeltaTime.GetSize()]がN(例えば4回)以上になったか否かがチェックされる(ステップS710)。タッピング回数[DeltaTime.GetSize()]がNより小さい場合(ステップS710;N)、変数更新処理[タッピング回数(TapCt)のインクリメントされ、前回タッピング時刻(PrevTime)が現在時刻Now()にセットされる]がなされ(ステップS728)、タッピングに合わせて中にビートの数字を書いた四角を光らせ(ステップS730)、上記ステップS702に復帰して、以上の処理を繰り返す。
反対にタッピング回数[DeltaTime.GetSize()]がN以上であると判定された場合(ステップS710;Y)、タッピングテンポ算出部140により、後述する図28に示す処理手順でN回のタッピング間隔の移動平均が計算され、タッピングテンポ値[Tempo;BMP(Beat Per Measure)で表す。4分音符=120など]が算出される(ステップS712)。
そのタッピングテンポがディスプレイ1008で構成される表示部12bに表示される(ステップS714)。
さらに、揺らぎ算出部150により、後述する図29に示す処理手順で最近N回のタッピングテンポの揺らぎが計算される(ステップS716)。
そしてタッピングテンポの揺らぎがP%以下か否かがチェックされる(ステップS718)。該タッピングテンポの揺らぎがP%以下でない場合(ステップS718;N)は、揺らぎチェック合格回数(PassCt)が0にセットされる(ステップS722)。
反対にタッピングテンポの揺らぎがP%以下の場合(ステップS718;Y)、揺らぎチェック合格回数(PassCt)がインクリメントされる(ステップS720)。
その後揺らぎチェック合格回数(PassCt)がM回以上か否かがチェックされる(ステップS724)。該揺らぎチェック合格回数(PassCt)がM回以上でない場合(ステップS724;N)、上述と同様、変数更新処理[タッピング回数(TapCt)のインクリメントされ、前回タッピング時刻(PrevTime)が現在時刻Now()にセットされる]がなされ(ステップS728)、タッピングに合わせて中にビートの数字を書いた四角を光らせ(ステップS730)、上記ステップS702に復帰して、以上の処理を繰り返す。
反対に揺らぎチェック合格回数(PassCt)がM回以上である場合(ステップS724;Y)、タッピングテンポがタッピングテンポ出力部160により出力され、該タッピングテンポを元に、テンポ確定部170により、上記テンポ候補検出部100で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔が選択される(ステップS726)。
テンポ確定部170により、テンポ候補検出部100で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔が選択されると、ビート位置確定部190により、タッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置が、テンポ確定部170により選択されたビート間隔を元に確定される。
以上の処理により、最初のビート位置が決まったら、後述する方法により、それ以降のビートの位置を1つずつ決定していく(図24;ステップS608)。
図28は、上記ステップS712の移動平均によるテンポ計算処理の処理ステップを示すフローチャートである。
まず、DeltaTime(前回タッピングされた時刻から今回タッピングされた時刻までの経過時間の配列)にビート毎の重み付けをした値を加算した値(TimeSum)、平均テンポを計算する時の割る値(Deno)、ビートを数えるための変数(Beat)が0にセット、すなわち初期化される(ステップS800)。
ビートを数えるための変数(Beat)がN回より少ないか否かがチェックされる(ステップS802)。N回より少なくない場合(ステップS802;N)、すなわち、N回以上に達している場合、TimeSumの値がDenoで除算され、平均時間間隔(Avg)が算出され、この平均時間間隔(Avg)で60000を除算して、平均テンポ値[Temp;BMP(Beat Per Measure)で表す。4分音符=120など]が算出される(ステップS812)。
反対にビートを数えるための変数(Beat)がN回より少ない場合(ステップS802;Y)、すなわち、N回以上に達していない場合、これまでカウントされたタッピング回数から、ビートを数えるための変数(Beat)が減算され、さらに−1として、DeltaTimeの配列番号を表す一時的な変数Tが算出される(ステップS804)。変数(Beat)の値は、最も最近のタッピングされたビート(Beat)が0となり、以降N−1までの値をとる。Tはその夫々のビート(Beat)でのDeltaTime配列にアクセスする際のインデックスとなる。
この変数Tが0より小さいか否かがチェックされ(ステップS806)、0より小さい場合(ステップS806;Y)、TimeSumの値がDenoで除算され、平均時間間隔(Avg)が算出され、この平均時間間隔(Avg)で60000を除算して、平均テンポ値[Temp;BMP(Beat Per Measure)で表す。4分音符=120など]が算出される(ステップS812)。
反対に0より小さくない場合(ステップS806;N)、上記変数(Beat)におけるDeltaTimeが重み付けされてTimeSumに加算され(ステップS808)、ビートを数えるための変数(Beat)がインクリメントされ(ステップS810)、上記ステップS802に復帰し、以上の処理を繰り返す。
図29は、上記ステップS716のテンポ揺らぎ計算処理の処理ステップを示すフローチャートである。
まず、テンポ揺らぎチェックのフラグPassが1にセットされ(1の時テンポ揺らぎはOKを意味する)、ビートを数えるための変数(Beat)が0にセットされる(ステップS900)。
そしてこのビートを数えるための変数(Beat)がNより小さいか否かがチェックされる(ステップS902)。
ビートを数えるための変数(Beat)がNより小さくない場合(ステップS902;N)、テンポ揺らぎ計算処理は終了する。
反対にビートを数えるための変数(Beat)がNより小さい場合(ステップS902;Y)、該変数(Beat)におけるDeltaTimeの配列番号Tが計算され、その時のビートの揺らぎ(Percent)が計算される(ステップS904)。
上記平均時間間隔に対してどの程度(%)揺れているかを表す値(Percent)がテンポ揺らぎの許容値P(例えば7%)を越えているか否かがチェックされる(ステップS906)。
平均時間間隔に対してどの程度(%)揺れているかを表す値(Percent)がテンポ揺らぎの許容値Pを越えている場合(ステップS906;Y)、上記テンポ揺らぎチェックのフラグPassが0にセットされ(ステップS910)、処理を終了する。
反対にその値(Percent)がテンポ揺らぎの許容値Pを越えていない場合(ステップS906;N)、上記ビートを数えるための変数(Beat)がインクリメントされ(ステップS908)、上記ステップS902に復帰して、以上の処理を繰り返す。
タッピングテンポ出力部160は、上記揺らぎが一定の範囲内であると判定した場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力する。それによって、上記テンポ確定部170により、ビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔が選択され、テンポが確定される。その一方で、ビート位置確定部190により、タッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置が、先頭ビート位置として、さらにそれ以後およびそれ以前の各ビート位置がテンポ確定部170で決定されたテンポを元に確定される。
以上のように、先頭ビート位置が決まる。それ以降のビートの位置を1つずつ決定していく方法は、上記実施例1に示したとおりである。
以上のようにして、各ビートの位置が決定したら、この結果をバッファ(図示なし)に保存すると共に、検出した結果を表示し、ユーザに確認してもらい、間違っている箇所を修正してもらうようにしても良い。
ビート検出結果の確認画面の例や、ビート検出位置の修正は、前記実施例1の場合と同様である。
これまで述べた処理によって、区切られた各セクションのリズムパターン、拍子、ビート位置、1拍目の位置、平均的なテンポが検出されることになる。
セクション指定部13bにより先に挿入されたセクション区切りマークは、検出された1拍目の位置と異なる場合があるので、1拍目の位置検出後、セクション区切りマークの位置は、最寄りの1拍目位置へ補正される。
あるいはあらかじめ曲全体のビート位置、1拍目位置を検出した後に、セクション指定部13bによるセクション区切りマークを挿入してもらい、そのときに1拍目位置にグリッドするような構成にしても良い。
最後に上記演奏部200bの構成と、その作動につき説明する。図30は、演奏部200b(実施例1では演奏部200aに相当)の機能ブロック図である。
制御部210は、図3に示した演奏停止ボタン、演奏開始ボタン、演奏情報選択ボタン、セクション区切りマーク、各セクションのリズムパターン、拍子、ビート位置、1拍目位置、平均的なテンポに応じて、演奏部200bの動作を制御する構成である。
入力音響信号読出部211は、上記音響信号記憶部11bに格納された音響信号を読み出し、再生音響信号バッファ215に書き込むものである。
上記リズム抽出パラメータ記憶部80bにリズム抽出パラメータと共に該パラメータに各対応して格納されているリズムパターンは、リズムパターン読出部212に読み出される。すなわち、該リズムパターン読出部212は、再生位置に応じたリズムパターンに応じたリズムパターンから、テンポに応じて演奏情報(リズムパターン)を読み出し、音源部213に供給する。
この音源部213は、供給された演奏情報からパターン演奏音響信号を生成し、一時記憶する。
他方、パターン演奏音響信号読出部214は、一時記憶されているパターン演奏音響信号を読み出し、再生音響信号バッファ215に書き込む。
上記再生音響信号バッファ215は、音響出力部216が該再生音響信号バッファ215のデータを処理中でもデータの書き込みができるように、複数備えられている。
音響出力部216は、上記再生音響信号バッファ215に一時的に記憶された音響信号を出力する。
次に、小節位置決定のための前提となる、1拍目位置の決定について説明する。
上述した図22のビート位置確定部190により、各ビート位置は確定するが、そのままだと、小節の位置は確定しない。そのため、ユーザに対して、最初に拍子入力部110に、拍子の入力を要求している。また、タッピング入力の際には、演奏を聴きながらその1拍目の時にステップS730のFlashの点灯によるビート数値が1となるようにタッピングしてもらっている。そのタッピング時に算出されるタッピングテンポの揺らぎが、上記揺らぎ算出部150により、一定の範囲内であると判定された時、そのタッピングのビートの数値から、それに最も近い1拍目の位置が求められ、その位置が1拍目の位置として出力される。
以上のようにして、1拍目の位置(小節線の位置)が決定したら、その1拍目の位置が小節検出部50bに出力されるので、ビート位置確定部190により確定された各ビート位置と共に、小節検出部50bにより、小節線位置が検出されることになる。この結果をバッファ52に保存する。それと共に、検出した結果を画面表示して、ユーザに変更させるようにしても良い。特に変拍子の曲は、この方法では対応できないので、変拍子の箇所をユーザに指定してもらう必要がある。
以上の構成により、人間が演奏したテンポの揺らぐ演奏の音響信号から、曲全体の平均的なテンポと正確なビート(拍)の位置、さらに小節線の位置を検出することができるため、特別な音楽的知識を有する専門家でなくても、音楽CD等の複数の楽器音の混ざった入力された音楽音響信号に対し、個々の音符情報を検出することなしに、リズムを検出することができるようになる。
さらに、該構成によれば、演奏のテンポが揺らいでしまった場合や、逆にわざとテンポを揺らして演奏しているような音源に関しても、上記リズムの検出が可能となる。
しかも、ユーザに再生音を聞かせながらビート位置をタッピングしてもらい、それによりビート間隔とビート検出の先頭のビート位置を抽出し、テンポ検出精度を上げる、すなわち、ユーザに数拍タッピングしてもらうだけで、曲全体のビート検出をより正確に行えるようにしているため、より誤りが少ない状態でテンポ検出ができ、本実施例構成では、リズムの検出精度が飛躍的に高まることになる。
以上の実施例構成でも、伴奏データ(リズムパターンのデータ)と共に、リズム抽出パラメータ記憶部80bにそれらのリズム抽出パラメータが予め記憶された構成としているが、伴奏データのみ記憶されていて、リアルタイムで、その伴奏データから、夫々のリズム抽出パラメータを抽出し、入力音響信号から最終的に抽出されたリズム抽出パラメータと比較するような構成としても良い。
尚、本発明のリズム検出装置及びコンピュータ・プログラムは、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
本発明のリズム検出装置及びコンピュータ・プログラムは、ミュージックプロモーションビデオの作成の際などに音楽トラック中のビートの時刻に対して映像トラック中のイベントを同期させるビデオ編集処理や、ビートトラッキングによりビートの位置を見つけ音楽の音響信号の波形を切り貼りするオーディオ編集処理、人間の演奏に同期して照明の色・明るさ・方向・特殊効果などといった要素を制御したり、観客の手拍子や歓声などを自動制御するライブステージのイベント制御、音楽に同期したコンピュータグラフィックスなど、種々の分野で利用可能である。
本発明の望ましい実施形態が適用されるパーソナルコンピュータの回路概要図である。 本発明に係るリズム検出装置の全体ブロック図である。 取り込まれた音響信号と共に、リズム検出用の操作表示を行う、表示部12aの画面表示構成を示す説明図である。 音階音パワー検出部20aの装置構成説明図である。 ビート検出部40aにおける処理の流れを示すフローチャートである。 ある曲の一部分の波形と各音階音のパワー、各音階音のパワー増分値の合計のを示すグラフである。 自己相関計算の概念図である。 先頭のビート位置の決定方法を示す説明図である。 最初のビート位置決定後のそれ以降のビートの位置を決定していく方法を示す説明図である。 sの値に応じて変えられる係数kの分布状態を示すグラフである。 2番目以降のビートの位置の決定方法を示す説明図である。 ビート検出結果の確認画面の例を示す画面表示図である。 小節検出結果の確認画面の例を示す画面表示図である。 検出曲に対してのリズム抽出パラメータの算出工程を示すフローチャートである。 上記算出工程に従って、求められた検出元波形からリズム抽出パラメータを示すグラフである。 図14のステップS202の、各音階音のパワー増分値の合計L(t)の平滑化算出処理フローを示すフローチャートである。 図14のL(t)'のピークLp(t)を算出する計算処理フローを示すフローチャートである。 ハードディスクドライブ1020上にプリセットされた1つの伴奏データの各パート毎のイベントを示す説明図である。 プリセット伴奏データ中に含まれるリズムパターンのリズム抽出パラメータについて、リズム抽出パラメータ記憶部80aに記憶する前にどのように抽出されたかを示す算出方法の処理フローチャートである。 検出曲のリズム抽出パラメータR(k)とリズムパターン(SMF)のリズム抽出パラメータQ(k)との相互相関の計算処理方法を示す説明図である。 セクション指定部13aによって指定された各セクション毎に、上記リズムパターン決定部90aによるリズムパターンの決定を行った結果を示す説明図である。 パソコン上に構築された実施例2の機能ブロックを示すブロック図である。 曲の拍子の入力画面構成を示す説明図である。 テンポ候補検出部100による処理フローを示すフローチャートである。 ある曲の一部分の波形と各音階音のパワー、各音階音のパワー増分値の合計の図を示すグラフである。 自己相関計算の概念を示す説明図である。 ステップS606におけるテンポ確定までの処理フローを示すフローチャートである。 ステップS712の移動平均によるテンポ計算処理の処理ステップを示すフローチャートである。 ステップS716のテンポ揺らぎ計算処理の処理ステップを示すフローチャートである。 演奏部200bの機能ブロック図である。 曲全体を通して最適とは言えないリズムパターンが選択されてしまう従来のリズムパターンの決定例を示す説明図である。
符号の説明
10a、10b 入力部
11a、11b 音響信号記憶部
12a、12b 表示部
13a、13b セクション指定部
20a、20b 音階音パワー検出部
21 波形前処理部
22 FFT演算部
23 パワー検出部
30a、30b パワー増分値算出部
40a ビート検出部
50a、50b 小節検出部
24、41、51、52、101 バッファ
70a、70b リズム抽出パラメータ算出部
80a、80b リズム抽出パラメータ記憶部
90a、90b リズムパターン決定部
100 テンポ候補検出部
110 拍子入力部
120 タッピング検出部
130 記録部
140 タッピングテンポ算出部
150 揺らぎ算出部
160 タッピングテンポ出力部
170 テンポ確定部
180 1拍目位置出力部
190 ビート位置確定部
200a、200b 演奏部
210 制御部
211 入力音響信号読出部
212 リズムパターン読出部
213 音源部
214 パターン演奏音響信号読出部
215 再生音響信号バッファ
216 音響出力部
1000 システムバス
1002 CPU
1004 ROM
1006 RAM
1008 ディスプレイ
1010 I/Oインターフェース
1012 キーボード
1014 サウンドシステム
1016 CD−ROMドライブ
1016a プログラムCD−ROM
1018 マウス
1020 ハードディスクドライブ

Claims (8)

  1. 音響信号を入力する入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
    このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
    プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
    入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と、
    入力音響信号及び/又は決定されたリズムパターンを演奏する演奏手段と
    を有することを特徴とする自動演奏装置。
  2. 音響信号を入力する入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
    このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
    リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
    該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
    入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    を有することを特徴とする自動演奏装置。
  3. 音響信号を入力する信号入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
    ユーザの拍子の入力を受ける拍子入力手段と、
    ユーザのタッピング入力を検出するタッピング検出手段と、
    タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
    タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
    直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
    上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
    上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
    上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
    同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
    上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
    プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
    入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    を有することを特徴とする自動演奏装置。
  4. 音響信号を入力する信号入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
    ユーザの拍子の入力を受ける拍子入力手段と、
    ユーザのタッピング入力を検出するタッピング検出手段と、
    タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
    タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
    直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
    上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
    上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
    上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
    同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
    上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
    リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
    該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
    入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    を有することを特徴とする自動演奏装置。
  5. コンピュータに読み込まれて実行されることにより、該コンピュータを、
    音響信号を入力する入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
    このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
    プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
    入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と、
    入力音響信号及び/又は決定されたリズムパターンを演奏する演奏手段と
    して機能させることを特徴とする自動演奏用コンピュータプログラム。
  6. コンピュータに読み込まれて実行されることにより、該コンピュータを、
    音響信号を入力する入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、所定の時間毎の各音階音のパワースペクトルを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワースペクトルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    該パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
    このビート毎の各音階音のパワーの平均値を算出し、このビート毎の各音階音の平均パワーの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
    リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
    該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
    入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    して機能させることを特徴とする自動演奏用コンピュータプログラム。
  7. コンピュータに読み込まれて実行されることにより、該コンピュータを、
    音響信号を入力する信号入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
    ユーザの拍子の入力を受ける拍子入力手段と、
    ユーザのタッピング入力を検出するタッピング検出手段と、
    タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
    タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
    直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
    上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
    上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
    上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
    同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
    上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出するリズム抽出パラメータ算出手段と、
    プリセット演奏データ中に含まれるリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計し正規化して抽出されるリズム抽出パラメータを、対応する複数のリズムパターンと共に、予め複数記憶しておくリズム抽出パラメータ記憶手段と、
    入力音響信号から最終的に上記リズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、上記リズム抽出パラメータ記憶手段から読み出される複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    して機能させることを特徴とする自動演奏用コンピュータプログラム。
  8. コンピュータに読み込まれて実行されることにより、該コンピュータを、
    音響信号を入力する信号入力手段と、
    入力された音響信号を記憶する音響信号記憶手段と、
    入力された音響信号を表示すると共に、リズム検出用の操作表示を行う表示手段と、
    上記表示手段で音響信号を表示する際に、その表示の任意の位置でセクションを指定できるようにするセクション指定手段と、
    入力された音響信号から、所定の時間間隔で、FFT演算を行い、求められたパワースペクトルから所定の時間毎の各音階音のパワーを求める音階音パワー検出手段と、
    この所定の時間毎の各音階音のパワーの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計を求めるパワー増分値算出手段と、
    この所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計から、平均的なビート間隔を求めて、テンポの候補を検出するテンポ候補検出手段と、
    ユーザの拍子の入力を受ける拍子入力手段と、
    ユーザのタッピング入力を検出するタッピング検出手段と、
    タッピング間隔とタッピングのあった時間と各タッピングのビートの数値を記録する記録手段と、
    タッピング間隔の移動平均をとり、テンポを算出するタッピングテンポ算出手段と、
    直近の移動平均毎のタッピングテンポの揺らぎを算出する揺らぎ算出手段と、
    上記揺らぎが一定の範囲内の場合、タッピングテンポと上記タッピングの最後の時間とそのときのビートの数値を出力するタッピングテンポ出力手段と、
    上記タッピングテンポ出力手段から出力されたタッピングテンポを元に、該テンポ候補検出手段で検出されたビート間隔の候補から、上記タッピングテンポに数値的に近いビート間隔を選択するテンポ確定手段と、
    上記タッピングテンポ出力手段から出力されたタッピングの最後の時間とそのときのビートの数値から、それに最も近い1拍目の位置を1拍目位置として出力する1拍目位置出力手段と、
    同じく上記揺らぎ算出手段でタッピングの揺らぎが一定の範囲内であると判定された時のタッピングの位置を先頭ビート位置として、それ以後およびそれ以前の各ビート位置をテンポ確定手段で決定されたテンポを元に確定させるビート位置確定手段と、
    上記1拍目位置出力手段から出力される1拍目の位置とビート位置確定手段から出力される各ビート位置に基づき小節線位置を検出する小節検出手段と、
    上記パワー増分値算出手段によって求められた、所定の時間毎の全体の音の変化度合いを示すパワーの増分値の合計の局所的なピークを検出するピーク検出手段と、
    所定のビート区間の上記ピークの最大値を求め、その値を正規化してリズム抽出用のパラメータとして抽出する第1のリズム抽出パラメータ算出手段と、
    リズムパターンを含む複数の演奏データをプリセットしておく演奏データ記憶手段と、
    該演奏データ記憶手段から、それらに含まれる複数のリズムパターンの任意の音符区間毎に存在するノートオンベロシティ値を合計して正規化し、複数のリズム抽出パラメータとして算出する第2のリズム抽出パラメータ算出手段と、
    入力音響信号から最終的に上記第1のリズム抽出パラメータ算出手段により抽出された上記リズム抽出パラメータと、プリセットリズムパターンから最終的に上記第2のリズム抽出パラメータ算出手段により抽出された複数のリズム抽出パラメータとの相互相関を算出し、指定されたセクション毎に、最も相関の大きなリズムを、各セクション毎の入力音響信号のリズムパターンとして決定するリズムパターン決定手段と
    して機能させることを特徴とする自動演奏用コンピュータプログラム。
JP2008195428A 2008-07-29 2008-07-29 自動演奏装置及び自動演奏用コンピュータ・プログラム Withdrawn JP2010032809A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008195428A JP2010032809A (ja) 2008-07-29 2008-07-29 自動演奏装置及び自動演奏用コンピュータ・プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008195428A JP2010032809A (ja) 2008-07-29 2008-07-29 自動演奏装置及び自動演奏用コンピュータ・プログラム

Publications (1)

Publication Number Publication Date
JP2010032809A true JP2010032809A (ja) 2010-02-12

Family

ID=41737351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008195428A Withdrawn JP2010032809A (ja) 2008-07-29 2008-07-29 自動演奏装置及び自動演奏用コンピュータ・プログラム

Country Status (1)

Country Link
JP (1) JP2010032809A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221156A (ja) * 2010-04-07 2011-11-04 Yamaha Corp 楽曲解析装置
JP2017167562A (ja) * 2017-06-06 2017-09-21 カシオ計算機株式会社 サンプリング装置、電子楽器、方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221156A (ja) * 2010-04-07 2011-11-04 Yamaha Corp 楽曲解析装置
JP2017167562A (ja) * 2017-06-06 2017-09-21 カシオ計算機株式会社 サンプリング装置、電子楽器、方法及びプログラム

Similar Documents

Publication Publication Date Title
JP4916947B2 (ja) リズム検出装置及びリズム検出用コンピュータ・プログラム
JP4672613B2 (ja) テンポ検出装置及びテンポ検出用コンピュータプログラム
JP4767691B2 (ja) テンポ検出装置、コード名検出装置及びプログラム
JP4823804B2 (ja) コード名検出装置及びコード名検出用プログラム
US7582824B2 (en) Tempo detection apparatus, chord-name detection apparatus, and programs therefor
WO2017058387A1 (en) Automatic composer
JP5229998B2 (ja) コード名検出装置及びコード名検出用プログラム
US20190156807A1 (en) Real-time jamming assistance for groups of musicians
JP2017090671A (ja) 調律推定装置、評価装置およびデータ処理装置
JP5196550B2 (ja) コード検出装置およびコード検出プログラム
JP3996565B2 (ja) カラオケ装置
JP4204941B2 (ja) カラオケ装置
JP3489503B2 (ja) 音信号分析装置、音信号分析方法及び記憶媒体
JP4932614B2 (ja) コード名検出装置及びコード名検出用プログラム
JP5005445B2 (ja) コード名検出装置及びコード名検出用プログラム
JP5092589B2 (ja) 演奏クロック生成装置、データ再生装置、演奏クロック生成方法、データ再生方法およびプログラム
JP5153517B2 (ja) コード名検出装置及びコード名検出用コンピュータ・プログラム
JP2010032809A (ja) 自動演奏装置及び自動演奏用コンピュータ・プログラム
JP3599686B2 (ja) カラオケ歌唱時に声域の限界ピッチを検出するカラオケ装置
JP4891135B2 (ja) 評価装置
JP2005107332A (ja) カラオケ装置
JP4159961B2 (ja) カラオケ装置
EP3579223B1 (en) Method, device and computer program product for scrolling a musical score
WO2019092780A1 (ja) 評価装置およびプログラム
JP2014235328A (ja) コード推定検出装置及びコード推定検出プログラム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20111004