(57)【要約】【課題】演奏の流れに応じて演奏者が意図するコードを検出することを課題とする。【解決手段】演奏操作用の演奏鍵盤と、演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出手段とを有する電子楽器のコード検出装置が提供される。【選択図】　　　　図５
2004093927.tif 000002
【特許請求の範囲】
【請求項１】
演奏操作用の演奏鍵盤と、
前記演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出手段と
を有する電子楽器のコード検出装置。
【請求項２】
前記演奏鍵盤は、手操作用の手鍵盤と足操作用の足鍵盤とを有し、
前記コード検出手段は、前記手鍵盤の操作、前記足鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出する請求項１記載の電子楽器のコード検出装置。
【請求項３】
前記コード検出手段は、コードルート及びコードタイプを検出すると共に、ベースルートの有無を検出する請求項２記載の電子楽器のコード検出装置。
【請求項４】
前記コード検出手段は、
前記手鍵盤の操作に応じて、第１のコードルート及び第１のコードタイプを検出する第１のコード検出部と、
前記検出された第１のコードルート、第１のコードタイプ、前記足鍵盤の操作、及び前回検出されたコードに応じて、第２のコードルート、第２のコードタイプ及びベースルートの有無を検出する第２のコード検出部とを有する請求項３記載の電子楽器のコード検出装置。
【請求項５】
前記第２のコード検出部は、今回検出された第１のコードタイプがオーギュメントであるときには、前回検出されたコードに応じて異なるコードを決定することがある請求項４記載の電子楽器のコード検出装置。
【請求項６】
前記第２のコード検出部は、今回検出された第１のコードタイプがオーギュメントであるときには、前回検出されたコードに応じて異なる第２のコードルートを決定することがある請求項５記載の電子楽器のコード検出装置。
【請求項７】
前記第２のコード検出部は、今回検出された第１のコードタイプがオーギュメントであり、今回検出された第１のコードルートが前回検出された第２のコードルートと同じか、４半音又は８半音高いときには、今回の第２のコードルートを前回の第２のコードルートと同じにし、今回の第２のコードタイプをオーギュメントにする請求項６記載の電子楽器のコード検出装置。
【請求項８】
前記コード検出手段は、さらに、前記検出された第１のコードルート、第１のコードタイプ、及び前記足鍵盤の操作に応じて、第３のコードルート、第３のコードタイプ及びベースルートの有無を検出する第３のコード検出部と、
前記第２のコードタイプ及び前記第３のコードタイプの両方がオーギュメントであるときには前記第２のコードルート及び前記第２のコードタイプを採用し、それ以外のときには前記第３のコードルート及び前記第３のコードタイプを採用する請求項７記載の電子楽器のコード検出装置。
【請求項９】
前記第２のコード検出部は、今回検出された第１のコードタイプがディミニッシュであるときには、前回検出されたコードに応じて異なるコードを決定することがある請求項４記載の電子楽器のコード検出装置。
【請求項１０】
前記第２のコード検出部は、今回検出された第１のコードタイプがディミニッシュであるときには、前回検出されたコードに応じて異なる第２のコードルートを決定することがある請求項９記載の電子楽器のコード検出装置。
【請求項１１】
前記第２のコード検出部は、今回検出された第１のコードタイプがディミニッシュであり、今回検出された第１のコードルートが前回検出された第２のコードルートより１半音、４半音、７半音又は１０半音高いときには、今回の第２のコードルートを前回の第２のコードルートに半音加算したコードルートにし、今回の第２のコードタイプをディミニッシュにする請求項１０記載の電子楽器のコード検出装置。
【請求項１２】
前記コード検出手段は、さらに、前記検出された第１のコードルート、第１のコードタイプ、及び前記足鍵盤の操作に応じて、第３のコードルート、第３のコードタイプ及びベースルートの有無を検出する第３のコード検出部と、
前記第２のコードタイプ及び前記第３のコードタイプの両方がディミニッシュであるときには前記第２のコードルート及び前記第２のコードタイプを採用し、それ以外のときには前記第３のコードルート及び前記第３のコードタイプを採用する請求項１１記載の電子楽器のコード検出装置。
【請求項１３】
前記第２のコード検出部は、前回検出された第２のコードルート及び第２のコードタイプと、今回検出された第１のコードルート及び第１のコードタイプとの関係がクリシェであるときには、前回検出された第２のコードルート及び第２のコードタイプに応じて、今回の第２のコードルート及び／又は第２のコードタイプを決定する請求項４記載の電子楽器のコード検出装置。
【請求項１４】
前記第２のコード検出部は、前回検出された第２のコードルート、第２のコードタイプ及びベースルートの有無と、今回検出された第１のコードルート、第１のコードタイプ及びベースルートの有無との関係がクリシェであるときには、前回検出された第２のコードルート、第２のコードタイプ及びベースルートの有無に応じて、今回の第２のコードルート、第２のコードタイプ及び／又はベースルートの有無を決定する請求項４記載の電子楽器のコード検出装置。
【請求項１５】
前記第２のコード検出部は、前回検出された第２のコードタイプがｍ♯５であり、今回検出された第１のコードタイプがディミニッシュであり、今回検出された第１のコードルートが前記検出された第２のコードルートより９半音高く、今回検出されたベースルートが前回検出された第２のコードルートと同じときには、前回検出された第２のコードルート及び第２のコートタイプに応じて、今回の第２のコードタイプを決定する請求項４記載の電子楽器のコード検出装置。
【請求項１６】
前記第２のコード検出部は、前回検出された第２のコードタイプがｍ♯５であり、今回検出された第１のコードタイプがディミニッシュであり、今回検出された第１のコードルートが前記検出された第２のコードルートより９半音高く、今回検出されたベースルートが前回検出された第２のコードルートと同じときには、今回の第２のコードルートを前回の第２のコードルートと同じにし、今回の第２のコードタイプをｍ６にし、ベースルートを無しにする請求項４記載の電子楽器のコード検出装置。
【請求項１７】
前記第２のコード検出部は、前回検出された第２のコードタイプがマイナーであり、今回検出された第１のコードタイプがメジャーであり、今回検出された第１のコードルートが前記検出された第２のコードルートより８半音高く、今回検出されたベースルートが前回検出された第２のコードルートと同じときには、前回検出された第２のコードルート及び第２のコートタイプに応じて、今回の第２のコードルート及び第２のコードタイプを決定する請求項４記載の電子楽器のコード検出装置。
【請求項１８】
前記第２のコード検出部は、前回検出された第２のコードタイプがマイナーであり、今回検出された第１のコードタイプがメジャーであり、今回検出された第１のコードルートが前記検出された第２のコードルートより８半音高く、今回検出されたベースルートが前回検出された第２のコードルートと同じときには、今回の第２のコードルートを前回の第２のコードルートと同じにし、今回の第２のコードタイプをｍ♯５にし、ベースルートを無しにする請求項４記載の電子楽器のコード検出装置。
【請求項１９】
前記第２のコード検出部は、前回検出された第２のコードタイプがマイナーであり、今回検出された第１のコードタイプがマイナーであり、今回検出された第１のコードルートが前記検出された第２のコードルートと同じであり、今回検出されたベースルートが前回検出されたベースルートと同じ又は半音高いときには、前回検出された第２のコードルート、第２のコートタイプ及びベースルートに応じて、今回の第２のコードルート、第２のコードタイプ及びベースルートの有無を決定する請求項４記載の電子楽器のコード検出装置。
【請求項２０】
前記第２のコード検出部は、前回検出された第２のコードタイプがマイナーであり、今回検出された第１のコードタイプがマイナーであり、今回検出された第１のコードルートが前記検出された第２のコードルートと同じであり、今回検出されたベースルートが前回検出されたベースルートと同じ又は半音高いときには、今回の第２のコードルートを前回の第２のコードルートと同じにし、今回の第２のコードタイプをマイナーにし、ベースルートを有りにする請求項４記載の電子楽器のコード検出装置。
【請求項２１】
演奏操作用の演奏鍵盤を有する電子楽器のコード検出方法であって、
前記演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出ステップを有する電子楽器のコード検出方法。
【請求項２２】
演奏操作用の演奏鍵盤を有する電子楽器のコード検出プログラムであって、
前記演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出手順をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器のコード検出技術に関し、特に鍵盤操作に応じてコード検出する技術に関する。
【０００２】
【従来の技術】
電子楽器には、手操作用の手鍵盤と足操作用の足鍵盤とを有するものがある。手鍵盤は、２段鍵盤になっており、上鍵盤でメロディラインを演奏し、下鍵盤でコードラインを演奏する。自動伴奏機能を有する電子楽器では、下鍵盤及び足鍵盤の操作に応じてコード検出を行い、検出されたコードに応じた自動伴奏が行われる。コード検出方法の一例は、特公平５−８４９２０に記載されている。
【０００３】
コード検出されるコードには、分数コード（例えばＣ／Ｂ）と分数コードではない通常のコードとがある。分数コードは、分子のコードが楽譜の上パート（手鍵盤に相当）であるコードパートのコードであり、分母のコードが楽譜の下パート（足鍵盤に相当）であるベースパートのベースルートである。
【０００４】
電子楽器では、コードルート及びコードタイプを検出する。検出されたコードルートと足鍵盤で押された鍵との音名が同じときには、分数コードではない通常のコードとして検出される。逆に、検出されたコードルートと足鍵盤で押された鍵との音名が異なるときには、分数コード（例えばＣ／Ｂ）として検出される。しかし、この方法により検出されたコードは完全ではなく、結果的に不適切なコードとして検出されてしまうことがある。この問題を解決する技術として、本発明者の発明による特開２００２−１９６７５５号公報が開示されている。
【０００５】
【発明が解決しようとする課題】
オーギュメント又はディミニッシュ等の転回コードは、同じ音高の間隔でコード構成音が構成されているため、コードルートを特定することができない。例えば、Ｃｄｉｍのコードの場合、ドミ♭ファ♯ラで構成される。この場合、４つの構成音がすべてコードルートになりえて、演奏者の意思に応じてコードルートが決定する。電子楽器では、コード構成音中の最低音をコードルートとしたり、足鍵盤の音をコードルートとして機械的に決定する。そのため、演奏者の意図とは異なるコードルートが決定されてしまうことがある。
【０００６】
例えば、Ｃ→Ｃａｕｇ→Ｆの順番でコード演奏を行う場合、特にオルガン等の場合、実際はドミソ→ドミソ♯→ドファラよりも、ソドミ→ソ♯ドミ→ラドファのような転回形で演奏することが多い（本明細書ではコード構成音中の最低音を最左に記す）。この場合、電子楽器でコード検出を行うと、Ｃ→Ｇ♯ａｕｇ→Ｆと検出されてしまい、演奏者の望んだ演奏を行うことができない。
【０００７】
また、足鍵盤を交えた検出を行う場合も、コードがＣ→Ｃａｕｇ→Ｆの場合、ベースルートは、Ｃ→Ｅ→Ｆと演奏することが一般的である。本来ならば、Ｃ→Ｃａｕｇ／Ｅ→Ｆとして検出するのが適切であるが、Ｃ→Ｅａｕｇ→Ｆと誤って検出されてしまい、好ましいコード検出ができない。
【０００８】
また、このコード進行に対応するためにソ♯ドミの転回形もＣａｕｇと検出するようにすると、Ｇ♯ａｕｇが検出できなくなり、今度は曲のキーが変わったときに、対応できなくなるという問題がある。
【０００９】
また、オーギュメント及びディミニッシュ以外でも、Ｂ♭及びＤｍ♯５は同じ構成音のコードであるため、いずれのコードであるのか特定できず、使用頻度で特定するしかないという問題がある。例えば、ファシ♭レと弾くと、一般的にはＢ♭であるが、Ｄｍ（ファラレ）からファシ♭（ラ♯）レと移動するクリシェの場合は、Ｂ♭よりもＤｍ♯５の方が適しているという問題がある。
【００１０】
手鍵盤でラドミを押鍵し、足鍵盤でファ♯を押鍵すると、一般的にはＦ♯ｍ７♭５と検出するのが適している。しかし、手鍵盤でＡｍ（ラドミ）を押さえたまま、足鍵盤でＡ→Ｇ♯→Ｇ→Ｆ♯と弾くベースによるクリシェの場合も、Ａｍ→Ａｍ／Ｇ♯→Ａｍ／Ｇ→Ｆ♯ｍ７♭５となり、この場合に限っては、Ｆ♯ｍ７♭５よりもＡｍ／Ｆ♯と検出される方が好ましい。
【００１１】
本発明の目的は、演奏の流れに応じて、演奏者が意図するコードを検出することである。
本発明の他の目的は、オーギュメントにおいて最も適したコードルートを選択することである。
本発明のさらに他の目的は、ディミニッシュにおいて最も適したコードルートを選択することである。
本発明のさらに他の目的は、クリシェにおいて最も適したコードを選択することである。
【００１２】
【課題を解決するための手段】
本発明の一観点によれば、演奏操作用の演奏鍵盤と、演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出手段とを有する電子楽器のコード検出装置が提供される。
本発明の他の観点によれば、演奏操作用の演奏鍵盤を有する電子楽器のコード検出方法であって、演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出ステップを有する電子楽器のコード検出方法が提供される。
本発明のさらに他の観点によれば、演奏操作用の演奏鍵盤を有する電子楽器のコード検出プログラムであって、演奏鍵盤の操作及び前回検出されたコードに応じて今回のコードを検出するコード検出手順をコンピュータに実行させるためのプログラムが提供される。
【００１３】
本発明によれば、演奏鍵盤の操作のみならず前回検出されたコードに応じて、今回のコードを検出するので、演奏の流れに応じた演奏者が意図するコードを検出することができる。
【００１４】
【発明の実施の形態】
図１は、本発明の実施形態による電子楽器の概略構成例を示す。電子楽器は、手操作用の手鍵盤と足操作用の足鍵盤２とを有する。手鍵盤は、２段鍵盤であり、メロディラインを演奏するための上鍵盤とコードラインを演奏するための下鍵盤１を有する。
【００１５】
下鍵盤１で押鍵操作がされると下鍵盤１はキーオンイベントを出力し、下鍵盤１で離鍵操作がされると下鍵盤１はキーオフイベントを出力する。コード決定処理手段４は、下鍵盤１のキーオン／オフイベントに応じて、仮の下鍵盤コードルート及び仮の下鍵盤コードタイプを検出する。
【００１６】
足鍵盤２で押鍵操作がされると足鍵盤２はキーオンイベントを出力し、足鍵盤２で離鍵操作がされると足鍵盤２はキーオフイベントを出力する。コード決定処理手段４は、足鍵盤２のキーオン／オフイベントに応じて、仮の足鍵盤ベースルートを検出する。
【００１７】
次に、コード決定処理手段４は、上記の仮の下鍵盤コードルート、下鍵盤コードタイプ、足鍵盤ベースルート及び前回検出されたコードに応じて、真のコードルート及び真のコードタイプを決定すると共に、ベースルートの有無を決定する。具体的には、オーギュメント、ディミニッシュ及びクリシェの場合に、前回検出されたコードに応じてコード検出を行う。ベースルートが有るときには、上記の仮の足鍵盤ベースルートが真のベースルートとして決定され、分数コードとなる。分数コードの分母がベースルートになり、分子が上記の真のコードルートになる。ベースルートが無しと決定されると、分数コードではない通常のコードとなる。
【００１８】
スタイル番号スイッチ３は、例えばロックやジャズ等の自動伴奏のスタイルを選択するためのスイッチであり、そのスイッチ操作に応じてスタイル番号を出力する。
【００１９】
自動伴奏発音処理手段５は、上記のスタイル番号に応じた自動伴奏パターンを読み出し、上記の真のコードルート、真のコードタイプ及びベースルートに応じて自動伴奏を発音する。自動伴奏は、例えばドラム、コード（ピアノ音やギター音等）、ベースの所定パターンを繰り返し発音することにより行う。コード伴奏は上記の真のコードルート及びコードタイプに応じて発音され、ベース伴奏は上記のベースルートに応じて発音される。
【００２０】
図２は、図１のコード決定処理手段４の具体的構成を示す。ここでは、オーギュメント、ディミニッシュ及びクリシェ以外の一般のコードのコード検出方法を説明する。下鍵盤で３音以上が同時に押鍵されると、その押鍵に基づくコードルート及びコードタイプを検出することが可能である。しかし、下鍵盤で１音又は２音のみの押鍵がされると、その押鍵に基づくコードルート及びコードタイプを検出することが困難であるので、下鍵盤と足鍵盤の操作に応じてコード検出を行う。
【００２１】
まず、下鍵盤で３音以上が同時に押鍵された場合を説明する。第１のキーオンビットマップ作成手段１１は、下鍵盤のキーオン／オフイベントを入力すると、下鍵盤で押鍵されてキーオンになっているすべてのキーナンバ（音高）を第１のキーオンビットマップとして作成する。その際、キーオンになっているキーナンバのビットを１にし、キーオフになっているキーナンバのビットを０にする。
【００２２】
第２のキーオンビットマップ作成手段１２は、上記の第１のキーオンビットマップのうちのコード検出範囲にあるキーナンバのみを検出して、第２のキーオンビットマップを作成する。
【００２３】
仮コードルート作成手段２０は、上記の第２のキーオンビットマップのうちの最低音を仮のコードルートとして検出する。一方、第３のキーオンビットマップ作成手段１３は、上記の第２のキーオンビットマップを基に１オクターブの範囲内に圧縮された第３のキーオンビットマップを作成する。すなわち、上記の仮のコードルートとなる最低音から始まる１オクターブ内の音名として表現する。その際、仮のコードルートとなる最低音は必ずビットが１になることがわかっているので、その最低音のビットを省略して１１ビットで第３のキーオンビットマップを作成することができる。
【００２４】
アドレス作成手段１４は、上記の第３のキーオンビットマップを基に、テーブルを参照するために必要なアドレスを作成する。テーブル１５は、図３に示すように、上記のオクターブマップアドレス１０１に応じて、コードルートシフト値１０２及び下鍵盤コードタイプ１０３を出力する。決定手段１６は、仮コードルート作成手段２０から仮のコードルートを入力し、テーブル１５からコードルートシフト値１０２及び下鍵盤コードタイプ１０３を入力する。そして、決定手段１６は、仮のコードルートにコードルートシフト値１０２を加算して修正し、下鍵盤コードルートを記憶手段２１に記録し、下鍵盤コードタイプ１０３を記憶手段２２に記録する。
【００２５】
図３は、テーブル１５の一部の内容例を示す。アドレスパターン１１１は、例えば、構成音がシドミであり、仮のコードルートが最低音のＢになる。この仮のコードルートにシフト値１０２として「１」を加算することにより、下鍵盤コードルートはＣになる。コードタイプ１０３はＭ７になる。また、下鍵盤でドミソ♯を押鍵するとＣａｕｇが検出され、下鍵盤でソ♯ドミを押鍵するとＧ♯ａｕｇが検出される。
【００２６】
図２において、コードルート記憶手段２１は、上記の修正された下鍵盤のコードルートを記憶する。コードタイプ記憶手段２２は、上記の下鍵盤コードタイプを記憶する。ベースオフセット値作成手段２３は、足鍵盤のキーオン／オフイベントを入力し、足鍵盤のキーオンイベント内のキーナンバ（ベースルート）からコードルート記憶手段２１内の下鍵盤コードルートを減算（差分）し、ベースオフセット値を作成する。このベースオフセット値は、図４のテーブル内のベースオフセット値２０２に相当する。
【００２７】
テーブル２４は、図４に示すように、コードタイプ記憶手段２２内の下鍵盤コードタイプ２０１、及びベースオフセット値作成手段２３が作成したベースオフセット値２０２を入力し、ベースルートのオン／オフ２０３、コードルートシフト値２０４及びコードタイプ２０５を出力する。なお、図４は、テーブル２４の一部の内容例を示す。
【００２８】
決定手段２５は、テーブル２４に応じて、真のコードルート及び真のコードタイプを決定すると共に、ベースルートのオン／オフ（有無）を決定する。真のコードルートは、コードルート記憶手段２１内の下鍵盤コードルートに図４のコードルートシフト値２０４を加算したものである。真のコードタイプは、図４のコードタイプ２０５になる。ベースルートのオン／オフは、図４のベースルートのオン／オフ２０３になる。ベースルートがオン（有り）のときには、足鍵盤のキーナンバ（ベースルート）を真のベースルートにする。
【００２９】
記憶手段２６には、真のコードルート、真のコードタイプ及びベースルートのオン／オフが記憶され、ベースルートがオンのときにはベースルートも記憶される。
【００３０】
以上のように、第１のコード検出部（決定手段１６）は、変換テーブル１５を用いて、手鍵盤（下鍵盤）の操作に応じて、第１のコードルート及び第１のコードタイプを検出する。第２のコード検出部（変換テーブル２４）は、上記の検出された第１のコードルート、第１のコードタイプ及び足鍵盤の操作に応じて、第２のコードルート、第２のコードタイプ及びベースルートの有無を検出する。以下、図４の具体例を説明する。
【００３１】
（１）パターン２１１は、第１のコードタイプ２０１がメジャー（Ｍａｊｏｒ）であり、ベースオフセット値２０２が０のときであり、例えば下鍵盤で「Ｃ」のコードが検出され、足鍵盤で「Ｃ」が押鍵された場合には、第２のコードルートが「Ｃ」になり、第２のコードタイプ２０５がメジャーになる。ベースルートがオフになる。
【００３２】
（２）パターン２１２は、第１のコードタイプ２０１がメジャー（Ｍａｊｏｒ）であり、ベースオフセット値２０２が１１のときであり、例えば下鍵盤で「Ｃ」のコードが検出され、足鍵盤で「Ｂ」が押鍵された場合には、第２のコードルートが「Ｃ」になり、第２のコードタイプ２０５がメジャーになり、ベースルートがＢになる。
【００３３】
（３）パターン２１３は、第１のコードタイプ２０１がａｕｇであり、ベースオフセット値２０２が４のときであり、例えば下鍵盤で「Ｃａｕｇ」のコードが検出され、足鍵盤で「Ｅ」が押鍵された場合には、第２のコードルートが「Ｅ」になり、第２のコードタイプ２０５がａｕｇになり、ベースルートがオフになる。この場合、単純処理では、「Ｃａｕｇ／Ｅ」になってしまうが、それでは適切ではないためコードルートを修正している。さらに、下鍵盤コードルートと足鍵盤ベースルートとが異なる場合であっても、ベースルートをオフにしている。
【００３４】
（４）パターン２１４は、第１のコードタイプ２０１がａｕｇであり、ベースオフセット値２０２が８のときであり、例えば下鍵盤で「Ｃａｕｇ」のコードが検出され、足鍵盤で「Ａ♭」が押鍵された場合には、第２のコードルートが「Ａ♭」になり、第２のコードタイプ２０５がａｕｇになり、ベースルートがオフになる。この場合も、コードルートを修正し、ベースルートをオフにしている。また、例えば下鍵盤で「Ｇ♯ａｕｇ」のコードが検出され、足鍵盤で「Ｅ」が押鍵された場合には、第２のコードルートが「Ｅ」になり、第２のコードタイプ２０５がａｕｇになり、ベースルートがオフになる。
【００３５】
（５）パターン２１５は、第１のコードタイプ２０１がａｕｇであり、ベースオフセット値２０２が９のときであり、例えば下鍵盤で「Ｃａｕｇ」のコードが検出され、足鍵盤で「Ａ」が押鍵された場合には、第２のコードルートが「Ａ」になり、第２のコードタイプ２０５がｍＭ７になり、ベースルートがオフになる。この場合も、コードルート及びコードタイプを修正し、ベースルートをオフにしている。
【００３６】
（６）パターン２１６は、第１のコードタイプ２０１がａｕｇであり、ベースオフセット値２０２が１１のときであり、例えば下鍵盤で「Ｃａｕｇ」のコードが検出され、足鍵盤で「Ｂ」が押鍵された場合には、第２のコードルートが「Ｃ」になり、第２のコードタイプ２０５がａｕｇになり、ベースルートがＢになる。
【００３７】
（７）パターン２１７は、第１のコードタイプ２０１がｍ♯５であり、ベースオフセット値２０２が８のときであり、例えば下鍵盤で「Ｃｍ♯５」のコードが検出され、足鍵盤で「Ａ♭」が押鍵された場合には、第２のコードルートが「Ａ♭」になり、第２のコードタイプ２０５がΔ７になり、ベースルートがオフになる。この場合、コードルート及びコードタイプを修正し、ベースルートをオフにしている。
【００３８】
（８）パターン２１８は、第１のコードタイプ２０１がｍ♯５であり、ベースオフセット値２０２が１１のときであり、例えば下鍵盤で「Ｃｍ♯５」のコードが検出され、足鍵盤で「Ｂ」が押鍵された場合には、第２のコードルートが「Ｃ」になり、第２のコードタイプ２０５がｍ♯５になり、ベースルートがＢになる。
【００３９】
以上のように、テーブル２４は、仮の手鍵盤コードルートと仮の足鍵盤ベースルートとが同じか否かにかかわらずにベースルートの有無を決定し、仮の手鍵盤コードルートと仮の足鍵盤ベースルートとが異なるときでもベースルートが無しであると決定することがある。また、テーブル２４は、仮のコードタイプ及びベースオフセット値に応じて、仮のコードルート及びコードタイプとは異なる真のコードルート及びコードタイプを出力することがある。
【００４０】
次に、図２において、下鍵盤で１音又は２音のみの押鍵がされた場合に、下鍵盤と足鍵盤の操作に応じてコード検出を行う方法を説明する。第４のキーオンビットマップ作成手段１８は、第２のキーオンビットマップ作成手段１２が作成した第２のキーオンビットマップ及び足鍵盤のキーオン／オフイベントを基に、下鍵盤及び足鍵盤のコード検出範囲にあるキーナンバのみを検出して、第４のキーオンビットマップを作成する。
【００４１】
仮コードルート作成手段２０は、足鍵盤の１鍵（例えば最低音）を仮のコードルートとして検出する。一方、第５のキーオンビットマップ作成手段１９は、上記の第４のキーオンビットマップを基に１オクターブの範囲内に圧縮された第５のキーオンビットマップを作成する。その際、仮のコードルートとなる最低音は必ずビットが１になることがわかっているので、その最低音のビットを省略して１１ビットで第５のキーオンビットマップを作成することができる。
【００４２】
アドレス作成手段１４は、上記の第５のキーオンビットマップを基に、テーブルを参照するために必要なアドレスを作成する。テーブル１５は、上記のアドレスに応じて、下鍵盤コードタイプ１０３及びコードシフト値１０２を出力する。決定手段１６は、仮コードルート作成手段２０から仮のコードルートを入力し、テーブル１５から下鍵盤コードタイプ１０３及びコードルートシフト値１０２を入力する。そして、決定手段１６は、仮のコードルートにシフト値１０２を加算して修正し、下鍵盤コードルート及び下鍵盤コードタイプを記憶手段１７に記憶させる。この場合、ベースルートはオフになる。
【００４３】
図５は、図２の決定手段１６がコードタイプとしてオーギュメント又はディミニッシュを決定した場合に、その後に行うコードルートの変換を説明する。コードタイプ３０１は、前回決定された真のコードタイプであり、任意のタイプでよい。コード３０２は、今回決定手段１６で決定された仮のコードであり、コードルート３１１、コードタイプ３１２及びベースルート３１３を含む。コードルート３１１は、今回の仮のコードルートから前回の真のコードルートを引いた半音単位の値を示す。コード３０３は、今回変換により決定される真のコードであり、コードルート３２１、コードタイプ３２２及びベースルート３２３を含む。コードルート３２１は、前回の真のコードルートに加算する半音単位の値を示す。
【００４４】
まず、オーギュメントの場合を説明する。今回検出された仮のコードタイプ３１２がオーギュメントであり、今回検出された仮のコードルート３１１が前回検出された真のコードルートと同じか、４半音又は８半音高いときには、今回の真のコードルート３２１を前回の真のコードルートと同じにし、今回の真のコードタイプ３２２をオーギュメントにする。ベースルート３２３は、足鍵盤の音と前回の真のコードルートとが異なれば、ベースルート有りにし、足鍵盤の音を採用する。
【００４５】
次に、ディミニッシュの場合を説明する。今回検出された仮のコードタイプ３１２がディミニッシュであり、今回検出された仮のコードルート３１１が前回検出された真のコードルートより１半音、４半音、７半音又は１０半音高いときには、今回の真のコードルート３２１を前回の真のコードルートに半音加算したコードルートにし、今回の真のコードタイプ３２２をディミニッシュにする。ベースルート３２３は、足鍵盤の音と前回の真のコードルートより半音高い音とが異なれば、ベースルート有りにし、足鍵盤の音を採用する。以下、より詳細な処理方法を説明する。
【００４６】
図６〜図８は、ほぼ同時期に押された鍵を１つのコードとして検出するために、検出されたコードをテンポラリコードとして一時記憶し、一定時間経過後にそのテンポラリコードを真のコードとして記憶する。以下、その詳細な説明を行う。
【００４７】
図６は、初期化処理を示すフローチャートである。ステップＳ４０１では、コードＣＣＨＤ（コードルート、コードタイプ及びベースルートの有無を含む）を０ｘｆｆに初期化する。ステップＳ４０２では、テンポラリコードＴＣＨＤ（コードルート、コードタイプ及びベースルートの有無を含む）を０ｘｆｆに初期化する。ステップＳ４０３では、カウンタを０に初期化する。以上で、処理を終了する。
【００４８】
図７は、コード検出後に行う処理を示すフローチャートである。ステップＳ５０１では、後に説明する図９及び図１０等により検出されたコードをテンポラリコードＴＣＨＤにセットする。ステップＳ５０２では、カウンタに例えば４００ｍｓの値をセットする。以上で、処理を終了する。
【００４９】
図８は、タイマ割り込み処理を示すフローチャートであり、一定時間間隔で定期的に行われる処理である。ステップＳ６０１では、ステップＳ５０２でカウンタがセットされているか否かをチェックする。セットされていればステップＳ６０２へ進み、セットされていなければ処理を終了する。ステップＳ６０２では、カウンタの値をディクリメントする。次に、ステップＳ６０３では、カウンタ値が０か否かをチェックする。０であればステップＳ６０４へ進み、０でなければ処理を終了する。ステップＳ６０４では、テンポラリコードＴＣＨＤを真のコードＣＣＨＤとして記憶する。すなわち、例えば４００ｍｓ経過後にテンポラリコードＴＣＨＤが真のコードＣＣＨＤとして記憶される。以上で、処理を終了する。
【００５０】
図９及び図１０は、図２の決定手段１６で決定されたコードタイプがオーギュメント又はディミニッシュのときの処理であり、決定手段１６での決定後の処理を示すフローチャートである。まず、ステップＳ７０１では、コードルートｃｈｋ＿ｒｏｏｔ、コードタイプｃｈｋ＿ｔｙｐｅ及びベースルートｃｈｋ＿ｂｓ＿ｒｏｏｔを０ｘｆｆに初期化する。
【００５１】
次に、ステップＳ７０２では、決定手段１６が決定したコードタイプｄ＿ｔｙｐｅがオーギュメントか否かをチェックする。オーギュメントであればステップＳ７０３へ進み、オーギュメントでなければステップＳ７１１へ進む。ステップ７０３では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔと同じか否かをチェックする。同じであればステップＳ７０６へ進み、同じでなければステップＳ７０４へ進む。ステップ７０４では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより４半音高いルートと同じか否かをチェックする。同じであればステップＳ７０６へ進み、同じでなければステップＳ７０５へ進む。ステップ７０５では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより８半音高いルートと同じか否かをチェックする。同じであればステップＳ７０６へ進み、同じでなければステップＳ７１１へ進む。
【００５２】
ステップＳ７０６では、足鍵盤を押鍵することにより発生するペダルキーオンイベントがあるか否かをチェックする。ペダルキーオンイベントがあればステップＳ７０８へ進み、なければステップＳ７０７へ進む。ステップＳ７０７では、前回検出された真のコードルートｃ＿ｒｏｏｔを真のコードルートｏ＿ｒｏｏｔにセットする。そして、真のコードタイプｏ＿ｔｙｐｅにオーギュメントをセットする。そして、真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しをセットする。その後、処理を終了する。
【００５３】
ステップＳ７０８では、上記のペダルキーオンイベントに対応するキーナンバ（音高）を取得し、このキーナンバを１２で割った余りをキーナンバとする。すなわち、キーナンバを１オクターブの０〜１１の値の音名として記憶し、ベースルートｐ＿ｒｏｏｔとする。次に、ステップＳ７０９では、ベースルートｐ＿ｒｏｏｔと前回検出された真のコードルートｃ＿ｒｏｏｔとが同じか否かをチェックする。同じであればステップＳ７１１へ進み、同じでなければステップＳ７１０へ進む。ステップＳ７１０では、前回検出された真のコードルートｃ＿ｒｏｏｔをコードルートｃｈｋ＿ｒｏｏｔにセットする。そして、コードタイプｃｈｋ＿ｔｙｐｅにオーギュメントをセットする。そして、今回押鍵されたベースルートｐ＿ｒｏｏｔをベースルートｃｈｋ＿ｂｓ＿ｒｏｏｔにセットする。その後、ステップＳ７２１へ進む。
【００５４】
ステップＳ７１１では、決定手段１６が決定したコードタイプｄ＿ｔｙｐｅがディミニッシュか否かをチェックする。ディミニッシュであればステップＳ７１２へ進み、ディミニッシュでなければステップＳ７２１へ進む。ステップＳ７１２では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより半音高いルートと同じか否かをチェックする。同じであればステップＳ７１６へ進み、同じでなければステップＳ７１３へ進む。ステップＳ７１３では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより４半音高いルートと同じか否かをチェックする。同じであればステップＳ７１６へ進み、同じでなければステップＳ７１４へ進む。ステップＳ７１４では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより７半音高いルートと同じか否かをチェックする。同じであればステップＳ７１６へ進み、同じでなければステップＳ７１５へ進む。ステップＳ７１５では、決定手段１６が決定した仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより１０半音高いルートと同じか否かをチェックする。同じであればステップＳ７１６へ進み、同じでなければステップＳ７２１へ進む。
【００５５】
ステップＳ７１６では、足鍵盤を押鍵することにより発生するペダルキーオンイベントがあるか否かをチェックする。ペダルキーオンイベントがあればステップＳ７１８へ進み、なければステップＳ７１７へ進む。ステップＳ７１７では、前回検出された真のコードルートｃ＿ｒｏｏｔより半音高いルートを真のコードルートｏ＿ｒｏｏｔにセットする。そして、真のコードタイプｏ＿ｔｙｐｅにディミニッシュをセットする。そして、真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しをセットする。その後、処理を終了する。
【００５６】
ステップＳ７１８では、上記のペダルキーオンイベントに対応するキーナンバ（音高）を取得し、このキーナンバを１２で割った余りをキーナンバとする。すなわち、キーナンバを１オクターブの０〜１１の値の音名として記憶し、ベースルートｐ＿ｒｏｏｔとする。次に、ステップＳ７１９では、ベースルートｐ＿ｒｏｏｔと前回検出された真のコードルートｃ＿ｒｏｏｔより半音高いルートとが同じか否かをチェックする。同じであればステップＳ７２１へ進み、同じでなければステップＳ７２０へ進む。ステップＳ７２０では、前回検出された真のコードルートｃ＿ｒｏｏｔより半音高いルートをコードルートｃｈｋ＿ｒｏｏｔにセットする。そして、コードタイプｃｈｋ＿ｔｙｐｅにディミニッシュをセットする。そして、今回押鍵されたベースルートｐ＿ｒｏｏｔをベースルートｃｈｋ＿ｂｓ＿ｒｏｏｔにセットする。その後、ステップＳ７２１へ進む。
【００５７】
ステップＳ７２１では、図２の決定手段２５により変換テーブル２４を用いた変換を行い、コードルートｔ＿ｒｏｏｔ、コードタイプｔ＿ｔｙｐｅ及びベースルートの有無を決定する。この変換は、図２に示したように、決定手段２５は、決定手段１６が決定したコードに応じて変換を行い、上記のコードルートｃｈｋ＿ｒｏｏｔ、コードタイプｃｈｋ＿ｔｙｐｅ及びベースルートｃｈｋ＿ｂｓ＿ｒｏｏｔを用いない。
【００５８】
ステップＳ７２２では、コードルートｃｈｋ＿ｒｏｏｔが初期値（０ｘｆｆ）か否かをチェックする。初期値であればステップＳ７２６へ進み、初期値でなければステップＳ７２３へ進む。ステップＳ７２３では、コードタイプｔ＿ｔｙｐｅ及びｃｈｋ＿ｔｙｐｅの両方がオーギュメントか否かをチェックする。両方がオーギュメントであればステップＳ７２５へ進み、そうでなければステップＳ７２４へ進む。ステップＳ７２４では、コードタイプｔ＿ｔｙｐｅ及びｃｈｋ＿ｔｙｐｅの両方がディミニッシュか否かをチェックする。両方がディミニッシュであればステップＳ７２５へ進み、そうでなければステップＳ７２６へ進む。ステップＳ７２５では、コードルートｃｈｋ＿ｒｏｏｔを真のコードルートｏ＿ｒｏｏｔにセットする。そして、コードタイプｃｈｋ＿ｔｙｐｅ（オーギュメント又はディミニッシュ）を真のコードタイプｏ＿ｔｙｐｅにセットする。そして、ベースルートｃｈｋ＿ｂｓ＿ｒｏｏｔを真のベースルートｏ＿ｂｓ＿ｒｏｏｔにセットする。その後、処理を終了する。
【００５９】
ステップＳ７２６では、コードルートｔ＿ｒｏｏｔを真のコードルートｏ＿ｒｏｏｔにセットし、コードタイプｔ＿ｔｙｐｅを真のコードタイプｏ＿ｔｙｐｅにセットする。次に、ステップＳ７２７では、ステップＳ７２１の変換によりベースルートが有りと決定されたか否かをチェックする。ベースルート有りであればステップＳ７２９へ進み、ベースルート無しであればステップＳ７２８へ進む。ステップＳ７２８では、真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しを設定する。ステップＳ７２９では、真のベースルートｏ＿ｂｓ＿ｒｏｏｔに押鍵によるベースルートｐ＿ｒｏｏｔを設定する。以上で、処理を終了する。
【００６０】
以上により、図５の変換テーブルに従い、真のコードルートｏ＿ｒｏｏｔ、真のコードタイプｏ＿ｔｙｐｅ及び真のベースルートｏ＿ｂｓ＿ｒｏｏｔが決定する。このコードは、図６〜図８の処理に従い、例えば４００ｍｓ経過後にコードＣＣＨＤにセットされる。次のコード検出の際には、このコードＣＣＨＤが前回検出された真のコードとして処理される。以下、具体例を説明する。
【００６１】
（１）前回検出されたコードがＣであり、今回下鍵盤でソ♯ドミを押鍵した場合を説明する。ソ♯ドミは、Ｃａｕｇ、Ｅａｕｇ及びＧ♯ａｕｇのいずれにもなりえる。図２の決定手段１６は、ソ♯ドミの最低音がＧ♯であることからＧ♯ａｕｇを決定する。ステップＳ７０２では、コードタイプｄ＿ｔｙｐｅがオーギュメントであると判断される。ステップＳ７０５では、コートルートｄ＿ｒｏｏｔ（＝Ｇ♯）と前回のコードルートｃ＿ｒｏｏｔ（＝Ｃ）より８半音高いルートと同じであると判断される。ステップＳ７０７では、真のコードとしてＣａｕｇが決定される。これにより、Ｃ→Ｃａｕｇの適切なコード進行が検出される。
【００６２】
（２）前回検出されたコードがＦであり、今回下鍵盤でドミ♭ファ♯ラを押鍵した場合を説明する。ドミ♭ファ♯ラは、Ｃｄｉｍ、Ｅ♭ｄｉｍ、Ｆ♯ｄｉｍ及びＡｄｉｍのいずれにもなりえる。図２の決定手段１６は、ドミ♭ファ♯ラの最低音がＣであることからＣｄｉｍを決定する。ステップＳ７１１では、コードタイプｄ＿ｔｙｐｅがディミニッシュであると判断される。ステップＳ７１４では、コートルートｄ＿ｒｏｏｔ（＝Ｃ）と前回のコードルートｃ＿ｒｏｏｔ（＝Ｆ）より７半音高いルートと同じであると判断される。ステップＳ７１７では、真のコードとしてＦ♯ｄｉｍが決定される。これにより、Ｆ→Ｆ♯ｄｉｍの適切なコード進行が検出される。
【００６３】
（３）前回検出されたコードがＣであり、今回下鍵盤でソ♯ドミを押鍵して足鍵盤でミを押鍵した場合を説明する。ソ♯ドミは、Ｃａｕｇ、Ｅａｕｇ及びＧ♯ａｕｇのいずれにもなりえる。図２の決定手段１６は、ソ♯ドミの最低音がＧ♯であることからＧ♯ａｕｇを決定する。ステップＳ７０２では、コードタイプｄ＿ｔｙｐｅがオーギュメントであると判断される。ステップＳ７０５では、コートルートｄ＿ｒｏｏｔ（＝Ｇ♯）と前回のコードルートｃ＿ｒｏｏｔ（＝Ｃ）より８半音高いルートと同じであると判断される。ステップＳ７１０では、コードとしてＣａｕｇ／Ｅが決定される。次に、ステップＳ７２１では、図２の決定手段２５がＧ♯ａｕｇ／Ｅを基にＥａｕｇ（図４のパターン２１４）を決定する。ステップＳ７２３では、両方のコードタイプがオーギュメントであると判断される。ステップＳ７２５では、真のコードとしてＣａｕｇ／Ｅが決定される。これにより、Ｃ→Ｃａｕｇ／Ｅの適切なコード進行が検出される。ステップＳ７１０及びステップＳ７２１の両方の変換において、オーギュメントが検出されたときには、オーギュメントに決定してよいので、ステップＳ７１０による変換結果を優先採用する。
【００６４】
（４）前回検出されたコードがＣであり、今回下鍵盤でドミソ♯を押鍵して足鍵盤でラを押鍵した場合を説明する。ドミソ♯は、Ｃａｕｇ、Ｅａｕｇ及びＧ♯ａｕｇのいずれにもなりえる。図２の決定手段１６は、ドミソ♯の最低音がＣであることからＣａｕｇを決定する。ステップＳ７０２では、コードタイプｄ＿ｔｙｐｅがオーギュメントであると判断される。ステップＳ７０３では、コートルートｄ＿ｒｏｏｔ（＝Ｃ）と前回のコードルートｃ＿ｒｏｏｔ（＝Ｃ）とが同じであると判断される。ステップＳ７１０では、コードとしてＣａｕｇ／Ａが決定される。次に、ステップＳ７２１では、図２の決定手段２５がＣａｕｇ／Ａを基にＡｍＭ７（図４のパターン２１５）を決定する。ステップＳ７２３では、両方のコードタイプが共にオーギュメントではないと判断される。ステップＳ７２６〜Ｓ７２８では、真のコードとしてＡｍＭ７が決定される。これにより、ＡｍＭ７の適切なコード検出が行われる。ステップＳ７１０でオーギュメントと検出され、ステップＳ７２１でオーギュメントでないと検出された場合、オーギュメントは不適切であることを意味するので、ステップＳ７２１による変換結果を採用する。
【００６５】
図１１は、演奏者の奏法がクリシェである場合のコード変換を説明する。クリシェは、同一のコードが連続している部分に装飾的に加えられる慣用的なラインを指し、作・編曲上の技法の一つであり、コード自体を変化させるものではなく、同じコードの中で半音又は全音によるスムーズなラインを設定し、それによって同一コードの連続による退屈さからの脱出を図るものである。
【００６６】
コードタイプ８０１は、前回決定された真のコードタイプである。コード８０２は、今回決定手段１６で決定された仮のコードであり、コードルート８１１、コードタイプ８１２及びベースルート８１３を含む。コードルート８１１は、今回の仮のコードルートから前回の真のコードルートを引いた半音単位の値を示す。コード８０３は、今回変換により決定される真のコードであり、コードルート８２１、コードタイプ８２２及びベースルート８２３を含む。コードルート８２１は、前回の真のコードルートに加算する半音単位の値を示す。
【００６７】
まず、クリシェパターン８３１の場合を説明する。前回決定された真のコードタイプがｍ♯５の場合の処理である。今回検出された仮のコードタイプ８１２がディミニッシュであり、今回検出された仮のコードルート８１１が前回検出された真のコードルートより９半音高く、今回検出されたベースルート８１３が前回検出された真のコードルートと同じであるときには、今回の真のコードルート８２１を前回の真のコードルートと同じにし、今回の真のコードタイプ８２２をｍ６にし、今回のベースルート８２３をベースルート無しにする。例えば、Ｄｍ♯５→Ｄｍ６の適切なクリシェを検出することができ、Ｄｍ♯５→Ｄｄｉｍの不適切なコード検出をなくすことができる。ただし、クリシェ以外の場合は、Ｄｄｉｍと検出するのが適切である。Ｄｍ６及びＤｄｉｍは、構成音が同じであるが、前回のコードを参照することにより、適切なコードを選択できる。
【００６８】
次に、クリシェパターン８３２の場合を説明する。前回決定された真のコードタイプがマイナーの場合の処理である。今回検出された仮のコードタイプ８１２がメジャーであり、今回検出された仮のコードルート８１１が前回検出された真のコードルートより８半音高く、今回検出されたベースルート８１３が前回検出された真のコードルートと同じであるときには、今回の真のコードルート８２１を前回の真のコードルートと同じにし、今回の真のコードタイプ８２２をｍ♯５にし、今回のベースルート８２３をベースルート無しにする。例えば、Ｄｍ→Ｄｍ♯５の適切なクリシェを検出することができ、Ｄｍ→Ｂ♭／Ｄの不適切なコード検出をなくすことができる。ただし、クリシェ以外の場合は、Ｂ♭／Ｄと検出するのが適切である。Ｄｍ♯５及びＢ♭／Ｄは、構成音が同じであるが、前回のコードを参照することにより、適切なコードを選択できる。
【００６９】
次に、クリシェパターン８３３の場合を説明する。前回決定された真のコードタイプがマイナーの場合の処理である。今回検出された仮のコードタイプ８１２がマイナーであり、今回検出された仮のコードルート８１１が前回検出された真のコードルートと同じであり、今回検出されたベースルート８１３が前回検出された真のベースルートと同じか半音高いときには、今回の真のコードルート８２１を前回の真のコードルートと同じにし、今回の真のコードタイプ８２２をマイナーにし、今回のベースルート８２３をベースルート有り（今回の足鍵盤の音をベースルートにする）にする。例えば、Ａｍ／Ｇ→Ａｍ／Ｆ♯の適切なクリシェを検出することができ、Ａｍ／Ｇ→Ｆ♯ｍ７♭５の不適切なコード検出をなくすことができる。ただし、クリシェ以外の場合は、Ｆ♯ｍ７♭５と検出するのが適切である。Ａｍ／Ｆ♯及びＦ♯ｍ７♭５は、構成音が同じであるが、前回のコードを参照することにより、適切なコードを選択できる。
【００７０】
クリシェの場合も、上記の図６〜図８の処理を行う。クリシェのコード検出処理手順を、以下説明する。図１２及び図１３は、図２の決定手段１６でコード決定された後のクリシェコード検出処理を示すフローチャートである。
【００７１】
まず、ステップＳ９０１では、足鍵盤の押鍵操作により発生するペダルキーオンイベントがあるか否かをチェックする。ペダルキーオンイベントがあればステップＳ９０２へ進み、なければステップＳ９１８へ進む。ステップＳ９０２では、図２の決定手段１６で決定された仮のコードタイプｄ＿ｔｙｐｅがメジャーか否かをチェックする。メジャーであればステップＳ９０３へ進み、メジャーでなければステップＳ９０７へ進む。ステップＳ９０３では、図２の決定手段１６で決定された仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより８半音高いルートと同じか否かをチェックする。同じであればステップＳ９０４へ進み、異なればステップＳ９０７へ進む。ステップＳ９０４では、前回検出された真のコードタイプｃ＿ｔｙｐｅがマイナーか否かをチェックする。マイナーであればステップＳ９０５へ進み、マイナーでなければステップＳ９０７へ進む。ステップＳ９０５では、上記のペダルキーオンイベント（ステップＳ９０１）内のキーナンバであるベースルートｄ＿ｂａｓｓが前回の真のコードルートｃ＿ｒｏｏｔと同じか否かをチェックする。同じであればステップＳ９０６へ進み、異なればステップＳ９０７へ進む。ステップＳ９０６では、前回の真のコードルートｃ＿ｒｏｏｔを今回の真のコードルートｏ＿ｒｏｏｔにセットする。そして、今回の真のコードタイプｏ＿ｔｙｐｅにｍ♯５をセットする。そして、今回の真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しをセットする。この処理は、図１１のクリシェパターン８３２の処理である。その後、処理を終了する。
【００７２】
ステップＳ９０７では、図２の決定手段１６で決定された仮のコードタイプｄ＿ｔｙｐｅがディミニッシュか否かをチェックする。ディミニッシュであればステップＳ９０８へ進み、ディミニッシュでなければステップＳ９１２へ進む。ステップＳ９０８では、図２の決定手段１６で決定された仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔより９半音高いルートと同じか否かをチェックする。同じであればステップＳ９０９へ進み、異なればステップＳ９１２へ進む。ステップＳ９０９では、前回検出された真のコードタイプｃ＿ｔｙｐｅがｍ♯５か否かをチェックする。ｍ♯５であればステップＳ９１０へ進み、ｍ♯５でなければステップＳ９１２へ進む。ステップＳ９１０では、上記のペダルキーオンイベント（ステップＳ９０１）内のキーナンバであるベースルートｄ＿ｂａｓｓが前回の真のコードルートｃ＿ｒｏｏｔと同じか否かをチェックする。同じであればステップＳ９１１へ進み、異なればステップＳ９１２へ進む。ステップＳ９１１では、前回の真のコードルートｃ＿ｒｏｏｔを今回の真のコードルートｏ＿ｒｏｏｔにセットする。そして、今回の真のコードタイプｏ＿ｔｙｐｅにｍ６をセットする。そして、今回の真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しをセットする。この処理は、図１１のクリシェパターン８３１の処理である。その後、処理を終了する。
【００７３】
ステップＳ９１２では、図２の決定手段１６で決定された仮のコードタイプｄ＿ｔｙｐｅがマイナーか否かをチェックする。マイナーであればステップＳ９１３へ進み、マイナーでなければステップＳ９１８へ進む。ステップＳ９１３では、図２の決定手段１６で決定された仮のコードルートｄ＿ｒｏｏｔが前回検出された真のコードルートｃ＿ｒｏｏｔと同じか否かをチェックする。同じであればステップＳ９１４へ進み、異なればステップＳ９１８へ進む。ステップＳ９１４では、前回検出された真のコードタイプｃ＿ｔｙｐｅがマイナーか否かをチェックする。マイナーであればステップＳ９１５へ進み、マイナーでなければステップＳ９１８へ進む。ステップＳ９１５では、上記のペダルキーオンイベント（ステップＳ９０１）内のキーナンバであるベースルートｄ＿ｂａｓｓが前回の真のベースルートｃ＿ｂａｓｓと同じか否かをチェックする。同じであればステップＳ９１７へ進み、異なればステップＳ９１６へ進む。ステップＳ９１６では、上記のペダルキーオンイベント（ステップＳ９０１）内のキーナンバであるベースルートｄ＿ｂａｓｓが前回の真のベースルートｃ＿ｂａｓｓより半音高いルートと同じか否かをチェックする。同じであればステップＳ９１７へ進み、異なればステップＳ９１８へ進む。ステップＳ９１７では、前回の真のコードルートｃ＿ｒｏｏｔを今回の真のコードルートｏ＿ｒｏｏｔにセットする。そして、今回の真のコードタイプｏ＿ｔｙｐｅにマイナーをセットする。そして、今回の押鍵のベースルートｄ＿ｂａｓｓを今回の真のベースルートｏ＿ｂｓ＿ｒｏｏｔにセットする。この処理は、図１１のクリシェパターン８３３の処理である。その後、処理を終了する。
【００７４】
ステップＳ９１８〜Ｓ９２２の処理は、クリシェ、オーギュメント及びディミニッシュ以外の一般のコード検出処理であり、図２の処理と同じである。ステップＳ９１８では、図２の決定手段２５が変換テーブル２４を用いた変換を行い、コードルートｔ＿ｒｏｏｔ、コードタイプｔ＿ｔｙｐｅ及びベースルートの有無を決定する。ステップＳ９１９では、コードルートｔ＿ｒｏｏｔを真のコードルートｏ＿ｒｏｏｔにセットし、コードタイプｔ＿ｔｙｐｅを真のコードタイプｏ＿ｔｙｐｅにセットする。次に、ステップＳ９２０では、ステップＳ９１８の変換によりベースルートが有りと決定されたか否かをチェックする。ベースルート有りであればステップＳ９２２へ進み、ベースルート無しであればステップＳ９２１へ進む。ステップＳ９２１では、真のベースルートｏ＿ｂｓ＿ｒｏｏｔにベースルート無しを設定する。ステップＳ９２２では、真のベースルートｏ＿ｂｓ＿ｒｏｏｔに押鍵によるベースルートｄ＿ｂａｓｓを設定する。以上で、処理を終了する。
【００７５】
以上により、図１１の変換テーブルに従い、真のコードルートｏ＿ｒｏｏｔ、真のコードタイプｏ＿ｔｙｐｅ及び真のベースルートｏ＿ｂｓ＿ｒｏｏｔが決定する。このコードは、図６〜図８の処理に従い、例えば４００ｍｓ経過後にコードＣＣＨＤにセットされる。次のコード検出の際には、このコードＣＣＨＤが前回検出された真のコードとして処理される。
【００７６】
本実施形態によれば、前回検出されたコードに応じてコード検出することにより、適切なクリシェのコード検出を行うことができる。上記のコード検出処理は、ハードウエアで構成してもよいし、ソフトウエアで構成してもよい。コード検出プログラムのソフトウエアを用いる例を、以下説明する。
【００７７】
図１４は、本実施形態による電子楽器のハードウエア構成例を示すブロック図である。バス３１には、音源（ＴＧ）３２、ＣＰＵ３３、パネルスイッチ３４、鍵盤３５、ＲＯＭ３６、ＲＡＭ３７、及びＤ／Ａ変換器３８が接続されている。ＣＰＵ３３は、タイマ３０から時間情報を得て、タイマ割り込み処理（図８）を行うことができる。
【００７８】
ＣＰＵ３３は、種々の演算又は処理を行い、ＲＯＭ３６又はＲＡＭ３７に記憶されているコンピュータプログラムに応じて上記のコード検出処理を実行する。ＲＡＭ３７は、ＣＰＵ３３のワーキングエリアとして使用される。パネルスイッチ３４は、自動伴奏スタイル番号を決定するスタイル番号スイッチ３（図１）等の操作子を有する。
【００７９】
鍵盤３５は、上鍵盤３５ａと下鍵盤３５ｂとからなる手鍵盤及び足鍵盤３５ｃを有し、押鍵及び離鍵が可能な複数の鍵を有する。鍵盤３５が押鍵されるとベロシティ（押鍵速度）及びキーナンバ（音高）を含むキーオンイベントをＣＰＵ３３に伝え、鍵盤３５が離鍵されるとキーオフイベントをＣＰＵ３３に伝える。
【００８０】
音源３２は、鍵盤３５の操作又はＲＯＭ３６内の自動伴奏データに応じて、楽音信号を生成する。Ｄ／Ａ変換器３８は、音源３２で生成されたデジタル形式の楽音信号をアナログ形式に変換し、アンプ３９に出力する。アンプ３９は、楽音信号の増幅を行い、スピーカ４０にて楽音が発音される。
【００８１】
本実施形態によれば、第１のコード検出部（決定手段１６）が、手鍵盤の操作に応じて、第１のコードルート及び第１のコードタイプを検出する。第２のコード検出部（図５又は図１１）が、検出された第１のコードルート、第１のコードタイプ、足鍵盤の操作、及び前回検出されたコードに応じて、第２のコードルート、第２のコードタイプ及びベースルートの有無を検出する。
【００８２】
鍵盤の操作のみならず前回検出されたコードに応じて、今回のコードを検出するので、演奏の流れに応じた演奏者が意図するコードを検出することができる。具体的には、オーギュメント及びディミニッシュにおいて演奏者が意図するコードルートを選択することができ、クリシェにおいて演奏者が意図するコードを選択することができる。
【００８３】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００８４】
上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００８５】
【発明の効果】
以上説明したように、演奏鍵盤の操作のみならず前回検出されたコードに応じて、今回のコードを検出するので、演奏の流れに応じた演奏者が意図するコードを検出することができる。
【図面の簡単な説明】
【図１】本発明の実施形態による電子楽器の概略構成例を示す図である。
【図２】コード決定処理手段の構成を示すブロック図である。
【図３】第１の変換テーブルの一部の内容例を示す図である。
【図４】第２の変換テーブルの一部の内容例を示す図である。
【図５】オーギュメント及びディミニッシュのコードルート変換を示す図である。
【図６】初期化処理を示すフローチャートである。
【図７】コード検出後に行う処理を示すフローチャートである。
【図８】タイマ割り込み処理を示すフローチャートである。
【図９】オーギュメント及びディミニッシュのコード検出処理を示すフローチャートである。
【図１０】オーギュメント及びディミニッシュのコード検出処理を示すフローチャートである。
【図１１】クリシェのコード変換を示す図である。
【図１２】クリシェのコード検出処理を示すフローチャートである。
【図１３】クリシェのコード検出処理を示すフローチャートである。
【図１４】電子楽器のハードウエア構成例を示す図である。
【符号の説明】
１　下鍵盤
２　足鍵盤
３　スタイル番号スイッチ
４　コード決定処理手段
５　自動伴奏発音処理手段
３０　タイマ
３１　バス
３２　音源
３３　ＣＰＵ
３４　パネルスイッチ
３５　鍵盤
３５ａ　上鍵盤
３５ｂ　下鍵盤
３５ｃ　足鍵盤
３６　ＲＯＭ
３７　ＲＡＭ
３８　Ｄ／Ａ変換器
３９　アンプ
４０　スピーカ
【図１】
2004093927.tif 000003
【図２】
2004093927.tif 000004
【図３】
2004093927.tif 000005
【図４】
2004093927.tif 000006
【図５】
2004093927.tif 000007
【図６】
2004093927.tif 000008
【図７】
2004093927.tif 000009
【図８】
2004093927.tif 000010
【図９】
2004093927.tif 000011
【図１０】
2004093927.tif 000012
【図１１】
2004093927.tif 000013
【図１２】
2004093927.tif 000014
【図１３】
2004093927.tif 000015
【図１４】
2004093927.tif 000016