(57)【特許請求の範囲】
【請求項１】
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、及び上記閾値を表示する表示手段と、
上記音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と
を有することを特徴とするコード名検出装置。
【請求項２】
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、上記閾値及び上記フラグの状態を表示する表示手段と、
上記音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と、
上記フラグの状態を設定し、その設定状態を上記コード情報記憶手段に記憶させるフラグ設定手段と
を有することを特徴とするコード名検出装置。
【請求項３】
コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、及び上記閾値を表示する表示手段と、
上記音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と
して機能させることを特徴とするコード名検出用プログラム。
【請求項４】
コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、上記閾値及び上記フラグの状態を表示する表示手段と、
上記音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と、
上記フラグの状態を設定し、その設定状態を上記コード情報記憶手段に記憶させるフラグ設定手段と
して機能させることを特徴とするコード名検出用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード名検出装置及びコード名検出用プログラムに関する。
【背景技術】
【０００２】
ポピュラー系の音楽においてコードは非常に重要な要素であり、このようなジャンルの音楽を小編成のバンドで演奏する場合には、演奏する個々の音符が書かれた楽譜は使用しないで、コード譜またはリードシートと呼ばれるメロディとコード進行のみが書かれた楽譜を使用することが通常である。従って市販のＣＤ等の曲をバンドで演奏するためには曲のコード進行を採譜する必要があるが、この作業は特別な音楽的知識を有する専門家のみが可能であり、一般の人には不可能であった。そこで、市販のパーソナルコンピュータなどを使用して、演奏音が収録された音楽ＣＤ等の音源から出力される音楽音響信号に基づいて、コード名を検出する自動採譜装置が求められていた。
【０００３】
このような音楽音響信号からコードを検出する装置として、下記特許文献１の構成がある。同文献の構成では、パワー・スペクトルの計算結果から基本周波数候補を抽出し、この基本周波数候補から倍音と思われるものを除去して音符情報を検出し、この音符情報から和音を検出している。
【０００４】
同様に音楽音響信号からコードを検出する装置として、後述する特許文献２の構成がある。該特許文献２の構成では、入力される音響信号に対して、異なる特性のディジタルフィルタリング処理を時分割で行い、各音階音のレベルを検出し、検出したレベルのうちオクターブ内で同じ音階関係にあるレベル同士を積算して、その積算レベルのうち値が大きい所定数を使って和音検出をしている。この方法では音響信号に含まれる個々の音符情報を検出しないので、後述する特許文献１にあげるような問題は発生しない。
【特許文献１】特許第２８７６８６１号
【特許文献２】特許第３１５６２９９号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、該特許文献１に示す構成では、上記倍音を除去する作業は、楽器の種類による倍音構造の違い、打鍵強さによる倍音の出方の違い、時間による倍音のパワー変化、同じ周波数を倍音成分として持つ音同士の位相干渉の問題などから非常に困難であることが知られている。即ち、この音符情報を検出するという工程が、多くの楽器や歌唱などが混じった一般の音楽ＣＤなどの音源で必ずしも正しく機能するとは考えられない。
【０００６】
他方、音楽音響信号からコードを検出する上記特許文献２に示す構成では、各音階音のレベルをオクターブ内で同じ音階関係にあるもの同士、つまり１２の音名毎に積算してしまっているので、同じ構成音からなる複数の和音、例えばラ、ド、ミ、ソからなるＡｍ７とド、ミ、ソ、ラからなるＣ６という２つのコードを判別することができない。
【０００７】
また、この特許文献２の和音検出装置には、テンポや小節の検出機能はなく、和音検出は所定のタイミング毎に行うとなっている。つまり、あらかじめ曲のテンポを設定してそのテンポで発音するメトロノームに合わせて演奏するようなケースを想定しており、音楽ＣＤ等のような演奏後の音響信号に適用した場合、一定時間間隔毎のコード名は検出できるが、テンポや小節を検出していないので、コード譜またはリードシートと呼ばれているような各小節のコード名が書かれた楽譜のような形式に出力することはできない。
【０００８】
仮に曲のテンポを与えたとしても、一般的に音楽ＣＤに収録されている演奏のテンポは一定ではなく多少揺らぐため、正しく小節毎のコードを検出することはできない。
【０００９】
また、一定のテンポで発音されるメトロノームなどに合わせて正確なテンポで演奏することは初心者の演奏者にとっては非常に困難であり、一般的には演奏のテンポは揺らいでしまうのが通常である。
【００１０】
さらに、特許文献２の構成では、入力される音響信号に対して、異なる特性のディジタルフィルタリング処理を時分割で行う構成が採用されているが、この構成の採用理由として、ＦＦＴ演算では低域で周波数分解が悪いことをあげている。しかし、入力音響信号をダウンサンプリングしてＦＦＴを行うことで低域でもある程度の周波数分解能を得ることは可能であるし、ディジタルフィルタリング処理では、フィルタ出力信号のレベルを求めるためにエンベロープ抽出部が必要になってしまうのに対し、ＦＦＴでは、ＦＦＴ後のパワーそのものが各周波数でのレベルを表しているためそのようなものは必要なく、ＦＦＴポイント数とシフト量のパラメータを適宜選ぶことで周波数分解能や時間分解能を自由に設定できるメリットもある。
【００１１】
仮に和音が検出できたとしても、検出された和音中に、７ｔｈ、９ｔｈなどの音程があると、実際には、３和音で良いのに、４和音のコードとして検出される可能性がある。すなわち和音検出の際に、図３０に示すように、構成音の決定には強度の大きなものを上から６つ採用するものとすると、その中には、７ｔｈ、９ｔｈなどの音程があれば、実際には、３和音で良い（同図ではＣで良い）のに、４和音のコードとして検出される（Ｂ３が入るためにＣｍａｊ７として検出される）可能性がある。従って自動採譜ができるようになったとしても、採譜された結果にある程度ユーザ側で自由な設定ができる必要がある。
【００１２】
本発明は、以上のような問題に鑑み創案されたもので、特別な音楽的知識を有する専門家でなくても、音楽ＣＤ等の複数の楽器音の混ざり、しかも演奏テンポに揺らぎのある音楽音響信号（オーディオ信号）から、個々の音符情報を検出することなしに、全体の響きから、コード名（和音名）を検出することができるコード名検出装置を提供すると共に、その結果においてユーザ側でコード構成音として採用できる数を変更可能にして、採譜結果に手を加えることができるようにせんとするものである。
【００１３】
併せて、これらの装置をコンピュータ上に実現できるコード名検出用のコンピュータ・プログラムについても、提供する。
【課題を解決するための手段】
【００１４】
そのため本発明に係るコード名検出装置は、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められる（ベース検出期間におけるベース検出音域の各音階音のレベルの平均的なレベルを計算することによって求められる）ベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められる（コード検出期間における各音階音の平均的なレベルを計算することによって求められる）コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、及び上記閾値を表示する表示手段と、
上記音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と
を有することを基本的特徴としている。
【００１５】
上記構成によれば、入力手段に入力された音響信号から所定の時間毎の各音階音のレベルを音階音レベル検出手段によって求め、上記ビート検出手段によって、この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、同じくビート検出手段により、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート（拍）間隔（つまりテンポ）と各ビートの位置を検出し、次に上記小節検出手段により、このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す上記値求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置（１拍目の位置）を検出することになる。
【００１６】
すなわち、入力された音響信号から所定の時間毎の各音階音のレベルを求め、この所定の時間毎の各音階音のレベルの変化から平均的なビート（拍）間隔（つまりテンポ）と各ビートの位置を検出し、次にこのビート毎の各音階音のレベルの変化から拍子と小節線位置（１拍目の位置）を検出することになる。
【００１７】
また上記ベース音検出手段において、ベース音が小節内で複数検出される場合は、そのベース音検出結果に応じて、上記コード名決定手段は、小節を幾つかのコード検出範囲に分断し、この各コード検出範囲におけるコード名を、ベース音と各コード検出範囲における各音階音のレベルから、決定するものとする。
【００１８】
上記構成では、入力手段から入力された入力音響信号に対し、第１の音階音レベル検出手段により、所定の時間間隔で、まずビート検出に適したパラメータでＦＦＴ演算を行い、これにより所定の時間毎の各音階音のレベルを求め、ビート検出手段により、この所定の時間毎の各音階音のレベルの変化から平均的なビート間隔と各ビートの位置を検出する。次に、小節検出手段により、このビート毎の各音階音のレベルの変化から拍子と小節線位置を検出する。さらに、本発明のコード名検出装置は、第２の音階音レベル検出手段により、入力音響信号に対し先のビート検出の時とは異なる別の所定の時間間隔で、今度はコード検出に適したパラメータでＦＦＴ演算を行い、これにより所定の時間毎の各音階音のレベルを求める。そしてベース音検出手段により、この各音階音のレベルの内、低域側の音階音のレベルから各小節のベース音を検出し、コード名決定手段により、検出したベース音と各音階音のレベルから各小節のコード名を決定することになる。
【００１９】
また上記のように、ベース音検出手段でこのベース音が小節内で複数検出される場合は、そのベース音検出結果に応じて、上記コード名決定手段は、小節を幾つかのコード検出範囲に分断し、この各コード検出範囲におけるコード名をベース音と各コード検出範囲における各音階音のレベルから決定することになる。
【００２０】
以上のように、本発明のコード名検出装置の構成では、簡単な構成のみでビート検出という時間分解能が必要な処理（謂わばテンポ検出装置の構成と言って良い）と、和音検出という周波数分解能が必要な処理（上記テンポ検出装置の構成を基にさらに和音を検出できる構成）を同時に行うことができるようになる。
【００２１】
さらに、検出されたコード毎に、上記コード情報記憶手段に、それらの、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名が記憶される。そして、上記表示手段に、上記コード名決定手段で決定されたベース音及びコード構成音が表示される。
【００２２】
この結果を見たユーザは、その結果においてコード名が適切でない、或いは後にコード進行を聞いた時に不自然、と感じて訂正を加えたい時は、上記閾値設定手段を使用して、コード構成音として採用される音階音強度の閾値設定を変更し、ユーザ側で、表示されたコード構成音の数を変更することができる。すなわち、閾値を変えることで、３和音、４和音などのコントロールをすることが可能となる。
【００２３】
そのような変更設定がなされた場合、上記閾値設定手段でコード情報記憶手段に新たに記憶された閾値に基づき、上記コード構成音決定手段によって、同じくコード情報記憶手段に記憶されたコード音階音強度及びコード構成音とを参照して、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を、コード名決定手段に変更させ、その変更設定情報を上記コード情報記憶手段に再記憶させると共に、表示手段にコード構成音を再表示させるようになる。そのようにすることで、ユーザが適切乃至自然だと思うコード名が決定されることになる。
【００２４】
上記閾値変更設定がなされた後の過程で、コード情報記憶手段に記憶されたコード音階音強度やコード構成音を参照するのは、音階音の強度の値が、該閾値の増減で、コード構成音に採用されるようになったり、或いはそれから外れるようになり、そのコード音階音強度の高い順に、コード構成音の数を簡単に増減できるようになるからである。そのコード構成音の数の変更によっては、コード名も変わるようになる。
【００２５】
次に第２の発明に係るコード名検出装置の構成は、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められる（ベース検出期間におけるベース検出音域の各音階音のレベルの平均的なレベルを計算することによって求められる）ベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められる（コード検出期間における各音階音の平均的なレベルを計算することによって求められる）コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、上記閾値及び上記フラグの状態を表示する表示手段と、
上記音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と、
上記フラグの状態を設定し、その設定状態を上記コード情報記憶手段に記憶させるフラグ設定手段と
を有することを特徴としている。
【００２６】
上記構成では、入力手段〜コード名決定手段までの構成は、先の発明と同じであるが、コード情報記憶手段、表示手段、コード構成音決定手段及び閾値設定手段の構成は、その機能が異なり、さらにフラグ設定手段の構成が追加される。
【００２７】
すなわち、上記コード情報記憶手段に、検出されたコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められるベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められるコード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名が記憶され、上記表示手段に、上記ベース音検出手段及びコード名決定手段で決定されたベース音及びコード構成音が表示される。
【００２８】
この結果を見たユーザは、その結果においてベース音やコード名（或いはコード構成音）が適切でない、或いは後にコード進行を聞いた時に不自然、と感じて訂正を加えたい時は、ユーザ側で、閾値設定手段を使用して複数の閾値設定ができるので（ただし、最初はデフォルトで１乃至２の閾値が設定されている）、コード構成音決定手段により、各コードの音階音強度から、それらの閾値範囲内に達していない強度の音階音をコード構成音として採用するか否かが決定され、さらに、フラグ設定手段を使用することで、フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かが決定されることになる。このように、閾値設定の変更処理及びフラグ状態の変更処理がなされることで、コード構成音として採用されるコード音階音の数が変更されるため、コード構成音の追加又は削除などの設定変更が可能となる。その際のコード構成音の変更時には、上記表示手段に、設定された各閾値とフラグの状態が表示される。それに基づいて、ユーザは、閾値設定手段やフラグ設定手段を使用して、各閾値やフラグの状態を再設定できるので、コード名決定手段で検出されているコード音階音をコード構成音として採用する或いはその採用から除くように変更することができるようになる。
【００２９】
上記閾値設定手段やフラグ設定手段によるコード構成音の追加又は削除などの変更がなされた時には、コード構成音決定手段により、これらの情報の決定を変更させ、コード情報記憶手段に、追加乃至削除されるコード構成音のデータ、コード名などの変更情報を記憶させる。それと共に、表示手段にこれらの変更情報を再表示させることになる。
【００３０】
以上のような構成を用い、複数の閾値を設け、閾値間の強度の音程を採用するか否かを指定することで、和音が検出できた時に、検出された和音として、３和音が出易い、又は４和音が出易い、などの制御が可能になり、採譜された結果にある程度ユーザ側で自由な設定ができるようになる。
【００３１】
さらに、３つ目の本発明の構成及び４つ目の本発明の構成は、第１の発明の構成及び第２の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定している。すなわち、上述した課題を解決するための構成として、上記各手段を、コンピュータの構成を利用することで実現する、該コンピュータで読み込まれて実行可能なプログラムである。この場合、コンピュータとは中央演算処理装置の構成を含んだ汎用的なコンピュータの構成の他、特定の処理に向けられた専用機などを含むものであっても良く、中央演算処理装置の構成を伴うものであれば特に限定はない。
【００３２】
上記各手段を実現させるためのプログラムが該コンピュータに読み出されると、第１の発明乃至第２の発明の構成として規定された各機能実現手段と同様な機能実現手段が達成されることになる。
【００３３】
第３の発明のより具体的構成は、
コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められる（ベース検出期間におけるベース検出音域の各音階音のレベルの平均的なレベルを計算することによって求められる）ベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められる（コード検出期間における各音階音の平均的なレベルを計算することによって求められる）コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、及び上記閾値を表示する表示手段と、
上記音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と
して機能させることを特徴とするコード名検出用プログラムである。
【００３４】
さらに、第４の発明の構成は、上記第２の発明の構成を、コンピュータに実行させるために、該コンピュータで実行可能なプログラム自身を規定している。すなわち、コンピュータに上記各手段を実現させるためのプログラムが該コンピュータに読み出されると、第２の発明の構成として規定された各機能実現手段と同様な機能実現手段が達成されることになる。
【００３５】
第４の発明のより具体的構成は、
コンピュータを、
音響信号を入力する入力手段と、
入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第１の音階音レベル検出手段と、
この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出手段と、
このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出手段と、
上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める第２の音階音レベル検出手段と、
検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出手段と、
検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定手段と、
検出した全てのコード毎に、コード位置、ベース検出期間におけるベースの検出音域の音階音のレベルより求められる（ベース検出期間におけるベース検出音域の各音階音のレベルの平均的なレベルを計算することによって求められる）ベース域音階音強度、ベース音、コード検出期間におけるコードの検出音域の音階音のレベルより求められる（コード検出期間における各音階音の平均的なレベルを計算することによって求められる）コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶するコード情報記憶手段と、
ベース音、コード構成音、上記閾値及び上記フラグの状態を表示する表示手段と、
上記音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定手段のコード名決定、コード情報記憶手段のコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示手段のコード構成音表示に指示を与えるコード構成音決定手段と、
上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶手段に記憶させる閾値設定手段と、
上記フラグの状態を設定し、その設定状態を上記コード情報記憶手段に記憶させるフラグ設定手段と
して機能させることを特徴とするコード名検出用プログラムである。
【発明の効果】
【００３６】
本発明の第１及び第３の発明のコード名検出装置及びコード名検出用プログラムによれば、コード検出結果に訂正を加えようとする場合に、上記閾値設定手段を使用して、コード構成音として採用される音階音強度の閾値設定を変更することで、ユーザ側で、表示されたコード構成音の数を変更でき、３和音、４和音などのコントロールをすることが可能となるという優れた効果を奏し得る。
【００３７】
また、本発明の第２及び第４の発明のコード名検出装置及びコード名検出用プログラムによれば、コード検出結果に訂正を加えようとする場合に、複数の閾値を設け、閾値間の強度の音程を採用するか否かを指定することで、検出された和音として、３和音が出易い、又は４和音が出易い、などの制御が可能になり、採譜された結果にある程度ユーザ側で自由な設定ができるようになる。
【発明を実施するための最良の形態】
【００３８】
以下、本発明の実施の形態を図示例と共に説明する。
【前提例】
【００３９】
図１は、本発明の前提となるテンポ検出装置の全体ブロック図である。このテンポ検出装置の構成は、テンポ検出用プログラムが読み込まれて実行可能なコンピュータにより構成されており、該コンピュータをテンポ検出用機能ブロックとして分けた場合、図１に示すように、音響信号を入力する入力部１と、入力された音響信号から、所定の時間間隔で、ＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める音階音レベル検出部２と、この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出部３と、このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出部４とを有するもので構成される。
【００４０】
上記入力部１は、後述するように、コンピュータに接続されたマイクや、同じくコンピュータに接続されたＭＩＤＩインタフェースなどのＩ／Ｏインターフェースで構成されており、上述のように、音響信号を入力する機能を有している。
【００４１】
上記音階音レベル検出部２は、テンポ検出用プログラムが読み込まれて実行され、以下に示す処理を行うコンピュータのＣＰＵにより構成されており、上述のように、入力された音響信号から、所定の時間間隔で、ＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求める機能を有している。
【００４２】
上記ビート検出部３は、同じくテンポ検出用プログラムが読み込まれて実行され、以下に示す処理を行うコンピュータのＣＰＵにより構成されており、上述のように、所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出する機能を有している。
【００４３】
上記小節検出部４は、同じくテンポ検出用プログラムが読み込まれて実行され、以下に示す処理を行うコンピュータのＣＰＵにより構成されており、上述のように、上記ビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する機能を有している。
【００４４】
音楽音響信号を入力する上記入力部１は、テンポ検出をする対象の音楽音響信号を入力する部分である。マイク等の機器から入力されたアナログ信号をＡ／Ｄ変換器（図示無し）によりディジタル信号に変換しても良いし、音楽ＣＤなどのディジタル化された音楽データの場合は、そのままファイルとして取り込み（リッピング）、これを指定して開くようにしても良い。このようにして入力したディジタル信号がステレオの場合、後の処理を簡略化するためにモノラルに変換する。
【００４５】
このディジタル信号は、音階音レベル検出部２に入力される。この音階音レベル検出部は図２の各部から構成される。
【００４６】
そのうち波形前処理部２０は、音楽音響信号の上記入力部１からの音響信号を今後の処理に適したサンプリング周波数にダウンサンプリングする構成である。
【００４７】
ダウンサンプリングレートは、ビート検出に使う楽器の音域によって決定する。すなわち、シンバル、ハイハット等の高音域のリズム楽器の演奏音をビート検出に反映させるには、ダウンサンプリング後のサンプリング周波数を高い周波数にする必要があるが、ベース音とバスドラム、スネアドラム等の楽器音と中音域の楽器音から主にビート検出させる場合には、ダウンサンプリング後のサンプリング周波数はそれほど高くする必要はない。
【００４８】
例えば検出する最高音をＡ６（Ｃ４が中央のド）とする場合、Ａ６の基本周波数は約１７６０Ｈｚ（Ａ４＝４４０Ｈｚとした場合）となるので、ダウンサンプリング後のサンプリング周波数は、ナイキスト周波数が１７６０Ｈｚ以上となる、３５２０Ｈｚ以上にすれば良い。これから、ダウンサンプリングレートは、元のサンプリング周波数が４４．１ｋＨｚ（音楽ＣＤ）の場合、１／１２程度にすれば良いことになる。この時、ダウンサンプリング後のサンプリング周波数は、３６７５Ｈｚとなる。
【００４９】
ダウンサンプリングの処理は、通常、ダウンサンプリング後のサンプリング周波数の半分の周波数であるナイキスト周波数（今の例では１８３７．５Ｈｚ）以上の成分をカットするローパスフィルタを通した後に、データを読み飛ばす（今の例では波形サンプルの１２個に１１個を破棄する）ことによって行われる。
【００５０】
このようにダウンサンプリングの処理を行うのは、この後のＦＦＴ演算において、同じ周波数分解能を得るために必要なＦＦＴポイント数を下げることで、ＦＦＴの演算時間を減らすのが目的である。
【００５１】
なお、音楽ＣＤのように、音源が固定のサンプリング周波数で既にサンプリングされている場合は、このようなダウンサンプリングが必要になるが、音楽音響信号の入力部１が、マイク等の機器から入力されたアナログ信号をＡ／Ｄ変換器によりディジタル信号に変換するような場合には、当然Ａ／Ｄ変換器のサンプリング周波数を、ダウンサンプリング後のサンプリング周波数に設定することで、この波形前処理部を省くことが可能である。
【００５２】
このようにして波形前処理部２０によるダウンサンプリングが終了したら、所定の時間間隔で、波形前処理部の出力信号を、ＦＦＴ演算部２１によりＦＦＴ（高速フーリエ変換）する。
【００５３】
ＦＦＴのパラメータ（ＦＦＴポイント数とＦＦＴ窓のシフト量）は、ビート検出に適した値とする。つまり、周波数分解能を上げるためにＦＦＴポイント数を大きくすると、ＦＦＴ窓のサイズが大きくなってしまい、より長い時間から１回のＦＦＴを行うことになり、時間分解能が低下する、というＦＦＴの特性を考慮しなくてはならない（つまりビート検出時は周波数分解能を犠牲にして時間分解能をあげるのが良い）。窓のサイズと同じだけの長さの波形を使わないで、窓の一部だけに波形データをセットし残りは０で埋めることによって、ＦＦＴポイント数を大きくしても時間分解能が悪くならない方法もあるが、低音側のパワー（ここでパワーは、上記レベルと同意；以下同じ）も正しく検出するためには、ある程度の波形サンプル数は必要である。
【００５４】
以上のようなことを考慮し、本実施例では、ＦＦＴポイント数５１２、窓のシフトは３２サンプルで、０埋めなしという設定にした。このような設定でＦＦＴ演算を行うと、時間分解能約８．７ｍｓ、周波数分解能約７．２Ｈｚとなる。時間分解能約８．７ｍｓという値は、四分音符＝３００のテンポの曲で、３２分音符の長さが、２５ｍｓであることを考えると、十分な値であることがわかる。
【００５５】
このようにして、所定の時間間隔毎にＦＦＴ演算が行われ、その実数部と虚数部のそれぞれを二乗したものの和の平方根からパワーが計算され、その結果がレベル検出部２２に送られる。
【００５６】
レベル検出部２２では、ＦＦＴ演算部２１で計算されたパワー・スペクトルから、各音階音のレベルを計算する。ＦＦＴは、サンプリング周波数をＦＦＴポイント数で割った値の整数倍の周波数のパワーが計算されるだけであるので、このパワー・スペクトルから各音階音のレベルを検出するために、以下のような処理を行う。つまり、音階音を計算するすべての音（Ｃ１からＡ６）について、その各音の基本周波数の上下５０セントの範囲（１００セントが半音）の周波数に相当するパワー・スペクトルの内、最大のパワーを持つスペクトルのパワーをこの音階音のレベルとする。
【００５７】
すべての音階音についてレベルが検出されたら、これをバッファに保存し、波形の読み出し位置を所定の時間間隔（先の例では３２サンプル）進めて、ＦＦＴ演算部２１とレベル検出部２２の処理を波形の終わりまで繰り返す。
【００５８】
以上により、音楽音響信号の入力部１に入力された音響信号の、所定時間毎の各音階音のレベルが、バッファ２３に保存される。
【００５９】
次に、図１のビート検出部３の構成について説明する。該ビート検出部３は、図３のような処理の流れで実行される。
【００６０】
ビート検出部３は、音階音レベル検出部が出力した所定時間（以下、この１所定時間を１フレームと呼ぶ）毎の各音階音のレベルの変化を元に平均的なビート（拍）間隔（つまりテンポ）とビートの位置を検出する。そのために、まずビート検出部３は、各音階音のレベル増分値の合計（前のフレームとのレベルの増分値をすべての音階音で合計したもの。前のフレームからレベルが減少している場合は０として加算する）を計算する（ステップＳ１００）。
【００６１】
つまり、フレーム時間ｔにおけるｉ番目の音階音のレベルをＬｉ（ｔ）とするとき、ｉ番目の音階音のレベル増分値Ｌａｄｄｉ（ｔ）は、下式数１に示すようになり、このＬａｄｄｉ（ｔ）を使って、フレーム時間ｔにおける各音階音のレベル増分値の合計Ｌ（ｔ）は、下式数２で計算できる。ここで、Ｔは音階音の総数である。
【００６２】
【数１】
0005005445.tif 000002
【００６３】
【数２】
0005005445.tif 000003
【００６４】
この合計Ｌ（ｔ）値は、フレーム毎の全体での音の変化度合いを表している。この値は、音の鳴り始めで急激に大きくなり、同時に鳴り始める音が多いほど大きな値となる。音楽はビートの位置で音が鳴り始めることが多いので、この値が大きなところはビートの位置である可能性が高いことになる。
【００６５】
例として、図４に、ある曲の一部分の波形と各音階音のレベル、各音階音のレベル増分値の合計の図を示す。上段が波形、中央がフレーム毎の各音階音のレベルを濃淡で表したもの（下が低い音、上が高い音。この図では、Ｃ１からＡ６の範囲）、下段がフレーム毎の各音階音のレベル増分値の合計を示している。この図の各音階音のレベルは、音階音レベル検出部から出力されたものであるので、周波数分解能が約７．２Ｈｚであり、Ｇ＃２以下の一部の音階音でレベルが計算できずに歯抜け状態になっているが、この場合はビートを検出するのが目的であるので、低音の一部の音階音のレベルが測定できないのは、問題ない。
【００６６】
この図の下段に見られるように、各音階音のレベル増分値の合計は、定期的にピークをもつ形となっている。この定期的なピークの位置が、ビートの位置である。
【００６７】
ビートの位置を求めるために、ビート検出部３では、まずこの定期的なピークの間隔、つまり平均的なビート間隔を求める。平均的なビート間隔はこの各音階音のレベル増分値の合計の自己相関から計算できる（図３；ステップＳ１０２）。
【００６８】
あるフレーム時間ｔにおける各音階音のレベル増分値の合計をＬ（ｔ）とすると、この自己相関φ（τ）は、以下の式数３で計算される。
【００６９】
【数３】
0005005445.tif 000004
ここで、Ｎは総フレーム数、τは時間遅れである。
【００７０】
自己相関計算の概念図を、図５に示す。この図のように、時間遅れτがＬ（ｔ）のピークの周期の整数倍の時に、φ（τ）は大きな値となる。よって、ある範囲のτについてφ（τ）の最大値を求めれば、曲のテンポを求めることができる。
【００７１】
自己相関を求めるτの範囲は、想定する曲のテンポ範囲によって変えれば良い。例えば、メトロノーム記号で四分音符＝３０から３００の範囲を計算するならば、自己相関を計算する範囲は、０．２秒から２秒となる。時間（秒）からフレームへの変換式は、以下の数４式に示す通りとなる。
【００７２】
【数４】
0005005445.tif 000005
【００７３】
この範囲の自己相関φ（τ）が最大となるτをビート間隔としても良いが、必ずしもすべての曲で自己相関が最大となる時のτがビート間隔とはならないので、自己相関が極大値となる時のτからビート間隔の候補を求め（図３；ステップＳ１０４）、これら複数の候補からユーザにビート間隔を決定させるのが良い（図３；ステップＳ１０６）。
【００７４】
このようにしてビート間隔が決定したら（決定したビート間隔をτｍａｘとする）、まず最初に先頭のビート位置を決定する。
【００７５】
先頭のビート位置の決定方法を、図６を用いて説明する。図６の上段はフレーム時間ｔにおける各音階音のレベル増分値の合計Ｌ（ｔ）で、下段Ｍ（ｔ）は決定したビート間隔τｍａｘの周期で値を持つ関数である。式で表すと、下式数５に示すようになる。
【００７６】
【数５】
0005005445.tif 000006
【００７７】
この関数Ｍ（ｔ）を、０からτｍａｘ−１の範囲でずらしながら、Ｌ（ｔ）とＭ（ｔ）の相互相関を計算する。
【００７８】
相互相関ｒ（ｓ）は、上記Ｍ（ｔ）の特性から、下式数６で計算できる。
【００７９】
【数６】
0005005445.tif 000007
【００８０】
この場合のｎは、最初の無音部分の長さに応じて適当に決めれば良い（図６の例では、ｎ＝１０）。
【００８１】
ｒ（ｓ）をｓが０からτｍａｘ−１の範囲で求め、ｒ（ｓ）が最大となるｓを求めれば、このｓのフレームが最初のビート位置である。
【００８２】
最初のビート位置が決まったら、それ以降のビートの位置を１つずつ決定していく（図３；ステップＳ１０８）。
【００８３】
その方法を、図７を用いて説明する。図７の三角印の位置に先頭のビートが見つかったとする。２番目のビート位置は、この先頭のビート位置からビート間隔τｍａｘだけ離れた位置を仮のビート位置とし、その近辺でＬ（ｔ）とＭ（ｔ）が最も相関が取れる位置から決定する。つまり、先頭のビート位置をｂ０とするとき、以下の式のｒ（ｓ）が最大となるようなｓの値を求める。この式のｓは仮のビート位置からのずれで、以下の式数７の範囲の整数とする。Ｆは揺らぎのパラメータで０．１程度の値が適当であるが、テンポの揺らぎの大きい曲では、もっと大きな値にしてもよい。ｎは５程度でよい。
【００８４】
ｋは、ｓの値に応じて変える係数で、例えば図８のような正規分布とする。
【００８５】
【数７】
0005005445.tif 000008
【００８６】
ｒ（ｓ）が最大となるようなｓの値が求まれば、２番目のビート位置ｂ１は、下式数８で計算される。
【００８７】
【数８】
0005005445.tif 000009
【００８８】
以降、同じようにして３番目以降のビート位置も求めることができる。
【００８９】
テンポがほとんど変わらない曲ではこの方法でビート位置を曲の終わりまで求めることができるが、実際の演奏は多少テンポが揺らいだり、部分的にだんだん遅くなったりすることがよくある。
【００９０】
そこで、これらのテンポの揺らぎにも対応できるように以下のような方法を考えた。
【００９１】
つまり、図７のＭ（ｔ）の関数を、図９のように変化させるものである。
１）は、従来の方法で、図のように各パルスの間隔をτ１、τ２、τ３、τ４としたとき、
τ１＝τ２＝τ３＝τ４＝τｍａｘ
である。
２）は、τ１からτ４を均等に大きくしたり小さくしたりするものである。
τ１＝τ２＝τ３＝τ４＝τｍａｘ＋ｓ  (-τｍａｘ・Ｆ≦ｓ≦τｍａｘ・Ｆ）これにより、急にテンポが変わった場合に対応できる。
３）は、ｒｉｔ．（リタルダンド、だんだん遅く）又は、ａｃｃｅｌ．（アッチェレランド、だんだん速く）に対応したもので、各パルス間隔は、
τ１＝τｍａｘ
τ２＝τｍａｘ＋１・ｓ
τ３＝τｍａｘ＋２・ｓ  （-τｍａｘ・Ｆ≦ｓ≦τｍａｘ・Ｆ）
τ４＝τｍａｘ＋４・ｓ
で計算される。
１、２、４の係数は、あくまで例であり、テンポ変化の大きさによって変えてもよい。
４）は、３）のようなｒｉｔ．やａｃｃｅｌ．の場合の、５個のパルスの位置のどこが現在ビートを求めようとしている場所かを変えるものである。
【００９２】
これらをすべて組み合わせて、Ｌ（ｔ）とＭ（ｔ）の相関を計算し、それらの最大からビート位置を決めれば、テンポが揺らぐ曲に対してもビート位置の決定が可能である。なお、２）と３）の場合には、相関を計算するときの係数ｋの値を、やはりｓの値に応じて変えるようにする。
【００９３】
さらに、５個のパルスの大きさは現在すべて同じにしてあるが、ビートを求める位置（図９の仮のビート位置）のパルスのみ大きくしたり、ビートを求める位置から離れるほど値を小さくして、ビートを求める位置の各音階音のレベル増分値の合計を強調するようにしてもよい［図９の５）］。
【００９４】
以上のようにして、各ビートの位置が決定したら、この結果をバッファ３０に保存すると共に、検出した結果を表示し、ユーザに確認してもらい、間違っている箇所を修正してもらうようにしてもよい。
【００９５】
ビート検出結果の確認画面の例を、図１０に示す。同図の三角印の位置が検出したビート位置である。
【００９６】
「再生」のボタンを押すと、現在の音楽音響信号が、Ｄ／Ａ変換され、スピーカ等から再生される。現在の再生位置は、図のように縦線等の再生位置ポインタで表示されるので、演奏を聞きながら、ビート検出位置の誤りを確認できる。さらに、検出の元波形の再生と同時に、ビート位置のタイミングで例えばメトロノームのような音を再生させるようにすれば、目で確認するだけでなく音でも確認でき、より容易に誤検出を判断できる。このメトロノームの音を再生させる方法としては、例えばＭＩＤＩ機器等が考えられる。
【００９７】
ビート検出位置の修正は、「ビート位置の修正」ボタンを押して行う。このボタンを押すと、画面に十字のカーソルが現れるので、最初のビート検出が間違っている箇所で正しいビート位置をクリックする。クリックされた場所の少し前（例えばτｍａｘの半分の位置）から後のビート位置をすべてクリアし、クリックされた場所を、仮のビート位置として、以降のビート位置を再検出する。
【００９８】
次に、拍子および小節の検出について説明する。
【００９９】
これまでの処理で、ビートの位置が確定しているので、今度は、ビート毎の音の変化度合いを求める。ビート毎の音の変化度合いは、音階音レベル検出部が出力した、フレーム毎の各音階音のレベルから計算する。
【０１００】
ｊ番目のビートのフレーム数をｂｊとし、その前後のビートのフレームをｂｊ−１、ｂｊ＋１とする時、ｊ番目のビートのビート毎の音の変化度合いは、フレームｂｊ−１からｂｊ−１までのフレームの各音階音のレベルの平均とフレームｂｊからｂｊ＋１−１までのフレームの各音階音のレベルの平均を計算し、その増分値から各音階音のビート毎の音の変化度合いを求め、それらをすべての音階音で合計して計算することができる。
【０１０１】
つまり、フレーム時間ｔにおけるｉ番目の音階音のレベルをＬｉ（ｔ）とするとき、ｊ番目のビートのｉ番目の音階音のレベルの平均Ｌａｖｇｉ（ｊ）は、下式数９であるから、ｊ番目のビートのｉ番目の音階音のビート毎の音の変化度合いＢａｄｄｉ（ｊ）は、下式数１０に示すようになる。
【０１０２】
【数９】
0005005445.tif 000010
【０１０３】
【数１０】
0005005445.tif 000011
【０１０４】
よって、ｊ番目のビートのビート毎の音の変化度合いＢ（ｊ）は、下式数１１に示すようになる。ここで、Ｔは音階音の総数である。
【０１０５】
【数１１】
0005005445.tif 000012
【０１０６】
図１１の最下段は、このビート毎の音の変化度合いである。このビート毎の音の変化度合いから拍子と１拍目の位置を求める。
【０１０７】
拍子は、ビート毎の音の変化度合いの自己相関から求める。一般的に音楽は１拍目で音が変わることが多いと考えられるので、このビート毎の音の変化度合いの自己相関から拍子を求めることができる。例えば、下式数１２に示す自己相関φ（τ）を求める式から、ビート毎の音の変化度合いＢ（ｊ）の自己相関φ（τ）を遅れτが、２から４の範囲で求め、自己相関φ（τ）が最大となる遅れτを拍子の数とする。
【０１０８】
【数１２】
0005005445.tif 000013
【０１０９】
Ｎは、総ビート数、τ＝２〜４の範囲でφ（τ）を計算し、φ（τ）が最大となるτを拍子の数とする。
【０１１０】
次に１拍目を求めるが、これは、ビート毎の音の変化度合いＢ（ｊ）がもっとも大きい箇所を１拍目とする。つまり、φ（τ）が最大となるτをτｍａｘ、下式数１３のＸ（ｋ）が最大となるｋをｋｍａｘとするとき、ｋｍａｘ番目のビートが最初の１拍目の位置となり、以降、τｍａｘを足したビート位置が１拍目となる。
【０１１１】
【数１３】
0005005445.tif 000014
ｎｍａｘは、τｍａｘ・ｎ＋ｋ＜Ｎの条件で最大となるｎ
【０１１２】
以上のようにして、拍子及び１拍目の位置（小節線の位置）が決定したら、この結果をバッファ４０に保存すると共に、検出した結果を画面表示して、ユーザに変更させるようにすることが望ましい。特に変拍子の曲は、この方法では対応できないので、変拍子の箇所をユーザに指定してもらう必要がある。
【０１１３】
以上の前提例構成により、人間が演奏したテンポの揺らぐ演奏の音響信号から、曲全体の平均的なテンポと正確なビート（拍）の位置、さらに曲の拍子と１拍目の位置を検出することが可能となる。
【実施例１】
【０１１４】
図１２は、本発明のコード名検出装置の全体ブロック図である。同図において、ビート検出及び小節検出の構成は、前提例構成と基本的に同じであり、同一構成において、テンポ検出用とコード検出用の構成について、上記前提例構成の場合と異なるものもあるので、数式等を除き、同じ説明が重なるが、以下に示す。
【０１１５】
同図によれば、本コード名検出装置の構成は、音響信号を入力する入力部１と、入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求めるビート検出用音階音レベル検出部２と、この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出部３と、このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出部４と、上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求めるコード検出用音階音レベル検出部５と、検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出部６と、検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定部７と、検出した全てのコード毎に、コード位置、ベース域音階音強度、ベース音、コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶するコード情報記憶部８と、ベース音、コード構成音、及び上記閾値を表示する表示部９と、上記コード情報記憶部８に記憶された音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定部７のコード名決定、コード情報記憶部８のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示部９のコード構成音表示に指示を与えるコード構成音決定部１０と、上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶部８に記憶させる閾値設定部１１とを有している。
【０１１６】
上記コード情報記憶部８は、コンピュータの内部又は外部記憶装置で構成されており、後述する図１５に示すように、検出した全てのコード毎に、コード位置、ベース域音階音強度、ベース音、コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の閾値、コード名を記憶する機能を有している。
【０１１７】
上記表示部９は、コンピュータのディスプレイで構成されており、後述する図１６に示すように、上記コード名決定部７で決定されたベース音及びコード構成音を表示する機能を有している。また後述する閾値設定部１１での閾値入力を行う時に画面が遷移し、コード構成音の閾値を変更しようとする時の閾値入力部を表示する構成を兼ねている。
【０１１８】
上記コード構成音決定部１０は、コード名検出用プログラムが読み込まれて実行され、次に説明する処理を行うコンピュータのＣＰＵにより構成されており、上述のように、上記コード情報記憶部８に記憶された音階音強度の閾値に基づいて、各コードの音階音強度から、コード構成音として採用するか否かを決定すると共に、上記コード名決定部７のコード名決定、コード情報記憶部８のコード構成音、コード構成音として採用するための音階音強度の閾値、コード名の記憶、及び上記表示部９のコード構成音表示に指示を与える機能を有している。
【０１１９】
上記閾値設定部１１は、同じくコンピュータのディスプレイに表示されたカーソルと該コンピュータに接続されたポインティングデバイスで構成されており、後述する図１９に示すように、上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶部８に記憶させる機能を有している。
【０１２０】
音楽音響信号を入力する上記入力部１は、コード検出をする対象の音楽音響信号を入力する部分であるが、基本的構成は上記実施例１の入力部１と同じであるので、その詳細な説明は省略する。ただし、通常センタに定位されるボーカルが後のコード検出でじゃまになる場合は、右チャンネルの波形と左チャンネルの波形を引き算することでボーカルキャンセルするようにしても良い。
【０１２１】
このディジタル信号は、ビート検出用音階音レベル検出部２とコード検出用音階音レベル検出部５とに入力される。これらの音階音レベル検出部は、どちらも上記図２の各部から構成され、構成はまったく同じなので、同じものをパラメータだけを変えて再利用できる。
【０１２２】
そしてその構成として使用される波形前処理部２０は、上記と同様な構成であり、音楽音響信号の上記入力部１からの音響信号を今後の処理に適したサンプリング周波数にダウンサンプリングする。ただし、ダウンサンプリング後のサンプリング周波数、つまり、ダウンサンプリングレートは、ビート検出用とコード検出用で変えるようにしても良いし、ダウンサンプリングする時間を節約するために同じにしても良い。
【０１２３】
ビート検出用の場合は、ビート検出に使う音域によってダウンサンプリングレートを決定する。シンバル、ハイハット等の高音域のリズム楽器の演奏音をビート検出に反映させるには、ダウンサンプリング後のサンプリング周波数を高い周波数にする必要があるが、ベース音とバスドラム、スネアドラム等の楽器音と中音域の楽器音から主にビート検出させる場合には、以下のコード検出時と同じダウンサンプリングレートで構わない。
【０１２４】
コード検出用の波形前処理部のダウンサンプリングレートは、コード検出音域によって変える。コード検出音域とは、コード名決定部でコード検出するときに使う音域のことである。例えばコード検出音域をＣ３からＡ６（Ｃ４が中央のド）とする場合、Ａ６の基本周波数は約１７６０Ｈｚ（Ａ４＝４４０Ｈｚとした場合）となるので、ダウンサンプリング後のサンプリング周波数はナイキスト周波数が１７６０Ｈｚ以上となる、３５２０Ｈｚ以上にすれば良い。これから、ダウンサンプリングレートは、元のサンプリング周波数が４４．１ｋＨｚ（音楽ＣＤ）の場合、１／１２程度にすれば良いことになる。この時、ダウンサンプリング後のサンプリング周波数は、３６７５Ｈｚとなる。
【０１２５】
ダウンサンプリングの処理は、通常、ダウンサンプリング後のサンプリング周波数の半分の周波数であるナイキスト周波数（今の例では１８３７．５Ｈｚ）以上の成分をカットするローパスフィルタを通した後に、データを読み飛ばす（今の例では波形サンプルの１２個に１１個を破棄する）ことによって行われる。これについては、前提例構成に説明したことと同じ理由による。
【０１２６】
このようにして波形前処理部２０によるダウンサンプリングが終了したら、所定の時間間隔で、波形前処理部の出力信号をＦＦＴ演算部２１により、ＦＦＴ（高速フーリエ変換）する。
【０１２７】
ＦＦＴのパラメータ（ＦＦＴポイント数とＦＦＴ窓のシフト量）は、ビート検出時とコード検出時で異なる値とする。これは、周波数分解能を上げるためにＦＦＴポイント数を大きくすると、ＦＦＴ窓のサイズが大きくなってしまい、より長い時間から１回のＦＦＴを行うことになり、時間分解能が低下する、というＦＦＴの特性によるものである（つまりビート検出時は周波数分解能を犠牲にして時間分解能をあげるのが良い）。窓のサイズと同じだけの長さの波形を使わないで、窓の一部だけに波形データをセットし、残りは０で埋めることによってＦＦＴポイント数を大きくしても時間分解能が悪くならない方法もあるが、本実施例のケースでは、低音側のパワーも正しく検出するためにある程度の波形サンプル数は必要である。
【０１２８】
以上のようなことを考慮し、本実施例では、ビート検出時はＦＦＴポイント数５１２、窓のシフトは３２サンプルで、０埋めなし、コード検出時はＦＦＴポイント数８１９２、窓のシフトは１２８サンプルで、波形サンプルは一度のＦＦＴで１０２４サンプル使うようにした。このような設定でＦＦＴ演算を行うと、ビート検出時は、時間分解能約８．７ｍｓ、周波数分解能約７．２Ｈｚ、コード検出時は、時間分解能約３５ｍｓ、周波数分解能約０．４Ｈｚとなる。今レベルを求めようとしている音階音は、Ｃ１からＡ６の範囲であるので、コード検出時の周波数分解能約０．４Ｈｚは、最も周波数差の小さいＣ１とＣ＃１の基本周波数の差、約１．９Ｈｚにも対応できる。また、四分音符＝３００のテンポの曲で３２分音符の長さが２５ｍｓであることを考えると、ビート検出時の時間分解能約８．７ｍｓは、十分な値であることがわかる。
【０１２９】
このようにして、所定の時間間隔毎にＦＦＴ演算が行われ、その実数部と虚数部のそれぞれを二乗したものの和の平方根からパワーが計算され、その結果がレベル検出部２２に送られる。
【０１３０】
レベル検出部２２では、ＦＦＴ演算部２１で計算されたパワー・スペクトルから、各音階音のレベルを計算する。ＦＦＴは、サンプリング周波数をＦＦＴポイント数で割った値の整数倍の周波数のパワーが計算されるだけであるので、このパワー・スペクトルから各音階音のレベルを検出するために、前提例構成と同様な処理を行う。すなわち、音階音を計算するすべての音（Ｃ１からＡ６）について、その各音の基本周波数の上下５０セントの範囲（１００セントが半音）の周波数に相当するパワー・スペクトルの内、最大のパワーを持つスペクトルのパワーをこの音階音のレベルとする。
【０１３１】
すべての音階音についてレベルが検出されたら、これをバッファに保存し、波形の読み出し位置を所定の時間間隔（先の例ではビート検出時は３２サンプル、コード検出時は１２８サンプル）進めて、ＦＦＴ演算部２１とレベル検出部２２の処理を波形の終わりまで繰り返す。
【０１３２】
以上により、音楽音響信号の入力部１に入力された音響信号の、所定時間毎の各音階音のレベルが、ビート検出用とコード検出用の２種類のバッファ２３及び５０に保存される。
【０１３３】
次に、図１２のビート検出部３及び小節検出部４の構成については、前提例構成のビート検出部３及び小節検出部４と同じ構成なので、その詳細な説明は、ここでは、省略する。
【０１３４】
前提例構成と同様な構成と手順で、小節線の位置（各小節のフレーム番号）が確定したので、今度は各小節のベース音を検出する。
【０１３５】
ベース音は、コード検出用音階音レベル検出部５が出力した各フレームの音階音のレベルから検出する。
【０１３６】
図１３に前提例構成の図４と同じ曲の同じ部分のコード検出用音階音レベル検出部５が出力した各フレームの音階音のレベルを示す。この図のように、コード検出用音階音レベル検出部５での周波数分解能は、約０．４Ｈｚであるので、Ｃ１からＡ６のすべての音階音のレベルが抽出されている。
【０１３７】
ベース音は、小節の前半と後半で異なる可能性があるので、ベース音検出部６により、各小節の前半と後半でそれぞれ検出する。前半と後半のベース音が同じ音のときは、小節のベース音としてこれを確定し、コードも小節全体で検出する。前半と後半で別の音のベース音が検出されたときは、コードも前半と後半に分けて検出する。場合によっては、分割する範囲を更に半分にまで（小節の４分の１まで）狭めてもよい。
【０１３８】
ベース音は、ベース検出期間におけるベース検出音域の音階音のレベルの平均的な強さから求める。すなわちこれがベース音の強度である。
【０１３９】
フレーム時間ｔにおけるｉ番目の音階音のレベルをＬｉ（ｔ）とすると、フレームｆｓからｆｅのｉ番目の音階音の平均的なレベルＬａｖｇｉ（ｆｓ，ｆｅ）は、下式数１４で計算できる。
【０１４０】
【数１４】
0005005445.tif 000015
【０１４１】
この平均的なレベルをベース検出音域、例えばＣ２からＢ３の範囲で計算し、平均的なレベルが最も大きな音階音をベース音として、ベース音検出部６は、決定する。ベース検出音域に音が含まれない曲や無音部分で間違ってベース音を検出しないために、適当な閾値を設定し、検出したベース音の平均的なレベルが、この閾値以下の場合は、ベース音を検出しないようにしてもよい。また、後のコード検出でベース音を重要視する場合には、検出したベース音がベース検出期間中継続してあるレベル以上を保っているかどうかをチェックするようにして、より確実なものだけをベース音として検出するようにしてもよい。さらに、ベース検出音域中、平均的なレベルが最も大きい音階音をベース音として決定するのではなく、この各音名の平均的なレベルを１２の音名毎に平均し、この音名毎のレベルが最も大きな音名をベース音名として決定し、その音名を持つベース検出音域の中の音階音で、平均的なレベルが最も大きい音階音をベース音として決定するようにしてもよい。
【０１４２】
ベース音が決定したら、この結果をバッファ６０に保存すると共に、ベース検出結果を画面表示して、間違っている場合にはユーザに修正させるようにしてもよい。また、曲によってベース音域が変わることも考えられるので、ユーザがベース検出音域を変更できるようにしてもよい。
【０１４３】
図１４に、ベース音検出部６によるベース検出結果の表示例を示す。
【０１４４】
次にコード名決定部７によるコード検出処理であるが、該コード検出処理も、同じようにコード検出期間における各音階音の平均的なレベルを計算することによって決定する。すなわちこれがコードの強度である。
【０１４５】
本実施例では、コード検出期間とベース検出期間は同一としている。コード検出音域、例えばＣ３〜Ａ６の各音階音のコード検出期間における平均的なレベルを計算する。さらにそれら各音階音に対応する１２のレベル区間平均値の平均に所定の係数を乗じて、コード構成音の閾値を決定する。コード構成音閾値は、各音階音に対応する１２のレベル区間平均値の中央値に所定の係数を乗ずるなどして、他の方法により決定しても良い。
【０１４６】
デフォルトでは、この閾値が、上記コード情報記憶部８に記憶される。該コード情報記憶部８は、決定した上記閾値、及びその他上述したようなデータを記憶する構成であり、上記コンピュータの内部又は外部記憶装置で構成される。この閾値以上の強度を持つ音階音がコード構成音として採用される。これとベース音の音名からコード名候補を抽出する。すなわち、コード構成音の中から２つ以上を全て組み合わせで抜き出して、これとベース音名とから、コード名候補の抽出を行う。
【０１４７】
図１５は、コード情報記憶部８の情報記憶状態の模式図が示されている。同図に示すように、該コード情報記憶部８には、コード名検出の過程において、コード位置にはベース音検出期間の最初のフレーム番号（コード１、コード２、……）が記憶され、ベース域音階音強度には、ベース音域内であって、ベース音検出期間のＣ〜Ｂまでの各１２音の強度の区間平均が記憶される（例えばコード１では、Ｃが１５０、…、Ｂが１１０）。
【０１４８】
また、ベース音には、ベース音検出期間において検出されたベース音の音階番号が記憶される（例えばコード１では０、コード２では７）。コード音階音強度には、ベース検出期間のＣ〜Ｂまでの各１２音の強度の区間平均が記憶され（例えばコード２では、Ｃが１００、…、Ｂが１３０）、コード構成音には、ベース検出期間において抽出されたコード構成音が記憶される（例えばコード１では、０、４、７が、またコード２では、７、２、１１、５が、各記憶される）。
【０１４９】
さらに、コード構成音閾値には、コード構成音として採用されることになる最小の強度が記憶され（例えばコード１では、１２３．５が、またコード２では、１１５．９が、その閾値である）、コード名には、決定されたコード名（或いはそれに対応した番号でも良い）が記憶される（例えばコード１ではＣ、またコード２ではＧ７）。
【０１５０】
図１６は、上記のようにしてコード情報記憶部８に記憶されたベース及びコード構成音の表示部９（コンピュータのディスプレイ）における表示例が示されている。ここでは、各コードにおいてベース音及びコード構成音として抽出された音階音は黒丸で表示されている。これに加えて、各音階音の強度を数値、或いは各エリアの背景色濃淡で表しても良い。同図の例では、左端に音階音名が表示されているが、図１７に示すように、表示エリアの矩形を鍵盤のような形で表示し、音階音名が分かるように表示するようにしても良い。
【０１５１】
上記図１５のように、コード情報記憶部８に記憶されるコード構成音の音階音閾値の設定変更の仕方について、説明する。本実施例では、デフォルトでは、上述のようにして、コード名決定部７でその閾値が決定され、該閾値にその強度が達している音階音がコード構成音として採用される。しかし、上記閾値設定部１１により、ユーザは、自由に音階音強度の閾値が設定でき、その設定値は、上記コード情報記憶部８に記憶されることになる。
【０１５２】
閾値設定部１１による、コード構成音閾値の設定手順は、以下に示すようになる。
【０１５３】
まず、図１８に示すように、コード構成音表示領域内（図面ではコードＣの領域内）にカーソルを置き、マウスなどのポインティングデバイス（図示無し）が右クリックされると、同図に示すように、構成音閾値変更メニューが現れ、これを左クリックすると、図１９に示すように、閾値を設定するダイアログボックスが表示される。このダイアログボックスに、上述のようにして決定された現在の閾値（図では１２３．５）が表示されているが、ここで変更したい閾値を１１５と設定すると（例えば１１５を入力して、「ＯＫ」ボタンをクリックすると）、コード情報記憶部８のコード１のコード構成音閾値が１１５に変更される（図１５では当初その閾値が１２３．５であったが、これが１１５に変更される）。本実施例では、図１９に示すようなダイアログボックスとポインティングデバイスが、上記閾値設定部１１に相当する。
【０１５４】
以上のように、上記閾値設定部１１による新たな閾値設定操作がなされると、コンピュータのＣＰＵで構成されるコード構成音決定部１０により、上記コード情報記憶部８に記憶された各音階音の強度が新たな閾値に達していれば、その音階音がコード構成音として採用され、逆にこれまでコード構成音とされていたものが、その強度が新たな閾値に達しなくなったため、コード構成音から外されることもある。それらの変更によって、コード構成音に変更が生ずる。たとえば、上記のように、上述のようにして決定された現在の閾値が、図１５では１２３．５と表示されているが、ここで変更したい閾値を１１５と設定すると、コード情報記憶部８のコード１のコード構成音閾値が１１５に変更される。
【０１５５】
上記の処理により、音階音強度がこの値より大きい、Ｃ、Ｅ、Ｇ、Ｂがコード構成音として採用され、図２０に示すように、コード情報記憶部８のコード１のコード構成音に１１（Ｂに相当）が追加される。さらに図２１に示すように、表示部９のコード１（それまでコードＣとされていた）の表示列のＢの表示領域に黒丸が表示される。
【０１５６】
この際、必ずしもレベルが大きな音がコード構成音であるとは限らないので、複数の音名の音を例えば５つ検出し、その中の２つ以上をすべての組み合わせで抜き出して、これとベース音の音名とからコード名候補の抽出を行う。
【０１５７】
コードに関しても、平均的なレベルが閾値以下のものは検出しないようにしてもよい。また、コード検出音域もユーザが変更できるようにしてもよい。さらに、コード検出音域中、平均的なレベルが最も大きい音階音から順にコード構成音候補を抽出するのではなく、このコード検出音域内の各音名の平均的なレベルを１２の音名毎に平均し、この音名毎のレベルの最も大きな音名から順にコード構成音候補を抽出してもよい。
【０１５８】
コード名候補の抽出は、コードのタイプ（ｍ、Ｍ７等）とコード構成音のルート音からの音程を保存したコード名データベースを、コード名決定部７により検索することによって抽出する。つまり、検出した５つの音名の中からすべての２つ以上の組み合わせを抜き出し、これらの音名間の音程が、このコード名データベースのコード構成音の音程の関係にあるかどうかをしらみつぶしに調べ、同じ音程関係にあれば、コード構成音のいずれかの音名からルート音を算出し、そのルート音の音名にコードタイプを付けて、コード名を決定する。このとき、コードのルート音（根音）や５度の音は、コードを演奏する楽器では省略されることがあるので、これらを含まなくてもコード名候補として抽出するようにする。ベース音を検出した場合には、このコード名候補のコード名にベース音の音名を加える。すなわち、コードのルート音とベース音が同じ音名であればそのままでよいし、異なる音名の場合は分数コードとする。
【０１５９】
上記方法では、抽出されるコード名候補が多すぎるという場合には、ベース音による限定を行ってもよい。つまり、ベース音が検出された場合には、コード名候補の中でそのルート音がベース音と同じ音名でないものは削除する。
【０１６０】
コード名候補が複数抽出された場合には、これらの中でどれか１つを決定するために、コード名決定部７により、尤度（もっともらしさ）の計算をする。
【０１６１】
尤度は、コード検出音域におけるすべてのコード構成音のレベルの強さの平均とベース検出音域におけるコードのルート音のレベルの強さから計算する。すなわち、抽出されたあるコード名候補のすべての構成音のコード検出期間における平均レベルの平均値をＬａｖｇｃ、コードのルート音のベース検出期間における平均レベルをＬａｖｇｒとすると、下式数１５のように、この２つの平均により尤度を計算する。
【０１６２】
【数１５】
0005005445.tif 000016
【０１６３】
この際、コード検出音域やベース検出音域に同一音名の音が複数含まれる場合には、それらのうち、平均レベルの強い方を使うようにする。あるいは、コード検出音域とベース検出音域のそれぞれで、各音階音の平均レベルを１２の音名毎に平均し、その音名毎の平均値を使うようにしてもよい。
【０１６４】
さらに、この尤度の計算に音楽的な知識を導入してもよい。例えば、各音階音のレベルを全フレームで平均し、それを１２の音名毎に平均して各音名の強さを計算し、その強さの分布から曲の調を検出する。そして、調のダイアトニックコードには尤度が大きくなるようにある定数を掛ける、あるいは、調のダイアトニックスケール上の音から外れた音を構成音に含むコードはその外れた音の数に応じて尤度が小さくなるようにする等が、考えられる。さらにコード進行のよくあるパターンをデータベースとして記憶しておき、それと比較することで、コード候補の中からよく使われる進行になるようなものは尤度が大きくなるようにある定数を掛けるようにしてもよい。
【０１６５】
最も尤度が大きいものをコード名として決定するが、コード名の候補を尤度とともに表示し、ユーザに選択させるようにしてもよい。
【０１６６】
いずれにしても、コード名決定部７により、コード名が決定したら、この結果（変更情報）をバッファ７０を介して、上記コード情報記憶部８に再記憶させると共に、図２１に示すように、表示部９にコード構成音を再表示させ、且つコード名を、ＣからＣＭ７に変更する。
【０１６７】
図２２に、コード名決定部７によるコード名検出結果の表示例を示す。このように検出されたコード名を画面表示するだけでなく、ＭＩＤＩ機器等を使って、検出されたコードとベース音を再生するようにすることが望ましい。一般的には、コード名を見ただけで正しいかどうかは判断できないからである。
【０１６８】
以上説明した本実施例構成によれば、特別な音楽的知識を有する専門家でなくても、音楽ＣＤ等の複数の楽器音の混ざった入力された音楽音響信号に対し、個々の音符情報を検出することなしに全体の響きから、コード名を検出でき、その際に構成音が同じ和音でも判別可能であるだけでなく、その検出結果を見たり聞いたユーザがコード進行上不自然なコード音であり、その検出結果に訂正を加えたい時は、上記閾値設定部１１を使用して、ユーザ側で、表示されたコード構成音として採用可能な音階音強度の閾値設定ができ、その結果コード構成音の数を変更することができるので、適切なコード名に変更ができるし、或いはコード進行を聞いた時に自然と感じるように、ユーザによる訂正ができるようになる。
【実施例２】
【０１６９】
図２３は、本発明に係る別のコード名検出装置の全体ブロック図である。同図において、ビート検出及び小節検出の構成は、前提例構成及び実施例１と基本的に同じであり、またコード情報記憶部、表示部、コード構成音決定部及び閾値設定部以下の構成は、上記実施例１の構成とは異なり、さらにフラグ設定部の構成が追加されるので、同一構成についての説明は除き、別異及び追加の構成につき、以下に示す。
【０１７０】
同図によれば、本コード名検出装置の構成は、音響信号を入力する入力部１と、入力された音響信号から、所定の時間間隔で、ビート検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求めるビート検出用音階音レベル検出部２と、この所定の時間毎の各音階音のレベルの増分値をすべての音階音について合計して、所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計を求め、この所定の時間毎の全体の音の変化度合いを示すレベルの増分値の合計から、平均的なビート間隔と各ビートの位置を検出するビート検出部３と、このビート毎の各音階音のレベルの平均値を計算し、このビート毎の各音階音の平均レベルの増分値をすべての音階音について合計して、ビート毎の全体の音の変化度合いを示す値を求め、このビート毎の全体の音の変化度合いを示す値から、拍子と小節線位置を検出する小節検出部４と、上記入力された音響信号から、先のビート検出の時とは異なる別の所定の時間間隔で、コード検出に適したパラメータを使ってＦＦＴ演算を行い、所定の時間毎の各音階音のレベルを求めるコード検出用音階音レベル検出部５と、検出した各音階音のレベルのうち、各小節内における低域側の音階音のレベルからベース音を検出するベース音検出部６と、検出したベース音と各音階音のレベルから各小節のコード名を決定するコード名決定部７と、検出した全てのコード毎に、コード位置、ベース域音階音強度、ベース音、コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶するコード情報記憶部８ａと、上記ベース音検出部６及びコード名決定部７で決定されたベース音及びコード構成音を表示すると共に、コード構成音として採用するための音階音強度の閾値を変更したり、閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグの設定状態を変更しようとする時には、それらの変更ダイアログを表示する表示部９ａと、上記音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定部７のコード名決定、コード情報記憶部８ａのコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示部９ａのコード構成音表示に指示を与えるコード構成音決定部１０ａと、上記音階音強度の閾値を設定し、その設定値を上記コード情報記憶部８ａに記憶させる閾値設定部１１ａと、上記フラグの状態を設定し、その設定状態を上記コード情報記憶部８ａに記憶させるフラグ設定部１２ａとを有している。
【０１７１】
上記コード情報記憶部８ａは、コンピュータの内部又は外部記憶装置で構成されており、上述のように、図２４に示すように、検出した全てのコード毎に、コード位置、ベース域音階音強度、ベース音、コード音階音強度、コード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名を記憶する機能を有している。
【０１７２】
上記表示部９ａは、コンピュータのディスプレイで構成されており、実施例１の構成のそれに相当する表示部９と同様、図２５に示すように、上記コード名決定部７で決定されたベース音及びコード構成音を表示する機能を有している。また後述する閾値設定部１１ａ及びフラグ設定部１２ａでの閾値入力やフラグ設定を行う時に画面が遷移し、コード構成音の２つの閾値を変更しようとする時の閾値入力部や閾値間の音階音を構成音に採用するか否かを指示するフラグの設定ボタンを表示する構成を兼ねている。
【０１７３】
上記コード構成音決定部１０ａは、コード名検出用プログラムが読み込まれて実行され、次に説明する処理を行うコンピュータのＣＰＵにより構成されており、上述のように、上記コード情報記憶部８ａに記憶された音階音強度の各閾値に基づいて、各コードの音階音強度から、それらの閾値内にない音階音をコード構成音として採用するか否かを決定し、且つ上記フラグの設定状態に基づき、所定の閾値間にある強度の音階音をコード構成音として採用するか否かを決定すると共に、上記コード名決定部７のコード名決定、コード情報記憶部８ａのコード構成音、コード構成音として採用するための音階音強度の少なくとも２以上の閾値、それら閾値間にある強度の音階音をコード構成音として採用するか否かを示すフラグ、コード名の記憶、及び上記表示部９ａのコード構成音表示に指示を与える機能を有している。
【０１７４】
上記閾値設定部１１ａは、コンピュータのディスプレイに表示されたカーソルと該コンピュータに接続されたポインティングデバイスで構成されており、図２６で示すように、２つの音階音強度の閾値をそれぞれ設定し、それらの設定値を上記コード情報記憶部８ａに記憶させる機能を有している。
【０１７５】
上記フラグ設定部１２ａは、同じくコンピュータのディスプレイに表示されたカーソルと該コンピュータに接続されたポインティングデバイスで構成されており、同じく図２６で示すように、２つの閾値間の強度を有する音階音を構成音に採用するか否かを決定するフラグの状態を設定し、その設定状態を上記コード情報記憶部８ａに記憶させる機能を有している。
【０１７６】
コード情報記憶部８ａの構成をさらに詳細に説明すると、上記実施例１の構成とやや異なり様、図２４に示すような状態で情報が記憶されている。すなわち、同図に示すように、コード構成音閾値の格納部が１及び２の２つあり、且つ閾値間音階音採用フラグの格納部もある。
【０１７７】
すなわち、該コード情報記憶部８ａには、コード名検出の過程において、コード位置にはベース音検出期間の最初のフレーム番号（コード１、コード２、……）が記憶され、ベース域音階音強度には、ベース音域内であって、ベース音検出期間のＣ〜Ｂまでの各１２音の強度の区間平均が記憶される（例えばコード１では、Ｃが１５０、…、Ｂが１１０）。
【０１７８】
また、ベース音には、ベース音検出期間において検出されたベース音の音階番号が記憶される（例えばコード１では０、コード２では７）。コード音階音強度には、ベース検出期間のＣ〜Ｂまでの各１２音の強度の区間平均が記憶され（例えばコード２では、Ｃが１００、…、Ｂが１３０）、コード構成音には、ベース検出期間において抽出されたコード構成音が記憶される（例えばコード１では、０、４、７が、またコード２では、７、２、１１、５が、各記憶される）。
【０１７９】
さらに、コード構成音閾値１には、コード構成音として必ず採用されることになった強度が記憶され（例えばコード１では、１２３．５が、またコード２では、１１５．９が、その閾値である）、コード構成音閾値２には、フラグの設定状態によりコード構成音として採用される場合とされない場合のある強度が記憶され（例えばコード１では、６０．５が、またコード２では、値無し）、閾値間音階音採用フラグには、各コード１、２、…、…のコード構成音閾値１及び２の間に強度が位置する音階音をコード構成音として採用するか否かのフラグ設定状態（例えばコード１、コード２共に０が）設定され、コード名には、決定されたコード名（或いはそれに対応した番号でも良い）が記憶される（例えばコード１ではコード構成音閾値１が１２３．５と、またコード構成音閾値２が６０．５と設定されいるが、フラグは０に設定されているため、Ｃとなっている、またコード２ではコード構成音閾値１が１１５．９と設定され、且つフラグは０に設定されているため、Ｇ７となっている）。
【０１８０】
図２５は、上記のようにしてコード情報記憶部８ａに記憶されたベース及びコード構成音の表示部９ａ（コンピュータのディスプレイ）における表示例が示されている。ここでは、各コードにおいてベース音及びコード構成音として抽出された音階音は黒丸で表示されている。これに加えて、各音階音の強度を数値、或いは各エリアの背景色濃淡で表しても良い。同図の例では、左端に音階音名が表示されているが、上記図１７に示すように、表示エリアの矩形を鍵盤のような形で表示し、音階音名が分かるように表示するようにしても良い。
【０１８１】
次に、コード情報記憶部８ａに記憶されるコード構成音の各音階音閾値の設定変更の仕方及び閾値間音階音採用設定フラグの設定について、説明する。本実施例では、デフォルトでは、上述のようにして、コード名決定部７でそのコード構成音閾値１が決定され、その閾値にその強度が達している音階音がコード構成音として採用される。しかし、上記閾値設定部１１ａにより、通常はコード構成音閾値２が、必要に応じてコード構成音閾値１が、設定変更できるようになっており、その設定値は、上記コード情報記憶部８ａに記憶されることになる。
【０１８２】
閾値設定部１１ａによる、各コード構成音閾値の設定手順は、以下に示すようになる。
【０１８３】
まず、図２７に示すように、コード構成音表示領域内（図面ではコードＣの領域内）にカーソルを置き、マウスなどのポインティングデバイス（図示無し）が右クリックされると、同図に示すように、構成音閾値変更メニューが現れ、これを左クリックすると、上記図２６に示すように、コード構成音閾値１及び２とフラグを設定するダイアログボックスが表示される。
【０１８４】
このダイアログボックスに、上述のようにして決定された（コード検出音域、の各音階音のコード検出期間における平均的なレベルを計算し、さらにそれら各音階音に対応する１２のレベル区間平均値の平均に所定の係数を乗じて、該コード構成音の閾値が決定されている）現在の閾値（図では１２３．５）がコード構成音閾値１として表示され、また同様にして（係数のみを異ならせて）決定されたコード構成音閾値２と（図では６０．５）、両閾値間の音階音を構成音として採用するか否か決定するフラグの状態も併せて表示されている。該フラグは「閾値間の音階音を構成音に採用します」のチェックボックスにチェックがない場合が０であることを示す。
【０１８５】
ここで、コード構成音閾値２に１０３．５を入力して、上記フラグの状態を示すチェックボックスにチェックを入れ、「ＯＫ」ボタンをクリックすると、コード情報記憶部８ａのコード１の閾値間音階音採用フラグが１になる。すると、音階音強度がこのコード構成音閾値１と２の間にあるＢ及びＤがコード構成音として追加される。
【０１８６】
以上のように、上記閾値設定部１１ａによる新たな閾値設定操作がなされ、且つ上記フラグ設定部１２ａによるフラグ設定操作により２つの閾値間の音階音強度中にあるものがコード構成音として採用される設定がなされると、コンピュータのＣＰＵで構成されるコード構成音決定部１０ａにより、上記コード情報記憶部８ａに記憶された各音階音の強度が２つの閾値の間にあれば、その音階音がコード構成音として採用され、逆に２つの閾値のうち小さいほうの閾値よりレベルが低ければ、コード構成音として採用されず、コード構成音から外されることになる。
【０１８７】
上記の処理により、音階音強度がコード構成音閾値１より大きいものと両コード構成音閾値の間にあるもの、すなわち、Ｃ、Ｄ、Ｅ、Ｇ、Ｂがコード構成音として採用され、図２８に示すように、コード情報記憶部８ａのコード１のコード構成音に１１（Ｂに相当）と２（Ｄに相当）が追加される。さらに図２９に示すように、表示部９ａのコード１（それまでコードＣとされていた）の表示列のＢとＤの表示領域に黒丸が表示される。
【０１８８】
この際、必ずしもレベルが大きな音がコード構成音であるとは限らないので、上記実施例１と同様、複数の音名の音を例えば５つ検出し、その中の２つ以上をすべての組み合わせで抜き出して、これとベース音の音名とからコード名候補の抽出を行う。
【０１８９】
コード名候補の抽出は、コードのタイプ（ｍ、Ｍ７等）とコード構成音のルート音からの音程を保存したコード名データベースを、コード名決定部７により検索することによって抽出する。つまり、検出した５つの音名の中からすべての２つ以上の組み合わせを抜き出し、これらの音名間の音程が、このコード名データベースのコード構成音の音程の関係にあるかどうかをしらみつぶしに調べ、同じ音程関係にあれば、コード構成音のいずれかの音名からルート音を算出し、そのルート音の音名にコードタイプを付けて、コード名を決定する。このとき、コードのルート音（根音）や５度の音は、コードを演奏する楽器では省略されることがあるので、これらを含まなくてもコード名候補として抽出するようにする。ベース音を検出した場合には、このコード名候補のコード名にベース音の音名を加える。すなわち、コードのルート音とベース音が同じ音名であればそのままでよいし、異なる音名の場合は分数コードとする。
【０１９０】
上記方法では、抽出されるコード名候補が多すぎるという場合には、ベース音による限定を行ってもよい。つまり、ベース音が検出された場合には、コード名候補の中でそのルート音がベース音と同じ音名でないものは削除する。
【０１９１】
コード名候補が複数抽出された場合には、これらの中でどれか１つを決定するために、コード名決定部７により、上記実施例１と同様、尤度の計算をする。
【０１９２】
最も尤度が大きいものをコード名として決定するが、コード名の候補を尤度とともに表示し、ユーザに選択させるようにしてもよい。
【０１９３】
いずれにしても、コード名決定部７により、コード名が決定したら、この結果（変更情報）をバッファ７０を介して、上記コード情報記憶部８ａに再記憶させると共に、上記実施例１の場合と同様に、図２９に示すように、表示部９ａにコード構成音を再表示させる。
【０１９４】
このような候補の決定が終了したら、最終的にコード名の決定を行う。本実施例では、コード名がＣＭ７となる。
【０１９５】
以上説明した本実施例構成によれば、簡単な構成のみで、特別な音楽的知識を有する専門家でなくても、音楽ＣＤ等の複数の楽器音の混ざった入力された音楽音響信号に対し、個々の音符情報を検出することなしに全体の響きから、コード名を検出でき、その際に構成音が同じ和音でも判別可能であるだけでなく、その検出結果を見たり聞いたユーザがコード進行上不自然なコード音であり、その検出結果に訂正を加えたい時は、上記閾値設定部１１ａやフラグ設定部１２ａを使用して、ユーザ側で、フラグ設定ありなしで２つの閾値設定を採用することの可否が決まり、且つ１つの閾値だけが採用される場合、表示されたコード構成音として採用可能な音階音強度の閾値設定がその１つで決定でき、また２つの閾値が採用される場合、両閾値間にある強度の音階音についてもコード構成音として採用されることになるので、その結果コード構成音の数を変更することができ、適切なコード名に変更が可能になり、或いはコード進行を聞いた時に自然と感じるように、ユーザによる訂正ができるようになる。
【０１９６】
尚、本発明のコード名検出装置及びプログラムは、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【産業上の利用可能性】
【０１９７】
本発明のコード名検出装置及びコード名検出用プログラムは、ミュージックプロモーションビデオの作成の際などに音楽トラック中のビートの時刻に対して映像トラック中のイベントを同期させるビデオ編集処理や、ビートトラッキングによりビートの位置を見つけ音楽の音響信号の波形を切り貼りするオーディオ編集処理、人間の演奏に同期して照明の色・明るさ・方向・特殊効果などといった要素を制御したり、観客の手拍子や歓声などを自動制御するライブステージのイベント制御、音楽に同期したコンピュータグラフィックスなど、種々の分野で利用可能である。
【図面の簡単な説明】
【０１９８】
【図１】本発明の前提となるテンポ検出装置の全体ブロック図である。
【図２】音階音レベル検出部２の構成のブロック図である。
【図３】音階音レベル検出部２の構成のブロック図である。
【図４】ある曲の一部分の波形と各音階音のレベル、各音階音のレベル増分値の合計の図を示すグラフである。
【図５】自己相関計算の概念を示す説明図である。
【図６】先頭のビート位置の決定方法を説明する説明図である。
【図７】最初のビート位置決定後のそれ以降のビートの位置を決定していく方法を示す説明図である。
【図８】ｓの値に応じて変えられる係数ｋの分布状態を示すグラフである。
【図９】２番目以降のビート位置の決定方法を示す説明図である。
【図１０】ビート検出結果の確認画面の例を示す画面表示図である。
【図１１】小節検出結果の確認画面の例を示す画面表示図である。
【図１２】実施例１に係る本発明のコード名検出装置の全体ブロック図である。
【図１３】曲の同じ部分のコード検出用音階音レベル検出部５が出力した各フレームの音階音のレベルを示すグラフである。
【図１４】ベース音検出部６によるベース検出結果の表示例を示すグラフである。
【図１５】実施例１におけるコード情報記憶部８の情報記憶状態の模式図である。
【図１６】ベース及びコード構成音の表示例を示す表示部９の画面構成図である。
【図１７】表示エリアの矩形を鍵盤のような形で表示することで音階音名が分かるように表示する表示例を説明する説明図である。
【図１８】ベース及びコード構成音の表示例を示す表示部９の画面構成で、コード構成音として採用される強度の閾値を変更するメニュー画面構成例を示す画面表示図である。
【図１９】閾値を入力するダイアログボックスを示す画面表示図である。
【図２０】閾値設定部１１によって閾値の値を変更することで、下げられた閾値より強度の大きいＢを４番目のコード構成音として採用した場合のコード情報記憶部８のコード１のコード構成音に１１が追加された状態を示す説明図である。
【図２１】閾値変更によってコード構成音数を増やし、最終的にコード名決定部７により、コード名の決定がなされた場合に、表示部９にコード構成音を再表示させた状態を示す画面構成例を示す画面表示図である。
【図２２】コード名検出結果の確認画面の例を示す画面表示図である。
【図２３】本発明の実施例２に係るコード名検出装置の全体ブロック図である。
【図２４】実施例２の検出処理構成において検出され、コード情報記憶部８ａに記憶されたベース及びコード構成音格納状態を説明する説明図である。
【図２５】コード情報記憶部８ａに記憶されたベース及びコード構成音の表示部９ａにおける表示例を説明する説明図である。
【図２６】閾値設定部１１ａ及びフラグ設定部１２ａの入力ダイアログボックスを示す画面表示図である。
【図２７】実施例２において、ベース及びコード構成音の表示例を示す表示部９ａの画面構成で、コード構成音として採用される強度の閾値を変更するメニュー画面構成例を示す画面表示図である。
【図２８】閾値設定部１１ａによって閾値の値を変更し、さらにフラグ設定ありなしで２つの閾値設定を採用することの可否を決めるフラグ設定部１２ａによってフラグ設定がなされ、２つの閾値が採用された場合に、両閾値間にある強度の音階音についてもコード構成音として採用され、新たに設定された閾値より強度の大きいＢ及びＤを４番目及び５番目のコード構成音として採用した場合のコード情報記憶部８ａのコード１のコード構成音に１１及び２が追加された状態を示す説明図である。
【図２９】上記の設定変更によりコード構成音の変更があった場合に、最終的にコード情報記憶部８ａに記憶されたベース及びコード構成音の表示部９ａにおける表示例を説明する説明図である。
【図３０】検出された和音中に、７ｔｈ、９ｔｈなどの音程がある状態を示す説明図である。
【符号の説明】
【０１９９】
１                                入力部
２                                ビート検出用音階音レベル検出部
３                                ビート検出部
４                                小節検出部
５                                コード検出用音階音レベル検出部
６                                ベース音検出部
７                                コード名決定部
８、８ａ                          コード情報記憶部
９、９ａ                          表示部
１０、１０ａ                        コード構成音決定部
１１、１１ａ                        閾値設定部
１２ａ                              フラグ設定部
２０                                波形前処理部
２１                                ＦＦＴ演算部
２２                                レベル検出部
２３、３０、４０、５０、６０、７０  バッファ
【図１】
0005005445.tif 000017
【図２】
0005005445.tif 000018
【図３】
0005005445.tif 000019
【図４】
0005005445.tif 000020
【図５】
0005005445.tif 000021
【図６】
0005005445.tif 000022
【図７】
0005005445.tif 000023
【図８】
0005005445.tif 000024
【図９】
0005005445.tif 000025
【図１０】
0005005445.tif 000026
【図１１】
0005005445.tif 000027
【図１２】
0005005445.tif 000028
【図１３】
0005005445.tif 000029
【図１４】
0005005445.tif 000030
【図１５】
0005005445.tif 000031
【図１６】
0005005445.tif 000032
【図１７】
0005005445.tif 000033
【図１８】
0005005445.tif 000034
【図１９】
0005005445.tif 000035
【図２０】
0005005445.tif 000036
【図２１】
0005005445.tif 000037
【図２２】
0005005445.tif 000038
【図２３】
0005005445.tif 000039
【図２４】
0005005445.tif 000040
【図２５】
0005005445.tif 000041
【図２６】
0005005445.tif 000042
【図２７】
0005005445.tif 000043
【図２８】
0005005445.tif 000044
【図２９】
0005005445.tif 000045
【図３０】
0005005445.tif 000046