(57)【特許請求の範囲】
【請求項１】
曲メロディを演奏する演奏手段と、
演奏されている曲メロディの音高の履歴に基づき、当該曲メロディに対してリアルタイムで調を判定するリアルタイム調判定手段と、
前記演奏手段による曲メロディ演奏終了後、当該曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢから前記最終音高に基づいて読み出された調が、前記リアルタイム調判定手段にて判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするノンリアルタイム調判定手段と、
を有する自動調判定装置。
【請求項２】
前記自動調判定装置はさらに、
前記ノンリアルタイム調判定手段にてマッチしていない判断された場合、前記確定キーＤＢより、前記曲のメロディの最終音高と関係が深い調候補を読み出すとともに当該調候補に基づいて曲の最後の区間にコードを仮付与した場合、当該仮付与されたコードが、カデンツに沿う形で終結しているか否か判定するカデンツ判定手段と、
このカデンツ判定手段により終結していると判断された場合、前記調候補で曲頭から矛盾がないか検証するとともに、矛盾がないと検証された場合、前記調候補を確定調と判別する検証手段と、を有する請求項１記載の自動調判定装置。
【請求項３】
前記自動調判定装置はさらに、
前記検証手段にて矛盾があると判定された場合に、曲の矛盾のない区間に前記調候補を、それ以外の区間に前記判定された調を割り当てる割当手段と、
曲頭の区間に割り当てられた調とそれ以外の区間に割り当てられた調との関係が盛り上り転調であるか判定するとともに、盛り上がり転調と判定された場合は、前記割り当てられた両方の調夫々を確定調とする盛り上り転調判定手段と、
を有する請求項２記載の自動調判定装置。
【請求項４】
前記自動調判定装置はさらに、
関係調と借用和音との関係を示す関係調と借用和音ＤＢを有し、
前記曲中に複数の調が割り当てられ、かつその中に未検証の調が割り当てられている区間が存在する場合でかつ、当該区間に前記未検証調の関係調にないコードが存在する場合、当該未検証調を確定調とする請求項１記載の自動調判定装置。
【請求項５】
曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢを有する自動調判定装置に用いられる自動調判定方法であって、前記自動調判定装置は、
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調判定するステップと、
前記メロディ演奏終了後、前記確定キーＤＢから前記最終音高に基づいて読み出された調が、前記判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするステップと、
を実行する自動調判定方法。
【請求項６】
曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢを有する自動調判定装置に用いられる自動調判定装置として用いられるコンピュータに、
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調を判定するステップと、
前記曲メロディ演奏終了後、前記確定キーＤＢから前記最終音高に基づいて読み出された調が、前記判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするステップと、
を実行させるプログラム。
【請求項７】
曲メロディを演奏する演奏手段と、
演奏されている曲メロディの音高の履歴に基づき、当該曲メロディに対してリアルタイムで調を判定するリアルタイム調判定手段と、
前記演奏手段による曲メロディ演奏終了後、当該曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢから前記最終音高に基づいて読み出された調が、前記リアルタイム調判定手段にて判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするノンリアルタイム調判定手段と、
前記ノンリアルタイム調判定手段にてマッチしていない判断された場合、前記確定キーＤＢより、前記曲のメロディの最終音高と関係が深い調候補を読み出すとともに当該調候補に基づいて曲の最後の区間にコードを仮付与した場合、当該仮付与されたコードが、カデンツに沿う形で終結しているか否か判定するカデンツ判定手段と、
このカデンツ判定手段により終結していると判断された場合、前記調候補で曲頭から矛盾がないか検証するとともに、矛盾がないと検証された場合、前記調候補を確定調と判別する検証手段と、
を有する自動調判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動調判定装置、自動調判定方法及びそのプログラムに関する。
【背景技術】
【０００２】
電子ピアノや電子オルガンのような鍵盤を備えた電子楽器では、主として右手でメロディを、左手で伴奏を弾く、あるいはコードを構成する複数の鍵を押鍵するのが一般的である。従ってこのような電子楽器においては、右手と左手をそれぞれ楽譜等にしたがって独立して動かすための練習が必要である。
【０００３】
このようにピアノの奏法及びオルガンの奏法の何れにおいても、右手と左手を同時に異なる形態で動かすことが必要であり、このためには相応の練習が必要である。特に、メロディを奏するために右手を動かすことは可能であるが、同時に左手で異なる演奏を行うことが困難と感じる演奏者が、特に初心者では多い。したがって、演奏者が右手でメロディを演奏することにより、左手で演奏することにより生成されるべき伴奏音を自動的に作成することのできる電子楽器が求められる。
【０００４】
例えば、特許文献１には、楽曲の音符データを複数の区間ごとに記憶しておき、音符データの第２の区間のコード名を付与するにあたり、調データ、第２の区間に対応する音符データ、第１の区間の音符データ及び先に第２の区間に付与されているコード名を参照して、新たなコード名を決定する装置が提案されている。
【０００５】
このようにコードを決定するための要素のひとつとして、楽曲を構成する音符が用いられているが、これら音符それぞれが均等にコード決定に反映されるものではない。例えば音符がいずれの拍に含まれるかによってその重みが異なり、また、その拍内における時間的な位置によっても重みが異なる。したがって、その重みを反映させて、コード名を決定するのが望ましい。また、単一の音符のみを参照するのではなく、複数の音符の遷移に応じてコード名を決定するのが、より望ましい。
【０００６】
そこで、特許文献２では、楽曲を構成する音符の重み及びその遷移に基づいて、リアルタイムに適切にコード名を決定することができる自動伴奏装置が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３０９９４３６号公報
【特許文献２】特開２０１１−１５８８５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、リアルタイムでコード付けを行うと、経験則から作成されたデータベースを利用しながらある程度決め付けることになり、単純な曲では精度よくリアルタイムコード付けできても、装飾音や借用和音が使われる場合には、リアルタイムコード付けの精度が低くなる場合があった。
このコード付けの精度が低くなる原因のひとつとして、コード付けに際して必要となる、楽曲の調（キー）判定の精度が低いことが挙げられる。
楽曲の調は常に一定とは限らない。楽曲によっては途中で、他の調に移行する転調が生じる場合が多々ある。転調が生じた場合には、付与されるコード名の決定に先立ち、どの調に移行したかを判断し、新たな調を取得する必要がある。
通常、楽曲の調を判定するには、その楽曲を構成するメロディの音高の履歴を用いて行われる場合が多い。しかしながら、リアルタイムで演奏される楽曲のメロディから調を判定しようとすると、楽曲・フレーズの開始時などには履歴に含まれる音高が少なく、正確に調を判定することは、楽曲の種類によっては困難になる場合があった。
このように、リアルタイムコード付けの精度を高めるためには、リアルタイムで判定される調をより正確なものにする必要があった。
【０００９】
本発明は、リアルタイムで演奏される楽曲の調判定結果の精度をより上げることにより、楽曲に対してリアルタイムで付与されたコードの精度を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一態様の自動調判定装置は、
曲メロディを演奏する演奏手段と、
演奏されている曲メロディの音高の履歴に基づき、当該曲メロディに対してリアルタイムで調を判定するリアルタイム調判定手段と、
前記演奏手段による曲メロディ演奏終了後、当該曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢから前記最終音高に基づいて読み出された調が、前記リアルタイム調判定手段にて判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするノンリアルタイム調判定手段と、
を有する。
また、本発明の一態様の自動調判定方法は、
曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢを有する自動調判定装置に用いられる自動調判定方法であって、前記自動調判定装置は、
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調判定するステップと、
前記メロディ演奏終了後、前記確定キーＤＢから前記最終音高に基づいて読み出された調が、前記判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするステップと、
を実行する。
さらに本発明の一態様のプログラムは、
曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢを有する自動調判定装置に用いられる自動調判定装置として用いられるコンピュータに、
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調を判定するステップと、
前記曲メロディ演奏終了後、前記確定キーＤＢから前記最終音高に基づいて読み出された調が、前記判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするステップと、
を実行させる。
また、本発明の一態様の自動調判定装置は、
曲メロディを演奏する演奏手段と、
演奏されている曲メロディの音高の履歴に基づき、当該曲メロディに対してリアルタイムで調を判定するリアルタイム調判定手段と、
前記演奏手段による曲メロディ演奏終了後、当該曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢから前記最終音高に基づいて読み出された調が、前記リアルタイム調判定手段にて判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするノンリアルタイム調判定手段と、
前記ノンリアルタイム調判定手段にてマッチしていない判断された場合、前記確定キーＤＢより、前記曲のメロディの最終音高と関係が深い調候補を読み出すとともに当該調候補に基づいて曲の最後の区間にコードを仮付与した場合、当該仮付与されたコードが、カデンツに沿う形で終結しているか否か判定するカデンツ判定手段と、
このカデンツ判定手段により終結していると判断された場合、前記調候補で曲頭から矛盾がないか検証するとともに、矛盾がないと検証された場合、前記調候補を確定調と判別する検証手段と、
を有する。
【発明の効果】
【００１１】
本発明によれば、コード付けの精度をより高めることができる自動調判定装置を提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施の形態にかかる自動調修正装置の外観を示す図である。
【図２】図２は、本発明の実施の形態にかかる自動調修正装置の構成を示すブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる自動調修正装置において実行されるメインフローの例を示すフローチャートである。
【図４】図４は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。
【図５】図５は、本実施の形態にかかるコード名判定処理の例を示すフローチャートである。
【図６】図６は、本実施の形態にかかる１拍目・３拍目対応ノート決定処理の例を示すフローチャートである。
【図７】図７は、本実施の形態にかかる１拍目・３拍目対応ノート決定処理の例を示すフローチャートである。
【図８】図８は、本実施の形態にかかる１拍目・３拍目対応ノート決定処理の例を示すフローチャートである。
【図９】図９は、本実施の形態にかかる１拍目・３拍目対応ノート決定処理の例を示すフローチャートである。
【図１０】図１０は、本実施の形態にかかる第１のドミナントモーション判定処理の例を示すフローチャートである。
【図１１】図１１は、本実施の形態にかかる２拍目対応ノート決定処理の例を示すフローチャートである。
【図１２】図１２は、本実施の形態にかかる２拍目対応ノート決定処理の例を示すフローチャートである。
【図１３】図１３は、本実施の形態にかかる２拍目対応ノート決定処理の例を示すフローチャートである。
【図１４】図１４は、本実施の形態にかかる２拍目対応ノート決定処理の例を示すフローチャートである。
【図１５】図１５は、本実施の形態にかかる４拍目対応ノート決定処理の例を示すフローチャートである。
【図１６】図１６は、本実施の形態にかかる４拍目対応ノート決定処理の例を示すフローチャートである。
【図１７】図１７は、本実施の形態にかかる第２のドミナントモーション判定処理の例を示すフローチャートである。
【図１８】図１８は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。
【図１９】図１９は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。
【図２０】図２０は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。
【図２１】図２１は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。
【図２２】図２２は、本実施の形態にかかるメロディシーケンステーブルの例を示す図である。
【図２３】図２３は、本実施の形態にかかる第１のコードテーブルの例を示す図である。
【図２４】図２４は、本実施の形態にかかる第２のコードテーブルの例を示す図である。
【図２５】図２５は、本実施の形態にかかるメロディ機能テーブルの一例の部分を示す図である。
【図２６】図２６は、本実施の形態にかかる無判定コードテーブルの一例の部分を示す図である。
【図２７】図２７は、本実施の形態にかかるノンリアルタイムコード修正処理の例を示すフローチャートである。
【図２８】図２８は、本実施の形態にかかる調修正検証処理の例を示すフローチャートである。
【図２９】図２９は、本実施の形態にかかる調修正検証処理の例を示すフローチャートである。
【図３０】図３０は、本実施の形態にかかるコード構成音検証処理の例を示すフローチャートである。
【図３１】図３１は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。
【図３２】図３２は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。
【図３３】図３３は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。
【図３４】図３４は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。
【図３５】図３５は、本実施の形態にかかるコード付け修正処理の例を示すフローチャートである。
【図３６】図３６は、本実施の形態にかかるコード付け修正処理の例を示すフローチャートである。
【図３７】図３７は、本実施の形態にかかるメロディとコードスケールの比較処理の例を示すフローチャートである。
【図３８】図３８は、本実施の形態にかかるユーザーによる修正処理の例を示すフローチャートである。
【図３９】図３９は、本実施の形態にかかる最終メロディ音によるキー確定テーブルの例を示す図である。
【図４０】図４０は、本実施の形態にかかるカデンツ判定テーブルの例を示す図である。
【図４１】図４１は、本実施の形態にかかる関係調借用判定テーブルの例を示す図である。
【図４２】図４２は、本実施の形態にかかる装飾音データベースの一例の部分を示す図である。
【図４３】図４３は、本実施の形態にかかるコードスケールテーブルの一例の部分を示す図である。
【図４４】図４４は、本実施の形態にかかるコード優先データベースの一例の部分を示す図である。
【図４５】図４５は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。
【図４６】図４６は、楽譜の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本実施の形態にかかる自動調判定装置を適用した電子楽器の外観を示す図である。図１に示すように、本実施の形態にかかる電子楽器１０は、鍵盤１１を有する。また、鍵盤１１の上部には、音色の指定、自動伴奏の開始・終了、リズムパターンの指定などを行なうためのスイッチ（符号１２、１３参照）や、リアルタイムでのコード付けが終了した後にノンリアルタイムでのコード修正を開始するためのノンリアルタイムコード付け修正スイッチ１４、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コード名などを表示する表示部１５を有する。本実施の形態にかかる電子楽器１０は、たとえば、６１個の鍵（Ｃ２〜Ｃ７）を有する。また、電子楽器１０は、自動伴奏をオンする自動伴奏モード、及び、自動伴奏をオフにする通常モードの２つの演奏モードのうち、何れかの下での演奏が可能である。
【００１４】
図２は、本発明の実施の形態にかかる自動調判定装置の構成を示すブロックダイヤグラムである。図２に示すように、本実施の形態にかかる電子楽器１０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、サウンドシステム２４、スイッチ群２５、鍵盤１１及び表示部１５を備える。
【００１５】
ＣＰＵ２１は、電子楽器１０全体の制御、鍵盤１１の鍵の押鍵やスイッチ群２５を構成するスイッチ（たとえば、図１の符号１２、１３、１４参照）の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム２４の制御、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターン及びコード名にしたがった自動伴奏の演奏など、種々の処理を実行する。
【００１６】
ＲＯＭ２２は、ＣＰＵ２１に実行させる種々の処理、たとえば、スイッチの操作、鍵盤の何れかの鍵の押鍵、押鍵に応じた楽音の発音、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターン及びコード名にしたがった自動伴奏の演奏などのプログラムを記憶する。また、ＲＯＭ２２は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリア、及び、種々の自動伴奏パターンを示すデータ（自動伴奏データ）を格納した自動伴奏パターンエリアを有する。ＲＡＭ２３は、ＲＯＭ２２から読み出されたプログラムや、処理の過程で生じたデータを記憶する。なお、本実施の形態において、自動伴奏パターンは、コード名ごとの構成音を含むコードパターン、ベース音を含むベースパターン、及びドラム音を含むリズムパターンを有する。たとえば、コードパターン及びベースパターンのデータのレコードは、楽音の音高、発音タイミング（発音時刻）、音長を含む。また、リズムパターンのデータは、楽音の音色、発音タイミングを含む。
【００１７】
サウンドシステム２４は、音源部２６、オーディオ回路２７及びスピーカ２８を有する。音源部２６は、たとえば、押鍵された鍵についての情報或いは自動伴奏パターンについての情報をＣＰＵ２１から受信すると、ＲＯＭ２２の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部２６は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路２７は、楽音データをＤ／Ａ変換して増幅する。これによりスピーカ２８から音響信号が出力される。
【００１８】
本実施の形態にかかる電子楽器１０は、通常モードの下においては、鍵盤１１の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器１０は、自動伴奏スイッチ（図示せず）が操作されることにより、自動伴奏モードとなる。自動伴奏モードの下では、鍵の押鍵により、その鍵の音高の楽音が発生する。また、押鍵された鍵の音高に基づいてコード名が決定され、そのコード名のコード構成音を含む自動伴奏パターンにしたがった楽音が発生する。以下、電子楽器１０が、自動伴奏モードの下で動作する場合について説明する。
【００１９】
以下、本実施の形態にかかる電子楽器１０において実行される処理についてより詳細に説明する。図３は、本実施の形態にかかる自動調修正装置において実行されるメインフローの例を示すフローチャートである。なお、図示しないが、メインフローの実行中に、所定の時間間隔で、割込カウンタのカウンタ値をインクリメントするタイマインクリメント処理も実行される。
【００２０】
図３に示すように、電子楽器１０のＣＰＵ２１は、電源が投入されると、ＲＡＭ２３中のデータや、表示部１５の画像のクリアを含むイニシャル処理（初期化処理）を実行する（ステップＳ１）。イニシャル処理（ステップＳ１）が終了すると、ＣＰＵ２１は、スイッチ群２５を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する（ステップＳ２）。
【００２１】
たとえば、スイッチ処理（ステップＳ２）においては、音色指定スイッチや、自動伴奏パターンの種別の指定スイッチ、自動伴奏パターンのオン・オフの指定スイッチなど、種々のスイッチの操作が検出される。自動伴奏パターンがオンとなったときには、ＣＰＵ２１は、演奏モードを、自動伴奏モードに切り換える。演奏モードを示すデータは、ＲＡＭ２３の所定の領域に指定される。音色や自動伴奏パターンの種別を示すデータも、同様に、ＲＡＭ２３の所定の領域に格納される。
【００２２】
次いで、ＣＰＵ２１は、鍵盤処理を実行する（ステップＳ３）。図４は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。鍵盤処理において、ＣＰＵ２１は、鍵盤１１の鍵を順次走査する（ステップＳ１１）。ＣＰＵ２１は、その走査結果を参照して、ある鍵についてイベントが発生しているか否かを判断する（ステップＳ１２）。ステップＳ１２でＹｅｓと判断された場合には、ＣＰＵ１１は、その発生したイベントが鍵オン（押鍵）であるか否かを判断する（ステップＳ１３）。
【００２３】
ステップＳ１３でＹｅｓと判断された場合には、ＣＰＵ２１は、当該鍵オンがなされた鍵に対応する発音処理を実行する（ステップＳ１４）。この発音処理において、ＣＰＵ２１は、ＲＡＭ２３に記憶されていたメロディ鍵用の音色データ、及び、その鍵に対応する音高を示すデータを読み出してＲＡＭ２３に一時的に記憶する。後述する音源発音処理（図３のステップＳ６）において、これら一時的に記憶された音色及び音高を示すデータを音源部２６に与える。音源部２６は、音色及び音高を示すデータにしたがって、ＲＯＭ２２から波形データを読み出すことにより楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。
【００２４】
その後、ＣＰＵ２１は、鍵オンがあった鍵についての音高情報（たとえば鍵番号）及び押鍵タイミング（たとえば押鍵時刻）をＲＡＭ２３に格納する（ステップＳ１５）。押鍵タイミングは、割り込みカウンタのカウンタ値に基づいて算出することができる。
【００２５】
ステップＳ１３でＮｏと判断された場合には、発生イベントが鍵オフ（離鍵）であったことになる。したがって、ＣＰＵ２１は、鍵オフとなった鍵についての消音処理を実行する（ステップＳ１６）。消音処理においては、ＣＰＵ２１は、この発生されたイベントに含まれる音高を示すデータを取り出す。この場合にも、後述する音源発音処理（ステップＳ６）において、この取り出された音高を示すデータが、音源部２６に与えられる。音源部２６は、与えられたデータに基づいて、この音高の楽音を消音する。その後、ＣＰＵ２１は、鍵オフがあった鍵について、離鍵された時間（離鍵時刻）をＲＡＭ２３に格納する（ステップＳ１７）。
【００２６】
ＣＰＵ２１は、全ての鍵イベントについて処理が終了したかを判断する（ステップＳ１８）。ステップＳ１８でＮｏと判断された場合には、ステップＳ１２に戻る。
【００２７】
鍵盤処理（図３のステップＳ３）が終了すると、ＣＰＵ２１は、コード判定処理を実行する（ステップＳ４）。図５は、本実施の形態にかかるコード判定処理の例を示すフローチャートである。本実施の形態においては、概略的には、現在発音されているメロディ音を、現在メロディ音（Ｃｕｒｒｅｎｔ  Ｍｅｌｏｄｙ）ＣＭ、それより１つ前に発音されているメロディ音を、先行メロディ音（Ｐｒｅｖｉｏｕｓ  Ｍｅｌｏｄｙ）ＰＭ、現在より一つ前に演奏されていたコード名を、先行コード名（Ｐｒｅｖｉｏｕｓ  ＣＨｏｒｄ  ｎａｍｅ）ＰｒｅＣＨとして、現在メロディ音ＣＭ、先行メロディ音ＰＭ及び先行コード名ＰｒｅＣＨに基づいて、新たに発音すべき現在コード名（Ｃｕｒｒｅｎｔ  ＣＨｏｒｄ  ｎａｍｅ）ＣｕｒＣＨを決定している。なお、本実施の形態においては、楽曲の調性をハ長調（ＣＭａｊ）或いはイ短調（Ａｍｉｎ）として、コード名については、ＩＭａｊ、ＩＩｍなど、主音に対する度数で表し、そのデータをＲＡＭ２３などに記憶している。他の調性の場合には、当該調性のルート音と、「Ｃ」（或いは「Ａ」）の音との音高差に基づいて、ルート音を伴うコード名を得ることが可能である。
なお、楽曲の調性は、ハ長調（ＣＭａｊ）或いはイ短調（Ａｍｉｎ）として予め定められている場合に限られず、他の長調、短調を含めてリアルタイムに決定してもよい。この場合、決定される調の種類は、１つ以上となる。さらに、決定された調は、ＲＡＭ２３に記憶される。
【００２８】
ただし、押鍵が何拍目に行なわれたかなど、押鍵された時間的な位置や、押鍵が拍の頭であるか否か、或いは、複数の押鍵による音型（持続、順次進行、跳躍など）に基づいて、上記現在メロディ音ＣＭ及び先行メロディ音ＰＭを決定すべき場合がある。つまり、現実に現在押鍵されている鍵以外の押鍵について現在メロディ音ＣＭとすべき場合や、現在押鍵された鍵の１つ前に押鍵された鍵以外の押鍵について先行メロディ音ＰＭとすべき場合がある。以下、コード判定処理において、ステップＳ２４〜３０は、主として、現在メロディ音ＣＭ及び先行メロディ音ＰＭの決定に関する。引き続いて実行されるステップＳ３１が、現在メロディ音ＣＭ、先行メロディ音ＰＭ及び先行コード名ＰｒｅＣＨに基づいて、具体的に現在コード名ＣｕｒＣＨを決定する処理となる。
【００２９】
まず、ＣＰＵ２１は、現在時刻が属する拍の情報及び押鍵情報（鍵オンの時刻や鍵オフまでの時間）を特定して、現在の拍において押鍵された鍵を特定し、かつ、現在時刻が属する拍の一つ前の区間（前拍区間）において、押鍵されていた鍵の情報を取得する（ステップＳ２１）。ステップＳ２１において、現在の拍における押鍵された鍵の情報が、現在メロディ音ＣＭの初期値、前拍区間の先頭で押鍵された鍵の情報が、先行メロディ音ＰＭの初期値となる。
【００３０】
次いで、ＣＰＵ２１は、拍の情報及び押鍵情報に基づいて、現在時刻が属する拍の先頭に押鍵中の鍵が存在しているかを判断する（ステップＳ２２）。ステップＳ２３でＮｏと判断された場合には、コード名判定処理が終了する。ステップＳ２２でＹｅｓと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨを、先行コード名ＰｒｅＣＨにコピーする（ステップＳ２３）。
【００３１】
ＣＰＵ２１は、後述するコードテーブルを指定するテーブル指定情報を、第２のコードテーブルを指定する情報に設定する（ステップＳ２４）。コードテーブルには、主として押鍵が１拍目であるときに用いる第１のコードテーブルと、それ以外のときに用いる第２のコードテーブルが含まれ、それぞれＲＯＭ２２に格納されている。テーブル指定情報は、第１のコードテーブル或いは第２のコードテーブルの何れを用いるかを示す情報であり、ＲＡＭ２３に格納される。
【００３２】
次いで、押鍵された鍵の時間的位置、つまり、鍵が何拍目に押鍵されたかを判断する（ステップＳ２５、２６、２８）。押鍵が１拍目である場合（ステップＳ２５でＹｅｓ）或いは押鍵が３拍目である場合（ステップＳ２６でＹｅｓ）には、ＣＰＵ２１は、１拍目・３拍目対応ノート決定処理を実行する（ステップＳ２７）。押鍵が２拍目である場合（ステップＳ２８でＹｅｓ）には、２拍目対応ノート決定処理を実行する（ステップＳ２９）。また、ステップＳ５０８でＮｏと判断された場合、つまり、押鍵が４拍目である場合には、４拍目対応ノート決定処理を実行する（ステップＳ３０）。
【００３３】
本実施の形態においては、楽曲は４分の４拍子であり、１小節が４拍で構成される。押鍵がｎ拍目であることは、押鍵のタイミングが、第ｎ拍の先頭以降で、第（ｎ＋１）拍の先頭よりも時間的に早いことを意味している。
【００３４】
楽曲の構成要素には拍子及び拍という概念がある。また、拍子においては拍ごとに重みがあり、上記拍の重みを考慮してメロディは進行する。また、シンコペーションなど、場合によって拍の重みが移動する場合もある。本実施の形態においては、拍の重みを考慮して、最適なメロディの流れを構成する構成音を抽出し、コード判定に用いるのに最適な現在メロディ音ＣＭ及び先行メロディ音ＰＭを特定する。
【００３５】
図６〜図９は、本実施の形態にかかる１拍目・３拍目対応ノート決定処理の例を示すフローチャートである。図６に示すように、押鍵が１拍目に関するものであるかを判断する（ステップＳ４１）。ステップＳ２４でＹｅｓと判断された場合には、ＣＰＵ２１は、テーブル指定情報を、第１のテーブルを示す情報に変更する（ステップＳ４２）。次いで、ＣＰＵ１２は、第１のドミナントモーション判定処理を実行する（ステップＳ４３）。
【００３６】
ドミナントモーション判定処理は、メロディの流れからドミナントモーション（つまり、属和音（ドミナント）から主和音（トニック）への進行）を抽出するものである。本実施の形態においては、処理においてコード名を考慮した第１のドミナントモーション判定処理と、コード名を考慮しない第２のドミナントモーション判定処理とが用いられる。図１０は、本実施の形態にかかる第１のドミナントモーション判定処理の例を示すフローチャートである。
【００３７】
図１０に示すように、ＣＰＵ２１は、ＲＡＭ２３に格納された先行コード名ＰｒｅＣＨが、メジャー系のドミナントコードのいずれかに対応するかを判断する（ステップＳ８１）。ここで、本実施の形態にかかる第１のドミナントモーション判定処理においては、たとえば、メジャー系のドミナントコードは、「ＶＭａｊ」、「Ｖ７」及び「ＶＩＩｍ７（−５）」としている。ステップＳ８１でＹｅｓと判断された場合には、ＣＰＵ２１は、（先行メロディ音ＰＭ及び現在メロディ音ＣＭの値の組である（ＰＭ，ＣＭ）が、（Ｆ，Ｅ）、（Ｂ，Ｃ）、（Ｄ，Ｃ）の何れかであるかを判断する（ステップＳ８２）。ステップＳ８２では、先行メロディ音ＰＭから現在メロディ音ＣＭへの動きが、長調の和音進行でドミナントからトニックに解決するときの動きであるか否かを判断している。
【００３８】
ステップＳ８２でＹｅｓと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨを「ＩＭａｊ」に決定し、その情報をＲＡＭ２３に格納する（ステップＳ８３）。その後、ＣＰＵ２１は、ドミナントモーション処理において第１の判定結果であったことを示す情報をＲＡＭ２３に格納する（ステップＳ８４）。ステップＳ８１でＮｏ或いはステップＳ８２でＮｏと判断された場合には、ＣＰＵ２１は、先行コード名ＰｒｅＣＨが、マイナー系のドミナントコードの何れかに対応するかを判断する（ステップＳ８５）。ここで、本実施の形態において、たとえば、マイナー系のドミナントコードは、「ＩＩＩＭａｊ」及び「ＩＩＩ７」としている。
【００３９】
ステップＳ８５でＹｅｓと判断された場合には、ＣＰＵ２１は、（ＰＭ，ＣＭ）が、（Ｇ＃，Ａ）、（Ｂ，Ａ）、（Ｄ，Ｃ）の何れかであるかを判断する（ステップＳ８６）。ステップＳ８６においては、先行メロディ音ＰＭから現在メロディ音ＣＭへの動きが、短調の和音進行でドミナントからトニックに解決するときの動きであるか否かを判断している。ステップＳ８６でＹｅｓと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨを「ＶＩｍｉｎ」に決定し、その情報をＲＡＭ２３に格納する（ステップＳ８７）。その後、ステップＳ８４に進む。
【００４０】
ステップＳ８５でＮｏと判断された場合、或いは、ステップＳ８６でＮｏと判断された場合には、ＣＰＵ２１は、ドミナントモーション処理において第２の判定結果であったことを示す情報をＲＡＭ２３に格納する（ステップＳ８８）。
【００４１】
ステップＳ４３の第１のドミナントモーション判定処理が終了すると、ＣＰＵ２１は、第１のドミナントモーション判定処理の結果が、第２の処理結果であったかを判断する（ステップＳ４４）。ステップＳ４４でＮｏと判断された場合、つまり、第１のドミナントモーション判定処理の結果が、第１の処理結果であった場合には、先行メロディ音ＰＭ及び現在メロディ音ＣＭを初期値から変更することなく、ＲＡＭ２３に格納して、処理を終了する（ステップＳ４５）。ステップＳ４４でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３に格納された押鍵情報を参照して、現在時刻に対応する拍の直前拍に押鍵があったかを判断する（ステップＳ４６）。
【００４２】
ステップＳ４４でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３の押鍵情報を参照して、直前拍先頭以降にも押鍵があったかを判断する（ステップＳ４７）。ステップＳ４７でＮｏと判断されたことは、直前拍及び今回の拍でそれぞれ４分音符が押鍵されたことを意味する。この場合の処理については後述する。ステップＳ４７でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３に格納された押鍵情報中、直前拍先頭以降に押鍵された鍵の発音時間を参照して、現在まで発音中であるかを判断する（ステップＳ４９）。ステップＳ４９では、拍頭の押鍵ではなくても、それが直前拍先頭以降に押鍵されかつ維持されているものであれば、シンコペーションに該当するため、シンコペーションに該当する押鍵があったかを判断している。
【００４３】
ステップＳ４９でＹｅｓと判断された場合には、先行メロディ音ＰＭは初期値のまま、その一方、直前拍先頭以降に押鍵された鍵を現在メロディ音ＣＭとするとともに、シンコペーションフラグＳＹＮを「１」にセットして、ＲＡＭ２３に格納する（ステップＳ５０）。先行メロディ音ＰＭ及び現在メロディ音ＣＭは、ＲＡＭ２３に格納される。シンコペーションに該当する押鍵は、拍頭における押鍵と同様の重みを有するため、拍頭と同様に扱われる。
【００４４】
次に、図７を参照して、ステップＳ４６でＮｏであった場合について説明する。ステップＳ４６でＮｏと判断された場合には、ＣＰＵ２１は、現在の拍先頭における押鍵が曲開始音に該当するかを判断する（ステップＳ５１）。ステップＳ５１は、ＣＰＵ２１が、ＡＭ２３に格納された押鍵情報を参照して、最初の押鍵情報であるかを判断することにより実現できる。ステップＳ５１でＹｅｓと判断された場合には、先行メロディ音ＰＭとして、現在メロディ音ＣＭを与える。また、現在メロディ音ＣＭを初期値から変更することはないが、ＣＰＵ２１は、テーブル指定情報を第２のコードテーブルを指定する情報に変更する（ステップＳ５２）。
【００４５】
ステップＳ５１でＮｏと判断された場合には、８拍以上の時間、押鍵が無いかを判断する（ステップＳ５３）。ステップＳ５３でＹｅｓと判断された場合には、ＣＰＵ２１は、現在メロディ音ＣＭは初期値のまま維持し、その一方、先行メロディ音ＰＭとして、現在メロディ音ＣＭを与え、ＲＡＭ２３に情報を格納する（ステップＳ５４）。ステップＳ５３でＹｅｓと判断される場合は、２小節以上、新たな押鍵が無いことになる。この場合には、メロディシーケンスの意味が薄くなるため、２小節以上前に押鍵された先行メロディ音ＰＭの初期値は無視することとしている。ステップＳ５３でＮｏと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭ及び現在メロディ音ＣＭを初期値のまま維持する（ステップＳ５５）。
【００４６】
次に、図８を参照して、ステップＳ４７でＮｏと判断された場合について説明する。ステップＳ４７でＮｏと判断された場合には、ＣＰＵ２１は、現在メロディ機能（ＣｕｒｒｅｎｔＭｅｌｏｄｙＦｕｎｃｔｉｏｎ：ＣＭＦ）が、非和声音（ＯｔｈｅｒＴｏｎｅ：ＯＴ）であるかを判断する（ステップＳ６１）。ここに、現在メロディ機能ＣＭＦは、先行コード名ＰｒｅＣＨに対する現在メロディ音ＣＭの機能を示す。本実施の形態において、ＣＭＦは、現在メロディ音ＣＭが、先行コード名ＰｒｅＣＨのコード構成音であることを示すコードトーン（ＣｈｏｒｄＴｏｎｅ：ＣＴ）、現在のスケール（調性）の構成音であることを示すスケールノート（ＳｃａｌｅＮｏｔｅ：ＣＮ）、その他の音（非和声音）を示すアザートーン（ＯｔｈｅｒＴｏｎｅ）の何れかとなる。
【００４７】
より具体的には、コード名と音名との間を関連付けたメロディ機能テーブルをＲＯＭ２２に格納し、ＣＰＵ２１が、現在メロディ音ＣＭ及び先行コード名ＰｒｅＣＨの組に対応付けられた値を参照して、現在メロディ機能を判断している。図２５は、本実施の形態にかかるメロディ機能テーブルの一例の部分を示す図である。図２５に示すように、メロディ機能テーブル２５００においては、現在メロディ音ＣＭと先行コード名ＰｒｅＣＨからなる値の組に対応して、所定の値が取得できるようになっている。図２５において、メロディ機能テーブル２５００中、ＣＴはコードトーンを示し（たとえば、符号２５０１〜２５０３参照）、ＳＮは、スケールノートを示す（たとえば、符号２５１１〜２５１３参照）。また、図２５においては、メロディ機能テーブル２５００中、何も記載されていない欄（たとえば、符号２５２１、２５２２参照）は、アザートーンを示す。
【００４８】
ステップＳ６１でＹｅｓと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭ及び現在メロディ音ＣＭを、初期値のまま維持する（ステップＳ６２）。その一方、ステップＳ６１でＮｏと判断された場合には、ＣＰＵ２１は、現在メロディ機能ＣＭＦがスケールノートＳＮであるかを判断する（ステップＳ６３）。ステップＳ６３でＹｅｓと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭと現在メロディ音ＣＭとの差が２半音以内であるかを判断する（ステップＳ６４）。ステップＳ６４では、いわゆる順次進行であるかが判断されている。ステップＳ６４でＹｅｓと判断された場合、又は、ステップＳ６３でＮｏと判断された場合には、第１のドミナントモーション処理を実行する（ステップＳ６５）。
【００４９】
次いで、ＣＰＵ２１は、第１のドミナントモーション判定処理（ステップＳ６５）において、第２の判定結果であるかを判断する（ステップＳ６６）。ステップＳ６６でＮｏと判断された場合、つまり、第１の判定結果である場合には、ＣＰＵ２１は、先行メロディ音ＰＭ及び現在メロディ音ＣＭを、初期値のまま維持する（ステップＳ６２）。ステップＳ６６でＹｅｓと判断された場合には、ＣＰＵ２１は、現在の押鍵、つまり、処理対象となっている押鍵が１拍目のものであるかを判断する（ステップＳ６３）。ステップＳ６３でＹｅｓと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭ及び現在メロディ音ＣＭを、初期値のまま維持する（ステップＳ６８）。
【００５０】
その一方、ステップＳ６７でＮｏと判断された場合、つまり、処理対象となっている押鍵が３拍目のものであれば、ＣＰＵ２１は、先行メロディ音ＰＭとして、初期的な先行メロディ音ＰＭよりさらに１つ前に押鍵された音高ＰＰＭを与える（ステップＳ６９）。なお、現在メロディ音ＣＭは初期値が維持される。これは、３拍目で順次進行を構成する楽音は、装飾的な音である可能性が高く、メロディラインを支配する本来の楽音は、さらにその一拍前の楽音とすることが適切であると考えられるからである。
【００５１】
次に、ステップＳ４９でＮｏと判断された場合について説明する。図９に示すように、ＣＰＵ２１は、直前拍における拍頭以降の押鍵音を特定し（ステップＳ７１）、特定された押鍵音の音高が、初期的なＣＭと同一であるかを判断する（ステップＳ７２）。ステップＳ７２でＹｅｓと判断された場合には、ＣＰＵ２１は、現在メロディ音ＣＭを初期的な状態で維持し、その一方、先行メロディ音ＰＭとして、現在メロディ音ＣＭの値を与える（ステップＳ７３）。たとえば、直前拍において、８分音符で「Ｄ」、「Ｃ」という順でメロディが進行し、現在の拍での押鍵が「Ｃ」であった場合を考える。この場合には、直前拍の最初の「Ｄ」の音は装飾音であると考えて、「Ｄ」から「Ｃ」というシーケンスではなく、「Ｃ」から「Ｃ」というシーケンスが適当であると考えている。このため、先行メロディ音を、現在メロディ音と同じにして、同じ音の連続としている。
【００５２】
ステップＳ７２でＮｏと判断された場合には、ＣＰＵ２１は、特定された拍頭以降の押鍵音が、全て、先行メロディ音ＰＭと等しいかを判断する（ステップＳ７４）。ステップＳ７４でＹｅｓと判断された場合には、ステップＳ６３に進む。たとえば、直前拍において、１６分音符で、「Ｄ」、「Ｃ」、「Ｃ」、「Ｃ」という４つの押鍵がなされたと考える。この場合には、拍頭であるからといって「Ｄ」は、装飾的な音であることも考えられるため、拍頭の押鍵である「Ｄ」を、先行メロディ音ＰＭとすべきではない場合もある。そこで、ステップＳ６３以降の処理を実行している。
【００５３】
その一方、ステップＳ７４でＮｏと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭ及び現在メロディ音ＣＭを、初期値のまま維持する（ステップＳ７５）。
【００５４】
次に、２拍目対応ノート決定処理（ステップＳ２９）について説明する。図１１〜図１４は、本実施の形態にかかる２拍目対応ノート決定処理の例を示すフローチャートである。図１１に示すように、ＣＰＵ２１は、１拍目に押鍵が無かったかを判断する（ステップＳ９１）。ステップＳ９１でＹｅｓと判断された場合、つまり、押鍵が゛無かった場合には、ＣＰＵ２１は、テーブル指定情報を第１のコードテーブルを指定する情報に変更する（ステップＳ９１）。たとえば、曲の途中で、前の小節の音が延び、１拍目が休符で、２拍目から次のフレーズが開始されるときには、本実施の形態では、２拍目で押鍵された音が１拍目と同様の重みがあると考え、１拍目用のコードテーブルである第１のコードテーブルを使用するようにしている。
【００５５】
２拍目対応ノート処理では、１拍目・３拍目対応ノート決定処理の第１のドミナントモーション判定処理（ステップＳ４３）及びその判定結果に基づく処理（ステップＳ４４、４５）が省略されている。ステップＳ９３〜ステップＳ９７は、それぞれ、図６のステップＳ４６〜５０と同様である。
【００５６】
また、図１２は、ステップＳ９３でＮｏと判断された場合に実行される処理である。ステップＳ１０１、ステップＳ１０３〜１０５は、それぞれ、図７のステップＳ５１、ステップＳ５３〜５５と同様である。また、ステップＳ１０２では、テーブル指定情報の変更が伴わないことを除き、図７のステップＳ５２と同様である。
【００５７】
次に、ステップＳ９４でＮｏと判断された場合について説明する。図１３に示すように、ＣＰＵ２１は、現在メロディ機能ＣＭＦが、非和声音ＯＴであるかを判断する（ステップＳ１１１）。ステップＳ１１１及びステップＳ１１１でＹｅｓの場合に進むステップＳ１１２は、図８のステップＳ６１、６２と同様である。
【００５８】
ステップＳ１１１でＮｏと判断された場合には、ＣＰＵ２１は、先行コード名ＰｒｅＣＨが無判定コード以外のコードであるかを判断する（ステップＳ１１３）。図２１（特にステップＳ２０５）において説明するように、無判定コードについては、先の処理で転調フラグが「１」以上の値となっている。そこで、ステップＳ１１３では、ＲＡＭ２３に格納された転調フラグが「１」以上であるかを判断すれば良い。
【００５９】
ステップＳ１１３でＮｏ、つまり、先行コード名ＰｒｅＣＨが無判定コードである場合には、ＣＰＵ２１は、先行メロディン音ＰＭとして、現在メロディ音ＣＭを与える（ステップＳ１１４）。その一方、ステップＳ１１３でＹｅｓと判断された場合、つまり、先行コード名ＰｒｅＣＨが無判定コード以外である場合には、現在メロディ機能ＣＭＦがスケールノートＳＮであるかを判断する（ステップＳ１１５）。ステップＳ６３でＹｅｓと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭと現在メロディ音ＣＭとの差が２半音以内であるかを判断する（ステップＳ１１６）。ステップＳ１１５及びステップＳ１１６は、図８のステップＳ６３及び６４と同様である。ステップＳ１１５でＮｏと判断された場合、或いは、ステップＳ１１６でＹｅｓと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨとして、先行コード名ＰｒｅＣＨを与える（ステップＳ１１７）。つまり、先行コード名ＰｒｅＣＨが保持されることになる。
【００６０】
２拍目や４拍目においては、先行コード名が維持されるコードホールドが行なわれる場合があるため、適切なコードホールドを実現している。本実施の形態では、現在メロディ機能ＣＭＦがコードトーン（ＣＴ）である場合、或いは、現在メロディ機能ＣＭＦがスケールノート（ＳＮ）であり、かつ、順次進行である場合には、コードホールドを行なっている。４拍子の楽曲では、２拍目及び４拍目は弱拍である。したがって、メロディが弱拍を強調するものでない限り、基本的に、２拍目及び４拍目のコードは、１拍目及び３拍目のコードを維持している。
【００６１】
たとえば、図４６に示す楽曲では、拍頭に「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｅ」、「Ｄ」、「Ｃ」という音があり、この音のシーケンスは順次進行となっている。実際には、このシーケンスに適切なコード名は、ＩＭａｊ（ＣＭａｊ）である。しかしながら、ステップＳ１１５〜ステップＳ１１７に示す処理を実行しないと、２拍目や４拍目では、コード名がＩＭａｊ（ＣＭａｊ）以外になってしまう。そこで、ステップＳ１１５〜１１６に示すように一定の条件の下では、コードホールドを行なって、適切なコード名を得られるようにしている。
【００６２】
ステップＳ１１７の後、ＣＰＵ２１は、ＲＡＭ２３中のコード決定フラグを「１」にセットする（ステップＳ１１８）。この場合には、ステップＳ１１７で既に現在コード名ＣｕｒＣＨが決定されるため、後続するコード決定の処理を要さないからである。
【００６３】
また、ステップＳ１１６でＮｏと判断された場合には、ステップＳ１１２に進み、先行メロディ音ＰＭ及び現在メロディ音ＣＭが維持される。
【００６４】
ステップＳ９６でＮｏと判断された場合の処理は、図１４に示される。図１４のステップＳ１２１〜ステップＳ１２５は、図９のステップＳ７１〜７５と同様である。ステップＳ１２４でＹｅｓと判断された場合には、図１０のステップＳ１１５に進み、コードホールドが判断される。
【００６５】
次に、４拍目対応ノート決定処理（ステップＳ３０）について説明する。図１５〜図１６は、本実施の形態にかかる４拍目対応ノート決定処理の例を示すフローチャートである。４拍目対応ノート決定処理は、２拍目対応ノート決定処理と類似する。
【００６６】
図１５に示すように、４拍目対応ノート決定処理においては、１拍目の押鍵の有無及びそれに伴う処理（図１１のステップＳ９１〜９２）は省略されている。図１５において、ステップＳ１３１〜１３５は、図１１のステップＳ９３〜９７と同様である。また、ステップＳ１３１でＹｅｓと判断された場合には、図１２の処理が実行される。
【００６７】
ステップＳ１３２でＮｏと判断された場合には、図１６に示す処理が実行される。図１６において、ステップＳ１４１〜１４６は、図１３のステップＳ１１１〜１１６と同様である。４拍目対応ノート処理においては、ステップＳ１４５でＮｏ或いはステップＳ１４６でＹｅｓと判断されたときに、さらに、第２のドミナントモーション判定処理（ステップＳ１４７）を実行し、その結果に基づいて、コードホールドと行なうべきかを判断している。
【００６８】
図１７は、本実施の形態にかかる第２のドミナントモーション判定処理の例を示すフローチャートである。第２のドミナントモーション判定処理では、メロディ音の遷移のみが判断され、先行コード名ＰｒｅＣＨのコード種別は考慮されない。図１７に示すように、ＣＰＵ２１は、（ＰＭ，ＣＭ）が、（Ｆ，Ｅ）、（Ｂ，Ｃ）、（Ｄ，Ｃ）の何れかであるかを判断する（ステップＳ１５１）。これは、図１０のステップＳ８２と同様である。ステップＳ１５１でＮｏと判断された場合には、ＣＰＵ２１は、（ＰＭ，ＣＭ）が、（Ｇ＃，Ａ）、（Ｂ，Ａ）、（Ｄ，Ｃ）の何れかであるかを判断する（ステップＳ１５３）。これは、図１０のステップＳ８６と同様である。
【００６９】
ステップＳ１５１でＹｅｓと判断された場合、或いは、ステップＳ１５３でＹｅｓと判断された場合には、ＣＰＵ２１は、ドミナントモーション処理において第１の判定結果であったことを示す情報をＲＡＭ２３に格納する（ステップＳ１５２）。その一方、ステップＳ１５３でＮｏと判断された場合には、ＣＰＵ２１は、ドミナントモーション処理において第１の判定結果であったことを示す情報をＲＡＭ２３に格納する（ステップＳ１５４）。
【００７０】
第２のドミナントモーション判定処理により第２の判定結果となった場合（ステップＳ１４８でＹｅｓ）には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨとして、先行コード名ＰｒｅＣＨを与える（ステップＳ１４９）。つまり、先行コード名ＰｒｅＣＨが保持されることになる。次いで、ＣＰＵ２１は、ＲＡＭ２３中のコード決定フラグを「１」にセットする。その一方、ステップＳ１４８でＹｅｓと判断された場合には、ステップＳ１４２に進み、先行メロディ音ＰＭ及び現在メロディ音ＣＭが維持される。
【００７１】
ステップＳ１３４でＮｏと判断された場合には、図１４に示す処理が実行される。
【００７２】
ステップＳ２７、２９、３０に示す、拍のそれぞれに対応したノート決定処理が終了すると、処理により修正された先行メロディ音ＰＭ及び現在メロディ音ＣＭに基づいて、コード決定処理が実行される（ステップＳ３１）。図１８〜図２１は、本実施の形態にかかるコード決定処理の例を示すフローチャートである。
【００７３】
図１８に示すように、ＣＰＵ２１は、コードホールドにより既に現在コード名ＣｕｒＣＨが決定され、コード決定フラグが「１」ではないかを判断する（ステップＳ１６１）。ステップＳ１６１でＮｏと判断された場合、つまり、コード決定フラグが「１」である場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨ及びその発音時刻をＲＡＭ２３の所定の領域に格納する（ステップＳ１７５）。
【００７４】
ステップＳ１６１でＹｅｓと判断された場合、つまり、コード決定フラグが「１」ではない場合には、ＣＰＵ２１は、ＲＡＭ２３から先行メロディ音ＰＭ及び現在メロディ音ＣＭを取得する（ステップＳ１６２）。ＣＰＵ２１は、先行メロディ音ＰＭが曲開始音であるかを判断する（ステップＳ１６３）。ステップＳ１６３においては、たとえば、先行メロディ音ＰＭよりさらに前の時刻に押鍵された音が存在しないことを判断すれば良い。ステップＳ１６３でＮｏと判断された場合には、ＣＰＵ２１は、先行コード音ＰｒｅＣＨが無判定コードであるかを判断する（ステップＳ１６４）。
【００７５】
ステップＳ１６３でＹｅｓと判断された場合、或いは、ステップＳ１６４でＹｅｓと判断された場合には、ＣＰＵ２１は、先行メロディ音ＰＭとして、現在メロディ音ＣＭを与える（ステップＳ１６５）。ステップＳ１６４でＹｅｓと判断された場合には、先行コード名ＰｒｅＣＨが無判定コードであるため、新たにメロディシーケンスが開始する方が妥当であるからである。
【００７６】
次いで、ＣＰＵ２１は、メロディシーケンステーブルを参照して（ＰＭ，ＣＭ）に対応する値の組を取得する（ステップＳ１６６）。図２２は、本実施の形態にかかるメロディシーケンステーブルの例を示す図である。図２２に示すように、メロディシーケンステーブル２２００には、所定の先行メロディ音ＰＭ及び現在メロディ音ＣＭについて値の組が格納されている。（ＰＭ，ＣＭ）に対応する値の組がメロディシーケンステーブル２２００中に存在すれば、その値の組を一時的にＲＡＭ２３に格納すれば良い。その一方、（ＰＭ，ＣＭ）に対応する値の組が、メロディシーケンステーブル２２００中に存在しなければ、値の組が存在しないことを示す情報をＲＡＭ２３に格納すれば良い。
【００７７】
次に、ＣＰＵ２１は、現在メロディ音ＣＭの直前に押鍵された音（ＣＭ直前音）を特定する（ステップＳ１６７）。ここにいう直前に押鍵された音は、実際に直前に押鍵された音であり、先行メロディ音ＰＭと同一ではない場合もある。ＣＰＵ２１は、ステップＳ１６７で特定されたＣＭ直前音と、現在メロディ音ＣＭとを比較して、これらの音高差が５半音以上であるかを判断する（ステップＳ１６８）。ステップＳ１６８でＹｅｓと判断された場合には、ＣＰＵ２１は、現在メロディ音ＣＭが１拍目の押鍵に関するものであるかを判断する（ステップＳ１６９）。
【００７８】
メロディシーケンスにおいては、核となるべきメロディ音が含まれ、その前後には、核となるメロディ音を装飾するメロディ音が存在する場合がる。装飾するメロディ音は、核となるメロディ音からそれほど音高差が無いのが通常である。その一方、音高差が一定範囲（たとえば４度程度）以上となるように跳躍する場合には、跳躍した後の音に比較的重みが大きくなる場合が多い。そこで、ステップＳ１６８で、音高差を判断して、その差に基づいて異なる処理を行なっている。
【００７９】
ステップＳ１６９でＹｅｓと判断された場合には、ＣＰＵ２１は、先行コード名ＰｒｅＣＨが２小節以上継続しているかを判断する（ステップＳ１７１）。ステップＳ１７１でＹｅｓと判断された場合には、ＣＰＵ２１は、第１のコードテーブルのうち、種別として「ｊｕｍｐ２」の欄を参照することを決定し、第１のコードテーブル中の所定のコード名を取得する（ステップＳ１７２）。その一方、ステップＳ１７２でＮｏと判断された場合には、ＣＰＵ２１は、第１のコードテーブルのうち、種別として「ｊｕｍｐ１」の欄を参照することを決定し、第１のコードテーブル中の所定のコード名を取得する（ステップＳ１７３）。
【００８０】
図２３は、本実施の形態にかかる第１のコードテーブルの例を示す図である。図２３においては、第１のコードテーブルの一部を示している。図２３に示すように、コードテーブル２３００では、少なくとも、先行コード名の機能（先行コード機能（ＰｒｅｖｉｏｕｓＣｈｏｒｄＦｕｎｃｔｉｏｎ）：符号２３１０参照）及び（先行メロディ音ＰＭ，現在メロディ音ＣＭ）の組（たとえば、符号２３０１、２３０２参照）に基づいて、コード名が決められるようになっている。
【００８１】
さらに、本実施の形態においては、「ジャンプなし」、「ｊｕｍｐ１」及び「ｊｕｍｐ２」という３つの種別（符号２３１１参照）を設け、先行コード機能、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）の組及び種別に基づいて、コード名が決定されるようになっている。
【００８２】
先行コード機能は、トニック（ＴＯ）、サブドミナント（ＳＵ）及びドミナント（ＤＯ）の３つがある。トニックに該当するコード名として、「ＩＭａｊ」、「ＩＭ７」、「ＩＩＩｍｉｎ」、「ＩＩＩｍ７」、「ＶＩｍｉｎ」、「ＶＩｍ７」がある。サブドミナントに該当するコード名として、「ＩＩｍｉｎ」、「ＩＩｍ７」、「ＩＩｍ７（−５）」、「ＩＶＭａｊ」、「ＩＶＭ７」、「ＩＶｍｉｎ」、［ＩＶｍＭ７］がある。また、ドミナントに該当するコード名として、「ＩＩＩＭａｊ」、「ＩＩＩ７」、「ＩＩＩ７ｓｕｓ４」、「ＶＭａｊ」、「Ｖ７」、「Ｖ７ｓｕｓ４」、「ＶＩＩｍ７（−５）」がある。先行コード機能ごとの該当するコード名は、たとえば、ＲＡＭ２３に予め格納されている。
【００８３】
また、種別において「ｊｕｍｐ２」は、メロディシーケンスにおける跳躍及び先行コード名の継続を考慮して、コードの変化の程度を大きくしている。その一方、「ｊｕｍｐ１」では、「ｊｕｍｐ２」の場合よりも、コード変化の度合いが小さい。また、「ジャンプなし」という種別は、後述するように、第１のコードテーブルを使用する場合でも、「ｊｕｍｐ１」或いは「ｊｕｍｐ２」の種別が無い場合に使用されるものである。
【００８４】
たとえば、先行コード名ＰｒｅＣＨの先行コード機能が「トニック」であり、かつ、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）＝（Ｃ，Ｇ）であり、種別が「ｊｕｍｐ２」であれば、第１のコードテーブルから「ＶＭａｊ」（符号２３２１参照）が取得される。また、先行コード名ＰｒｅＣＨの先行コード機能が「トニック」であり、かつ、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）＝（Ｃ，Ｇ）であり、種別が「ｊｕｍｐ１」であれば、第１のコードテーブルから「ＩＭａｊ」（符号２３２２参照）が取得される。
【００８５】
ＣＰＵ２１は、現在コード名ＣｕｒＣＨとして、第１のコードテーブルから特定されたコード名をＲＡＭ２３の所定の領域に格納するとともに、その発音時刻をＲＡＭ２３の所定の領域に格納する（ステップＳ１７４、１７５）。
【００８６】
次に、ステップＳ１６８でＮｏ或いはステップＳ１６９でＮｏと判断された場合について説明する。ＣＰＵ２１は、現在メロディ音ＣＭが、先行コード名ＰｒｅＣＨのコードトーン（ＣＴ）であるかを判断する（ステップＳ１８１）。ステップＳ１８１でＹｅｓと判断された場合には、ＣＰＵ２１は、先行コード名ＰｒｅＣＨの楽音の発音時刻及び現在時刻に基づき、先行コード名ＰｒｅＣＨの発音時間が２拍以内であるかを判断する（ステップＳ１８２）。ステップＳ１８２でＹｅｓと判断された場合には、ＣＰＵ２１は、さらに、シンコペーションフラグが「１」であるかを判断する（ステップＳ１８３）。
【００８７】
ステップＳ１８３でＮｏと判断された場合には、ＣＰＵ２１は、第２のドミナントモーション処理を実行して（ステップＳ１８５）、先行メロディ音ＰＭから現在メロディ音ＣＭへの移行がドミナントモーションであるかを判断する。第２のドミナントモーション処理の結果が第２の判定結果である場合（ステップＳ１８５でＹｅｓ）には、ＣＰＵ２１は、現在コード名ＣｕｒＣＨとして、先行コード名ＰｒｅＣＨを与える（ステップＳ１８６）。つまり、先行コード名ＰｒｅＣＨが保持されることになる。
【００８８】
ステップＳ１８１でＮｏ、ステップＳ１８２でＮｏ、或いは、ステップＳ１８５でＮｏと判断された場合には、ＣＰＵ２１は、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）に対応する値の組が、メロディシーケンステーブル中に存在していたかを判断する（ステップＳ１８７）。図１８のステップＳ１６６において、値の組或いは値の組が存在しないことを示す情報がＲＡＭ２３に格納されているため、その情報を参照することにより、ステップＳ１８７の判断が可能である。
【００８９】
ステップＳ１８７でＹｅｓと判断された場合には、現在メロディ音ＣＭが、１拍目或いは２拍目に関するものであり、かつ、テーブル指定情報は第１のテーブルを示しているかを判断する（ステップＳ１８８）。ステップＳ１８８でＹｅｓと判断された場合には、ＣＰＵ２１は、第１のコードテーブルのうち、種別として「ジャンプなし」の欄を参照することを決定し、第１のコードテーブルにおいて、所定のコード名を取得する（ステップＳ１８９）。これに対して、ステップＳ１８８でＮｏと判断された場合には、ＣＰＵ２１は、第２のコードテーブルを参照することを決定し、第２のコードテーブルにおいて、所定のコード名を取得する（ステップＳ１９０）。
【００９０】
図２４は、本実施の形態にかかる第２のコードテーブルの例を示す図である。図２４においては、第２のコードテーブルの一部を示している。図２４に示すように、コードテーブル２３００では、先行コード名の機能（先行コード機能（ＰｒｅｖｉｏｕｓＣｈｏｒｄＦｕｎｃｔｉｏｎ）：符号２４１０参照）及び（先行メロディ音ＰＭ，現在メロディ音ＣＭ）の組（たとえば、符号２４０１、２４０２参照）に基づいて、コード名が決められるようになっている。たとえば、先行コード名ＰｒｅＣＨの先行コード機能が「サブドミナント」であり、かつ、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）＝（Ｃ，Ｇ）であれば、第２のコードテーブルから「ＶＭａｊ」（符号２４２１参照）が取得される。
【００９１】
その後、ＣＰＵ２１は、現在コード名ＣｕｒＣＨとして、第１のコードテーブル或いは第２のコードテーブルから特定されたコード名をＲＡＭ２３の所定の領域に格納するとともに、その発音時刻をＲＡＭ２３の所定の領域に格納する（ステップＳ１９１、１７５）。
【００９２】
ステップＳ１８７においてＹｅｓと判断される場合は、メロディシーケンステーブルに、（先行メロディ音ＰＭ，現在メロディ音ＣＭ）の組が存在したため、コードテーブルを参照することで適切なコード名が取得されている。その一方、ステップＳ１８７でＮｏと判断された場合には、転調或いは一時的な無判定コードの決定などが行なわれる。ステップＳ１８７でＮｏと判断された場合には、ＣＰＵ２１は、現在メロディ音ＣＭの発音時間（押鍵時間）が４分音符より大きいか、つまり、１拍より長く発音されているかを判断する（ステップＳ２０１）。
【００９３】
ステップＳ２０１でＮｏと判断された場合には、ＣＰＵ２１は、先行コード名ＰｒｅＣＨを変更せず、そのまま現在コードＣｕｒＣＨとする（ステップＳ２０７）。ステップＳ２０１でＮｏとなる場合は、演奏者が意図して押鍵したのではなく、ミスタッチによって誤った鍵を押鍵してしまった可能性が高い。そこで、この場合は、コード名を変更することなく、先行コード名ＰｒｅＣＨをそのまま現在コード名ＣｕｒＣＨとする。
【００９４】
ステップＳ２０１でＹｅｓと判断された場合には、ＣＰＵ２１は、現在メロディ音の発音時間（押鍵時間）が、３拍以下であるかを判断する（ステップＳ２０２）。ステップＳ２０２でＹｅｓと判断された場合には、転調フラグが「２」以下であるかを判断する。ステップＳ２０３でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３に格納される転調フラグの値をインクリメントする（ステップＳ２０５）。ステップＳ２０２でＮｏ或いはステップＳ２０３でＮｏと判断された場合には、ＣＰＵ２１は、転調処理を実行する（ステップＳ２０４）。
【００９５】
本実施の形態においては、基本的には、現在メロディ音ＣＭ、先行メロディ音ＰＭを含むメロディ音は、「Ｃ」のスケール（調性）で処理される。したがって、転調処理では、転調後の調性と「Ｃ」との音高差が算出され、その音高差をオフセットとしてＲＡＭ２３に格納すれば良い。転調処理以後は、実際に押鍵された鍵番号により特定される音名をオフセットだけ減じることで、「Ｃ」の調性で処理を続行することが可能となる。
【００９６】
ステップＳ２０５の後、ＣＰＵ２１は、現在メロディ音ＣＭが、先行コード名ＰｒｅＣＨのコードトーン（ＣＴ）或いはスケールノート（ＳＮ）であるかを判断する（ステップＳ２０６）。ステップＳ２０６においては、ステップＳ６１と同様に、ＣＰＵ２１は、メロディ機能テーブルを参照して、現在メロディ音ＣＭ及び先行コード名ＰｒｅＣＨの組に対応付けられた値が、コードトーン或いはスケールノートであるかを判断すれば良い。ステップＳ２０６でＹｅｓと判断された場合には、ＣＰＵ２１は、コードを保持すべく現在コード名ＣｕｒＣＨに、先行コード名ＰｒｅＣＨを与える（ステップＳ２０７）。
【００９７】
ステップＳ２０７でＮｏと判断された場合には、ＣＰＵ２１は、無判定コードテーブルを参照して、ディミニシュ（ｄｉｍ）或いはオーギュメント（ａｕｇ）のコードを、現在コード名ＣｕｒＣＨに与える（ステップＳ２０８）。図２６は、本実施の形態にかかる無判定コードテーブルの一例の部分を示す図である。図２６に示す無判定コードテーブル２６００においては、現在メロディ音ＣＭと先行コード名ＰｒｅＣＨからなる値の組に対応して、所定の値が取得できるようになっている。
【００９８】
無判定コードテーブルにおいて２６００において、空欄（たとえば、符号２６０１参照）は、現在メロディ音ＣＭと先行コード名ＰｒｅＣＨからなる値の組に対応付けられた現在メロディ機能（ＣＭＦ）が、コードトーン（ＣＴ）或いはスケールノート（ＳＮ）であることを意味している（図２５参照）。したがって、無判定コードテーブル２６００において空欄となる現在メロディ音ＣＭと先行コード名ＰｒｅＣＨからなる値の組については、現在コード名ＣｕｒＣＨが無判定コードとなることが無いため、値が格納されていない。したがって無判定コードテーブル２６００では、現在メロディ機能（ＣＭＦ）が、アザートーン（ＯＴ）である場合について、ディミニシュ（ｄｉｍ）或いはオーギュメント（ａｕｇ）の何れかを指定する情報が格納されている。
【００９９】
ＣＰＵ２１は、無判定コードテーブル２６００から、現在メロディ音ＣＭと先行コード名ＰｒｅＣＨからなる値の組に対応付けられた、ディミニシュ（ｄｉｍ）或いはオーギュメント（ａｕｇ）の何れかを指定する情報を取得して、現在メロディ音ＣＭを根音とするコード名を得る。たとえば、現在メロディ音が「Ｃ＃」、先行コード名が「ＩＭａｊ」であれば、コード名は、「Ｉ＃ｄｉｍ」となる（符号２６１１参照）。また、現在メロディ音が「Ａ♭」、先行コード名が「ＩＭ７」であれば、コード名は、「ＩＶ♭ａｕｇ」となる。ＣＰＵ２１は、このようにして、現在メロディ音ＣＭを根音とするディミニッシュ（ｄｉｍ）或いはオーギュメント（ａｕｇ）のコード名を、現在コード名ＣｕｒＣＨとして決定し、ＲＡＭ２３に格納する。
【０１００】
上述したように、本実施の形態においては、まず、現在の拍の拍頭の押鍵に関する現在メロディ音ＣＭと、前拍の拍頭の押鍵に関する先行メロディ音ＰＭとが、何拍目かを示す情報、先行コード名ＰｒｅＣＨや、押鍵タミングなどにしたがって修正される（図５のステップＳ２１〜３０）。その上で、現在メロディ音ＣＭ、先行メロディ音ＰＭ及び先行コード名ＰｒｅＣＨに基づいて、現在コード名ＣｕｒＣＨが決定される（ステップＳ３１）。
【０１０１】
コード名判定処理（図３のステップＳ４）が終了すると、ＣＰＵ２１は、自動伴奏処理を実行する（ステップＳ５）。図４５は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。まず、ＣＰＵ２１は、自動調修正装置１０が自動伴奏モードの下で動作しているかを判断する（ステップＳ４１１）。ステップＳ４１１でＹｅｓと判断された場合には、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、メロディ音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップＳ４１２）。
【０１０２】
自動伴奏データには、３つの種類の楽音、すなわち、コード音、ベース音、リズム音のデータが含まれる。ベース音のデータ及びコード音のデータは、発音すべき楽音ごとに、その音高、発音タイミング及び発音時間を含む。また、リズム音のデータは、発音すべき楽音（リズム音）ごとに、その発音タイミングを含む。
【０１０３】
ステップＳ４１２でＹｅｓと判断された場合には、ＣＰＵ２１は、ベース発音・消音処理を実行する（ステップＳ４１３）。メロディ発音・消音処理においては、処理にかかるイベントがノートオンイベントであるかを判断する。ノートオンイベントであることは、現在時刻が、上記ベース音のデータにおける所定の楽音の発音タイミングとほぼ一致することで判断できる。その一方、ノートオフイベントであることは、現在時刻が、当該楽音の発音タイミングに発音時間を加えた時刻とほぼ一致することで判断できる。
【０１０４】
処理にかかるイベントがノートオフイベントである場合には、ＣＰＵ２１は、消音処理を実行する。その一方、処理にかかるイベントがノートオンイベントであれば、ベース音のデータにしたがった発音処理を実行する。
【０１０５】
次いで、ＣＰＵ２１は、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、コード音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップＳ４１４）。ステップＳ４１４においてＹｅｓと判断された場合には、ＣＰＵ２１は、コード発音・消音処理を実行する（ステップＳ４１５）。コード音発音・消音処理においては、発音タイミングに達したコード音について発音処理を実行し、その一方、消音タイミングに達したコード音については消音処理を実行する。
【０１０６】
その後ＣＰＵ２１は、現在時刻が、自動伴奏データ中、リズムのデータについてのイベントの実行タイミングに達しているかを判断する（ステップＳ４１６）。ステップＳ４１６においてＹｅｓと判断された場合には、ＣＰＵ２１は、リズム音発音処理を実行する（ステップＳ４１７）。リズム音発音処理においては、発音タイミングに達したリズム音についてノートオンイベントを生成する。
【０１０７】
自動伴奏処理（図３のステップＳ５）が終了すると、ＣＰＵ２１は、音源発音処理を実行する（ステップＳ６）。音源発音処理において、ＣＰＵ２１は、生成されたノートオンイベントに基づいて、発音すべき楽音の音色及び音高を示すデータを音源部２６に与え、或いは、消音すべき楽音の音色及び音高を示すデータを音源部２６に与える。音源部２６は、音色、音高、音長等を示すデータにしたがって、ＲＯＭ２２の波形データを読み出して、所定の楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。また、ＣＰＵ２１は、ノートオフイベントに基づいて、音源２６にノートオフイベントが示す音高の消音を指示する。
【０１０８】
音源発音処理（ステップＳ６）が終了すると、ＣＰＵ２１は、その他の処理（たとえば現在コード名ＣｕｒＣＨ及び現在メロディ音ＣＭのＲＡＭ２３への格納、表示部１５への画像表示、ＬＥＤ（図示せず）の点灯、消灯など：ステップＳ７）を実行して、ステップＳ８に処理を移す。
【０１０９】
ステップＳ８で、ＣＰＵ２１は、演奏終了か否かを判断する。具体的には、ノンリアルタイムコード付け修正スイッチ１４が押下されたか否かを判断する。この判断がＹＥＳのとき、ＣＰＵ２１は、処理をステップＳ９に移し、ＮＯのとき、ステップＳ２に処理を移す。演奏終了と判断されれば、ＲＡＭ２３には、ステップＳ７の処理により、一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータとが格納されることになる。
【０１１０】
ステップＳ９で、ＣＰＵ２１は、図２７を参照して後述するノンリアルタイムコード修正処理を行う。ノンリアルタイムコード修正処理が終了すると、ＣＰＵ２１は、メインフローの処理を終了する。
【０１１１】
図２７は、本実施の形態にかかるノンリアルタイムコード修正処理の例を示すフローチャートである。
【０１１２】
ステップＳ２１１で、ＣＰＵ２１は、図２８及び図２９を参照して後述する調修正検証処理を行う。
ステップＳ２１２で、ＣＰＵ２１は、図３０を参照して後述するコード構成音検証処理を行う。
ステップＳ２１３で、ＣＰＵ２１は、図３１乃至図３４を参照して後述するフレーズ区切り検証処理を行う。
ステップＳ２１４で、ＣＰＵ２１は、図３５及び図３６を参照して後述するコード付け修正処理を行う。
【０１１３】
ステップＳ２１５で、ＣＰＵ２１は、図３７を参照して後述するメロディとコードスケールの比較処理を行う。
ステップＳ２１６で、ＣＰＵ２１は、図３８を参照して後述するユーザーによる修正処理を行う。
その後、ＣＰＵ２１は、ノンリアルタイムコード修正処理を終了する。
【０１１４】
図２８及び図２９は、本実施の形態にかかる調修正検証処理の例を示すフローチャートである。
【０１１５】
ステップＳ２２１で、ＣＰＵ２１は、曲中キーは１個であるか否かを判断する。具体的には、ＣＰＵ２１は、ＲＡＭ２３に格納された調（曲中キー）の種類の数が１個であるか否かを判断する。この曲中キーは、鍵盤１１により演奏入力されたメロディの音高の履歴に基づいて決定されたキーである。これは例えば、この音高の履歴に対応する音名群を抽出し、この音名群がダイアトニックスケールに全て含まれるキー（調）を検索することにより、求められる。検索には、キー毎のダイアトニックスケールノートを格納したテーブル等を用いることが考えられる。
ステップＳ２２１の判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２２２に移し、ＮＯの場合、処理をステップＳ２３４に移す。
【０１１６】
ステップＳ２２２で、ＣＰＵ２１は、最終メロディ音によるキー確定表と曲中キーとを比較する。具体的には、ＣＰＵ２１は、最終メロディ音によるキー確定テーブル（図３９）を参照し、曲中キーと最終メロディ音を比較する。例えば、図３９によれば、曲中キーが「Ｃ」であり、最終メロディ音が「Ｃ、Ｅ、Ｇ」のいずれかであれば、曲中キーと最終メロディ音とが対応する部分に「Ｃ（１）」が格納されているので、後述するステップＳ２２３でマッチすることになる。
一方、曲中キーが「Ｃ」であり、最終メロディ音が「Ａ」であれば、曲中キーと最終メロディ音とが対応する部分にデータが格納されていないので、後述するステップＳ２２３でマッチしないことになる。
【０１１７】
ステップＳ２２３で、ＣＰＵ２１は、ステップＳ２２２での結果がマッチするか否かを判断する。この判断がＹＥＳの場合、キー判定に問題ないので、ＣＰＵ２１は、キー判定検証処理を終了し、ＮＯの場合、キーを修正するために処理をステップＳ２２４に移す。
【０１１８】
ステップＳ２２４で、ＣＰＵ２１は、最終メロディ音によるキー確定表に載っている最終音のあるキーを優先順位に従って候補キーとする。具体的には、ＣＰＵ２１は、最終メロディ音によるキー確定テーブル（図３９）を参照し、候補キーを決定する。例えば、キー確定テーブル（図３９）によれば、最終メロディ音が「Ａ」の場合、「Ａ」の列には、Ｆ（１）、Ｄ（２）、Ａ（３）が格納されている。このＦ、Ｄ、Ａは、メロディがＡで終わったときに可能性の高いキーを示すものであり、数字は優先順位を示す。したがって、リアルタイムキー判定で曲中キーが「Ｃ」と判定されていて、かつ最終メロディ音がＡであるこの場合は、優先順位の高いＦキーが曲の最終部分の候補キーとなる。
なお、図３９では、長調用のキー確定テーブルのみ開示しているが、短調用のキー確定テーブル（図示せず）も存在する。
【０１１９】
ステップＳ２２５で、ＣＰＵ２１は、最終４小節を候補キーでコード付けし、ステップＳ２２６で、ＣＰＵ２１は、最後の４小節がカデンツ判定表とあっているか否かを判断する。これらの処理は、曲の最終部分が候補キーで問題ないか検証するための処理である。
例えば、候補キーが「Ｆ」の場合、最終４小節をキー「Ｆ」でコード付けして、コード付けした最初の４小節のコード機能が、カデンツ判定テーブル（図４０）の曲エンド部のコード機能と一致するか否か判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２２７に移し、ＮＯの場合、処理をステップＳ２３１に移す。
【０１２０】
図４０のカデンツ判定テーブルは、曲エンド部と曲中の部分とに分けて、可能性のあるカデンツ（終止形）の形を示したテーブルである。なお、イントロ部分やサビの部分などを追加してさらに細分化してもよい。図４０の「Ｔ」は、トニック、「Ｄ」は、ドミナント、「Ｓ」は、サブドミナントを表している。
【０１２１】
ステップＳ２２７で、ＣＰＵ２１は、曲頭から候補キーで問題ないか検証する。この処理は、候補キーの最後の４小節が、カデンツ判定テーブルの曲エンド部のコード機能と一致した場合に行われる。例えば、候補キーが「Ｆ」であった場合は、曲の最後の４小節はキー「Ｆ」で確定しているが、ＣＰＵ２１は、曲頭からキー「Ｆ」が成立するか否かを、リアルタイム（図４の鍵盤処理）で入力された曲頭からのメロディ音データをＲＡＭ２３から読み出して検証する。
【０１２２】
ステップＳ２２８で、ＣＰＵ２１は、候補キーで問題ないか否かを判断する。具体的には、ＣＰＵ２１は、ステップＳ２２７で曲頭から候補キーが成立したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３０に移し、ＮＯの場合、処理をステップＳ２２９に移す。
【０１２３】
ステップＳ２２９で、ＣＰＵ２１は、矛盾したところでキーを２個に修正する。具体的には、ＣＰＵ２１は、曲頭からどの部分までが候補キーとして成立しないかをステップＳ２２７の検証結果から判断して、曲頭から候補キーとして成立しない箇所までと、侯補キーが成立し始める箇所から曲の最後までと、でキーを２つに分ける。例えば、リアルタイムキー判定で曲中キーが「Ｃ」と判定されており、かつ、候補キーが「Ｆ」の場合、「Ｃ」と「Ｆ」との２つのキーに分ける。その後、処理をステップＳ２２１に移す。
【０１２４】
ステップＳ２３０では、曲頭から候補キーが成立しているので、ＣＰＵ２１は、キーを確定し、キー判定検証処理を終了する。
【０１２５】
ステップＳ２３１で、ＣＰＵ２１は、キー確定表の次候補があるか否かを判断する。具体的には、キー確定テーブル（図３９）を検索して判断する。例えば、最終メロディ音が「Ａ」で、候補キーが「Ｆ」である場合、次候補キーとして、第２の優先順位のキーである「Ｄ」が存在する。一方、最終メロディ音が「Ａ」で、候補キーが「Ａ」である場合、次候補のキーは存在しない。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３２に移し、ＮＯの場合、処理をステップＳ２３３に移す。
【０１２６】
ステップＳ２３２で、ＣＰＵ２１は、候補キーをステップＳ２３１で判断した次候補のキーに置換し、ステップＳ２２５に処理を移す。
【０１２７】
ステップＳ２３３で、ＣＰＵ２１は、キーを修正せず、キー判定検証処理を終了する。
【０１２８】
ステップＳ２３４で、ＣＰＵ２１は、曲中のキーは２個である否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３５に移し、ＮＯの場合、処理をステップＳ２３７に移す。
【０１２９】
ステップＳ２３５で、ＣＰＵ２１は、冒頭キーと曲中キーの差が＋１半音、＋２半音、＋３半音のいずれかであるか否かを判断する。この処理は、所謂盛り上がり転調をしているかどうかを判断する処理である。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３６に移し、ＮＯの場合、処理をステップＳ２４０に移す。
【０１３０】
ステップＳ２３６で、ＣＰＵ２１は、キーを確定し、キー判定検証処理を終了する。
【０１３１】
ステップＳ２３７で、ＣＰＵ２１は、冒頭キーと最終キーとは同一であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３８に移し、ＮＯの場合、処理をステップＳ２４０に移す。
【０１３２】
ステップＳ２３８で、ＣＰＵ２１は、最後の４小節がカデンツ判定表とあっているか否かを判断する。具体的には、ＣＰＵ２１は、冒頭キーについては、カデンツ判定テーブル（図４０）の曲中を参照して、冒頭キーの最後の４小節のコード機能が、カデンツ判定テーブル（図４０）の曲中のコード機能と一致するか否かを判断する。一方、最終キーについては、カデンツ判定テーブル（図４０）の曲エンド部を参照して、最終キーの最後の４小節のコード機能が、カデンツ判定テーブル（図４０）の曲エンド部のコード機能と一致するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２３９に移し、ＮＯの場合、処理をステップＳ２４０に移す。
【０１３３】
ステップＳ２３９で、ＣＰＵ２１は、冒頭キーと最終のキーを確定する。例えば、ステップＳ２３８で、冒頭キーのみ一致すると判断されれば、冒頭キーのみ確定する。また、最終キーのみ一致すると判断されれば、最終キーのみ確定する。さらに、冒頭キーと最終キーの両方が一致すると判断されれば、冒頭キー及び最終キーが確定する。
【０１３４】
ステップＳ２４０で、ＣＰＵ２１は、未検証キーがあるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４１に移し、ＮＯの場合、キー判定検証処理を終了する。
【０１３５】
ステップＳ２４１で、ＣＰＵ２１は、関係調借用判定表を参照し、キー確定後４小節以内にこの表にあるコードがあるか判断する。具体的には、ＣＰＵ２１は、関係調借用判定テーブル（図４１）を参照して、キー確定後４小節以内に当該テーブルの主調独自コードがあるか判断する。
例えば、キーが３つある場合で、冒頭キーが「Ｃ」であり、冒頭キーと最終キーとの間のキーが属調（冒頭キーである主調Ｃの属調はＧ）である場合に、属調の最初の４小節以内に主調独自コードである、Ｖ７（Ｇ７）又はIIｍ（Ｄｍ）が存在するか否かが判断される。
ここで、主調独自コードについて説明する。例えば、主調がＣの場合、属調Ｇは、主調の第４音（ファ）のみが半音上がった調であり、主調Ｃ（ド、レ、ミ、ファ、ソ、ラ、シ、で構成）と属調Ｇ（ソ、ラ、シ、ド、レ、ミ、ファ＃、で構成）とを比較すると、属調Ｇには、ファは含まれない。よって、ファを含むコードであるＧ７又はＤｍは、属調Ｇのコードではなく、主調Ｃのコードである。本実施形態では、この意味で、主調独自コードという名称を用いている。
【０１３６】
ステップＳ２４２で、ＣＰＵ２１は、ステップＳ２４１でマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４３に移し、ＮＯの場合、処理をステップＳ２４８に移す。
【０１３７】
ステップＳ２４３で、ＣＰＵ２１は、マッチしたところから元キーに修正する。例えば、主調独自コードが存在した箇所から、主調（冒頭キー）に修正する。
【０１３８】
ステップＳ２４４で、ＣＰＵ２１は、最後の４小節がカデンツ判定表とあっているか否かを判断する。この処理では、ステップＳ２４３で修正後のキーでカデンツ判定テーブル（図４０）の曲中を参照して、修正後のキーの最後の４小節のコード機能が、カデンツ判定テーブル（図４０）の曲中のコード機能と一致するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４５に移し、ＮＯの場合、処理をステップＳ２４６に移す。
【０１３９】
ステップＳ２４５で、ＣＰＵ２１は、その部分のキー（修正後のキー）を確定し、処理をステップＳ２４７に移す。
【０１４０】
ステップＳ２４６で、ＣＰＵ２１は、残りキーは１個であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２２２に移し、ＮＯの場合、処理をステップＳ２４７に移す。
【０１４１】
ステップＳ２４７で、ＣＰＵ２１は、未検証キーがあるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４１に移し、ＮＯの場合、キー判定検証処理を終了する。
【０１４２】
ステップＳ２４８で、ＣＰＵ２１は、最後の４小節がカデンツ判定表とあっているか否かを判断する。この処理では、未検証キーでカデンツ判定テーブル（図４０）の曲中を参照して、未検証キーの最後の４小節のコード機能が、カデンツ判定テーブル（図４０）の曲中のコード機能と一致するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４５に移し、ＮＯの場合、処理をステップＳ２４９に移す。
【０１４３】
ステップＳ２４９で、ＣＰＵ２１は、同主調をチェックしたか否かを判断する。すなわち、ＣＰＵ２１は、関係調借用判定テーブル（図４１）の最下段である同主調について主調独自コードの存在の有無をチェックしたか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２４６に移し、ＮＯの場合、処理をステップＳ２５０に移す。
【０１４４】
ステップＳ２５０で、ＣＰＵ２１は、次の関係調を確認対象としてステップＳ２４１に処理を移す。例えば、属調についてチェックしたのであれば、次（その下段）の関係調である下属調を次の確認対象とする。
【０１４５】
図３０は、本実施の形態にかかるコード構成音検証処理の例を示すフローチャートである。ところで、リアルタイム自動コード付けで倚音や経過音などの装飾音が強拍に存在する場合に、当該装飾音がコード付けに影響を与えるためにコード付けが間違ってしまうことがある。そこで、この支配音検証処理は、このようなコード付けの間違いを修正するために、本実施形態においては、小節毎にメロディ音から装飾音を除いたコード構成音を抽出し、このコード構成音によって成立するコードがリアルタイムコード付けのコードと同一かどうか検証している。
【０１４６】
まず、ステップＳ２６１で、ＣＰＵ２１は、その小節に１拍以上ある音について音長が長い順に３音抽出する。具体的には、ＲＡＭ２３に格納された一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータを読み出して、その小節に１拍以上ある音について音長が長い順に３音抽出する。ここで、その小節とは、ＣＰＵ２１の処理対象となる小節であり、最初は１小節目を処理対象とする。
【０１４７】
ステップＳ２６２で、ＣＰＵ２１は、抽出した３音がリアルタイムコード付けのコード構成音に含まれるか否かを判断する。具体的には、ＣＰＵ２１は、図４３のコードスケールテーブルを参照して判断する。例えば、リアルタイムコード付けのコードがＩＭａｊｏｒである場合に、ステップＳ２６１又はＳ２６３で抽出された３音が、コード構成音（ＣＴ）である「Ｃ、Ｅ、Ｇ」であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２６４に移し、ＮＯの場合、処理をステップＳ２６３に移す。
ここで、抽出した３音がコード構成音（ＣＴ）であれば、これら３音は支配的な音となる。
【０１４８】
ステップＳ２６３で、ＣＰＵ２１は、小節を半分にして音長の長い順に３音抽出する。その後、ステップＳ２６２に処理を移す。
【０１４９】
ステップＳ２６４で、ＣＰＵ２１は、小節内にコード以外のメロディ音があるか否かを判断する。具体的には、ＣＰＵ２１の処理対象となる小節内にステップＳ２６１又はステップＳ２６３で抽出した３音以外の音が存在し、かつ、図４３のコードスケールテーブルを参照して当該音がコード構成音（ＣＴ）ではない場合に、当該音はコード以外のメロディ音となる。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２６５に移し、ＮＯの場合、処理をステップＳ２７０に移す。
【０１５０】
ステップＳ２６５で、ＣＰＵ２１は、それらの音は装飾音を含むか否かを判断する。具体的には、ＣＰＵ２１は、装飾音データベース（図４２）を参照して判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２６６に移し、ＮＯの場合、処理をステップＳ２６７に移す。
【０１５１】
ここで、図４２を参照して装飾音データベースについて説明する。この装飾音データベースは、強拍（４拍子の場合は、１拍と３拍）に装飾音（コード構成音以外の音）があるか否かを判断するためのデータベースである。
例えば、図４２の例によれば、４拍子の場合で、１拍目（強拍）にコード構成音以外の装飾音（例えば、倚音）があり、２拍目（弱拍）にコード構成音があり、かつ、２拍目のコード構成音は、１拍目の音より、全音（又は半音）高いか低いかの関係にある場合に、１拍目の音が装飾音と判断される。３拍目、４拍目についても同様である。
なお、図４２では図示していないが、２拍子、３拍子等、４拍子以外の装飾音の有無を判定することもできる。
【０１５２】
ステップＳ２６６で、ＣＰＵ２１は、装飾音を省いて、リアルタイムコード付け結果のコードと比較する。具体的には、ＣＰＵ２１は、ＲＡＭ２３に格納されたリアルタイムコード付けされたコードを読み出して、装飾音を省いた処理対象の小節の音が、図４３のコードスケールテーブルの各コードに対応するコード構成音（ＣＴ）であるか否かを判断する。
【０１５３】
ステップＳ２６７で、ＣＰＵ２１は、リアルタイムコード付け結果のコードと比較する。具体的には、ＣＰＵ２１は、ＲＡＭ２３に格納されたリアルタイムコード付けされたコードを読み出して、処理対象の小節の音が、図４３のコードスケールテーブルの各コードに対応するコード構成音（ＣＴ）であるか否かを判断する。
【０１５４】
ステップＳ２６８で、ＣＰＵ２１は、ステップＳ２６６及びＳ２６７での比較の結果が、マッチするか否か（ステップＳ２６６又はＳ２６７の判断がＹＥＳ（マッチ）かＮＯ（アンマッチ）か）を判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２７０に移し、ＮＯの場合、処理をステップＳ２６９に移す。
【０１５５】
ステップＳ２６９で、ＣＰＵ２１は、この支配的な音はコードとして成立するか否かを判断する。具体的には、ＣＰＵ２１は、図４３のコードスケールテーブルを参照して、ステップＳ２６６又はＳ２６７で比較した音が、コード構成音（ＣＴ）であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２７２に移し、ＮＯの場合、処理をステップＳ２７０に移す。
【０１５６】
ステップＳ２７２で、ＣＰＵ２１は、コード修正フラグをＯＮにする。具体的には、ＣＰＵ２１は、処理対象となった小節に対応づけてコード修正フラグをＯＮにする。なお、コード修正フラグはＲＡＭ２３の所定領域に存在する。これにより、後述するコード修正処理（図３５）において、対象小節のコードを修正できる。
【０１５７】
ステップＳ２７０で、ＣＰＵ２１は、最後の小節か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、コード構成音検証処理を終了し、ＮＯの場合、処理をステップＳ２７１に移す。
【０１５８】
ステップＳ２７１で、ＣＰＵ２１は、次の小節をコード構成音検証の対象とし、ステップＳ２６１に処理を移す。
【０１５９】
図３１乃至図３４は、本実施の形態にかかるフレーズ区切り検証処理の例を示すフローチャートである。
【０１６０】
ステップＳ２８１で、ＣＰＵ２１は、１小節目と（８Ｎ＋１）小節目のコード進行を比較する。具体的には、ＲＡＭ２３に格納された一連の演奏によるリアルタイムコード付けの結果としてのコードデータとメロディデータを読み出して比較する。Ｎの初期値は１である。
【０１６１】
ステップＳ２８２で、ＣＰＵ２１は、１小節目と（８Ｎ＋１）小節目のコード進行が同一か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２９６に移し、ＮＯの場合、処理をステップＳ２８３に移す。
【０１６２】
ステップＳ２８３で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディリズムを比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１６３】
ステップＳ２８４で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディリズムがマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２８５に移し、ＮＯの場合、処理をステップＳ２９０に移す。
【０１６４】
ステップＳ２８５で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１６５】
ステップＳ２８６で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２８７に移し、ＮＯの場合、処理をステップＳ２８８に移す。
【０１６６】
ステップＳ２８７で、ＣＰＵ２１は、該当する小節をフレーズ８型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１６７】
ステップＳ２８８で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２８９に移し、ＮＯの場合、処理をステップＳ２９６に移す。
【０１６８】
ステップＳ２８９で、ＣＰＵ２１は、該当する小節をフレーズ８β型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１６９】
ステップＳ２９０で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディリズムが７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２９１に移し、ＮＯの場合、処理をステップＳ２９６に移す。
【０１７０】
ステップＳ２９１で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１７１】
ステップＳ２９２で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２９３に移し、ＮＯの場合、処理をステップＳ２９４に移す。
【０１７２】
ステップＳ２９３で、ＣＰＵ２１は、該当する小節をフレーズ８Ｒα型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１７３】
ステップＳ２９４で、ＣＰＵ２１は、８小節単位の（１〜８小節目と（８Ｎ＋１）〜（８Ｎ＋８）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２９５に移し、ＮＯの場合、処理をステップＳ２９６に移す。
【０１７４】
ステップＳ２９５で、ＣＰＵ２１は、該当する小節をフレーズ８Ｒβ型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１７５】
ステップＳ２９６で、ＣＰＵ２１は、曲終了か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２９８に移し、ＮＯの場合、処理をステップＳ２９７に移す。
【０１７６】
ステップＳ２９７で、ＣＰＵ２１は、Ｎを１増加させて、ステップＳ２８１に処理を移す。
【０１７７】
ステップＳ２９８で、ＣＰＵ２１は、１小節目と（４Ｎ＋１）小節目のコード進行を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けによるコードデータを読み出して比較する。ここで、Ｎの初期値は１である。
【０１７８】
ステップＳ２９９で、ＣＰＵ２１は、１小節目と（４Ｎ＋１）小節目のコード進行が同一か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３１３に移し、ＮＯの場合、処理をステップＳ３００に移す。
【０１７９】
ステップＳ３００で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディリズムを比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１８０】
ステップＳ３０１で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディリズムがマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３０２に移し、ＮＯの場合、処理をステップＳ３０７に移す。
【０１８１】
ステップＳ３０２で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１８２】
ステップＳ３０３で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３０４に移し、ＮＯの場合、処理をステップＳ３０５に移す。
【０１８３】
ステップＳ３０４で、ＣＰＵ２１は、該当する小節をフレーズ４型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１８４】
ステップＳ３０５で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３０６に移し、ＮＯの場合、処理をステップＳ３１３に移す。
【０１８５】
ステップＳ３０６で、ＣＰＵ２１は、該当する小節をフレーズ４β型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１８６】
ステップＳ３０７で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディリズムが７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３０８に移し、ＮＯの場合、処理をステップＳ３１３に移す。
【０１８７】
ステップＳ３０８で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１８８】
ステップＳ３０９で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３１０に移し、ＮＯの場合、処理をステップＳ３１１に移す。
【０１８９】
ステップＳ３１０で、ＣＰＵ２１は、該当する小節をフレーズ４Ｒα型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１９０】
ステップＳ３１１で、ＣＰＵ２１は、４小節単位の（１〜４小節目と（４Ｎ＋１）〜（４Ｎ＋４）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３１２に移し、ＮＯの場合、処理をステップＳ３１３に移す。
【０１９１】
ステップＳ３１２で、ＣＰＵ２１は、該当する小節をフレーズ４Ｒβ型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０１９２】
ステップＳ３１３で、ＣＰＵ２１は、曲終了か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３１５に移し、ＮＯの場合、処理をステップＳ３１４に移す。
【０１９３】
ステップＳ３１４で、ＣＰＵ２１は、Ｎを１増加させて、ステップＳ２８１に処理を移す。
【０１９４】
ステップＳ３１５で、ＣＰＵ２１は、１小節目と（２Ｎ＋１）小節目のコード進行を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けによるコードデータを読み出して比較する。ここで、Ｎの初期値は１である。
【０１９５】
ステップＳ３１６で、ＣＰＵ２１は、１小節目と（２Ｎ＋１）小節目のコード進行が同一か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３３０に移し、ＮＯの場合、処理をステップＳ３１７に移す。
【０１９６】
ステップＳ３１７で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディリズムを比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１９７】
ステップＳ３１８で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディリズムがマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３１９に移し、ＮＯの場合、処理をステップＳ３２４に移す。
【０１９８】
ステップＳ３１９で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０１９９】
ステップＳ３２０で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３２１に移し、ＮＯの場合、処理をステップＳ３２２に移す。
【０２００】
ステップＳ３２１で、ＣＰＵ２１は、該当する小節をフレーズ２型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０２０１】
ステップＳ３２２で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３２３に移し、ＮＯの場合、処理をステップＳ３３０に移す。
【０２０２】
ステップＳ３２３で、ＣＰＵ２１は、該当する小節をフレーズ２β型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０２０３】
ステップＳ３２４で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディリズムが７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３２５に移し、ＮＯの場合、処理をステップＳ３３０に移す。
【０２０４】
ステップＳ３２５で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。
【０２０５】
ステップＳ３２６で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３２７に移し、ＮＯの場合、処理をステップＳ３２８に移す。
【０２０６】
ステップＳ３２７で、ＣＰＵ２１は、該当する小節をフレーズ２Ｒα型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０２０７】
ステップＳ３２８で、ＣＰＵ２１は、２小節単位の（１〜２小節目と（２Ｎ＋１）〜（２Ｎ＋２）小節目との）メロディ音高が７０％以上マッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３２９に移し、ＮＯの場合、処理をステップＳ３３０に移す。
【０２０８】
ステップＳ３２９で、ＣＰＵ２１は、該当する小節をフレーズ２Ｒβ型とする。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節データと型データを格納する。
【０２０９】
ステップＳ３３０で、ＣＰＵ２１は、曲終了か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３３２に移し、ＮＯの場合、処理をステップＳ３３１に移す。
【０２１０】
ステップＳ３３１で、ＣＰＵ２１は、Ｎを１増加させて、ステップＳ３１５に処理を移す。
【０２１１】
ステップＳ３３２で、ＣＰＵ２１は、フレーズ型がひとつもないか否かを判断する。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に型データの記録が全くないか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３３３に移し、ＮＯの場合、フレーズ区切り検証処理を終了する。
【０２１２】
ステップＳ３３３で、ＣＰＵ２１は、１小節目と（Ｎ＋１）小節目のメロディ音高を比較する。具体的には、ＲＡＭ２３に格納されたリアルタイムコード付けに利用されたメロディデータを使用して比較する。ここで、Ｎの初期値は１である。
【０２１３】
ステップＳ３３４で、ＣＰＵ２１は、１小節目と（Ｎ＋１）小節目のメロディ音高がマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３３５に移し、ＮＯの場合、処理をステップＳ３３６に移す。
【０２１４】
ステップＳ３３５で、ＣＰＵ２１は、該当する小節をフレーズＸ型とする。また、Ｘまでの小節数を記憶する。具体的には、ＣＰＵ２１は、ＲＡＭ２３のフレーズ型領域に小節数のデータと型データを格納する。
【０２１５】
ステップＳ３３６で、ＣＰＵ２１は、最後の小節であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、フレーズ区切り検証処理を終了し、ＮＯの場合、処理をステップＳ３３７に移す。
【０２１６】
ステップＳ３３７で、ＣＰＵ２１は、Ｎを１増加させて、処理をステップＳ３３３に移す。
【０２１７】
図３５及び図３６は、本実施の形態にかかるコード付け修正処理の例を示すフローチャートである。
【０２１８】
ステップＳ３４１で、ＣＰＵ２１は、リアルタイムコード付けのキーとキー判定検証処理（図２８及び図２９）で修正されたキーとを比較する。
【０２１９】
ステップＳ３４２で、ＣＰＵ２１は、キー変更箇所が有るか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３４３に移し、ＮＯの場合、処理をステップＳ３４６に移す。
【０２２０】
ステップＳ３４３で、ＣＰＵ２１は、キーの変更箇所を新キー（キー判定検証処理（図２８及び図２９）で修正されたキー）でコード付けする。
【０２２１】
ステップＳ３４４で、ＣＰＵ２１は、キー確定保留箇所が有るか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３４５に移し、ＮＯの場合、処理をステップＳ３４６に移す。
【０２２２】
ステップＳ３４６で、ＣＰＵ２１は、支配的な音によるコード修正指定箇所が有るか否かを判断する。具体的には、ＣＰＵ２１は、ステップＳ２７２（図３０）で、コード修正フラグがＯＮされた小節があるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３４７に移し、ＮＯの場合、処理をステップＳ３５０に移す。
【０２２３】
ステップＳ３４７で、ＣＰＵ２１は、指定部分の最後の４小節がカデンツ判定表とあっているか否かを判断する。具体的には、ＣＰＵ２１は、コード修正フラグがＯＮされた小節を含む４小節について、当該４小節が曲中か曲エンド部かに応じて、カデンツ判定テーブル（図４０）の曲中又は曲エンド部を参照して、４小節のコード機能が、カデンツ判定テーブル（図４０）のコード機能と一致するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３７７に移し、ＮＯの場合、処理をステップＳ３４８に移す。
【０２２４】
ステップＳ３４８で、ＣＰＵ２１は、キー確定保留範囲を特定し、その部分のメロディをキー判定し、キーを確定する。
【０２２５】
ステップＳ３４９で、ＣＰＵ２１は、キーの変更箇所を新キーでコード付けする。その後、ステップＳ３４７に処理を移す。
【０２２６】
ステップＳ３７７で、ＣＰＵ２１は、コード修正をする。具体的には、ＣＰＵ２１は、ステップＳ２６９で決定した、支配的な音に応じたコード構成音に対応したコードで、コード修正フラグがＯＮにされた小節のコードを修正する。
【０２２７】
ステップＳ２６９で、ＣＰＵ２１は、支配的な音はコードとして成立するか否かを判断する。具体的には、ＣＰＵ２１は、図４３のコードスケールテーブルを参照して、ステップＳ２６６又はＳ２６７で比較した音が、コード構成音（ＣＴ）であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ２７２に移し、ＮＯの場合、処理をステップＳ２７０に移す。
【０２２８】
ステップＳ３５０で、ＣＰＵ２１は、該当箇所のフレーズ区切りは、４（＊）型（４型、４β型、４Ｒα型、又は４Ｒβ型）か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５１に移し、ＮＯの場合、処理をステップＳ３５７に移す。
【０２２９】
ステップＳ３５１で、ＣＰＵ２１は、フレーズ区切りが４型か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５２に移し、ＮＯの場合、処理をステップＳ３５３に移す。
【０２３０】
ステップＳ３５２で、ＣＰＵ２１は、その部分のコードを比較元と同一とする。４型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、５〜８小節目が４型である場合、ＣＰＵ２１は、５〜８小節目のコードを１〜４小節目のコードと同一にする。また、後述するように９〜１２小節目が４β型、４Ｒα型、４Ｒβ型のいずれかであれば、９〜１２小節目のコードと１〜４小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを１〜４小節目のコードと同一にする。
【０２３１】
ステップＳ３５３で、ＣＰＵ２１は、違う部分のコードを比較する。この場合、４β型、４Ｒα型、４Ｒβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ３０％未満異なるということなので、当該異なる部分のコードを比較する。例えば、９〜１２小節目が、４β型、４Ｒα型、４Ｒβ型のいずれかであれば、９〜１２小節目のコードと１〜４小節目のコードとを比較する。
【０２３２】
ステップＳ３５４で、ＣＰＵ２１は、機能は同一であるか否かを判断する。具体的には、ＣＰＵ２１は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５２に移し、ＮＯの場合、処理をステップＳ３５５に移す。
【０２３３】
ステップＳ３５５で、ＣＰＵ２１は、最後の小節か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５７に移し、ＮＯの場合、処理をステップＳ３５６に移す。
【０２３４】
ステップＳ３５６で、ＣＰＵ２１は、次の４小節へ進めて、ステップＳ３５１に処理を移す。
【０２３５】
ステップＳ３５７で、ＣＰＵ２１は、該当箇所のフレーズ区切りは、８（＊）型（８型、８β型、８Ｒα型、又は８Ｒβ型）か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５８に移し、ＮＯの場合、処理をステップＳ３６４に移す。
【０２３６】
ステップＳ３５８で、ＣＰＵ２１は、フレーズ区切りが８型か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５９に移し、ＮＯの場合、処理をステップＳ３６０に移す。
【０２３７】
ステップＳ３５９で、ＣＰＵ２１は、その部分のコードを比較元と同一とする。８型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、９〜１６小節目が８型である場合、ＣＰＵ２１は、９〜１６小節目のコードを１〜８小節目のコードと同一にする。また、後述するように１７〜２４小節目が８β型、８Ｒα型、８Ｒβ型のいずれかの場合、１７〜２４小節目のコードと１〜８小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを１〜８小節目のコードと同一にする。
【０２３８】
ステップＳ３６０で、ＣＰＵ２１は、違う部分のコードを比較する。この場合、８β型、８Ｒα型、８Ｒβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ３０％未満異なるということなので、当該異なる部分のコードを比較する。例えば、１７〜２４小節目が、８β型、８Ｒα型、８Ｒβ型のいずれかであれば、１７〜２４小節目のコードと１〜８小節目のコードとを比較する。
【０２３９】
ステップＳ３６１で、ＣＰＵ２１は、機能は同一であるか否かを判断する。具体的には、ＣＰＵ２１は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５９に移し、ＮＯの場合、処理をステップＳ３６２に移す。
【０２４０】
ステップＳ３６２で、ＣＰＵ２１は、最後の小節か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３６４に移し、ＮＯの場合、処理をステップＳ３６３に移す。
【０２４１】
ステップＳ３６３で、ＣＰＵ２１は、次の８小節へ進めて、ステップＳ３５８に処理を移す。
【０２４２】
ステップＳ３６４で、ＣＰＵ２１は、該当箇所のフレーズ区切りは、２（＊）型（２型、２β型、２Ｒα型、又は２Ｒβ型）か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３６５に移し、ＮＯの場合、処理をステップＳ３７１に移す。
【０２４３】
ステップＳ３６５で、ＣＰＵ２１は、フレーズ区切りが２型か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３６６に移し、ＮＯの場合、処理をステップＳ３６７に移す。
【０２４４】
ステップＳ３６６で、ＣＰＵ２１は、その部分のコードを比較元と同一とする。２型の場合、メロディのリズムも音高も比較元と同一なので、コードも同一とする。例えば、３〜４小節目が２型である場合、ＣＰＵ２１は、３〜４小節目のコードを１〜２小節目のコードと同一にする。また、後述するように５〜６小節目が２β型、２Ｒα型、２Ｒβ型のいずれかであれば、５〜６小節目のコードと１〜２小節目のコードとで異なる部分のコードの機能が同一であれば、当該異なる部分のコードを１〜２小節目のコードと同一にする。
【０２４５】
ステップＳ３６７で、ＣＰＵ２１は、違う部分のコードを比較する。この場合、２β型、２Ｒα型、２Ｒβ型のいずれかであるが、これらは、メロディ音高とメロディリズムのいずれか一方か両方が、比較元とそれぞれ３０％未満異なるということなので、当該異なる部分のコードを比較する。例えば、３〜４小節目が、２β型、２Ｒα型、２Ｒβ型のいずれかであれば、３〜４小節目のコードと１〜２小節目のコードとを比較する。
【０２４６】
ステップＳ３６８で、ＣＰＵ２１は、機能は同一であるか否かを判断する。具体的には、ＣＰＵ２１は、当該異なる部分のコードの機能が同一であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３６６に移し、ＮＯの場合、処理をステップＳ３６９に移す。
【０２４７】
ステップＳ３６９で、ＣＰＵ２１は、最後の小節か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３７１に移し、ＮＯの場合、処理をステップＳ３７０に移す。
【０２４８】
ステップＳ３７０で、ＣＰＵ２１は、次の２小節へ進めて、ステップＳ３６５に処理を移す。
【０２４９】
ステップＳ３７１で、ＣＰＵ２１は、該当箇所のフレーズ区切りはＸ型か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３７２に移し、ＮＯの場合、処理をステップＳ３７６に移す。
【０２５０】
ステップＳ３７２で、ＣＰＵ２１は、開始位置を確認する。
【０２５１】
ステップＳ３７３で、ＣＰＵ２１は、その部分のコードを比較元と同一とする。
【０２５２】
ステップＳ３７４で、ＣＰＵ２１は、最後の小節か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３７６に移し、ＮＯの場合、処理をステップＳ３７５に移す。
【０２５３】
ステップＳ３７５で、ＣＰＵ２１は、次のＸ型へ進めて、ステップＳ３７２に処理を移す。
【０２５４】
ステップＳ３７６で、ＣＰＵ２１は、他にもフレーズ型記憶箇所が有るか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３５０に移し、ＮＯの場合、コード付け修正処理を終了する。
【０２５５】
図３７は、本実施の形態にかかるメロディとコードスケールの比較処理の例を示すフローチャートである。
【０２５６】
ステップＳ３８１で、ＣＰＵ２１は、修正されたコードのスケールをコードスケールテーブル（図４３）で確認し、修正されたコード区間に対応するメロディ（リアルタイムコード付けの際に入力されたメロディ）と、修正されたコードのコードスケールと、が一致するか否かを確認する。ここで、コードスケールとは、図４３のコードスケールテーブルでいうところの、スケールノート（ＳＮ）とコード構成音（ＣＴ）とを合わせた音群である。
例えば、修正されたコードが、キーがＣにおけるＩＭａｊｏｒ（ＣＭａｊｏｒ）である場合、修正されたコードのコードスケールは、図４３によれば、「Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ａ，Ｂ」である。
したがって、修正されたコードが、キーがＣにおけるＩＭａｊｏｒ（ＣＭａｊｏｒ）である場合、修正されたコード区間に対応するメロディが、「Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ａ，Ｂ」のいずれかであれば、当該メロディと当該コードスケールとが一致する。
【０２５７】
ステップＳ３８２で、ＣＰＵ２１は、ステップＳ３８１で一致するか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３８８に移し、ＮＯの場合、処理をステップＳ３８３に移す。
【０２５８】
ステップＳ３８３で、ＣＰＵ２１は、スケール外音は装飾音か否かを判断する。具体的には、ＣＰＵ２１は、ステップＳ２６５（図３０）と同様に装飾音データベース（図４２）を参照して判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３８８に移し、ＮＯの場合、処理をステップＳ３８４に移す。
【０２５９】
ステップＳ３８４で、ＣＰＵ２１は、リハモデータベース（図示せず）を参照する。例えば、キーがＡｍ（Ａｍの構成音は、「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ」）で、メロディがメロディックマイナーの上向型（Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ＃、Ｇ＃）であった場合、「Ｆ＃、Ｇ＃」は、キーＡｍの構成音ではないので、Ｆ＃の音に対して、Ｂｍ７にコードを変更することができる。
このように、リハモデータベース（図示せず）には、コードを変更することのできるパターンがデータベースとして登録されている。
【０２６０】
ステップＳ３８５で、ＣＰＵ２１は、リハモデータベースにおいてマッチするか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ３８６に移し、ＮＯの場合、処理をステップＳ３８７に移す。
【０２６１】
ステップＳ３８６で、ＣＰＵ２１は、コード修正をする。具体的には、ＣＰＵ２１は、リハモデータベースに登録されているコードに修正する。
【０２６２】
ステップＳ３８７で、ＣＰＵ２１は、不適合箇所を記録する。すなわち、マッチしなかった箇所をＲＡＭ２３に記録する。
【０２６３】
ステップＳ３８８で、ＣＰＵ２１は、最後のコードか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、メロディとコードスケールの比較処理を終了し、ＮＯの場合、処理をステップＳ３８９に移す。
【０２６４】
ステップＳ３８９で、ＣＰＵ２１は、次のコードへ進み、処理をステップＳ３８１へ移す。
【０２６５】
図３８は、本実施の形態にかかるユーザーによる修正処理の例を示すフローチャートである。
ノンリアルタイムで修正しても、耳の肥えたユーザーにとっては、不満がある場合がる。そのときに、ユーザーによる修正機能があると便利である。ユーザーによる修正処理は、そのための処理である。
【０２６６】
ステップＳ４０１で、ＣＰＵ２１は、Ａｎｙキーによるデータ再生中か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ４０２に移し、ＮＯの場合、ユーザーによる修正処理を修正する。
【０２６７】
ステップＳ４０２で、ＣＰＵ２１は、Ｅｄｉｔスイッチ（図示せず）がオンか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ４０４に移し、ＮＯの場合、処理をステップＳ４０３に移す。
【０２６８】
ステップＳ４０３で、ＣＰＵ２１は、コード優先データベース順にコード候補を出力する。具体的には、ＣＰＵ２１は、コード優先データベース（図４４）に格納された順番で、コード候補を出力する。例えば、修正前のコードがIIｍであれば、１番目のコード候補として、「IIｍ７」を出力する。
【０２６９】
ステップＳ４０４で、ＣＰＵ２１は、ＯＫスイッチ（図示せず）が押下されたか否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、処理をステップＳ４０５に移し、ＮＯの場合、処理をステップＳ４０６に移す。
【０２７０】
ステップＳ４０５で、ＣＰＵ２１は、コードを修正し、処理をステップＳ４０７に移す。具体的には、ＣＰＵ２１は、ステップＳ４０３で出力されたコードでコード修正する。
【０２７１】
ステップＳ４０６で、ＣＰＵ２１は、次候補を出力し、処理をステップＳ４０４に移す。例えば、現在出力されたコードが「IIｍ７」であれば、ＣＰＵ２１は、２番目のコード候補である「IV」を出力する。
【０２７２】
ステップＳ４０７で、ＣＰＵ２１は、曲終了か否かを判断する。この判断がＹＥＳの場合、ＣＰＵ２１は、ユーザーによる修正処理を終了し、ＮＯの場合、処理をステップＳ４０１に移す。
【０２７３】
本実施の形態の電子楽器１０は、曲のメロディを演奏する鍵盤１１を有しており、ＣＰＵ２１は、演奏されているメロディの音高の履歴により、当該メロディに対してリアルタイムでコード付与を行い、メロディ演奏終了後、リアルタイムでコード付与されたコードをノンリアルタイムで修正する。
したがって、入力されたメロディに対してリアルタイムでコード付けを行った後、ノンリアルタイムでコードを修正することで、コード付けの精度をより高めることができる。
【０２７４】
また、本実施の形態において、ＣＰＵ２１は、曲の所定区間ごとに、そこに含まれるメロディ音の中で付与されたコード以外の他のコードが成立する音が存在するか否か検証し、成立する場合に当該所定区間を修正箇所として指定し、  曲のメロディを所定の長さの複数のフレーズに区切り、当該フレーズ同士の楽式の一致度を検証し、当該検証結果に基づいて、前記付与されたコードを修正する。
したがって、例えば、所定の長さとして４小節のフレーズに区切った場合に、４小節ごとの楽式の一致度に基づいてコード修正が行われるので、フレーズの楽式の一致度が高ければ、フレーズ同士のコード付けの一致度を高くすることができる。
【０２７５】
また、本実施の形態において、ＣＰＵ２１は、曲の所定の区間に付与されているキーが、当該所定の区間のメロディの最終音に基づいて定められるキーと一致するか否かを検証する。
したがって、曲の所定の区間に付与されているキーが正確であるか否かをメロディの最終音に基づいて検証することができる。
【０２７６】
また、本実施の形態において、ＣＰＵ２１は、修正された各コードのスケールと、対応する区間のメロディのスケールとが一致するか否か判定し、一致していない場合は当該修正されたコードをさらに訂正する。
したがって、修正されたコードの正確性を検証し、正確でない場合はさらにコードを訂正できるので、コード付けの精度をより高めることができる。
【０２７７】
また、本実施の形態において、ＣＰＵ２１は、リアルタイムでのコード付けにおいて、曲データ中の所定の拍に属する音高、当該拍の直前の拍に属する音高及び当該直前の拍に付与されたコードに基づいて所定の拍に付与すべきコードを決定する。
したがって、リアルタイムでのコード付けを迅速かつ正確に行うことができる。
【０２７８】
また、本実施の形態において、ＣＰＵ２１は、曲の小節ごとに、当該小節に含まれるメロディ音のうち、付与されたコードの構成音以外の他の音が存在するか否かを判別し、  他の音が存在すると判別された場合に、当該他の音が装飾音であるか否かを判別し、  装飾音と判別された場合にはこの装飾音を除いた音に基づくコードと前記小節に付与されたコードとを比較するとともに、装飾音と判別されない場合には前記他の音に基づくコードと前記小節に付与されたコードとを比較し、  両者のコードが一致しないと判断された場合に、前記小節の区間を修正箇所と指定する。
したがって、リアルタイムでコード付けの誤りの原因であった装飾音を除いて、支配的な音により確実にコードを修正することができる。
【０２７９】
また、本実施の形態において、ＣＰＵ２１は、曲の小節ごとに、当該小節に含まれるメロディ音のうち、支配的な音以外の他の音が存在するか否かを判別する際に、曲の小節毎に、当該小節に含まれるメロディ音のうち音長の長い３つの音を抽出するとともに、これら３つの音が前記小節に付与されているコードの構成音か判別し、コード構成音と判別した場合は、これら３つの音を支配的な音とする。
したがって、支配的な音をコード構成音とすることができる。
【０２８０】
また、本実施の形態において、ＣＰＵ２１は、曲のメロディを所定の長さの複数のフレーズに区切る際に、曲を４小節毎、８小節毎及び２小節毎に区切る。
したがって、４小節単位、８小節単位、２小節単位等、音楽的に繰り返しの多い小節数を単位として、楽式の一致度を検証できる。
【０２８１】
また、本実施の形態において、曲データは、さらにリズム音を含み、ＣＰＵ２１は、楽式としてフレーズ同士のメロディ音の音高及びリズム音を比較し、各フレーズを、音高及びリズム音の両方が一致する場合、音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類する。
したがって、楽式の一致度の検証方法のバリエーションを多くできる。
【０２８２】
また、本実施の形態において、ＣＰＵ２１は、コード修正する際に、コード構成音検証により修正箇所と判断された曲の区間がある場合に、当該区間における他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別し、  終結していると判別された場合は、付与されたコードを当該他のコードに訂正する。
したがって、より適切なコード付けを行うことができる。
【０２８３】
また、本実施の形態において、ＣＰＵ２１は、コード修正する際に、コード構成音検証により修正箇所と判断された曲の区間がある場合に、当該区間における他のコードを付与することにより、前記区間の最終部分がカデンツに沿う形で終結しているか否か判別し、終結していないと判別された場合は、当該区間に含まれるメロディ音によりキーを確定し、当該確定されたキーに基づいて新たに付与されたコードで再度カデンツに沿う形で終結しているか否か判別する。
したがって、より適切なコード付けを行うことができる。
【０２８４】
また、本実施の形態において、ＣＰＵ２１は、曲のメロディを所定の長さの複数のフレーズに区切ってから、音高及びリズム音の両方が一致する場合に分類されたフレーズ夫々に付与されたコードを同一のコードに訂正し、  音高及びリズム音の一方が一致しかつ他方が所定値以上一致する場合、音高及びリズム音の両方が所定値以上一致する場合のいずれかに分類されたフレーズ夫々に付与されたコードの中で異なる部分のコード同士の機能が同一の場合は、当該異なる部分のコードを同一とする。
したがって、コード付けの精度をより高めることができる。
【０２８５】
本実施の形態においては、コード名判定処理（図３のステップＳ４）において、ＣＰＵ２１は、鍵盤１１の一連の操作において進行するメロディシーケンスにおいて、実行中の自動伴奏データの進行を規定する時間情報、特に拍の情報に基づいて、現在の拍の拍頭において押鍵された鍵に関連する現在メロディ音ＣＭと、１つ前の拍である前拍の拍頭において押鍵された鍵に関する先行メロディ音ＰＭとを決定する。また、ＣＰＵ２１は、決定された現在メロディ音情報と、先行メロディ音情報と、前拍におけるコード名である先行コード名ＰｒｅＣＨとに基づき、現在コード名ＣｕｒＣＨを決定するコード名決定処理（図５のステップＳ３１）を実行する。また、メロディ音の決定に際して、ＣＰＵ２１は、現在の拍が、小節において何番目の拍であるかに基づいて、現在メロディ音ＣＭ及び先行メロディ音ＰＭを決定する。
【０２８６】
すなわち、本実施の形態によれば、押鍵された拍の位置（時間的な位置）を考慮して現在メロディ音ＣＭ及び先行メロディ音ＰＭが決定され、決定されたメロディ音のシーケンスと、先行コード名ＰｒｅＣＨに基づいて現在コード名ＣｕｒＣＨが決定される。
【０２８７】
また、本実施の形態においては、ＣＰＵ２１は、拍子が４拍子である場合に、現在の拍が、１拍目或いは３拍目であるか、或いは、他の拍であるかに基づいて、現在メロディ音情報及び先行メロディ音情報を決定する。すなわち、強拍（１拍目、３拍目）と、弱拍（２拍目、４拍目）に基づいて、現在メロディ音ＣＭ及び先行メロディ音ＰＭを決定することで、拍の重みを考慮することが可能となる。
【０２８８】
また、本実施の形態において、ＣＰＵ２１は、前拍の先頭以降の押鍵が、現在の拍まで延びている場合に、シンコペーションであると判断し、現在メロディ音ＣＭを、現在の拍まで延びている押鍵に関するものに決定する。すなわち、拍頭の押鍵でなくとも、シンコペーションを構成する場合には、これを拍頭の押鍵と同様に取り扱うことができる。
【０２８９】
また、ＣＰＵ２１は、第１のドミナントモーション判定処理（図１０）において、先行コード名ＰｒｅＣＨがドミナントコードを示し、かつ、先行メロディ音ＰＭから現在メロディ音ＣＭが、予め定められた、ドミナントコードの構成音からトニックコードの構成音への移行を示す場合に、現在コード名ＣｕｒＣＨとして、トニックに相当するコード名を与える。このように、メロディシーケンスからドミナントモーションが明確に示される場合には、現在コード名ＣｕｒＣＨをトニックとして、コード進行における終止を形成させる。
【０２９０】
また、ＣＰＵ２１は、第２のドミナントモーション判定処理（図１７）において、先行メロディ音ＰＭから現在メロディ音ＣＭが、予め定められた、ドミナントコードの構成音からトニックコードの構成音への移行を示す場合に、現在コード名ＣｕｒＣＨとして、トニックに相当するコード名を与える。ここでは、先行コード名ＰｒｅＣＨがドミナントコードではない場合でも、メロディシーケンスからドミナントモーションが明確に示される場合には、現在コード名ＣｕｒＣＨをトニックとして、コード進行における終止を形成させる。
【０２９１】
さらに、ＣＰＵ２１は、第１のドミナントモーション判定処理或いは第２のドミナントモーション判定処理により、現在コード名ＣｕｒＣＨとしてトニックに相当するコード名が付与されなかった場合に、現在コード名ＣｕｒＣＨとして、先行コード名ＰｒｅＣＨを与える。これにより、コード保持を実現することができる。
【０２９２】
また、本実施の形態においては、現在メロディ音ＣＭが１拍目の押鍵に関する場合に、先行メロディ音ＰＭ、現在メロディ音ＣＭ及び先行コード名情報ＰｒｅＣＨに対応付けられたコード名を格納した第１のコードテーブルと、現在メロディ音ＣＭが、１拍目以外の押鍵に関する場合に、先行メロディ音ＰＭ、現在メロディ音ＣＭ及び先行コード名ＰｒＣＨに対応付けられたコード名を格納した第２のコードテーブルとを備え、ＣＰＵ２１は、押鍵タイミングにしたがって、第１のコードテーブル或いは第２のコードテーブルを参照する。これにより、拍にしたがって異なるコード名を取得することが可能となる。また、テーブルを参照することで、リアルタイムにコード名を決定することが可能となる。
【０２９３】
さらに、本実施の形態においては、決定された先行メロディ音ＰＭ及び現在メロディ音ＣＭに基づき、第１のコードテーブル或いは第２のコードテーブルにおいて、対応するコード名が存在しない場合に、現在コード名ＣｕｒＣＨとしてオーギュメント（ａｕｇ）或いはディミニッシュ（ｄｉｍ）という無判定コードを付与する。これにより、先行メロディ音ＰＭや現在メロディ音が、コード構成音或いはスケールノートでない場合であっても、楽曲においてそれほど違和感のない何らかのコード名を付与することが可能となる。
【０２９４】
さらに、本実施の形態においては、ＣＰＵ２１は、無判定コードテーブルを参照して、現在メロディ音ＣＭ、先行メロディ音ＰＭ及び先行コード名ＰｒｅＣＨから、オーギュメント（ａｕｇ）或いはディミニッシュ（ｄｉｍ）の何れのコードにすべきかを判断することが可能となる。
【０２９５】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【０２９６】
たとえば、前記実施の形態においては、拍子を４拍子としているが、３拍子或いは６拍子でも本発明を適用可能である。たとえば、３拍子の場合には、上記処理のうち、１拍目〜３拍目についての処理を使用すれば良い。また、６拍子は、３拍子が２つあると考え、上記１拍目〜３拍目の処理を使用する。また、４拍目〜６拍目は、１拍目〜３拍目と同様に扱って同一の処理を実行すれば良い。
【０２９７】
また、前記実施の形態では、ハ長調（ＣＭａｊ）或いはイ短調（Ａｍｉｎ）という調性において、主音（根音）に対する度数を用いたコード名が得られるがこれに限定されるものではなく、他の調性についても本発明を適用可能である。この場合には、たとえば、楽曲が長調であれば、「Ｃ」と、その楽曲の調性の根音との音高差が算出され、その音高差をオフセットとして、オフセット値をＲＡＭ２３に格納すれば良い。処理においては、実際に押鍵された鍵番号により特定される音名をオフセットだけ減じることで、「Ｃ」のスケールにて処理を実行することが可能となる。
【０２９８】
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［付記１］
曲メロディを演奏する演奏手段と、
演奏されている曲メロディの音高の履歴に基づき、当該曲メロディに対してリアルタイムで調を判定するリアルタイム調判定手段と、
前記演奏手段によるメロディ演奏終了後、前記リアルタイム調判定手段にて判定された調をノンリアルタイムで修正するノンリアルタイム調修正手段と、
を有する自動調修正装置。
［付記２］
前記ノンリアルタイム調修正手段は、
曲メロディの最終音高と当該最終音高と調との関係を表わす確定キーＤＢと、
当該確定キーＤＢから前記最終音高により読み出された調が、前記リアルタイム調判定手段にて判定された調とマッチするか判定し、マッチする場合は当該判定された調を確定調とするノンリアルタイム調判定手段と、
を有する請求項１記載の自動調修正装置。
［付記３］
前記自動調修正装置はさらに、
前記ノンリアルタイム調判定手段にてマッチしていない判断された場合、前記確定キーＤＢより、前記曲のメロディの最終音高と関係が深い調候補を読み出すとともに当該調候補に基づいて曲の最後の区間にコードを仮付与した場合、当該仮付与されたコードが、カデンツに沿う形で終結しているか否か判定するカデンツ判定手段と、
このカデンツ判定手段により終結していると判断された場合、前記調候補で曲頭から矛盾がないか検証するとともに、矛盾がないと検証された場合、前記調候補を確定調と判別する検証手段と、を有する請求項２記載の自動調修正装置。
［付記４］
前記自動調修正装置はさらに、
前記検証手段にて矛盾があると判定された場合に、曲の矛盾のない区間に前記調候補を、それ以外の区間に前記判定された調を割り当てる割当手段と、
曲頭の区間に割り当てられた調とそれ以外の区間に割り当てられた調との関係が盛り上り転調であるか判定するとともに、盛り上がり転調と判定された場合は、前記割り当てられた両方の調夫々を確定調とする盛り上り転調判定手段と、
を有する請求項３記載の自動調修正装置。
［付記５］
前記自動調修正装置はさらに、
関係調と借用和音との関係を示す関係調と借用和音ＤＢを有し、
前記曲中に複数の調が割り当てられ、かつその中に未検証の調が割り当てられている区間が存在する場合、当該区間に前記未検証調の関係調にないコードが存在する場合、当該未検証調を確定調とする請求項１記載の自動調修正装置。
［付記６］
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調判定するステップと、
前記メロディ演奏終了後、前記判定された調をノンリアルタイムで修正するステップと、
を有する自動調修正方法。
［付記７］
演奏されている曲メロディの音高の履歴により、当該曲メロディに対してリアルタイムで調を判定するステップと、
前記曲メロディ演奏終了後、前記判定された調をノンリアルタイムで修正するステップと、
をコンピユータに実行させるプログラム。
【符号の説明】
【０２９９】
１０…電子楽器  １１…鍵盤  １２、１３…スイッチ  １４…ノンリアルタイムコード付け修正スイッチ  １５…表示部  ２１…ＣＰＵ  ２２…ＲＯＭ  ２３…ＲＡＭ  ２４…サウンドシステム  ２５…スイッチ群  ２６…音源部  ２７…オーディオ回路  ２８…スピーカ
【図１】
0005472261.tif 000002
【図２】
0005472261.tif 000003
【図３】
0005472261.tif 000004
【図４】
0005472261.tif 000005
【図５】
0005472261.tif 000006
【図６】
0005472261.tif 000007
【図７】
0005472261.tif 000008
【図８】
0005472261.tif 000009
【図９】
0005472261.tif 000010
【図１０】
0005472261.tif 000011
【図１１】
0005472261.tif 000012
【図１２】
0005472261.tif 000013
【図１３】
0005472261.tif 000014
【図１４】
0005472261.tif 000015
【図１５】
0005472261.tif 000016
【図１６】
0005472261.tif 000017
【図１７】
0005472261.tif 000018
【図１８】
0005472261.tif 000019
【図１９】
0005472261.tif 000020
【図２０】
0005472261.tif 000021
【図２１】
0005472261.tif 000022
【図２２】
0005472261.tif 000023
【図２３】
0005472261.tif 000024
【図２４】
0005472261.tif 000025
【図２５】
0005472261.tif 000026
【図２６】
0005472261.tif 000027
【図２７】
0005472261.tif 000028
【図２８】
0005472261.tif 000029
【図２９】
0005472261.tif 000030
【図３０】
0005472261.tif 000031
【図３１】
0005472261.tif 000032
【図３２】
0005472261.tif 000033
【図３３】
0005472261.tif 000034
【図３４】
0005472261.tif 000035
【図３５】
0005472261.tif 000036
【図３６】
0005472261.tif 000037
【図３７】
0005472261.tif 000038
【図３８】
0005472261.tif 000039
【図３９】
0005472261.tif 000040
【図４０】
0005472261.tif 000041
【図４１】
0005472261.tif 000042
【図４２】
0005472261.tif 000043
【図４３】
0005472261.tif 000044
【図４４】
0005472261.tif 000045
【図４５】
0005472261.tif 000046
【図４６】
0005472261.tif 000047