(57)【要約】【課題】  レガート奏法でベースラインを演奏した際に適切なコード検出を行うことができる電子楽器のコード検出技術を提供することを課題とする。【解決手段】  同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出することができる第１のコード検出手段（１０４）と、第１のコード検出手段によりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出手段（１０５）とを有する電子楽器のコード検出装置が提供される。【選択図】        図１
2005099579.tif 000002
【特許請求の範囲】
【請求項１】
同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出することができる第１のコード検出手段と、
前記第１のコード検出手段によりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出手段と
を有する電子楽器のコード検出装置。
【請求項２】
前記第１のコード検出手段は、ベースルートを含む分数コードを検出することができ、
前記第２のコード検出手段は、前記第１のコード検出手段により検出された分数コードのうちベースルートのみを変更する請求項１記載の電子楽器のコード検出装置。
【請求項３】
前記第１のコード検出手段は、前記３個以上のキーオンのうちの最低音の音名をベースルートとして検出する請求項２記載の電子楽器のコード検出装置。
【請求項４】
さらに、複数の鍵を含み、押鍵するとキーオンを発生する鍵盤を有し、
前記第１及び第２のコード検出手段は、前記鍵盤の押鍵に応じて検出を行う請求項３記載の電子楽器のコード検出装置。
【請求項５】
さらに、前記第１及び／又は第２のコード検出手段により検出される分数コードに応じて自動伴奏を行う自動伴奏手段を有する請求項４記載の電子楽器のコード検出装置。
【請求項６】
前記自動伴奏手段は、コードパート及び／又はベースパートの自動伴奏を行う請求項５記載の電子楽器のコード検出装置。
【請求項７】
さらに、複数の鍵を含み、押鍵するとキーオンを発生する鍵盤を有し、
前記第１及び第２のコード検出手段は、前記鍵盤の押鍵に応じて検出を行う請求項１記載の電子楽器のコード検出装置。
【請求項８】
さらに、前記第１及び／又は第２のコード検出手段により検出されるコード及び／又はベースルートに応じて自動伴奏を行う自動伴奏手段を有する請求項１記載の電子楽器のコード検出装置。
【請求項９】
前記自動伴奏手段は、コードパート及び／又はベースパートの自動伴奏を行う請求項８記載の電子楽器のコード検出装置。
【請求項１０】
同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出する第１のコード検出ステップと、
前記第１のコード検出ステップによりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出ステップと
を有する電子楽器のコード検出方法。
【請求項１１】
同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出する第１のコード検出ステップと、
前記第１のコード検出ステップによりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出ステップと
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子楽器のコード検出技術に関し、特にベースルートを検出する技術に関する。
【背景技術】
【０００２】
電子楽器には、鍵盤の入力によりコードを検出し、検出されたコードに沿って内蔵された自動伴奏パターンを変換して演奏させる自動伴奏装置を備えているものがある。
【０００３】
コード検出方法には、１鍵押さえた時点から何らかのコードを決定するモード、３鍵押さえた時点でコードが確定するモード等を選択できるものがある。
【０００４】
また、分数コード検出スイッチを備え、分数コード検出可とした場合は、押鍵された鍵の最低鍵をベースとして検出するものがある。分数コードは、例えば「Ｃ／Ｂ」等であり、分子のコードが楽譜の上パート（コードパート）のコードであり、分母のコードが楽譜の下パート（ベースパート）のコードである。
【０００５】
３鍵からコードが確定するモードでは、２鍵以下の押鍵ではコードの分母（以下、ベースルートという）のみ変更されるようにし、分子のコードを固定したまま、自由にベースルートを指定できるものがある。
【０００６】
まず、図２（Ａ）に示すように、ベースルート（ベースライン）が順次下がる場合を説明する。時刻ｔ１〜ｔ２において、３鍵の「ドミソ」を押鍵すると、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３〜ｔ４に１鍵の「ド」を押鍵すると、「Ｃ／Ｃ」が検出される。次に、時刻ｔ５〜ｔ６に１鍵の「シ」を押鍵すると、「Ｃ／Ｂ」が検出される。次に、時刻ｔ７〜ｔ８に１鍵の「ラ」を押鍵すると、「Ｃ／Ａ」が検出される。
【０００７】
次に、図２（Ｂ）に示すように、ベースルートが順次上がる場合を説明する。時刻ｔ１〜ｔ２において、３鍵の「ドミソ」を押鍵すると、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３〜ｔ４に１鍵の「ソ」を押鍵すると、「Ｃ／Ｇ」が検出される。次に、時刻ｔ５〜ｔ６に１鍵の「ラ」を押鍵すると、「Ｃ／Ａ」が検出される。次に、時刻ｔ７〜ｔ８に１鍵の「シ」を押鍵すると、「Ｃ／Ｂ」が検出される。
【０００８】
次に、図２（Ｃ）に示すように、レガート奏法でベースルートが下がる場合を説明する。時刻ｔ１〜ｔ２において３鍵の「ドミソ」を押鍵し、時刻ｔ３〜ｔ５において「ド」を押鍵し、時刻ｔ４〜ｔ７において「シ」を押鍵し、時刻ｔ６〜ｔ８において「ラ」を押鍵する場合を説明する。時刻ｔ１において、３鍵の「ドミソ」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３において、１鍵の「ド」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ４において、２鍵の「シド」が押鍵されているので、そのうちの最低鍵の「シ」をベースルートとし、コード「Ｃ／Ｂ」が検出される。次に、時刻ｔ６において、２鍵の「ラシ」が押鍵されているので、そのうちの最低鍵の「ラ」をベースルートとし、コード「Ｃ／Ａ」が検出される。この場合は、図２（Ａ）の場合と同様に、適切なコードを検出することができる。
【０００９】
次に、図２（Ｄ）に示すように、レガート奏法でベースルートが上がる場合を説明する。この場合のコード検出に問題が生じる。時刻ｔ１〜ｔ２において３鍵の「ドミソ」を押鍵し、時刻ｔ３〜ｔ５において「ソ」を押鍵し、時刻ｔ４〜ｔ７において「ラ」を押鍵し、時刻ｔ６〜ｔ８において「シ」を押鍵する場合を説明する。時刻ｔ１において、３鍵の「ドミソ」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３において、１鍵の「ソ」が押鍵されるので、コード「Ｃ／Ｇ」が検出される。次に、時刻ｔ４において、２鍵の「ソラ」が押鍵されているので、そのうちの最低鍵の「ソ」をベースルートとし、不適切なコード「Ｃ／Ｇ」が検出される。しかし、時刻ｔ４では、新たに「ラ」を押鍵しているのだから、本来はコード「Ｃ／Ａ」が検出されるべきである。次に、時刻ｔ６において、２鍵の「ラシ」が押鍵されているので、そのうちの最低鍵の「ラ」をベースルートとし、コード「Ｃ／Ａ」が検出される。しかし、時刻ｔ６では、新たに「シ」を押鍵しているのだから、本来はコード「Ｃ／Ｂ」が検出されるべきである。以上のように、図２（Ｄ）の場合は、図２（Ｂ）の場合と異なり、不適切なコードが検出されてしまう。
【００１０】
また、下記の特許文献１には、鍵盤の３以上の鍵が押されたときの押鍵情報から最低音を求め、その最低音を基準として、押された鍵に対応する音名同士の各音程を求めることが開示されている。
【００１１】
また、下記の特許文献２には、多数の鍵が同時に押鍵された場合、押鍵された鍵の中の最低音を根音とするとともに、標準和音の中から１つを選択して和音を構成する鍵データを形成することが開示されている。
【００１２】
【特許文献１】特開平１０−５５１８１号公報
【特許文献２】特開平６−１３０９５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、レガート奏法でベースラインを演奏した際に適切なコード検出を行うことができる電子楽器のコード検出技術を提供することである。
【課題を解決するための手段】
【００１４】
本発明の一観点によれば、同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出することができる第１のコード検出手段と、前記第１のコード検出手段によりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出手段とを有する電子楽器のコード検出装置が提供される。
本発明の他の観点によれば、同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出する第１のコード検出ステップと、前記第１のコード検出ステップによりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出ステップとを有する電子楽器のコード検出方法が提供される。
本発明のさらに他の観点によれば、同時に３個以上のキーオンがあると、その３個以上のキーオンの音高を基にコードを検出する第１のコード検出ステップと、前記第１のコード検出ステップによりコードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出する第２のコード検出ステップとをコンピュータに実行させるためのプログラムが提供される。
【発明の効果】
【００１５】
３個以上のキーオンの音高を基にコードを検出した後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出することにより、レガート奏法でベースラインを演奏した際にも適切なコードを検出することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施形態による電子楽器のコード検出装置の構成例を示す。鍵盤１０１は、演奏操作するための複数の鍵を含み、押鍵するとキーオン（音高を含む）を発生し、離鍵するとキーオフ（音高を含む）を発生する。鍵盤１０１の代わりに、その他の演奏操作子を用いてもよい。コード検出手段１０３は、３鍵以上コード検出手段１０４及び２鍵以下コード検出手段１０５を有し、鍵盤１０１の押鍵に応じてコード検出を行う。分数コード検出スイッチを押すことにより、コード検出手段１０３は分数コードを検出することができる。
【００１７】
３鍵以上コード検出手段１０４は、鍵盤１０１から同時に３個以上のキーオンの入力があると、その３個以上のキーオンの音高を基に分数コード（ベースルートを含む）を検出することができる。その際、３鍵以上コード検出手段１０４は、３個以上のキーオンのうちの最低音の音名をベースルートとして検出する。分数コードの分子はコードルート及びコードタイプで表され、分数コードの分母はベースルートで表される。例えば、「ドレミ」を押鍵すると、コードルートが「Ｃ」、コードタイプが「メジャー」、ベースルートが最低音の「Ｃ」として、コード「Ｃ／Ｃ」が検出される。
【００１８】
２鍵以下コード検出手段１０５は、３鍵以上コード検出手段１０４により分数コードが検出された後、同時に２個以下のキーオンがあると、そのうちの最後（最新）のキーオンの音名をベースルートとして検出し、上記の分数コードのうちベースルートのみを変更する。
【００１９】
スタイル番号選択手段１０２は、ユーザの操作に応じて、例えばロックやジャズ等の自動伴奏のスタイルを選択し、スタイル番号を出力する。
【００２０】
自動伴奏手段１０６は、上記のスタイル番号に応じた自動伴奏パターンを読み出し、コード検出手段１０３により検出される分数コードに応じて自動伴奏を行う。自動伴奏は、例えばコードパート及び／又はベースパートの所定パターンを繰り返し発音することにより行う。コードパートはコードルート及びコードタイプに応じて発音され、ベースパートはベースルートに応じて発音される。
【００２１】
まず、図２（Ａ）に示すように、ベースルート（ベースライン）が順次下がる場合を説明する。時刻ｔ１〜ｔ２において、３鍵の「ドミソ」を押鍵すると、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３〜ｔ４に１鍵の「ド」を押鍵すると、「Ｃ／Ｃ」が検出される。次に、時刻ｔ５〜ｔ６に１鍵の「シ」を押鍵すると、「Ｃ／Ｂ」が検出される。次に、時刻ｔ７〜ｔ８に１鍵の「ラ」を押鍵すると、「Ｃ／Ａ」が検出される。
【００２２】
次に、図２（Ｂ）に示すように、ベースルートが順次上がる場合を説明する。時刻ｔ１〜ｔ２において、３鍵の「ドミソ」を押鍵すると、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３〜ｔ４に１鍵の「ソ」を押鍵すると、「Ｃ／Ｇ」が検出される。次に、時刻ｔ５〜ｔ６に１鍵の「ラ」を押鍵すると、「Ｃ／Ａ」が検出される。次に、時刻ｔ７〜ｔ８に１鍵の「シ」を押鍵すると、「Ｃ／Ｂ」が検出される。
【００２３】
次に、図２（Ｃ）に示すように、レガート奏法でベースルートが下がる場合を説明する。時刻ｔ１〜ｔ２において３鍵の「ドミソ」を押鍵し、時刻ｔ３〜ｔ５において「ド」を押鍵し、時刻ｔ４〜ｔ７において「シ」を押鍵し、時刻ｔ６〜ｔ８において「ラ」を押鍵する場合を説明する。時刻ｔ１において、３鍵の「ドミソ」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３において、１鍵の「ド」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ４において、２鍵の「シド」が押鍵されているので、そのうちの最終（最後）鍵の「シ」をベースルートとし、コード「Ｃ／Ｂ」が検出される。次に、時刻ｔ６において、２鍵の「ラシ」が押鍵されているので、そのうちの最終鍵の「ラ」をベースルートとし、コード「Ｃ／Ａ」が検出される。この場合は、図２（Ａ）の場合と同様に、適切なコードを検出することができる。
【００２４】
次に、図２（Ｄ）に示すように、レガート奏法でベースルートが上がる場合を説明する。この場合、２鍵以下の押鍵のうちの最低鍵をベースルートとして検出してしまうと、前述のように、不適切なコードを検出してしまう。本実施形態のように、２鍵以下コード検出手段１０５が、２鍵以下の押鍵のうちの最終鍵をベースルートとして検出することにより、適切なコードを検出することができる。
【００２５】
時刻ｔ１〜ｔ２において３鍵の「ドミソ」を押鍵し、時刻ｔ３〜ｔ５において「ソ」を押鍵し、時刻ｔ４〜ｔ７において「ラ」を押鍵し、時刻ｔ６〜ｔ８において「シ」を押鍵する場合を説明する。時刻ｔ１において、３鍵の「ドミソ」が押鍵されるので、コード「Ｃ／Ｃ」が検出される。次に、時刻ｔ３において、１鍵の「ソ」が押鍵されるので、コード「Ｃ／Ｇ」が検出される。次に、時刻ｔ４において、２鍵の「ソラ」が押鍵されているので、そのうちの最終鍵の「ラ」をベースルートとし、適切なコード「Ｃ／Ａ」が検出される。次に、時刻ｔ６において、２鍵の「ラシ」が押鍵されているので、そのうちの最終鍵の「シ」をベースルートとし、適切なコード「Ｃ／Ｂ」が検出される。以上のように、図２（Ｄ）の場合も、図２（Ｂ）の場合と同様に、適切なコードを検出することができる。
【００２６】
図３は、本実施形態による電子楽器のハードウエア構成例を示すブロック図である。バス３０１には、音源（ＴＧ）３０２、ＣＰＵ３０３、パネル３０４、鍵盤３０５、ＲＯＭ３０６、ＲＡＭ３０７、Ｄ／Ａ変換器３０８、及びＭＩＤＩインタフェース３１１が接続されている。
【００２７】
ＣＰＵ３０３は、種々の演算又は処理を行い、ＲＯＭ３０６に記憶されているコンピュータプログラムに応じて、後述する図４〜図７の処理等を実行する。タイマー３１２は、時間情報をＣＰＵ３０３に供給する。ＣＰＵ３０３は、その時間情報に応じて、後述する図６のタイマー処理を行うことができる。ＲＯＭ３０６は、コンピュータプログラムの他、自動伴奏データ等を記憶する。ＲＡＭ３０７は、ＣＰＵ３０３のワーキングエリアとして使用される。パネル３０４は、スイッチ及び表示装置（例えば液晶表示器）を含み、スタイル番号選択スイッチ及び分数コード検出スイッチ等を有する。
【００２８】
鍵盤３０５は、押鍵及び離鍵が可能な複数の鍵を有する。鍵盤３０５が押鍵されるとベロシティ（押鍵速度）及びキーナンバ（音高）を含むキーオンイベントをＣＰＵ３０３に伝え、鍵盤３０５が離鍵されるとキーオフイベントをＣＰＵ３０３に伝える。鍵盤１０１のコード検出用鍵域で押鍵されると、その押鍵を基にコードが検出される。ＣＰＵ３０３は、選択されたスタイル番号を基にＲＯＭ３０６内の自動伴奏データを読み出し、検出されたコードを基に所定パターンの自動伴奏データを変換して繰り返し発音処理する。また、ＭＩＤＩインタフェース３１１は、演奏データ等をＭＩＤＩデータとして外部に対して入出力することができる。
【００２９】
音源３０２は、鍵盤３０５の操作による演奏データ又は自動伴奏データを基に、楽音信号を生成する。Ｄ／Ａ変換器３０８は、音源３０２で生成されたデジタル形式の楽音信号をアナログ形式に変換し、アンプ３０９に出力する。アンプ３０９は、楽音信号の増幅を行い、スピーカ３１０にて楽音が発音される。
【００３０】
ＣＰＵ３０３は、図４の鍵盤処理及び図７のコード検出処理等をメインルーチンにて繰り返し処理し、図６のタイマー処理を所定時間間隔で割り込み処理する。
【００３１】
図４は、鍵盤操作があったときに行う鍵盤処理を示すフローチャートである。ステップＳ４０１では、コード検出マップ作成処理を行う。この処理の詳細は、後に図５を参照しながら説明する。次に、ステップＳ４０２では、鍵盤操作に応じた発音処理又は消音処理を行う。すなわち、鍵盤の押鍵によりキーオンが発生すると発音処理を行い、鍵盤の離鍵によりキーオフが発生すると消音処理を行う。次に、ステップＳ４０３では、録音スイッチが押されていれば、鍵盤操作に基づく演奏データ等の録音処理を行う。次に、ステップＳ４０４では、ＭＩＤＩ（musical instrument digital interface）送信指示に応じてＭＩＤＩ送信処理を行う。すなわち、鍵盤の操作に応じたＭＩＤＩデータをＭＩＤＩインタフェース３１１を介して外部に送信する。次に、ステップＳ４０５では、その他の処理を行う。その後、鍵盤処理を終了する。
【００３２】
図５は、図４のステップＳ４０１のコード検出マップ作成処理の詳細を示すフローチャートである。まず、ステップＳ５０１では、鍵盤操作により発生したキーイベントがキーオン又はキーオフのいずれであるかをチェックする。キーオンであればステップＳ５１１へ進み、キーオフであればステップＳ５０２へ進む。
【００３３】
ステップＳ５１１では、オン検出要求用カウンタに所定時間をセットする。オン検出要求用カウンタの所定時間は、演奏者が複数鍵の構成音からなるコードを押鍵する際に多少の時間ずれを伴いながら構成音を押鍵するので、押鍵後にすぐにコード検出せず、所定時間待機してからコード検出するために必要な時間である。オン検出要求用カウンタは、後述する図６のタイマー処理にてデクリメントされる。
【００３４】
次に、ステップＳ５１２では、発生したキーオンの音高をコード検出用キーマップにセットする。コード検出用キーマップは、鍵盤３０５の鍵数の音高分のフラグを有し、キーオンの音高のフラグのみがセットされる。
【００３５】
次に、ステップＳ５１３では、分数コード検出スイッチがオン又はオフのいずれであるかをチェックする。オンであればステップＳ５１４へ進み、オフであればステップＳ５１８へ進む。ステップＳ５１８では、分数コードの検出は行わないので、ベース鍵（ベースルート）をオフに設定し、ステップＳ５１９へ進む。
【００３６】
ステップＳ５１４では、分数コードの検出を行うため、押鍵が２鍵以下か否かをチェックする。押鍵が２鍵以下であればステップＳ５１５へ進み、３鍵以上であればステップＳ５１６へ進む。
【００３７】
ステップＳ５１６では、上記のコード検出用キーマップを基に、前回に比べてキーオンの最低鍵の音高に変更があるか否かをチェックする。変更があればステップＳ５１７へ進み、変更がなければステップＳ５１９へ進む。
【００３８】
ステップＳ５１７は、押鍵が３鍵以上のときの処理であり、ベース鍵（ベースルート）をキーオン中の最低鍵の音高に設定する。その後、ステップＳ５１９へ進む。ステップＳ５１５は、押鍵が２鍵以下のときの処理であり、ベース鍵（ベースルート）をキーオン中の最終（最後）鍵の音高に設定する。その後、ステップＳ５１９へ進む。
【００３９】
ステップＳ５１９では、ベース検出要求フラグをセットし、コード検出マップ作成処理を終了する。ベース検出要求フラグをセットすることにより、図７のステップＳ７０３にてコード検出処理を行うとの判断がされる。
【００４０】
ステップＳ５０２では、コード検出用キーマップにおいて今回キーオフされた音高のフラグをクリアする。次に、ステップＳ５０３では、コード検出用キーマップを基に、現在押鍵によるキーオンが残存するか否かをチェックする。キーオンが残存すればステップＳ５０４へ進み、残存しなければステップＳ５０５へ進む。
【００４１】
ステップＳ５０４では、オフ検出要求用カウンタに所定時間をセットする。オフ検出要求用カウンタの所定時間は、演奏者が複数鍵の構成音からなるコードを離鍵する際に多少の時間ずれを伴いながら構成音を離鍵するので、離鍵後にすぐにコード検出せず、所定時間待機してから新たなコードを検出するために必要な時間である。オフ検出要求用カウンタは、後述する図６のタイマー処理にてデクリメントされる。その後、ステップＳ５０５へ進む。
【００４２】
ステップＳ５０５では、分数コード検出スイッチがオン又はオフのいずれであるかをチェックする。オンであればステップＳ５０６へ進み、オフであればコード検出マップ作成処理を終了する。
【００４３】
ステップＳ５０６では、上記のコード検出用キーマップを基に、前回に比べてキーオンの最低鍵の音高に変更があるか否かをチェックする。変更があればステップＳ５０７へ進み、変更がなければステップＳ５０８へ進む。
【００４４】
ステップＳ５０７では、ベース鍵（ベースルート）をキーオン中の最低鍵の音高に設定する。その後、ステップＳ５１０へ進む。
【００４５】
ステップＳ５０８では、全鍵がキーオフであるか否かをチェックする。全鍵がキーオフであればステップＳ５０９へ進み、そうでなければコード検出マップ作成処理を終了する。ステップＳ５０９では、ベース鍵（ベースルート）をオフに設定し、ステップＳ５１０へ進む。
【００４６】
ステップＳ５１０では、ベース検出要求フラグをセットし、コード検出マップ作成処理を終了する。ベース検出要求フラグをセットすることにより、図７のステップＳ７０３にてコード検出処理を行うとの判断がされる。
【００４７】
図６は、タイマー処理を示すフローチャートである。ステップＳ６０１では、オン検出要求用カウンタがカウント中か否かをチェックする。具体的には、オン検出要求用カウンタが０でなければカウント中であると判断する。カウント中であればステップＳ６０２へ進み、カウント中でなければステップＳ６０５へ進む。
【００４８】
ステップＳ６０２では、オン検出要求用カウンタをデクリメントする。次に、ステップＳ６０３では、オン検出要求用カウンタのカウントが終了したか否かをチェックする。カウントが終了すればステップＳ６０４へ進み、終了していなければステップＳ６０５へ進む。ステップＳ６０４では、オン検出要求フラグをセットする。オン検出要求フラグをセットすることにより、図７のステップＳ７０１にてコード検出処理を行うとの判断がされる。その後、ステップＳ６０５へ進む。
【００４９】
ステップＳ６０５では、オフ検出要求用カウンタがカウント中か否かをチェックする。具体的には、オフ検出要求用カウンタが０でなければカウント中であると判断する。カウント中であればステップＳ６０６へ進み、カウント中でなければタイマー処理を終了する。
【００５０】
ステップＳ６０６では、オフ検出要求用カウンタをデクリメントする。次に、ステップＳ６０７では、オフ検出要求用カウンタのカウントが終了したか否かをチェックする。カウントが終了すればステップＳ６０８へ進み、終了していなければタイマー処理を終了する。ステップＳ６０８では、オフ検出要求フラグをセットする。オフ検出要求フラグをセットすることにより、図７のステップＳ７０２にてコード検出処理を行うとの判断がされる。その後、タイマー処理を終了する。
【００５１】
図７は、コード検出処理を示すフローチャートである。まず、ステップＳ７０１では、オン検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７０４へ進み、セットされていなければステップＳ７０２へ進む。ステップＳ７０２では、オフ検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７０４へ進み、セットされていなければステップＳ７０３へ進む。ステップＳ７０３では、ベース検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７０４へ進み、セットされていなければコード検出処理を終了する。
【００５２】
ステップＳ７０４では、上記のコード検出用キーマップを基にオクターブキーマップを作成する。オクターブキーマップは、１オクターブ（１２鍵）の音名のフラグを有し、コード検出用キーマップ上の音高を１オクターブの音名に変換したものである。
【００５３】
次に、ステップＳ７０５では、コード検出テーブルを参照してコードを決定する。すなわち、オクターブキーマップ上のキーオンの構成音を基にコードルート及びコードタイプを決定する。コード検出テーブルは、構成音とコードとの関係を示すテーブルである。コード検出テーブルにその構成音がなければ、コード不確定になる。例えば、構成音が２音以下の場合には、コード不確定になる。
【００５４】
次に、ステップＳ７０６では、コードが確定したか否かをチェックする。コードが確定していればステップＳ７０７へ進み、確定していなければステップＳ７２０へ進む。ステップＳ７０７では、コード更新処理を行う。具体的には、ステップＳ７０７において、確定したコードと前回のコードとを比較し、ステップＳ７０８において、今回のコードが更新されているか否かをチェックする。更新されていればステップＳ７０９へ進み、更新されていなければステップＳ７２０へ進む。
【００５５】
ステップＳ７０９では、オフ検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７１１へ進み、セットされていなければステップＳ７１０へ進む。
【００５６】
ステップＳ７１０では、リトリガーありの情報及び確定したコードを記録する。その際、ベースルートが設定されていればベースルートを含む分数コードが記録され、ベースルートがオフとして設定されていればベースルートは記録されない。リトリガーの処理は、後述するステップＳ７１８及びＳ７１９で行われる。その後、ステップＳ７１２へ進む。
【００５７】
ステップＳ７１１では、ステップＳ７１０と同様に、リトリガーなしの情報及び確定したコードを記録する。その後、ステップＳ７１２へ進む。
【００５８】
ステップＳ７１２では、液晶表示器（ＬＣＤ）に確定したコードを表示する。次に、ステップＳ７１３では、ユーザのスイッチ操作により自動伴奏モードが設定されているか否かをチェックする。自動伴奏モードであればステップＳ７１４へ進み、そうでなければステップＳ７２５へ進む。
【００５９】
ステップＳ７１４では、オフ検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７１５へ進み、セットされていなければステップＳ７１７へ進む。
【００６０】
ステップＳ７１７では、ベースルートが変更されたか否かをチェックする。ベースルートが変更されていればステップＳ７１８へ進み、変更されていなければステップＳ７１９へ進む。ステップＳ７１８では、ベースパートのリトリガー要求処理を行う。すなわち、現在自動伴奏しているベースパートを消音し、新たなベースルートに応じたペースパートの自動伴奏を行う。その後、ステップＳ７１９へ進む。ステップＳ７１９では、コードパートのリトリガー要求処理を行う。すなわち、現在自動伴奏しているコードパートを消音し、新たなコードルート及びコードタイプに応じたコードパートの自動伴奏を行う。その後、ステップＳ７２５へ進む。
【００６１】
ステップＳ７１５では、現在自動伴奏中のベースパートをベンダ処理によりピッチ変更し、それに続き、新たなベースルートに応じたペースパートの自動伴奏を行う。次に、ステップＳ７１６では、現在自動伴奏中のコードパートからキーオンの構成音以外の音を消音してコードパートの自動伴奏を行う。すなわち、キーオフがあった音を消音するようにコードパートの自動伴奏を続行する。その後、ステップＳ７２５へ進む。
【００６２】
ステップＳ７２０では、ベース検出要求フラグがセットされているか否かをチェックする。セットされていればステップＳ７２１へ進み、セットされていなければステップＳ７２５へ進む。
【００６３】
ステップＳ７２１では、リトリガーありの情報及びコード（例えばベースルート）を記録する。次に、ステップＳ７２２では、液晶表示器にコードを表示する。次に、ステップＳ７２３では、ユーザのスイッチ操作により自動伴奏モードが設定されているか否かをチェックする。自動伴奏モードであればステップＳ７２４へ進み、そうでなければステップＳ７２５へ進む。
【００６４】
ステップＳ７２４では、ベースパートのリトリガー要求処理を行う。すなわち、現在自動伴奏しているベースパートを消音し、新たなベースルートに応じたペースパートの自動伴奏を行う。その後、ステップＳ７２５へ進む。
【００６５】
ステップＳ７２５では、オン検出要求フラグをクリアする。次に、ステップＳ７２６では、オフ検出要求フラグをクリアする。次に、ステップＳ７２７では、ベース検出要求フラグをクリアする。以上で、コード検出処理を終了する。
【００６６】
以上のように、３個以上のキーオンの音高を基にコードを検出した後、同時に２個以下のキーオンがあると、そのうちの最後のキーオンをベースルートとして検出することにより、図２（Ｃ）及び（Ｄ）に示すようにレガート奏法でベースラインを演奏した際にも適切なコードを検出することができる。
【００６７】
本実施形態は、図３の電子楽器のコンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００６８】
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施形態による電子楽器のコード検出装置の構成例を示す図である。
【図２】図２（Ａ）〜（Ｄ）は押鍵に応じたコード検出方法を説明するための図である。
【図３】本実施形態による電子楽器のハードウエア構成例を示すブロック図である。
【図４】鍵盤操作があったときに行う鍵盤処理を示すフローチャートである。
【図５】コード検出マップ作成処理の詳細を示すフローチャートである。
【図６】タイマー処理を示すフローチャートである。
【図７】コード検出処理を示すフローチャートである。
【符号の説明】
【００７０】
１０１  鍵盤
１０２  スタイル番号選択手段
１０３  コード検出手段
１０４  ３鍵以上コード検出手段
１０５  ２鍵以下コード検出手段
１０６  自動伴奏手段
３０１  バス
３０２  音源
３０３  ＣＰＵ
３０４  パネル
３０５  鍵盤
３０６  ＲＯＭ
３０７  ＲＡＭ
３０８  Ｄ／Ａ変換器
３０９  アンプ
３１０  スピーカ
３１１  ＭＩＤＩインタフェース
３１２  タイマー
【図１】
2005099579.tif 000003
【図２】
2005099579.tif 000004
【図３】
2005099579.tif 000005
【図４】
2005099579.tif 000006
【図５】
2005099579.tif 000007
【図６】
2005099579.tif 000008
【図７】
2005099579.tif 000009