(57)【要約】      （修正有）【課題】取得した演奏データに対して調和し、さらに演奏曲のイメージに合ったコード検出を行うことが可能となるコード検出装置を提供する。【解決手段】入力された演奏データから所定のコード検出タイミング内の演奏データが取得され、設定された抽出方法によりコード候補が抽出され、抽出されたコード候補のそれぞれについて、各演奏音の当該コードにおける役割が識別され、識別された役割に基づいて、ディグリーネーム別ポイントテーブルを参照することにより、各演奏音の音楽的なポイントが求められ、前記抽出されたコード候補のそれぞれについて、前記求められた各演奏音のポイントが合計される。そして、現在の演奏曲に対応するコード傾向情報を参照することにより、各コード候補のポイント数が調整される。このポイント数の調整されたコード候補から合計ポイントが一番高いコード候補が選出され、適切なコードとして検出される。【選択図】図４
2014194536.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによる演奏を表す演奏データを取得する演奏データ取得手段と、
ユーザによる演奏曲を表す曲情報を取得する曲情報取得手段と、
前記演奏曲におけるコードのそれぞれの出現可能性の程度を表すコード傾向情報を取得するコード傾向情報取得手段と、
前記演奏データ取得手段によって取得された演奏データおよび前記コード傾向情報取得手段によって取得されたコード傾向情報に基づいて、コードを検出するコード検出手段と
を有することを特徴とするコード検出装置。
【請求項２】
前記演奏データ取得手段によって取得された演奏データに基づいて、１つ以上のコード候補を抽出する抽出手段をさらに有し、
前記コード検出手段は、前記抽出手段によって抽出されたコード候補から、前記コード傾向情報取得手段によって取得されたコード傾向情報に基づいて１つのコードを検出することを特徴とする請求項１に記載のコード検出装置。
【請求項３】
前記コード傾向情報取得手段は、前記演奏曲におけるコード傾向情報を取得できない場合には、当該演奏曲に関する取得可能な他の情報に基づいてコード傾向情報を生成し、生成したコード傾向情報を当該演奏曲に対応するコード傾向情報として取得することを特徴とする請求項１または２に記載のコード検出装置。
【請求項４】
コード検出方法をコンピュータに実行させるためのプログラムであって、
前記コード検出方法は、
ユーザによる演奏を表す演奏データを取得する演奏データ取得ステップと、
ユーザによる演奏曲を表す曲情報を取得する曲情報取得ステップと、
前記演奏曲におけるコードのそれぞれの出現可能性の程度を表すコード傾向情報を取得するコード傾向情報取得ステップと、
前記演奏データ取得ステップによって取得された演奏データおよび前記コード傾向情報取得ステップによって取得されたコード傾向情報に基づいて、コードを検出するコード検出ステップと
を有する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取得した演奏データに対してリアルタイムでコード（和音）検出を行うコード検出装置およびコード検出方法を実現するためのプログラムに関する。
【背景技術】
【０００２】
取得した演奏データに対してリアルタイムでコード検出を行うコード検出装置は、従来から知られている。
【０００３】
このようなコード検出装置として、入力された演奏データから次のようにして適切なコードを検出するものがある（たとえば、特許文献１参照）。
【０００４】
Ａ．入力された演奏データから所定のコード検出タイミング（時間幅）内の演奏データ（ノートイベント）を取得し；
Ｂ．取得された演奏データおよび取得された調情報に基づいて、設定された抽出方法によりコード候補を抽出し；
Ｃ．抽出されたコード候補のそれぞれについて、各演奏音（ノートイベント）の当該コードにおける役割を識別し；
Ｄ．識別された役割に基づいて、ディグリーネーム別ポイントテーブル（後述する図３参照）を参照することにより、各演奏音の音楽的なポイント（重要度）を求め；
Ｅ．上記Ｂ．で抽出されたコード候補のそれぞれについて、上記Ｄ．で求められた各演奏音のポイントを合計し；
Ｆ．上記Ｅ．の結果、合計ポイントが一番高いコード候補を適切なコードとして検出する。
【０００５】
また、ユーザが演奏したい曲名を選択すると、その曲名の曲を演奏するのに適した演奏設定データを自動的に設定するようにした演奏設定データ選択装置もある（たとえば、特許文献２参照）。この従来の演奏設定データ選択装置では、設定される演奏設定データは、伴奏スタイルデータやメロディ音色、テンポなどであり、曲名に対応した各種演奏設定データが予めテーブルで記憶されている。そして、曲名が選択されると、その曲名に基づいてテーブルを参照することで、設定すべき演奏設定データを取得して設定するようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−９８４８０号公報
【特許文献２】特許３８２１０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上記従来のコード検出装置では、たとえば、上記Ｂ．で取得された演奏データ内に、あるコード候補のルートが含まれている場合に、そのルートのポイントが高く設定されたノートポイントテーブル（ディグリーネーム別ポイントテーブルに含まれるテーブル）を使うと、ユーザの意図通りのコードを検出し易くなるが、曲によっては、あるいは両手弾きの演奏では、コード検出タイミングで、ユーザの意図するコードのルートが含まれる演奏データが取得されるとは限らず、この場合には、演奏曲とイメージの異なるコードが検出される可能性がある。
【０００８】
上記従来のコード検出装置が使用するディグリーネーム別ポイントテーブルには、コード自体の優先ポイントを得るための優先ポイントテーブルも含まれているので、この優先ポイントテーブルの値を調整することで、特定のコードを優先的に検出することも不可能ではない。しかし、優先ポイントテーブルの調整は、特定のコード（演奏曲）に合わせて行われるだけなので、高いポイントが優先的に設定された特定のコードが検出され易くなるだけで、演奏曲のイメージに合ったコードが検出されるということにはならない。
【０００９】
また上記従来の演奏設定データ選択装置では、曲名が選択されると、その曲名に応じた演奏設定データが自動的に設定されるが、設定される演奏設定データには、伴奏スタイルデータやメロディ音色やテンポなどは含まれるものの、コード情報は含まれていない。つまり上記従来の演奏設定データ選択装置では、コードは、演奏設定データとしてではなく、演奏データとして扱われるので、選択可能な曲に適した伴奏スタイルデータやメロディ音色やテンポなどは設定できても、その曲をイメージできるコード進行まで設定することはできない。
【００１０】
本発明は、この点に着目してなされたものであり、取得した演奏データに対して調和し、さらに演奏曲のイメージに合ったコード検出を行うことが可能となるコード検出装置およびコード検出方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１に記載のコード検出装置は、ユーザによる演奏を表す演奏データを取得する演奏データ取得手段と、ユーザによる演奏曲を表す曲情報を取得する曲情報取得手段と、前記演奏曲におけるコードのそれぞれの出現可能性の程度を表すコード傾向情報を取得するコード傾向情報取得手段と、前記演奏データ取得手段によって取得された演奏データおよび前記コード傾向情報取得手段によって取得されたコード傾向情報に基づいて、コードを検出するコード検出手段とを有することを特徴とする。
【００１２】
請求項２に記載のコード検出装置は、請求項１のコード検出装置において、前記演奏データ取得手段によって取得された演奏データに基づいて、１つ以上のコード候補を抽出する抽出手段をさらに有し、前記コード検出手段は、前記抽出手段によって抽出されたコード候補から、前記コード傾向情報取得手段によって取得されたコード傾向情報に基づいて１つのコードを検出することを特徴とする。
【００１３】
請求項３に記載のコード検出装置は、請求項１または２のコード検出装置において、前記コード傾向情報取得手段は、前記演奏曲におけるコード傾向情報を取得できない場合には、当該演奏曲に関する取得可能な他の情報に基づいてコード傾向情報を生成し、生成したコード傾向情報を当該演奏曲に対応するコード傾向情報として取得することを特徴とする。
【００１４】
上記目的を達成するため、請求項４に記載のプログラムは、請求項１と同様の技術的思想によって実現できる。
【発明の効果】
【００１５】
請求項１または４に記載の発明によれば、ユーザがある演奏曲の演奏を行うと、演奏に応じた演奏データが取得されるとともに、前記演奏曲におけるコード傾向情報が取得され、取得された演奏データおよびコード傾向情報に基づいて当該演奏曲のイメージに合ったコードが検出されるので、ユーザは演奏中に、意図通りのコード検出がなされるような工夫、たとえばコードのルート音を演奏音に確実に含ませるなどの工夫をする必要がなくなる。その結果、ユーザは当該演奏曲そのものの演奏に集中することができる。
【００１６】
また、演奏曲が指定されたとしても、たとえば、当該演奏曲に対応して予め記憶（設定）されたコード進行が順次読み出される等により、コード進行まで固定される訳ではなく、演奏曲のイメージおよび演奏音（演奏データ）に合ったいずれかのコードが検出され易くなるだけであるので、演奏中にユーザが自由にアレンジしても、あるいは繰り返し部分の追加や省略などを自由に行っても、演奏曲のイメージおよび演奏音に合ったコード検出は変わらずになされる。その結果、演奏曲のイメージを保ちつつ、ユーザのアレンジによる幅広い演奏が可能になる。
【００１７】
請求項３に記載の発明によれば、前記演奏曲におけるコード傾向情報がないなどの理由によりコード傾向情報を取得できない場合には、当該演奏曲に関する取得可能な他の情報に基づいてコード傾向情報が生成され、そのコード傾向情報が当該演奏曲に対応するコード傾向情報として取得されるので、取得した演奏データに対して、当該演奏曲のイメージに合ったコード検出を常に行うことができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施の形態に係るコード検出装置の概略構成を示すブロック図である。
【図２】コード検出タイミングの設定例を示す図である。
【図３】ディグリーネーム別ポイントテーブルの一例を示す図である。
【図４】演奏設定データ（（ａ））、音楽コンテンツデータ（（ｂ））およびコード傾向情報（（ｃ））の各一例を示す図である。
【図５Ａ】図１のコード検出装置、特にＣＰＵが実行する、自動伴奏を使った演奏処理の手順の前半部分を示すフローチャートである。
【図５Ｂ】上記自動伴奏を使った演奏処理の手順の後半部分を示すフローチャートである。
【図６】図５Ａ中のコード傾向情報取得処理の詳細な手順を示すフローチャートである。
【図７】図５Ａ中のノートイベント処理の詳細な手順を示すフローチャートである。
【図８】図５Ｂ中のコード検出処理の詳細な手順を示すフローチャートである。
【図９Ａ】図８中の役割抽出処理の詳細な手順の前半部分を示すフローチャートである。
【図９Ｂ】図８中の役割抽出処理の詳細な手順の後半部分を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２０】
図１は、本発明の一実施の形態に係るコード検出装置の概略構成を示すブロック図である。
【００２１】
同図に示すように、本実施の形態のコード検出装置は、ユーザの演奏操作に応じて音高情報を含む演奏データを入力する鍵盤を含む演奏操作子１と、各種情報を入力するための複数のスイッチを含む設定操作子２と、演奏操作子１の操作状態を検出する検出回路３と、設定操作子２の操作状態を検出する検出回路４と、装置全体の制御を司るＣＰＵ５と、該ＣＰＵ５が実行する制御プログラムや各種テーブルデータ等を記憶するＲＯＭ６と、演奏データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ７と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ８と、後述するようにＣＰＵ５が供給するコード情報に基づいて演奏データ（伴奏音を発生させるためのもの）を生成する自動伴奏装置９と、各種情報等を表示する、たとえばＬＣＤ（liquid crystal display）およびＬＥＤ（light emitting diode）等を備えた表示装置１０と、外部ＭＩＤＩ（musical instrument digital interface）機器等の外部機器１００を接続し、この外部機器１００とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）１２と、演奏操作子１から入力された演奏データや、前記自動伴奏装置９によって生成された演奏データ等を楽音信号に変換するとともに、その楽音信号に各種効果を付与するための音源・効果回路１３と、該音源・効果回路１３からの楽音信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１４とにより構成されている。
【００２２】
上記構成要素３〜１３は、バス１５を介して相互に接続され、ＣＰＵ５および自動伴奏装置９にはタイマ８が接続され、通信Ｉ／Ｆ１２には外部機器１００が接続され、音源・効果回路１３にはサウンドシステム１４が接続されている。
【００２３】
自動伴奏装置９は、たとえば、ＲＯＭ６に予め記憶されたシーケンサソフトウェアをＣＰＵ５に実行させることによって実現され、前述のように、供給されたコード情報に基づいて演奏データを生成し、生成した演奏データを音源・効果回路１３に供給することで、伴奏音を発生させる。また、自動伴奏装置９は、たとえば、ＲＯＭ６に予め記憶された各種伴奏スタイルデータからユーザが選択したいずれかの伴奏スタイルデータを再生して、演奏データを生成する機能も備えている。この機能を営むときに、自動伴奏装置９は、タイマ８から供給される時間情報に基づいて伴奏スタイルデータを再生する。なお、本発明の特徴は、自動伴奏装置９の構成や作用にある訳ではないので、自動伴奏装置９の構成や作用についてのこれ以上の説明は行わない。
【００２４】
記憶装置１１は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置１１自体が本実施の形態のコード検出装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置１１も着脱不可能であってもよい。なお記憶装置１１（の記憶媒体）には、前述のように、ＣＰＵ５が実行する制御プログラムも記憶でき、ＲＯＭ６に制御プログラムが記憶されていない場合には、この記憶装置１１に制御プログラムを記憶させておき、それをＲＡＭ７に読み込むことにより、ＲＯＭ６に制御プログラムを記憶している場合と同様の動作をＣＰＵ５にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２５】
通信Ｉ／Ｆ１２には、図示例では外部機器１００が接続されているが、これに限られず、たとえばＬＡＮ（local area network）やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置１１に上記各プログラムや各種パラメータが記憶されていなければ、通信Ｉ／Ｆ１２はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなるコード検出装置は、通信Ｉ／Ｆ１２および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介してコード検出装置へと配信し、コード検出装置が通信Ｉ／Ｆ１２を介して、これらプログラムやパラメータを受信して記憶装置１１に蓄積することにより、ダウンロードが完了する。
【００２６】
なお、本実施の形態のコード検出装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。また、鍵盤を必須の構成とせずに本発明を実現できるので、弦楽器タイプや管楽器タイプ等の形態を採用するようにしてもよい。さらに電子楽器に限らず、カラオケ機器やゲーム機器、通信機器などの電子機器にも本発明を適用することができる。
【００２７】
以上のように構成されたコード検出装置が実行する制御処理を、まず図２〜図４を参照してその概要を説明し、次に図５〜図９を参照して詳細に説明する。
【００２８】
図２は、コード検出タイミングの設定例を示す図である。同図には、演奏曲として４／４拍子の曲が選択され、その１拍目と３拍目がコード検出基準位置に設定され、このコード検出基準位置の２５０ｍｓ前から５０ｍｓ後までの期間がコード検出タイミングに設定された例が示されている。なお図示例では、コード検出タイミングは、３拍目には描かれているものの、１拍目には描かれていない。これは、コード検出タイミングは、１拍目と３拍目で同じ時間幅のものが用いられているため、どちらか一方の拍位置にコード検出タイミングを描いておけば、他方の拍位置にも同様にコード検出タイミングが設定されていることが容易に分かるからである。また、詳細は後述するが、コード検出タイミングをどの位置にどれくらいの時間幅で、どれくらいの個数（あるいは、どれくらいの頻度で）設定するかは、ユーザが自由に選択できるようになっている。
【００２９】
本実施の形態のコード検出装置は、ユーザが前記鍵盤を用いて演奏することで、リアルタイム入力された演奏データをそのまま前記音源・効果回路１３に供給して発音するとともに、リアルタイム入力された演奏データに対して、演奏曲のイメージに合ったコードを検出して前記自動伴奏装置９に供給することにより、伴奏音も発音するようにしている。前記コード検出タイミングの期間（時間幅）は、コードを検出するために参照する演奏データを入力する期間である。つまり、コード検出タイミングの期間内に入力された演奏データのみが、伴奏音を発音するためのコードを検出する際に参照される。
【００３０】
コードの検出は、本実施の形態では、［背景技術］で挙げた特許文献１の従来のコード検出装置によって行われるコード検出処理を改良して行うようにしている。具体的には、［背景技術］で前述したＡ．〜Ｆ．の処理をそのまま用い、このＥ．の処理とＦ．の処理の間に、後述するＧ．の処理を追加することで、行うようにしている。
【００３１】
図３は、前記Ｄ．の処理で参照されるディグリーネーム別ポイントテーブルの一例を示し、図４は、コード検出のために使用する演奏設定データ（（ａ））、音楽コンテンツデータ（（ｂ））およびコード傾向情報（（ｃ））の各一例を示している。
【００３２】
図３は、特許文献１の図３と同じものであるが、図３に示したディグリーネーム別ポイントテーブルについて説明を加えておく。なお、特許文献１に記載の内容は、本実施の形態に組み込まれるものとする。
【００３３】
ディグリーネーム別ポイントテーブルは、候補コードとなり得るすべてのコードに関して、各ノート（ルート、３度、５度、…）のポイントを得るためのノートポイントテーブル（第５〜１１列）と、コード自体の優先ポイント（Ｐｒｉｏｒ）を得るための優先ポイントテーブル（第４列）が、メジャー調とマイナー調別に１つのテーブルにまとめられ、さらに、コードの機能とダイアトニック・コードかどうかの情報（第３列と第２列）が付加されている点に特徴がある。図３のディグリーネーム別ポイントテーブル（メジャー調）は、メジャー調（長調）で候補コードとなり得るすべてのコードに関するテーブルであり、マイナー調（短調）についても同様のテーブルが用意される（図示せず）。
【００３４】
図３において、第１列は、ディグリーネーム別ポイントテーブルにディグリーネーム情報（コード情報とも言い、以下の説明では、単にディグリーネームと呼ぶ）を示し、図示例以外にも多数のディグリーネームがある。各ディグリーネームは、調の主音（トニック）を基準とした度数（根音の音階度数、例：Ｉ，ＩＩ，ＩＩＩ，ＩＶ，Ｖ，…）とコードタイプ（例：記号なし（メジャー）、ｍ（マイナー）、７，６，Ｍａｊ７（メジャー７）、ｍ６（マイナー６）、ｍ７（マイナー７）、ａｄｄ９（アド９ｔｈ）、…）との組み合わせでコードを表している。なお、図中の“♭”は、「フラット」を表し、後述する他の例でも同じである。
【００３５】
ディグリーネーム別ポイントテーブルには、第１列（第１欄）の各ディグリーネームに対応して第２列（第２欄）以下の諸情報が記録されている。第２列のダイアトニック情報は、各ディグリーネームで表されたコードがダイアトニック・コードである（○）か否か（×）を表す。第３列の機能情報は、ディグリーネームの機能がトニック（Ｔ）、サブドミナント（Ｓ）、ドミナント（Ｄ）、サブドミナント・マイナー（ＳＭ）のいずれであるかを表す。また、第４列の優先ポイント情報（Ｐｒｉｏｒ）は、ディグリーネーム自体の優先度をポイントで表し、コード優先ポイントまたはディグリーネーム優先ポイントとも呼ばれる。これに対して、第５〜１１列は、コードを特徴付けるノート（ルート、３度、５度、…）毎に音楽的な重要度を表すノートポイント情報が設定されたノートポイントテーブル部を構成している。
【００３６】
まず、第５〜９列の各欄のポイント情報は、コードを構成するコード構成音の各ノート（役割）に対する音楽的な重要度をポイント値で表している。具体的には、第５列のルートポイント情報は、コード構成音の根音に対応するポイントを表す。第６列の３度ポイント情報は、コード構成音の３度音に対応するポイントを表す。第７列の５度ポイント情報は、コード構成音の５度音に対応するポイントを表す。第８列の４声目ポイント情報は、コード構成音中で根音に対し長６度（６ｔｈ）、短７度（７ｔｈ）または長７度（Ｍａｊ７ｔｈ）の４声目音に対応するポイントを表す。第９列のオルタード系ポイント情報は、コード構成音中で根音に対し減５度（♭５ｔｈ）または増５度（♯５ｔｈ）の５度変化音（オルタード系コードトーン）に対応するポイントを表す。
【００３７】
そして、第１０列のテンションノートポイント情報は、コードの基本的な和音構成音の上部に置かれた非和声音で緊張感を与えるテンションノートに対する音楽的な重要度をポイント値で表す。第１１列（最右欄）のその他ポイント情報は、コード・サウンドの構成上除外されるアヴォイドノートなど、コード構成音にも、テンションノートにも相当しないその他のノートに対する音楽的な重要度をポイント値で表す。
【００３８】
このノートポイントテーブル部（第５〜１１列）では、コード構成音の中でも、特にルートの役割を持つ演奏音（押鍵音、音高情報）には、重要度が高いと評価されて高めのポイントが設定される。また、構成音中でも、コードタイプの決定に大きく関わる３度および７度（４声目）の役割を持つ演奏音も重要とみなされる。一方、コードの中で不協和を生じるような役割（その他）の演奏音に対しては、重要度が低くなり、ポイントも低めに設定される。
【００３９】
本実施の形態のコード検出装置では、前記Ｂ．〜Ｅ．の処理により、コード候補（後述する「コードリストＣＬｉｓｔ」）毎に総計ポイントが計算される。具体的には、検出対象となる演奏データが入力されたときの調（後述する「調情報Ｋｅｙ」）に応じて、候補とすべきコード（コードリストＣＬｉｓｔ）が抽出される（処理Ｂ．）。たとえば、予め所定の調で使用可能なコードの種類の組み合わせをいくつか記憶しておき、コード検出時に所望の組み合わせを選び、選ばれた組み合わせに該当するコードを候補コード（コードリストＣＬｉｓｔ）として抽出する。また、図３に示されるタイプのディグリーネーム別ポイントテーブルでは、ポイント情報（第４〜１１列）だけでなく、第２，３列に示すように、各コードのディグリーネーム（後述する「ディグリーネームＤＮａｍｅ」：第１列）についてダイアトニック・コードかどうかを表すダイアトニック情報や、機能は何であるかを表す機能情報が追加されているので、ディグリーネーム別ポイントテーブルを利用して、その追加情報を参照することにより、候補となるコード（コードリストＣＬｉｓｔ）を抽出することができる。
【００４０】
たとえば、そのときのダイアトニック・コード（第２列情報＝“○”）に該当するコード（ディグリーネームＤＮａｍｅ）をすべての候補コードとして抽出するようにしてもよい。あるいは、２回目以降のコード検出の場合には、前回検出されたコードの機能（第３列情報）を調べ、たとえば、ドミナント（Ｄ）であれば、次はトニック（Ｔ）に進む、というように、前回検出されたコード（後述する「検出コードＣｈｏｒｄ」）から音楽的に次に進むことが可能なコード（ディグリーネームＤＮａｍｅ）を候補コード（コードリストＣＬｉｓｔ）として抽出するようにしてもよい。なお、このような追加情報については、ディグリーネーム別ポイントテーブルに含ませずに、ディグリーネーム別ポイントテーブルとは別に参照テーブルを用意しておくようにしてもよい。
【００４１】
候補コード（コードリストＣＬｉｓｔ）が抽出されると、対象の演奏データ（後述する「ノートイベントリストＮＬｉｓｔ」）に含まれる各演奏音（押鍵音、後述する「音高情報Ｎｏｔｅ」）が、抽出された各候補コード（コードリストＣＬｉｓｔに登録された各コード）において、どのような役割を演じているのか（どの構成音が、テンションノートか、またはアヴォイドノートか）が識別される（処理Ｃ．）。次に、ディグリーネーム別ポイントテーブルから、識別した役割（各構成音、テンションノート、アヴォイドノート）に対応するポイントが取得される（処理Ｄ．）。そして、候補コード毎に、全演奏音（ノートイベントリストＮＬｉｓｔ）に対応するポイント（重要度）が合計される（処理Ｅ．）。
【００４２】
このＥ．の処理の結果、抽出されたコード候補のそれぞれについて、ポイントが算出されると、前記ＣＰＵ５は、
Ｇ．現在の演奏曲（図示例では、演奏曲名“○○○”）に対応するコード傾向情報（図４（ｃ）参照）を参照して、各コード候補のポイント数を調整する。
【００４３】
具体的な調整方法については制御処理の詳細で後述するが、コード候補が「出現し易い」ものに該当する場合には、そのポイント数を増大させる方向に調整する一方、コード候補が「出現し難い」ものに該当する場合には、そのポイント数を減少させる方向に調整する。
【００４４】
そしてＣＰＵ５は、このポイント数の調整されたコード候補に対して、前記Ｆ．の処理を実行することで、コード検出を行う。具体的には、Ｇ．の処理で調整されたポイント数が一番高い候補コードを選出し、これが対象の演奏データに最適なコード（検出コードＣｈｏｒｄ）であると決定する。
【００４５】
コード傾向情報は、図４（ａ）に示すように、演奏設定データ内の「コード傾向情報」欄に記載された情報（参照パス）によって、その記憶場所が特定される。そして、演奏設定データは、演奏曲毎に設けられているので、コード傾向情報は、演奏曲に対応付けられている。ただし、演奏設定データによっては、つまり演奏曲によっては、「コード傾向情報」欄に参照パスが記載されていないものもあるので、コード傾向情報が演奏曲に対応付けられて常に記憶されている訳ではない。しかし本実施の形態では、前記Ｅ．の処理後、前記Ｆ．の処理前には、当該演奏曲に対応するコード傾向情報が常に参照されて、各コード候補のポイント数が調整されるので、コード傾向情報がどこにも記憶されていない場合には、ＣＰＵ５は、当該演奏曲の音楽コンテンツデータ（図４（ｂ）参照）に基づいて、当該演奏曲に対応するコード傾向情報を生成するようにしている。なお、このコード傾向情報の生成については、詳しく後述する。
【００４６】
このように本実施の形態のコード検出装置では、ユーザが演奏したい曲を選択して演奏を行うと、選択された演奏曲に対応するコード傾向情報が取得され、このコード傾向情報に基づいて当該演奏曲のイメージに合ったコードが検出されるので、ユーザは演奏中に、意図通りのコード検出がなされるような工夫、たとえばコードのルート音を演奏音に確実に含ませるなどの工夫をする必要がなくなる。その結果、ユーザは当該演奏曲そのものの演奏に集中することができる。
【００４７】
また、演奏曲が選択されたとしても、たとえば、当該演奏曲に対応して予め記憶（設定）されたコード進行が順次読み出される等により、コード進行まで固定される訳ではなく、選択曲のイメージおよび演奏音（演奏データ）に合ったいずれかのコードが検出され易くなるだけであるので、演奏中にユーザが自由にアレンジしても、あるいは繰り返し部分の追加や省略などを自由に行っても、演奏曲のイメージおよび演奏音に合ったコード検出は変わらずになされる。その結果、演奏曲のイメージを保ちつつ、ユーザのアレンジによる幅広い演奏が可能になる。
【００４８】
次に、この制御処理を詳細に説明する。
【００４９】
図５Ａおよび図５Ｂは、本実施の形態のコード検出装置、特にＣＰＵ５が実行する、自動伴奏を使った演奏処理の手順を示すフローチャートである。本実施の形態のコード検出装置では、ユーザが演奏操作子１を用いてリアルタイム演奏する際の演奏モードとして、自動伴奏装置９を作動させずに、演奏操作子１を用いて入力された演奏データに応じた楽音を発音させる第１の演奏モードと、自動伴奏装置９を作動させて、演奏操作子１を用いて入力された演奏データに応じた楽音とともに、自動伴奏装置９によって生成された演奏データに応じた楽音（伴奏音）も発音させる第２の演奏モードの２種類の演奏モードを備えている。通常の演奏モード、つまり、本実施の形態のコード検出装置の電源をオンしたときに最初に選択される演奏モードは、第１の演奏モードであるので、第２の演奏モードに移行するには、ユーザによる所定の移行指示が必要となる。上記「自動伴奏を使った演奏処理」は、この移行指示がなされたときに起動される処理である。なお本実施の形態では、本発明の特徴を「自動伴奏を使った演奏処理」内にすべて盛り込み、この「自動伴奏を使った演奏処理」を用いて本発明の特徴を説明するようにしたので、「自動伴奏を使わない演奏処理」についての説明は行わない。したがって、以下「自動伴奏を使った演奏処理」を「演奏処理」と略して言う。
【００５０】
本演奏処理は、主として、
（１）起動時処理（ステップＳ１〜Ｓ７）；
（２）自動伴奏のスタート時処理（ステップＳ１０）；
（３）自動伴奏のストップ時処理（ステップＳ１２）；
（４）ノートイベント処理（ステップＳ１５）；
（５）コードの検出タイミング時処理（図５ＢのステップＳ１７〜Ｓ２４）；
によって構成されている。
【００５１】
本演奏処理が起動されると、前記（１）の起動時処理が１回実行された後、自動伴奏のスタート指示があるまで待機状態となり（ステップＳ８→Ｓ９→Ｓ８）、自動伴奏のスタート指示があると、前記（２）の自動伴奏のスタート時処理が実行され、これに続いて、前記（４）および（５）の各処理が適宜実行される。そして（４）および（５）の各処理は、自動伴奏のストップ指示があるまで（ステップＳ１１）、あるいは第１の演奏モードに戻る指示があるまで（ステップＳ８）、適宜繰り返し実行される。なお、自動伴奏のストップ指示があると、前記（３）の自動伴奏のストップ時処理が実行された後、演奏曲の変更があったかどうか判定され（ステップＳ１３）、変更があったときには、前記（１）の起動時処理に戻る（ステップＳ１３→Ｓ１）一方、変更がなかったときには、前記待機状態に戻る（ステップＳ１３→Ｓ８）。また、第１の演奏モードに戻る指示があると、本演奏処理は終了する（ステップＳ８→終了）。
【００５２】
前記（１）の起動時処理は、
（１１）演奏曲の選択および設定処理（ステップＳ１およびＳ２）；
（１２）コード傾向情報取得処理（ステップＳ３）；
（１３）コード検出タイミング、各種ルールおよび各種情報の設定処理（ステップＳ４）；
（１４）ポイントテーブル読込処理（ステップＳ５）；
（１５）初期化処理（ステップＳ６）；
（１６）コード検出タイミングの始点および終点の算出設定処理（ステップＳ７）；
によって構成されている。
【００５３】
この（１）起動時処理に処理が進むと、まずＣＰＵ５は、前記（１１）の演奏曲の選択および設定処理を実行する。この（１１）演奏曲の選択および設定処理では、ＣＰＵ５は、選択可能な演奏曲の、たとえば曲名の一覧を前記表示装置１０上に表示する。表示された曲名の一覧から、ユーザがいずれかの演奏曲名を選択すると、ＣＰＵ５は、選択された演奏曲名に対応する演奏設定データを読み出し（ステップＳ１）、その演奏設定データに記載された各種設定値を対応するレジスタ等に書き込んで設定する（ステップＳ２）。演奏曲名として、たとえば“○○○”が選択された場合、演奏曲名“○○○”の演奏設定データは、前記図４（ａ）に示すように、伴奏スタイルが“ｐｏｐ１”，メロディ音色が“Grand Piano”，…であるので、これらの設定値が対応するレジスタ等に設定される。なお、図示されていない設定項目（パラメータ）としては、たとえば、演奏テンポやボリューム値、拍子などを挙げることができる。
【００５４】
次にＣＰＵ５は、処理を前記（１２）のコード傾向情報取得処理に進める。
【００５５】
図６は、この（１２）コード傾向情報取得処理の詳細な手順を示すフローチャートである。本コード傾向情報取得処理では、前記図４（ｃ）で例示したコード傾向情報を取得する。
【００５６】
コード傾向情報は、本実施の形態では、演奏設定データとは別の場所に記憶され、演奏設定データ内の「コード傾向情報」欄には、コード傾向情報の記憶場所を示す情報（その情報として、本実施の形態では「参照パス」を採用する）が記載される（図４（ａ）参照）。また、演奏設定データの中には、コード傾向情報の参照パスが記載されていないものもあり、さらに、コード傾向情報の参照パスが記載されていたとしても、記憶場所に有用なコード傾向情報が記憶されていないこともある。したがって、本コード傾向情報取得処理では、
（Ｃ１）演奏設定データ内にコード傾向情報の参照パスが記載されておらず、取得対象となるコード傾向情報が存在しないので、取得すべきコード傾向情報を新たに生成しなければならない場合；
（Ｃ２）演奏設定データ内にコード傾向情報の参照パスは記載されているものの、その参照パスによって参照されるコード傾向情報は初期状態（具体的には、コード傾向情報の記憶領域だけ確保されており、その領域には有用なコード傾向情報が記憶されていない状態など）であるので、取得すべきコード傾向情報を新たに生成しなければならない場合；
（Ｃ３）演奏設定データ内にコード傾向情報の参照パスが記載されており、その参照パスによって参照されるコード傾向情報も、上記（Ｃ２）の初期状態ではなく、有用なものであるので、そのコード傾向情報をそのまま取得すればよい場合；
に場合分けし、各場合について異なった方法で、コード傾向情報を取得するようにしている。
【００５７】
上記（Ｃ１）の場合に、本コード傾向情報取得処理が起動されたとする。このとき、当該演奏設定データ内にはコード傾向情報の参照パスが記載されていないので、つまり、取得するべきコード傾向情報がないので、まずＣＰＵ５は、コード傾向情報を新規に生成して記憶する領域を、たとえば前記記憶装置１１内に確保し、その場所を示す情報を参照パスの形式で生成し、当該演奏設定データ内の所定の位置（図４（ａ）では「コード傾向情報」欄）に記載する（ステップＳ３１→Ｓ３２）。
【００５８】
次にＣＰＵ５は、選択された演奏曲に対応する音楽コンテンツデータを検索する（ステップＳ３４）。検索場所は、検索可能な場所であればどこであってもよいが、本実施の形態のコード検出装置内であれば、ＲＯＭ６、ＲＡＭ７および記憶装置１１であり、本実施の形態のコード検出装置外であれば、外部機器１００内の記憶媒体である。また、通信Ｉ／Ｆ１２を介してインターネットが接続されていれば、インターネット上のサーバコンピュータも検索対象となる。このように検索場所は多いので、同じ演奏曲について複数の音楽コンテンツデータが検索されることもある。前記図４（ｂ）の音楽コンテンツデータは、そのうちの１つである。図示例の演奏曲名“○○○”の音楽コンテンツデータは、コード進行情報、演奏データおよびその他の情報によって構成されるが、コード進行情報がなく、演奏データとその他の情報によって構成されるものや、演奏データがなく、コード進行情報とその他の情報によって構成されるものもある。また、演奏データも、図示例の音楽コンテンツデータでは、ＭＩＤＩ形式で構成されているが、オーディオ形式で構成されていてもよいし、ある一部パートはＭＩＤＩ形式で構成され、他のパートはオーディオ形式で構成されていてもよい。
【００５９】
次にＣＰＵ５は、
（Ｃ１１）検索された音楽コンテンツデータの中に、参照可能なコード（進行）情報を記憶しているものがある場合；
（Ｃ１２）検索された音楽コンテンツデータの中に、参照可能なコード（進行）情報を記憶しているものはないが、参照可能な演奏データを記憶しているものがある場合；
（Ｃ１３）検索された音楽コンテンツデータの中に、参照可能なコード（進行）情報も参照可能な演奏データもない場合；
の３種類の場合に場合分けして、各場合について異なった処理を実行する。
【００６０】
上記（Ｃ１１）の場合、ＣＰＵ５は、該当する音楽コンテンツデータの調情報を取得する（ステップＳ３５→Ｓ３６）。調情報は、当該音楽コンテンツデータ内に記載されていれば、それを読み出して取得すればよいし、調情報が当該音楽コンテンツデータ内に記載されていなければ、当該音楽コンテンツデータ（のコード（進行）情報あるいは演奏データ）を分析し、調情報を抽出して取得すればよい。
【００６１】
次にＣＰＵ５は、該当する音楽コンテンツデータからコード（進行）情報を抽出し、上記取得された調情報に基づいて、当該コード（進行）情報に含まれる各コードをディグリーネームに変換する（ステップＳ３７）。ディグリーネームに変換された各コードは、たとえばＲＡＭ７内のワークエリアに一時的に保存される。
【００６２】
そしてＣＰＵ５は、各ディグリーネームの出現状況を分析して、コード傾向情報を生成し、生成したコード傾向情報を、当該演奏設定データ内の参照パスによって示される記憶領域に記憶する（ステップＳ４０）。コード傾向情報は、本実施の形態では前記図４（ｃ）に示すように、対象曲における１つ以上の“＊＊＊”（カテゴリ）について「出現し易い／出現し難い」ものを優先順位を付けて示している。ただし“＊＊＊”は、図示例のコード傾向情報では、「ディグリーネーム」、「コードルートの度数（コードのキー（主音）に対する度数）」、「コードタイプ」および「機能」（ただし、機能とは、トニック（Ｔ）、ドミナント（Ｄ）、サブドミナント（Ｓ）およびサブドミナント・マイナー（ＳＭ）を意味する）であるが、これ以外に、コードネームそのものが考えられる。優先順位は、本実施の形態では、「出現し易い」“＊＊＊”に含まれる要素のそれぞれに対応付けて、その出現割合を“％”で示しているが、これに限らず、ポイント値や確率で示すようにしてもよい。
【００６３】
一方、前記（Ｃ１２）の場合、ＣＰＵ５は、該当する音楽コンテンツデータの演奏データを分析して、調情報とコード進行情報を抽出し、抽出された調情報に基づいて、抽出されたコード（進行）情報に含まれる各コードをディグリーネームに変換する（ステップＳ３５→Ｓ３８→Ｓ３９）。ディグリーネームに変換された各コードは、前記ステップＳ３７と同様に、ＲＡＭ７内のワークエリアに一時的に保存される。そしてＣＰＵ５は、処理を前記ステップＳ４０に進める。ステップＳ４０の処理についての説明は、繰り返さない。
【００６４】
さらに、前記（Ｃ１３）の場合、ＣＰＵ５は、デフォルトのコード傾向情報を生成し、生成したコード傾向情報を、当該演奏設定データ内の参照パスによって示される記憶領域に記憶する（ステップＳ３５→Ｓ３８→Ｓ４１）。
【００６５】
次にＣＰＵ５は、当該演奏設定データ内に記載されている参照パスによって参照される記憶領域からコード傾向情報を読み出して、コード傾向情報を格納するためにＲＡＭ７上に設けられたコード傾向情報格納領域（図示せず）に格納する（ステップＳ４２）。
【００６６】
一方、前記（Ｃ２）の場合に、本コード傾向情報取得処理が起動されたとする。このとき、当該演奏設定データ内にはコード傾向情報の参照パスが記載されているものの、その参照パスによって示されるコード傾向情報は初期状態であるので、ＣＰＵ５は、処理を前記ステップＳ３４に進める。ステップＳ３４以降の処理は、前述したので、ここでは繰り返さないが、ステップＳ３４以降の処理が実行されると、初期状態のコード傾向情報が有用なものに更新され、更新後のコード傾向情報が、コード傾向情報格納領域に格納される。
【００６７】
さらに、前記（Ｃ３）の場合に、本コード傾向情報取得処理が起動されたとする。このとき、当該演奏設定データ内には有用なコード傾向情報の参照パスが記載されているので、ＣＰＵ５は、当該演奏設定データ内に記載されている参照パスによって参照される記憶領域からコード傾向情報を読み出して、コード傾向情報格納領域に格納する（ステップＳ３１→Ｓ３３→Ｓ４２）。
【００６８】
図５Ａに戻り、ＣＰＵ５は、処理を前記（１３）のコード検出タイミング、各種ルールおよび各種情報の設定処理に進める。この（１３）コード検出タイミング、各種ルールおよび各種情報の設定処理では、ＣＰＵ５は、コード検出タイミングの設定ルールと、それ以外の各種ルールと、各種情報を設定する。
【００６９】
コード検出タイミングの設定ルールとは、具体的には、コードを検出するタイミングとして、時間幅を設けるのか、あるいは時間幅を設けずに時点とするのか、また、時間幅を設けるのであれば、どの時点を基準位置として、その前後にどのくらいの時間幅を設けるのか、あるいは時点とするのであれば、どの時点とするのかということである。時間幅を設ける例としては、前記図２で示したように、２拍毎に（４／４拍子が選択された場合には、たとえば１拍目と３拍目）拍位置をコード検出基準位置として、２５０ｍｓ前から５０ｍｓ後までの期間とすることが挙げられる。図示例では、時間幅を設定する単位として“ｍｓ”を採用したが、もちろんこれに限らず、音符長であってもよい。また、コード検出基準位置は２拍毎の拍位置に限らず、１拍毎の拍位置であってもよいし、テンポが変化したときに、たとえば２拍毎から１拍毎に変動するようにしてもよいし、拍に限らず、小節毎の所定位置（たとえば、先頭位置）であってもよい。さらに、コード検出基準位置をどこに設定するかは、テンポ値や伴奏スタイルによって決まっていてもよい。一方、時点の例としては、時間幅を設ける場合で例示した各種コード検出基準位置、つまり、所定拍毎の拍位置や小節毎の所定位置、あるいは、ユーザが、たとえば前記設定操作子２に含まれる所定の操作子を操作した時点や、所定の拍内で、ユーザが所定の操作子を操作した時点などが考えられる。なお本実施の形態では、コード検出タイミングの設定ルールとして、前記図２の例で示したルールが選択設定されているものとする。
【００７０】
各種ルールとしては、（Ｒ１）調情報の検出ルールや（Ｒ２）コード候補の抽出ルールなどを挙げることができる。
【００７１】
上記（Ｒ１）の調情報の検出ルールとしては、たとえば、
（Ｒ１ａ）演奏前にユーザに調情報を問い合わせ、これに応じてユーザが入力した調情報を検出（取得）するというルール；
（Ｒ１ｂ）ユーザの演奏操作に応じて入力された演奏データを解析して、随時調情報を検出するというルール；
などが考えられる。なお本実施の形態では、調情報は、主音名＋メジャー／マイナーによって表現したものを入力あるいは検出するものとする。また、演奏データを解析して調情報を検出する方法は、公知のものを用いればよい。そして、調情報を随時検出する方法を採用した場合には、コードが検出される度に（後述する図８のステップＳ７６を参照）、そのとき検出された調情報を当該検出されたコードに対応付けて記憶しておくとよい。
【００７２】
前記（Ｒ２）のコード候補の抽出ルールとしては、たとえば、
（Ｒ２ａ）当該調のダイアトニック・コードのみを抽出するというルール；
（Ｒ２ｂ）当該調で使用可能なコードをすべて抽出するというルール；
（Ｒ２ｃ）当該調で使用可能なコードのうち、構成音が対象演奏データ（後述するノートイベントリストＮＬｉｓｔに登録されたノートイベント情報）中に１音以上あるコードを抽出するというルール；
などを挙げることができる。
【００７３】
各種情報としては、ディグリーネーム別ポイントテーブルやコード傾向情報などを挙げることができる。そして、ディグリーネーム別ポイントテーブルを設定するとは、ユーザの指示に応じて、複数種類のテーブルからいずれかの種類を選択したり、テーブル中のポイント値を編集したりすることである。また、コード傾向情報を設定するとは、コード傾向情報格納領域に格納されているコード傾向情報を、ユーザの指示に応じて編集することである。
【００７４】
次にＣＰＵ５は、処理を前記（１４）のポイントテーブル読込処理に進める。この（１４）ポイントテーブル読込処理では、上記選択されたディグリーネーム別ポイントテーブルを読み込んで、ＲＡＭ７上に設けられたポイントテーブル格納領域（図示せず）に格納する。なお、ディグリーネーム別ポイントテーブルは、本実施の形態では前記図３に示すように、コード優先ポイントテーブル（Ｐｒｉｏｒ）と一体化されているので、ディグリーネーム別ポイントテーブルを単純に読み込めばよいが、コード優先ポイントテーブルが別設されている場合には、ディグリーネーム別ポイントテーブル（コード優先ポイントテーブルを含まないもの）に加えて、別設されたコード優先ポイントテーブルを読み込む必要がある。
【００７５】
次にＣＰＵ５は、処理を前記（１５）の初期化処理に進める。この（１５）初期化処理では、ＣＰＵ５は、ＲＡＭ７上に確保した次の各領域を初期化する。つまり、
ノートイベントリストＮＬｉｓｔ：コード検出タイミングの期間内に入力されたノートオンイベントに対応するノートイベント情報（音高＋入力タイミング）を登録するリストである；
コード検出タイミングの始点ｓＴｉｍｅ：コード検出タイミングの始点を記憶しておく領域である；
コード検出タイミングの終点ｅＴｉｍｅ：コード検出タイミングの終点を記憶しておく領域である；
調情報Ｋｅｙ：前記設定された調検出ルールに従って検出された調情報を記憶しておく領域である；
コードリストＣＬｉｓｔ：前記設定されたコード候補の抽出ルールに従って抽出されたコード候補を登録するリストである；
検出コードＣｈｏｒｄ：コードリストＣＬｉｓｔから選出した１つのコードネームを記憶しておく領域である；
の各領域をクリアする。
【００７６】
次にＣＰＵ５は、処理を前記（１６）のコード検出タイミングの始点および終点の算出設定処理に進める。この（１６）コード検出タイミングの始点および終点の算出設定処理では、ＣＰＵ５は、前記設定されたコード検出タイミングの設定ルールに従って、最初のコード検出タイミングの始点および終点を算出し、算出した始点を前記始点ｓＴｉｍｅに記憶（設定）するとともに、算出した終点を前記終点ｅＴｉｍｅに記憶（設定）する。ただし本実施の形態では、コード検出タイミングとして、曲の先頭拍の拍位置をコード検出基準位置に取るとともに、その拍位置からさらに２５０ｍｓ前をコード検出タイミングの始点に取るのに対して、曲は先頭拍から開始されるので、曲の開始時に、その開始位置より前の位置を算出して、始点ｓＴｉｍｅに設定するのは無意味である。したがって、この場合、始点ｓＴｉｍｅには先頭拍の拍位置、つまりコード検出基準位置を設定することが好ましい。しかしこの場合に、原則通り、先頭拍の拍位置より２５０ｍｓ前の位置を算出して、始点ｓＴｉｍｅに設定したとしても、設定された始点より後の時刻から制御処理が開始されるだけであって、その後の制御処理に問題が生じることはない。
【００７７】
このようにして（１）起動時処理が１回実行されると、ＣＰＵ５は、ユーザによる自動伴奏のスタート指示を待ち、自動伴奏のスタート指示がなされると、処理を前記（２）の自動伴奏のスタート時処理に進める（ステップＳ９→Ｓ１０）。この（２）自動伴奏のスタート時処理では、ＣＰＵ５は、前記タイマ８を起動して、タイマ８による計時を開始する。タイマ８の計時時間は、前述のように前記自動伴奏装置９にも供給され、さらに本演奏処理では、前述のように自動伴奏装置９は作動状態であるので、伴奏スタイルデータが選択設定されていれば、自動伴奏装置９は、本演奏処理とは独立して、タイマ８から供給された計時時間（時間情報）に基づいてその伴奏スタイルデータを再生する。
【００７８】
そしてＣＰＵ５は、ユーザによって自動伴奏のストップ指示がなされるまで、ノートオンイベントが受け付けられたときには、前記（４）のノートイベント処理を実行し（ステップＳ１１→Ｓ１４→Ｓ１５）、タイマ８によって前記コード検出タイミング（の終点ｅＴｉｍｅ）が計時されたときには、前記（５）のコードの検出タイミング時処理を実行する（図５ＢのステップＳ１６→Ｓ１７）。
【００７９】
一方、ユーザによって自動伴奏のストップ指示がなされると、ＣＰＵ５は、処理を前記（３）の自動伴奏のストップ時処理に進める（ステップＳ１１→Ｓ１２）。この（３）自動伴奏のストップ時処理では、ＣＰＵ５は、タイマ８を停止する。これにより当然ながら、自動伴奏装置９による前記伴奏スタイルデータの再生は停止する。
【００８０】
図７は、前記（４）のノートイベント処理の詳細な手順を示すフローチャートである。
【００８１】
同図に示すように、本ノートイベント処理は、
（４１）タイマ８がコード検出タイミング期間内の時間、つまり前記始点ｓＴｉｍｅから前記終点ｅＴｉｍｅまでの間の時間を計時しているときに
（４１ａ）ノートオンイベントが受け付けられた場合の処理（ステップＳ５３，Ｓ５４）
（４１ｂ）ノートオフイベントが受け付けられた場合の処理（ステップＳ５５，Ｓ５６）
（４２）タイマ８がコード検出タイミング期間外の時間を計時しているときに
（４２ａ）ノートオンイベントが受け付けられた場合の処理（ステップＳ５８）
（４２ｂ）ノートオフイベントが受け付けられた場合の処理（ステップＳ５９）
によって構成されている。
【００８２】
そして、上記（４１ａ）の処理は、上記（４２ａ）の処理、つまり、受け付けられたノートオンイベントを前記音源・効果回路１３に出力することでなされる発音処理に、当該ノートオンイベントに対応するノートイベント情報（音高＋入力タイミング）を前記ノートイベントリストＮＬｉｓｔに追加する処理を加えて構成され、上記（４１ｂ）の処理は、上記（４２ｂ）の処理、つまり、受け付けられたノートオフイベントを音源・効果回路１３に出力することでなされる消音処理に、当該ノートオフイベントに対応するノートイベント情報を前記ノートイベントリストＮＬｉｓｔから削除する処理を加えて構成されている。
【００８３】
ここで、前記ステップＳ５４，Ｓ５６の処理について詳しい説明を加えておく。コード検出タイミングの始点ｓＴｉｍｅ以降にノートオンイベントが受け付けられると、ステップＳ５４の処理により、そのノートオンイベントに対応するノートイベント情報がノートイベントリストＮＬｉｓｔに追加される。そして、コード検出タイミングの終点ｅＴｉｍｅ以前にノートオフイベントが受け付けられると、ステップＳ５６の処理により、そのノートオフイベントに対応するノートイベント情報がノートイベントリストＮＬｉｓｔから削除される。したがって、ノートイベントリストＮＬｉｓｔには、始点ｓＴｉｍｅから終点ｅＴｉｍｅまでの期間内に押鍵され、かつ終点ｅＴｉｍｅまで押鍵が続いている鍵に関するノートイベント情報のみが記憶されることになる。なお、終点ｅＴｉｍｅ以降まで押鍵されていても、始点ｓＴｉｍｅよりも前に押鍵された鍵に関するノートイベント情報は、ノートイベントリストＮＬｉｓｔには記憶されない。また、始点ｓＴｉｍｅ以降に押鍵されても、終点ｅＴｉｍｅ以前に離鍵された鍵に関するノートイベント情報は、ノートイベントリストＮＬｉｓｔには記憶されない。そしてこの場合には、始点ｓＴｉｍｅから終点ｅＴｉｍｅまでの期間を短くすれば、ミスタッチされた鍵（押鍵の直後に離鍵された鍵）に関するノートイベント情報は、ノートイベントリストＮＬｉｓｔに記憶されないようにすることができる。
【００８４】
なお、このステップＳ５４，Ｓ５６の処理のうち、ステップＳ５６の処理を省略するようにしてもよい。このステップＳ５６の処理を省略すれば、ノートイベントリストＮＬｉｓｔには、始点ｓＴｉｍｅから終点ｅＴｉｍｅまでの期間内に押鍵されたすべての鍵に関するノートイベント情報が記憶されることになる。
【００８５】
前記（５）のコードの検出タイミング時処理では、まずＣＰＵ５は、前記（１３）のコード検出タイミング、各種ルールおよび各種情報の設定処理によって設定された調検出ルールに従って、調情報を取得し（ステップＳ１７）、取得した調情報を前記調情報Ｋｅｙに記憶する（ステップＳ１８）。
【００８６】
次にＣＰＵ５は、調情報Ｋｅｙに基づいてコード候補を抽出する（ステップＳ１９）。このコード候補の抽出も、前記（１３）のコード検出タイミング、各種ルールおよび各種情報の設定処理によって設定されたコード候補の抽出ルールに従って行われる。
【００８７】
そしてＣＰＵ５は、ステップＳ１９で抽出したコード候補を前記コードリストＣＬｉｓｔに登録する（ステップＳ２０）。
【００８８】
次にＣＰＵ５は、ノートイベントリストＮＬｉｓｔとコードリストＣＬｉｓｔに基づいて、コードを１つ検出（選出）するコード検出処理を実行する（ステップＳ２１）。
【００８９】
図８は、このコード検出処理の詳細な手順を示すフローチャートである。本コード検出処理は、主として
（２１）コードリストＣＬｉｓｔに登録されたコード候補のうちの１つを対象にして、ノートイベントリストＮＬｉｓｔおよびディグリーネーム別ポイントテーブルに基づいてポイント数を算出するポイント算出処理（ステップＳ６３〜Ｓ７１）；
（２２）このポイント算出処理によって算出されたポイント数をコード傾向情報に基づいて調整するポイント調整処理（ステップＳ７２）；
（２３）このポイント調整処理によって調整されたポイント数を、コードリストＣＬｉｓｔ中の当該コード候補に対応付けて記憶させる記憶処理（ステップＳ７３）；
（２４）この記憶処理後のコードリストＣＬｉｓｔから１つのコード候補を検出する検出処理（ステップＳ７５，Ｓ７６）；
によって構成されている。
【００９０】
本コード検出処理が起動されると、まずＣＰＵ５は、ノートイベントリストＮＬｉｓｔおよびコードリストＣＬｉｓｔのうち、少なくとも一方が空、つまり登録された情報がないかどうかを判定する。その判定の結果、少なくとも一方が情報を登録していなければ、ＣＰＵ５は、本コード検出処理を直ちに終了する（ステップＳ６１→リターン、あるいはステップＳ６１→Ｓ６２→リターン）一方、両方とも情報を登録していれば、ＣＰＵ５は、処理を前記（２１）のポイント算出処理に進める（ステップＳ６２→Ｓ６３）。
【００９１】
この（２１）ポイント算出処理では、まずＣＰＵ５は、コードリストＣＬｉｓｔに登録されたコード候補のうち、先頭のコード候補を対象にして、そのコード候補をディグリーネームに変換する（ステップＳ６３）。そしてＣＰＵ５は、変換したディグリーネームを、ディグリーネームを記憶するためにＲＡＭ７上に確保されたディグリーネーム格納領域ＤＮａｍｅ（図示せず）に格納する（ステップＳ６４）。以下、ディグリーネーム格納領域ＤＮａｍｅに格納されたディグリーネームを「ディグリーネームＤＮａｍｅ」という。
【００９２】
次にＣＰＵ５は、ポイント数を加算するためにＲＡＭ７上に確保されたポイント数加算領域ｐｏｉｎｔ（図示せず）を“０”に初期化する（ステップＳ６５）。以下、ポイント数加算領域ｐｏｉｎｔに格納されたポイント数を「ポイント数ｐｏｉｎｔ」という。
【００９３】
次にＣＰＵ５は、イベントリストＮＬｉｓｔに登録されたノートイベント情報のうち、先頭のノートイベント情報を対象にして、その音高情報を抽出する（ステップＳ６６）。そしてＣＰＵ５は、抽出した音高情報を、音高情報を記憶するためにＲＡＭ７上に確保された音高情報格納領域Ｎｏｔｅ（図示せず）に格納する。以下、音高情報格納領域Ｎｏｔｅに格納された音高情報を「音高情報Ｎｏｔｅ」という。
【００９４】
次にＣＰＵ５は、ディグリーネームＤＮａｍｅの示すコードにおける音高情報Ｎｏｔｅの役割を抽出する（ステップＳ６８）。ここで、抽出される「役割」は、前記図３のディグリーネーム別ポイントテーブル中の「ルート」、「３度」、「５度」、「４声目」、「オルタード系」、「テンションノート」および「その他（アヴォイドノートなど）」のうちのいずれかである。なお、この抽出方法に関しては、［先行技術文献］の特許文献１に記載されているが、役割抽出処理として、図９Ａおよび図９Ｂを用いて説明しておく。
【００９５】
図９Ａおよび図９Ｂは、前記ステップＳ６８の役割抽出処理の詳細な手順を示しており、ＣＰＵ５は、まず図９ＡのステップＳ８１で、調情報Ｋｅｙの主音（トニック）およびディグリーネームＤＮａｍｅから、コードのルート、３度および５度（マイナー７フラット５（ｍ７（♭５））およびオーギュメント（ａｕｇ）以外）に当たる音名を取得し、それぞれＲＡＭ７内に設けられた“ルート”レジスタ、“３度”レジスタおよび“５度”レジスタ（いずれも図示せず）に格納する。ここで、ルート、３度および５度の音は、コードタイプに応じて主音から半音距離数が決まっており、たとえば、Ｋｅｙ＝Ｃメジャー調、ＤＮａｍｅ＝ＩＶＭａｊ７の場合、“ルート”＝Ｆ，“３度”＝Ａ，“５度”＝Ｃとなる。
【００９６】
次のステップＳ８２では、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの値に等しいか否かを判定し、“ルート”レジスタの値であれば（Ｓ８２＝ＹＥＳ）、ステップＳ８３で、音高情報Ｎｏｔｅの役割を「ルート」に決定し、そうでなければ（Ｓ８２＝ＮＯ）、ステップＳ８４に進む。ステップＳ８４では、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“３度”レジスタの値に等しいか否かを判定し、“３度”レジスタの値であれば（Ｓ８４＝ＹＥＳ）、ステップＳ８５で、音高情報Ｎｏｔｅの役割を「３度」に決定し、そうでなければ（Ｓ８４＝ＮＯ）、ステップＳ８６に進む。ステップＳ８６では、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“５度”レジスタの値に等しいか否かを判定し、“５度”レジスタの値であれば（Ｓ８６＝ＹＥＳ）、ステップＳ８７で、音高情報Ｎｏｔｅの役割を「５度」に決定し、そうでなければ（Ｓ８６＝ＮＯ）、ステップＳ８８に進む。また、ステップＳ８３，Ｓ８５，Ｓ８７の処理を終えると、ＣＰＵ５は、本役割抽出処理を終了し、図８のコード検出処理のステップＳ６９にリターンする。
【００９７】
ステップＳ８８では、ＣＰＵ５は、ディグリーネームＤＮａｍｅのコードタイプが「ｍ７（♭５）」（マイナー７フラット５）であるか否かを判定する。ここで、コードタイプが「ｍ７（♭５）」であれば（Ｓ８８＝ＹＥＳ）、ステップＳ８９に進んで、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの音名に対して減５度（♭５ｔｈ）であるか否かを判定し、減５度であれば（Ｓ８９＝ＹＥＳ）、ステップＳ９０で、音高情報Ｎｏｔｅの役割を「オルタード系」に決定する。一方、コードタイプが「ｍ７（♭５）」でなければ（Ｓ８８＝ＮＯ）、ステップＳ９１に進んで、ＣＰＵ５は、ディグリーネームＤＮａｍｅのコードタイプが「ａｕｇ」（オーギュメント）であるか否かを判定する。ここで、コードタイプが「ａｕｇ」であれば（Ｓ９１＝ＹＥＳ）、ステップＳ９２に進み、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの音名に対して増５度（♯５ｔｈ）であるか否かを判定し、増５度であれば（Ｓ９２＝ＹＥＳ）、ステップＳ９０で、音高情報Ｎｏｔｅの役割を「オルタード系」に決定する。そして、ステップＳ９０の処理を終えると、ＣＰＵ５は、本役割抽出処理を終了し、図８のコード検出処理のステップＳ６９にリターンする。
【００９８】
ステップＳ９１で、コードタイプが「ａｕｇ」でないと判定したときは（Ｓ９１＝ＮＯ）、図９ＢのステップＳ９３に進み、ＣＰＵ５は、ディグリーネームＤＮａｍｅのコードタイプが「６」、「６ｓｕｓ４」（６サスペンデッド４）または「ｍ６」（マイナー６）であるか否かを判定する。ここで、コードタイプが「６」、「６ｓｕｓ４」および「ｍ６」のうちのいずれかであれば（Ｓ９３＝ＹＥＳ）、ステップＳ９４に進んで、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの音名に対して長６度（６ｔｈ）であるか否かを判定し、長６度であれば（Ｓ９４＝ＹＥＳ）、ステップＳ９５で、音高情報Ｎｏｔｅの役割を「４声目」に決定する。一方、ステップＳ９３で、コードタイプが「６」、「６ｓｕｓ４」および「ｍ６」のいずれでもないと判定したときは（Ｓ９３＝ＮＯ）、ステップＳ９６に進み、ＣＰＵ５は、ディグリーネームＤＮａｍｅのコードタイプが「ＩＭａｊ７」（１度・メジャー７）、「ＩＶｍＭａｊ７」（４度・マイナーメジャー７）などのＭａｊ７（メジャー７）系であるか否かを判定する。ここで、コードタイプがＭａｊ７系であれば（Ｓ９６＝ＹＥＳ）、ステップＳ９７に進んで、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの音名に対して長７度（メジャー７ｔｈ）であるか否かを判定し、長７度であれば（Ｓ９７＝ＹＥＳ）、ステップＳ９５で、音高情報Ｎｏｔｅの役割を「４声目」に決定する。一方、ステップＳ９６で、コードタイプがＭａｊ７系でないと判定したときは（Ｓ９６＝ＮＯ）、ステップＳ９８に進み、ＣＰＵ５は、ディグリーネームＤＮａｍｅのコードタイプが「ＩＩｍ７」（２度・マイナー７）、「Ｖ７」（５度・セブン）、ＶＩＩｓｕｓ４（７度・セブンサスペンデッド４）などのｍ７（マイナー７）系または７ｔｈ（セブンス）系であるか否かを判定する。ここで、コードタイプがｍ７系または７ｔｈ系であれば（Ｓ９８＝ＹＥＳ）、ステップＳ９９に進み、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が“ルート”レジスタの音名に対して短７度（７ｔｈ）であるか否かを判定し、短７度であれば（Ｓ９９＝ＹＥＳ）、ステップＳ９５で、音高情報Ｎｏｔｅの役割を「４声目」に決定する。そして、ステップＳ９５の処理を終えると、ＣＰＵ５は、本役割抽出処理を終了し、図８のコード検出処理のステップＳ６９にリターンする。
【００９９】
図９ＡのステップＳ８９で、減５度でないと判定したとき（Ｓ８９＝ＮＯ）、ステップＳ９２で、増５度でないと判定したとき（Ｓ９２＝ＮＯ）、図９ＢのステップＳ９４で、長６度でないと判定したとき（Ｓ９４＝ＮＯ）、ステップＳ９７で、長７度でないと判定したとき（Ｓ９７＝ＮＯ）、ステップＳ９８で、コードタイプがｍ７系でも７ｔｈ系でもないと判定したとき（Ｓ９８＝ＮＯ）、またはステップＳ９９で、短７度でないと判定したとき（Ｓ９９＝ＮＯ）は、ステップＳ１００に進み、ＣＰＵ５は、音高情報Ｎｏｔｅの音名が現在の調情報ＫｅｙにおけるディグリーネームＤＮａｍｅのコードに対しテンションノートであるか否かを判定する。ここで、テンションノートは、コードタイプに応じて根音からの半音距離数が決まっており（ルートに対して、♭９ｔｈ、９ｔｈ、１１ｔｈ、♯１１ｔｈ、♭１３ｔｈ、１３ｔｈのいずれか１〜３）、たとえば、Ｋｅｙ＝Ｃメジャー調、ＤＮａｍｅ＝IVMaj7の場合、Ｇ，Ｂ，Ｄの音である。ステップＳ１００で、テンションノートと判定したときは（Ｓ１００＝ＹＥＳ）、ステップＳ１０１で、ＣＰＵ５は、音高情報Ｎｏｔｅの役割を「テンションノート」に決定し、テンションノートでないと判定したときは（Ｓ１００＝ＮＯ）、ステップＳ１０２で、ＣＰＵ５は、音高情報Ｎｏｔｅの役割を「その他」に決定する。そして、ステップＳ１０１，Ｓ１０２の処理を終えると、ＣＰＵ５は、本役割抽出処理を終了し、図８のコード検出処理のステップＳ６９にリターンする。
【０１００】
本役割抽出処理の後、ＣＰＵ５は、調情報Ｋｅｙによって示される調のディグリーネーム別ポイントテーブル（調情報Ｋｅｙ別のポイントテーブル）を参照し、抽出された役割に該当するポイント値を取得し、ポイント数ｐｏｉｎｔに加算する（ステップＳ６９）。現時点では、ポイント数ｐｏｉｎｔは“０”であるので、ステップＳ６９で取得されたポイント値がそのまま、ポイント数ｐｏｉｎｔとなる。
【０１０１】
そしてＣＰＵ５は、音高情報ＮｏｔｅがノートイベントリストＮＬｉｓｔ中の最後のノートイベント情報の音高情報になるまで、対象となるノートイベント情報を変更しながら、前記ステップＳ６６〜Ｓ６９の処理を繰り返し（ステップＳ７０→Ｓ６６）、音高情報ＮｏｔｅがノートイベントリストＮＬｉｓｔ中の最後のノートイベント情報の音高情報になってから処理がステップＳ７０に進むと、処理を次のステップＳ７１に進める。
【０１０２】
ステップＳ７１では、ＣＰＵ５は、調情報Ｋｅｙによって示される調のディグリーネーム別ポイントテーブル（調情報Ｋｅｙ別のポイントテーブル）を参照し、ディグリーネームＤＮａｍｅの示すコードの優先ポイントを取得し、ポイント数ｐｏｉｎｔに加算する。優先ポイントは、コード優先ポイントテーブル（Ｐｒｉｏｒ）に記載されているが、コード優先ポイントテーブル（Ｐｒｉｏｒ）は、前述のようにディグリーネーム別ポイントテーブルに含まれているので、ディグリーネーム別ポイントテーブル、つまり調情報Ｋｅｙ別のポイントテーブルから取得する。
【０１０３】
次にＣＰＵ５は、処理を前記（２２）のポイント調整処理に進める。この（２２）ポイント調整処理では、ＣＰＵ５は、コード傾向情報に基づいて、次のようにしてポイント数ｐｏｉｎｔを調整する。つまり、
（２２ａ）ディグリーネームＤＮａｍｅの示すコードが
コード傾向情報の「出現し易いディグリーネーム」に登録されている場合：出現し易さに応じた所定値をポイント数ｐｏｉｎｔに反映；
コード傾向情報の「出現し難いディグリーネーム」に登録されている場合：出現し難さに応じた所定値をポイント数ｐｏｉｎｔに反映；
（２２ｂ）ディグリーネームＤＮａｍｅの示す度数が
コード傾向情報の「出現し易いコードルート（度数）」に登録されている場合：出現し易さに応じた所定値をポイント数ｐｏｉｎｔに反映；
コード傾向情報の「出現し難いコードルート（度数）」に登録されている場合：出現し難さに応じた所定値をポイント数ｐｏｉｎｔに反映；
（２２ｃ）ディグリーネームＤＮａｍｅの示すコードタイプが
コード傾向情報の「出現し易いコードタイプ」に登録されている場合：出現し易さに応じた所定値をポイント数ｐｏｉｎｔに反映；
コード傾向情報の「出現し難いコードタイプ」に登録されている場合：出現し難さに応じた所定値をポイント数ｐｏｉｎｔに反映；
（２２ｄ）ディグリーネームＤＮａｍｅの示すコードの機能が
コード傾向情報の「出現し易い機能」に登録されている場合：出現し易さに応じた所定値をポイント数ｐｏｉｎｔに反映；
コード傾向情報の「出現し難い機能」に登録されている場合：出現し難さに応じた所定値をポイント数ｐｏｉｎｔに反映；
のようにして調整する。ここで「反映」とは、「出現し易い」ものについてはポイント数ｐｏｉｎｔを増大させ、「出現し難い」ものについてはポイント数ｐｏｉｎｔを減少させるように調整することをいう。図４（ｃ）のコード傾向情報では、「出現し易い」ものには出現割合が百分率（％）で記載され（ただし、「機能」に属するものは１つのみであるので、出現割合は記載されていないが、１００％とすればよい）、「出現し難い」ものには出現割合が記載されていない。ポイント数ｐｏｉｎｔは、このコード傾向情報を用いて、たとえば次のように調整する。すなわち、
「出現し易い」ものに該当する場合：ｐｏｉｎｔ＋Ｔｍ×Ｒｍｎ／１００
「出現し難い」ものに該当する場合：ｐｏｉｎｔ−Ｋｍ
ただし、
Ｔｍ  ：ｍ番目の項目（「ディグリーネーム」、「コードルート」、「コードタイプ」および「機能」のうちのいずれか）で加算する総ポイント数；
Ｒｍｎ：ｍ番目の項目に属するｎ番目の要素であって、ディグリーネームＤＮａｍｅによって示されるものの出現割合（％）；
Ｋｍ  ：ｍ番目の項目で減算するポイント数；
である。この場合、前記（２２ａ）〜（２２ｄ）の「出現し易い」ものにおける「所定値」が“Ｔｍ×Ｒｍｎ／１００”であり、「出現し難い」ものにおける「所定値」が“Ｋｍ”である。その結果、値ｐｏｉｎｔ＋Ｔｍ×Ｒｍｎ／１００および値ｐｏｉｎｔ−Ｋｍは、コードの出現可能性の程度、すなわちコードの出現し易さおよびし難さの程度を表す指標となる。
【０１０４】
なお、ディグリーネームＤＮａｍｅの示すコードが項目「ディグリーネーム」に属するものに該当する場合、当該ディグリーネームＤＮａｍｅの示す度数およびコードタイプはそれぞれ、項目「コードルート」および「コードタイプ」に属するものにも該当するが、この場合には、ポイント数ｐｏｉｎｔを重複して調整するようにしてもよいし、１項目だけ調整し、それ以外の項目については省略する（調整しない）ようにしてもよい。また項目「機能」は、図４（ｃ）の例では、単独の機能が示されているが、これに限らず、複数の機能の進行としてもよい。この場合には、検出コードＣｈｏｒｄと調情報Ｋｅｙの履歴を記憶しておく必要がある。
【０１０５】
さらに「所定値」は、出現割合に基づいて算出する方法に限らず、加算すべきポイント数を各項目に属する要素毎に対応付けておき、要素が決まれば、その要素に対応するポイント数をそのまま加算する方法を採用してもよい。具体的には、ある項目では、「出現し易い」順位が第１位のものは＋２０ポイント、第２位のものは＋１０ポイント、…、「出現し難い」ものは一律に−１０ポイントと対応付けておく。もちろん、「出現し難い」ものにも順位を付け、その順位に従ってポイント数を変えるようにしてもよい。また「所定値」の反映方法は、加算／減算に限らず、乗算／除算であってもよい。
【０１０６】
次にＣＰＵ５は、前記（２３）の記憶処理に進み、このようにして調整されたポイント数ｐｏｉｎｔを、コードリストＣＬｉｓｔ中のディグリーネームＤＮａｍｅの示すコードに対応付けて記憶する。
【０１０７】
そしてＣＰＵ５は、ディグリーネームＤＮａｍｅの示すコードがコードリストＣＬｉｓｔ中の最後のコードになるまで、対象となるコードを変更しながら、前記（２１）〜（２３）の処理を繰り返し（ステップＳ７４→Ｓ６３）、ディグリーネームＤＮａｍｅの示すコードがコードリストＣＬｉｓｔ中の最後のコードになってから処理がステップＳ７４に進むと、処理を前記（２４）の検出処理に進める。
【０１０８】
この（２４）検出処理では、ＣＰＵ５は、コードリストＣＬｉｓｔ中の各コード候補に対応付けて記憶されたポイント数ｐｏｉｎｔが最高値のコード候補を１つ検出し（ステップＳ７５）、検出コードＣｈｏｒｄとした（ステップＳ７６）後、本コード検出処理を終了する。なおステップＳ７５で、ポイント数ｐｏｉｎｔが最高値となるコード候補が複数ある場合にも、１つのコード候補を検出するが、その場合には、たとえば、検出頻度が最も高いものや、コード優先ポイントの最も高いものなどを追加条件として、１つのコード候補を決定すればよい。
【０１０９】
図５Ｂに戻り、ＣＰＵ５は、検出コードＣｈｏｒｄを前記自動伴奏装置９に出力する（ステップＳ２２）。
【０１１０】
次にＣＰＵ５は、コード検出タイミングの設定内容（設定ルール）に基づいて、次のコード検出期間の始点および終点を算出して、それぞれ始点ｓＴｉｍｅおよび終点ｅＴｉｍｅを更新し（ステップＳ２３）、ノートイベントリストＮＬｉｓｔおよびコードリストＣＬｉｓｔを初期化（クリア）する（ステップＳ２４）。
【０１１１】
なお本実施の形態では、演奏曲の選択は、本実施の形態のコード検出装置に含まれる表示装置１０上に表示された曲名リストからいずれかの曲名を、操作子（設定操作子２または演奏操作子１）を操作したり、タッチ操作したりして選択することで行うようにしたが、コード検出装置本体とは別体で設けた表示装置を有線または無線でコード検出装置本体と接続し、この表示装置によって行うようにしてもよい。また、ダイレクトに演奏曲を選定できるボタンなどの操作子や曲リストが冊子などでユーザの手元にあり、ユーザが、たとえば演奏曲の番号の回数ほど所定の操作子を操作することにより選曲できる構成を採用すれば、表示画面がなくても選曲操作は可能である。つまり、選曲ができれば、表示装置１０やこれに相当するものは、本発明にとって必須の構成ではない。
【０１１２】
また本実施の形態では、ユーザの演奏によって入力された演奏データに基づいてコード候補を抽出し、抽出したコード候補の中からコードを検出するようにしたが、これに限らず、コード候補を抽出せずに、いきなりコードを検出するようにしてもよい。この場合のコードの検出方法としては、たとえば、コードの構成音に該当する演奏入力音の割合が最も高いコードを検出したり、その時点での調のダイアトニック・コードを優先して検出したりするなどの方法があり、この方法に、本発明のコード傾向情報に基づいたコード検出を適用してもよい。たとえば、ある検出コードがコード傾向情報に適合するかどうか判断し、適合しない場合には別のコードを検出して適合を判定する。あるいは、対象の曲に対応するコード情報（複数）が参照可能であった場合、演奏の調に合わせて対応するコードを検出することも可能である。また、コード検出時に前回検出されたコードからのつながりを考慮するようにしてもよい。
【０１１３】
また本実施の形態では、コードの検出のために、予め決めた期間内のユーザの演奏によって入力された演奏データを用いたが、予め決めたタイミングにおける演奏データのみを用いるようにしてもよい。この場合、予め決めたタイミングにおいて、ユーザによって押鍵操作されている鍵に関する演奏データを入力して、入力した演奏データをコードの検出のために用いるようにする。
【０１１４】
また本実施の形態では、コード傾向情報として、図４（ｃ）に示すように、「ディグリーネーム」、「コードルートの度数」、「コードタイプ」および「機能」からなる４つのタイプに関して記憶しておき、すべてのタイプのコード傾向情報を利用するようにした。しかし、これに代えて、前記４つのタイプのうちの少なくとも１つのタイプのコード傾向情報のみを記憶しておき、記憶されているタイプのコード傾向情報を用いるようにしてもよい。
【０１１５】
さらに本実施の形態では、使用するコード傾向情報は、曲毎に設定されていたが、これに限らず、ユーザがその都度設定できるようにしてもよい。また本実施の形態では、演奏設定データ内には、コード傾向情報の記憶場所が記載されるようにしたが、これに限らず、コード傾向情報そのものが記載（記憶）されるようにしてもよい。コード傾向情報は、本実施の形態では、演奏曲の最初から最後まで適用されるが、曲中の区間毎に種類の異なるものが設定されるようにしてもよい。
【０１１６】
各曲に対応する演奏設定データには、本実施の形態では前述のように、伴奏スタイルデータ、メロディ音色、テンポなどが記載されるが、一曲分のコード進行情報も記憶するようにしてもよいし、ユーザ演奏に伴うコード検出の結果を記憶してもよい。その場合、記憶されたコード進行情報に対し、ユーザ演奏の該当箇所のコードが有力候補になるようにコード検出時に制御するとよい。また、伴奏スタイルデータやメロディ音色などの演奏設定データは曲毎に複数組用意されていてもよい。その場合は、どの組の演奏設定データを使用するかユーザが設定できるようになっていてもよいし、たとえば組によってテンポの速さが異なるようなときには、ユーザの演奏レベルを設定もしくは過去の演奏から判定して自動的に演奏設定データの組が選択されるようになっていてもよい。演奏設定データは、コード検出装置本体に記憶されていてもよいし、コード検出装置あるいはコード検出プログラムが動作する装置とは別の記憶媒体に記憶されていてもよい。もしくは、ネットワーク経由で参照することができてもよい。
【０１１７】
演奏曲に適したコード進行情報は、演奏設定データの一部として記憶されていない場合は、何らかの方法で取得すればよい。たとえば、装置内の記憶部（記憶装置１１やＲＯＭ６、ＲＡＭ７）やネットワーク経由でサーバなどから演奏曲で利用可能なコンテンツデータを探しだし、コード進行情報が記憶されていれば参照するようにする。あるいは、演奏曲で利用可能なコンテンツデータのコードパートやベースパートを分析し、コード進行情報を取得することも考えられる。
【０１１８】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１１９】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２０】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【０１２１】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０１２２】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【０１２３】
１…演奏操作子（演奏データ取得手段），２…設定操作子（曲情報取得手段），５…ＣＰＵ（演奏データ取得手段、コード傾向情報取得手段、曲情報取得手段、コード検出手段、抽出手段），１０…表示装置（曲情報取得手段）
【図１】
2014194536.tif 000003
【図２】
2014194536.tif 000004
【図３】
2014194536.tif 000005
【図４】
2014194536.tif 000006
【図５Ａ】
2014194536.tif 000007
【図５Ｂ】
2014194536.tif 000008
【図６】
2014194536.tif 000009
【図７】
2014194536.tif 000010
【図８】
2014194536.tif 000011
【図９Ａ】
2014194536.tif 000012
【図９Ｂ】
2014194536.tif 000013