"曲のメロディを演奏する演奏手段と、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行うリアルタイムコード付け手段と、前記演奏手段によるメロディ演奏終了後、前記リアルタイムコード付け手段にて付与されたコードをノンリアルタイムで修正するノンリアルタイムコード修正手段と、を有する自動コード修正装置。前記ノンリアルタイムコード修正手段は、前記曲の所定区間ごとに、そこに含まれるメロディ音の中で前記付与されたコード以外の他のコードが成立する音が存在するか否か検証し、存在する場合に前記所定区間を修正箇所として指定するコード構成音検証手段と、曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士の楽式の一致度を検証するフレーズ区切り検証手段と、前記コード構成音検証手段及びフレーズ区切り検証手段の検証結果に基づいて、前記付与されたコードを修正するコード修正手段と、を有する請求項1に記載の自動コード修正装置。前記ノンリアルタイムコード修正手段はさらに、前記曲の所定の区間に付与されているキーが、前記所定の区間のメロディの最終音に基づいて定められるキーと一致するか否かを検証するキー判定検証手段をさらに有する請求項2に記載の自動コード修正装置。前記ノンリアルタイムコード修正手段により修正された各コードのスケールと、対応する区間の前記メロディのスケールとが一致するか否か判定し、一致していない場合は当該修正されたコードをさらに訂正するコード訂正手段をさらに有する請求項1に記載の自動コード修正装置。前記リアルタイムコード付け手段は、前記曲データ中の所定の拍に属する音高、当該拍の直前の拍に属する音高及び当該直前の拍に付与されたコードに基づいて前記所定の拍に付与すべきコードを決定する請求項1に記載の自動コード修正装置。前記コード構成音検証手段は、前記曲の小節ごとに、当該小節に含まれるメロディ音のうち、前記付与されたコードの構成音以外の他の音が存在するか否かを判別する第1の判別手段と、この第1の判別手段により他の音が存在すると判別された場合に、当該他の音が装飾音であるか否かを判別する第2の判別手段と、この第2の判別手段により装飾音と判別された場合にはこの装飾音を除いた音に基づくコードと前記小節に付与されたコードとを比較するとともに、装飾音と判別されない場合には前記他の音に基づくコードと前記小節に付与されたコードとを比較する比較手段と、この比較手段により両者のコードが一致しないと判断された場合に、前記小節の区間を修正箇所と指定する修正箇所指定手段と、を有する請求項2に記載の自動コード修正装置。前記第1の判別手段は、前記曲の小節毎に、当該小節に含まれるメロディ音のうち音長の長い3つの音を抽出するとともに、これら3つの音が前記小節に付与されているコードの構成音か判別し、コード構成音と判別した場合は、前記3つの音をコード構成音とするコード構成音判別手段を有する請求項6に記載の自動コード修正装置。前記フレーズ区切り検証手段は、前記曲を4小節毎、8小節毎及び2小節毎に区切る請求項2に記載の自動コード修正装置。前記曲データは、さらにリズム音を含み、前記フレーズ区切り検証手段は、楽式として前記フレーズ同士のメロディ音の音高及びリズム音を比較し、各フレーズを、音高及びリズム音の両方が一致する場合、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類する分類手段と、を有する請求項2に記載の自動コード修正装置。前記コード修正手段は、前記コード構成音検証手段にて修正箇所と判断された曲の区間がある場合に、当該区間における前記他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別するカデンツ判定手段と、このカデンツ判定手段により終結していると判別された場合は、前記付与されたコードを前記他のコードに訂正する訂正手段と、を有する請求項2に記載の自動コード修正装置。前記コード修正手段はさらに、前記カデンツ判定手段により終結していないと判別された場合は、前記区間に含まれるメロディ音によりキーを確定し、当該確定されたキーに基づいて新たに付与されたコードを再度前記カデンツ判定手段に供給するコード生成手段を有する請求項10に記載の自動コード修正装置。前記コード修正手段は、前記フレーズ区切り検証手段にて、音高及びリズム音の両方が一致する場合に分類されたフレーズ夫々に付与されたコードを同一のコードに訂正し、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類されたフレーズ夫々に付与されたコードの中で異なる部分のコード同士の機能が同一の場合は、当該異なる部分のコードを同一とする請求項2に記載の自動コード修正装置。メロディ音及び当該メロディ音に対して付与されたコードからなる曲データを取得する曲取得手段と、この取得された曲の各小節に、当該小節に属するメロディ音に基づき、前記小節に付与されているコードを検証するコード構成音検証手段と、前記曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士に付与されたコードが一致しない場合に、両者の楽式の一致度を検証するフレーズ区切り検証手段と、前記コード構成音検証手段及びフレーズ区切り検証手段の検証結果に基づいて、前記付与されたコードを修正するコード修正手段と、を有する自動コード修正装置。コンピュータに実行させる、曲のメロディを演奏する演奏ステップと、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行うリアルタイムコード付けステップと、前記演奏ステップによるメロディ演奏終了後、前記リアルタイムコード付け手段にて付与されたコードをノンリアルタイムで修正するノンリアルタイムコード修正ステップと、を含む自動コード修正プログラム。コンピュータに実行させる、メロディ音及び当該メロディ音に対して付与されたコードからなる曲データを取得する曲取得ステップと、この取得された曲の各小節に、当該小節に属するメロディ音に基づき、前記小節に付与されているコードを検証するコード構成音検証ステップと、前記曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士に付与されたコードが一致しない場合に、両者の楽式の一致度を検証するフレーズ区切り検証ステップと、前記コード構成音検証ステップ及びフレーズ区切り検証ステップの検証結果に基づいて、前記付与されたコードを修正するコード修正ステップと、を含む自動コード修正プログラム。しかしながら、リアルタイムでコード付けを行うと、経験則から作成されたデータベースを利用しながらある程度決め付けることになり、単純な曲では精度よくリアルタイムコード付けできても、装飾音や借用和音が使われる場合には、リアルタイムコード付けの精度が劣る場合があった。本発明は、入力されたメロディに対してリアルタイムでコード付けを行った後、ノンリアルタイムでコードを修正することで、コード付けの精度をより高めることができる自動コード修正装置を提供することを目的とする。また本発明は、メロディに予め付与されたコードを、そのメロディにより適合するコードに修正することを目的とする。上記目的を達成するため、本発明の一態様の自動コード修正装置は、曲のメロディを演奏する演奏手段と、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行うリアルタイムコード付け手段と、前記演奏手段によるメロディ演奏終了後、前記リアルタイムコード付け手段にて付与されたコードをノンリアルタイムで修正するノンリアルタイムコード修正手段と、を有する。また、本発明の一態様の自動コード修正装置は、メロディ音及び当該メロディ音に対して付与されたコードからなる曲データを取得する曲取得手段と、この取得された曲の各小節に、当該小節に属するメロディ音に基づき、前記小節に付与されているコードを検証するコード構成音検証手段と、前記曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士に付与されたコードが一致しない場合に、両者の楽式の一致度を検証するフレーズ区切り検証手段と、前記コード構成音検証手段及びフレーズ区切り検証手段の検証結果に基づいて、前記付与されたコードを修正するコード修正手段と、を有する。本発明によれば、コード付けの精度をより高めることができる自動コード修正装置を提供することが可能となる。以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本実施の形態にかかる自動コード修正装置を適用した電子楽器の外観を示す図である。図1に示すように、本実施の形態にかかる電子楽器10は、鍵盤11を有する。また、鍵盤11の上部には、音色の指定、自動伴奏の開始終了、リズムパターンの指定などを行なうためのスイッチ符号12、13参照や、リアルタイムでのコード付けが終了した後にノンリアルタイムでのコード修正を開始するためのノンリアルタイムコード付け修正スイッチ14、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コード名などを表示する表示部15を有する。本実施の形態にかかる電子楽器10は、たとえば、61個の鍵C2~C7を有する。また、電子楽器10は、自動伴奏をオンする自動伴奏モード、及び、自動伴奏をオフにする通常モードの2つの演奏モードのうち、何れかの下での演奏が可能である。図2は、本発明の実施の形態にかかる自動コード修正装置の構成を示すブロックダイヤグラムである。図2に示すように、本実施の形態にかかる自動コード修正装置10は、CPU21、ROM22、RAM23、サウンドシステム24、スイッチ群25、鍵盤11及び表示部15を備える。CPU21は、電子楽器10全体の制御、鍵盤11の鍵の押鍵やスイッチ群25を構成するスイッチたとえば、図1の符号12、13、14参照の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム24の制御、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターン及びコード名にしたがった自動伴奏の演奏など、種々の処理を実行する。ROM22は、CPU21に実行させる種々の処理、たとえば、スイッチの操作、鍵盤の何れかの鍵の押鍵、押鍵に応じた楽音の発音、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターン及びコード名にしたがった自動伴奏の演奏などのプログラムを記憶する。また、ROM22は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリア、及び、種々の自動伴奏パターンを示すデータ自動伴奏データを格納した自動伴奏パターンエリアを有する。RAM23は、ROM22から読み出されたプログラムや、処理の過程で生じたデータを記憶する。なお、本実施の形態において、自動伴奏パターンは、メロディ音及びオブリガート音を含むメロディ自動伴奏パターン、コード名ごとの構成音を含むコード自動伴奏パターン、並びに、ドラム音を含むリズムパターンを有する。たとえば、メロディ自動伴奏パターンのデータのレコードは、楽音の音色、音高、発音タイミング発音時刻、音長などを含む。コード自動伴奏パターンのデータのレコードは、上記情報に加えて、コード構成音を示すデータを含む。また、リズムパターンのデータは、楽音の音色、発音タイミングを含む。サウンドシステム24は、音源部26、オーディオ回路27及びスピーカ28を有する。音源部26は、たとえば、押鍵された鍵についての情報或いは自動伴奏パターンについての情報をCPU21から受信すると、ROM22の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部26は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路27は、楽音データをD/A変換して増幅する。これによりスピーカ28から音響信号が出力される。本実施の形態にかかる電子楽器10は、通常モードの下においては、鍵盤11の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器10は、自動伴奏スイッチ図示せずが操作されることにより、自動伴奏モードとなる。自動伴奏モードの下では、鍵の押鍵により、その鍵の音高の楽音が発生する。また、押鍵された鍵の音高に基づいてコード名が決定され、そのコード名のコード構成音を含む自動伴奏パターンにしたがった楽音が発生する。なお、自動伴奏パターンは、ピアノやギターなど音高の変化を伴うメロディ自動伴奏パターン、コード自動伴奏パターンと、バスドラム、スネアドラム、シンバルなど音高の変化を伴わないリズムパターンとを含む。以下、電子楽器10が、自動伴奏モードの下で動作する場合について説明する。以下、本実施の形態にかかる電子楽器10において実行される処理についてより詳細に説明する。図3は、本実施の形態にかかる自動コード修正装置において実行されるメインフローの例を示すフローチャートである。なお、図示しないが、メインフローの実行中に、所定の時間間隔で、割込カウンタのカウンタ値をインクリメントするタイマインクリメント処理も実行される。図3に示すように、電子楽器10のCPU21は、電源が投入されると、RAM23中のデータや、表示部15の画像のクリアを含むイニシャル処理初期化処理を実行するステップS1。イニシャル処理ステップS1が終了すると、CPU21は、スイッチ群25を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行するステップS2。たとえば、スイッチ処理ステップS2においては、音色指定スイッチや、自動伴奏パターンの種別の指定スイッチ、自動伴奏パターンのオンオフの指定スイッチなど、種々のスイッチの操作が検出される。自動伴奏パターンがオンとなったときには、CPU21は、演奏モードを、自動伴奏モードに切り換える。演奏モードを示すデータは、RAM23の所定の領域に指定される。音色や自動伴奏パターンの種別を示すデータも、同様に、RAM23の所定の領域に格納される。次いで、CPU21は、鍵盤処理を実行するステップS3。図4は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。鍵盤処理において、CPU21は、鍵盤11の鍵を走査する。鍵の走査結果であるイベント鍵オン或いはオフは、そのイベントが生じた時刻の情報とともに、RAM23に一時的に記憶される。CPU21は、RAM23に記憶された鍵の走査結果を参照してステップS11、ある鍵についてイベントが発生しているか否かを判断するステップS12。ステップS12でYesと判断された場合には、CPU11は、その発生したイベントが鍵オンであるか否かを判断するステップS13。ステップS13でYesと判断された場合には、CPU21は、当該鍵オンがあった鍵について発音処理を実行するステップS14。発音処理においては、CPU21は、RAM23に記憶されていたメロディ鍵用の音色データ、及び、鍵の音高を示すデータを読み出してRAM23に一時的に記憶する。後述する音源発音処理図3のステップS6において、音色や音高を示すデータは音源部26に与えられる。音源部26は、音色及び音高を示すデータにしたがって、ROM22の波形データを読み出して、所定の音高の楽音データを生成する。これにより、スピーカ28から所定の楽音が発生する。その後、CPU21は、鍵オンがあった鍵についての音高情報たとえば鍵番号及び押鍵タイミングたとえば押鍵時刻をRAM23に格納するステップS15。押鍵タイミングは、割り込みカウンタのカウンタ値に基づいて算出することができる。ステップS13でNoと判断された場合には、発生イベントが鍵オフであったことになる。したがって、CPU21は、鍵オフになった鍵についての消音処理を実行するステップS16。消音処理においては、CPU21は、発生イベントから消音すべき楽音の音高を示すデータを生成し、RAM23に一時的に記憶する。この場合にも、後述する音源発音処理ステップS6において、消音すべき楽音の音高を示すデータが、音源部26に与えられる。音源部26は、与えられたデータに基づいて、所定の楽音を消音する。その後、CPU21は、鍵オフがあった鍵について、押鍵されていた時間押鍵時間をRAM23に格納するステップS17。CPU21は、全ての鍵イベントについて処理が終了したかを判断するステップS18。ステップS18でNoと判断された場合には、ステップS12に戻る。鍵盤処理図3のステップS3が終了すると、CPU21は、コード判定処理を実行するステップS4。図5は、本実施の形態にかかるコード判定処理の例を示すフローチャートである。本実施の形態においては、概略的には、現在発音されているメロディ音を、現在メロディ音CurrentMelodyCM、それより1つ前に発音されているメロディ音を、先行メロディ音PreviousMelodyPM、現在より一つ前に演奏されていたコード名を、先行コード名PreviousCHordnamePreCHとして、現在メロディ音CM、先行メロディ音PM及び先行コード名PreCHに基づいて、新たに発音すべき現在コード名CurrentCHordnameCurCHを決定している。なお、本実施の形態においては、楽曲の調性をハ長調CMaj或いはイ短調Aminとして、コード名については、IMaj、IImなど、主音に対する度数で表し、そのデータをRAM23などに記憶している。他の調性の場合には、当該調性のルート音と、C或いはAの音との音高差に基づいて、ルート音を伴うコード名を得ることが可能である。なお、楽曲の調性は、ハ長調CMaj或いはイ短調Aminとして予め定められている場合に限られず、他の長調、短調を含めてリアルタイムに決定してもよい。この場合、決定される調の種類は、1つ以上となる。さらに、決定された調は、RAM23に記憶される。ただし、押鍵が何拍目に行なわれたかなど、押鍵された時間的な位置や、押鍵が拍の頭であるか否か、或いは、複数の押鍵による音型持続、順次進行、跳躍などに基づいて、上記現在メロディ音CM及び先行メロディ音PMを決定すべき場合がある。つまり、現実に現在押鍵されている鍵以外の押鍵について現在メロディ音CMとすべき場合や、現在押鍵された鍵の1つ前に押鍵された鍵以外の押鍵について先行メロディ音PMとすべき場合がある。以下、コード判定処理において、ステップS24~30は、主として、現在メロディ音CM及び先行メロディ音PMの決定に関する。引き続いて実行されるステップS31が、現在メロディ音CM、先行メロディ音PM及び先行コード名PreCHに基づいて、具体的に現在コード名CurCHを決定する処理となる。まず、CPU21は、現在時刻が属する拍の情報及び押鍵情報鍵オンの時刻や鍵オフまでの時間を特定して、現在の拍において押鍵された鍵を特定し、かつ、現在時刻が属する拍の一つ前の区間前拍区間において、押鍵されていた鍵の情報を取得するステップS21。ステップS21において、現在の拍における押鍵された鍵の情報が、現在メロディ音CMの初期値、前拍区間の先頭で押鍵された鍵の情報が、先行メロディ音PMの初期値となる。次いで、CPU21は、拍の情報及び押鍵情報に基づいて、現在時刻が属する拍の先頭に押鍵中の鍵が存在しているかを判断するステップS22。ステップS23でNoと判断された場合には、コード名判定処理が終了する。ステップS22でYesと判断された場合には、CPU21は、現在コード名CurCHを、先行コード名PreCHにコピーするステップS23。CPU21は、後述するコードテーブルを指定するテーブル指定情報を、第2のコードテーブルを指定する情報に設定するステップS24。コードテーブルには、主として押鍵が1拍目であるときに用いる第1のコードテーブルと、それ以外のときに用いる第2のコードテーブルが含まれ、それぞれROM22に格納されている。テーブル指定情報は、第1のコードテーブル或いは第2のコードテーブルの何れを用いるかを示す情報であり、RAM23に格納される。次いで、押鍵された鍵の時間的位置、つまり、鍵が何拍目に押鍵されたかを判断するステップS25、26、28。押鍵が1拍目である場合ステップS25でYes或いは押鍵が3拍目である場合ステップS26でYesには、CPU21は、1拍目3拍目対応ノート決定処理を実行するステップS27。押鍵が2拍目である場合ステップS28でYesには、2拍目対応ノート決定処理を実行するステップS29。また、ステップS508でNoと判断された場合、つまり、押鍵が4拍目である場合には、4拍目対応ノート決定処理を実行するステップS30。本実施の形態においては、楽曲は4分の4拍子であり、1小節が4拍で構成される。押鍵がn拍目であることは、押鍵のタイミングが、第n拍の先頭以降で、第n1拍の先頭よりも時間的に早いことを意味している。楽曲の構成要素には拍子及び拍という概念がある。また、拍子においては拍ごとに重みがあり、上記拍の重みを考慮してメロディは進行する。また、シンコペーションなど、場合によって拍の重みが移動する場合もある。本実施の形態においては、拍の重みを考慮して、最適なメロディの流れを構成する構成音を抽出し、コード判定に用いるのに最適な現在メロディ音CM及び先行メロディ音PMを特定する。図6~図9は、本実施の形態にかかる1拍目3拍目対応ノート決定処理の例を示すフローチャートである。図6に示すように、押鍵が1拍目に関するものであるかを判断するステップS41。ステップS24でYesと判断された場合には、CPU21は、テーブル指定情報を、第1のテーブルを示す情報に変更するステップS42。次いで、CPU12は、第1のドミナントモーション判定処理を実行するステップS43。ドミナントモーション判定処理は、メロディの流れからドミナントモーションつまり、属和音ドミナントから主和音トニックへの進行を抽出するものである。本実施の形態においては、処理においてコード名を考慮した第1のドミナントモーション判定処理と、コード名を考慮しない第2のドミナントモーション判定処理とが用いられる。図10は、本実施の形態にかかる第1のドミナントモーション判定処理の例を示すフローチャートである。図10に示すように、CPU21は、RAM23に格納された先行コード名PreCHが、メジャー系のドミナントコードのいずれかに対応するかを判断するステップS81。ここで、本実施の形態にかかる第1のドミナントモーション判定処理においては、たとえば、メジャー系のドミナントコードは、VMaj、V7及びVIIm7-5としている。ステップS81でYesと判断された場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMの値の組であるPM,CMが、F,E、B,C、D,Cの何れかであるかを判断するステップS82。ステップS82では、先行メロディ音PMから現在メロディ音CMへの動きが、長調の和音進行でドミナントからトニックに解決するときの動きであるか否かを判断している。ステップS82でYesと判断された場合には、CPU21は、現在コード名CurCHをIMajに決定し、その情報をRAM23に格納するステップS83。その後、CPU21は、ドミナントモーション処理において第1の判定結果であったことを示す情報をRAM23に格納するステップS84。ステップS81でNo或いはステップS82でNoと判断された場合には、CPU21は、先行コード名PreCHが、マイナー系のドミナントコードの何れかに対応するかを判断するステップS85。ここで、本実施の形態において、たとえば、マイナー系のドミナントコードは、IIIMaj及びIII7としている。ステップS85でYesと判断された場合には、CPU21は、PM,CMが、G,A、B,A、D,Cの何れかであるかを判断するステップS86。ステップS86においては、先行メロディ音PMから現在メロディ音CMへの動きが、短調の和音進行でドミナントからトニックに解決するときの動きであるか否かを判断している。ステップS86でYesと判断された場合には、CPU21は、現在コード名CurCHをVIminに決定し、その情報をRAM23に格納するステップS87。その後、ステップS84に進む。ステップS85でNoと判断された場合、或いは、ステップS86でNoと判断された場合には、CPU21は、ドミナントモーション処理において第2の判定結果であったことを示す情報をRAM23に格納するステップS88。ステップS43の第1のドミナントモーション判定処理が終了すると、CPU21は、第1のドミナントモーション判定処理の結果が、第2の処理結果であったかを判断するステップS44。ステップS44でNoと判断された場合、つまり、第1のドミナントモーション判定処理の結果が、第1の処理結果であった場合には、先行メロディ音PM及び現在メロディ音CMを初期値から変更することなく、RAM23に格納して、処理を終了するステップS45。ステップS44でYesと判断された場合には、CPU21は、RAM23に格納された押鍵情報を参照して、現在時刻に対応する拍の直前拍に押鍵があったかを判断するステップS46。ステップS44でYesと判断された場合には、CPU21は、RAM23の押鍵情報を参照して、直前拍先頭以降にも押鍵があったかを判断するステップS47。ステップS47でNoと判断されたことは、直前拍及び今回の拍でそれぞれ4分音符が押鍵されたことを意味する。この場合の処理については後述する。ステップS47でYesと判断された場合には、CPU21は、RAM23に格納された押鍵情報中、直前拍先頭以降に押鍵された鍵の発音時間を参照して、現在まで発音中であるかを判断するステップS49。ステップS49では、拍頭の押鍵ではなくても、それが直前拍先頭以降に押鍵されかつ維持されているものであれば、シンコペーションに該当するため、シンコペーションに該当する押鍵があったかを判断している。ステップS49でYesと判断された場合には、先行メロディ音PMは初期値のまま、その一方、直前拍先頭以降に押鍵された鍵を現在メロディ音CMとするとともに、シンコペーションフラグSYNを1にセットして、RAM23に格納するステップS50。先行メロディ音PM及び現在メロディ音CMは、RAM23に格納される。シンコペーションに該当する押鍵は、拍頭における押鍵と同様の重みを有するため、拍頭と同様に扱われる。次に、図7を参照して、ステップS46でNoであった場合について説明する。ステップS46でNoと判断された場合には、CPU21は、現在の拍先頭における押鍵が曲開始音に該当するかを判断するステップS51。ステップS51は、CPU21が、AM23に格納された押鍵情報を参照して、最初の押鍵情報であるかを判断することにより実現できる。ステップS51でYesと判断された場合には、先行メロディ音PMとして、現在メロディ音CMを与える。また、現在メロディ音CMを初期値から変更することはないが、CPU21は、テーブル指定情報を第2のコードテーブルを指定する情報に変更するステップS52。ステップS51でNoと判断された場合には、8拍以上の時間、押鍵が無いかを判断するステップS53。ステップS53でYesと判断された場合には、CPU21は、現在メロディ音CMは初期値のまま維持し、その一方、先行メロディ音PMとして、現在メロディ音CMを与え、RAM23に情報を格納するステップS54。ステップS53でYesと判断される場合は、2小節以上、新たな押鍵が無いことになる。この場合には、メロディシーケンスの意味が薄くなるため、2小節以上前に押鍵された先行メロディ音PMの初期値は無視することとしている。ステップS53でNoと判断された場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMを初期値のまま維持するステップS55。次に、図8を参照して、ステップS47でNoと判断された場合について説明する。ステップS47でNoと判断された場合には、CPU21は、現在メロディ機能CurrentMelodyFunction:CMFが、非和声音OtherTone:OTであるかを判断するステップS61。ここに、現在メロディ機能CMFは、先行コード名PreCHに対する現在メロディ音CMの機能を示す。本実施の形態において、CMFは、現在メロディ音CMが、先行コード名PreCHのコード構成音であることを示すコードトーンChordTone:CT、現在のスケール調性の構成音であることを示すスケールノートScaleNote:CN、その他の音非和声音を示すアザートーンOtherToneの何れかとなる。より具体的には、コード名と音名との間を関連付けたメロディ機能テーブルをROM22に格納し、CPU21が、現在メロディ音CM及び先行コード名PreCHの組に対応付けられた値を参照して、現在メロディ機能を判断している。図25は、本実施の形態にかかるメロディ機能テーブルの一例の部分を示す図である。図25に示すように、メロディ機能テーブル2500においては、現在メロディ音CMと先行コード名PreCHからなる値の組に対応して、所定の値が取得できるようになっている。図25において、メロディ機能テーブル2500中、CTはコードトーンを示したとえば、符号2501~2503参照、SNは、スケールノートを示すたとえば、符号2511~2513参照。また、図25においては、メロディ機能テーブル2500中、何も記載されていない欄たとえば、符号2521、2522参照は、アザートーンを示す。ステップS61でYesと判断された場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMを、初期値のまま維持するステップS62。その一方、ステップS61でNoと判断された場合には、CPU21は、現在メロディ機能CMFがスケールノートSNであるかを判断するステップS63。ステップS63でYesと判断された場合には、CPU21は、先行メロディ音PMと現在メロディ音CMとの差が2半音以内であるかを判断するステップS64。ステップS64では、いわゆる順次進行であるかが判断されている。ステップS64でYesと判断された場合、又は、ステップS63でNoと判断された場合には、第1のドミナントモーション処理を実行するステップS65。次いで、CPU21は、第1のドミナントモーション判定処理ステップS65において、第2の判定結果であるかを判断するステップS66。ステップS66でNoと判断された場合、つまり、第1の判定結果である場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMを、初期値のまま維持するステップS62。ステップS66でYesと判断された場合には、CPU21は、現在の押鍵、つまり、処理対象となっている押鍵が1拍目のものであるかを判断するステップS63。ステップS63でYesと判断された場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMを、初期値のまま維持するステップS68。その一方、ステップS67でNoと判断された場合、つまり、処理対象となっている押鍵が3拍目のものであれば、CPU21は、先行メロディ音PMとして、初期的な先行メロディ音PMよりさらに1つ前に押鍵された音高PPMを与えるステップS69。なお、現在メロディ音CMは初期値が維持される。これは、3拍目で順次進行を構成する楽音は、装飾的な音である可能性が高く、メロディラインを支配する本来の楽音は、さらにその一拍前の楽音とすることが適切であると考えられるからである。次に、ステップS49でNoと判断された場合について説明する。図9に示すように、CPU21は、直前拍における拍頭以降の押鍵音を特定しステップS71、特定された押鍵音の音高が、初期的なCMと同一であるかを判断するステップS72。ステップS72でYesと判断された場合には、CPU21は、現在メロディ音CMを初期的な状態で維持し、その一方、先行メロディ音PMとして、現在メロディ音CMの値を与えるステップS73。たとえば、直前拍において、8分音符でD、Cという順でメロディが進行し、現在の拍での押鍵がCであった場合を考える。この場合には、直前拍の最初のDの音は装飾音であると考えて、DからCというシーケンスではなく、CからCというシーケンスが適当であると考えている。このため、先行メロディ音を、現在メロディ音と同じにして、同じ音の連続としている。ステップS72でNoと判断された場合には、CPU21は、特定された拍頭以降の押鍵音が、全て、先行メロディ音PMと等しいかを判断するステップS74。ステップS74でYesと判断された場合には、ステップS63に進む。たとえば、直前拍において、16分音符で、D、C、C、Cという4つの押鍵がなされたと考える。この場合には、拍頭であるからといってDは、装飾的な音であることも考えられるため、拍頭の押鍵であるDを、先行メロディ音PMとすべきではない場合もある。そこで、ステップS63以降の処理を実行している。その一方、ステップS74でNoと判断された場合には、CPU21は、先行メロディ音PM及び現在メロディ音CMを、初期値のまま維持するステップS75。次に、2拍目対応ノート決定処理ステップS29について説明する。図11~図14は、本実施の形態にかかる2拍目対応ノート決定処理の例を示すフローチャートである。図11に示すように、CPU21は、1拍目に押鍵が無かったかを判断するステップS91。ステップS91でYesと判断された場合、つまり、押鍵が ゙無かった場合には、CPU21は、テーブル指定情報を第1のコードテーブルを指定する情報に変更するステップS91。たとえば、曲の途中で、前の小節の音が延び、1拍目が休符で、2拍目から次のフレーズが開始されるときには、本実施の形態では、2拍目で押鍵された音が1拍目と同様の重みがあると考え、1拍目用のコードテーブルである第1のコードテーブルを使用するようにしている。2拍目対応ノート処理では、1拍目3拍目対応ノート決定処理の第1のドミナントモーション判定処理ステップS43及びその判定結果に基づく処理ステップS44、45が省略されている。ステップS93~ステップS97は、それぞれ、図6のステップS46~50と同様である。また、図12は、ステップS93でNoと判断された場合に実行される処理である。ステップS101、ステップS103~105は、それぞれ、図7のステップS51、ステップS53~55と同様である。また、ステップS102では、テーブル指定情報の変更が伴わないことを除き、図7のステップS52と同様である。次に、ステップS94でNoと判断された場合について説明する。図13に示すように、CPU21は、現在メロディ機能CMFが、非和声音OTであるかを判断するステップS111。ステップS111及びステップS111でYesの場合に進むステップS112は、図8のステップS61、62と同様である。ステップS111でNoと判断された場合には、CPU21は、先行コード名PreCHが無判定コード以外のコードであるかを判断するステップS113。図21特にステップS205において説明するように、無判定コードについては、先の処理で転調フラグが1以上の値となっている。そこで、ステップS113では、RAM23に格納された転調フラグが1以上であるかを判断すれば良い。ステップS113でNo、つまり、先行コード名PreCHが無判定コードである場合には、CPU21は、先行メロディン音PMとして、現在メロディ音CMを与えるステップS114。その一方、ステップS113でYesと判断された場合、つまり、先行コード名PreCHが無判定コード以外である場合には、現在メロディ機能CMFがスケールノートSNであるかを判断するステップS115。ステップS63でYesと判断された場合には、CPU21は、先行メロディ音PMと現在メロディ音CMとの差が2半音以内であるかを判断するステップS116。ステップS115及びステップS116は、図8のステップS63及び64と同様である。ステップS115でNoと判断された場合、或いは、ステップS116でYesと判断された場合には、CPU21は、現在コード名CurCHとして、先行コード名PreCHを与えるステップS117。つまり、先行コード名PreCHが保持されることになる。2拍目や4拍目においては、先行コード名が維持されるコードホールドが行なわれる場合があるため、適切なコードホールドを実現している。本実施の形態では、現在メロディ機能CMFがコードトーンCTである場合、或いは、現在メロディ機能CMFがスケールノートSNであり、かつ、順次進行である場合には、コードホールドを行なっている。4拍子の楽曲では、2拍目及び4拍目は弱拍である。したがって、メロディが弱拍を強調するものでない限り、基本的に、2拍目及び4拍目のコードは、1拍目及び3拍目のコードを維持している。たとえば、図46に示す楽曲では、拍頭にC、D、E、F、E、D、Cという音があり、この音のシーケンスは順次進行となっている。実際には、このシーケンスに適切なコード名は、IMajCMajである。しかしながら、ステップS115~ステップS117に示す処理を実行しないと、2拍目や4拍目では、コード名がIMajCMaj以外になってしまう。そこで、ステップS115~116に示すように一定の条件の下では、コードホールドを行なって、適切なコード名を得られるようにしている。ステップS117の後、CPU21は、RAM23中のコード決定フラグを1にセットするステップS118。この場合には、ステップS117で既に現在コード名CurCHが決定されるため、後続するコード決定の処理を要さないからである。また、ステップS116でNoと判断された場合には、ステップS112に進み、先行メロディ音PM及び現在メロディ音CMが維持される。ステップS96でNoと判断された場合の処理は、図14に示される。図14のステップS121~ステップS125は、図9のステップS71~75と同様である。ステップS124でYesと判断された場合には、図10のステップS115に進み、コードホールドが判断される。次に、4拍目対応ノート決定処理ステップS30について説明する。図15~図16は、本実施の形態にかかる4拍目対応ノート決定処理の例を示すフローチャートである。4拍目対応ノート決定処理は、2拍目対応ノート決定処理と類似する。図15に示すように、4拍目対応ノート決定処理においては、1拍目の押鍵の有無及びそれに伴う処理図11のステップS91~92は省略されている。図15において、ステップS131~135は、図11のステップS93~97と同様である。また、ステップS131でYesと判断された場合には、図12の処理が実行される。ステップS132でNoと判断された場合には、図16に示す処理が実行される。図16において、ステップS141~146は、図13のステップS111~116と同様である。4拍目対応ノート処理においては、ステップS145でNo或いはステップS146でYesと判断されたときに、さらに、第2のドミナントモーション判定処理ステップS147を実行し、その結果に基づいて、コードホールドと行なうべきかを判断している。図17は、本実施の形態にかかる第2のドミナントモーション判定処理の例を示すフローチャートである。第2のドミナントモーション判定処理では、メロディ音の遷移のみが判断され、先行コード名PreCHのコード種別は考慮されない。図17に示すように、CPU21は、PM,CMが、F,E、B,C、D,Cの何れかであるかを判断するステップS151。これは、図10のステップS82と同様である。ステップS151でNoと判断された場合には、CPU21は、PM,CMが、G,A、B,A、D,Cの何れかであるかを判断するステップS153。これは、図10のステップS86と同様である。ステップS151でYesと判断された場合、或いは、ステップS153でYesと判断された場合には、CPU21は、ドミナントモーション処理において第1の判定結果であったことを示す情報をRAM23に格納するステップS152。その一方、ステップS153でNoと判断された場合には、CPU21は、ドミナントモーション処理において第1の判定結果であったことを示す情報をRAM23に格納するステップS154。第2のドミナントモーション判定処理により第2の判定結果となった場合ステップS148でYesには、CPU21は、現在コード名CurCHとして、先行コード名PreCHを与えるステップS149。つまり、先行コード名PreCHが保持されることになる。次いで、CPU21は、RAM23中のコード決定フラグを1にセットする。その一方、ステップS148でYesと判断された場合には、ステップS142に進み、先行メロディ音PM及び現在メロディ音CMが維持される。ステップS134でNoと判断された場合には、図14に示す処理が実行される。ステップS27、29、30に示す、拍のそれぞれに対応したノート決定処理が終了すると、処理により修正された先行メロディ音PM及び現在メロディ音CMに基づいて、コード決定処理が実行されるステップS31。図18~図21は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。図18に示すように、CPU21は、コードホールドにより既に現在コード名CurCHが決定され、コード決定フラグが1ではないかを判断するステップS161。ステップS161でNoと判断された場合、つまり、コード決定フラグが1である場合には、CPU21は、現在コード名CurCH及びその発音時刻をRAM23の所定の領域に格納するステップS175。ステップS161でYesと判断された場合、つまり、コード決定フラグが1ではない場合には、CPU21は、RAM23から先行メロディ音PM及び現在メロディ音CMを取得するステップS162。CPU21は、先行メロディ音PMが曲開始音であるかを判断するステップS163。ステップS163においては、たとえば、先行メロディ音PMよりさらに前の時刻に押鍵された音が存在しないことを判断すれば良い。ステップS163でNoと判断された場合には、CPU21は、先行コード音PreCHが無判定コードであるかを判断するステップS164。ステップS163でYesと判断された場合、或いは、ステップS164でYesと判断された場合には、CPU21は、先行メロディ音PMとして、現在メロディ音CMを与えるステップS165。ステップS164でYesと判断された場合には、先行コード名PreCHが無判定コードであるため、新たにメロディシーケンスが開始する方が妥当であるからである。次いで、CPU21は、メロディシーケンステーブルを参照してPM,CMに対応する値の組を取得するステップS166。図22は、本実施の形態にかかるメロディシーケンステーブルの例を示す図である。図22に示すように、メロディシーケンステーブル2200には、所定の先行メロディ音PM及び現在メロディ音CMについて値の組が格納されている。PM,CMに対応する値の組がメロディシーケンステーブル2200中に存在すれば、その値の組を一時的にRAM23に格納すれば良い。その一方、PM,CMに対応する値の組が、メロディシーケンステーブル2200中に存在しなければ、値の組が存在しないことを示す情報をRAM23に格納すれば良い。次に、CPU21は、現在メロディ音CMの直前に押鍵された音CM直前音を特定するステップS167。ここにいう直前に押鍵された音は、実際に直前に押鍵された音であり、先行メロディ音PMと同一ではない場合もある。CPU21は、ステップS167で特定されたCM直前音と、現在メロディ音CMとを比較して、これらの音高差が5半音以上であるかを判断するステップS168。ステップS168でYesと判断された場合には、CPU21は、現在メロディ音CMが1拍目の押鍵に関するものであるかを判断するステップS169。メロディシーケンスにおいては、核となるべきメロディ音が含まれ、その前後には、核となるメロディ音を装飾するメロディ音が存在する場合がる。装飾するメロディ音は、核となるメロディ音からそれほど音高差が無いのが通常である。その一方、音高差が一定範囲たとえば4度程度以上となるように跳躍する場合には、跳躍した後の音に比較的重みが大きくなる場合が多い。そこで、ステップS168で、音高差を判断して、その差に基づいて異なる処理を行なっている。ステップS169でYesと判断された場合には、CPU21は、先行コード名PreCHが2小節以上継続しているかを判断するステップS171。ステップS171でYesと判断された場合には、CPU21は、第1のコードテーブルのうち、種別としてjump2の欄を参照することを決定し、第1のコードテーブル中の所定のコード名を取得するステップS172。その一方、ステップS172でNoと判断された場合には、CPU21は、第1のコードテーブルのうち、種別としてjump1の欄を参照することを決定し、第1のコードテーブル中の所定のコード名を取得するステップS173。図23は、本実施の形態にかかる第1のコードテーブルの例を示す図である。図23においては、第1のコードテーブルの一部を示している。図23に示すように、コードテーブル2300では、少なくとも、先行コード名の機能先行コード機能PreviousChordFunction:符号2310参照及び先行メロディ音PM,現在メロディ音CMの組たとえば、符号2301、2302参照に基づいて、コード名が決められるようになっている。さらに、本実施の形態においては、ジャンプなし、jump1及びjump2という3つの種別符号2311参照を設け、先行コード機能、先行メロディ音PM,現在メロディ音CMの組及び種別に基づいて、コード名が決定されるようになっている。先行コード機能は、トニックTO、サブドミナントSU及びドミナントDOの3つがある。トニックに該当するコード名として、IMaj、IM7、IIImin、IIIm7、VImin、VIm7がある。サブドミナントに該当するコード名として、IImin、IIm7、IIm7-5、IVMaj、IVM7、IVmin、[IVmM7]がある。また、ドミナントに該当するコード名として、IIIMaj、III7、III7sus4、VMaj、V7、V7sus4、VIIm7-5がある。先行コード機能ごとの該当するコード名は、たとえば、RAM23に予め格納されている。また、種別においてjump2は、メロディシーケンスにおける跳躍及び先行コード名の継続を考慮して、コードの変化の程度を大きくしている。その一方、jump1では、jump2の場合よりも、コード変化の度合いが小さい。また、ジャンプなしという種別は、後述するように、第1のコードテーブルを使用する場合でも、jump1或いはjump2の種別が無い場合に使用されるものである。たとえば、先行コード名PreCHの先行コード機能がトニックであり、かつ、先行メロディ音PM,現在メロディ音CM=C,Gであり、種別がjump2であれば、第1のコードテーブルからVMaj符号2321参照が取得される。また、先行コード名PreCHの先行コード機能がトニックであり、かつ、先行メロディ音PM,現在メロディ音CM=C,Gであり、種別がjump1であれば、第1のコードテーブルからIMaj符号2322参照が取得される。CPU21は、現在コード名CurCHとして、第1のコードテーブルから特定されたコード名をRAM23の所定の領域に格納するとともに、その発音時刻をRAM23の所定の領域に格納するステップS174、175。次に、ステップS168でNo或いはステップS169でNoと判断された場合について説明する。CPU21は、現在メロディ音CMが、先行コード名PreCHのコードトーンCTであるかを判断するステップS181。ステップS181でYesと判断された場合には、CPU21は、先行コード名PreCHの楽音の発音時刻及び現在時刻に基づき、先行コード名PreCHの発音時間が2拍以内であるかを判断するステップS182。ステップS182でYesと判断された場合には、CPU21は、さらに、シンコペーションフラグが1であるかを判断するステップS183。ステップS183でNoと判断された場合には、CPU21は、第2のドミナントモーション処理を実行してステップS185、先行メロディ音PMから現在メロディ音CMへの移行がドミナントモーションであるかを判断する。第2のドミナントモーション処理の結果が第2の判定結果である場合ステップS185でYesには、CPU21は、現在コード名CurCHとして、先行コード名PreCHを与えるステップS186。つまり、先行コード名PreCHが保持されることになる。ステップS181でNo、ステップS182でNo、或いは、ステップS185でNoと判断された場合には、CPU21は、先行メロディ音PM,現在メロディ音CMに対応する値の組が、メロディシーケンステーブル中に存在していたかを判断するステップS187。図18のステップS166において、値の組或いは値の組が存在しないことを示す情報がRAM23に格納されているため、その情報を参照することにより、ステップS187の判断が可能である。ステップS187でYesと判断された場合には、現在メロディ音CMが、1拍目或いは2拍目に関するものであり、かつ、テーブル指定情報は第1のテーブルを示しているかを判断するステップS188。ステップS188でYesと判断された場合には、CPU21は、第1のコードテーブルのうち、種別としてジャンプなしの欄を参照することを決定し、第1のコードテーブルにおいて、所定のコード名を取得するステップS189。これに対して、ステップS188でNoと判断された場合には、CPU21は、第2のコードテーブルを参照することを決定し、第2のコードテーブルにおいて、所定のコード名を取得するステップS190。図24は、本実施の形態にかかる第2のコードテーブルの例を示す図である。図24においては、第2のコードテーブルの一部を示している。図24に示すように、コードテーブル2300では、先行コード名の機能先行コード機能PreviousChordFunction:符号2410参照及び先行メロディ音PM,現在メロディ音CMの組たとえば、符号2401、2402参照に基づいて、コード名が決められるようになっている。たとえば、先行コード名PreCHの先行コード機能がサブドミナントであり、かつ、先行メロディ音PM,現在メロディ音CM=C,Gであれば、第2のコードテーブルからVMaj符号2421参照が取得される。その後、CPU21は、現在コード名CurCHとして、第1のコードテーブル或いは第2のコードテーブルから特定されたコード名をRAM23の所定の領域に格納するとともに、その発音時刻をRAM23の所定の領域に格納するステップS191、175。ステップS187においてYesと判断される場合は、メロディシーケンステーブルに、先行メロディ音PM,現在メロディ音CMの組が存在したため、コードテーブルを参照することで適切なコード名が取得されている。その一方、ステップS187でNoと判断された場合には、転調或いは一時的な無判定コードの決定などが行なわれる。ステップS187でNoと判断された場合には、CPU21は、現在メロディ音CMの発音時間押鍵時間が4分音符より大きいか、つまり、1拍より長く発音されているかを判断するステップS201。ステップS201でNoと判断された場合には、CPU21は、先行コード名PreCHを変更せず、そのまま現在コードCurCHとするステップS207。ステップS201でNoとなる場合は、演奏者が意図して押鍵したのではなく、ミスタッチによって誤った鍵を押鍵してしまった可能性が高い。そこで、この場合は、コード名を変更することなく、先行コード名PreCHをそのまま現在コード名CurCHとする。ステップS201でYesと判断された場合には、CPU21は、現在メロディ音の発音時間押鍵時間が、3拍以下であるかを判断するステップS202。ステップS202でYesと判断された場合には、転調フラグが2以下であるかを判断する。ステップS203でYesと判断された場合には、CPU21は、RAM23に格納される転調フラグの値をインクリメントするステップS205。ステップS202でNo或いはステップS203でNoと判断された場合には、CPU21は、転調処理を実行するステップS204。本実施の形態においては、基本的には、現在メロディ音CM、先行メロディ音PMを含むメロディ音は、Cのスケール調性で処理される。したがって、転調処理では、転調後の調性とCとの音高差が算出され、その音高差をオフセットとしてRAM23に格納すれば良い。転調処理以後は、実際に押鍵された鍵番号により特定される音名をオフセットだけ減じることで、Cの調性で処理を続行することが可能となる。ステップS205の後、CPU21は、現在メロディ音CMが、先行コード名PreCHのコードトーンCT或いはスケールノートSNであるかを判断するステップS206。ステップS206においては、ステップS61と同様に、CPU21は、メロディ機能テーブルを参照して、現在メロディ音CM及び先行コード名PreCHの組に対応付けられた値が、コードトーン或いはスケールノートであるかを判断すれば良い。ステップS206でYesと判断された場合には、CPU21は、コードを保持すべく現在コード名CurCHに、先行コード名PreCHを与えるステップS207。ステップS207でNoと判断された場合には、CPU21は、無判定コードテーブルを参照して、ディミニシュdim或いはオーギュメントaugのコードを、現在コード名CurCHに与えるステップS208。図26は、本実施の形態にかかる無判定コードテーブルの一例の部分を示す図である。図26に示す無判定コードテーブル2600においては、現在メロディ音CMと先行コード名PreCHからなる値の組に対応して、所定の値が取得できるようになっている。無判定コードテーブルにおいて2600において、空欄たとえば、符号2601参照は、現在メロディ音CMと先行コード名PreCHからなる値の組に対応付けられた現在メロディ機能CMFが、コードトーンCT或いはスケールノートSNであることを意味している図25参照。したがって、無判定コードテーブル2600において空欄となる現在メロディ音CMと先行コード名PreCHからなる値の組については、現在コード名CurCHが無判定コードとなることが無いため、値が格納されていない。したがって無判定コードテーブル2600では、現在メロディ機能CMFが、アザートーンOTである場合について、ディミニシュdim或いはオーギュメントaugの何れかを指定する情報が格納されている。CPU21は、無判定コードテーブル2600から、現在メロディ音CMと先行コード名PreCHからなる値の組に対応付けられた、ディミニシュdim或いはオーギュメントaugの何れかを指定する情報を取得して、現在メロディ音CMを根音とするコード名を得る。たとえば、現在メロディ音がC、先行コード名がIMajであれば、コード名は、Idimとなる符号2611参照。また、現在メロディ音がA♭、先行コード名がIM7であれば、コード名は、IV♭augとなる。CPU21は、このようにして、現在メロディ音CMを根音とするディミニッシュdim或いはオーギュメントaugのコード名を、現在コード名CurCHとして決定し、RAM23に格納する。上述したように、本実施の形態においては、まず、現在の拍の拍頭の押鍵に関する現在メロディ音CMと、前拍の拍頭の押鍵に関する先行メロディ音PMとが、何拍目かを示す情報、先行コード名PreCHや、押鍵タミングなどにしたがって修正される図5のステップS21~30。その上で、現在メロディ音CM、先行メロディ音PM及び先行コード名PreCHに基づいて、現在コード名CurCHが決定されるステップS31。コード名判定処理図3のステップS4が終了すると、CPU21は、自動伴奏処理を実行するステップS5。図45は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。まず、CPU21は、自動コード修正装置10が自動伴奏モードの下で動作しているかを判断するステップS411。ステップS411でYesと判断された場合には、CPU21のタイマ図示せずを参照して、現在時刻が、自動伴奏データ中、メロディ音のデータについてのイベントの実行タイミングに達しているかを判断するステップS412。自動伴奏データには、3つの種類の楽音、すなわち、メロディ音オブリガート音を含む、コード音、リズム音のデータが含まれる。メロディ音のデータ及びコード音のデータは、発音すべき楽音ごとに、その音高、発音タイミング及び発音時間を含む。また、リズム音のデータは、発音すべき楽音リズム音ごとに、その発音タイミングを含む。ステップS412でYesと判断された場合には、CPU21は、メロディ発音消音処理を実行するステップS413。メロディ発音消音処理においては、処理にかかるイベントがノートオンイベントであるかを判断する。ノートオンイベントであることは、現在時刻が、上記メロディ音のデータにおける所定の楽音の発音タイミングとほぼ一致することで判断できる。その一方、ノートオフイベントであることは、現在時刻が、当該楽音の発音タイミングに発音時間を加えた時刻とほぼ一致することで判断できる。処理にかかるイベントがノートオフイベントである場合には、CPU21は、消音処理を実行する。その一方、処理にかかるイベントがノートオンイベントであれば、メロディ音のデータにしたがった発音処理を実行する。次いで、CPU21は、CPU21のタイマ図示せずを参照して、現在時刻が、自動伴奏データ中、コード音のデータについてのイベントの実行タイミングに達しているかを判断するステップS414。ステップS414においてYesと判断された場合には、CPU21は、コード発音消音処理を実行するステップS415。コード音発音消音処理においては、発音タイミングに達したコード音について発音処理を実行し、その一方、消音タイミングに達したコード音については消音処理を実行する。その後CPU21は、現在時刻が、自動伴奏データ中、リズムのデータについてのイベントの実行タイミングに達しているかを判断するステップS416。ステップS416においてYesと判断された場合には、CPU21は、リズム音発音処理を実行するステップS417。リズム音発音処理においては、発音タイミングに達したリズム音についてノートオンイベントを生成する。自動伴奏処理図3のステップS5が終了すると、CPU21は、音源発音処理を実行するステップS6。音源発音処理において、CPU21は、生成されたノートオンイベントに基づいて、発音すべき楽音の音色及び音高を示すデータを音源部26に与え、或いは、消音すべき楽音の音色及び音高を示すデータを音源部26に与える。音源部26は、音色、音高、音長等を示すデータにしたがって、ROM22の波形データを読み出して、所定の楽音データを生成する。これにより、スピーカ28から所定の楽音が発生する。また、CPU21は、ノートオフイベントに基づいて、音源26にノートオフイベントが示す音高の消音を指示する。音源発音処理ステップS6が終了すると、CPU21は、その他の処理たとえば現在コード名CurCH及び現在メロディ音CMのRAM23への格納、表示部15への画像表示、LED図示せずの点灯、消灯など:ステップS7を実行して、ステップS8に処理を移す。ステップS8で、CPU21は、演奏終了か否かを判断する。具体的には、ノンリアルタイムコード付け修正スイッチ14が押下されたか否かを判断する。この判断がYESのとき、CPU21は、処理をステップS9に移し、NOのとき、ステップS2に処理を移す。演奏終了と判断されれば、RAM23には、ステップS7の処理により、一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータとが格納されることになる。ステップS9で、CPU21は、図27を参照して後述するノンリアルタイムコード修正処理を行う。ノンリアルタイムコード修正処理が終了すると、CPU21は、メインフローの処理を終了する。図27は、本実施の形態にかかるノンリアルタイムコード修正処理の例を示すフローチャートである。ステップS211で、CPU21は、図28及び図29を参照して後述するキー判定検証処理を行う。ステップS212で、CPU21は、図30を参照して後述するコード構成音検証処理を行う。ステップS213で、CPU21は、図31乃至図34を参照して後述するフレーズ区切り検証処理を行う。ステップS214で、CPU21は、図35及び図36を参照して後述するコード付け修正処理を行う。ステップS215で、CPU21は、図37を参照して後述するメロディとコードスケールの比較処理を行う。ステップS216で、CPU21は、図38を参照して後述するユーザーによる修正処理を行う。その後、CPU21は、ノンリアルタイムコード修正処理を終了する。図28及び図29は、本実施の形態にかかるキー判定検証処理の例を示すフローチャートである。ステップS221で、CPU21は、曲中キーは1個であるか否かを判断する。具体的には、CPU21は、RAM23に格納された調曲中キーの種類の数が1個であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS222に移し、NOの場合、処理をステップS234に移す。ステップS222で、CPU21は、最終メロディ音によるキー確定表と曲中キーとを比較する。具体的には、CPU21は、最終メロディ音によるキー確定テーブル図39を参照し、曲中キーと最終メロディ音を比較する。例えば、図39によれば、曲中キーがCであり、最終メロディ音がC、E、Gのいずれかであれば、曲中キーと最終メロディ音とが対応する部分にC1が格納されているので、後述するステップS223でマッチすることになる。一方、曲中キーがCであり、最終メロディ音がAであれば、曲中キーと最終メロディ音とが対応する部分にデータが格納されていないので、後述するステップS223でマッチしないことになる。ステップS223で、CPU21は、ステップS222での結果がマッチするか否かを判断する。この判断がYESの場合、キー判定に問題ないので、CPU21は、キー判定検証処理を終了し、NOの場合、キーを修正するために処理をステップS224に移す。ステップS224で、CPU21は、最終メロディ音によるキー確定表に載っている最終音のあるキーを優先順位に従って候補キーとする。具体的には、CPU21は、最終メロディ音によるキー確定テーブル図39を参照し、候補キーを決定する。例えば、キー確定テーブル図39によれば、最終メロディ音がAの場合、Aの列には、F1、D2、A3が格納されている。このF、D、Aは、メロディがAで終わったときに可能性の高いキーを示すものであり、数字は優先順位を示す。したがって、リアルタイムキー判定で曲中キーがCと判定されていて、かつ最終メロディ音がAであるこの場合は、優先順位の高いFキーが曲の最終部分の候補キーとなる。なお、図39では、長調用のキー確定テーブルのみ開示しているが、短調用のキー確定テーブル図示せずも存在する。ステップS225で、CPU21は、最終4小節を候補キーでコード付けし、ステップS226で、CPU21は、最後の4小節がカデンツ判定表とあっているか否かを判断する。これらの処理は、曲の最終部分が候補キーで問題ないか検証するための処理である。例えば、候補キーがFの場合、最終4小節をキーFでコード付けして、コード付けした最初の4小節のコード機能が、カデンツ判定テーブル図40の曲エンド部のコード機能と一致するか否か判断する。この判断がYESの場合、CPU21は、処理をステップS227に移し、NOの場合、処理をステップS231に移す。図40のカデンツ判定テーブルは、曲エンド部と曲中の部分とに分けて、可能性のあるカデンツ終止形の形を示したテーブルである。なお、イントロ部分やサビの部分などを追加してさらに細分化してもよい。図40のTは、トニック、Dは、ドミナント、Sは、サブドミナントを表している。ステップS227で、CPU21は、曲頭から候補キーで問題ないか検証する。この処理は、候補キーの最後の4小節が、カデンツ判定テーブルの曲エンド部のコード機能と一致した場合に行われる。例えば、候補キーがFであった場合は、曲の最後の4小節はキーFで確定しているが、CPU21は、曲頭からキーFが成立するか否かを、リアルタイム図4の鍵盤処理で入力された曲頭からのメロディ音データをRAM23から読み出して検証する。ステップS228で、CPU21は、候補キーで問題ないか否かを判断する。具体的には、CPU21は、ステップS227で曲頭から候補キーが成立したか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS230に移し、NOの場合、処理をステップS229に移す。ステップS229で、CPU21は、矛盾したところでキーを2個に修正する。具体的には、CPU21は、曲頭からどの部分までが候補キーとして成立しないかをステップS227の検証結果から判断して、曲頭から候補キーとして成立しない箇所までと、侯補キーが成立し始める箇所から曲の最後までと、でキーを2つに分ける。例えば、リアルタイムキー判定で曲中キーがCと判定されており、かつ、候補キーがFの場合、CとFとの2つのキーに分ける。その後、処理をステップS221に移す。ステップS230では、曲頭から候補キーが成立しているので、CPU21は、キーを確定し、キー判定検証処理を終了する。ステップS231で、CPU21は、キー確定表の次候補があるか否かを判断する。具体的には、キー確定テーブル図39を検索して判断する。例えば、最終メロディ音がAで、候補キーがFである場合、次候補キーとして、第2の優先順位のキーであるDが存在する。一方、最終メロディ音がAで、候補キーがAである場合、次候補のキーは存在しない。この判断がYESの場合、CPU21は、処理をステップS232に移し、NOの場合、処理をステップS233に移す。ステップS232で、CPU21は、候補キーをステップS231で判断した次候補のキーに置換し、ステップS225に処理を移す。ステップS233で、CPU21は、キーを修正せず、キー判定検証処理を終了する。ステップS234で、CPU21は、曲中のキーは2個である否かを判断する。この判断がYESの場合、CPU21は、処理をステップS235に移し、NOの場合、処理をステップS237に移す。ステップS235で、CPU21は、冒頭キーと曲中キーの差が1半音、2半音、3半音のいずれかであるか否かを判断する。この処理は、所謂盛り上がり転調をしているかどうかを判断する処理である。この判断がYESの場合、CPU21は、処理をステップS236に移し、NOの場合、処理をステップS240に移す。ステップS236で、CPU21は、キーを確定し、キー判定検証処理を終了する。ステップS237で、CPU21は、冒頭キーと最終キーとは同一であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS238に移し、NOの場合、処理をステップS240に移す。ステップS238で、CPU21は、最後の4小節がカデンツ判定表とあっているか否かを判断する。具体的には、CPU21は、冒頭キーについては、カデンツ判定テーブル図40の曲中を参照して、冒頭キーの最後の4小節のコード機能が、カデンツ判定テーブル図40の曲中のコード機能と一致するか否かを判断する。一方、最終キーについては、カデンツ判定テーブル図40の曲エンド部を参照して、最終キーの最後の4小節のコード機能が、カデンツ判定テーブル図40の曲エンド部のコード機能と一致するか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS239に移し、NOの場合、処理をステップS240に移す。ステップS239で、CPU21は、冒頭キーと最終のキーを確定する。例えば、ステップS238で、冒頭キーのみ一致すると判断されれば、冒頭キーのみ確定する。また、最終キーのみ一致すると判断されれば、最終キーのみ確定する。さらに、冒頭キーと最終キーの両方が一致すると判断されれば、冒頭キー及び最終キーが確定する。ステップS240で、CPU21は、未検証キーがあるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS241に移し、NOの場合、キー判定検証処理を終了する。ステップS241で、CPU21は、関係調借用判定表を参照し、キー確定後4小節以内にこの表にあるコードがあるか判断する。具体的には、CPU21は、関係調借用判定テーブル図41を参照して、キー確定後4小節以内に当該テーブルの主調独自コードがあるか判断する。例えば、キーが3つある場合で、冒頭キーがCであり、冒頭キーと最終キーとの間のキーが属調冒頭キーである主調Cの属調はGである場合に、属調の最初の4小節以内に主調独自コードである、V7G7又はIImDmが存在するか否かが判断される。ここで、主調独自コードについて説明する。例えば、主調がCの場合、属調Gは、主調の第4音ファのみが半音上がった調であり、主調Cド、レ、ミ、ファ、ソ、ラ、シ、で構成と属調Gソ、ラ、シ、ド、レ、ミ、ファ、で構成とを比較すると、属調Gには、ファは含まれない。よって、ファを含むコードであるG7又はDmは、属調Gのコードではなく、主調Cのコードである。本実施形態では、この意味で、主調独自コードという名称を用いている。ステップS242で、CPU21は、ステップS241でマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS243に移し、NOの場合、処理をステップS248に移す。ステップS243で、CPU21は、マッチしたところから元キーに修正する。例えば、主調独自コードが存在した箇所から、主調冒頭キーに修正する。ステップS244で、CPU21は、最後の4小節がカデンツ判定表とあっているか否かを判断する。この処理では、ステップS243で修正後のキーでカデンツ判定テーブル図40の曲中を参照して、修正後のキーの最後の4小節のコード機能が、カデンツ判定テーブル図40の曲中のコード機能と一致するか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS245に移し、NOの場合、処理をステップS246に移す。ステップS245で、CPU21は、その部分のキー修正後のキーを確定し、処理をステップS247に移す。ステップS246で、CPU21は、残りキーは1個であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS222に移し、NOの場合、処理をステップS247に移す。ステップS247で、CPU21は、未検証キーがあるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS241に移し、NOの場合、キー判定検証処理を終了する。ステップS248で、CPU21は、最後の4小節がカデンツ判定表とあっているか否かを判断する。この処理では、未検証キーでカデンツ判定テーブル図40の曲中を参照して、未検証キーの最後の4小節のコード機能が、カデンツ判定テーブル図40の曲中のコード機能と一致するか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS245に移し、NOの場合、処理をステップS249に移す。ステップS249で、CPU21は、同主調をチェックしたか否かを判断する。すなわち、CPU21は、関係調借用判定テーブル図41の最下段である同主調図示せずについて主調独自コードの存在の有無をチェックしたか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS246に移し、NOの場合、処理をステップS250に移す。ステップS250で、CPU21は、次の関係調を確認対象としてステップS241に処理を移す。例えば、属調についてチェックしたのであれば、次その下段の関係調である下属調を次の確認対象とする。図30は、本実施の形態にかかるコード構成音検証処理の例を示すフローチャートである。ところで、リアルタイム自動コード付けで倚音や経過音などの装飾音が強拍に存在する場合に、当該装飾音がコード付けに影響を与えるためにコード付けが間違ってしまうことがある。そこで、このコード構成音検証処理は、このようなコード付けの間違いを修正するために、本実施形態においては、小節毎にメロディ音から装飾音を除いたコード構成音を抽出し、このコード構成音によって成立するコードがリアルタイムコード付けのコードと同一かどうか検証している。まず、ステップS261で、CPU21は、その小節に1拍以上ある音について音長が長い順に3音抽出する。具体的には、RAM23に格納された一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータを読み出して、その小節に1拍以上ある音について音長が長い順に3音抽出する。ここで、その小節とは、CPU21の処理対象となる小節であり、最初は1小節目を処理対象とする。ステップS262で、CPU21は、抽出した3音がリアルタイムコード付けのコード構成音に含まれるか否かを判断する。具体的には、CPU21は、図43のコードスケールテーブルを参照して判断する。例えば、リアルタイムコード付けのコードがIMajorである場合に、ステップS261又はS263で抽出された3音が、コード構成音CTであるC、E、Gであるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS264に移し、NOの場合、処理をステップS263に移す。ここで、抽出した3音がコード構成音CTであれば、これら3音は支配的な音となる。ステップS263で、CPU21は、小節を半分にして音長の長い順に3音抽出する。その後、ステップS262に処理を移す。ステップS264で、CPU21は、小節内にコード以外のメロディ音があるか否かを判断する。具体的には、CPU21の処理対象となる小節内にステップS261又はステップS263で抽出した3音以外の音が存在し、かつ、図43のコードスケールテーブルを参照して当該音がコード構成音CTではない場合に、当該音はコード以外のメロディ音となる。この判断がYESの場合、CPU21は、処理をステップS265に移し、NOの場合、処理をステップS270に移す。ステップS265で、CPU21は、それらの音は装飾音を含むか否かを判断する。具体的には、CPU21は、装飾音データベース図42を参照して判断する。この判断がYESの場合、CPU21は、処理をステップS266に移し、NOの場合、処理をステップS267に移す。ここで、図42を参照して装飾音データベースについて説明する。この装飾音データベースは、強拍4拍子の場合は、1拍と3拍に装飾音コード構成音以外の音があるか否かを判断するためのデータベースである。例えば、図42の例によれば、4拍子の場合で、1拍目強拍にコード構成音以外の装飾音例えば、倚音があり、2拍目弱拍にコード構成音があり、かつ、2拍目のコード構成音は、1拍目の音より、全音又は半音高いか低いかの関係にある場合に、1拍目の音が装飾音と判断される。3拍目、4拍目についても同様である。なお、図42では図示していないが、2拍子、3拍子等、4拍子以外の装飾音の有無を判定することもできる。ステップS266で、CPU21は、装飾音を省いて、リアルタイムコード付け結果のコードと比較する。具体的には、CPU21は、RAM23に格納されたリアルタイムコード付けされたコードを読み出して、装飾音を省いた処理対象の小節の音が、図43のコードスケールテーブルの各コードに対応するコード構成音CTであるか否かを判断する。ステップS267で、CPU21は、リアルタイムコード付け結果のコードと比較する。具体的には、CPU21は、RAM23に格納されたリアルタイムコード付けされたコードを読み出して、処理対象の小節の音が、図43のコードスケールテーブルの各コードに対応するコード構成音CTであるか否かを判断する。ステップS268で、CPU21は、ステップS266及びS267での比較の結果が、マッチするか否かステップS266又はS267の判断がYESマッチかNOアンマッチかを判断する。この判断がYESの場合、CPU21は、処理をステップS270に移し、NOの場合、処理をステップS269に移す。ステップS269で、CPU21は、この支配的な音はコードとして成立するか否かを判断する。具体的には、CPU21は、図43のコードスケールテーブルを参照して、ステップS266又はS267で比較した音が、コード構成音CTであるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS272に移し、NOの場合、処理をステップS270に移す。ステップS272で、CPU21は、コード修正フラグをONにする。具体的には、CPU21は、処理対象となった小節に対応づけてコード修正フラグをONにする。なお、コード修正フラグはRAM23の所定領域に存在する。これにより、後述するコード修正処理図35において、対象小節のコードを修正できる。ステップS270で、CPU21は、最後の小節か否かを判断する。この判断がYESの場合、CPU21は、コード構成音検証処理を終了し、NOの場合、処理をステップS271に移す。ステップS271で、CPU21は、次の小節をコード構成音検証の対象とし、ステップS261に処理を移す。図31乃至図34は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。ステップS281で、CPU21は、1小節目と8N1小節目のコード進行を比較する。具体的には、RAM23に格納された一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータを読み出して比較する。Nの初期値は1である。ステップS282で、CPU21は、1小節目と8N1小節目のコード進行が同一か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS296に移し、NOの場合、処理をステップS283に移す。ステップS283で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディリズムを比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS284で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディリズムがマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS285に移し、NOの場合、処理をステップS290に移す。ステップS285で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS286で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS287に移し、NOの場合、処理をステップS288に移す。ステップS287で、CPU21は、該当する小節をフレーズ8型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS288で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS289に移し、NOの場合、処理をステップS296に移す。ステップS289で、CPU21は、該当する小節をフレーズ8β型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS290で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディリズムが70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS291に移し、NOの場合、処理をステップS296に移す。ステップS291で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS292で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS293に移し、NOの場合、処理をステップS294に移す。ステップS293で、CPU21は、該当する小節をフレーズ8Rα型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS294で、CPU21は、8小節単位の1~8小節目と8N1~8N8小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS295に移し、NOの場合、処理をステップS296に移す。ステップS295で、CPU21は、該当する小節をフレーズ8Rβ型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS296で、CPU21は、曲終了か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS298に移し、NOの場合、処理をステップS297に移す。ステップS297で、CPU21は、Nを1増加させて、ステップS281に処理を移す。ステップS298で、CPU21は、1小節目と4N1小節目のコード進行を比較する。具体的には、RAM23に格納されたリアルタイムコード付けによるコードデータを読み出して比較する。ここで、Nの初期値は1である。ステップS299で、CPU21は、1小節目と4N1小節目のコード進行が同一か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS313に移し、NOの場合、処理をステップS300に移す。ステップS300で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディリズムを比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS301で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディリズムがマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS302に移し、NOの場合、処理をステップS307に移す。ステップS302で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS303で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS304に移し、NOの場合、処理をステップS305に移す。ステップS304で、CPU21は、該当する小節をフレーズ4型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS305で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS306に移し、NOの場合、処理をステップS313に移す。ステップS306で、CPU21は、該当する小節をフレーズ4β型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS307で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディリズムが70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS308に移し、NOの場合、処理をステップS313に移す。ステップS308で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS309で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS310に移し、NOの場合、処理をステップS311に移す。ステップS310で、CPU21は、該当する小節をフレーズ4Rα型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS311で、CPU21は、4小節単位の1~4小節目と4N1~4N4小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS312に移し、NOの場合、処理をステップS313に移す。ステップS312で、CPU21は、該当する小節をフレーズ4Rβ型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS313で、CPU21は、曲終了か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS315に移し、NOの場合、処理をステップS314に移す。ステップS314で、CPU21は、Nを1増加させて、ステップS281に処理を移す。ステップS315で、CPU21は、1小節目と2N1小節目のコード進行を比較する。具体的には、RAM23に格納されたリアルタイムコード付けによるコードデータを読み出して比較する。ここで、Nの初期値は1である。ステップS316で、CPU21は、1小節目と2N1小節目のコード進行が同一か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS330に移し、NOの場合、処理をステップS317に移す。ステップS317で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディリズムを比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS318で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディリズムがマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS319に移し、NOの場合、処理をステップS324に移す。ステップS319で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS320で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS321に移し、NOの場合、処理をステップS322に移す。ステップS321で、CPU21は、該当する小節をフレーズ2型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS322で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS323に移し、NOの場合、処理をステップS330に移す。ステップS323で、CPU21は、該当する小節をフレーズ2β型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS324で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディリズムが70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS325に移し、NOの場合、処理をステップS330に移す。ステップS325で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ステップS326で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS327に移し、NOの場合、処理をステップS328に移す。ステップS327で、CPU21は、該当する小節をフレーズ2Rα型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS328で、CPU21は、2小節単位の1~2小節目と2N1~2N2小節目とのメロディ音高が70以上マッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS329に移し、NOの場合、処理をステップS330に移す。ステップS329で、CPU21は、該当する小節をフレーズ2Rβ型とする。具体的には、CPU21は、RAM23のフレーズ型領域に小節データと型データを格納する。ステップS330で、CPU21は、曲終了か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS332に移し、NOの場合、処理をステップS331に移す。ステップS331で、CPU21は、Nを1増加させて、ステップS315に処理を移す。ステップS332で、CPU21は、フレーズ型がひとつもないか否かを判断する。具体的には、CPU21は、RAM23のフレーズ型領域に型データの記録が全くないか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS333に移し、NOの場合、フレーズ区切り検証処理を終了する。ステップS333で、CPU21は、1小節目とN1小節目のメロディ音高を比較する。具体的には、RAM23に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ここで、Nの初期値は1である。ステップS334で、CPU21は、1小節目とN1小節目のメロディ音高がマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS335に移し、NOの場合、処理をステップS336に移す。ステップS335で、CPU21は、該当する小節をフレーズX型とする。また、Xまでの小節数を記憶する。具体的には、CPU21は、RAM23のフレーズ型領域に小節数のデータと型データを格納する。ステップS336で、CPU21は、最後の小節であるか否かを判断する。この判断がYESの場合、CPU21は、フレーズ区切り検証処理を終了し、NOの場合、処理をステップS337に移す。ステップS337で、CPU21は、Nを1増加させて、処理をステップS333に移す。図35及び図36は、本実施の形態にかかるコード付け修正処理の例を示すフローチャートである。ステップS341で、CPU21は、リアルタイムコード付けのキーとキー判定検証処理図28及び図29で修正されたキーとを比較する。ステップS342で、CPU21は、キー変更箇所が有るか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS343に移し、NOの場合、処理をステップS346に移す。ステップS343で、CPU21は、キーの変更箇所を新キーキー判定検証処理図28及び図29で修正されたキーでコード付けする。ステップS344で、CPU21は、キー確定保留箇所が有るか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS345に移し、NOの場合、処理をステップS346に移す。ステップS346で、CPU21は、支配的な音によるコード修正指定箇所が有るか否かを判断する。具体的には、CPU21は、ステップS272図30で、コード修正フラグがONされた小節があるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS347に移し、NOの場合、処理をステップS350に移す。ステップS347で、CPU21は、指定部分の最後の4小節がカデンツ判定表とあっているか否かを判断する。具体的には、CPU21は、コード修正フラグがONされた小節を含む4小節について、当該4小節が曲中か曲エンド部かに応じて、カデンツ判定テーブル図40の曲中又は曲エンド部を参照して、4小節のコード機能が、カデンツ判定テーブル図40のコード機能と一致するか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS377に移し、NOの場合、処理をステップS348に移す。ステップS348で、CPU21は、キー確定保留範囲を特定し、その部分のメロディをキー判定し、キーを確定する。ステップS349で、CPU21は、キーの変更箇所を新キーでコード付けする。その後、ステップS347に処理を移す。ステップS377で、CPU21は、コード修正をする。具体的には、CPU21は、ステップS269で決定した、支配的な音に応じたコード構成音に対応したコードで、コード修正フラグがONにされた小節のコードを修正する。ステップS269で、CPU21は、支配的な音はコードとして成立するか否かを判断する。具体的には、CPU21は、図43のコードスケールテーブルを参照して、ステップS266又はS267で比較した音が、コード構成音CTであるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS272に移し、NOの場合、処理をステップS270に移す。ステップS350で、CPU21は、該当箇所のフレーズ区切りは、4型4型、4β型、4Rα型、又は4Rβ型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS351に移し、NOの場合、処理をステップS357に移す。ステップS351で、CPU21は、フレーズ区切りが4型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS352に移し、NOの場合、処理をステップS353に移す。ステップS352で、CPU21は、その部分のコードを比較元と同一とする。4型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、5~8小節目が4型である場合、CPU21は、5~8小節目のコードを1~4小節目のコードと同一にする。また、後述するように9~12小節目が4β型、4Rα型、4Rβ型のいずれかであれば、9~12小節目のコードと1~4小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを1~4小節目のコードと同一にする。ステップS353で、CPU21は、違う部分のコードを比較する。この場合、4β型、4Rα型、4Rβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ30未満異なるということなので、当該異なる部分のコードを比較する。例えば、9~12小節目が、4β型、4Rα型、4Rβ型のいずれかであれば、9~12小節目のコードと1~4小節目のコードとを比較する。ステップS354で、CPU21は、機能は同一であるか否かを判断する。具体的には、CPU21は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS352に移し、NOの場合、処理をステップS355に移す。ステップS355で、CPU21は、最後の小節か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS357に移し、NOの場合、処理をステップS356に移す。ステップS356で、CPU21は、次の4小節へ進めて、ステップS351に処理を移す。ステップS357で、CPU21は、該当箇所のフレーズ区切りは、8型8型、8β型、8Rα型、又は8Rβ型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS358に移し、NOの場合、処理をステップS364に移す。ステップS358で、CPU21は、フレーズ区切りが8型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS359に移し、NOの場合、処理をステップS360に移す。ステップS359で、CPU21は、その部分のコードを比較元と同一とする。8型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、9~16小節目が8型である場合、CPU21は、9~16小節目のコードを1~8小節目のコードと同一にする。また、後述するように17~24小節目が8β型、8Rα型、8Rβ型のいずれかの場合、17~24小節目のコードと1~8小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを1~8小節目のコードと同一にする。ステップS360で、CPU21は、違う部分のコードを比較する。この場合、8β型、8Rα型、8Rβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ30未満異なるということなので、当該異なる部分のコードを比較する。例えば、17~24小節目が、8β型、8Rα型、8Rβ型のいずれかであれば、17~24小節目のコードと1~8小節目のコードとを比較する。ステップS361で、CPU21は、機能は同一であるか否かを判断する。具体的には、CPU21は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS359に移し、NOの場合、処理をステップS362に移す。ステップS362で、CPU21は、最後の小節か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS364に移し、NOの場合、処理をステップS363に移す。ステップS363で、CPU21は、次の8小節へ進めて、ステップS358に処理を移す。ステップS364で、CPU21は、該当箇所のフレーズ区切りは、2型2型、2β型、2Rα型、又は2Rβ型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS365に移し、NOの場合、処理をステップS371に移す。ステップS365で、CPU21は、フレーズ区切りが2型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS366に移し、NOの場合、処理をステップS367に移す。ステップS366で、CPU21は、その部分のコードを比較元と同一とする。2型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、3~4小節目が2型である場合、CPU21は、3~4小節目のコードを1~2小節目のコードと同一にする。また、後述するように5~6小節目が2β型、2Rα型、2Rβ型のいずれかであれば、5~6小節目のコードと1~2小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを1~2小節目のコードと同一にする。ステップS367で、CPU21は、違う部分のコードを比較する。この場合、2β型、2Rα型、2Rβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ30未満異なるということなので、当該異なる部分のコードを比較する。例えば、3~4小節目が、2β型、2Rα型、2Rβ型のいずれかであれば、3~4小節目のコードと1~2小節目のコードとを比較する。ステップS368で、CPU21は、機能は同一であるか否かを判断する。具体的には、CPU21は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS366に移し、NOの場合、処理をステップS369に移す。ステップS369で、CPU21は、最後の小節か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS371に移し、NOの場合、処理をステップS370に移す。ステップS370で、CPU21は、次の2小節へ進めて、ステップS365に処理を移す。ステップS371で、CPU21は、該当箇所のフレーズ区切りはX型か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS372に移し、NOの場合、処理をステップS376に移す。ステップS372で、CPU21は、開始位置を確認する。ステップS373で、CPU21は、その部分のコードを比較元と同一とする。ステップS374で、CPU21は、最後の小節か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS376に移し、NOの場合、処理をステップS375に移す。ステップS375で、CPU21は、次のX型へ進めて、ステップS372に処理を移す。ステップS376で、CPU21は、他にもフレーズ型記憶箇所が有るか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS350に移し、NOの場合、コード付け修正処理を終了する。図37は、本実施の形態にかかるメロディとコードスケールの比較処理の例を示すフローチャートである。ステップS381で、CPU21は、修正されたコードのスケールをコードスケールテーブル図43で確認し、修正されたコード区間に対応するメロディリアルタイムコード付けの際に入力されたメロディと、修正されたコードのコードスケールと、が一致するか否かを確認する。ここで、コードスケールとは、図43のコードスケールテーブルでいうところの、スケールノートSNとコード構成音CTとを合わせた音群である。例えば、修正されたコードが、キーがCにおけるIMajorCMajorである場合、修正されたコードのコードスケールは、図43によれば、C,D,E,F,G,A,Bである。したがって、修正されたコードが、キーがCにおけるIMajorCMajorである場合、修正されたコード区間に対応するメロディが、C,D,E,F,G,A,Bのいずれかであれば、当該メロディと当該コードスケールとが一致する。ステップS382で、CPU21は、ステップS381で一致するか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS388に移し、NOの場合、処理をステップS383に移す。ステップS383で、CPU21は、スケール外音は装飾音か否かを判断する。具体的には、CPU21は、ステップS265図30と同様に装飾音データベース図42を参照して判断する。この判断がYESの場合、CPU21は、処理をステップS388に移し、NOの場合、処理をステップS384に移す。ステップS384で、CPU21は、リハモデータベース図示せずを参照する。例えば、キーがAmAmの構成音は、A、B、C、D、E、F、Gで、メロディがメロディックマイナーの上向型A、B、C、D、E、F、Gであった場合、F、Gは、キーAmの構成音ではないので、Fの音に対して、Bm7にコードを変更することができる。このように、リハモデータベース図示せずには、コードを変更することのできるパターンがデータベースとして登録されている。ステップS385で、CPU21は、リハモデータベースにおいてマッチするか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS386に移し、NOの場合、処理をステップS387に移す。ステップS386で、CPU21は、コード修正をする。具体的には、CPU21は、リハモデータベースに登録されているコードに修正する。ステップS387で、CPU21は、不適合箇所を記録する。すなわち、マッチしなかった箇所をRAM23に記録する。ステップS388で、CPU21は、最後のコードか否かを判断する。この判断がYESの場合、CPU21は、メロディとコードスケールの比較処理を終了し、NOの場合、処理をステップS389に移す。ステップS389で、CPU21は、次のコードへ進み、処理をステップS381へ移す。図38は、本実施の形態にかかるユーザーによる修正処理の例を示すフローチャートである。ノンリアルタイムで修正しても、耳の肥えたユーザーにとっては、不満がある場合がる。そのときに、ユーザーによる修正機能があると便利である。ユーザーによる修正処理は、そのための処理である。ステップS401で、CPU21は、Anyキーによるデータ再生中か否かを判断する。この判断がYESの場合、CPU21は、処理をステップS402に移し、NOの場合、ユーザーによる修正処理を修正する。ステップS402で、CPU21は、Editスイッチ図示せずがオンか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS404に移し、NOの場合、処理をステップS403に移す。ステップS403で、CPU21は、コード優先データベース順にコード候補を出力する。具体的には、CPU21は、コード優先データベース図44に格納された順番で、コード候補を出力する。例えば、修正前のコードがIImであれば、1番目のコード候補として、IIm7を出力する。ステップS404で、CPU21は、OKスイッチ図示せずが押下されたか否かを判断する。この判断がYESの場合、CPU21は、処理をステップS405に移し、NOの場合、処理をステップS406に移す。ステップS405で、CPU21は、コードを修正し、処理をステップS407に移す。具体的には、CPU21は、ステップS403で出力されたコードでコード修正する。ステップS406で、CPU21は、次候補を出力し、処理をステップS404に移す。例えば、現在出力されたコードがIIm7であれば、CPU21は、2番目のコード候補であるIVを出力する。ステップS407で、CPU21は、曲終了か否かを判断する。この判断がYESの場合、CPU21は、ユーザーによる修正処理を終了し、NOの場合、処理をステップS401に移す。本実施の形態の電子楽器10は、曲のメロディを演奏する鍵盤11を有しており、CPU21は、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行い、メロディ演奏終了後、リアルタイムでコード付与されたコードをノンリアルタイムで修正する。したがって、入力されたメロディに対してリアルタイムでコード付けを行った後、ノンリアルタイムでコードを修正することで、コード付けの精度をより高めることができる。また、本実施の形態において、CPU21は、曲の所定区間ごとに、そこに含まれるメロディ音の中で付与されたコード以外の他のコードが成立する音が存在するか否か検証し、成立する場合に当該所定区間を修正箇所として指定し、曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士の楽式の一致度を検証し、当該検証結果に基づいて、前記付与されたコードを修正する。したがって、例えば、所定の長さとして4小節のフレーズに区切った場合に、4小節ごとの楽式の一致度に基づいてコード修正が行われるので、フレーズの楽式の一致度が高ければ、フレーズ同士のコード付けの一致度を高くすることができる。また、本実施の形態において、CPU21は、曲の所定の区間に付与されているキーが、当該所定の区間のメロディの最終音に基づいて定められるキーと一致するか否かを検証する。したがって、曲の所定の区間に付与されているキーが正確であるか否かをメロディの最終音に基づいて検証することができる。また、本実施の形態において、CPU21は、修正された各コードのスケールと、対応する区間のメロディのスケールとが一致するか否か判定し、一致していない場合は当該修正されたコードをさらに訂正する。したがって、修正されたコードの正確性を検証し、正確でない場合はさらにコードを訂正できるので、コード付けの精度をより高めることができる。また、本実施の形態において、CPU21は、リアルタイムでのコード付けにおいて、曲データ中の所定の拍に属する音高、当該拍の直前の拍に属する音高及び当該直前の拍に付与されたコードに基づいて所定の拍に付与すべきコードを決定する。したがって、リアルタイムでのコード付けを迅速かつ正確に行うことができる。また、本実施の形態において、CPU21は、曲の小節ごとに、当該小節に含まれるメロディ音のうち、付与されたコードの構成音以外の他の音が存在するか否かを判別し、他の音が存在すると判別された場合に、当該他の音が装飾音であるか否かを判別し、装飾音と判別された場合にはこの装飾音を除いた音に基づくコードと前記小節に付与されたコードとを比較するとともに、装飾音と判別されない場合には前記他の音に基づくコードと前記小節に付与されたコードとを比較し、両者のコードが一致しないと判断された場合に、前記小節の区間を修正箇所と指定する。したがって、リアルタイムでコード付けの誤りの原因であった装飾音を除いて、支配的な音により確実にコードを修正することができる。また、本実施の形態において、CPU21は、曲の小節ごとに、当該小節に含まれるメロディ音のうち、支配的な音以外の他の音が存在するか否かを判別する際に、曲の小節毎に、当該小節に含まれるメロディ音のうち音長の長い3つの音を抽出するとともに、これら3つの音が前記小節に付与されているコードの構成音か判別し、コード構成音と判別した場合は、これら3つの音を支配的な音とする。したがって、支配的な音をコード構成音とすることができる。また、本実施の形態において、CPU21は、曲のメロディを所定の長さの複数のフレーズに区切る際に、曲を4小節毎、8小節毎及び2小節毎に区切る。したがって、4小節単位、8小節単位、2小節単位等、音楽的に繰り返しの多い小節数を単位として、楽式の一致度を検証できる。また、本実施の形態において、曲データは、さらにリズム音を含み、CPU21は、楽式としてフレーズ同士のメロディ音の音高及びリズム音を比較し、各フレーズを、音高及びリズム音の両方が一致する場合、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類する。したがって、楽式の一致度の検証方法のバリエーションを多くできる。また、本実施の形態において、CPU21は、コード修正する際に、コード構成音検証により修正箇所と判断された曲の区間がある場合に、当該区間における他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別し、終結していると判別された場合は、付与されたコードを当該他のコードに訂正する。したがって、より適切なコード付けを行うことができる。また、本実施の形態において、CPU21は、コード修正する際に、コード構成音検証により修正箇所と判断された曲の区間がある場合に、当該区間における他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別し、終結していないと判別された場合は、当該区間に含まれるメロディ音によりキーを確定し、当該確定されたキーに基づいて新たに付与されたコードで再度カデンツに沿う形で終結しているか否か判別する。したがって、より適切なコード付けを行うことができる。また、本実施の形態において、CPU21は、曲のメロディを所定の長さの複数のフレーズに区切ってから、音高及びリズム音の両方が一致する場合に分類されたフレーズ夫々に付与されたコードを同一のコードに訂正し、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類されたフレーズ夫々に付与されたコードの中で異なる部分のコード同士の機能が同一の場合は、当該異なる部分のコードを同一とする。したがって、コード付けの精度をより高めることができる。本実施の形態においては、コード名判定処理図3のステップS4において、CPU21は、鍵盤11の一連の操作において進行するメロディシーケンスにおいて、実行中の自動伴奏データの進行を規定する時間情報、特に拍の情報に基づいて、現在の拍の拍頭において押鍵された鍵に関連する現在メロディ音CMと、1つ前の拍である前拍の拍頭において押鍵された鍵に関する先行メロディ音PMとを決定する。また、CPU21は、決定された現在メロディ音情報と、先行メロディ音情報と、前拍におけるコード名である先行コード名PreCHとに基づき、現在コード名CurCHを決定するコード名決定処理図5のステップS31を実行する。また、メロディ音の決定に際して、CPU21は、現在の拍が、小節において何番目の拍であるかに基づいて、現在メロディ音CM及び先行メロディ音PMを決定する。すなわち、本実施の形態によれば、押鍵された拍の位置時間的な位置を考慮して現在メロディ音CM及び先行メロディ音PMが決定され、決定されたメロディ音のシーケンスと、先行コード名PreCHに基づいて現在コード名CurCHが決定される。また、本実施の形態においては、CPU21は、拍子が4拍子である場合に、現在の拍が、1拍目或いは3拍目であるか、或いは、他の拍であるかに基づいて、現在メロディ音情報及び先行メロディ音情報を決定する。すなわち、強拍1拍目、3拍目と、弱拍2拍目、4拍目に基づいて、現在メロディ音CM及び先行メロディ音PMを決定することで、拍の重みを考慮することが可能となる。また、本実施の形態において、CPU21は、前拍の先頭以降の押鍵が、現在の拍まで延びている場合に、シンコペーションであると判断し、現在メロディ音CMを、現在の拍まで延びている押鍵に関するものに決定する。すなわち、拍頭の押鍵でなくとも、シンコペーションを構成する場合には、これを拍頭の押鍵と同様に取り扱うことができる。また、CPU21は、第1のドミナントモーション判定処理図10において、先行コード名PreCHがドミナントコードを示し、かつ、先行メロディ音PMから現在メロディ音CMが、予め定められた、ドミナントコードの構成音からトニックコードの構成音への移行を示す場合に、現在コード名CurCHとして、トニックに相当するコード名を与える。このように、メロディシーケンスからドミナントモーションが明確に示される場合には、現在コード名CurCHをトニックとして、コード進行における終止を形成させる。また、CPU21は、第2のドミナントモーション判定処理図17において、先行メロディ音PMから現在メロディ音CMが、予め定められた、ドミナントコードの構成音からトニックコードの構成音への移行を示す場合に、現在コード名CurCHとして、トニックに相当するコード名を与える。ここでは、先行コード名PreCHがドミナントコードではない場合でも、メロディシーケンスからドミナントモーションが明確に示される場合には、現在コード名CurCHをトニックとして、コード進行における終止を形成させる。さらに、CPU21は、第1のドミナントモーション判定処理或いは第2のドミナントモーション判定処理により、現在コード名CurCHとしてトニックに相当するコード名が付与されなかった場合に、現在コード名CurCHとして、先行コード名PreCHを与える。これにより、コード保持を実現することができる。また、本実施の形態においては、現在メロディ音CMが1拍目の押鍵に関する場合に、先行メロディ音PM、現在メロディ音CM及び先行コード名情報PreCHに対応付けられたコード名を格納した第1のコードテーブルと、現在メロディ音CMが、1拍目以外の押鍵に関する場合に、先行メロディ音PM、現在メロディ音CM及び先行コード名PrCHに対応付けられたコード名を格納した第2のコードテーブルとを備え、CPU21は、押鍵タイミングにしたがって、第1のコードテーブル或いは第2のコードテーブルを参照する。これにより、拍にしたがって異なるコード名を取得することが可能となる。また、テーブルを参照することで、リアルタイムにコード名を決定することが可能となる。さらに、本実施の形態においては、決定された先行メロディ音PM及び現在メロディ音CMに基づき、第1のコードテーブル或いは第2のコードテーブルにおいて、対応するコード名が存在しない場合に、現在コード名CurCHとしてオーギュメントaug或いはディミニッシュdimという無判定コードを付与する。これにより、先行メロディ音PMや現在メロディ音が、コード構成音或いはスケールノートでない場合であっても、楽曲においてそれほど違和感のない何らかのコード名を付与することが可能となる。さらに、本実施の形態においては、CPU21は、無判定コードテーブルを参照して、現在メロディ音CM、先行メロディ音PM及び先行コード名PreCHから、オーギュメントaug或いはディミニッシュdimの何れのコードにすべきかを判断することが可能となる。本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。たとえば、前記実施の形態においては、拍子を4拍子としているが、3拍子或いは6拍子でも本発明を適用可能である。たとえば、3拍子の場合には、上記処理のうち、1拍目~3拍目についての処理を使用すれば良い。また、6拍子は、3拍子が2つあると考え、上記1拍目~3拍目の処理を使用する。また、4拍目~6拍目は、1拍目~3拍目と同様に扱って同一の処理を実行すれば良い。また、前記実施の形態では、ハ長調CMaj或いはイ短調Aminという調性において、主音根音に対する度数を用いたコード名が得られるがこれに限定されるものではなく、他の調性についても本発明を適用可能である。この場合には、たとえば、楽曲が長調であれば、Cと、その楽曲の調性の根音との音高差が算出され、その音高差をオフセットとして、オフセット値をRAM23に格納すれば良い。処理においては、実際に押鍵された鍵番号により特定される音名をオフセットだけ減じることで、Cのスケールにて処理を実行することが可能となる。以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。[付記1]曲のメロディを演奏する演奏手段と、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行うリアルタイムコード付け手段と、前記演奏手段によるメロディ演奏終了後、前記リアルタイムコード付け手段にて付与されたコードをノンリアルタイムで修正するノンリアルタイムコード修正手段と、を有する自動コード修正装置。[付記2]前記ノンリアルタイムコード修正手段は、前記曲の所定区間ごとに、そこに含まれるメロディ音の中で前記付与されたコード以外の他のコードが成立する音が存在するか否か検証し、存在する場合に前記所定区間を修正箇所として指定するコード構成音検証手段と、曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士の楽式の一致度を検証するフレーズ区切り検証手段と、前記コード構成音検証手段及びフレーズ区切り検証手段の検証結果に基づいて、前記付与されたコードを修正するコード修正手段と、を有する付記1に記載の自動コード修正装置。[付記3]前記ノンリアルタイムコード修正手段はさらに、前記曲の所定の区間に付与されているキーが、前記所定の区間のメロディの最終音に基づいて定められるキーと一致するか否かを検証するキー判定検証手段をさらに有する付記2に記載の自動コード修正装置。[付記4]前記ノンリアルタイムコード修正手段により修正された各コードのスケールと、対応する区間の前記メロディのスケールとが一致するか否か判定し、一致していない場合は当該修正されたコードをさらに訂正するコード訂正手段をさらに有する付記1に記載の自動コード修正装置。[付記5]前記リアルタイムコード付け手段は、前記曲データ中の所定の拍に属する音高、当該拍の直前の拍に属する音高及び当該直前の拍に付与されたコードに基づいて前記所定の拍に付与すべきコードを決定する付記1に記載の自動コード修正装置。[付記6]前記コード構成音検証手段は、前記曲の小節ごとに、当該小節に含まれるメロディ音のうち、前記付与されたコードの構成音以外の他の音が存在するか否かを判別する第1の判別手段と、この第1の判別手段により他の音が存在すると判別された場合に、当該他の音が装飾音であるか否かを判別する第2の判別手段と、この第2の判別手段により装飾音と判別された場合にはこの装飾音を除いた音に基づくコードと前記小節に付与されたコードとを比較するとともに、装飾音と判別されない場合には前記他の音に基づくコードと前記小節に付与されたコードとを比較する比較手段と、この比較手段により両者のコードが一致しないと判断された場合に、前記小節の区間を修正箇所と指定する修正箇所指定手段と、を有する付記2に記載の自動コード修正装置。[付記7]前記第1の判別手段は、前記曲の小節毎に、当該小節に含まれるメロディ音のうち音長の長い3つの音を抽出するとともに、これら3つの音が前記小節に付与されているコードの構成音か判別し、コード構成音と判別した場合は、前記3つの音をコード構成音とするコード構成音判別手段を有する付記6に記載の自動コード修正装置。[付記8]前記フレーズ区切り検証手段は、前記曲を4小節毎、8小節毎及び2小節毎に区切る付記2に記載の自動コード修正装置。[付記9]前記曲データは、さらにリズム音を含み、前記フレーズ区切り検証手段は、楽式として前記フレーズ同士のメロディ音の音高及びリズム音を比較し、各フレーズを、音高及びリズム音の両方が一致する場合、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類する分類手段と、を有する付記2に記載の自動コード修正装置。[付記10]前記コード修正手段は、前記コード構成音検証手段にて修正箇所と判断された曲の区間がある場合に、当該区間における前記他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別するカデンツ判定手段と、このカデンツ判定手段により終結していると判別された場合は、前記付与されたコードを前記他のコードに訂正する訂正手段と、を有する付記2に記載の自動コード修正装置。[付記11]前記コード修正手段はさらに、前記カデンツ判定手段により終結していないと判別された場合は、前記区間に含まれるメロディ音によりキーを確定し、当該確定されたキーに基づいて新たに付与されたコードを再度前記カデンツ判定手段に供給するコード生成手段を有する付記10に記載の自動コード修正装置。[付記12]前記コード修正手段は、前記フレーズ区切り検証手段にて、音高及びリズム音の両方が一致する場合に分類されたフレーズ夫々に付与されたコードを同一のコードに訂正し、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類されたフレーズ夫々に付与されたコードの中で異なる部分のコード同士の機能が同一の場合は、当該異なる部分のコードを同一とする付記2に記載の自動コード修正装置。[付記13]コードメロディ音及び当該メロディ音に対して付与されたコードからなる曲データを取得する曲取得手段と、この取得された曲の各小節に、当該小節に属するメロディ音に基づき、前記小節に付与されているコードを検証するコード構成音検証手段と、前記曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士に付与されたコードが一致しない場合に、両者の楽式の一致度を検証するフレーズ区切り検証手段と、前記コード構成音検証手段及びフレーズ区切り検証手段の検証結果に基づいて、前記付与されたコードを修正するコード修正手段と、を有する自動コード修正装置。[付記14]コンピュータに実行させる、曲のメロディを演奏する演奏ステップと、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行うリアルタイムコード付けステップと、前記演奏ステップによるメロディ演奏終了後、前記リアルタイムコード付け手段にて付与されたコードをノンリアルタイムで修正するノンリアルタイムコード修正ステップと、を含む自動コード修正プログラム。[付記15]コンピュータに実行させる、メロディ音及び当該メロディ音に対して付与されたコードからなる曲データを取得する曲取得ステップと、この取得された曲の各小節に、当該小節に属するメロディ音に基づき、前記小節に付与されているコードを検証するコード構成音検証ステップと、前記曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士に付与されたコードが一致しない場合に、両者の楽式の一致度を検証するフレーズ区切り検証ステップと、前記コード構成音検証ステップ及びフレーズ区切り検証ステップの検証結果に基づいて、前記付与されたコードを修正するコード修正ステップと、を含む自動コード修正プログラム。"