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