(57)【要約】【課題】両手弾きなどの自由なユーザ演奏に対して適切なコードを検出すること。【解決手段】このコード検出装置では、両手弾きなどに基づく演奏データが入力されると、所定小節毎或いは所定拍毎などのコード検出タイミングにて、その時の調に応じて候補コードを抽出する。次いで、抽出した各候補コードについて、入力された演奏データの各演奏音が、どのような音の役割をしているのかを識別する。さらに、識別した役割の音楽的重要度を示すポイントをノートポイントテーブルを備えるディグリーネーム別ポイントテーブルＰＴから取得し、候補コード毎に、全演奏音につき取得したポイントを合計し、合計ポイントに更に候補コード自体の優先ポイント (Prior)を加えて総計ポイントを得る。そして、総計ポイントが最高の候補コードを最適のコードとする。【選択図】図３
2015111286.tif 000002
【特許請求の範囲】
【請求項１】
演奏データを取得する演奏データ取得手段と、
調情報を取得する調情報取得手段と、
所定のコード検出タイミングにてコード検出を指示するコード検出指示手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記調情報取得手段により取得された調情報を元に候補コードを抽出する候補コード抽出手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記演奏データ取得手段により取得された演奏データから、前記コード検出タイミングに有効とみなされる音高情報を抽出する音高情報抽出手段と、
候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルと、
前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された各候補コードについて、前記音高情報抽出手段により抽出された各音高情報の当該各候補コードにおける役割を識別し、識別された役割に応じて音楽的な重要度を示すポイントを、前記ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出する役割識別及びポイント抽出手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された候補コード毎に、前記音高情報抽出手段により抽出された全音高情報につき、前記役割識別及びポイント抽出手段により抽出されたポイントを合計して当該各候補コードのポイント合計値を取得するポイント合計値取得手段と、
前記コード検出指示手段によりコード検出が指示されたときに、前記ポイント合計値取得手段により取得された各候補コードのポイント合計値を元に、前記候補コード抽出手段により抽出された候補コードから１つのコードを検出するコード検出手段と
を具備し、
前記ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされていることを特徴とするコード検出装置。
【請求項２】
さらに、
複数のコードの夫々について優先度をポイントで示す優先ポイントが、前記ディグリーネーム別ポイントテーブルに設定されており、
前記コード検出手段は、前記ポイント合計値取得手段により候補コード毎にポイント合計値を取得した際に、更に、前記ディグリーネーム別ポイントテーブルから、各候補コードに対応するコードの優先ポイントを取得し、取得された優先ポイントを各候補コードのポイント合計値に加算し、加算されたポイント合計値を元にコード検出を行う
ことを特徴とする請求項１に記載のコード検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ユーザによる両手弾きなどの自由な演奏に対してコード（ｃｈｏｒｄ：和音）検出を行うことができるコード検出装置に関する。
【背景技術】
【０００２】
従来より、演奏操作よりコードを検出する機能を持つ電子音楽装置が知られている。例えば、特許文献１に開示された自動伴奏装置では、コード検出タイミングでユーザ演奏音をサーチし、予め記憶しているコードパターンとのマッチングを行い、２音しか押鍵がない場合は分数コードが指定され２音のうちどちらかをルート（ｒｏｏｔ：根音）とみなし、所定のルールに基づき分数コードを決定し、決定したコードに基づいた自動伴奏を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２５２６４３０号公報
【０００４】
しかしながら、従来のコード検出技術では、ユーザの演奏でコードの構成音が揃ったときにコードが検出されるので、検出タイミングでユーザは正確に鍵盤でコード構成音を押鍵しなければならない。検出して欲しいコードになるように押鍵する必要があるので、両手弾きなどの自由な演奏には向いていない。また、決まった算出方法でコードのパターンマッチングやルートの決定を行うので、検出されるコードが単調になる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この発明は、このような事情に鑑み、両手弾きなどの自由なユーザ演奏に対して適切なコードを検出することができるコード検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明のコード検出装置は、演奏データを取得する演奏データ取得手段と、調情報を取得する調情報取得手段と、所定のコード検出タイミングにてコード検出を指示するコード検出指示手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記調情報取得手段により取得された調情報を元に候補コードを抽出する候補コード抽出手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記演奏データ取得手段により取得された演奏データから、前記コード検出タイミングに有効とみなされる音高情報を抽出する音高情報抽出手段と、候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルと、前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された各候補コードについて、前記音高情報抽出手段により抽出された各音高情報の当該各候補コードにおける役割を識別し、識別された役割に応じて音楽的な重要度を示すポイントを、前記ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出する役割識別及びポイント抽出手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記候補コード抽出手段により抽出された候補コード毎に、前記音高情報抽出手段により抽出された全音高情報につき、前記役割識別及びポイント抽出手段により抽出されたポイントを合計して当該各候補コードのポイント合計値を取得するポイント合計値取得手段と、前記コード検出指示手段によりコード検出が指示されたときに、前記ポイント合計値取得手段により取得された各候補コードのポイント合計値を元に、前記候補コード抽出手段により抽出された候補コードから１つのコードを検出するコード検出手段とを具備し、前記ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされていることを最も主要な特徴としている。
【０００７】
この発明によるコード検出装置は、さらに、複数のコードの夫々について優先度をポイントで示す優先ポイントが、前記ディグリーネーム別ポイントテーブルに設定されており、前記コード検出手段は、前記ポイント合計値取得手段により候補コード毎にポイント合計値を取得した際に、更に、前記ディグリーネーム別ポイントテーブルから、各候補コードに対応するコードの優先ポイントを取得し、取得された優先ポイントを各候補コードのポイント合計値に加算し、加算されたポイント合計値を元にコード検出を行うように構成することができる。
【発明の効果】
【０００８】
この発明のコード検出装置では、例えば、所定小節毎或いは所定拍毎というような所定の音楽タイミングを基準にして、コード検出を行うタイミング即ちコード検出タイミングを設定して、両手弾きなどの演奏操作に基づく演奏データを取得し、調情報を取得すると、設定したコード検出タイミングにてコード検出が指示されたときに、取得した調情報を元に候補コードを抽出し、取得した演奏データから、コード検出タイミングに有効とみなされる音高情報を抽出する。次いで、候補コードとなり得る全てのコードに関して、当該コードを構成するコード構成音の各役割に対する音楽的な重要度をポイント値で表わしたノートポイントテーブルを備えるディグリーネーム別ポイントテーブルを備え、抽出した各候補コードについて、各音高情報の役割を識別し、識別した役割に応じて音楽的な重要度を示すポイントを、ディグリーネーム別ポイントテーブルのノートポイントテーブルから抽出し、候補コード毎に、全音高情報について抽出したポイントを合計する。つまり、コード検出タイミングにおいて、各演奏音が、候補コードにおける、どの構成音、どのテンションノート、アヴォイドノートであるのかなど、各演奏音が演じている音楽的な役割を識別し、識別したこれらの役割毎の音楽的な重要度に基づくポイント値を取得する。さらに抽出した候補コード毎に全演奏音に対するポイント値を合計して、各候補コードの合計ポイントを求める。そして、このようにして求めた各候補コードのポイント合計値を元に、抽出した候補コードから最適なコードを検出する。さらに、ディグリーネーム別ポイントテーブルは、複数用意されたディグリーネーム別ポイントテーブルから選択できると共に、作成および編集が可能とされており、検出されたコードを元にして自動演奏データを生成させることができる。
【０００９】
このように、この発明では、小節或いは拍タイミング等に相当するコード検出タイミングで、両手弾き等の演奏データに基づくコード検出が指示されると、該コード検出タイミングで入力された各演奏音の候補コードにおける音楽的な役割を識別し、識別した役割毎の音楽的な重要度に基づくポイント値を取得して候補コード毎に全押鍵音に対するポイント値を合計して、各候補コードの合計ポイントを求め、合計ポイントの一番高い候補コードを最適な所望のコードとして選出するようにしている。
【００１０】
従って、この発明によれば、両手弾きなどの自由なユーザ演奏に対して適切なコードを検出し、ユーザは演奏に専念しながら適切なコードによる自動伴奏を得ることができる。また、使用可能なコードの中から、ユーザの演奏音を元に、コード構成音などの役割の音楽的意味をポイント値で考慮して適切なコードを検出するので、音楽的で演奏音に適合したコードを得ることができる。さらに、従来技術では、あるコードに対し特定のテンション音が演奏されているときには（例えば、ＣＭａｊに対してＤ♯など）そのコードは検出されないように制御することがあったが、この発明では、コード検出時の演奏音１つ１つの各候補コードにおけるハーモニー構成の役割の重要度を識別し、それを元にコードを決定するので、単純に演奏音の組み合わせだけでコードの検出を禁止することはなく、演奏音の音楽的な役割を識別することによって適切なコードを検出することができる。また、ユーザ演奏の態様に応じてディグリーネーム別ポイントテーブルを選択できると共に、作成および編集が可能とされているので、より適切なコード検出を行うことができる。
【００１１】
この発明によるコード検出装置においては、複数のコードの夫々について優先度をポイントで示す優先ポイントが、ディグリーネーム別ポイントテーブルに設定されており、コード検出の際は、各候補コードに対応する優先ポイントを取得し、各候補コードのポイント合計値に加算し、加算したポイント合計値を元にコード検出を行うように構成される。つまり、前述のように、各候補コードにおける全押鍵音の役割に対応して求めたポイント合計値に、更に、コードの優先度を示す優先ポイントを加えた結果について、ポイント値の一番高い候補コードを求め、最適コードとして選出する。従って、この発明によれば、ユーザ演奏に対して更に適切なコードを検出することができる。
【図面の簡単な説明】
【００１２】
【図１】この発明の一実施例によるコード検出装置のハードウエア構成例を示す。
【図２】この発明の一実施例によるコード検出タイミングのイメージを示す。
【図３】この発明の一実施例によるディグリーネーム別ポイントテーブル例を示す。
【図４】この発明の一実施例による自動伴奏併用演奏処理フローの第１部分を示す。
【図５】この発明の一実施例による自動伴奏併用演奏処理フローの第２部分を示す。
【図６】この発明の一実施例による自動伴奏併用演奏処理フローの第３部分を示す。
【図７】この発明の一実施例によるノートイベント処理フローを示す。
【図８】この発明の一実施例によるコード検出処理フローの一部を示す。
【図９】この発明の一実施例によるコード検出処理フローの他部を示す。
【図１０】この発明の一実施例による役割抽出処理フローの一部を示す。
【図１１】この発明の一実施例による役割抽出処理フローの他部を示す。
【図１２】この発明の一実施例によるディグリーネーム別ポイントテーブル別例の一    部を示す。
【図１３】この発明の一実施例によるディグリーネーム別ポイントテーブル別例の他    部を示す。
【発明を実施するための形態】
【００１３】
〔システム構成の概要〕
図１は、この発明の一実施例によるコード検出装置のハードウエア構成例を示す。この発明の一実施例によるコード検出装置は、電子的な音楽情報処理機能を有する一種のコンピュータであり、電子楽器の形で具現化することができる。このコード検出装置は、図１のように、中央処理装置（ＣＰＵ）１、ランダムアクセスメモリ（ＲＡＭ）２、読出専用メモリ（ＲＯＭ）３、外部記憶装置４、演奏情報取得部（演奏情報入力部ともいう）５、その他操作子部６、表示部７、音源８、自動伴奏装置９、通信インターフェース（Ｉ／Ｆ）１０などを備え、これらの要素１〜１０はバス１１を介して接続される。
【００１４】
ＣＰＵ１は、ＲＡＭ２及びＲＯＭ３と共にデータ処理部を構成しており、タイマ１２によるクロックを利用して、自動伴奏併用演奏処理プログラムを含む所定の制御プログラムに従い種々の音楽情報処理を実行し、ＲＡＭ２は、これらの処理に際して必要な各種データを一時記憶するためのワーク領域として用いられる。例えば、自動伴奏併用演奏処理を実行する自動伴奏併用演奏モード時には、タイマ１２は、ＣＰＵ１の制御の下、コードの検出や適用のために設定された種々の設定時間を計時し、ＲＡＭ２には、コードの検出や適用に必要な各種レジスタ（ NoteList,ChordList,Chord,sTime,eTime,Key,ResultListなど）が設けられる。また、ＲＯＭ３には、これらの処理を実行するために、各種制御プログラムや必要な各種制御データが予め記憶される。
【００１５】
外部記憶装置４は、ＨＤ（ハードディスク）、ＦＤ（フレキシブルディスク）、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多目的ディスク）、フラッシュメモリ等の半導体メモリなどの記憶媒体と、その駆動装置を含む。制御プログラムや、ディグリーネーム別ポイントテーブル（ＰＴ）、各種ルールなどの制御データ、種々の曲データ等、任意の情報を任意の記憶媒体に記憶することができる。また、記憶媒体は、着脱可能であってもよいし、このコード検出装置に内蔵されていてもよく、着脱可能な記録媒体にはＵＳＢメモリが含まれる。
【００１６】
演奏情報取得部５は、鍵盤などの演奏操作子と、演奏操作子の操作を検出し検出内容に対応する演奏操作情報をデータ処理部（１〜３）に導入する演奏操作検出回路とにより構成される。その他操作子部６は、キースイッチ等のその他の操作子（設定操作子）と、これら操作子の操作を検出して対応する操作情報をデータ処理部に導入する設定操作検出回路とにより構成される。データ処理部（１〜３）は、演奏情報取得部５及びその他操作子部６からの操作情報に基づきコード検出装置各部を制御し、例えば、演奏操作部５からの演奏操作入力に対応する演奏データを音源８に送ったり、その他操作子部６中のモード設定ボタンの操作により自動伴奏併用演奏モードで動作させたりすることができる。
【００１７】
表示部７は、演奏や設定に必要な各種情報を表示するＬＣＤ等のディスプレイや、操作部５〜６中のスイッチ類に併設した内蔵ランプ等を備え、これらの表示・点灯内容をデータ処理部からの指令で制御し、演奏操作や設定操作などに関する表示援助を行う。
【００１８】
音源８は、音源部やＤＳＰを有し、演奏情報取得部５の演奏操作情報から得られる演奏データに基づいて、或いは、記憶装置４から読み出される曲データに基づいて、楽音信号を生成すると共にこの楽音信号に所定の効果を付与する。音源８に接続されるサウンドシステム１３は、Ｄ／Ａ変換部やアンプ、スピーカ等を備え、音源８から出力される楽音信号に基づく楽音を発生する。自動伴奏装置９は、自動伴奏併用演奏モードにおいて、タイマ１２からのテンポクロックで自動伴奏のテンポが設定され、このテンポクロックに従って、データ処理部（１〜３）から提供されるコードに対応した伴奏スタイルデータに基づく自動伴奏音を生成する。
【００１９】
通信Ｉ／Ｆ１０は、ＭＩＤＩ等の音楽用有線Ｉ／Ｆ、ＵＳＢ等の汎用ネットワークＩ／Ｆ或いは無線Ｌａｎ等の汎用近距離無線Ｉ／Ｆ等を含み、外部電子音楽装置ＭＭと交信することができる。例えば、外部電子音楽装置ＭＭからＭＩＤＩ形式の曲データを取得し、記憶装置４に記憶しておくことができる。
【００２０】
〔コード検出タイミング〕
この発明の一実施例によるコード検出装置では、自動伴奏併用演奏処理により、所定の小節或いは拍タイミングで、演奏情報取得部５から入力される演奏データに基づいてコードが検出され、検出されたコードが自動的に自動伴奏に適用される。図２は、この発明の一実施例によるコード検出タイミングのイメージ例を示している。
【００２１】
図２（ａ）は、コード検出基準位置の例であり、横軸は、右方向に時間が進行する時間軸を示す。◎で示されるコード検出基準位置Ｔ２は、演奏データに対してユーザ操作により予め設定された所定の小節或いは拍タイミングなどの音楽的なタイミングであり、ユーザにとっては、コードの検出乃至適用を指示するタイミングの目安となる。この例では、１小節＝４拍の演奏データに対し、１拍目及び３拍目がコード検出基準位置Ｔ２に設定されている。これに対して、図２（ｂ）は、コード検出タイミングの例であり、右矢印の方向に時間が進行する時間軸（横軸）のスケールは、図２（ａ）よりも拡大されている。
【００２２】
コード検出タイミングは、コード検出基準位置Ｔ２より所定時間前のコード検出タイミング開始位置（時間）Ｔ１で開始し、同位置Ｔ２より所定時間後のコード検出タイミング終了位置（時間）Ｔ３で終了する。このように、コード検出を行うタイミングＴ１〜Ｔ３は、所定の拍位置Ｔ２を基準に前後にそれぞれ時間幅Ｔ１〜Ｔ２，Ｔ２〜Ｔ３を設定したものであり、各時間幅の値は、この例では、Ｔ１〜Ｔ２＝２５０ｍｓ、Ｔ２〜Ｔ３＝５０ｍｓである。ここで、コード検出タイミング（時間幅）Ｔ１〜Ｔ３の間に両手弾きなどの演奏操作（押鍵）に応じて演奏データ（ノートイベント）を入力すると、コード検出タイミング終了時間Ｔ３でコード検出が指示され、入力された演奏データ（ノートイベント）及びその時点の調を元にしてコード検出が行われる。
【００２３】
このコード検出装置では、時間幅Ｔ１〜Ｔ３内に発音している演奏データがコード検出の対象となり、時間Ｔ３で、対象の演奏データを構成する各演奏音（ノートイベント、音符データ）の音高を調べ、ディグリーネーム別ポイントテーブル（ＰＴ）を参照することにより、そのときに設定されている調においてコードになり得る候補コードを抽出し、抽出した候補コード毎に識別した各演奏音の役割に応じた音楽的なポイント（重要度）を求める。そして、候補コード各音ポイントを合計し、合計ポイントが一番高い候補コードを最適なコードとして検出する。また、このようにして時間Ｔ３でコードを検出すると同時に、検出したコードは、自動伴奏に適用されると共に、コード検出結果リストに順次追記されていく。
【００２４】
この場合、対象時間幅Ｔ１〜Ｔ３内の演奏データからは、装飾音やミスタッチと推測される音符データを取り除いてからコード検出を行うようにすると、更に精度が上がる。また、コード検出時に利用される調情報については、演奏前にユーザにより指定されたものであってもよいし、演奏に沿って随時検出されたものを活用するようにしてもよい。後者の場合、調の検出は従来技術で行われればよい。
【００２５】
また、自動伴奏併用演奏処理中、コード検出タイミング開始位置Ｔ１、コード検出タイミング終了位置Ｔ３、演奏データ（ノートイベント）、調情報、候補コード、検出されたコード、コード検出結果リストは、それぞれ、ＲＡＭ２内のレジスタ:sTime,eTime,NoteList,Key,ChordList,Chord,ResultListに格納され、各レジスタ名は、格納されている情報の内容を示すのにも用いられる。なお、コードが検出される毎に、そのときの調情報 (Key)を、検出されたコード (Chord)に対応付けてコード検出結果リスト(ResultList)に記憶しておくことが好ましい。
【００２６】
なお、コード検出基準位置は、この例のような拍位置だけでなく、テンポや拍子によっては、小節位置（例えば、２小節毎など）とすることができる。また、基準位置前後の時間幅Ｔ１〜Ｔ２，Ｔ２〜Ｔ３については、この例ではｍｓ単位で設定しているが、音符長や拍数、クロック数などで設定してもよい。
【００２７】
〔ディグリーネーム別ポイントテーブル〕
このコード検出装置では、コード検出時に各候補コードに対応したポイントを求めるのにディグリーネーム別ポイントテーブル（コード別ポイントテーブルともいう）が用いられる。図３は、この発明の一実施例によるディグリーネーム別ポイントテーブルの一例を示す。このディグリーネーム別ポイントテーブルＰＴは、候補コードとなり得る全てのコードに関して、各ノート（r,3,5,…）のポイントを得るためのノートポイントテーブル（第５〜１１列）と、コード自体の優先ポイント (Prior)を得るための優先ポイントテーブル（第４列）とが、Ｍａｊｏｒ調とｍｉｎｏｒ調別に１つのテーブルに纏められ、さらに、コードの機能とダイアトニック・スケール・コードかどうかの情報（第２，３列）が付加されている点に特徴がある。図３のディグリーネーム別ポイントテーブル（Ｍａｊｏｒ調）ＰＴは、Ｍａｊｏｒ調（長調）で候補コードとなり得る全てのコードに関するテーブルであり、ｍｉｎｏｒ調（短調）についても同様のテーブルが用意される（図示せず）。
【００２８】
図３において、第１列（第１欄）は、ディグリーネーム別ポイントテーブルＰＴに用意されたディグリーネーム情報(DegreeName)〔コード情報ともいい、以下の説明では、単にディグリーネームと呼ぶ〕を示し、図示以外にも多数のディグリーネームがある。各ディグリーネーム(DegreeName)は、調の主音（トニック）を基準とした度数〔根音（ルート）の音階度数。例：Ｉ，II， III，IV，Ｖ，…〕とコードタイプ〔例：記号無し（メジャー），ｍ（マイナー），７，６，Ｍａｊ７（メジャー７），ｍ６（マイナー６），ｍ７（マイナー７），ａｄｄ９（９th付加メジャー），…〕との組み合わせでコードを表わしている。なお、図中の「ｂ」は、「♭」（フラット）を表わし、後述する図１０、図１２及び図１３についても同様である。
【００２９】
ディグリーネーム別ポイントテーブルＰＴには、第１列（第１欄）の各ディグリーネーム(DegreeName)に対応して第２列（第２欄）以下の諸情報が記録されている。第２列のダイアトニック情報は、各ディグリーネーム(DegreeName)で表わされるコードがダイアトニック・スケール・コードである（○）か否（×）かを表わし、第３列の機能情報は、当該ディグリーネーム(DegreeName)の機能が、トニック（Ｔ）、サブドミナント（Ｓ）、ドミナント（Ｄ）、サブドミナント・マイナー（ＳＭ）の何れであるかを表わす。また、第４列の優先ポイント情報 (Prior)は、当該ディグリーネーム(DegreeName)自体の優先度をポイント値で表わし、コード優先ポイント或いはディグリーネーム優先ポイントとも呼ばれる。これに対して、第５〜１１列は、コードを特徴付けるノート（役割：r,3,5,…）毎に音楽的な重要度を表わすノートポイント情報が設定されたノートポイントテーブル部を構成している。
【００３０】
まず、第５〜９列各欄のポイント情報は、当該コードを構成するコード構成音の各ノート（役割）に対する音楽的な重要度をポイント値で表わしている。具体的には、第５列のルートポイント情報は、当該コード構成音のルート（根音）＜略号“ｒ”＞に対応するポイントを示し、第６列の３度ポイント情報は、当該コード構成音の３度音＜略号“３”＞に対応するポイントを示し、第７列の５度ポイント情報は、当該コード構成音の５度音＜略号“５”＞に対応するポイントを示し、第８列の４声目ポイント情報は、当該コード構成音中でルート（根音）に対し長６度 (6th)、短７度 (7th)又は長７度(Maj7th)の４声目音＜略号“４”＞に対応するポイントを示し、第９列のオルタード系ポイント情報は、当該コード構成音中でルート（根音）に対し減５度（♭５th）又は増５度（♯５th）の５度変化音（オルタード系コードトーン）＜略号“ａ”＞に対応するポイントを示す。
【００３１】
そして、第１０列のテンションノートポイント情報は、当該コードの基本的な和音構成の上部に置かれた非和声音で緊張感を与えるテンションノート＜略号“ｔ”＞に対する音楽的な重要度をポイント値で表わし、第１１列（最右欄）のその他ポイント情報は、当該コード・サウンドの構成上除外されるべきアヴォイドノートなどコード構成音にもテンションノートにも相当しないその他ノートに対する音楽的な重要度をポイント値で表わす。
【００３２】
このノートポイントテーブル部（第５〜１１列）では、コード構成音の中でも特にルートの役割を持つ演奏音（押鍵音、音高情報）は、重要度が高いと評価され高めのポイントが設定される。また、構成音の中でもコードタイプ決定に大きく関わる３度や７度（４声目）の役割を持つ演奏音も重要とみなされる。一方、コードの中で不協和を生じるような役割（その他）の演奏音に対しては、重要度が低くなり、ポイントも低めに設定される。
【００３３】
このコード検出装置では、コード検出の際は、検出対象となる演奏データが入力された時の調 (Key)に応じて、候補とすべきコード (ChordList)が抽出される。例えば、予め所定の調で使用可能なコードの種類の組み合わせをいくつか記憶しておき、コード検出時に所望の組み合わせを選び、選ばれた組み合わせに該当するコードを候補コード (ChordList)として抽出する。また、図３に示されるタイプのディグリーネーム別ポイントテーブルＰＴでは、ポイント情報（第４〜１１列）だけでなく、第２、３列に示すように、各コードのディグリーネーム（DegreeName：第１列）についてダイアトニック・スケール・コードかどうかを表わすダイアトニック情報や機能は何であるかを表わす機能情報が追加されているので、ディグリーネーム別ポイントテーブルＰＴを利用してその追加情報を参照することにより、候補となるコード (ChordList)を抽出することができる。
【００３４】
例えば、その時の調のダイアトニック・スケール・コード（第２列情報＝「○」）に該当するコード(DegreeName)を全て候補コード (ChordList)として抽出するようにしてもよい。或いは、２回目以降のコード検出の場合には、前回検出されたコード (Chord)の機能（第３列情報）を調べ、例えば、ドミナント（Ｄ）であれば次はトニック（Ｔ）に進む、というように、前回検出されたコード (Chord)から音楽的に次に進むことが可能なコード(DegreeName)を候補コード (ChordList)として抽出するようにしてもよい。なお、このような追加情報については、ディグリーネーム別ポイントテーブルＰＴに含ませず、テーブルＰＴとは別の参照テーブルを用意しておくようにしてもよい。
【００３５】
候補コード (ChordList)が抽出されると、対象の演奏データ(NoteList)に含まれる各演奏音（押鍵音、Note）が、抽出された候補コード (ChordList)において、どのような役割を演じているのか（どの構成音か、テンションノートか、或いは、アヴォイドノートか）を識別し、ディグリーネーム別ポイントテーブルＰＴから、識別した役割（各構成音、テンションノート、アヴォイドノート）に対応するポイントを取得する。そして、候補コード毎に全演奏音(NoteList)に対するポイント（重要度）を合計し、更に、候補コード自体の優先ポイント (Prior)を加えて総計ポイントを求めた結果、総計ポイントの一番高い候補コードを選出し、これが対象の演奏データに最適なコード (Chord)であると決定する。
【００３６】
以上のように、この発明の一実施例によるコード検出システムでは、ユーザによる両手弾きなどの演奏操作に基づく演奏データ(NoteList)が入力されると、所定小節毎或いは所定拍毎などのコード検出タイミングＴ１〜Ｔ３にて、その時の調 (Key)に応じて候補コード (ChordList)を抽出する。次いで、各候補コード (ChordList)について、入力された演奏データ(NoteList)の各演奏音(Note)が、どのような音〔ルート (r)、３度 (3)、５度 (5)、４声目 (4)、オルタード系 (a)などのコード構成音、テンションノート (t)、アヴォイドノート等〕の役割をしているのかを識別する。さらに、識別した役割の音楽的重要度を示すポイントをディグリーネーム別ポイントテーブルＰＴから取得し、候補コード毎に、全演奏音(NoteList)につき取得したポイントを合計して合計ポイントを求め、求められた合計ポイントに更に候補コード自体の優先ポイント (Prior)を加えて総計ポイントを得る。そして、得られた総計ポイントが最高の候補コードを最適のコード (Chord)とする。
【００３７】
〔自動伴奏併用演奏処理フロー例〕
図４〜図６は、この発明の一実施例による自動伴奏併用演奏処理の動作例を表わすフローチャートである。このコード検出装置では、電子楽器として通常の演奏モードで動作しているときに操作子６中の自動伴奏併用演奏モード設定ボタンを操作することにより、自動伴奏併用演奏モードに入って自動伴奏併用演奏処理が実行され、自動伴奏を使った演奏を行うことができる。自動伴奏併用演奏処理がスタートすると、ＣＰＵ１は、最初のステップＰ１で、表示部７のディスプレイに演奏条件設定画面を表示し、ユーザ操作に応じて、演奏テンポ、拍子、伴奏スタイルの選択、ボリューム、演奏音色など、演奏開始前の演奏条件を設定する。
【００３８】
次のステップＰ２では、コード検出条件設定画面をディスプレイに表示し、ユーザ操作に応じて、コード検出タイミングＴ１〜Ｔ３や、コード検出に関係する各種ルール、例えば、調の取得方法、コード候補の抽出方法、ディグリーネーム別ポイントテーブルＰＴ、コード優先ポイント (Prior)、ボトムノートポイントなどを設定する。ここで、ルール中のボトムノートポイントは、コード検出対象の演奏データ(NoteList)の中で最低音高の演奏音が候補コードのルート（根音）の場合に加算されるポイントである。つまり、コード検出時の演奏音の最低音が候補コードのルートに当たるときに更にボトムノートポイントを加えるようにすると、例えば、Ｃ６とＡｍ７のような同じ構成音のコードを区別することができる。このボトムノートポイントは、例えば、２０ポイントなどの固定値であってもよいし、コードタイプ別に設定されていてもよい。ユーザにより編集設定が可能であってもよい。
【００３９】
各種ルールの設定例を説明すると、調の取得については、予めユーザが指定しておく方法、演奏時に操作子６中の調指定操作子を操作して指定する方法、ユーザの演奏に沿って随時検出された調を利用する方法（具体的な調検出方法の指定を含む）などがある。コード候補については、調のダイアトニック・スケール・コードのみを抽出する方法、調で使用可能なコードを全て抽出する方法、調で使用可能なコードのうち構成音が対象演奏データ(NoteList)中の１音以上あるコードを抽出する方法などがある。ディグリーネーム別ポイントテーブルについては、複数種類のテーブルから所望の種類を選択したり、テーブル中のポイント値を編集するなどの設定動作がある。コード優先ポイント (Prior)やボトムノートポイントについては、ディグリーネーム別ポイントテーブルに設定されていない場合、これらのポイントが設定されたコード優先ポイントテーブル（ディグリーネーム優先ポイントテーブルともいう）等の制御データに従って設定する。
【００４０】
続くステップＰ３では、ディグリーネーム別ポイントテーブルＰＴを読み込む。ここで、ディグリーネーム別ポイントテーブルＰＴが、図３のように、コード優先ポイントテーブルと一体化されたテーブルではない場合、別設されたコード優先ポイントテーブルも読み込む。次のステップＰ４（図５）では、コードの検出や適用に用いられるＲＡＭ２内の各種レジスタを初期化する。これらのレジスタには、NoteList,ChordList,Chord,sTime（コード検出タイミング開始位置）,eTime（コード検出タイミング終了位置）, Key,ResultListなどがある。
【００４１】
ステップＰ１〜Ｐ４の処理により演奏前の準備が整うと、ステップＰ５で、ステップＰ２で設定されたコード検出タイミングＴ１〜Ｔ３の内容から、最初のコード検出タイミング開始位置 (sTime)及びコード検出タイミング終了位置 (eTime)を算出し、それぞれ、対応する開始及び終了位置レジスタ:sTime,eTimeに格納し、ステップＰ６に進む。図２の例では、 sTime＝基準位置となる拍の２５０ｍｓ前、 eTime＝基準位置となる拍の５０ｍｓ後に定められる。但し、開始位置レジスタ:sTimeに格納されるコード検出タイミング開始位置 (sTime)は、最初に限り、最初のコード検出基準位置Ｔ２が設定される。
【００４２】
ステップＰ６では、自動伴奏を使わない通常の演奏モードに戻るか否かをユーザに打診し、通常演奏モード復帰ボタンが操作され通常演奏モードに戻ると判定したときは（Ｐ６＝ＹＥＳ）、この自動伴奏併用演奏モードを終了し、元の通常演奏モードに戻る。一方、続行ボタンが操作されてこの自動伴奏併用演奏モードを続行すると判定したときは（Ｐ６＝ＮＯ）、ステップＰ７に進んで、自動伴奏開始ボタンの操作による自動伴奏のスタートの指示が受け付けられたか否かを判定し、自動伴奏スタートの指示がないときは（Ｐ７＝ＮＯ）、ステップＰ６に戻る。また、ステップＰ６で自動伴奏スタートの指示を受け付けると（Ｐ７＝ＹＥＳ）、ステップＰ８でタイマ１２を起動し、ステップＰ８に進む。
【００４３】
ステップＰ９では、自動伴奏停止ボタンの操作による自動伴奏ストップの指示を受け付けたか否かを判定し、自動伴奏ストップの指示があったときは（Ｐ９＝ＹＥＳ）、ステップＰ１０でタイマ１２を停止し、さらに、ステップＰ１１に進んで、伴奏スタイルなどの演奏条件やコード検出タイミングなどのコード検出条件について設定変更を行うか否かをユーザに打診する。そして、設定変更ボタンが操作され設定変更を行うと判定したときは（Ｐ１１＝ＹＥＳ）、ステップＰ１（図４）に戻り、ステップＰ１〜Ｐ５で必要な設定や算出を行った後、ステップＰ６に戻る。一方、設定変更を行わない場合には（Ｐ１１＝ＮＯ）、直ちに、ステップＰ６に戻る。
【００４４】
ステップＰ９で自動伴奏ストップ指示の受付けがないときには（Ｐ９＝ＮＯ）、ステップＰ１２に進んで、演奏操作に基づくノートイベントを受け付けた否かを判定する。ここで、ノートイベントを受け付けたときは（Ｐ１２＝ＹＥＳ）、ステップＰ１３でノートイベント処理（図７参照）を行った後ステップＰ１４（図６）に進む。ノートイベント処理では、コード検出タイミングＴ１〜Ｔ３の間に発生したノートイベントをコード検出対象の演奏データとして演奏データレジスタ：NoteListに記録する。また、ノートイベントを受け付けなかったときは（Ｐ１２＝ＮＯ）、直ちにステップＰ１４に進む。
【００４５】
ステップＰ１４では、コード検出タイミングか否か即ち終了時点 eTimeに到達したか否かを判定し、時点 eTimeに到達したときは（Ｐ１４＝ＹＥＳ）、先ず、ステップＰ１５で、調情報を取得して調レジスタ:Keyに格納する。次のステップＰ１６では、ステップＰ２で設定された抽出方法に従って調情報 Keyに対応するコード候補を抽出し、候補コードレジスタ:ChordListに格納して、ステップＰ１７に進み、コード検出処理（図８〜図９参照）を実行する。コード検出処理では、対象の演奏データ(NoteList)及び抽出したコード候補 (ChordList)から所望のコード Chordを検出し、次のステップＰ１８で、検出したコード Chordを自動伴奏装置９に出力する。そして、ステップＰ１９にて、このコード Chordをコード検出結果レジスタ：ResultListの末尾に追加し、ステップＰ２０に進む。つまり、コードが検出される毎に、そのときの調情報を、検出されたコードに対応付けて記憶しておく。なお、コード Chordがない場合即ちコード検出処理で所望コード Chordを検出することができなかった場合は、ステップＰ１７からステップＰ２０に進む。
【００４６】
ステップＰ２０では、コード検出タイミングの設定内容より、次のコード検出タイミング開始及び終了位置 (sTime,eTime)を算出して夫々のレジスタ:sTime,eTimeを更新し、続くステップＰ２１で、演奏データ及びコード候補レジスタ：NoteList,ChordListを初期化する。そして、ステップＰ１４で終了時点 eTimeに到達していないと判定したとき（Ｐ１４＝ＮＯ）或いはステップＰ２１の処理の後は、ステップＰ９（図５）に戻る。
【００４７】
＜ノートイベント処理フロー例＞
図７は、自動伴奏併用演奏処理のステップＰ１３（図５）で行われるノートイベント処理の動作例を表わすフローチャートである。ＣＰＵ１は、まず、ステップＮ１で、現在、タイマ１２はコード検出タイミング（ sTime〜 eTimeの間）を示しているか否かを判定し、コード検出タイミングの範囲にあれば（Ｎ１＝ＹＥＳ）、ステップＮ２で、ステップＰ１２（図５）で受け付けたノートイベントがノートオンであるか否かを判定する。ここで、ノートオンであれば（Ｎ２＝ＹＥＳ）、ステップＮ３で、当該ノートイベントに従った発音処理を音源８に行わせ、次のステップＮ４で、ノートオンされたノートイベント情報を演奏データレジスタ：NoteListに追加する。一方、ノートオフであれば（Ｎ２＝ＮＯ）、ステップＮ５で当該ノートイベントによる楽音の消音処理を行わせ、ステップＮ６で、ノートオフされたノートイベント情報を同レジスタ：NoteListから削除する。
【００４８】
また、コード検出タイミング（ sTime〜 eTime）でないときは（Ｎ１＝ＮＯ）、ステップＮ７に進み、ステップＰ１１（図４）で受け付けたノートイベントがノートオンであるか否かを判定し、ノートオンであれば（Ｎ７＝ＹＥＳ）、ステップＮ８で、音源８に発音処理を行わせ、ノートオフであれば（Ｎ７＝ＮＯ）、消音処理を行わせる。そして、ステップＮ４，Ｎ６，Ｎ８，Ｎ９の処理の後は、このノートイベント処理を終了し、自動伴奏併用演奏処理のステップＰ１４（図６）にリターンする。
【００４９】
＜コード検出処理フロー例＞
図８〜図９は、自動伴奏併用演奏処理のステップＰ１７（図６）で行われるコード検出処理の動作例を表わすフローチャートである。ＣＰＵ１は、最初のステップＣ１で、演奏データレジスタ：NoteListが空（データ無し）の状態であるか否かを判定し、空でなければ（Ｃ１＝ＮＯ）ステップＣ２で、コード候補レジスタ:ChordListが空状態であるか否かを判定し、空でなければ（Ｃ２＝ＮＯ）ステップＣ３に進む。また、演奏データレジスタ：NoteListが空のとき（Ｃ２＝ＹＥＳ）或いはコード候補レジスタ:ChordListが空のときは（Ｃ２＝ＹＥＳ）、自動伴奏併用演奏処理のステップＰ１８（図６）にリターンする。
【００５０】
ステップＣ３では、コード候補レジスタ:ChordListの先頭から順に（２個目以降は次の）候補コードを１つ対象にしてディグリーネームに変換し、これをディグリーネームレジスタ（コード情報レジスタともいう）：DegreeNameに格納し、次のステップＣ４で、ポイント値レジスタ:pointに値「０」を置数する。続くステップＣ５（図９）では、演奏データレジスタ：NoteListの先頭から順に（２個目以降は次の）ノートイベント情報を１つ対象にしてその音高情報を抽出し、これを演奏音レジスタ：Noteに格納し、ステップＣ６に進む。
【００５１】
ステップＣ６では、ディグリーネームDegreeNameが示すコードにおける演奏音Noteの役割を抽出する役割抽出処理（図１０〜図１１参照）を実行する。次のステップＣ７では、ディグリーネーム別ポイントテーブルＰＴを参照して、ステップＣ６で抽出した「DegreeNameのコードにおける役割」に対応したポイントを取得し、ポイント値 pointに加算し、ステップＣ８に進む。なお、この役割は、ディグリーネーム別ポイントテーブルＰＴの仕様次第では、テンションノートの種類で更に細かく分けることもできる（図１２〜図１３参照）。
【００５２】
ステップＣ８では、演奏音レジスタ：Noteは、演奏データレジスタ：NoteList中の最後のノートイベント情報の音高情報を示しているか否かを判定し、最後のノートイベント音高情報でないときは（Ｃ８＝ＮＯ）、ステップＣ５に戻り、演奏データNoteList中の次のノートイベント情報を対象にしてステップＣ５〜Ｃ７の処理を繰り返す。そして、演奏データNoteList中の最後のノートイベント音高情報についてステップＣ５〜Ｃ７の処理を行うと（Ｃ８＝ＹＥＳ）、ステップＣ９に進む。
【００５３】
ステップＣ９では、ディグリーネーム別ポイントテーブルＰＴを参照して、ディグリーネームDegreeNameが示すコードに対応した優先ポイント (Prior)を取得しポイント値 pointに加算する。次のステップＣ１０では、演奏データNoteList中で最低音となるノートイベント情報の音高情報（最低音高の演奏音）が、ディグリーネームDegreeNameが示すコードのルートに相当しているか否かを判定し、ルートに相当しているときは（Ｃ１０＝ＹＥＳ）、ステップＣ１１で、ボトムノートポイント（例えば、２０ポイント）を取得し、ポイント値 pointに加算する。ステップＣ１０でルートに相当していないと判定したとき（Ｃ１０＝ＮＯ）或いはステップＣ１１の処理の後は、ステップＣ１２に進み、ポイント値 pointを、ディグリーネームDegreeNameが示す全候補コード ChordList中の候補コードに対応付けて記憶する。
【００５４】
次のステップＣ１３では、ディグリーネームDegreeNameが示すコードが全候補コード ChordList中の最後のコードであるか否かを判定し、最後のコードでないときは（Ｃ１３＝ＮＯ）ステップＣ３に戻り、全候補コード ChordList中の次の候補コードを対象にしてステップＣ３〜Ｃ１２の処理を繰り返す。そして、最後の候補コードについてステップＣ５〜Ｃ７の処理を行うと（Ｃ１３＝ＹＥＳ）、ステップＣ１４に進み、全候補コード ChordList中の各候補コードに対応付けて記憶したポイント値 pointが最高の候補コードを１つ検出し、コードレジスタ:Chordに格納し、ステップＣ１４の処理を終えると、このコード検出処理を終了し、自動伴奏併用演奏処理のステップＰ１８（図６）にリターンする。
【００５５】
なお、ステップＣ１４で候補コードの中から１つのコードを決定する際、ポイント値 pointが最高の候補コードが複数ある場合（ポイントが同点で並んだ場合）、適宜の方法でどれか１つに決定する。例えば、最低音とルートが一致するコード、検出回数の少ないコード、或いは、検出回数の多いコード等、優先して選択すべきコードの特徴を定めた優先ルールを用意し、ステップＰ２で設定するように設計しておくことが好ましい。
【００５６】
＜役割抽出処理フロー＞
図１０〜図１１は、コード検出処理のステップＣ６（図９）で行われるコード検出処理の動作例を表わすフローチャートである。ＣＰＵ１は、最初のステップＦ１で、調情報 Keyの主音（トニック）及びディグリーネームDegreeNameから、コードのルート、３度及び５度〔マイナー７thフラット５th［ｍ７（♭５）］及びオーギュメント［ａｕｇ］以外〕にあたる音名を取得し、ＲＡＭ２内の“ルート”レジスタ、“３度”レジスタ及び“５度”レジスタに格納する。ここで、ルート、３度及び５度の音は、コードタイプに応じて主音からの半音距離数が決まっており、例えば、 Key＝ＣＭａｊｏｒ調、DegreeName＝IVＭａｊ７の場合、“ルート”＝Ｆ（ファ）、“３度”＝Ａ（ラ）、“５度”＝Ｃ（ド）となる。
【００５７】
次のステップＦ２では、演奏音情報Noteの音名が“ルート”レジスタの値に等しいか否かを判定し、“ルート”レジスタの値であれば（Ｆ２＝ＹＥＳ）、ステップＦ３で、演奏音情報Noteの役割を「ルート」に決定し、そうでなければ（Ｆ２＝ＮＯ）ステップＦ４に進む。ステップＦ４では、演奏音情報Noteの音名は“３度”レジスタの値に等しいか否かを判定し、“３度”レジスタの値であれば（Ｆ４＝ＹＥＳ）、ステップＦ５で、演奏音情報Noteの役割を「３度」に決定し、そうでなければ（Ｆ４＝ＮＯ）ステップＦ６に進む。ステップＦ６では、演奏音情報Noteの音名が“５度”レジスタの値に等しいか否かを判定し、“５度”レジスタの値であれば（Ｆ６＝ＹＥＳ）、ステップＦ７で、演奏音情報Noteの役割を「５度」に決定し、そうでなければ（Ｆ６＝ＮＯ）ステップＦ８に進む。また、ステップＦ３，Ｆ５，Ｆ７の処理を終えると、この役割抽出処理を終了してコード検出処理のステップＣ７（図９）にリターンする。
【００５８】
ステップＦ８では、ディグリーネームDegreeNameのコードタイプが「ｍ７（♭５）」（マイナー７フラット５）であるか否かを判定する。ここで、コードタイプが「ｍ７（♭５）」であれば（Ｆ８＝ＹＥＳ）、ステップＦ９に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し減５度（♭５th）であるか否かを判定し、減５度であれば（Ｆ９＝ＹＥＳ）、ステップＦ１０で演奏音情報Noteの役割を「オルタード系」に決定する。一方、コードタイプが「ｍ７（♭５）」でなければ（Ｆ８＝ＮＯ）、ステップＦ１１に進んで、ディグリーネームDegreeNameのコードタイプが「ａｕｇ」（オーギュメント）であるか否かを判定する。ここで、コードタイプが「ａｕｇ」であれば（Ｆ１１＝ＹＥＳ）、ステップＦ１２に進み、演奏音情報Noteの音名が“ルート”レジスタの音名に対し増５度（♯５th）であるか否かを判定し、増５度であれば（Ｆ１２＝ＹＥＳ）、ステップＦ１０で演奏音情報Noteの役割を「オルタード系」に決定する。そして、ステップＦ１０の処理を終えると、この役割抽出処理を終了してコード検出処理のステップＣ７（図９）にリターンする。
【００５９】
ステップＦ１１で、コードタイプが「ａｕｇ」ではないと判定したときは（Ｆ１１＝ＮＯ）、ステップＦ１３（図１３）に進み、ディグリーネームDegreeNameのコードタイプが、「６」、「６ｓｕｓ４」（６サスペンデッド４）又は「ｍ６」（マイナー６）であるか否かを判定する。ここで、コードタイプが、「６」、「６ｓｕｓ４」及び「ｍ６」の何れかであれば（Ｆ１３＝ＹＥＳ）、ステップＦ１４に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し長６度（６th）であるか否かを判定し、長６度であれば（Ｆ１４＝ＹＥＳ）、ステップＦ１５で、演奏音情報Noteの役割を「４声目」に決定する。一方、ステップＦ１３で、コードタイプが、「６」、「６ｓｕｓ４」及び「ｍ６」の何れでもないと判定したときは（Ｆ１３＝ＮＯ）、ステップＦ１６に進み、ディグリーネームDegreeNameのコードタイプが、「ＩＭａｊ７」（１度・メジャー７）や「IVｍＭａｊ７」（４度・マイナーメジャー７）などのＭａｊ７（メジャー７）系であるか否かを判定する。ここで、コードタイプがＭａｊ７系であれば（Ｆ１６＝ＹＥＳ）、ステップＦ１７に進んで、演奏音情報Noteの音名が“ルート”レジスタの音名に対し長７度(Maj7th)であるか否かを判定し、長７度であれば（Ｆ１７＝ＹＥＳ）、ステップＦ１５で演奏音情報Noteの役割を「４声目」に決定する。また、ステップＦ１６でコードタイプがＭａｊ７系でないと判定したときは（Ｆ１６＝ＮＯ）、ステップＦ１８に進み、ディグリーネームDegreeNameのコードタイプが、「IIｍ７」（２度・マイナー７）、「Ｖ７」（５度・セブン）、「 VII７ｓｕｓ４」（７度・セブンサスペンデッド４）などのｍ７（マイナー７）系乃至７（セブン）系であるか否かを判定する。ここで、コードタイプがｍ７系乃至７ｔｈ系であれば（Ｆ１８＝ＹＥＳ）、ステップＦ１９に進み、演奏音情報Noteの音名が“ルート”レジスタの音名に対し短７度（７th）であるか否かを判定し、短７度であれば（Ｆ１９＝ＹＥＳ）、ステップＦ１５で、演奏音情報Noteの役割を「４声目」に決定する。そして、ステップＦ１０の処理を終えると、この役割抽出処理を終了してコード検出処理のステップＣ７（図９）にリターンする。
【００６０】
ステップＦ９で減５度でないと判定したとき（Ｆ９＝ＮＯ）、ステップＦ１２で増５度でないと判定したとき（Ｆ１２＝ＮＯ）、ステップＦ１４で長６度でないと判定したとき（Ｆ１４＝ＮＯ）、ステップＦ１７で長７度でないと判定したとき（Ｆ１７＝ＮＯ）、ステップＦ１８でコードタイプがｍ７系でも７系でもないと判定したとき（Ｆ１８＝ＮＯ）、或いは、ステップＦ１９で短７度でないと判定したときは（Ｆ１９＝ＮＯ）、ステップＦ２０に進み、演奏音情報Noteの音名が、現在の調 KeyにおけるディグリーネームDegreeNameのコードに対しテンションノートであるか否かを判定する。ここで、テンションノートは、コードタイプに応じて根音からの半音距離数が決まっており（ルートに対しては、♭９th，９th，♯９th，１１th，♯１１th，♭１３th，１３thの何れか１〜３）、例えば、 Key＝ＣＭａｊｏｒ調、DegreeName＝IVＭａｊ７の場合、Ｇ（ソ）、Ｂ（シ）、Ｄ（レ）の音である。ここで、テンションノートであれば（Ｆ２０＝ＹＥＳ）、ステップＦ２１で、演奏音情報Noteの役割を「テンションノート」に決定し、そうでなければ（Ｆ２０＝ＮＯ）、ステップＦ２２で演奏音情報Noteの役割を「その他」に決定する。そして、ステップＦ２１，Ｆ２２の処理を終えると、この役割抽出処理を終了してコード検出処理のステップＣ７（図９）にリターンする。
【００６１】
〔ディグリーネーム別ポイントテーブル（２）〕
図３で説明したディグリーネーム別ポイントテーブルＰＴは、候補となり得るコード毎に、対応するディグリーネームに基づいた構成音、テンションノート、アヴォイドノートなどのノートの役割に対する重要度を示すノートポイントを設定したものであるが、ノートポイントをさらに詳細に設定することができる。図１２〜図１３は、この発明の一実施例によるディグリーネーム別ポイントテーブルの別の例を示す。このディグリーネーム別ポイントテーブルでは、第１〜５列には、図３のテーブルと同様の情報が設定されるが、第６〜２２列には、第５列のRoot（ルート）に対し図示の通りの音程(m3rd,3rd,4th,…,13th)を示す音の役割に対応するポイント（重要度）が設定されると共に、第５〜２２列のルートを含む各音には、コードを特徴付けるノート（役割）を表わす役割情報が付記され、図１２〜図１３では、ノートポイント表示枠に次のように表示されている：
表示枠左上の記号“ｒ”は、コード構成音のルートを表わし、記号“３”は、コード構成音の３度音を表わし、記号“５”は、コード構成音の５度音を表わし、記号“４”は、コード構成音の４声目音〔６ｔｈ，７ｔｈ，Ｍａｊ７ｔｈ〕を表わし、記号“ａ”は、コード構成音中のオルタード系コードトーン〔♭５ｔｈ，♯５ｔｈ(aug5th)〕を表わし、記号“ｔ”は、テンションノートを表わす。また、表示枠全体に斜線を施したものは、異名同音（記譜上は異なるが鍵盤上は同一の音）による不使用を表わし、記号や斜線のないものは、「その他」の音（アヴォイドノートなど）を表わす。
【００６２】
このようなディグリーネーム別ポイントテーブルＰＴを用いると、各演奏音（音高情報）に対しコードにおける役割とポイントを同時に得ることができる。また、コード構成音だけでなく、テンションノートについても、その種類毎にポイントを設定することができ、高い精度でコード検出を行うことが可能になる。
【００６３】
〔種々の実施態様〕
以上、図面を参照しつつこの発明の好適な実施の一形態について説明したが、これは単なる一例であり、この発明は、発明の精神を逸脱しない範囲で種々の変更が可能である。例えば、コード検出を行うタイミングについては、テンポや使用する伴奏スタイルによって決まっていてもよいし、ユーザが設定できるようになっていてもよい。また、スイッチなどの特定の操作子が操作されたタイミングでもよいし、所定の拍タイミング＋操作子操作タイミングでもよい。テンポの変化を検出したときに例えば２拍毎から１拍毎に変更してもよい。また、実施例のように、対象演奏データの入力を受け付けるための時間幅（Ｔ１〜Ｔ３）を設けてもよい。
【００６４】
実施例では、候補となり得る全てのコード毎にノートポイントを設定したディグリーネーム別ポイントテーブル（ＰＴ）を用いているが、複数種類のディグリーネーム別ポイントテーブルを用意しておき、演奏前や演奏中にユーザ操作で所望種類のポイントテーブルを選択することができるようにしてもよい。また、ユーザにより編集や作成が可能であってもよい。
また、ノートポイントテーブルとは別に、候補コードに対応するディグリーネーム自体の優先度を示すコード優先ポイント（ディグリーネーム優先ポイント）を設定したコード優先ポイントテーブル（ディグリーネーム優先ポイントテーブル）を設けることができ、この場合も、同様に、複数種類のコード優先ポイントテーブルを用意して選択可能としたり、ユーザによるテーブルの編集や作成を可能としてもよい。
また、実施例のようにコードのディグリーネーム毎の表であってもよいし、ノートポイントテーブルについてはコードタイプ別の表であってもよい。
【００６５】
実施例では、押鍵音の候補コードにおける役割を、コード構成音、テンションノート、アヴォイドノートなど、細かく識別しているが、例えば、コード構成音か構成音でないかの２通りの役割を識別するようにしてもよい。
【００６６】
実施例では、演奏データに合わせて、検出したコードに基づき自動伴奏を生成するようにしているが、検出したコードに基づきハーモニー音を生成するようにしてもよい。或いは、検出したコードの情報を順次表示画面上に表示するという活用法も考えられる。
検出したコードを記憶する際、演奏の開始以降に検出した全てのコードをリスト形式などで記憶しておいてもよいし、最新のコード１つもしくは任意の個数を記憶し、検出毎に更新してもよい。また、検出されたコードは、コードネームを記憶してもよいし、その時点での調情報と対応付けたディグリーネームで記憶してもよい。コードネームとディグリーネームを両方記憶しておいてもよい。
【００６７】
実施例では、入力される演奏データは、ユーザによるリアルタイム演奏データを想定しているが、例えば、録音された演奏データを先読みせずに順次再生しながらコードを検出するような使い方も考えられる。或いは、外部に接続した楽器などの装置から演奏データが入力されてもよい。
また、演奏データの入力手段（演奏操作子）は鍵盤だけでなく、例えば、ギターなどの弦楽器タイプでもよい。ユーザの演奏入力音がオーディオ信号の場合、遅くとも各コード検出タイミングにおいて、候補コードからコードを１つ選出するために演奏データを参照するまでに少なくとも発音タイミング情報と音高情報を持つ音符情報に変換できていればよい。
【符号の説明】
【００６８】
Ｔ１〜Ｔ３  コード検出タイミング〔Ｔ１＝開始 (sTime)、Ｔ３＝終了 (eTime)〕、
Ｔ２  コード検出基準位置、
ＰＴ  ディグリーネーム別ポイントテーブル。
【図１】
2015111286.tif 000003
【図２】
2015111286.tif 000004
【図３】
2015111286.tif 000005
【図４】
2015111286.tif 000006
【図５】
2015111286.tif 000007
【図６】
2015111286.tif 000008
【図７】
2015111286.tif 000009
【図８】
2015111286.tif 000010
【図９】
2015111286.tif 000011
【図１０】
2015111286.tif 000012
【図１１】
2015111286.tif 000013
【図１２】
2015111286.tif 000014
【図１３】
2015111286.tif 000015