(57)【要約】【課題】メロディ音の履歴に基づいて精度の良い適切なコード付けを迅速に行うことができるようにすること。【解決手段】複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段を備え、演奏操作子の操作による演奏情報に基づいて、前記楽曲データベース手段から対応するメロディ情報を有する楽曲データを検索する楽曲検索手段と、前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定手段と、前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択するコード選択手段と、前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏手段とを備えた。【選択図】図３
2014178396.tif 000002
【特許請求の範囲】
【請求項１】
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、
演奏操作子の操作に対応して順次楽音の発生を指示するための演奏情報を記憶する演奏記憶手段と、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索する楽曲検索手段と、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定手段と、
前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択するコード選択手段と、
前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏手段と、
を備えたことを特徴とする自動伴奏装置。
【請求項２】
前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能を比較し、このコードの機能の比較結果に基づいてコードを選択することを特徴とする請求項１に記載の自動伴奏装置。
【請求項３】
前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能が一致した場合は、前記コード判定手段によって判定されたコードを選択するとともに、当該コードの機能が一致しない場合には、前記楽曲データに記憶されているコードを選択することを特徴とする請求項２に記載の自動伴奏装置。
【請求項４】
前記コード選択手段は、前記楽曲検索手段によって前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲が検索されなかった場合に、前記コード判定手段によって判定されたコードを選択することを特徴とする、請求項１から３のいずれかに記載の自動伴奏装置。
【請求項５】
前記楽曲検索手段は、前記演奏操作子により順次発音の指示された楽音のうち、第１音目の楽音の音長と、夫々入力された楽音の音長との比率に基づき前記楽曲データベース手段から対応する楽曲を順位を付けて検索することを特徴とする請求項１から４のいずれかに記載の自動伴奏装置。
【請求項６】
前記コード判定手段は、記演奏操作子の演奏情報の調性を判定するキー判定手段を備え、
前記楽曲検索手段は、前記楽曲データベース手段に記憶された楽曲データを前記キー判定手段によって判定されたキーに基づき移調し、当該移調された楽曲データ及び前記演奏情報に基づいて、前記楽曲データベース手段から対応する楽曲を検索することを特徴とする請求項１から５のいずれかに記載の自動伴奏装置。
【請求項７】
前記キー判定手段によるキー判定が未確定の場合には、前記楽曲検索手段は、前記楽曲データベース手段に記憶された楽曲データに対応するメロディ情報に含まれる音高データに基づく楽曲検索と、当該音高データ間の相対的な音程間隔データに基づく楽曲検索とを組み合わせて楽曲を検索することを特徴とする請求項６に記載の自動伴奏装置。
【請求項８】
前記楽曲データベース手段に記憶された各楽曲データは、単一の調で記憶されていることを特徴とする請求項１から７のいずれかに記載の自動伴奏装置。
【請求項９】
前記楽曲データベース手段に記憶された各楽曲データが、原曲の調で記録されていることを特徴とする請求項１から７のいずれかに記載の自動伴奏装置。
【請求項１０】
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、演奏操作子の操作に対応して順次楽音の発生を指示する演奏情報を記憶する演奏記憶手段と、を有する自動伴奏装置に用いられる自動伴奏方法であって、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索し、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定し、
前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択し、
前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する、自動伴奏方法。
【請求項１１】
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、演奏操作子の操作に対応して順次楽音の発生を指示する演奏情報を記憶する演奏記憶手段と、を備えた自動伴奏装置として用いられるコンピュータに、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索する楽曲検索ステップと、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定ステップと、
前記検索された楽曲に対応して記憶されたコード及び前記判定されたコードのうち、いずれのコードを用いるかを選択するコード選択ステップと、
前記選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏ステップと、
を実行させる自動伴奏プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、和音選択装置、この和音選択装置を用いた自動伴奏装置および自動伴奏プログラムに関する。
【背景技術】
【０００２】
ピアノやオルガン、あるいは電子キーボードや電子ピアノといった、鍵盤を備えた楽器では、右手でメロディを演奏しつつ、これに合わせて左手で伴奏を演奏する奏法が一般的である。
【０００３】
しかしながら、このように右手と左手を同時に動かして演奏をするためには相応の練習が必要である。特に、メロディを奏するために右手を動かすことは比較的容易であっても、同時に左手でメロディとは異なる伴奏を演奏することが困難と感じる演奏者が、特に初心者では多い。このため、そのような初心者であっても、容易に演奏を楽しむことができるように、演奏者が右手でメロディを演奏するのに合わせて、左手の演奏に相当する伴奏を自動的に作成して演奏する電子楽器が実現されている。
【０００４】
例えば、特許文献１には、メロディ音の重みおよびその遷移に基づいて、適切にコード名を決定することができる電子楽器の技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１５８８５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の電子楽器では、メロディ音の拍の位置や拍の重み、また前拍の拍頭におけるメロディ音やコード名（和音名）等を用いてコード判定を行っていたものの、一般的な音楽のメロディ進行とコード付けは極めて多数の様々な場合があり、特に、音楽の分野では、メロディ進行に対するコード付けについて、人間の感覚によって判断される部分も多く、機械によるコード付けの精度をさらに向上させることが求められていた。
【０００７】
本発明は上記のような点に鑑みなされたもので、メロディ音の履歴に基づいて精度の良い適切なコード付けを迅速に行うことができるコード決定装置、電子楽器、コード決定方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の一態様の自動伴奏装置は、複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、演奏操作子の操作に対応して順次楽音の発生を指示するための演奏情報を記憶する演奏記憶手段と、前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索する楽曲検索手段と、前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定手段と、前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択するコード選択手段と、前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏手段とを備えたことを特徴とする。
【０００９】
また、本発明は、前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能を比較し、このコードの機能の比較結果に基づいてコードを選択することを特徴とする。
【００１０】
また、本発明は、前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能が一致した場合は、前記コード判定手段によって判定されたコードを選択するとともに、当該コードの機能が一致しない場合には、前記楽曲データに記憶されているコードを選択することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、メロディ音の履歴に基づいて、自動的なコード付けと、楽曲データベースを用いたコード付けとの双方を適切に使い分けてコード付けができるため、精度の良い適切なコード付けを迅速に行うことが可能となる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施の形態にかかる電子楽器の外観を示す図である。
【図２】図２は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる電子楽器において実行されるメインフローの例を示すフローチャートである。
【図４】図４は、本実施の形態にかかる鍵盤処理の例を示すフローチャートである。
【図５】図５は、本実施の形態にかかる曲候補検索処理の例を示すフローチャートである。
【図６】図６は、本実施の形態にかかるＦリストアップ処理の例を示すフローチャートである。
【図７】図７は、本実施の形態にかかるＫリストアップ処理の例を示すフローチャートである。
【図８】図８は、本実施の形態にかかるＮリストアップ処理の例を示すフローチャートである。
【図９】図９は、本実施の形態にかかるＤリストアップ処理の例を示すフローチャートである。
【図１０】図１０は、本実施の形態にかかるＮリストとＤリストから総合リストを作成する処理の例を示すフローチャートである。
【図１１】図１１は、本実施の形態にかかるコード選択処理の例を示すフローチャートである。
【図１２】図１２は、本実施の形態にかかる楽曲データベースの例を示す図である。
【図１３】図１３は、図１２の楽曲データベースに対応した楽譜を表す図である。
【図１４】図１４は、本実施の形態にかかる演奏入力メロディ履歴の記録データ例を示す図である。
【図１５】図１５は、本実施の形態にかかるＦリストの例を示す図である。
【図１６】図１６（Ａ）は、本実施の形態にかかる入力メロディ履歴の一例、図１６（Ｂ）は、図１６（Ａ）の入力メロディに対応したＫリストの例を示す図である。
【図１７】図１７（Ａ）は、本実施の形態にかかる入力メロディ履歴の一例、図１７（Ｂ）は、図１７（Ａ）の入力メロディに対応したＮリストの例を示す図である。
【図１８】図１８（Ａ）は、本実施の形態にかかる入力メロディ履歴の一例、図１８（Ｂ）は、図１８（Ａ）の入力メロディに対応したＮリストの例、図１８（Ｃ）は、図１８（Ａ）の入力メロディに対応したＤリストの例を示す図である。
【図１９】図１９は、本実施の形態にかかる総合リストの例を示す図である。
【図２０】図２０は、本実施の形態にかかるダイアトニックレジスタの例を示す図である。
【図２１】図２１は、本実施の形態にかかるダイアトニックスケールテーブルの例を示す図である。
【図２２】図２２は、本実施の形態にかかる仮コード決定マップの例を示す図である。
【図２３】図２３は、本実施の形態にかかるコードデータベースの例を示す図である。
【図２４】図２４は、本実施の形態にかかるコード判定テーブルの例を示す図である。
【図２５】図２５は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。
【図２６】図２６は、本発明の第２の実施形態にかかるコード選択処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本実施の形態にかかる電子楽器を適用した電子楽器の外観を示す図である。図１に示すように、本実施の形態にかかる電子楽器１０は、演奏操作子としての鍵盤１１を有する。また、鍵盤１１の上部には、音色の指定、自動伴奏の開始・終了、リズムパターンの指定などを行なうためのスイッチ（符号１２、１３参照）や、演奏される楽曲に関する種々の情報、たとえば、音色、リズムパターン、コード名などを表示する表示部１５を有する。本実施の形態にかかる電子楽器１０は、たとえば、６１個の鍵（Ｃ２〜Ｃ７）を有する。また、電子楽器１０は、自動伴奏をオンする自動伴奏モード、および、自動伴奏をオフにする通常モードの２つの演奏モードのうち、何れかの下での演奏が可能である。
【００１４】
図２は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。図２に示すように、本実施の形態にかかる電子楽器１０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、サウンドシステム２４、スイッチ群２５、鍵盤１１および表示部１５を備える。
【００１５】
ＣＰＵ２１は、電子楽器１０全体の制御、鍵盤１１の鍵の押鍵やスイッチ群２５を構成するスイッチ（たとえば、図１の符号１２、１３参照）の操作の検出、鍵やスイッチの操作にしたがったサウンドシステム２４の制御、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターンおよびコード名にしたがった自動伴奏の演奏など、種々の処理を実行する。
【００１６】
ＲＯＭ２２は、ＣＰＵ２１に実行させる種々の処理、たとえば、スイッチの操作や鍵盤の何れかの鍵の押鍵に応じて実行される処理、押鍵に応じた楽音の発音、押鍵された楽音の音高にしたがったコード名の決定、自動伴奏パターンおよびコード名にしたがった自動伴奏の演奏などのプログラムを記憶する。また、ＲＯＭ２２は、ピアノ、ギター、バスドラム、スネアドラム、シンバルなどの各種の楽音を生成するための波形データを格納した波形データエリア、および、種々の自動伴奏パターンを示すデータ（自動伴奏データ）を格納した自動伴奏パターンエリアを有する。
【００１７】
ＲＡＭ２３は、ＲＯＭ２２から読み出されたプログラムや、処理の過程で生じたデータを記憶する。さらにＲＡＭ２３は、鍵盤１１の鍵の押鍵・離鍵に伴いＣＰＵ２１によって生成される、メロディ履歴データを記憶する。なお、本実施の形態において、自動伴奏パターンは、メロディ音およびオブリガート音を含むメロディ自動伴奏パターン、コード名ごとの構成音を含むコード自動伴奏パターン、並びに、ドラム音を含むリズムパターンを有する。たとえば、メロディ自動伴奏パターンのデータのレコードは、楽音の音色、音高、発音タイミング（発音時刻）、音長などを含む。コード自動伴奏パターンのデータのレコードは、上記情報に加えて、コード構成音を示すデータを含む。また、リズムパターンのデータは、楽音の音色、発音タイミングを含む。
【００１８】
サウンドシステム２４は、音源部２６、オーディオ回路２７およびスピーカ２８を有する。音源部２６は、たとえば、押鍵された鍵についての情報或いは自動伴奏パターンについての情報をＣＰＵ２１から受信すると、ＲＯＭ２２の波形データエリアから所定の波形データを読み出して、所定の音高の楽音データを生成して出力する。また、音源部２６は、波形データ、特に、スネアドラム、バスドラム、シンバルなど打楽器の音色の波形データを、そのまま楽音データとして出力することもできる。オーディオ回路２７は、楽音データをＤ／Ａ変換して増幅する。これによりスピーカ２８から音響信号が出力される。
【００１９】
さらに、本発明の実施の形態にかかる電子楽器１０は、楽曲データベース３０を備えている。この楽曲データベース３０は、後述するように、入力されたメロディの履歴とデータベースの各楽曲との比較を行い、適合する曲のコード（和音）を参照するための辞書として用いられるデータベースである。図１２は、この楽曲データベース３０の実際のデータ構造の一例を示す図である。
【００２０】
図１２は、種々の楽曲のデータベースのうち「Ｃ−Ｄ−Ｅ」すなわち、「ド−レ−ミ」で始まる曲のうちのいくつかの曲の冒頭部分を例示したものである。また、図１２に例示した各楽曲のデータに対応する実際の曲の楽譜を図１３に示してある。なお、実際にＣＰＵ２１が読み込んで各種処理に使用する楽曲データベースとしては、例えばＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイル形式などで、必要に応じたタグやヘッダなどを付して構成することにより、ＣＰＵ２１に認識可能なものとなっているものとする。
【００２１】
図１２に示すとおり、楽曲データベースではまず、各楽曲ごとに、曲番号と曲のタイトルが記録されている（図１２の曲番号の欄、タイトルの欄）。また、各楽曲の「Ｋｅｙ／Ｂｅａｔ」欄の一番上の行に示すように、その曲が何調で記録されているか（Ｋｅｙ）、および、何拍子であるか（Ｂｅａｔ）が記録されている。例えば、曲番号１の「こぎつね」では「Ｃ／４」と記録されており、この曲がハ長調−４拍子で記録されていることを表している。同様に、曲番号６の「みなと」では「Ｃ／３」と記録されており、この曲がハ長調−３拍子で記録されていることを表している。
【００２２】
なお、本図１２においては、すべての楽曲がハ長調で記録されている場合の例を示しているが、ハ長調以外で統一されていても、また、曲ごとに別々の調でデータベースを持つように構成しても勿論差し支えない。すべての曲を同じ調でデータベース化してある場合には、後述するコード付けアルゴリズムや調判定アルゴリズムによって調性の判別ができた場合に、その判別された、ユーザが弾いているメロディの推定調性と、データベースで用いられている調性（図１２ではハ調）との音程（半音数）等に基づいて、楽曲データベースに登録されているすべての楽曲を一様に当該判別された調性に移調すれば処理を行うことができ、処理を簡潔にすることができる。一方、曲ごとに別々の調、例えばそれぞれの曲の原曲の調でデータベース登録をしておくことも可能である。
【００２３】
さらに、図１２の各楽曲ごとのＫｅｙ／Ｂｅａｔ欄の右（以下、「Ｎｏｔｅ欄」という）には、各楽曲のメロディの音高、前の音との音程、開始音とのＳＴ（Ｓｔｅｐ  Ｔｉｍｅ）比率、そのメロディに対するコード（和音）が記録されている。
【００２４】
再度、曲番号１の「こぎつね」を例にとって説明すると、この曲のメロディは「ドレミファソソソ」となっているので、図１２の曲番号１のＮｏｔｅ欄の最上行には、メロディの音高として順に「ＣＤＥＦＧＧＧ」のデータが記録されている。
【００２５】
また、図１２の各楽曲のＮｏｔｅ欄の２行目には、開始音／直前音との音程が記録されている。すなわち、メロディの最初の音については、開始音（図１２の例では全てＣ）の音高がそのまま記録され、メロディの２音目以降は、直前の音との音程（半音数）が記録されている。例えば、曲番号１の「こぎつね」の場合では、メロディの第１音については「Ｃ」がそのまま記録され、つづくメロディの第２音目の「Ｄ」については、直前のメロディ音（第１音）である「Ｃ」から半音２個上の音であるので、「２」と記録されている。同様に、メロディ音第３音目の「Ｅ」については、第２音「Ｄ」との音程（半音数）「２」が記録され、また、メロディ音第４音目の「Ｆ」については、第３音「Ｅ」との音程（半音数）「１」が記録されている。
【００２６】
なお、曲番号２以降の一部で表わされているように、メロディ音が直前の音より下降した場合には、この直前音との音程はマイナスの値で記録されている（例えば、曲番号２の「すずめのうた」の４音目や、曲番号７の「はと」の５音目、６音目など）。
【００２７】
さらに、図１２の各楽曲のＮｏｔｅ欄の３行目には、「開始音とのＳＴ比率」が記録されている。ここでＳＴとはＳｔｅｐ  Ｔｉｍｅの略であり、ある音の発音タイミングから次の音の発音タイミングまでの長さを表す数値である。従って、この楽曲データベースの「開始音とのＳＴ比率」には、メロディの開始音（第１音）のＳＴと、各音符のＳＴとの比率を表すデータが記録されている。
【００２８】
ここで、図１２では、開始音のＳＴと同じ長さの音符について、「開始音とのＳＴ比率」が１となるように記録されている。従って、例えば、曲番号１の「こぎつね」では、第２音から第６音までの全ての音符について、開始音と同じ長さの８分音符（休符なし）であるので、これらの音符について、「開始音とのＳＴ比率」は１と記録されている。また、曲番号１の「こぎつね」の第７音（４分音符のＧ）については、開始音（８分音符）の倍の長さであるので、「開始音とのＳＴ比率」は２と記録されている。さらに、曲番号８の「とんび」では、開始音が付点４分音符であるのに対して、第２音から第６音は、その３分の１の長さの８分音符であるので、これらの音符に対して「開始音とのＳＴ比率」が「０．３３」と記録されている。
【００２９】
さらに図１２の各楽曲のＮｏｔｅ欄の４行目には、コード欄があって、コードネーム（和音記号）が記録されている。このコード欄で、例えば「Ｃ」と表されているものはいわゆる「Ｃ」のコードである「ドミソ」の和音を表している。また「Ｇ７」と表されているものは、いわゆる「Ｇ７」なるセブンスコードである「ソシレファ」の和音を表している。また、コード欄が「→」となっているものは、前の和音と同じ和音の意味であり、前の和音をそのまま継続して変更せずに維持するということを意味している。このコード名と実際の音との対応は、例えば、ＲＯＭ内等に記憶されている、図示しないコード名対応テーブルを参照することにより対応づけられている。
【００３０】
このコード欄は、後述するコード選択処理で、伴奏としてメロディに付ける和音を決定する際に参照されるものである。あるメロディに付けることが可能な和音は必ずしも一通りではなく、アレンジや演奏者の個性・感性等によっても異なるものであるが、ここでは、自動伴奏における機械による自動コード判別（コード付け）の補完を行うという観点から、「少なくとも、この和音を付けておけば、間違いとはいえない」といった和音のテーブルが用意されていることが望ましい。
【００３１】
なお、この楽曲のデータベースのデータ形式については、必ずしもここに記載された形式に限られず、例えば、ＭＩＤＩ形式のデータに基づいて、メロディの各音符の長さから開始音とのＳＴ比率を求め、またメロディ音の前後の音符の音高を比較して、直前音との音程を、計算処理によって求めることとしてもよい。さらに、コード部分は、コードデータを持っていてもよいし、メロディと別トラックにコードのデータをコード記号若しくはある和音を表す複数の音符が記録されているような形のデータでも実行可能である。
【００３２】
本実施の形態にかかる電子楽器１０は、通常モードの下においては、鍵盤１１の鍵の押鍵に基づいて楽音を発生する。その一方、電子楽器１０は、例えば図１に示された各種スイッチ１２、１３等のうちの一つである自動伴奏スイッチが操作されることにより、自動伴奏モードとなる。自動伴奏モードの下では、鍵の押鍵により、その鍵の音高の楽音が発生する。また、押鍵された鍵の情報に基づいてコード名が決定され、そのコード名のコード構成音を含む自動伴奏パターンにしたがった楽音が発生する。なお、自動伴奏パターンは、ピアノやギター、ベースなど音高の変化を伴うメロディ自動伴奏パターン、コード自動伴奏パターンと、バスドラム、スネアドラム、シンバルなど音高の変化を伴わないリズムパターンとを含むことができる。以下、電子楽器１０が、自動伴奏モードの下で動作する場合について説明する。
【００３３】
以下、本実施の形態にかかる電子楽器１０において実行される処理について詳細に説明する。図３は、本実施の形態にかかる電子楽器において実行されるメインフローの例を示すフローチャートである。なお、図示しないが、メインフローの実行中に、所定の時間間隔で、割込カウンタのカウンタ値をインクリメントするタイマインクリメント処理も実行される。
【００３４】
図３に示すように、電子楽器１０のＣＰＵ２１は、電子楽器１０の電源が投入されると、ＲＡＭ２３中のデータや、表示部１５の画像のクリアクリアを含むイニシャル処理（初期化処理）を実行する（ステップＳ３０１）。イニシャル処理が終了すると、ＣＰＵ２１は、スイッチ群２５を構成するスイッチのそれぞれの操作を検出し、検出された操作にしたがった処理を実行するスイッチ処理を実行する（ステップＳ３０２）。
【００３５】
たとえば、スイッチ処理（ステップＳ３０２）においては、音色指定スイッチや、自動伴奏パターンの種別の指定スイッチ、自動伴奏パターンのオン・オフの指定スイッチなど、種々のスイッチの操作が検出される。自動伴奏パターンがオンとなったときには、ＣＰＵ２１は、演奏モードを、自動伴奏モードに切り換える。演奏モードを示すデータは、ＲＡＭ２３の所定の領域に指定される。音色や自動伴奏パターンの種別を示すデータも、同様に、ＲＡＭ２３の所定の領域に格納される。
【００３６】
次いで、ＣＰＵ２１は、鍵盤処理を実行する（ステップＳ３０３）。図４は、本実施の形態にかかる鍵盤処理の例をより詳細に示すフローチャートである。鍵盤処理において、まずＣＰＵ２１は、鍵盤１１の鍵を走査する（ステップＳ４０１）。鍵の走査結果であるイベント（鍵オン或いはオフ）は、そのイベントが生じた時刻の情報とともに、ＲＡＭ２３に一時的に記憶される。ＣＰＵ２１は、ＲＡＭ２３に記憶された鍵の走査結果を参照して、ある鍵についてイベントが有るか否かを判断する（ステップＳ４０２）。ステップＳ４０２でＹｅｓと判断された場合には、ＣＰＵ１１は、イベントが鍵オンであるか否かを判断する（ステップＳ４０３）。
【００３７】
ステップＳ４０３でＹｅｓ、すなわちイベントが鍵オンであると判断された場合には、ＣＰＵ２１は、当該鍵オンがあった鍵について発音処理を実行する（ステップＳ４０４）。発音処理においては、ＣＰＵ２１は、音色指定スイッチで指定されてＲＡＭ２３に記憶される等していたメロディ鍵用の音色データ、および、鍵の音高を示すデータを読み出してＲＡＭ２３に一時的に記憶する。これらの音色や音高を示すデータは、後述する音源発音処理（図３のステップＳ３０６）において、音源部２６に与えられ、音源部２６は、この音色および音高を示すデータにしたがって、ＲＯＭ２２の波形データを読み出して、所定の音高の楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。
【００３８】
その後、ＣＰＵ２１は、鍵オンがあった鍵についての音高情報（たとえば鍵番号）および押鍵タイミング（たとえば押鍵時刻）をＲＡＭ２３に格納する（ステップＳ４０５）。押鍵タイミングは、割り込みカウンタのカウンタ値に基づいて算出することができる。
【００３９】
ステップＳ４０３でＮｏと判断された場合には、イベントが鍵オフであったことになる。したがって、ＣＰＵ２１は、鍵オフになった鍵についての消音処理を実行する（ステップＳ４０６）。消音処理においては、ＣＰＵ２１は、消音すべき楽音の音高を示すデータを生成し、ＲＡＭ２３に一時的に記憶する。この場合にも、後述する音源発音処理（ステップＳ３０６）において、消音すべき楽音の音色および音高を示すデータが、音源部２６に与えられる。音源部２６は、与えられたデータに基づいて、所定の楽音を消音する。その後、ＣＰＵ２１は、鍵オフがあった鍵について、押鍵されていた時間（押鍵時間）をＲＡＭ２３に格納する（ステップＳ４０７）。また、このメロディ履歴を格納するにあたり、最初に入力されたメロディ音の音長（ＳＴ：Ｓｔｅｐ  Ｔｉｍｅ）と、今回入力されたメロディ音の音長との比率（開始音とのＳＴ比率）を算出して、メロディ履歴情報に付加して記憶する。
【００４０】
ＣＰＵ２１は、全ての鍵イベントについて処理が終了したかを判断する（ステップＳ４０８）。ステップＳ４０８でＮｏと判断された場合には、ステップＳ４０２に戻る。全ての鍵イベントについて処理が終了したら（ステップＳ４０８：Ｙｅｓ）、図４の鍵盤処理を終了する。
【００４１】
鍵盤処理（図３のステップ３０３）が終了すると、ＣＰＵ２１は、曲候補検索処理を実行する（ステップＳ３０４）。図５は、本実施の形態にかかる曲候補検索処理の例をより詳細に示すフローチャートである。
【００４２】
曲候補検索処理において、まずＣＰＵ２１は、先に図４を用いて説明した鍵盤処理で検出された押鍵・離鍵処理によりメロディの入力があったか否かを判断する（ステップＳ５０１）。メロディ入力がなかった場合には（ステップＳ５０１：Ｎｏ）、図５の曲候補検索処理を終了する。
【００４３】
メロディ入力があった場合には（ステップＳ５０１：Ｙｅｓ）、ＲＡＭ２３の所定のメロディ履歴保存エリアに、入力されたメロディをメロディ履歴として、既に記録されているメロディ履歴に追加して記録する（ステップＳ５０２）。ＲＡＭ２３に記録するメロディ履歴のデータ構造の一例を図１４に示す。
【００４４】
図１４の例では、上述した楽曲のデータベース（図１２）のデータ構造に合わせて、メロディの入力に対して、入力音高、直前音（開始音）との音程、さらに、開始音とのＳＴ比率を算出して格納する。この各データの具体的な意義および算出方法については、図１２において説明したものと同様である。勿論図１２の説明で述べたのと同様、例えば図１２のデータ構造を別のものとするのに合わせて、他のデータ構造で記憶することも可能である。
【００４５】
なお、このステップＳ５０２でのメロディ履歴の記録に際して、例えば、軽微なミスタッチ等を除去するために、入力音長の極めて短い音については、メロディ履歴の記録音から除外することも可能である。例えば、入力されたメロディのうち、押鍵時間（デュレーション）が所定のしきい値以下の音については、メロディ履歴の記録を行わず、また、ステップＳ５０３以下の処理を行わずに、曲候補検索処理からリターンするといった処理を行っても良い。
【００４６】
ステップＳ５０２でのメロディ履歴の記録が終わると、ＣＰＵ２１は入力されたメロディ音が最初のメロディ音であるかどうかを判定する（ステップＳ５０３）。入力されたメロディ音が最初のメロディ音だった場合は（ステップＳ５０３：Ｙｅｓ）、Ｆリストアップの処理を行う（ステップＳ５０４）。このＦリストアップの処理は図６に詳細が示してあるので、図６を参照して説明する。
【００４７】
図６でリストアップするＦリストとは、上述の楽曲データベース（図１２）から、入力されたメロディ音のうち第１音めの音が一致するものを検索して、リストアップしたものである。
【００４８】
第１音めのみで楽曲と比較するため、必ずしも一つの楽曲に絞り込めるわけではなく、またユーザが移調して弾いている場合等も考慮すれば、必ずしも正確な絞り込みが行えるとは限らないが、例えば、ユーザがメロディを弾く場合に原曲キーで弾くことが多いと仮定すれば、原曲キーで記録された楽曲データベースを、入力メロディ音の第１音によって検索することで、ある程度の楽曲の絞り込みは可能となる。
【００４９】
図６では、ＣＰＵ２１はまず、変数ＦＮに開始音、すなわち入力されたメロディの第１音めの情報を取得する（ステップＳ６０１）。次にＣＰＵ２１は、メロディ開始音ＦＮと、楽曲データベースの開始音（各楽曲のメロディの開始音）として登録されている音が一致する楽曲を検索する（ステップＳ６０２）。
【００５０】
そして、ＣＰＵ２１は、ステップＳ６０２で検索された各楽曲をＦリストとしてリストアップする（ステップＳ６０３）。この際、該当する楽曲が複数あった場合は、それらを全てリストアップすることとしてもよいし、ランダムに選択した所定数の楽曲をリストアップすることとしてもよい。また、該当する楽曲が無かった場合は、該当曲無しとのフラグ等を返すようにすることとしても良い。
【００５１】
このようにして作成される、Ｆリストの例を図１５に示す。ここでは、図１４に示すメロディ入力の第１音「Ｃ」が入力されたときに、図１２および図１３に示す楽曲データベースを検索して得られたＦリストの例を示している。この場合、メロディ入力の第１音「Ｃ」は、楽曲データベースの曲番号１から９の全楽曲と一致するので、曲番号１から９の全楽曲がＦリストにリストアップされている。
【００５２】
なお、楽曲につけられた順位は、あくまで一例として、楽曲データベースを検索して該当すると判断された楽曲を順にリストに格納した場合を示している。ここでは、楽曲データベースの１から順にリストに格納され、そのまま順位が付けられた場合を示している。もっとも、これ以外にも、これらの複数の楽曲について、全て同じ順位（１位）として記録する事も可能である。
【００５３】
このようにして図５のステップＳ５０４を介して、図６に示した処理によってＦリストが作成されると、ＣＰＵ２１は、図５のフローチャートに処理を戻し、ステップＳ５１１でＦリストを総合リストとして（ステップＳ５１１）、曲候補検索処理を終了する。
【００５４】
一方、ステップＳ５０３に戻って、入力されたメロディ音が最初の音でなかった場合には（ステップＳ５０３：Ｎｏ）、入力されているメロディに対するＫｅｙ（調性）が確定されているか否かを判定する（ステップＳ５０５）。
【００５５】
このＫｅｙ（調性）が確定しているか否かは、後述する図３のステップＳ３０５におけるキー（調性）判別処理において、「確定キー」としてキーが確定されているか否かによって判断することが可能である。このキー（調性）判別処理の詳細については後述する。
【００５６】
ステップＳ５０５において、Ｋｅｙ（調性）が確定していると判定された場合には（ステップＳ５０５：Ｙｅｓ）、ＣＰＵ２１は、ステップＳ５０６へ処理を進め、Ｋリストのリストアップを行う。このＫリストアップの処理は図７に詳細が示してあるので、図７を参照して説明する。
【００５７】
図７でリストアップするＫリストとは、入力されているメロディのＫｅｙ（調性）が確定しているとの判定結果に基づき、上述の楽曲データベース（図１２）に記録されている各楽曲を、上記確定していると判定されたＫｅｙ（調性）に移調させてから、入力メロディ履歴との比較を行ってリストアップを行うものである。
【００５８】
このような処理を行うことで、ユーザがメロディを任意の調に移調して弾いているような場合でも、楽曲データベースに登録されている各楽曲のキー（調性）にかかわらず、迅速に楽曲を検索・特定して正しいコード付けが行えるようになる。
【００５９】
図７では、ＣＰＵ２１はまず、変数Ｋｅｙに、確定したと判定された入力メロディの調の情報を取得する（ステップＳ７０１）。次にＣＰＵ２１は、上述の楽曲データベース（図１２）に登録されている各楽曲のキー（調性）と、変数Ｋｅｙに取得したメロディの確定調とに基づいて、楽曲と入力メロディの比較を行う（ステップＳ７０２）。
【００６０】
この処理をさらに具体的に説明する。例えば、変数Ｋｅｙに取得された入力メロディの確定調がＦ（ヘ長調）であった場合を考える。今、仮に曲番号４の「アーユースリーピング」と比較を行うとすると、この曲の登録されているＫｅｙは「Ｃ」すなわちハ長調であるので、Ｋｅｙ「Ｆ」とＫｅｙ「Ｃ」の間の半音数を算出する。これは周知の音楽理論に基づいて「半音数＝５」と算出できるので、曲番号４「アーユースリーピング」の登録されているメロディ（図１２の曲番号４のＮｏｔｅ欄最上行）の各音に、半音数＋５の操作を行って、Ｆキーに移調を行う。上記の例の場合は、元のメロディ「ＣＤＥＣＣＤＥ」であったものが、半音数＋５の移調操作によって「ＦＧＡＦＦＧＡ」となる。
【００６１】
そして、移調された楽曲データベースのメロディ音の各音と、入力されているメロディ履歴の各音とが比較される。比較された結果、所定の条件を満たす楽曲がステップＳ７０２における検索結果としてピックアップされる。
【００６２】
ここで、ピックアップされる条件としては、種々のものが考えられる。例えば、最初の音から最新の音までの全ての音高が、入力されたメロディ履歴と合っている楽曲データベースの楽曲をピックアップすることが可能である。あるいは、入力されたメロディ履歴の過去の音から現在の音まで、連続して合っている音数が多い楽曲から順に、所定数の楽曲をピックアップすることが可能である。さらに、最初の音から現在の音までで、音を比較して、合っている音数（確率）の高いものから順に所定数の楽曲をピックアップするなどの方法も考えられる。
【００６３】
続いてＣＰＵ２１は、ステップＳ７０２での検索の結果、ピックアップされた曲があったか否かを判断する（ステップＳ７０３）。そして、ピックアップされた曲がなかった場合は、このＫリストのリストアップ処理を終了する（ステップＳ７０３：Ｎｏ）。
【００６４】
一方、ピックアップされた曲が存在していた場合は（ステップＳ７０３：Ｙｅｓ）、入力されたメロディ履歴の各音について、メロディ開始音（最初の音）とのＳＴ比率を算出して、ピックアップされた各曲について、楽曲データベース上に記録されている「開始音とのＳＴ比率」のデータと比較を行い、「正解率」を算出する（ステップＳ７０４）。
【００６５】
ステップＳ７０４における「正解率の算出」についても、種々の方法が可能である。
【００６６】
例えば、入力されたメロディ履歴の各音と、メロディ開始音とのＳＴ比率を求め、この入力メロディのＳＴ比率と、楽曲データベース上で登録されているＳＴ比率との差に基づいて各音の「正解率」を決定して、これらを加え合わせる（平均する）方法などが考えられる。これはすなわち、例えば曲番号４「アーユースリーピング」の２音目の「Ｄ」について、楽曲データベース上は開始音と等しい長さとしてＳＴ比率＝「１」が記録されているが、これに反して、実際に演奏されたメロディでは、第２音めの音の長さが、メロディ開始音に対して、９０％だったり、１１０％だったりした場合、この第２音めの音に対する正解率を「９０点」とする、といった具合である。
【００６７】
上述のようにステップＳ７０４では、入力されたメロディ履歴に対して、各楽曲が、どの程度近いか（似ているか）に相当する指標である、「各楽曲の正解率」が算出できる。そして、この「各楽曲の正解率」を参照して、正解率の高いものから順に所定数の楽曲をＫリストとしてリストアップし（ステップＳ７０５）、このＫリストアップの処理を終了する。
【００６８】
このようにして作成される、Ｋリストの例を図１６に示す。
【００６９】
ここでは、図１６（Ａ）に示すようなメロディが入力された場合に、図１２および図１３に示す楽曲データベースを検索して得られたＫリストの例を図１６（Ｂ）に示している。
【００７０】
図１６（Ａ）に示すように、メロディ入力は順に「ＦＧＡＢ♭」の４音が入力されている。また、この入力メロディに基づき、確定キーとしてＦ（ヘ長調）が得られているものとする。ここで、図１６（Ａ）に示すメロディ入力は、演奏者が鍵盤１１を弾いて入力したメロディと仮定すると、人間の演奏はある程度揺らぎや不正確さを含む場合がある。この点を考慮した例として、図１６（Ａ）の例では、第２音めの「Ｇ」がやや短めに押鍵されて、開始音とのＳＴ比率が１よりやや小さめの０．９となった場合を示している。また第３音めの「Ａ」の音は、やや長めに押鍵されて、開始音とのＳＴ比率が１よりやや大きめの１．１となっている場合を示している。
【００７１】
このような入力メロディに対して、図７のＫリストアップ処理を行うと、まず、ステップＳ７０１で変数Ｋｅｙに確定した調（キー）、すなわち「Ｆ」が記録され、次にステップＳ７０２で、図１２の楽曲データベースの各曲について、確定キーである「Ｆ」に移調させた上で、音高連結が比較される。すなわち、各楽曲データベースの曲のうち、ヘ長調に移調して「ＦＧＡＢ♭」との音高を持つもの、すなわち、ハ長調では第１音から第４音まで、「ＣＤＥＦ」という音高連結を持つ楽曲が検索される。従って、この場合、曲番号１の「こぎつね」と、曲番号３の「かえるのうた」が、音高連結の合う該当曲として抽出される。
【００７２】
該当曲があったため、ステップＳ７０３はＹｅｓとなり、ステップＳ７０４に進み、各該当曲ごとに、ＳＴ比率の正解率：Ｐを計算する。ここでは、楽曲データベースの該当曲のｉ番目の音符のＳＴ値：ＳＴｄｂ（ｉ）、と、入力メロディのｉ番目の音符のＳＴ値：ＳＴｉｎ（ｉ）との値を用いて、以下の式により求めた例を示している。
【００７３】
2014178396.tif 000003
【００７４】
（１）式に示すように、ここでは、各音のＳＴ値について、データベース上の値と入力値との差分の絶対値を、基準とするデータベース上の当該音のＳＴ値で除算して比率値とし、これを１００分率値として、ここまで入力された音のうち、第２音めから最新の音までの値を平均し、１００から減じたものを「正解率」として用いている。
【００７５】
すなわち、図１６（Ａ）の入力メロディを曲番号１の「こぎつね」と比較した場合、第２音めについて、ＳＴ値の差分値は、０．１であるので、データベース中の当該音のＳＴ値（＝１）で除算して、０．１となり、１００分率化して１０となる。同様に、第３音めについても１０、第４音めについては０となり、これらを加えると、２０点となる。
【００７６】
よってこれらの平均値は、（１０＋１０＋０）÷３＝約６．７点となり、これを１００点から減じて、正解率＝９３．３点と求められる。
【００７７】
なお、（１）式で、ｉ＝２からループ開始しており、第１音めのＳＴ値の比率を計算に入れていないのは、ＳＴ比率を第１音めを基準として判定しているため、第１音めのＳＴ比率は常に１００％となるため除外しているものである。
【００７８】
このようにして、音高連結が一致した各曲の正解率が求められたら、ステップＳ７０５で、その点数の高い順にＫリストをリストアップする。図１６の例では、曲番号１の「こぎつね」と曲番号３の「かえるのうた」で、正解率の点数に差が無いため、便宜上、順位を付けて記録した例を示している。このような同点の曲同士の順位付けについては、Ｆリストにて説明したのと同様の方法で順位を決定することが可能である。
【００７９】
このようにして図５のステップＳ５０６を介して、図７に示した処理によってＫリストが作成されると、ＣＰＵ２１は、図５のフローチャートに処理を戻し、ステップＳ５１０でＫリストを総合リストとして（ステップＳ５１０）、曲候補検索処理を終了する。
【００８０】
他方、ステップＳ５０５で、Ｋｅｙ（調性）が確定していないと判定された場合には（ステップＳ５０５：Ｎｏ）、ＣＰＵ２１は、ステップＳ５０７へ処理を進め、Ｎリストのリストアップを行う。このＮリストアップの処理は図８に詳細が示してあるので、図８を参照して説明する。
【００８１】
図８でリストアップするＮリストとは、入力メロディ履歴の音高と、上述の楽曲データベース（図１２）に記録されている各楽曲のメロディ音高データ（Ｎｏｔｅ欄最上行データ）との比較を行って、リストアップを行うものである。
【００８２】
図８では、ＣＰＵ２１はまず、入力されたメロディ履歴のデータ(図１４）から、入力音高データを音高連結データとして取得する（ステップＳ８０１）。図１４のような入力の例を考え、仮にいま、メロディの第３音まで入力がなされた場合を仮定すると、このステップＳ８０１では、入力メロディの音高連結として、「ＣＤＥ」というデータが取得される。
【００８３】
続いてＣＰＵ２１は、この取得された入力メロディの音高連結データと、楽曲データベース（図１２）の各楽曲のメロディ音高データ（Ｎｏｔｅ欄最上行データ）とを比較して、音高が一致する楽曲を検索する（ステップＳ８０２）。
【００８４】
例えば、上述のように入力メロディが「ＣＤＥ」である場合に、図１２の例の楽曲データベースを検索すると、図１２に示されている曲番号１から曲番号９の９曲は、すべて、メロディの音高連結が開始音から順に「ＣＤＥ」であるので、この場合はステップＳ８０２で、図１２の９曲全てが検索結果としてピックアップされることとなる。ここでも、最初の音から最新の音まで全ての音高が一致している楽曲をピックアップすることとする以外にも、ステップＳ７０２における楽曲ピックアップ方法と同様に、種々の方法での検索が可能である。
【００８５】
続いてＣＰＵ２１は、ステップＳ８０２での検索の結果、ピックアップされた曲があったか否かを判断する（ステップＳ８０３）。そして、ピックアップされた曲がなかった場合は、このＮリストのリストアップ処理を終了する（ステップＳ８０３：Ｎｏ）。
【００８６】
一方、ピックアップされた曲が存在していた場合は（ステップＳ８０３：Ｙｅｓ）、入力されたメロディ履歴の各音について、メロディ開始音（最初の音）とのＳＴ比率を算出して、ピックアップされた各曲について、楽曲データベース上に記録されている「開始音とのＳＴ比率」のデータと比較を行い、「正解率」を算出する（ステップＳ８０４）。この正解率の算出の具体的な方法については、ステップＳ７０４で説明したのと同様である。
【００８７】
そして、ステップＳ８０４において算出された、「各楽曲の正解率」を参照して、正解率の高いものから順に所定数の楽曲をＮリストとしてリストアップし（ステップＳ８０５）、このＮリストアップの処理を終了する。
【００８８】
このようにして作成される、Ｎリストの例を図１７に示す。
【００８９】
ここでは、図１７（Ａ）に示すようなメロディが入力された場合に、図１２および図１３に示す楽曲データベースを検索して得られたＮリストの例を図１７（Ｂ）に示している。
【００９０】
図１７（Ａ）に示すように、メロディ入力は順に「ＣＤＥ」の３音が入力されている。また、図１７（Ａ）に示すメロディ入力の例では、ＣＤＥの全てが、同じ長さ（ＳＴ値）で、第１音とのＳＴ比率が１である場合を仮定している。
【００９１】
このような入力メロディに対して、図８のＮリストアップ処理を行うと、まず、ステップＳ８０１で図１７（Ａ）のメロディ履歴データから音高連結である「ＣＤＥ」が抽出される。次にステップＳ８０２で、図１２の楽曲データベースの各曲について、音高連結が比較される。ここで、本図のＮリストのリストアップでは、Ｋリストのリストアップ時と異なり、キーが定まっていないため、楽曲データベースの音高をそのまま用いて比較を行う。従って、この場合、曲番号１から曲番号９までの全ての曲が、開始から第３音まで「ＣＤＥ」の音高を持つため、ステップＳ８０２では９曲全て候補として抽出されることとなる。
【００９２】
該当曲があったため、ステップＳ８０３はＹｅｓとなり、ステップＳ８０４に進み、各該当曲ごとに、ＳＴ比率の正解率：Ｐを計算する。この正解率の計算は、ここではＫリストの場合のステップＳ７０４と同様、式（１）を用いて計算している。
【００９３】
一例として、曲番号８の「とんび」と比較を行って正解率を求める場合を説明する。この場合、第２音めの「Ｄ」については、ＳＴ値の差分値は、０．６７となるので、データベース中の当該音のＳＴ値（＝０．３３）で除算すると、約２となる（便宜上、０．３３＝１／３として、０．６７＝２／３として示している）。従って、この値を１００分率化して２００となる。同様に第３音の「Ｅ」についても、差分値の比率が２００と算出される。
【００９４】
よって、これらの平均値は、（２００＋２００）÷２＝２００点となり、これを１００点から減じて、正解率＝−１００点と求められる（図中では、−を▲で表している）。
【００９５】
このようにして、各曲の正解率が求められたら、ステップＳ８０５で、その点数の高い順にＮリストをリストアップする。このようにして作成されたＮリストの例を図１７（Ｂ）に示してある。一部の曲について正解率が同点であり、この順位付けについては、ＦリストやＫリストと同様に、曲番号の若い順に順位を付けた例を示しているが、同順位としたり、他の方法で順位付けをしても差し支えない。
【００９６】
このようにして図５のステップＳ５０７を介して、図８に示した処理によってＮリストが作成されると、ＣＰＵ２１は、図５のフローチャートに処理を戻してステップＳ５０８へ処理を進め、Ｄリストのリストアップを行う。このＤリストアップの処理は図９に詳細が示してあるので、図９を参照して説明する。
【００９７】
図９でリストアップするＤリストとは、入力メロディ履歴の音程関係と、上述の楽曲データベース（図１２）に記録されている各楽曲のメロディの音程関係（Ｎｏｔｅ欄２行目）のデータを用いて比較を行うものである。
【００９８】
図８のＮリストでは、入力メロディと楽曲データベースの音高そのものを比較していたのに対して、本図９のＤリストでは、音程関係を用いて比較することとしている。これにより、入力メロディが、楽曲データベースに登録されたメロディと異なる調に移調されて演奏されていた場合であっても、楽曲データベースに登録された、相対的な音程関係を用いて比較を行うことができ、入力メロディの調性によらず楽曲の比較ができることとなる。
【００９９】
図９では、ＣＰＵ２１はまず、入力されたメロディ履歴のデータ(図１４）から、隣り合う２つの音の音高を比較して求めた「開始音／直前音との音程」のデータを、音程間隔データとして取得する（ステップＳ９０１）。
【０１００】
例えば、仮にいま入力メロディが「ＦＧＡ」であったとすると、音程関係としては、第１音「Ｆ」と第２音「Ｇ」の音程である「２」、および、第２音「Ｇ」と第３音「Ａ」の音程関係である「２」が取得されることとなる。
【０１０１】
続いてＣＰＵ２１は、この取得された入力メロディの音程間隔データと、楽曲データベース（図１２）の各楽曲の「開始音／直前音との音程」データ（Ｎｏｔｅ欄第２行目データ）とを比較して、音程間隔が一致する楽曲を検索する（ステップＳ９０２）。
【０１０２】
再度、上記の「ＦＧＡ」と入力された例で説明すると、入力メロディの音程関係は、最初から順に「２、２」であるのに対し、図１２の例の楽曲データベースに登録されている９曲は、いずれも、最初からの音程関係が順に「２、２」であるので、ステップＳ９０２で、図１２の９曲全てが検索結果としてピックアップされることとなる。
【０１０３】
この場合、上述したＤリストの趣旨である「楽曲データベースと異なる調に移調してメロディが入力された場合でも楽曲を検索できる」という点に鑑み、入力メロディと楽曲の、各開始音の絶対的な音高は比較しないものとする。上記の「ＦＧＡ」と入力された例で説明すると、入力メロディの開始音の音高「Ｆ」と、各楽曲の開始音の音高「Ｃ」は異なっているが、これについては比較を行わず、異なっている曲であってもピックアップされるようにする。
【０１０４】
これにより、上記の「ＦＧＡ」とメロディが入力された場合、図８のＮリストの検索処理では、各楽曲の音高と全く異なる音高であるためにピックアップされないが、本図９のＤリストの検索処理においては、音高そのものは異なっていても「ＣＤＥ」から始まる楽曲がピックアップされることとなる。
【０１０５】
続いてＣＰＵ２１は、ステップＳ９０２での検索の結果、ピックアップされた曲があったか否かを判断する（ステップＳ９０３）。そして、ピックアップされた曲がなかった場合は、このＤリストのリストアップ処理を終了する（ステップＳ９０３：Ｎｏ）。
【０１０６】
一方、ピックアップされた曲が存在していた場合は（ステップＳ９０３：Ｙｅｓ）、入力されたメロディ履歴の各音について、メロディ開始音（最初の音）とのＳＴ比率を算出して、ピックアップされた各曲について、楽曲データベース上に記録されている「開始音とのＳＴ比率」のデータと比較を行い、「正解率」を算出する（ステップＳ９０４）。この正解率の算出の具体的な方法については、ステップＳ７０４で説明したのと同様である。
【０１０７】
そして、ステップＳ９０４において算出された、「各楽曲の正解率」を参照して、正解率の高いものから順に所定数の楽曲をＤリストとしてリストアップし（ステップＳ９０５）、このＤリストアップの処理を終了する。
【０１０８】
このようにして作成される、Ｄリストの例を図１８に示す。
【０１０９】
ここでは、図１８（Ａ）に示すようなメロディが入力された場合に、図１２および図１３に示す楽曲データベースを検索して得られたＮリストの例を図１８（Ｂ）に、Ｄリストの例を図１８（Ｃ）に示している。
【０１１０】
図１８（Ａ）に示すように、メロディ入力は順に「ＦＧＡ」の３音が入力されている。また、図１８（Ａ）に示すメロディ入力の例では、ＦＧＡの全てが、同じ長さ（ＳＴ値）で、第１音とのＳＴ比率が１である場合を仮定している。
【０１１１】
既に説明したように、図１８（Ａ）のメロディ入力に対して、図１２の楽曲データベースの各曲の音高連結を比較すると、「ＦＧＡ」で始まっている楽曲は無いので、図１８（Ｂ）に示すように、Ｎリストでは、この図１２の曲１から曲９については一曲もリストアップがされない。なお、楽曲データベースにさらに他の曲が登録されており、その中に「ＦＧＡ」で始まる曲があった場合は、この図１８（Ｂ）のＮリストにピックアップされることとなる。
【０１１２】
このような入力メロディに対して、図９のＤリストアップ処理を行うと、まず、ステップＳ９０１で図１８（Ａ）のメロディ履歴データから音程間隔のデータである、第１音（開始音）〜第２音の音程「２」、並びに、第２音〜第３音の音程「２」が抽出される。次にステップＳ９０２で、この抽出された音程間隔に対して、図１２の楽曲データベースの各曲について音程間隔が比較される。
【０１１３】
ここで、本図のＤリストのリストアップでは、Ｎリストのリストアップ時と異なり、音高連結ではなく音程間隔を比較する。従って、入力メロディが、楽曲データベースに登録されたメロディと異なる調に移調されて演奏されていた場合であっても、楽曲データベースに登録された、相対的な音程関係を用いて比較を行うことができる。これにより、図１８（Ｂ）のＮリストではリストアップされなかった楽曲についても、Ｄリストとしてリストアップがなされる可能性がある。
【０１１４】
本図１８（Ａ）の入力に対しても、図１２の楽曲データベースの曲番号１から曲番号９までの９曲全てにおいて、音程間隔が、第１音（開始音）〜第２音の音程「２」、並びに、第２音〜第３音の音程「２」となっているため、ステップＳ９０２では、これらの９曲全てが候補として抽出される。
【０１１５】
該当曲があったためステップＳ９０３はＹｅｓとなり、ステップＳ９０４に進み、各該当曲ごとにＳＴ比率の正解率：Ｐを計算する。この正解率の計算は、Ｋリストの場合のステップＳ７０４や、Ｎリストの場合のステップＳ８０４と同様、式（１）を用いて計算している。
【０１１６】
このようにして、各曲の正解率が求められたら、ステップＳ９０５で、その点数の高い順にＤリストをリストアップする。このようにして作成されたＤリストの例を図１８（Ｃ）に示してある。一部の曲について正解率が同点であり、この順位付けについては、Ｆリスト、Ｋリスト、Ｎリストと同様に、曲番号の若い順に順位を付けた例を示しているが、同順位としたり、他の方法で順位付けをしても差し支えない。
【０１１７】
このようにして図５のステップＳ５０８を介して、図９に示した処理によってＤリストが作成されると、ＣＰＵ２１は、図５のフローチャートに処理を戻してステップＳ５０９へ処理を進め、ステップＳ５０７とＳ５０８で作成された、ＮリストとＤリストを用いて、総合リストを作成する（ステップＳ５０９）。この総合リストの作成処理は図１０に詳細が示してあるので、図１０を参照して説明する。
【０１１８】
図１０では、ＣＰＵ２１はまず、ＮリストとＤリストを、統合して、所定の方法により順番に並べて、総合リストとする（ステップＳ１００１）。
【０１１９】
ここで、統合して順番に並べる方法としては、例えば、ステップＳ８０４とステップＳ９０４で算出した、ＮリストとＤリストのそれぞれのリストの各楽曲のＳＴ比率の正解率に応じて、リスト種別に関わらずＳＴ比率の正解率が高いものから順に、楽曲を並べていく方法がある。
【０１２０】
また、その他にも、例えば、ステップＳ８０２とステップＳ９０２で、音高連結ないし音程間隔を比較した際に、入力メロディ履歴と、楽曲データベースの楽曲とで、音高連結あるいは音程間隔が一致した音数が多いものを上位として、ＮリストとＤリストの双方から楽曲を並べていく方法が可能である。
【０１２１】
さらには、音高連結ないし音程間隔の比較結果と、ＳＴ比率の正解率を総合的に評価して、ＮリストとＤリストの統合を行う方法も可能である。この場合、いずれかの評価、例えば音高連結ないし音程間隔が一致した音数が多いものを上位とし、一致した音数が同じものについて、ＳＴ比率の正解率で順位付けをする方法や、逆にＳＴ比率の正解率を優先的に順位付けする方法、さらに、所定の重み付けを行って、両項目の評価点を加算して、この重み付け加算された評価点の高い順に楽曲を並べていく方法などが可能である。
【０１２２】
このような方法によってＮリストとＤリストから総合リストが作成されると、ＣＰＵ２１はこの総合リスト中に重複する楽曲がないかを検索する（ステップＳ１００２）。これは即ち、ＮリストとＤリストの両方にリストアップされている、重複する楽曲があるか否かを検索することと等しい。
【０１２３】
ステップＳ１００２で重複する曲があった場合には、総合リストにそのような重複する曲が存在すると、以後の処理に不便であるので、ＣＰＵ２１はこの重複する楽曲を総合リストから削除して（ステップＳ１００３）、総合リストから重複する曲がなくなるようにする。なお、重複する曲は１曲とは限らず、複数の曲が重複していた場合であっても、それらを全て削除するものとする。
【０１２４】
この図１０に示した処理によってＮリストとＤリストを用いて作成された総合リストの例を図１９に示す。図１９の総合リストでは、各楽曲が正解率の順に並べられ、かつ、重複する曲が削除されたリストとなっている。
【０１２５】
以上により、図５に示した曲候補検索処理では、入力されたメロディに基づき、後述するキー（調性）判定処理の状況に応じた楽曲候補の総合リストが作成される。  
【０１２６】
このようにして図３のステップＳ３０４を介して、図５の曲候補検索処理が終了すると、ＣＰＵ２１は図３のフローチャートに処理を戻し、キー（調性）判定処理を行う（ステップＳ３０５）。キー（調性）判定処理は、例えば、ＲＡＭ２３中に、図２０のようなダイアトニックレジスタ２０００を有して、各データを更新することによって実行される。
【０１２７】
本実施の形態において、ＣＰＵ２１は、メロディ音が押鍵されるごとに、ダイアトニックレジスタ２０００の一連の項目に値を格納する。図２０の例では、時系列に５つのメロディ音のそれぞれについて、一連の値が格納されている（符号２００１〜２００５）。図２０においては、矢印ｔの方向に時間的に新しい押鍵についての値となっている。つまり、メロディ音の項目にあるように、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｂ」の順で押鍵されている。
【０１２８】
本実施の形態においては、ＣＰＵ２１によって、複数のメロディ音について、以下に述べる項目の値が、ダイアトニックレジスタ２０００の単位レジスタ２００１〜２００５に格納されるようになっている。単位レジスタ２００１〜２００５は、それぞれ、メロディ音、音長、仮キー、仮コード、仮機能、メロディ音履歴、キー候補レジスタおよび確定キーという項目を有し、単位レジスタには、各項目についての値が格納され得る。メロディ音には、押鍵された鍵の音名が格納される。また、音長は、当該鍵の押鍵時間が格納される。なお、この音長については、楽曲データベースと揃えてＳＴ値を記録することとしてもよい。
【０１２９】
最終的に、キー（調性）が確定したときには、ＣＰＵ２１は、単位レジスタの確定キーの項目に、キー名を格納する（たとえば、単位レジスタ２００５格納）。しかしながら、キーが確定したとＣＰＵ２１によって判断されるためには、複数の押鍵が必要となる。そこで、本実施の形態においては、キーが確定できると判断する段階になるまでは、ＣＰＵ２１の処理により仮キーが特定されて、そのキー名が、単位レジスタの仮キーの項目に格納される。また、仮キーの下で、メロディ音に適切な仮のコード名が、ＣＰＵ２１によって仮コードの項目に格納される。また、仮機能の項目には、ＣＰＵ２１によって、仮キーの下での、仮コードの機能（主音をＩとした場合のコード名、および、トニック（Ｔ）、ドミナント（Ｄ）、サブドミナント（Ｓ）の種別）が格納される。
【０１３０】
メロディ音履歴は、演奏開始時或いは所定のタイミングから、押鍵された鍵の音名が蓄積される。たとえば、最初の押鍵についての単位レジスタ２００１には、押鍵された鍵であるＣのみが格納され、次の押鍵についての単位レジスタ２００２には、２つの鍵ＣＤが格納されている。キー候補には、当該鍵が押鍵された時点で、あり得る１以上のキー名が格納される。
【０１３１】
メロディ履歴データからのキー（調性）候補の絞り込みは、ＣＰＵ２１が図２１のダイアトニックスケールテーブル２１００を参照することによって実行される。
【０１３２】
ダイアトニックスケールテーブル２１００には、Ｃ〜Ｂの１２個のキーそれぞれについて、キースケールノート（音階に該当する音）が識別可能に格納されている。たとえば、キーがＣであればＣ、Ｄ、Ｅ、Ｆ、Ｇ、Ａ、Ｂの音名が格納され（符号２１０１参照）、キーＧであればＧ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ＃の音名が格納される（符号２１０２参照）。
【０１３３】
そして、ＣＰＵ２１によって、図２０のメロディ音履歴と、ダイアトニックスケールテーブル２１００とが比較され、メロディ音履歴に含まれる音名が、あるキーのダイアトニックスケールに全て含まれるようなキーが存在するかが調べられる。このようなキーは、存在しない場合もあるし、複数存在する場合もある。たとえば、単位レジスタ２００３のメロディ音履歴には、Ｃ、Ｄ、Ｅが格納されている。そこで、ダイアトニックスケールテーブル２１００を参照すると、Ｃ、Ｄ、Ｅの全てをダイアトニックスケールとして含むキーは、Ｃ、Ｇ、Ｆの３つとなる。したがって、この場合には、Ｃ、Ｄ、Ｅの３つのキーがキー候補となり得る。（単位レジスタ２００３のキー候補欄）
【０１３４】
そして、このキー（調性）候補が一つになった場合に、ＣＰＵ２１は、その候補キー（調性）を、確定キー（調性）とする。一方、キー候補が２以上存在する場合は、ＣＰＵ２１は、例えば、候補キーのうち最も調号の少ないものを仮キーとして、単位レジスタの仮キーの値として格納する。なお、調号が同数の場合（たとえば、ＦとＧ、ＤとＢ♭）には、♯系のキーが優先して仮キーとされる。
【０１３５】
以上のようにして、図３のステップＳ３０５でキー（調性）判定処理が行われると、ＣＰＵ２１は自動コード判定処理を行う（ステップＳ３０６）。
【０１３６】
自動コード判定処理は、現時点までに入力されたメロディ音に基づいて、現在のメロディに付けるべきコード（和音）を自動的に判定する処理であり、種々の方法により実現することが可能である。
【０１３７】
例えば、現在のメロディ音に基づき、図２２に示すような仮コード決定マップ２２００を用いてコードを決定することが可能である。この手法は、例えば、まだ十分なメロディ履歴が得られていない、例えば第１音めや開始後数音程度の場合に用いることができる。
【０１３８】
また、特にキーが未確定の場合などに、図２３のコードデータベースを用いてコードを決定することができる。図２３に示すように、コードデータベース２３００には、コード名ごとに、コード構成音および当該コードに関するスケールノートが格納されている。図２３において、たとえば、ハッチングで示される音名がコード構成音である。
【０１３９】
例えば、ＣＰＵ２１は、所定の長さのメロディ履歴の中で、音長の長いものから順に所定個数の音を選択する。所定の長さのメロディ履歴としては、例えば、所定小節分のメロディ履歴や、所定音数のメロディ履歴などと決めておくことができる。
【０１４０】
ＣＰＵ２１は、上記音長の長いものから選択された所定個数の音をコードデータベース２３００と比較し、この所定個数の音を含むコード構成音を有するコードがあるかどうか判断する。そして、コードが見つかれば、そのコードを自動コード判定処理のコードとし、見つからなければ上記選択する音数を減らして再度コードデータベースと照合するなどの方法でコードを決定することができる。
【０１４１】
また、前回のコードの機能と、その次のメロディの進行に応じて、図２４のようなコード判定テーブルを用いてコードを決定することも可能である。
【０１４２】
ここで、コードの機能とは、音楽理論における「トニック（ＴＯ）」、「サブドミナント（ＳＵ）」、「ドミナント（ＤＯ）」のことをいい、図２４の左端に前回コード機能による分類が示されている。
【０１４３】
図２４に示すコード判定テーブルおいては、前回コードの機能（トニック（ＴＯ）、サブドミナント（ＳＵ）或いはドミナント（ＤＯ）の何れか）、および、前回メロディ音ＰＭおよび現在メロディ音ＣＭの組み合わせによって、コード名が取得されるようになっている。なお、図２４のコード判定テーブル２４００は、キー（Ｃ）の場合についてのものである。したがって、他のキーの場合には、当該キーの主音とＣとの音程をオフセットとして、実際の前回メロディ音ＰＭおよび現在メロディ音ＣＭからオフセットを考慮して、キーをＣとした場合の前回メロディ音ＰＭおよび現在メロディ音ＣＭを算出して用いれば良い。なお、図２４の例では示されていないが、前回メロディ音ＰＭおよび今回メロディ音ＣＭの組み合わせによっては、コード名が得られない場合もある。
【０１４４】
さらに、公知となっている他の手法を用いて、ステップＳ３０５のキー（調性）判定処理や、ステップＳ３０６の自動コード判定処理を実行することも可能である。例えば、特開２０１１ー１５８８５５号公報や、特開２０１２−６８５４８号公報などの手法を用いることが可能である。
【０１４５】
このようにして、図３のステップＳ３０６で自動コード判定処理が行われると、ＣＰＵ２１はコード選択処理を実行する（ステップＳ３０７）。このコード選択処理は図１１に詳細が示してあるので、図１１を参照して説明する。
【０１４６】
図１１で実行されるコード選択処理は、ステップＳ３０４を介して図５以下で実行された、曲候補検索処理でリストアップされた曲のコード進行と、ステップＳ３０６で実行された自動コード判定処理で決定されたコードのいずれを用いて自動伴奏付けを行うかを決定する処理である。
【０１４７】
図１１では、ＣＰＵ２１はまず、総合リスト中で音高／音程連結が所定数、例えば１０音以上合っている曲があるか否かを判断する（ステップＳ１１０１）。この音数について、「音楽テーマ事典」（音楽之友社）では、６音までの音の並びから楽曲を検索できるようになっているが、６音で検索をすると、音が同じ曲が希に１０曲程度検索される場合がある。このことから、例えば、６音〜１０音程度の音が合っているかどうかを調べると、ある程度の正確性をもって楽曲の検索が行える。なお、メロディ入力が、まだ、所定数の音数（例えば１０音）に達していない場合には、本処理をスキップすることとしても良い。
【０１４８】
総合リスト中で音高／音程連結が所定数合っているものが無かった場合（ステップＳ１１０１：ＮＯ）、ＣＰＵ２１は、ステップＳ１１０４に処理を進め、リアルタイムコード付け結果通りのコードを出力して本コード選択処理を終了する（ステップＳ１１０４）。なお、そもそもＦリスト、Ｋリスト、Ｎリスト・Ｄリストの各リストに該当する曲が検索されず、総合リストに曲がピックアップされていなかった場合も、このステップＳ１１０１でＮＯと判断されて、ステップ１１０４にてリアルタイムコード付け結果通りのコードを出力する。
【０１４９】
一方、総合リスト中で音高／音程連結が所定数合っているものがあった場合（ステップＳ１１０１：ＹＥＳ）、ＣＰＵ２１は、その中で発音タイミングが８０％以上マッチしている曲があるか否かを判定する（ステップＳ１１０２）。具体的には、総合リストにリストアップされている曲の中で、「正解率」が８０点以上のものがあるか否かを判断する。この正解率は、既述のように、楽曲データベースと入力メロディ履歴との「開始音とのＳＴ比率」の値を比較して求めた、発音タイミングに関する評価値であるので、この正解率の値が所定値以上の曲を選択することで、ほぼデータベースと同じ曲を弾いていると判断でき、楽曲データベースからコード進行を選択して自動伴奏用コードとして差し支えないものと考えられる。なお、この「８０点」の基準数値に関しては、適宜変更して、異なる基準値を用いて実施することも可能である。また、例えば「習熟度」に関する指定を図示しないボタン等で受け付けて、この習熟度に応じて判断の基準値を変えることも可能である。
【０１５０】
発音タイミングが８０％以上マッチしている曲が無かった場合（ステップＳ１１０２：ＮＯ）、ＣＰＵ２１は、ステップＳ１１０４に処理を進め、リアルタイムコード付け結果通りのコードを出力して本コード選択処理を終了する（ステップＳ１１０４）。
【０１５１】
一方、発音タイミングが８０％以上マッチしている曲があった場合（ステップＳ１１０２：ＹＥＳ）、ＣＰＵ２１は、このステップＳ１１０１とステップＳ１１０２とで選択された曲、具体的には、音高／音程連結が所定数合っている曲であって、発音タイミングが所定率以上合っている曲（以下「該当曲」という）の楽曲データベース（図１２）を参照する。そして、該当曲のデータ中、現在のメロディと推定される部分のコードを、楽曲データベースから読み出して、ステップＳ３０６の自動コード判定処理（リアルタイムコード付け）のコード付け結果とマッチするか否かを判別する（ステップＳ１１０３）。
【０１５２】
自動コード判定処理（リアルタイムコード付け）のコード付け結果と、該当曲の楽曲データベースから読み出したコードとがマッチしていた場合（ステップＳ１１０３：ＹＥＳ）、ＣＰＵ２１は、ステップＳ１１０４に処理を進め、リアルタイムコード付け結果通りのコードを出力して、本コード選択処理を終了する（ステップＳ１１０４）。
【０１５３】
一方、自動コード判定処理（リアルタイムコード付け）のコード付け結果と、該当曲の楽曲データベースから読み出したコードとがマッチしていない場合（ステップＳ１１０３：ＮＯ）、ＣＰＵ２１は、ステップＳ１１０５に処理を進め、該当曲の楽曲データベースから読み出したコードを出力して、本コード選択処理を終了する（ステップＳ１１０５）。
【０１５４】
このようにして図３のステップＳ３０７を介して、図１１に示したコード選択処理が実行されると、ＣＰＵ２１は、図３のフローチャートに処理を戻し、ステップＳ３０８で自動伴奏処理を実行する（ステップＳ３０８）。この自動伴奏処理は図２５に詳細が示してあるので、図２５を参照して説明する。
【０１５５】
図２５は、本実施の形態にかかる自動伴奏処理の例を示すフローチャートである。まず、ＣＰＵ２１は、電子楽器１０が自動伴奏モードの下で動作しているかを判断する（ステップ２５０１）。ステップ２５０１でＹｅｓと判断された場合には、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、メロディ音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２５０２）。
【０１５６】
自動伴奏データには、３つの種類の楽音、すなわち、メロディ音（オブリガート音を含む）、コード音、リズム音のデータが含まれる。メロディ音のデータおよびコード音のデータは、発音すべき楽音ごとに、その音高、発音タイミングおよび発音時間を含む。また、リズム音のデータは、発音すべき楽音（リズム音）ごとに、その発音タイミングを含む。
【０１５７】
ステップ２５０２でＹｅｓと判断された場合には、ＣＰＵ２１は、メロディ発音・消音処理を実行する（ステップ２５０３）。メロディ発音・消音処理においては、処理にかかるイベントがノートオンイベントであるかを判断する。ノートオンイベントであることは、現在時刻が、上記メロディ音のデータにおける所定の楽音の発音タイミングとほぼ一致することで判断できる。その一方、ノートオフイベントであることは、現在時刻が、当該楽音の発音タイミングに発音時間を加えた時刻とほぼ一致することで判断できる。
【０１５８】
処理にかかるイベントがノートオフイベントである場合には、ＣＰＵ２１は、消音処理を実行する。その一方、処理にかかるイベントがノートオンイベントであれば、メロディ音のデータにしたがった発音処理を実行する。
【０１５９】
次いで、ＣＰＵ２１は、ＣＰＵ２１のタイマ（図示せず）を参照して、現在時刻が、自動伴奏データ中、コード音のデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２５０４）。ステップ２５０４においてＹｅｓと判断された場合には、ＣＰＵ２１は、コード発音・消音処理を実行する（ステップ２５０５）。コード音発音・消音処理においては、発音タイミングに達したコード音について発音処理を実行し、その一方、消音タイミングに達したコード音については消音処理を実行する。
【０１６０】
その後ＣＰＵ２１は、現在時刻が、自動伴奏データ中、リズムのデータについてのイベントの実行タイミングに達しているかを判断する（ステップ２５０６）。ステップ２５０６においてＹｅｓと判断された場合には、ＣＰＵ２１は、リズム音発音処理を実行する（ステップ２５０７）。リズム音発音処理においては、発音タイミングに達したリズム音についてノートオンイベントを生成する。
【０１６１】
自動伴奏処理（図３のステップＳ３０８）が終了すると、ＣＰＵ２１は、音源発音処理を実行する（ステップＳ３０９）。音源発音処理において、ＣＰＵ２１は、生成されたノートオンイベントに基づいて、発音すべき楽音の音色および音高を示すデータを音源部２６に与え、或いは、消音すべき楽音の音色および音高を示すデータを音源部２６に与える。音源部２６は、音色、音高、音長等を示すデータにしたがって、ＲＯＭ２２の波形データを読み出して、所定の楽音データを生成する。これにより、スピーカ２８から所定の楽音が発生する。また、ＣＰＵ２１は、ノートオフイベントに基づいて、音源２６にノートオフイベントが示す音高の消音を指示する。
【０１６２】
音源発音処理（ステップＳ３０９）が終了すると、ＣＰＵ２１は、その他の処理（たとえば、表示部１５への画像表示、ＬＥＤ（図示せず）の点灯、消灯など：ステップＳ３１０）を実行して、ステップ３０２に戻る。
【０１６３】
以上に説明した通り、本実施の形態においては、演奏者が演奏したメロディに対して自動的に伴奏を付加する電子楽器で、楽曲データベースを備え、演奏者の演奏メロディとこの楽曲データベースの各楽曲とを比較照合する。そして、所定の条件で一致したと判別された曲が見つかった場合、この楽曲データベースに登録されているコードを読み出して、演奏者の演奏メロディに対して伴奏付けを行う。
【０１６４】
このようにすることで、演奏者の演奏メロディに対して、リアルタイムで自動的に伴奏を付ける際の自動コード判別のみによらず、楽曲データベースに登録されている曲と合致した場合は、データベースから曲に合ったコードを読み出して出力できるため、自動的なコード付けの精度を向上させることができる。
【０１６５】
さらに、本実施の形態では、楽曲データベースとの照合処理において、キー（調性）判別がまだ確定していない場合に、音高の比較を行うＮリストと、音程間隔の比較を行うＤリストとを備え、楽曲データベースに登録されているのと異なる調でメロディが演奏された場合でも比較照合を行えるようにしている。従って、演奏者がメロディをデータベースと異なる調で演奏した場合であっても、楽曲データベースを有効に活用してコード付けを行うことが可能である。
【０１６６】
さらに、本実施の形態では、楽曲データベースに、メロディ開始音と各メロディ音とのＳＴ比率を登録しておき、演奏されたメロディについての開始音と各音とのＳＴ比率を取得して、楽曲データベースの登録値と比較して、正解率を算出する。そして、この正解率の高いものから優先的に楽曲データベースの楽曲を検索するようにしている。従って、多少発音タイミングがずれて演奏されていた場合であっても、概ね曲の特徴が合っていれば、候補曲として検索される柔軟なシステムを構築することが可能である。
【０１６７】
また、楽曲データベース検索と平行して、自動的なコードの判別処理も行い、楽曲データベースでの検索で該当する曲が見つからない場合は自動的なコード判別結果に基づいてコード付けを行うようになっている。従って、自動コード判別と楽曲データベース検索方式との二重構造によってコード付けをすることにより、データベースに登録されている曲については速やかにデータベースを用いた正確なコード付けを行うと共に、データベースに該当曲がない場合や、判別不能な場合等は、自動的なコード判別処理でコードを付けることができ、コード付け不能となることなく、かつ、精度の良いコード付け並びに自動伴奏付けが可能となる。
【０１６８】
次に、本発明の第２の実施の形態を説明する。第２の実施形態では、ＣＰＵ２１は、図１１のコード選択処理に替えて、図２６に示すコード選択処理を実行する。
【０１６９】
図２６のコード選択処理において、図１１と同様の処理を行う部分については、図１１と共通のステップ番号を付してあり、これについては説明を省略する。図２６のコード選択処理では、図１１のステップ１１０３に替えてステップＳ２６０３を実行する。
【０１７０】
ステップＳ２６０３では、ＣＰＵ２１は、ステップＳ３０６の自動コード判定処理で演奏メロディに対して付けられたコードと、Ｓ１１０１、Ｓ１１０２で、条件に該当すると判断された楽曲データベースの曲の中の、現在演奏されているメロディ部分に付けられているコードとの「コードの機能」を比較する。
【０１７１】
具体的には、楽曲データベースに付けられているコードの機能としては、図１２に示した楽曲データベース中に、さらに各メロディ音に対して、コードの機能の情報を追加で記録されていることとしても良いし、または、図１２の楽曲データベースでは、各曲のキー（調性）が判っているので、この調性と、各メロディ音に対するコードとを比較照合することで、機能を判定することとしても良い。
【０１７２】
また、現在演奏されているメロディ部分に付けられているコードの機能は、ステップＳ３０５のキー（調性）判定の部分で説明した、仮機能の部分に記録された機能を用いることとしても良い。この、演奏されているメロディのコードの機能（仮機能）は、ステップＳ３０５で説明した、仮キー若しくは確定キーの情報と、現在のメロディに対して付けられたコード（和音）の情報を比較照合して、機能を判定することができる。
【０１７３】
具体的には、各種コードとコードの機能について、周知の音楽理論を用いたテーブルを用意し、このテーブルを参照することによって、コードの機能を取得することが可能である。例えば、トニックに該当するコード名として、「ＩＭａｊ」、「ＩＭ７」、「ＩＩＩｍｉｎ」、「ＩＩＩｍ７」、「ＶＩｍｉｎ」、「ＶＩｍ７」がある。サブドミナントに該当するコード名として、「ＩＩｍｉｎ」、「ＩＩｍ７」、「ＩＩｍ７（−５）」、「ＩＶＭａｊ」、「ＩＶＭ７」、「ＩＶｍｉｎ」、［ＩＶｍＭ７］がある。また、ドミナントに該当するコード名として、「ＩＩＩＭａｊ」、「ＩＩＩ７」、「ＩＩＩ７ｓｕｓ４」、「ＶＭａｊ」、「Ｖ７」、「Ｖ７ｓｕｓ４」、「ＶＩＩｍ７（−５）」がある。
【０１７４】
このようにして、ステップＳ２６０３で、ＣＰＵ２１は、ステップＳ３０６の自動コード判定処理で演奏メロディに対して付けられたコードと、Ｓ１１０１、Ｓ１１０２で、条件に該当すると判断された楽曲データベースの曲の中の、現在演奏されているメロディ部分に付けられているコードとの「コードの機能」を比較する。
【０１７５】
そして、コードの機能が共通だった場合には（ステップＳ２６０３：ＹＥＳ）、リアルタイムコード付け結果のコードを出力する（ステップＳ１１０４）。一方、コードの機能が異なっていた場合は（ステップＳ２６０３：ＮＯ）、該当曲の楽曲データベースから読み出したコードを出力する（ステップＳ１１０５）。
【０１７６】
このようにすることによって、本第２の実施形態では、リアルタイムコード付けの結果のコードと楽曲データベースから読み出したコードの、「コードの機能」が合っている場合には、同じ機能を有するコードのうちでのバラエティとして、リアルタイムコード付けの結果を尊重してリアルタイムコード付けの結果のコードを出力する一方、「コードの機能」が異なっていた場合、リアルタイムコード付けの結果のコードが、機能からして大外れの見当違いの和音を付してしまう危険を避けるために、楽曲データベースのコードを読み出して出力するようにできる。従って、楽曲データベースとリアルタイムコード付けの両方式の協働によって、大きく見当外れのコードを出力する可能性を低減しつつ、機能が合っている中ではコード付けのバラエティとして、リアルタイムコード付けの判断結果を尊重したコード出力をすることが可能となる。
【０１７７】
以上、本発明のいくつかの実施形態について説明したが、これらの実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１７８】
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク（フロッピーディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【０１７９】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段などより構成される全体的な装置を意味するものとする。
【０１８０】
例えば、上記実施形態の図３で説明した処理のうち一部は、処理の順番を前後させる等させても差し支えない。例えば、Ｓ３０４の曲候補検索処理と、Ｓ３０５、Ｓ３０６のキー（調性）判定処理、自動コード判定処理と、は、順序を逆にすることもできる。そのようにすることで、ステップＳ５０５における「Ｋｅｙ確定？」か否かの判断において、より最新の判断結果を用いることができる。
【０１８１】
以上に説明した本発明によれば、メロディ音の履歴に基づいて、自動的なコード付けと、楽曲データベースを用いたコード付けとの双方を適切に使い分けてコード付けができるため、精度の良い適切なコード付けを迅速に行うことが可能となる。
【０１８２】
すなわち、本発明によれば、楽曲データベース手段に登録された曲の中で、該当する楽曲が見つからない場合には、自動コード付けによりコードが付けられる。従って、楽曲データベース中に該当する楽曲が見つからなかった場合でも、和音が付かなくなってしまい、演奏者の演奏に何らの自動伴奏も付されないといった事態を回避することができる。
【０１８３】
他方、本発明によれば、楽曲データベース手段に登録されている曲の中で、該当する楽曲が検索された場合には、この楽曲データベース手段に登録されているコードを利用して自動伴奏を付けることができる。従って、自動コード付けによるコード付けで自動的にコードの判別を行った場合に、人間の聴覚的に明らかにおかしい、間違った和音が付いてしまうといった事態を防ぐことが可能になる。
【０１８４】
さらに、本発明によれば、楽曲データベース手段に登録されている曲の中で、該当する楽曲が検索された場合に、自動コード付けによるコードと、楽曲データベース中に登録されているコードとのコードの機能を比較して、用いるコードを選択している。従って、自動コード付けによるコード付けが、楽曲データベースに登録されているコードと比べて、コードの機能の面からも異なっている、大ハズレのコードを付してしまうといった目立った誤りが発生する事態を防ぐことができる。
【０１８５】
さらにまた、楽曲データベースに登録されているコードと機能が同じであった場合に、自動コード付けを選択するようにすることで、コードの機能が大ハズレでは無いことを確認した上で、自動コード付けによるコード付けアルゴリズムを尊重したコードを選択できることから、より適切なコードを用いた自動伴奏を行うことができるようになる。
【０１８６】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［付記１］
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、
演奏操作子の操作に対応して順次楽音の発生を指示するための演奏情報を記憶する演奏記憶手段と、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索する楽曲検索手段と、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定手段と、
前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択するコード選択手段と、
前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏手段と、
を備えたことを特徴とする自動伴奏装置。
【０１８７】
［付記２］
前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能を比較し、このコードの機能の比較結果に基づいてコードを選択することを特徴とする付記１に記載の自動伴奏装置。
【０１８８】
［付記３］
前記コード選択手段は、前記楽曲検索手段によって検索された楽曲データに対応して記憶されたコード及び前記コード判定手段によって判定されたコード夫々のコードの機能が一致した場合は、前記コード判定手段によって判定されたコードを選択するとともに、当該コードの機能が一致しない場合には、前記楽曲データに記憶されているコードを選択することを特徴とする付記２に記載の自動伴奏装置。
【０１８９】
［付記４］
前記コード選択手段は、前記楽曲検索手段によって前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲が検索されなかった場合に、前記コード判定手段によって判定されたコードを選択することを特徴とする、付記１から３のいずれかに記載の自動伴奏装置。
【０１９０】
［付記５］
前記楽曲検索手段は、前記演奏操作子により順次発音の指示された楽音のうち、第１音目の楽音の音長と、夫々入力された楽音の音長との比率に基づき前記楽曲データベース手段から対応する楽曲を順位を付けて検索することを特徴とする付記１から４のいずれかに記載の自動伴奏装置。
【０１９１】
［付記６］
前記コード判定手段は、記演奏操作子の演奏情報の調性を判定するキー判定手段を備え、
前記楽曲検索手段は、前記楽曲データベース手段に記憶された楽曲データを前記キー判定手段によって判定されたキーに基づき移調し、当該移調された楽曲データ及び前記演奏情報に基づいて、前記楽曲データベース手段から対応する楽曲を検索することを特徴とする付記１から５のいずれかに記載の自動伴奏装置。
【０１９２】
［付記７］
前記キー判定手段によるキー判定が未確定の場合には、前記楽曲検索手段は、前記楽曲データベース手段に記憶された楽曲データに対応するメロディ情報に含まれる音高データに基づく楽曲検索と、当該音高データ間の相対的な音程間隔データに基づく楽曲検索とを組み合わせて楽曲を検索することを特徴とする付記６に記載の自動伴奏装置。
【０１９３】
［付記８］
前記楽曲データベース手段に記憶された各楽曲データは、単一の調で記憶されていることを特徴とする付記１から７のいずれかに記載の自動伴奏装置。
【０１９４】
［付記９］
前記楽曲データベース手段に記憶された各楽曲データが、原曲の調で記録されていることを特徴とする付記１から７のいずれかに記載の自動伴奏装置。
【０１９５】
［付記１０］
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、演奏操作子の操作に対応して順次楽音の発生を指示する演奏情報を記憶する演奏記憶手段と、を有する自動伴奏装置に用いられる自動伴奏方法であって、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索し、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定し、
前記楽曲検索手段によって検索された楽曲に対応して記憶されたコード及び前記コード判定手段によって判定されたコードのうち、いずれのコードを用いるかを選択し、
前記コード選択手段によって選択されたコードに基づいた、伴奏音の発生を指示する、自動伴奏方法。
【０１９６】
［付記１１］
複数の楽曲のそれぞれについて、メロディ情報と当該メロディ情報に対応するコードとが楽曲データとして記憶されている楽曲データベース手段と、演奏操作子の操作に対応して順次楽音の発生を指示する演奏情報を記憶する演奏記憶手段と、を備えた自動伴奏装置として用いられるコンピュータに、
前記演奏記憶手段に記憶された演奏情報に基づいて、前記楽曲データベース手段から当該演奏情報に対応するメロディ情報を有する楽曲データを検索する楽曲検索ステップと、
前記演奏記憶手段に記憶されている演奏情報から、コードを判定するコード判定ステップと、
前記検索された楽曲に対応して記憶されたコード及び前記判定されたコードのうち、いずれのコードを用いるかを選択するコード選択ステップと、
前記選択されたコードに基づいた、伴奏音の発生を指示する自動伴奏ステップと、
を実行させる自動伴奏プログラム。
【符号の説明】
【０１９７】
１０…電子楽器，１１…鍵盤，１２、１３…スイッチ，１５…表示部，２１…ＣＰＵ，２２…ＲＯＭ，２３…ＲＡＭ，２４…サウンドシステム，２５…スイッチ群，２６…音源部，２７…オーディオ回路，２８…スピーカ，３０…楽曲データベース，２０００…ダイアトニックレジスタ，２００１〜２００５…単位レジスタ，２１００…ダイアトニックスケールテーブル，２２００…仮コード決定マップ，２３００…コードデータベース
【図１】
2014178396.tif 000004
【図２】
2014178396.tif 000005
【図３】
2014178396.tif 000006
【図４】
2014178396.tif 000007
【図５】
2014178396.tif 000008
【図６】
2014178396.tif 000009
【図７】
2014178396.tif 000010
【図８】
2014178396.tif 000011
【図９】
2014178396.tif 000012
【図１０】
2014178396.tif 000013
【図１１】
2014178396.tif 000014
【図１２】
2014178396.tif 000015
【図１３】
2014178396.tif 000016
【図１４】
2014178396.tif 000017
【図１５】
2014178396.tif 000018
【図１６】
2014178396.tif 000019
【図１７】
2014178396.tif 000020
【図１８】
2014178396.tif 000021
【図１９】
2014178396.tif 000022
【図２０】
2014178396.tif 000023
【図２１】
2014178396.tif 000024
【図２２】
2014178396.tif 000025
【図２３】
2014178396.tif 000026
【図２４】
2014178396.tif 000027
【図２５】
2014178396.tif 000028
【図２６】
2014178396.tif 000029