(57)【特許請求の範囲】
【請求項１】
それぞれが音名と対応付けられた演奏操作子の操作がなされる毎に、当該演奏操作子に対応する音名を取得する操作子情報取得手段と、
前記操作子情報取得手段により取得された音名を、操作された操作子の履歴に対応する音名群として、順次レジスタに格納する格納手段と、
キー毎のダイアトニックスケールノート群を格納した第１のテーブルと、
前記キー毎のダイアトニックスケールノート群のうち、当該キー固有のトライトーンおよびその間のスケールノート群を格納した第２のテーブルと、
前記操作子の履歴に対応する音名群と前記第１のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群全てを含むダイアトニックスケール群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第１の検索判定手段と、
前記第１の検索判定手段により検索されたキーが複数ある場合は、前記操作子の履歴に対応する音名群と前記第２のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群の少なくとも一部を含む前記トライトーン及びその間のスケールノート群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第２の検索判定手段と、
を備えたことを特徴とする調判定装置。
【請求項２】
前記第２の検索判定手段により検索されたキーが複数ある場合は、当該複数のキーのうち、調号の最も少ないキーを、前記楽曲の調と判定することを特徴とする請求項１に記載の調判定装置。
【請求項３】
キー毎のダイアトニックスケールノート群を格納した第１のテーブルと、前記キー毎のダイアトニックスケールノート群のうち、当該キー固有のトライトーンおよびその間のスケールノート群を格納した第２のテーブルとを有するコンピュータに、
それぞれが音名と対応付けられた演奏操作子の操作がなされる毎に、当該演奏操作子に対応する音名を取得する操作子情報取得ステップと、
前記取得された音名を、操作された操作子の履歴に対応する音名群として、順次レジスタに格納する格納ステップと、
前記操作子の履歴に対応する音名群と前記第１のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群全てを含むダイアトニックスケール群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第１の検索判定ステップと、
前記第１の検索判定ステップにより検索されたキーが複数ある場合は、前記操作子の履歴に対応する音名群と前記第２のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群の少なくとも一部を含む前記トライトーン及びその間のスケールノート群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第２の検索判定ステップと、
を実行させる調判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽曲の調を判定する調判定装置および調判定プログラムに関する。
【背景技術】
【０００２】
鍵盤を備えた電子楽器では、ピアノやオルガンと同様に主としてメロディを奏する右手および伴奏を奏する左手を用いて弾くのが一般的である。ピアノの奏法では、右手と左手をそれぞれ楽譜等にしたがって独立して動かすための練習が必要である。また、オルガンの奏法でも、左手でコードを構成する複数の鍵を正しく押鍵することが必要である。オルガンの奏法においても、コードを押さえるためには練習を要する。
【０００３】
このようにピアノの奏法およびオルガンの奏法の何れにおいても、右手と左手を同時に動かすためには相応の練習が必要である。特に、メロディを奏するために右手を動かすことは可能であっても、同時に左手を押鍵することが困難と感じる演奏者が、特に初心者では多い。したがって、演奏者が右手でメロディを演奏することで、左手の演奏に相当する伴奏を自動的に作成して、演奏する電子楽器が求められる。
【０００４】
たとえば、特許文献１には、楽曲の音符データを複数の区間ごとに記憶しておき、音符データの第２の区間のコード名を付与するにあたり、調データ、第２の区間に対応する音符データ、第１の区間の音符データおよび先に第２の区間に付与されているコード名を参照して、新たなコード名を決定する装置が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３０９９４３６号公報
【特許文献２】特開平５−１１７６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
調は一定とは限らず、楽曲の途中で、他の調に移行する転調が生じる場合が多々存在する。転調が生じた場合には、コード名の決定に先立ち、どの調に移行したかを判断し、新たな調を取得する必要がある。また、楽曲の開始時やフレーズの開始時には、そもそもどの調で楽曲やフレーズを開始したかを判定することが困難な場合もある。
【０００７】
たとえば、特許文献２には、新たなコードと新たなコードに先行するコードとの間のコードパターンを分析することにより、新たな調を判定する技術が開示されている。また、特許文献１においても、確定したコード進行に基づいて、調を検出する技術が開示されている。
【０００８】
何れの場合にも、調の検出には、確定したコード進行を取得する必要があり、単なるメロディシーケンスから調を検出することが不可能であるという問題点があった。
【０００９】
本発明は、メロディシーケンスから適切に調を判定することができる調判定装置および調判定プログラムを提供することを目的とする。また、本発明は、上記メロディシーケンスおよびコード進行から、転調が生じたときであっても適切に調を判定することができる調判定装置および調判定プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の目的は、それぞれが音名と対応付けられた演奏操作子の操作がなされる毎に、当該演奏操作子に対応する音名を取得する操作子情報取得手段と、
前記操作子情報取得手段により取得された音名を、操作された操作子の履歴に対応する音名群として、順次レジスタに格納する格納手段と、
キー毎のダイアトニックスケールノート群を格納した第１のテーブルと、
前記キー毎のダイアトニックスケールノート群のうち、当該キー固有のトライトーンおよびその間のスケールノート群を格納した第２のテーブルと、
前記操作子の履歴に対応する音名群と前記第１のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群全てを含むダイアトニックスケール群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第１の検索判定手段と、
前記第１の検索判定手段により検索されたキーが複数ある場合は、前記操作子の履歴に対応する音名群と前記第２のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群の少なくとも一部を含む前記トライトーン及びその間のスケールノート群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第２の検索判定手段と、
を備えたことを特徴とする調判定装置により達成される。
【００１１】
別の好ましい実施態様においては、前記第２の検索判定手段により検索されたキーが複数ある場合は、当該複数のキーのうち、調号の最も少ないキーを、前記楽曲の調と判定するように構成されている。
【００２０】
また、本発明の目的は、キー毎のダイアトニックスケールノート群を格納した第１のテーブルと、前記キー毎のダイアトニックスケールノート群のうち、当該キー固有のトライトーンおよびその間のスケールノート群を格納した第２のテーブルとを有するコンピュータに、
それぞれが音名と対応付けられた演奏操作子の操作がなされる毎に、当該演奏操作子に対応する音名を取得する操作子情報取得ステップと、
前記取得された音名を、操作された操作子の履歴に対応する音名群として、順次レジスタに格納する格納ステップと、
前記操作子の履歴に対応する音名群と前記第１のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群全てを含むダイアトニックスケール群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第１の検索判定ステップと、
前記第１の検索判定ステップにより検索されたキーが複数ある場合は、前記操作子の履歴に対応する音名群と前記第２のテーブルとを比較することにより、前記操作子の履歴に含まれる音名群の少なくとも一部を含む前記トライトーン及びその間のスケールノート群に対応するキーを検索するとともに、検索されたキーがひとつの場合は、当該検索されたキーを前記演奏操作子の操作による楽曲の調と判定する第２の検索判定ステップと、
を実行させる調判定プログラムにより達成される。
【発明の効果】
【００２１】
本発明によれば、メロディシーケンスから適切に調を判定することができる調判定装置および調判定プログラムを提供することが可能となる。また、本発明によれば、上記メロディシーケンスおよびコード進行から、転調が生じたときであっても適切に調を判定することができる調判定装置および調判定プログラムを提供することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】図１は、本実施の形態にかかる電子楽器の外観を示す図である。
【図２】図２は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる電子楽器において実行されるメインフローの例を示すフローチャートである。
【図４】図４は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。
【図５】図５は、本実施の形態にかかるキー判定処理の例を示すフローチャートである。
【図６】図６は、本実施の形態にかかる仮キー処理の例を示すフローチャートである。
【図７】図７は、本実施の形態にかかる仮キー処理の例を示すフローチャートである。
【図８】図８は、本実施の形態にかかる音長を考慮したコード確認処理の例を示すフローチャートである。
【図９】図９、本実施の形態にかかる転調処理の例を示すフローチャートである。
【図１０】図１０は、本実施の形態にかかる転調処理の例を示すフローチャートである。
【図１１】図１１は、ドミナントモーションによる転調処理の例を示すフローチャートである。
【図１２】図１２は、本実施の形態にかかる近親調への転調処理の例を示すフローチャートである。
【図１３】図１３は、本実施の形態にかかる盛り上がりによる転調処理の例を示すフローチャートである。
【図１４】図１４は、本実施の形態にかかる盛り上がりによる転調処理の例を示すフローチャートである。
【図１５】図１５は、本実施の形態にかかるダイアトニックレジスタの例を示す図である。
【図１６】図１６は、本実施の形態にかかるキーノートスケールテーブルの例を示す図である。
【図１７】図１７は、本実施の形態にかかるダイアトニックスケールテーブルの例を示す図である。
【図１８】図１８は、本実施の形態にかかるコードデータベースの例を示す図である。
【図１９】図１９は、本実施の形態にかかる仮キー選択処理の例を示すフローチャートである。
【図２０】図２０は、本実施の形態にかかる仮キー選択処理の例を示すフローチャートである。
【図２１】図２１は、本実施の形態にかかる仮コード決定マップの例を示す図である。
【図２２】図２２は、本実施の形態にかかるコード名判定処理の例を示すフローチャートである。
【図２３】図２３は、本実施の形態にかかるコード判定テーブルの例を示す図である。
【図２４】図２４は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本実施の形態にかかる電子楽器の外観を示す図である。図１に示すように、本実施の形態にかかる電子楽器１０は、鍵盤１１を有する。また、鍵盤１１の上部には、音色の指定、自動伴奏の開始・終了、リズムパターンの指定などを行なうためのスイッチ（符号１２、１３参照）や、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コード名などを表示する表示部１５を有する。本実施の形態にかかる電子楽器１０は、たとえば、６１個の鍵（Ｃ２〜Ｃ７）を有する。また、電子楽器１０は、自動伴奏をオンする自動伴奏モード、および、自動伴奏をオフにする通常モードの２つの演奏モードのうち、何れかの下での演奏が可能である。
【００２４】
図２は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。図２に示すように、本実施の形態にかかる電子楽器１０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、サウンドシステム２４、スイッチ群２５、大規模記憶装置３０、鍵盤１１および表示部１５を備える。
【００２５】
ＣＰＵ２１は、電子楽器１０全体の制御、鍵盤１１の鍵の押鍵やスイッチ群２５を構成するスイッチ（たとえば、図１の符号１２、１３参照）の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム２４の制御、押鍵された楽音の音高にしたがった、演奏されている楽曲の調（キー）の決定、コード名の決定、自動伴奏パターン、調およびコード名にしたがった自動伴奏の演奏など、種々の処理を実行する。
【００２６】
ＲＯＭ２２は、ＣＰＵ２１に実行させる種々の処理、たとえば、鍵盤１１の鍵の押鍵やスイッチ群２５を構成するスイッチ（たとえば、図１の符号１２、１３参照）の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム２４の制御、押鍵された楽音の音高にしたがった、演奏されている楽曲の調（キー）の決定、コード名の決定、自動伴奏パターン、調およびコード名にしたがった自動伴奏の演奏などのプログラムを記憶する。また、ＲＯＭ２２は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの楽音を生成するための波形データを格納した波形データエリア、および、種々の自動伴奏パターンを示すデータ（自動伴奏データ）を格納した自動伴奏パターンエリアを有する。
【００２７】
ＲＡＭ２３は、ＲＯＭ２２から読み出されたプログラムや、処理の過程で生じたデータを記憶する。処理の過程で生じたデータには、たとえば、後述するダイアトニックレジスタなどが含まれる。また、本実施の形態において、自動伴奏パターンは、メロディ音およびオブリガート音を含むメロディ自動伴奏パターン、コード名ごとの構成音を含むコード自動伴奏パターン、並びに、ドラム音を含むリズムパターンを有する。たとえば、メロディ自動伴奏パターンのデータのレコードは、楽音の音色、音高、発音タイミング（発音時刻）、音長などを含む。コード自動伴奏パターンのデータのレコードは、上記情報に加えて、コード構成音を示すデータを含む。また、リズムパターンのデータは、楽音の音色、発音タイミングを含む。
【００２８】
サウンドシステム２４は、音源部２６、オーディオ回路２７およびスピーカ２８を有する。音源部２６は、たとえば、押鍵された鍵についての情報或いは自動伴奏パターンについての情報をＣＰＵ２１から受信すると、ＲＯＭ２２の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部２６は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路２７は、楽音データをＤ／Ａ変換して増幅する。これによりスピーカ２８から音響信号が出力される。
【００２９】
大規模記憶装置３０は、ハードディスクやメモリカードを含む。大規模記憶装置３０には、後述するダイアトニックスケールテーブル、キースケールノートテーブル、仮コード決定マップ、アベイラブルコードテーブルなど種々のテーブルが格納される。
【００３０】
本実施の形態にかかる電子楽器１０は、通常モードの下においては、鍵盤１１の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器１０は、自動伴奏スイッチ（図示せず）が操作されることにより、自動伴奏モードとなる。自動伴奏モードの下では、鍵の押鍵により、その鍵の音高の楽音が発生する。また、押鍵された鍵の音高に基づいて、楽曲の調（キー）およびコード名が決定され、調にしたがって、コード名のコード構成音を含む自動伴奏パターンにしたがった楽音が発生する。なお、自動伴奏パターンは、ピアノやギターなど音高の変化を伴うメロディ自動伴奏パターン、コード自動伴奏パターンと、バスドラム、スネアドラム、シンバルなど音高の変化を伴わないリズムパターンとを含む。以下、電子楽器１０が、自動伴奏モードの下で動作する場合について説明する。
【００３１】
以下、本実施の形態にかかる電子楽器１０において実行される処理についてより詳細に説明する。図３は、本実施の形態にかかる電子楽器において実行されるメインフローの例を示すフローチャートである。なお、図示しないが、メインフローの実行中に、所定の時間間隔で、割込カウンタのカウンタ値をインクリメントするタイマインクリメント処理も実行される。
【００３２】
図３に示すように、電子楽器１０のＣＰＵ２１は、電子楽器１０の電源が投入されると、ＲＡＭ２３中のデータや、表示部１５の画像のクリアを含むイニシャル処理（初期化処理）を実行する（ステップ３０１）。また、イニシャル処理においては、大規模記憶装置３０に格納されていた種々のテーブルを、ＲＡＭ２３にコピーする。イニシャル処理（ステップ３０１）が終了すると、ＣＰＵ２１は、スイッチ群２５を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する（ステップ３０２）。
【００３３】
たとえば、スイッチ処理（ステップ３０２）においては、音色指定スイッチや、自動伴奏パターンの種別の指定スイッチ、自動伴奏パターンのオン・オフの指定スイッチなど、種々のスイッチの操作が検出される。自動伴奏パターンがオンとなったときには、ＣＰＵ２１は、演奏モードを、自動伴奏モードに切り換える。演奏モードを示すデータは、ＲＡＭ２３の所定の領域に指定される。音色や自動伴奏パターンの種別を示すデータも、同様に、ＲＡＭ２３の所定の領域に格納される。
【００３４】
次いで、ＣＰＵ２１は、鍵盤処理を実行する（ステップ３０３）。図４は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。鍵盤処理において、ＣＰＵ２１は、鍵盤１１の鍵を走査する。鍵の走査結果であるイベント（鍵オン或いはオフ）は、そのイベントが生じた時刻の情報とともに、ＲＡＭ２３に一時的に記憶される。ＣＰＵ２１は、ＲＡＭ２３に記憶された鍵の走査結果を参照して（ステップ４０１）、ある鍵についてイベントが有るか否かを判断する（ステップ４０２）。ステップ４０２でＹｅｓと判断された場合には、ＣＰＵ１１は、イベントが鍵オンであるか否かを判断する（ステップ４０３）。
【００３５】
ステップ４０３でＹｅｓと判断された場合には、ＣＰＵ２１は、当該鍵オンがあった鍵について発音処理を実行する（ステップ４０４）。発音処理においては、ＣＰＵ２１は、ＲＡＭ２３に記憶されていたメロディ鍵用の音色データ、および、鍵の音高を示すデータを読み出してＲＡＭ２３に一時的に記憶する。音源発音処理（図３のステップ３０７）において、音色や音高を示すデータは音源部２６に与えられる。音源部２６は、音色および音高を示すデータにしたがって、ＲＯＭ２２の波形データを読み出して、所定の音高の楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。
【００３６】
その後、ＣＰＵ２１は、鍵オンがあった鍵についての音高情報（たとえば鍵番号）および押鍵タイミング（たとえば押鍵時刻）をＲＡＭ２３に格納する（ステップ４０５）。押鍵タイミングは、割り込みカウンタのカウンタ値に基づいて算出することができる。
【００３７】
ステップ４０３でＮｏと判断された場合には、イベントが鍵オフであったことになる。したがって、ＣＰＵ２１は、鍵オフになった鍵についての消音処理を実行する（ステップ４０６）。消音処理においては、ＣＰＵ２１は、消音すべき楽音の音高を示すデータを生成し、ＲＡＭ２３に一時的に記憶する。この場合にも、後述する音源発音処理（ステップ３０６）において、消音すべき楽音の音色および音高を示すデータが、音源部２６に与えられる。音源部２６は、与えられたデータに基づいて、所定の楽音を消音する。その後、ＣＰＵ２１は、鍵オフがあった鍵について、押鍵されていた時間（押鍵時間）をＲＡＭ２３に格納する（ステップ４０７）。
【００３８】
ＣＰＵ２１は、全ての鍵イベントについて処理が終了したかを判断する（ステップ４０８）。ステップ４０８でＮｏと判断された場合には、ステップ４０２に戻る。
【００３９】
鍵盤処理（図３のステップ３０３）が終了すると、ＣＰＵ２１は、キー判定処理を実行する（ステップ３０４）。図５は、本実施の形態にかかるキー判定処理の例を示すフローチャートである。図５に示すように、ＣＰＵ２１は、ＲＡＭ２３中に格納されたダイアトニックレジスタ中のデータを更新する（ステップ５０１）。
【００４０】
図１５は、本実施の形態にかかるダイアトニックレジスタの例を示す図である。本実施の形態において、ダイアトニックレジスタ１５００は、メロディ音が押鍵されるごとに、一連の項目に値が格納される。図１５の例では、時系列に５つのメロディ音のそれぞれについて、一連の値が格納される（符号１５０１〜１５０５）。図１５においては、矢印ｔの方向に時間的に新しい押鍵についての値となっている。つまり、メロディ音の項目にあるように、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｂ」の順で押鍵されている。
【００４１】
本実施の形態においては、複数のメロディ音について、以下に述べる項目の値が、ダイアトニックレジスタ１５００の単位レジスタ１５０１〜１５０５に格納されるようになっている。単位レジスタ１５０１〜１５０５は、それぞれ、メロディ音、音長、仮キー、仮コード、仮機能、メロディ音履歴、キー候補レジスタおよび確定キーという項目を有し、単位レジスタには、各項目についての値が格納され得る。メロディ音には、押鍵された鍵の音名が格納される。また、音長は、当該鍵の押鍵時間が格納される。
【００４２】
最終的に、キーが確定したときには、単位レジスタの確定キーの項目に、キー名が格納される（たとえば、単位レジスタ１５０５格納）。しかしながら、キーが確定したと判断されるためには、複数の押鍵が必要となる。そこで、本実施の形態においては、キーが確定できると判断する段階になるまでは、処理により仮キーが特定されて、そのキー名が、単位レジスタの仮キーの項目に格納される。また、仮キーの下で、メロディ音に適切な仮のコード名が、仮コードの項目に格納される。また、仮機能の項目には、仮キーの下での、仮コードの機能（主音をＩとした場合のコード名、および、トニック（Ｔ）、ドミナント（Ｄ）、サブドミナント（Ｓ）の種別）が格納される。
【００４３】
メロディ音履歴は、演奏開始時或いは所定のタイミングから、押鍵された鍵の音名が蓄積される。たとえば、最初の押鍵についての単位レジスタ１５０１には、押鍵された鍵であるＣのみが格納され、次の押鍵についての単位レジスタ１５０２には、２つの鍵ＣＤが格納されている。キー候補には、当該鍵が押鍵された時点で、あり得る１以上のキー名が格納される。
【００４４】
ステップ５０１においては、新たな単位レジスタ中のメロディ音、音長、およびメロディ音履歴などに値が格納される。次いで、ＣＰＵ２１は、ダイアトニックレジスタ１５００において、最新の押鍵にかかる単位レジスタを参照して、仮コードの状態であるかを判断する（ステップ５０２）。仮コードの状態とは、確定キーに値が格納されていない状態をいう。ステップ５０２でＹｅｓと判断された場合には、ＣＰＵ２１は、仮キー処理をイ実行する（ステップ５０３）。
【００４５】
図６および図７は、本実施の形態にかかる仮キー処理の例を示すフローチャートである。図６に示すように、ＣＰＵ２１は、ダイアトニックレジスタ１５０１の最新の押鍵にかかる単位レジスタのメロディ音履歴と、ＲＡＭ２３中に格納されたキースケールノートテーブルとを比較する（ステップ６０１）。図１６は、本実施の形態にかかるキーノートスケールテーブルの例を示す図である。キースケールノートテーブル１６００には、Ｃ〜Ｂの１２個のキーそれぞれについて、キースケールノートが格納され、かつ、それぞれのキーに固有のトライトーンおよびその間のスケールノートを含む４つの音名について、フラグなどの識別子が付されている。
【００４６】
図１６に示すキーノートスケール１６００において、たとえば、キーがＣであれば、Ｆ、Ｇ，Ａ、Ｂの４つの音名が、上記識別子が付された音名（符号１６０１参照）、キーがＧであれば、Ｃ、Ｄ、Ｅ、Ｆ＃の４つの音名が、上記識別子が付された音名（符号１６０２参照）、キーがＤであれば、Ｇ、Ａ、Ｂ、Ｃ３の４つの音名が、上記識別子が付された音名（符号１６０３参照）となる。
【００４７】
ステップ６０１においては、メロディ音履歴とキースケールノートテーブル１６００とが比較され、メロディ音履歴に格納された音名が、上記識別子が付された音名と全て一致するようなキーが存在するか否かが判断される。ＣＰＵ２１は、上記比較の結果、一致するキーが存在すると判断した場合（ステップ６０２でＮｏ）には、ダイアトニックレジスタ１５００の単位レジスタにおいて、確定キーの値として、上記一致すると判断されたキーを格納する（ステップ６０４）。また、ＣＰＵ２１は、ＲＡＭ２３中に格納された現在キーレジスタに、上記一致すると判断されたキーを格納する（ステップ６０７）。
【００４８】
ステップ６０２でＹｅｓ、つまり、比較の結果、一致するキーが存在しないと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３中に格納されたダイアトニックスケールテーブルを参照して、メロディ音履歴に基づき、キー候補を絞り込む（ステップ６０３）。
【００４９】
図１７は、本実施の形態にかかるダイアトニックスケールテーブルの例を示す図である。図１７に示すように、ダイアトニックレジスタに格納された値は、所定の音に識別子が付与されていないことを除けば、図１６に示すキースケールノートテーブルと同一である。したがって、ダイアトニックスケールテーブルを別途設けずに、キースケールノートテーブルを参照するように構成しても良い。図１７に示すダイアトニックレジスタにおいては、たとえば、キーがＣであればＣ、Ｄ、Ｅ、Ｆ、Ｇ、Ａ、Ｂの音名が格納され（符号１７０１参照）、キーＧであればＧ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ＃の音名が格納される（符号１７０２参照）。
【００５０】
ステップ６０３では、メロディ音履歴と、ダイアトニックスケールテーブル１７００とが比較され、メロディ音履歴に含まれる音名が、あるキーのダイアトニックスケールに全て含まれるようなキーが存在するかが調べられる。このようなキーは、存在しない場合もあるし、複数存在する場合もある。たとえば、単位レジスタ１５０３のメロディ音履歴には、Ｃ、Ｄ、Ｅが格納されている。そこで、ダイアトニックスケールテーブル１７００を参照すると、Ｃ、Ｄ、Ｅの全てをダイアトニックスケールとして含むキーは、Ｃ、Ｇ、Ｆの３つとなる。したがって、この場合には、Ｃ、Ｄ、Ｅの３つのキーがキー候補となり得る。
【００５１】
ＣＰＵ２１は、ステップ６０３で見出されたキー候補が２つ以上であるかを判断する（ステップ６０５）。ステップ６０５でＮｏと判断された場合、つまり、キー候補が１つである場合には、ステップ６０４に進む。したがって、ＣＰＵ２１は、ダイアトニックレジスタ１５００の単位レジスタにおいて、確定キーの値として、上記キー候補を格納する（ステップ６０４）。また、ＣＰＵ２１は、ＲＡＭ２３中に格納された現在キーレジスタに、上記キー候補を格納する（ステップ６０７）。
【００５２】
ステップ６０５でＹｅｓと判断された場合には、ＣＰＵ２１は、メロディ音履歴に値（音名）が２つ以上格納されているかを判断する（ステップ６０８）。ステップ６０８でＮｏと判断された場合には、ステップ７０９に進む。ステップ７０９において、ＣＰＵ２１は、メロディ履歴に含まれる値において、最も調号の少ない音を、単位レジスタ中の仮キーの値として格納する。なお、調号が同じ場合（たとえば、ＦとＧ、ＤとＢ♭）には、♯系のキーが優先して仮キーとされる。
【００５３】
ステップ６０６でＹｅｓと判断された場合には、ＣＰＵ２１は、メロディ音履歴において、トライトーンに該当する２つの音が含まれるかを判断する（ステップ７０１）。ここに、トライトーンとは、三全音（増４度或いは減５度）の音程の２つの音をいう。したがって、ステップ７０１においては、メロディ音履歴中に、三全音の音程を有する２音が含まれているかが判断される。
【００５４】
ステップ７０１でＹｅｓと判断された場合には、さらに、ＣＰＵ２１は、メロディ音履歴において、上記トライトーンの間に位置する２つのスケールノートが含まれているかを判断する（ステップ７０２）。ステップ７０２でＹｅｓと判断された場合には、ステップ６０４に進む。すなわち、ステップ６０２でＮｏと判断された場合と同様となる。
【００５５】
ステップ７０２でＮｏと判断されたときには、２つのキー候補が得られる。図１６のキースケールノートテーブル１６００から理解できるように、同一のトライトーンを有する２つキーが存在する。たとえば、スケールノートにおいて、ＦとＢというトライトーンを有するキーは、Ｃ、Ｇ♭の２つとなる。そこで、ＣＰＵ２１は、２つのキー候補を特定し、さらに、調号の少ないほうを第１仮キー、調号の多いほうを第２仮キーとして、ＲＡＭ２３に格納する（ステップ７０４）。その後、ステップ７０７に進み、ＣＰＵ２１は、第１仮キーの値を、単位レジスタの仮キーとして格納する。
【００５６】
ステップ７０１でＮｏと判断された場合には、ＣＰＵ２１は、メロディ音履歴において、連続する４音以上のスケールノートが含まれるかを判断する（ステップ７０３）。連続して４音以上のスケールノートが同一であるようなキーは２つ存在する。したがって、ステップ７０３でＹｅｓと判断された場合にも、ステップ７０２でＮｏと判断された場合と同様に処理される。すなわち、ＣＰＵ２１は、２つのキー候補を特定し、さらに、調号の少ないほうを第１仮キー、調号の多いほうを第２仮キーとして、ＲＡＭ２３に格納する（ステップ７０４）。その後、ステップ７０７に進み、ＣＰＵ２１は、第１仮キーの値を、単位レジスタの仮キーとして格納する。
【００５７】
ステップ７０３においてＮｏと判断された場合には、ＣＰＵ２１は、メロディ音履歴において、連続する３音のスケールノートが含まれるかを判断する（ステップ７０５）。ステップ７０５でＮｏと判断された場合には、ＣＰＵ２１は、メロディ音履歴において、連続しない５音以上のスケールノートが含まれるかを判断する（ステップ７０８）。ステップ７０５でＹｅｓ或いはステップ７０８でＹｅｓと判断される場合には、３つのキー候補が得られる。ＣＰＵ２１は、３つのキー候補を特定し、さらに、調号の最小のものを第１仮キー、２番目に調号の少ないものを第２仮キー、調号が最大のものを第３仮キーとして、ＲＡＭ２３に格納する（ステップ７０６）。その後、ステップ７０７に進み、ＣＰＵ２１は、第１仮キーの値を、単位レジスタの仮キーとして格納する。
【００５８】
ステップ７０８でＮｏと判断された場合には、ＣＰＵ２１は、メロディ音履歴に含まれる音をそのまま調名と考えたときに、最も調号の少ない音を、単位レジスタ中の仮キーの値として格納する（ステップ７０９）。
【００５９】
ステップ５０２でＮｏと判断された場合、または、仮キー処理（ステップ５０３）が終了した場合、ＣＰＵ２１は、転調フラグ値が所定の閾値以下であるかを判断する（ステップ５０４）。転調フラグ値は、コード名判定処理（ステップ３０５）において、適切なコード名が決定されなかった場合にインクリメントされる値である。ステップ５０４でＹｅｓと判断された場合には、ＣＰＵ２１は、キーが未確定であるかを判断する（ステップ５０５）。これは、ダイアトニックレジスタの最新の単位レジスタにおいて、確定キーの項目に値が格納されているかを判断すれば良い。
【００６０】
ステップ５０５でＮｏ、つまり、確定キーの項目に値が格納されており、キーが確定している場合には、ＣＰＵ２１は、ＲＡＭ２３中のキー確定フラグを「１」にセットする（ステップ５０６）。ステップ５０４でＮｏと判断された場合（つまり、転調フラグ値が閾値より大きい場合）或いはステップ５０５でＹｅｓと判断された場合には、音長を考慮したコード確認処理が実行される（ステップ５０７）。図８は、本実施の形態にかかる音長を考慮したコード確認処理の例を示すフローチャートである。
【００６１】
図８に示すように、音長を考慮したコード確認処理において、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタ中の音長をそれぞれ参照して、音長の長いほうから上位４つのメロディ音の音名を特定する（ステップ８０１）。次いで、ＣＰＵ２１は、ステップ８０１で特定されたメロディ音から構成されるコード構成音と、コードデータベースとを比較する（ステップ８０２）。図１８は、本実施の形態にかかるコードデータベースの例を示す図である。図１８に示すように、コードデータベース１８００には、コード名ごとに、コード構成音および当該コードに関するスケールノートが格納されている。図１８において、たとえば、ハッチングで示される音名がコード構成音である。
【００６２】
ＣＰＵ２１は、上記４つのコード構成音と、同一のコード構成音を有するコードデータベース１８００中のコード名があるかを判断する（ステップ８０３）。ステップ８０３でＮｏと判断された場合には、ＣＰＵ２１は、音長の長いほうから上位３つのメロディ音の音名からなるコード構成音と、コードデータベースとを比較する（ステップ８０４）。次いで、ＣＰＵ２１は、上記３つのコード構成音と、同一のコード構成音を有するコードデータベース１８００中のコード名があるかを判断する（ステップ８０７）。
【００６３】
ステップ８０３でＹｅｓ或いはステップ８０７でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３に格納されていた現在コード名ＣｕｒＣｈを、前回コード名ＰｒｅＣｈとして格納する（ステップ８０５）。また、ＣＰＵ２１は、ステップ８０３或いはステップ８０７で一致するとされたコード名を、現在コード名ＣｕｒＣｈとして格納する（ステップ８０６）。
【００６４】
なお、コード名は、Ｃを主音としたときの相対的なコード名ではなく、音名を利用したコード名となる。たとえば、アベイラブルコードテーブルにおいて、ＩＭａｊ、ＩＶＭａｊが取得されていれば、それぞれ、現在コード名ＣｕｒＣｈは、Ｃ（ＣＭａｊ）、Ｆ（ＦＭａｊ）となる。
【００６５】
その後、ＣＰＵ２１は転調処理を実行する（ステップ５０８）。図９および図１０は、本実施の形態にかかる転調処理の例を示すフローチャートである。図９に示すように、ＣＰＵ２１は、先に実行されたコード確認処理において、新たな現在コード名ＣｕｒＣｈが取得されたかを判断する（ステップ９０１）。ステップ９０１でＮｏと判断された場合には、仮キー選択処理を実行する（ステップ９０２）。仮キー選択処理については後述する。
【００６６】
ステップ９０１でＹｅｓと判断された場合には、ＣＰＵ２１は、新たに取得された現在コード名ＣｕｒＣｈが、現在キー或いは仮キーにおけるＩＩＩ７或いはＶ７に相当するかを判断する（ステップ９０３）。ステップ９０３でＹｅｓと判断された場合には、ＣＰＣＵ２１は、ダイアトニックレジスタの単位レジスタにおいて、確定キー値として、現在コード名がＩＩＩ７或いはＶ７となったキー、つまり、現在キー或いは仮キーを格納する（ステップ９０４）。また、ＣＰＵ２１は、ＲＡＭ２３中の現在キーレジスタに、上記キーを格納する（ステップ９０５）。
【００６７】
ステップ９０３でＮｏと判断された場合には、ＣＰＵ２１は、新たに取得された現在コード名ＣｕｒＣｈが、現在キー或いは仮キーにおけるＩＩＩ７或いはＶ７以外の７ｔｈのコードであるかを判断する（ステップ９０６）。ステップ９０６でＹｅｓと判断された場合には、ドミナントモーションによる転調処理を実行する（ステップ９０７）。図１１は、ドミナントモーションによる転調処理の例を示すフローチャートである。
【００６８】
図１１に示すように、ドミナントモーションによる転調処理においては、ＣＰＵ２１は、現在キーの主音と、現在コード名におけるルート音との間の差を算出する（ステップ１１０１）。ＣＰＵ２１は、転調後のキーとして、現在キー＋ステップ１１０１で算出された差＋５半音にて得られる音名を算出する（ステップ１１０２）。次いで、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタにおいて、仮キーの値として、ステップ１１０２で得られた音名を格納する（ステップ１１０３）。また、ＣＰＵ２１は、単位レジスタにおいて、キー候補の項目に、上記算出されたキーの平行短調に対応する（短三度下の）キーを追加する（ステップ１１０４）。
【００６９】
ステップ９０６においてＮｏと判断された場合に、ＣＰＵ２１は、現在コード名が、ピボット転調におけるピボットコードに該当するかを判断する（ステップ９０８）。ステップ９０８でＹｅｓと判断された場合には、近親調への転調処理が実行される。図１２は、図９におけるステップ９０８および９０９の例をより詳細に示すフローチャートである。図１２において、ステップ１２０１〜ステップ１２０３が、図９のステップ９０８に相当し、ステップ１２０４〜１２０５が、図９のステップ９０９に該当する。
【００７０】
ＣＰＵ２１は、前回コード名ＰｒｅＣｈが、現在キー或いは仮キーにおけるピボットコードに該当するかを判断する（ステップ１２０１）。たとえば、現在キーがＣであれば、そのダイアトニックコードは以下のようになる。
【００７１】
ＣＭ７（ＩＭ７）
Ｄｍ７（ＩＩｍ７）
Ｅｍ７（ＩＩＩｍ７）
ＦＭ７（ＩＶＭ７）
Ｇ７（Ｖ７）
Ａｍ７（ＶＩｍ７）
Ｂｍ７（−５）（ＶＩＩｍ７（−５））
たとえば、この中で、Ｅｍ７は、たとえば、キーＤにおけるダイアトニックコード（ＩＩｍ７）、キーＧにおけるダイアトニックコード（ＶＩｍ７）などに該当する。また、Ａｍ７は、キーＧにおけるダイアトニックコード（ＩＩｍ７）などに該当する。
【００７２】
たとえば、ＲＡＭ２３に、コード名ごとにどのキーのダイアトニックコードに該当するかを示すテーブルを格納して、ＣＰＵ２１は、テーブルを参照することで、ピボットコードに該当するかを判断すれば良い（ステップ１２０１）。ステップ１２０１でＹｅｓと判断された場合には、ピボットコードを経て後続するキーにおけるダイアトニックコードを特定する（ステップ１２０２）。次いで、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、ステップ１２０２で特定されたダイアトニックコード中、ピボットコードの近親調に該当するかを判断する（ステップ１２０３）。ステップ１２０１或いはステップ１２０３でＮｏと判断された場合（ステップ９０８でＮｏと判断された場合に対応する）には、ステップ１００１に進む。
【００７３】
ステップ１２０３でＹｅｓと判断された場合には、近親調への転調処理（ステップ９０９）が実行される。ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタにおける確定キー値として、上記近親調を格納する（ステップ１２０４）。またＣＰＵ２１は、ＲＡＭ２３中の現在キーレジスタにも、上記近親調を格納する（ステップ１２０５）。
【００７４】
ステップ９０８でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、現在キー或いは仮キーに対して、半音上、全音上、短三度上のキーのＩ或いはＩＩＩのコードに該当するかを判断する（ステップ１００１）。ステップ１００１でＹｅｓと判断された場合には、盛り上がりによる転調処理が実行される。図１３および図１４は、本実施の形態にかかる盛り上がりによる転調処理の例を示すフローチャートである。
【００７５】
図１３に示すように、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、現在キー或いは仮キーに対して、半音上のキーのＩのコードに相当するかを判断する（ステップ１３０１）。ステップ１３０１でＹｅｓと判断された場合には、ＣＰＵ２１は、現在キーの半音上の音名を得て、当該音名のキーに転調したと判断する（ステップ１３０２）。ＣＰＵ２１は、ステップ１３０２で得られたキーを、ダイアトニックレジスタの単位レジスタ中、確定キーとして格納する（ステップ１３０３）。また、ＣＰＵ２１は、ステップ１３０２で得られたキーを、ＲＡＭ２３中の現在キーレジスタに格納する（ステップ１３０４）。
【００７６】
ステップ１３０１でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、現在キー或いは仮キーに対して、半音上のキーのＶのコードに相当するかを判断する（ステップ１３０５）。ステップ１３０５でＹｅｓと判断された場合には、ＣＰＵ２１は、もとの仮キーの半音上のキーを、ダイアトニックレジスタの単位レジスタ中、仮キーとして格納する（ステップ１３０６）。また、ＣＰＵ２１は、もとの仮キーの半音上のキーから長三度下のキーを、単位レジスタ中、キー候補として格納する（ステップ１３０７）。
【００７７】
ステップ１３０５でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈは、現在キー或いは仮キーに対して、全音上のキーのＩのコードに相当するかを判断する（ステップ１３０８）。ステップ１３０８でＹｅｓと判断された場合には、ＣＰＵ２１は、現在キーの全音上の音名を得て、当該音名のキーに転調したと判断する（ステップ１３０９）。ＣＰＵ２１は、ステップ１３０９で得られたキーを、ダイアトニックレジスタの単位レジスタ中、確定キーとして格納する（ステップ１３１０）。また、ＣＰＵ２１は、ステップ１３０９で得られたキーを、ＲＡＭ２３中の現在キーレジスタに格納する（ステップ１３１１）。
【００７８】
ステップ１３０８でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、現在キー或いは仮キーに対して、全音上のキーのＶのコードに相当するかを判断する（ステップ１４０１）。ステップ１４０１でＹｅｓと判断された場合には、ＣＰＵ２１は、もとの仮キーの全音上のキーを、ダイアトニックレジスタの単位レジスタ中、仮キーとして格納する（ステップ１４０２）。また、ＣＰＵ２１は、もとの仮キーの全音上のキーから短三度下のキーを、単位レジスタ中、キー候補として格納する（ステップ１４０３）。
【００７９】
ステップ１４０１でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈは、現在キー或いは仮キーに対して、短三度上のキーのＩのコードに相当するかを判断する（ステップ１４０４）。ステップ１４０４でＹｅｓと判断された場合には、ＣＰＵ２１は、現在キーの短三度上の音名を得て、当該音名のキーに転調したと判断する（ステップ１４０５）。ＣＰＵ２１は、ステップ１４０５で得られたキーを、ダイアトニックレジスタの単位レジスタ中、確定キーとして格納する（ステップ１４０６）。また、ＣＰＵ２１は、ステップ１４０５で得られたキーを、ＲＡＭ２３中の現在キーレジスタに格納する（ステップ１４０７）。
【００８０】
ステップ１４０４でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈが、現在キー或いは仮キーに対して、短三度上のキーのＶのコードに相当するかを判断する（ステップ１４０８）。ステップ１４０８でＹｅｓと判断された場合には、ＣＰＵ２１は、もとの仮キーの短三度上のキーを、ダイアトニックレジスタの単位レジスタ中、仮キーとして格納する（ステップ１４０９）。また、ＣＰＵ２１は、もとの仮キーの全音上のキーから長二度下のキーを、単位レジスタ中、キー候補として格納する（ステップ１４１０）。
【００８１】
次に、仮キー選択処理（ステップ９０２）について説明する。図１９および図２０は、本実施の形態にかかる仮キー選択処理の例を示すフローチャートである。図１９に示すように、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタにおいて、候補キーが２個以上であるかを判断する（ステップ１９０１）、ステップ１９０１でＹｅｓと判断された場合には、ＣＰＵ２１は、候補キーのうちの２つを、５度の関係になるように並べて、下の音名を仮キーとして、アベイラブルコードテーブルと比較する（ステップ１９０２）。
【００８２】
ステップ１９０２においては、５度の関係を有する２音がコード構成音となるようなコードがアベイラブルコードテーブルから特定される。このようなコードが見出された場合には、ステップ１９０３でＹｅｓと判断される。候補キーのうち、２つにより５度の関係があるような音名の組が得られない場合には、ステップ１９０３でＮｏと判断される。ステップ１９０３でＹｅｓと判断された場合には、ＣＰＵ２１は、現在コード名ＣｕｒＣｈとして、上記ステップ１９０２で見出されたコード名の第３音を抜いた（ｏｍｉｔ３）を格納する（ステップ１９０４）。
【００８３】
ステップ１９０３でＮｏと判断された場合、或いは、ステップ１９０１でＮｏと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３中に前回コード名ＰｒｅＣｈが格納されているかを判断する（ステップ１９０５）。ステップ１９０５でＹｅｓと判断された場合には、ＣＰＵ２１は、音長を考慮したコード確認処理（図８）のステップ８０４と同様に音長が上位の３音をコード構成音として、前回コード名ＰｒｅＣｈのコード構成音とを比較する（ステップ１９０６）。比較された２つのコードが不協和でない場合（ステップ１９０７でＮｏ）には、ＲＡＭ２３中の現在コード名ＣｕｒＣｈとして、前回コード名ＰｒｅＣｈを格納する（ステップ１９０８）。たとえば、２つのコードが不協和であることは、２つのコードの主音が、短二度、長二度、増四度（減五度）、短七度、長七度の関係にあることである。
【００８４】
ステップ１９０７でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３中の仮コード決定マップを参照して、現在メロディ音からコードを決定する（ステップ２００１）。図２１は、本実施の形態にかかる仮コード決定マップの例を示す図である。図２１に示すように、仮コード決定マップには、メロディ音ごとに、コード名が対応付けられている。ＣＰＵ２１は、得られたコードのコード構成音中、第３音（性格音）に該当する音が、ダイアトニックレジスタの単位レジスタ中の候補キー、または、前回コード名ＰｒｅＣｈのコード構成音の何れかと一致するかを判断する（ステップ２００２）。ステップ２００２でＮｏと判断された場合には、ＣＰＵ２１は、現在コード名において、コード名の第３音を抜いたもの（ｏｍｉｔ３）とするように情報を付加する（ステップ２００３）。
【００８５】
その後、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタ中、仮キーとして、候補キーのうち最も調号の少ないキーを格納する（ステップ２００４）。なお、最初の押鍵に基づく音に対しては、仮キー選択処理を経て、仮コード決定マップを参照してコードが決定されることになる。
【００８６】
キー判定処理が終了すると、ＣＰＵ２１は、コード名判定処理を実行する。図２２は、本実施の形態にかかるコード名判定処理の例を示すフローチャートである。図２２に示すように、ＣＰＵ２１は、ＲＡＭ２３中のキー確定フラグが「１」であるかを判断する（ステップ２２０１）。ステップ２２０１でＹｅｓと判断された場合には、ＣＰＵ２１は、キー判定処理において新たな現在コード名ＣｕｒＣｈが取得されているかを判断する（ステップ２２０２）。ステップ２２０１でＮｏ或いはステップ２２０２でＹｅｓと判断された場合には、処理を終了する。
【００８７】
ステップ２２０２でＮｏと判断された場合には、現在メロディ音ＣＭ、前回メロディ音ＰＭおよび前回コード名ＰｒｅＣｈに基づき、コード判定テーブルを参照して、コード名を取得する。なお、現在メロディ音ＣＭは、現在進行中の楽曲において、現在の拍の先頭にて押鍵された鍵名、前回メロディ音ＰＭは、一つ前の拍の先頭にて押鍵された鍵名であり、それぞれ、たとえば、鍵盤処理（図４）においてＲＡＭ２３に格納された情報に基づいて取得される。
【００８８】
図２３は、本実施の形態にかかるコード判定テーブルの例を示す図である。図２３に示すコード判定テーブルおいては、前回コード名の機能（トニック（ＴＯ）、サブドミナント（ＳＵ）或いはドミナント（ＤＯ）の何れか）と、および、前回メロディ音ＰＭおよび現在メロディ音ＣＭの組み合わせによって、コード名が取得されるようになっている。なお、図２３のコード判定テーブル２３００は、キー（Ｃ）の場合についてのものである。したがって、他のキーの場合には、当該キーの主音とＣとの音程をオフセットとして、実際の前回メロディ音ＰＭおよび現在メロディ音ＣＭからオフセットを考慮して、キーをＣとした場合の前回メロディ音ＰＭおよび現在メロディ音ＣＭを算出して用いれば良い。なお、図２３の例では示されていないが、前回メロディ音ＰＭおよび今回メロディ音ＣＭの組み合わせによっては、コード名が得られない場合もある。
【００８９】
ＣＰＵ２１は、コード判定テーブルを参照することによりコード名が取得されたかを判断する（ステップ２２０４）。ステップ２２０４でＹｅｓと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３中の現在コード名ＣｕｒＣｈとして、ステップ２２０３で取得されたコード名を格納する（ステップ２２０５）。また、ＣＰＵ２１は、ＲＡＭ２３において、現在メロディ音ＣＭを、前回メロディ音ＰＭとして格納する（ステップ２２０６）とともに、転調フラグをクリアする（ステップ２２０７）。
【００９０】
ステップ２２０４でＮｏと判断された場合には、ＣＰＵ２１は、ＲＡＭ２３中の現在コード名ＣｕｒＣｈとして前回コード名ＰｒｅＣｈを格納する（ステップ２２０８）。また、ＣＰＵ２１は、ＲＡＭ２３中の転調フラグをインクリメントする（ステップ２２０９）。転調フラグは、現在コード名が確定できなかった回数を示す。この回数が所定の閾値より大きくなったときに（図５のステップ５０４参照）、前述した転調処理が実行される（図５のステップ５０８参照）。
【００９１】
コード名判定処理（ステップ３０５）が終了すると、ＣＰＵ２１は、自動伴奏処理を実行する（ステップ３０６）。図２４は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。まず、ＣＰＵ２１は、電子楽器１０が自動伴奏モードの下で動作しているかを判断する（ステップ２４０１）。ステップ２４０１でＹｅｓと判断された場合には、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、メロディ音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２４０２）。
【００９２】
自動伴奏データには、３つの種類の楽音、すなわち、メロディ音（オブリガート音を含む）、コード音、リズム音のデータが含まれる。メロディ音のデータおよびコード音のデータは、発音すべき楽音ごとに、その音高、発音タイミングおよび発音時間を含む。また、リズム音のデータは、発音すべき楽音（リズム音）ごとに、その発音タイミングを含む。
【００９３】
ステップ２４０２でＹｅｓと判断された場合には、ＣＰＵ２１は、メロディ発音・消音処理を実行する（ステップ２４０３）。メロディ発音・消音処理においては、処理にかかるイベントがノートオンイベントであるかを判断する。ノートオンイベントであることは、現在時刻が、上記メロディ音のデータにおける所定の楽音の発音タイミングとほぼ一致することで判断できる。その一方、ノートオフイベントであることは、現在時刻が、当該楽音の発音タイミングに発音時間を加えた時刻とほぼ一致することで判断できる。
【００９４】
処理にかかるイベントがノートオフイベントである場合には、ＣＰＵ２１は、消音処理を実行する。その一方、処理にかかるイベントがノートオンイベントであれば、メロディ音のデータにしたがった発音処理を実行する。
【００９５】
次いで、ＣＰＵ２１は、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、コード音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２４０４）。ステップ２４０４においてＹｅｓと判断された場合には、ＣＰＵ２１は、コード発音・消音処理を実行する（ステップ２４０５）。コード音発音・消音処理においては、発音タイミングに達したコード音について発音処理を実行し、その一方、消音タイミングに達したコード音については消音処理を実行する。
【００９６】
その後ＣＰＵ２１は、現在時刻が、自動伴奏データ中、リズムのデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２４０６）。ステップ２４０６においてＹｅｓと判断された場合には、ＣＰＵ２１は、リズム音発音処理を実行する（ステップ２４０７）。リズム音発音処理においては、発音タイミングに達したリズム音についてノートオンイベントを生成する。
【００９７】
自動伴奏処理（図３のステップ３０６）が終了すると、ＣＰＵ２１は、音源発音処理を実行する（ステップ３０７）。音源発音処理において、ＣＰＵ２１は、生成されたノートオンイベントに基づいて、発音すべき楽音の音色および音高を示すデータを音源部２６に与え、或いは、消音すべき楽音の音色および音高を示すデータを音源部２６に与える。音源部２６は、音色、音高、音長等を示すデータにしたがって、ＲＯＭ２２の波形データを読み出して、所定の楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。また、ＣＰＵ２１は、ノートオフイベントに基づいて、音源２６にノートオフイベントが示す音高の消音を指示する。
【００９８】
音源発音処理（ステップ３０７）が終了すると、ＣＰＵ２１は、その他の処理（たとえば、表示部１５への画像表示、ＬＥＤ（図示せず）の点灯、消灯など：ステップ３０８）を実行して、ステップ３０２に戻る。
【００９９】
本実施の形態においては、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタ中、メロディ音履歴中に含まれる音名群と、ダイアトニックスケールテーブルとを比較して、メロディ音履歴に含まれる音名が、あるキーのダイアトニックスケールに全て含まれるようなキーが存在するかを判断することにより、キー候補を絞り込み、楽曲の調を判定し、単位レジスタ中に判定された調を格納する。したがって、単にメロディシーケンスのみによって、楽音の調を判定することが可能となる。
【０１００】
また、本実施の形態においては、キー候補の絞り込みの結果、複数のキー候補が存在する場合に、ＣＰＵ２１は、メロディ音履歴に対応する音名群中に、キー候補のダイアトニックスケール中のトライトーンおよびその間のスケールノートが含まれるかを判断することにより、キー候補をさらに絞り込む。単に、メロディ音が、あるキーのダイアトニックスケール上にあるかだけではなく、調に固有であるトライトーンを考慮することで、より正確に調を判定することが可能となる。
【０１０１】
さらに、本実施の形態においては、ＣＰＵ２１は、キー候補の絞込みの結果、複数のキー候補が存在する場合に、調号の最も少ない調を、楽曲の調と判定する。これにより、キー候補が複数のときに、より可能性の高い調を選択することが可能となる。
【０１０２】
また、本実施の形態においては、ＣＰＵ２１は、ダイアトニックレジスタの単位レジスタ中、メロディ音履歴中に含まれる音名群と、キーごとのダイアトニックスケールノートのうち、キー固有のトライトーンおよびその間のスケールノートを格納したキースケールノートテーブルとを比較して、メロディ音履歴に含まれる音名が、あるキーのトライトーンおよびその間のスケールノートと一致するかを判断することにより、キー候補を絞り込み、演奏操作子の操作による楽曲の調を判定し、レジスタ中に判定された調を格納する。したがって、本実施の形態よれば、調に固有であるトライトーンおよびその間のスケールノートを考慮することで、正確に調を判定することが可能となる。
【０１０３】
また、本実施の形態においては、ＣＰＵ２１は、キー候補を１つに絞り込めた場合に、当該１つのキー候補を、確定キーとして単位レジスタに格納し、それ以外の場合に、キー候補のうち所定のものを仮キーとして単位レジスタに格納するように構成されている。これにより、判定された調の確実性に応じて、調の情報を保存することができる。
【０１０４】
また、ＣＰＵ２１は、押鍵された鍵に対応付けられた音高（たとえば、現在の音高および先行する音高）と、先行するコード名である前回コード名とに基づき現在コード名を判定する。また、ＣＰＵ２１は、レジスタ中に格納された調に対して、所定の関係を有する場合に、当該所定の関係に基づき、新たな調を得る。したがって、演奏されている楽曲の途中で転調が生じた場合にも、転調後の調を適切に判定することができる。
【０１０５】
本実施の形態においては、ＣＰＵ２１は、現在コード名が、レジスタ中に格納された調に対して、ＩＩＩ７或いはＶ７以外の関係を有する７の和音である場合に、現在の調と、現在コード名の根音との差分値を算出し、かつ、現在の調に、上記差分値および５半音を加えることにより、新たな調を得る。これにより、ドミナントモーションによる転調を検出することが可能となる。
【０１０６】
また、本実施の形態においては、ＣＰＵ２１は、前回コード名が、レジスタ中に格納された調におけるピボットコードであり、かつ、現在コード名が、ピボットコードに後続する調のダイアトニックコードにおいて、ピボットコードの近親調に該当する場合に、当該近親調を、新たな調として得る。これにより、いわゆるピボット転調を検出することが可能となる。
【０１０７】
さらに、本実施の形態においては、ＣＰＵ２１は、現在コード名が、レジスタ中に格納された調に対して、半音上、全音上或いは短三度上の調のＩ或いはＩＩＩの和音である場合に、それぞれ、当該半音上、全音上或いは短三度上の調を、新たな調として得る。これにより、いわゆる盛り上がりによる転調を検出することが可能となる。
【０１０８】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、キーを判定する際に、長調或いはその平行調に相当する短調の何れかを決定しても良い。この場合、長調／短調の選択スイッチを設け、スイッチ処理において、ＣＰＵ２１が、選択スイッチの操作状態を判断し、ＲＡＭ２３中に、長調／短調の選択情報を格納すれば良い。キー判定処理において、ＣＰＵ１１は、仮キー或いは確定キーを得る際に、ＲＡＭ２３中の長調／短調の選択情報を参照して、得られたキーが長調或いは短調であるかを判定して、判定されたキー（長調或いは短調）を、ダイアトニックレジスタ等に格納すれば良い。
【符号の説明】
【０１０９】
１０        電子楽器
１１        鍵盤
１２、１３  スイッチ
１５        表示部
２１        ＣＰＵ
２２        ＲＯＭ
２３        ＲＡＭ
２４        サウンドシステム
２５        スイッチ群
２６        音源部
２７        オーディオ回路
２８        スピーカ
【図１】
0005293710.tif 000002
【図２】
0005293710.tif 000003
【図３】
0005293710.tif 000004
【図４】
0005293710.tif 000005
【図５】
0005293710.tif 000006
【図６】
0005293710.tif 000007
【図７】
0005293710.tif 000008
【図８】
0005293710.tif 000009
【図９】
0005293710.tif 000010
【図１０】
0005293710.tif 000011
【図１１】
0005293710.tif 000012
【図１２】
0005293710.tif 000013
【図１３】
0005293710.tif 000014
【図１４】
0005293710.tif 000015
【図１５】
0005293710.tif 000016
【図１６】
0005293710.tif 000017
【図１７】
0005293710.tif 000018
【図１８】
0005293710.tif 000019
【図１９】
0005293710.tif 000020
【図２０】
0005293710.tif 000021
【図２１】
0005293710.tif 000022
【図２２】
0005293710.tif 000023
【図２３】
0005293710.tif 000024
【図２４】
0005293710.tif 000025