(57)【特許請求の範囲】
【請求項１】
演奏者に操作されて押鍵状態または離鍵状態となる複数の鍵と、前記押鍵状態／離鍵状態のいずれか一方から他方への状態変化時に、前記鍵の動作速度に応じた時間差を検知可能であり、鍵の状態検知を保持する第１，第２検知手段と、前記押鍵状態にある鍵の組み合わせを検知して、対応するコードを検出するコード検出手段と、該コード検出手段により検出されたコードに係る楽音を発生させる楽音発生手段とを備えた電子楽器において、
前記押鍵状態にある鍵の組み合わせを検知する際の各鍵の押鍵状態の検知は、前記第１，第２検知手段の、検知順序において後で状態変化を検知した検知手段の検知時に、先に状態変化を検知した検知手段による状態の検知結果に基づいて為され、
該押鍵状態検知結果に基づいた鍵の組み合わせに対応するコードを検出する
ことを特徴とする電子楽器。
【請求項２】
前記第１，第２検知手段が、第１検知手段、第２検知手段の順序で、離鍵状態から押鍵状態への状態変化を検知する際、前記コード検出手段が、前記第２検知手段によって前記状態変化を検知したら、前記第１検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする請求項１に記載の電子楽器。
【請求項３】
前記第１，第２検知手段が、第２検知手段、第１検知手段の順序で、押鍵状態から離鍵状態への状態変化を検知する際、前記コード検出手段が、前記第１検知手段によって前記状態変化を検知したら、前記第２検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする請求項１または請求項２のいずれかに記載の電子楽器。
【請求項４】
前記第１，第２検知手段が、一方の検知手段、他方の検知手段の順序で前記状態変化を検知した際、当該状態変化前に押鍵状態にある鍵が存在していた場合には、前記コード検出手段が、前記他方の検知手段によって前記状態変化を検知したら、前記他方の検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする請求項１〜請求項３のいずれかに記載の電子楽器。
【請求項５】
さらに、押鍵操作の開始と同時に前記楽音発生手段による楽音の発生を開始するシンクロスタートモードで演奏するか否かを設定可能なモード設定手段を備え、
前記第１，第２検知手段が、一方の検知手段、他方の検知手段の順序で前記状態変化を検知した際、前記モード設定手段によってシンクロスタートモードで演奏する旨の設定がなされていない場合には、前記コード検出手段が、前記他方の検知手段によって前記状態変化を検知したら、前記他方の検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする請求項１〜請求項４のいずれかに記載の電子楽器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、押鍵状態にある鍵の組み合わせに基づいて、演奏者が意図するコードを検出して、そのコードに係る楽音を発生させるように構成された電子楽器に関する。
【０００２】
【従来の技術】
従来から、例えば電子ピアノのように、押鍵速度に応じた強さで演奏音を発生させる電子楽器が知られている。この種の電子楽器は、通常、各鍵に対応する２つ１組のセンサを備えている。この２つのセンサは、押鍵速度に応じた時間差をおいて押鍵操作を検知するもので、電子楽器は、上記２つのセンサで検出した時間差に応じて、時間差が大きい場合には弱い音を発生させ、時間差が小さい場合には強い音を発生させるように構成されている。
【０００３】
また、この種の電子楽器において、さらに、自動伴奏機能やＡＯＣ（Ａｕｔｏ  Ｏｒｃｈｅｓｔｒａ  Ｃｈｏｒｄ）機能を備えたものもある。これらの機能は、いずれも押鍵状態にある鍵に対応した音のみを単に発生させるのではなく、押鍵状態にある鍵の組み合わせに基づいて、演奏者が意図するコードを検出して、そのコードに係る楽音を様々な形態にアレンジして自動的に発生させる機能である。例えば、自動伴奏機能を利用する場合であれば、スイッチ操作等により事前に伴奏音の旋律等を指定しておけば、左手でコードの指定を行う程度のことしかできない初心者であっても、比較的手軽に複雑な伴奏を行うことができる。
【０００４】
ところで、上記のような自動伴奏機能やＡＯＣ機能を備えている電子楽器において、演奏者は複数の鍵を同時に操作しているつもりではあるが、この操作を検出するセンサは、通常、ごく僅かな時間差をも検出できる能力を有するので、各鍵の操作タイミングは僅かにずれて検出されるケースがほとんどである。そのため、ある鍵に対応するセンサが押鍵操作を検知した時点で、直ちに演奏者が意図したコードを検出していたのでは、現実には、演奏者の意図するコードを検出したことにはならない可能性が高い。
【０００５】
そこで、従来は、ある鍵に対応するセンサが押鍵を検知してから、所定の待機時間が経過するまで待機し、その待機時間中に新たに別の鍵に対応するセンサが押鍵を検知した場合には、これらの各鍵すべてが同時に押されたものとして扱い、上記待機時間経過後にコードの検出を行うようにしていた。
【０００６】
【発明が解決しようとする課題】
しかし、上記のような待機時間を設けると、どうしても実際の押鍵操作開始時点から演奏音発生時点までに、相応のタイムラグが生じることになるため、その反応の鈍さに演奏者が違和感を覚えるという問題があった。特に、演奏開始時には、無音状態から発音状態に切り替わるため、何らかの演奏音が継続的に発生している演奏中に比べ、上記タイムラグが非常に気になるという問題があった。
【０００７】
もちろん、上記待機時間を短くすれば、上記タイムラグは相応に短縮される。しかし、単にそのような対策をとるだけでは、結局、待機時間を設けない場合に生ずる問題、すなわち、演奏者の意図するコードとは異なるコードを検出してしまうという問題が発生することになるだけであり、有効な対策とはならなかった。
【０００８】
本発明は、上記問題を解決するためになされたものであり、その目的は、押鍵状態にある鍵の組み合わせに基づいて、演奏者が意図するコードを検出して、そのコードに係る楽音を発生させる電子楽器において、操作開始時点から演奏音発生時点までのタイムラグを従来よりも短縮しながら、演奏者が意図するコードをより的確に検出可能とすることにある。
【０００９】
【課題を解決するための手段、および発明の効果】
上述の目的を達成するためになされた本発明は、請求項１に記載の通り、
演奏者に操作されて押鍵状態または離鍵状態となる複数の鍵と、前記押鍵状態／離鍵状態のいずれか一方から他方への状態変化時に、前記鍵の動作速度に応じた時間差を検知可能であり、鍵の状態検知を保持する第１，第２検知手段と、前記押鍵状態にある鍵の組み合わせを検知して、対応するコードを検出するコード検出手段と、該コード検出手段により検出されたコードに係る楽音を発生させる楽音発生手段とを備えた電子楽器において、
前記押鍵状態にある鍵の組み合わせを検知する際の各鍵の押鍵状態の検知は、前記第１，第２検知手段の、検知順序において後で状態変化を検知した検知手段の検知時に、先に状態変化を検知した検知手段による状態の検知結果に基づいて為され、
該押鍵状態検知結果に基づいた鍵の組み合わせに対応するコードを検出する
ことを特徴とする。
【００１０】
この電子楽器において、上記複数の鍵は、鍵盤楽器が備える演奏用の操作子である。最も一般的には、手で操作を行う白鍵および黒鍵からなるものを考え得るが、この他、足で操作する鍵（いわゆるペダルキー）や、白鍵および黒鍵という形態ではないものなどでもよい。
【００１１】
また、上記第１，第２検知手段は、例えば、従来から電子ピアノ等において様々なものが採用されており、それらを任意に利用できる。具体的には、例えば、押圧されているか否かによりオン／オフの状態が切り替わる２つの接触型スイッチを、押鍵時に鍵によって時間差をおいて押圧される位置に配設してなるものを利用できる。あるいは、光路が遮られるか否かによりオン／オフの状態が切り替わる２つのフォトインタラプタと、鍵に取り付けられて押鍵／離鍵に伴って上記２つのフォトインタラプタの光路上に時間差をおいて出没する段付シャッタとで構成されたものなども利用できる。もちろん、これら以外の各種接触型センサないし非接触型センサを採用してもよい。これらのスイッチないしセンサは、押鍵時にオンで離鍵時にオフとなるものか、押鍵時にオフで離鍵時にオンとなるものであれば、どちらでもよい。また、常時はオフになっていて、押鍵状態／離鍵状態のいずれか一方から他方への状態変化が発生する瞬間にだけオンとなるもの（すなわち、パルス信号を発するようなもの）であってもよい。この場合は、例えば、パルス信号の発生に伴って割込処理を実行する等、適当な方法でパルス信号を監視すれば状態変化を検出できる。
【００１２】
このような第１，第２検知手段は、上記のように鍵に直接取り付けられていてもよいが、これに限らず、鍵に連動して鍵の動きを間接的に把握できるような動作をする部材（以下、鍵連動部材という）に取り付けられていても構わない。このような鍵連動部材としては、例えば一部の電子ピアノにおいてタッチ感の改善のために採用されているような、ピアノの模擬アクション機構の構成部材（例えば、ハンマーに相当する部材など）を挙げることができる。この他、上記第１，第２検知手段を設けるために、専用の鍵連動部材を設けてもよい。
【００１３】
また、上記コード検出手段は、押鍵状態にある鍵の組み合わせに対応するコードを検出する点は従来と同様であるが、この押鍵状態にある鍵の組み合わせを判別するに当たり、第１，第２検知手段が、一方の検知手段、他方の検知手段の順序で状態変化を検知する際、他方の検知手段によって状態変化を検知したら、一方の検知手段による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせを判別するという点に、従来とは異なる特徴がある。すなわち、押鍵状態にある鍵の組み合わせを検知する際の各鍵の押鍵状態の検知は、第１，第２検知手段の、検知順序において「後で状態変化を検知した検知手段」の検知時に、「先に状態変化を検知した検知手段」による状態の検知結果に基づいて為され、該押鍵状態検知結果に基づいた鍵の組み合わせに対応するコードを検出する点に特徴がある。
【００１４】
このような手法で鍵の組み合わせを判別すれば、まず、他方の検知手段で状態変化が検知されたことを契機として押鍵状態にある鍵の組み合わせの判別（以下、単にコード検出という）を開始するので、一方の検知手段で状態変化が検知されたことを契機としてコード検出を開始するものに比べ、意図的に押鍵された時にコード検出を行う可能性が高くなる。
【００１５】
しかも、他方の検知手段で状態変化が検知された場合に行うコード検出自体は、一方の検知手段による状態変化の検知結果に基づいて行われるので、他方の検知手段による状態変化の検知結果に基づいてコード検出を行うものに比べ、コード検出の開始時期を早めることができる。すなわち、他方の検知手段による最初の状態変化の検知直後は、他方の検知手段で検知した状態変化がまだ暫定的なものに過ぎず、さらに別の鍵について押鍵操作／離鍵操作がなされる可能性もある。そのため、他方の検知手段で確実なコード検出を行うのであれば、さらにいくらかの待機時間が経過するのを待たざるを得ない。しかし、本発明において、一方の検知手段は、他方の検知手段よりも先行して状態変化を検知し、他方の検知手段によって状態変化を検知した時点では、既にいくらか時間が経過している。したがって、一方の検知手段による状態変化の検知結果に基づいてコード検出を行えば、上記のような待機時間が経過するのを待たずに、あるいは、より短い待機時間の経過を待つだけで、他方の検知手段においても検知されることになる押鍵状態を検知できる。しかも、鍵に対する操作が迅速になされるほど、他方の検知手段による状態変化の検知タイミングも早まるので、操作速度とは無関係に、操作速度が遅い場合を想定して一律に設定された待機時間が経過するのを待つ場合に比べ、コード検出の開始時期は早くなる。これらの結果、本発明においては、従来よりもコード検出を速やかに完了することができるのである。
【００１６】
このような手法で押鍵状態にある鍵の組み合わせが確定すれば、後は、従来と同様の手法でコードを検出すればよい。例えば、押鍵／離鍵を１／０に対応させたビットパターンデータで、押鍵状態にある鍵の組み合わせをメモリに記憶し、別途メモリに記憶されているコードとビットパターンデータとの対応表を参照して、押鍵により指定されたコードを検出するといったもの等を考え得る。
【００１７】
さらに、上記楽音発生手段は、コード検出手段により検出されたコードに係る楽音を発生させるものである。但し、ここでいう楽音発生手段は、特に上記コードに係る楽音を発生させることのみに特化したものを専用に設ける必要はなく、通常の演奏音を発生させるために電子楽器が備えている楽音発生手段が、上記コードに係る楽音を発生させる際にも機能するように構成されていればよい。「検出されたコードに係る楽音」とは、単にそのコードを構成する複数の音高の楽音であってもよいし、あるいは、そのコードに応じた自動伴奏音、自動演奏音であってもよい。例えば、ロック、ワルツなどの伴奏パターンを、代表的なコード（例えば「Ｃ  Ｍａｊｏｒ」等）で自動伴奏データとしてあらかじめ記憶しておき、この自動伴奏データに基づく伴奏音を、検出されたコードに移調して再生するようにすればよい。
【００１８】
以上のように構成された電子楽器によれば、演奏者がいくつかの鍵を操作してコードを指定するだけで、そのコードに係る楽音が発生するので、例えば初心者であっても簡単な操作で複雑な伴奏音を発生させることができる。
また特に、押鍵状態にある鍵の組み合わせを検知する際の各鍵の押鍵状態の検知は、第１，第２検知手段の、検知順序において「後で状態変化を検知した検知手段」の検知時に、「先に状態変化を検知した検知手段」による状態の検知結果に基づいて為され、該押鍵状態検知結果に基づいた鍵の組み合わせに対応するコードを検出するので、一方の検知手段で状態変化を検知した時に一方の検知手段での検知結果からコード検出を行うものに比べ、演奏者の意図がより的確に反映された楽音を発生させることができる。また、他方の検知手段で状態変化を検知した時に他方の検知手段での検知結果からコード検出を行うものに比べ、より迅速に楽音を発生させることができる。さらに、一定の待機時間の経過を待ってからコード検出を行うものに比べ、押鍵操作／離鍵操作の開始時点から演奏音発生時点までのタイムラグは、素早い鍵操作がなされるほど短縮されるので、演奏者にとって違和感がない。
【００１９】
したがって、この電子楽器によれば、押鍵操作／離鍵操作後の反応がよくなり、演奏者が、演奏音発生の遅れに違和感を覚えることはない。また、演奏者の意図しないコードに係る楽音が発生してしまう確率は低くなり、演奏者が気持ちよく思い通りの演奏を行うことができる。
【００２０】
なお、上記本発明の構成は、押鍵操作時／離鍵操作時のいずれか一方について採用してもよく、両方について採用してもよい。
より具体的には、押鍵操作時について上記構成を採用した電子楽器は、請求項２に記載の通り、
前記第１，第２検知手段が、第１検知手段、第２検知手段の順序で、離鍵状態から押鍵状態への状態変化を検知する際、前記コード検出手段が、前記第２検知手段によって前記状態変化を検知したら、前記第１検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とするものとなる。
【００２１】
この電子楽器によれば、特に、押鍵操作を伴って演奏者の指定するコードが変化した場合に良好な反応を示すので、演奏開始時はもちろんのこと、コードの変更時に新たな鍵が押される場合には、所期の効果が発揮される。
また、離鍵操作時について上記構成を採用した電子楽器は、請求項３に記載の通り、
前記第１，第２検知手段が、第２検知手段、第１検知手段の順序で、押鍵状態から離鍵状態への状態変化を検知する際、前記コード検出手段が、前記第１検知手段によって前記状態変化を検知したら、前記第２検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とするものとなる。
【００２２】
この電子楽器によれば、特に、離鍵操作を伴って演奏者の指定するコードが変化した場合に良好な反応を示すので、既にいくつかの鍵が押されて何らかのコードが指定されている状態において、いくつかの押鍵状態にある鍵が離鍵状態とされることでコードが変更される場合に、所期の効果が発揮される。
【００２３】
ところで、上述した本発明の電子楽器の場合、押鍵操作／離鍵操作の開始時点から演奏音発生時点までのタイムラグは、素早い鍵操作がなされるほど短縮される。それ故、特に、素早い鍵操作が多い場合、無音状態から発音状態に変わる場合（例えば、演奏開始時など）、他の演奏音（例えば、主旋律となる演奏音）との同期をとって伴奏を開始したい場合などに、その効果は絶大である。
【００２４】
しかし、ゆっくりとした鍵操作しか行われない場合、発音状態が継続したままコードが変わる場合、伴奏をあらかじめ開始させておいて後から他の演奏音を加える場合などは、上記タイムラグがあまり気にならないこともある。その場合、多少のタイムラグを許容することで、より確実なコード検出を行うことができるのであれば、それなりに利点があると考えられる。
【００２５】
そこで、請求項４または請求項５に記載の電子楽器では、次のような構成を採用した。
すなわち、請求項４に記載の電子楽器は、
前記第１，第２検知手段が、一方の検知手段、他方の検知手段の順序で前記状態変化を検知した際、当該状態変化前に押鍵状態にある鍵が存在していた場合には、前記コード検出手段が、前記他方の検知手段によって前記状態変化を検知したら、前記他方の検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする。
【００２６】
このように構成された電子楽器は、他方の検知手段による状態変化の検知前後で、押鍵状態にある鍵の数が、０から１以上に変化した場合に限り、先行して状態変化を検知する一方の検知手段での検知結果に基づいてコード検出を行う。一方、それ以外の場合には、後から状態変化を検知する他方の検知手段での検知結果に基づいてコード検出を行う。
【００２７】
このような電子楽器であれば、例えば演奏開始時、演奏休止後の演奏再開時のように、押鍵状態にある鍵が存在しない状態から最初の押鍵操作がなされる際には、従来よりも迅速にコードが検出されるので、タイムラグを伴わずにコードに係る楽音が発生する。しかも、演奏が開始された後、演奏音が継続したままコードが変わってゆくような場合には、誤操作等が一方の検知手段に検知されたとしても、他方の検知手段に検知されない程度の操作であれば、偶然にコード検出のタイミングが重なっていたとしても、そのような誤操作がコード検出に悪影響を及ぼすことはない。
【００２８】
したがって、この電子楽器によれば、演奏開始時については発音のレスポンスが改善され、しかも、演奏開始後については演奏者の意図したコードに係る楽音が発生する可能性がより一層高くなる、という効果がある。
また、請求項５に記載の電子楽器は、
さらに、押鍵操作の開始と同時に前記楽音発生手段による楽音の発生を開始するシンクロスタートモードで演奏するか否かを設定可能なモード設定手段を備え、
前記第１，第２検知手段が、一方の検知手段、他方の検知手段の順序で前記状態変化を検知した際、前記モード設定手段によってシンクロスタートモードで演奏する旨の設定がなされていない場合には、前記コード検出手段が、前記他方の検知手段によって前記状態変化を検知したら、前記他方の検知手段による前記状態変化の検知結果に基づいて、前記押鍵状態にある鍵の組み合わせに対応するコードを検出する
ことを特徴とする。
【００２９】
このように構成された電子楽器は、モード設定手段によってシンクロスタートモードで演奏する旨の設定がなされていた場合に限り、先行して状態変化を検知する一方の検知手段での検知結果に基づいてコード検出を行う。一方、それ以外の場合には、後から状態変化を検知する他方の検知手段での検知結果に基づいてコード検出を行う。
【００３０】
このような電子楽器であれば、シンクロスタートモードで演奏する場合のように、演奏開始時における発音の同期が特に気になる状況下では、従来よりも迅速にコードが検出されるので、タイムラグを伴わずにコードに係る楽音が発生するので、演奏者にとって違和感がない、という効果がある。
【００３１】
なお、シンクロスタートモードで演奏しない場合は、多少タイムラグは大きくなるが、誤操作等が一方の検知手段に検知されたとしても、他方の検知手段に検知されない程度の操作であれば、偶然にコード検出のタイミングが重なっていたとしても、そのような誤操作がコード検出に悪影響を及ぼすことはないので、演奏者の意図したコードに係る楽音が発生する可能性がより一層高くなる、という効果がある。
【００３２】
【発明の実施の形態】
次に、本発明の実施形態について一例を挙げて説明する。
図１は、本発明の一実施形態である電子楽器の電気的構成を示すブロック図である。
【００３３】
図１に示すように、この電子楽器は、ＣＰＵ２、ＲＯＭ４、ＲＡＭ６、オートカウンタ８、パネル１０、キーボード１２、楽音発生回路１４、サウンドシステム１６、およびこれら各部を結ぶバス２１等から構成されている。
パネル１０には、液晶表示板、ＬＥＤ等の表示装置、本電子楽器に各種の情報、指令を入力するための操作子等が設けられている。この操作子としては、例えば、本電子楽器をＡＯＣモードにするＡＯＣスイッチ、ＡＵＴＯモード（自動伴奏モード）にするＡＵＴＯスイッチ、本電子楽器がＡＵＴＯモードとされたときに自動伴奏を開始／停止させるＳＴＡＲＴ／ＳＴＯＰスイッチ、押鍵操作と同時に自動伴奏を開始するモード（シンクロスタートモード）にするＳＹＮＣスイッチ等が設けられている。
【００３４】
キーボード１２は、複数の鍵（本実施形態では８８鍵）を備えている。複数の鍵にはそれぞれ番号（キーコード）が付与されていて、ある鍵を押下した場合、その鍵に対応するキーコードがＣＰＵ２等に転送され、そのキーコードに対応する音高の楽音を発生させる処理が行われる。また、各鍵に対応して、その鍵の押鍵／離鍵を検出するための鍵スイッチが設けられている。この鍵スイッチは、２つの接点（第１接点、第２接点）を備えている。これら２つの接点は、押鍵操作時に第１接点、第２接点の順序でオンになり、一方、離鍵操作時に第２接点、第１接点の順序でオフとなるように配置されている。これら２つの接点がオンまたはオフにされた旨の情報は、キーボード１２の内部に設けられたスキャン回路（図示略）によって検出される。このスキャン回路は、各鍵スイッチを一定時間毎に走査して、押鍵／離鍵操作がなされた鍵のキーコードおよび接点のオン／オフに関する情報を検出するものであり、スキャン回路によって検出された情報は、キーイベント情報としてＣＰＵ２に転送される。なお、上記２つの接点が本発明の第１，第２検知手段に相当する。
【００３５】
楽音発生回路１４は、時分割多重処理によって、複数チャネル（本実施形態では３２チャネル）の独立したデジタル楽音信号を発生させるものである。この楽音発生回路１４には、アサイメントメモリ１４ａが内蔵されており、アサイメントメモリ１４ａには、デジタル楽音信号を各チャネルから発音する際に必要となる各種データ（キーコード、音色データ等）が、各チャネル毎に格納されている。楽音発生回路１４がデジタル楽音信号を発生させる際には、アサイメントメモリ１４ａにセットされた各種データに基づいてデジタル楽音信号を生成する。なお、楽音発生回路１４は、本発明の楽音発生手段を構成するものである。
【００３６】
サウンドシステム１６は、Ｄ／Ａ変換器、アンプ、およびスピーカ等から構成される。楽音発生回路１４から出力されるデジタル楽音信号は、サウンドシステム１６のＤ／Ａ変換器によってアナログ楽音信号に変換され、そのアナログ楽音信号がアンプによって増幅され、スピーカから放音される。なお、サウンドシステム１６も、本発明の楽音発生手段を構成するものである。
【００３７】
オートカウンタ８は、押鍵の強さを検出するためのカウンタである。複数の鍵の内の１つが押下された場合、その鍵に設けられた鍵スイッチの第１接点がオンにされると、オートカウンタ８が、クリアされて新たなカウント（計数）を開始する。そのため、その鍵の第２接点がオンにされた時点におけるオートカウンタ８の値は、第１接点がオンにされてから第２接点がオンにされるまでの経過時間（すなわち、第１接点と第２接点とのオンタイミングの時間差）を示すことになる。したがって、この時間差が小さいほど押鍵速度が速い、すなわち、強い押鍵がなされたことになるので、これに基づいてタッチデータ（押鍵の強さを示すデータ）を作成することができる。
【００３８】
ＣＰＵ２は、ＲＯＭ４に格納されたプログラムに従って各種処理を実行する周知のものである。ＣＰＵ２が実行する代表的な処理としては、例えば、パネル１０上の各種スイッチの操作に伴う各種の情報を読み取る処理、キーボードスキャン回路にキーボード１２のスキャンを行わせ、キーイベント情報を読み取る処理、楽音発生回路１４においてデジタル楽音信号を発生させるのに使用する楽音発生チャネル（チャネル）を割り当ててチャネルに対する発音制御を行う処理などがあり、これらの各処理をこの順序で実行することによって楽音を発生させている。また、ＣＰＵ２にはタイマ２ａが内蔵されており、ＣＰＵ２は一定時間が経過するたびに、後述するタイマ割込処理等を行うように構成されている。
【００３９】
ＲＯＭ４は、各種プログラムおよびデータを記憶したもので、楽音発生のためのプログラム、自動伴奏データ、後述する和音表などは、ＲＯＭ４に格納されている。
また、ＲＡＭ６は、ＣＰＵ２が各種データ処理を行う際にデータを一時的に格納するためのもので、キースキャン回路によりスキャンされた各鍵の第１接点、第２接点のオン／オフ状態をそれぞれ記憶する領域（後述するＳＷ１ビットマップＳＷ１ＢＭＰ、ＳＷ２ビットマップＳＷ２ＢＭＰ等）、レジスタ（後述するコードタイプレジスタＣＤＴＹＰＥ、コードルートレジスタＣＤＲＯＯＴ等）、バッファ、カウンタ（後述する第１接点カウンタＬＳ１Ｃ等）、フラグ（後述するＡＯＣフラグ、ＡＵＴＯフラグ、Ｓ／Ｓフラグ、ＳＹＮＣフラグ等）等の各種記憶領域が確保されている。
【００４０】
ＲＡＭ６に確保される記憶領域の内、コードタイプレジスタＣＤＴＹＰＥは、検出したコード（和音）の型を示す番号を格納するためのレジスタである。コードには、周知のように、“Ｍａｊｏｒ”、“ｍ（ｍｉｎｏｒ）”、“７（７ｔｈ）”など、いくつもの型があるが、本電子楽器では、各型に対してこれらの型を一意に特定できるような番号（例えば、「００ｈ」、「０１ｈ」、「０２ｈ」、…など；但し、「ｈ」は１６進数表記であることを示す。以下同じ。）があらかじめ付与されている。後述する処理の中で、押鍵操作がなされている鍵の組み合わせに基づいてコードを検出した際には、その検出したコードの型に対応する番号が、上記コードタイプレジスタＣＤＴＹＰＥに格納される。なお、検出したコードの型が不定である（対応するものがない）場合、あるいは、コード未検出となっている場合には、その旨を示す番号（例えば「ＦＦｈ」）がコードタイプレジスタＣＤＴＹＰＥにセットされる。
【００４１】
コードルートレジスタＣＤＲＯＯＴは、検出したコードの根音を示す番号を格納するためのレジスタである。コードの根音には、“Ｃ”、“Ｃ＃”、“Ｄ”、…、“Ａ＃”、“Ｂ”の１２種があり、本電子楽器では、各根音に対してこれらの根音を一意に特定できるような番号（例えば、「００ｈ」、「０１ｈ」、…、「０Ｃｈ」など）があらかじめ付与されている。後述する処理の中で、押鍵操作がなされている鍵の組み合わせに基づいてコードを検出した際には、その検出したコードの根音に対応する番号が、上記コードルートレジスタＣＤＲＯＯＴに格納される。なお、検出したコードの根音が不定である（対応するものがない）場合、あるいは、コード未検出となっている場合には、その旨を示す番号（例えば「ＦＦｈ」）がコードルートレジスタＣＤＲＯＯＴにセットされる。
【００４２】
ＳＷ１ビットマップＳＷ１ＢＭＰは、コード検出の対象となる鍵の第１接点がオンの時に「１」、オフの時に「０」とされる１２ビットのビットマップデータ領域で、各ビットには、１オクターブの範囲内に含まれる“Ｃ”、“Ｃ＃”、“Ｄ”、…、“Ａ＃”、“Ｂ”の１２鍵のそれぞれが対応づけられている。上記コード検出の対象となる鍵は、通常、複数オクターブの鍵域にわたって存在するので、１オクターブ毎に同じ階名に対応する鍵が存在するが、それら同じ階名に対応する複数の鍵は、すべて同一ビットに対応づけられている。具体的には、それら同じ階名に対応する複数の鍵の内、少なくとも１鍵がオンとなっていれば、対応するビットは「１」とされ、すべての鍵がオフとなっている場合に限り、対応するビットが「０」とされる。ＳＷ２ビットマップＳＷ２ＢＭＰは、ＳＷ１ビットマップＳＷ１ＢＭＰと同様な１２ビットのビットマップデータ領域で、コード検出の対象となる鍵の第２接点がオンの時に「１」、オフの時に「０」とされる点だけが、ＳＷ１ビットマップＳＷ１ＢＭＰとは相違する。
【００４３】
タイマレジスタＴＩＭＥＲは、押鍵後、コード検出を行うのを待機する押鍵待機時間ΔＴｏｎ、あるいは、離鍵後、コード検出を行うのを待機する離鍵待機時間ΔＴｏｆｆを計時するために使用されるレジスタである。
第１接点カウンタＬＳ１Ｃは、後述するように、ロアーキーの第１接点ＬｗＳＷ１の内、オン状態にあるものの数を計数するためのレジスタである。
【００４４】
ＡＯＣフラグは、本電子楽器がＡＯＣ機能を作動させる動作モード（ＡＯＣモード）である場合に「１」、それ以外の場合に「０」となるフラグである。ＡＵＴＯフラグは、本電子楽器が自動伴奏機能を作動させる動作モード（ＡＵＴＯモード）にある場合に「１」、それ以外の場合に「０」となるフラグである。Ｓ／Ｓフラグは、自動伴奏を開始・停止を決定するためのフラグであり、「１」である時は、自動伴奏の内の少なくともリズム伴奏が行われ、「０」である時は、リズム伴奏を含めすべての自動伴奏を停止される。ＳＹＮＣフラグは、押鍵操作と同時に自動伴奏を開始するシンクロスタートモードが選択された場合に「１」、それ以外の場合に「０」となるフラグである。
【００４５】
次に、以上のように構成された電子楽器においてＣＰＵ２が実行する処理を、図３〜図５に基づいて説明する。この電子楽器の電源が投入されると、ＣＰＵ２は、図３に示すメインルーチンに従った処理を実行する。
メインルーチンの実行を開始すると、ＣＰＵ２は、まず、初期化処理を行う（Ｓ１０）。より具体的には、初期化処理として、ＲＡＭ６や楽音発生回路１４のアサイメントメモリ１４ａをクリアする処理、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに「ＦＦｈ」（この場合は、未検出という意味になる）を格納する処理、タイマレジスタＴＩＭＥＲをリセット（「０」をセット）する処理、ＡＯＣフラグ、ＡＵＴＯフラグ、Ｓ／Ｓフラグ、ＳＹＮＣフラグ等の各種フラグをリセット（「０」をセット）する処理などを実行する。
【００４６】
続いて、ＣＰＵ２は、パネル処理を行う（Ｓ１５）。具体的には、まず、パネル１０をスキャンすることにより、各スイッチのオン／オフ操作（オンイベント／オフイベント）を検出し、その検出結果に応じて各種フラグの設定値等を変更する。例えば、ＡＵＴＯスイッチのオンイベントを検出した場合には、ＡＵＴＯフラグに「１」をセットし、ＡＯＣスイッチのオンイベントを検出した場合には、ＡＯＣフラグに「１」をセットする。また、Ｓ／Ｓスイッチのオンイベントを検出した場合には、Ｓ／Ｓフラグに「１」をセットし、ＳＹＮＣスイッチのオンイベントを検出した場合には、ＳＹＮＣフラグに「１」をセットする。
【００４７】
次に、ＣＰＵ２は、通常演奏処理を行う（Ｓ２０）。通常演奏処理は、スプリットポイントより高音側での押鍵／離鍵操作に対する発音／消音を行う処理である。ここで、スプリットポイントとは、キーボード１２の鍵域を高音側および低音側の２領域に分割する境界のことであり、本電子楽器では、キーボード１２上にキーによってスプリットポイントを事前に設定しておくことができる。すなわち、本電子楽器では、スプリットポイントを設定するモードで、キーボード１２上にある１つのキーを選定すると、選定されたキーを含めてそのキーよりも低温側にあるキー群（以下、ロアーキーという）と、上記選定されたキーよりも高音側にあるキー群（以下、アッパーキーという）の２領域が設定される。スプリットポイントの設定後は、演奏処理の内容により、上記２領域のどちらを処理対象とするかが変わる。上記Ｓ２０の通常演奏処理は、上記２領域の内、アッパーキー側での押鍵／離鍵操作を対象とする処理となる。
【００４８】
この通常演奏処理は、詳しくは図３に示すような処理である。通常演奏処理を開始すると、ＣＰＵ２は、図３に示すように、まず、複数あるアッパーキーの第１接点ＵｐＳＷ１のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ１１０）。ここで、オンイベントの発生した第１接点ＵｐＳＷ１があれば（Ｓ１１０：ＹＥＳ）、その鍵に対してオートカウンタ８の１つを割り当てて（Ｓ１２０）、通常演奏処理を終了する。Ｓ１２０の処理において、特定の鍵に割り当てられたオートカウンタ８は、初期化された上でカウントを開始し、そのカウンタ値が時間経過とともに増えてゆく。
【００４９】
一方、上記Ｓ１１０の処理時点で、オンイベントの発生した第１接点ＵｐＳＷ１がなければ（Ｓ１１０：ＮＯ）、複数あるアッパーキーの第２接点ＵｐＳＷ２のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ１３０）。ここで、オンイベントの発生した第２接点ＵｐＳＷ２があれば（Ｓ１３０：ＹＥＳ）、タッチデータを作成する（Ｓ１４０）。このタッチデータは、オンイベントが発生した第２接点ＵｐＳＷ２と対を成す第１接点ＵｐＳＷ１がオンとなった時にカウントを開始したオートカウンタ８の値に基づいて作成される。
【００５０】
続いて、ＣＰＵ２は、発音処理を行う（Ｓ１５０）。この発音処理は、押下された鍵のキーコードおよびタッチデータに基づいて楽音発生回路１４を制御して、サウンドシステム１６から楽音を発生させる処理である。なお、発音処理を終えたら、通常演奏処理を終了する。
【００５１】
一方、上記Ｓ１３０の処理時点で、オンイベントの発生した第２接点ＵｐＳＷ２がなければ（Ｓ１３０：ＮＯ）、複数あるアッパーキーの第１接点ＵｐＳＷ１のいずれかにおいてオフイベントが発生したかどうかを判断する（Ｓ１６０）。ここで、オフイベントの発生した第１接点ＵｐＳＷ１がなければ（Ｓ１６０：ＮＯ）、通常演奏処理を終了する。一方、このＳ１６０の処理時点で、オフイベントの発生した第１接点ＵｐＳＷ１があれば（Ｓ１６０：ＹＥＳ）、消音処理を行う（Ｓ１７０）。この消音処理は、オフイベントの発生した第１接点ＵｐＳＷ１を有する鍵に対応する楽音信号が、楽音発生チャネルから発生するのを停止させる処理であり、ＣＰＵ２は、楽音信号の発生を停止させる旨の情報を楽音発生回路１４に転送する。なお、消音処理を終えたら、通常演奏処理を終了する。
【００５２】
このようにして図３に示した通常演奏処理を終えると、図２におけるＳ２０の処理を終えたことになり、引き続いて、ＣＰＵ２は、ＡＯＣフラグが「１」であるか否かを調べる（Ｓ２５）。ＡＯＣフラグ＝「１」であると判断した場合には（Ｓ２５：ＹＥＳ）、第１和音演奏処理を行う。
【００５３】
この第１和音演奏処理は、ＡＯＣ機能を実現するための処理であり、詳しくは図４に示すような処理となる。
図４に示す第１和音演奏処理を開始すると、ＣＰＵ２は、まず、複数あるロアーキーの第１接点ＬｗＳＷ１のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ２１０）。ここで、オンイベントの発生した第１接点ＬｗＳＷ１があれば（Ｓ２１０：ＹＥＳ）、第１接点カウンタＬＳ１Ｃの値を「１」増加させて（Ｓ２１２）、第１接点カウンタＬＳ１Ｃが「４」以上であるかどうかを判断する（Ｓ２１４）。このとき、第１接点カウンタＬＳ１Ｃが「４」以上であれば（Ｓ２１４：ＹＥＳ）、タイマレジスタＴＩＭＥＲに所定の値（例えば「１」）をセットする（Ｓ２１６）。ここでタイマレジスタＴＩＭＥＲに設定される値は、押鍵待機時間ΔＴｏｎを計時するための初期値である。
【００５４】
一方、Ｓ２１４の処理において、第１接点カウンタＬＳ１Ｃが「４」より小さいと判断されれば（Ｓ２１４：ＮＯ）、タイマレジスタＴＩＭＥＲに「ＯＮＤＬＹ」を設定する（Ｓ２１８）。この「ＯＮＤＬＹ」も、押鍵待機時間ΔＴｏｎを計時するためにタイマレジスタＴＩＭＥＲに設定される初期値であり、本実施形態では「ＯＮＤＬＹ」＝「６」としている。
【００５５】
こうして、Ｓ２１６またはＳ２１８のいずれかの処理を終えると、ＣＰＵ２は、オンイベントの発生した第１接点ＬｗＳＷ１を有する鍵に対し、オートカウンタ８の１つを割り当てて（Ｓ２２０）、第１和音演奏処理を終了する。Ｓ２２０の処理において、特定の鍵に割り当てられたオートカウンタ８は、初期化された上でカウントを開始し、そのカウンタ値が時間経過とともに増えてゆく。
【００５６】
さて、上記Ｓ２１０の処理時点で、オンイベントの発生した第１接点ＬｗＳＷ１がなければ（Ｓ２１０：ＮＯ）、複数あるロアーキーの第２接点ＬｗＳＷ２のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ２２２）。ここで、オンイベントの発生した第２接点ＬｗＳＷ２があれば（Ｓ２２２：ＹＥＳ）、タッチデータを作成する（Ｓ２２４）。このタッチデータは、上記Ｓ１４０の処理と同様、オートカウンタ８の値に基づいて作成される。
【００５７】
続いて、最初の第２接点ＬｗＳＷ２のオンイベントであるかどうかを判断する（Ｓ２２６）。これは、今回オンイベントがあった第２接点ＬｗＳＷ２の他に、オンにされた状態の第２接点ＬｗＳＷ２があるか否かを調べることによって判断できる。ここで、最初の第２接点ＬｗＳＷ２のオンイベントでなければ（Ｓ２２６：ＮＯ）、第１和音演奏処理を速やかに終了する。
一方、最初の第２接点ＬｗＳＷ２のオンイベントであれば（Ｓ２２６：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」であるか否かを調べる（Ｓ２２８）。ここで、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」でなければ（Ｓ２２８：ＮＯ）、そのままＳ２３２の処理へと進む。その一方、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」であれば（Ｓ２２８：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥの値が「不定」または「未検出」なので、ＳＷ１ビットマップＳＷ１ＢＭＰに基づいて、新たにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納すべき値を決定する（Ｓ２３０）。このＳ２３０の処理の結果、押鍵待機時間ΔＴｏｎの経過を待つことなく、速やかにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの値が確定することになる。このＳ２３０の処理は、第２接点ＬｗＳＷ２（第２検知手段）によって状態変化を検知したら、第１接点ＬｗＳＷ１（第１検知手段）による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせに対応するコードを検出する処理であり、本発明の主要部に該当する処理である。
【００５８】
そして、Ｓ２３０の処理を終えたら、タイマレジスタＴＩＭＥＲに「０」を設定し（Ｓ２３１）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納された値に基づいて、新規和音を作成する（Ｓ２３２）。より詳しく説明すると、本電子楽器には、図７に示すような和音表が記憶されている。この和音表は、特定の根音（例えば“Ｃ”）に対応する和音の構成要素を示すキーコードを、コードタイプレジスタＣＤＴＹＰＥに格納されるコードタイプ別に記憶させた対応表である。
【００５９】
ＣＰＵ２は、まず、この和音表からコードタイプレジスタＣＤＴＹＰＥに格納されたコードタイプを探索する。そして、コードタイプが和音表内から見つかれば、そのコードタイプに対応するキーコードを読み出して和音の構成要素を特定する。そして、その特定された和音の構成要素を、コードルートレジスタＣＤＲＯＯＴに格納された値に基づいて移調させることにより、新規和音を構成するキーコードを導出する。
【００６０】
例えば、コードタイプレジスタＣＤＴＹＰＥの値が「０１ｈ」であり、かつコードルートレジスタＣＤＲＯＯＴの値が「０４ｈ」である場合を例にとって、新規和音を構成するキーコードの導出手順について説明すると、次の通りである。
まずコードタイプレジスタＣＤＴＹＰＥの値（ここでは「０１ｈ」）に基づいて和音表を参照し、そのコードタイプに対応するキーコードとして、「００ｈ」、「０３ｈ」、「０７ｈ」を読み出す。ここで、キーコードとして「ＦＦｈ」が格納されている場合、そのキーコードは使用しない。そして、和音表から読み出されたいくつかのキーコード（ここでは３つ）に対し、コードルートレジスタＣＤＲＯＯＴの値を加算して当該キーコードを移調させることにより、新規和音を構成するキーコード「０４ｈ」、「０７ｈ」、「０Ｂｈ」を導出する。
【００６１】
こうしてＳ２３２の処理を終えたら、続いて、ＣＰＵ２は、サウンドシステム１６に新規和音を発音させて（Ｓ２３４）、第１和音演奏処理を終了する。なお、Ｓ２３４の処理において、新規和音を発音させる際には、Ｓ２２４にて作成されたロアーキーに対する最新のタッチデータに基づいて楽音発生回路１４を制御する。
【００６２】
さて一方、上記Ｓ２２２の処理時点で、オンイベントの発生した第２接点ＬｗＳＷ２がなければ（Ｓ２２２：ＮＯ）、複数あるロアーキーの第２接点ＬｗＳＷ２のいずれかにおいてオフイベントが発生したかどうかを判断する（Ｓ２３６）。ここで、オフイベントの発生した第２接点ＬｗＳＷ２があれば（Ｓ２３６：ＹＥＳ）、タイマレジスタＴＩＭＥＲに「ＯＦＦＤＬＹ」を設定した後（Ｓ２３８）、第１和音演奏処理を終了する。この「ＯＦＦＤＬＹ」は、離鍵待機時間ΔＴｏｆｆを計時するためにタイマレジスタＴＩＭＥＲに格納される値であり、本実施形態では「ＯＦＦＤＬＹ」＝「１０」としている。
【００６３】
一方、Ｓ２３６の処理時点で、オフイベントの発生した第２接点ＬｗＳＷ２がなければ（Ｓ２３６：ＮＯ）、複数あるロアーキーの第１接点ＬｗＳＷ１のいずれかにおいてオフイベントが発生したかどうかを判断する（Ｓ２４０）。ここで、オフイベントの発生した第１接点ＬｗＳＷ１がなければ（Ｓ２４０：ＮＯ）、直ちに第１和音演奏処理を終了する。一方、オフイベントの発生した第１接点ＬｗＳＷ１があれば（Ｓ２４０：ＹＥＳ）、第１接点カウンタＬＳ１Ｃを「１」減らした後（Ｓ２４２）、第１和音演奏処理を終了する。
【００６４】
このようにして図４に示した第１和音演奏処理を終えると、図２におけるＳ３０の処理を終えたことになり、この後は、再びＳ１５の処理へと戻って本処理を繰り返すことになる。
さて一方、上記Ｓ２５の処理において、ＡＯＣフラグが「１」でないと判断した場合は（Ｓ２５：ＮＯ）、ＡＵＴＯフラグが「１」であるか否かを調べる（Ｓ３５）。ここで、ＡＵＴＯフラグが「１」でないと判断した場合は（Ｓ３５：ＮＯ）、そのまま再びＳ１５の処理へと戻って本処理を繰り返すことになるが、ＡＵＴＯフラグ＝「１」であると判断した場合は（Ｓ３５：ＹＥＳ）、第２和音演奏処理を行う。
【００６５】
この第２和音演奏処理は、自動伴奏機能を実現するための処理であり、詳しくは図５に示すような処理となる。
図５に示す第２和音演奏処理を開始すると、ＣＰＵ２は、まず、複数あるロアーキーの第１接点ＬｗＳＷ１のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ２５０）。ここで、オンイベントの発生した第１接点ＬｗＳＷ１があれば（Ｓ２５０：ＹＥＳ）、Ｓ２５３〜Ｓ２６０の処理を行う。これらＳ２５３〜Ｓ２６０の処理は、図４におけるＳ２１２〜Ｓ２２０の処理と同様の処理なので詳細な説明については省略する。Ｓ２６０の処理を終了したら、後述するＳ２８０の処理へと進む。
【００６６】
一方、上記Ｓ２５０の処理時点で、オンイベントの発生した第１接点ＬｗＳＷ１がなければ（Ｓ２５０：ＮＯ）、複数あるロアーキーの第２接点ＬｗＳＷ２のいずれかにおいてオンイベントが発生したかどうかを判断する（Ｓ２６２）。ここで、オンイベントの発生した第２接点ＬｗＳＷ２があれば（Ｓ２６２：ＹＥＳ）、タッチデータを作成する（Ｓ２６４）。このタッチデータは、オンイベントが発生した第２接点ＬｗＳＷ２と対を成す第１接点ＬｗＳＷ１がオンとなった時にカウントを開始したオートカウンタ８の値に基づいて作成される。
【００６７】
続いて、最初の第２接点ＬｗＳＷ２のオンイベントであるかどうかを判断する（Ｓ２６５）。判断手法は、上記Ｓ２２６と同様である。ここで、最初の第２接点ＬｗＳＷ２のオンイベントでなければ（Ｓ２６５：ＮＯ）、後述するＳ２８０の処理へ直ちに進む。
【００６８】
一方、最初の第２接点ＬｗＳＷ２のオンイベントであれば（Ｓ２６５：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」であるか否かを調べる（Ｓ２６６）。ここで、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」でなければ（Ｓ２６６：ＮＯ）、そのままＳ２６９の処理へと進む。その一方、コードタイプレジスタＣＤＴＹＰＥの値が「ＦＦｈ」であれば（Ｓ２６６：ＹＥＳ）、ＳＷ１ビットマップＳＷ１ＢＭＰに基づいて、新たにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納すべき値を決定する（Ｓ２６７）。このＳ２６７の処理の結果、押鍵待機時間ΔＴｏｎの経過を待つことなく、速やかにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの値が確定することになる。このＳ２６７の処理も、先に説明したＳ２３０の処理と同様に、第２接点ＬｗＳＷ２（第２検知手段）によって状態変化を検知したら、第１接点ＬｗＳＷ１（第１検知手段）による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせに対応するコードを検出する処理であり、本発明の主要部に該当する処理である。
【００６９】
そして、Ｓ２６７の処理を終えたら、タイマレジスタＴＩＭＥＲに「０」を設定し（Ｓ２６８）、ＡＵＴＯフラグが「１」であるかどうかを調べる（Ｓ２６９）。ここで、ＡＵＴＯフラグが「１」であれば（Ｓ２６９：ＹＥＳ）、Ｓ／Ｓフラグに「１」をセットして（Ｓ２７０）、その後で後述するＳ２８０の処理へと進み、一方、ＡＵＴＯフラグが「１」でなければ（Ｓ２６９：ＮＯ）、後述するＳ２８０の処理へ直ちに進む。
【００７０】
さて一方、Ｓ２６２の処理時点で、ロアーキーの第２接点ＬｗＳＷ２のいずれのオンイベントも発生しなかったと判断した場合は（Ｓ２６２：ＮＯ）、Ｓ２７２〜Ｓ２７８の処理を行う。Ｓ２７２〜Ｓ２７８の処理は、図４におけるＳ２３６〜Ｓ２４２の処理と同様の処理なので詳細な説明は省略する。Ｓ２３６〜Ｓ２４２の処理中にあるＳ２７４またはＳ２７８の処理を終了した後は、後述するＳ２８０の処理へと進む。
【００７１】
さて、以上説明したＳ２５０〜Ｓ２７８に含まれる処理を終えると、続いて、ＣＰＵ２は、ＡＵＴＯフラグ＝「１」かつＳ／Ｓフラグ＝「１」であるか否かを判断する（Ｓ２８０）。ここで、ＡＵＴＯフラグおよびＳ／Ｓフラグの内、少なくとも一方が「１」でなければ（Ｓ２８０：ＮＯ）、速やかに第２和音処理を終了する。一方、ＡＵＴＯフラグ＝「１」かつＳ／Ｓフラグ＝「１」であれば（Ｓ２８０：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥ＝「ＦＦｈ」であるかどうかを判断する（Ｓ２８２）。ここで、コードタイプレジスタＣＤＴＹＰＥ＝「ＦＦｈ」であれば（Ｓ２８２：ＹＥＳ）、速やかに第２和音演奏処理を終了する。一方、コードタイプレジスタＣＤＴＹＰＥ＝「ＦＦｈ」でなければ（Ｓ２８２：ＮＯ）、コードタイプレジスタＣＤＴＹＰＥの値、およびコードルートレジスタＣＤＲＯＯＴの値に基づいた自動伴奏処理を行う（Ｓ２８６）。なお、このＳ２８６の自動伴奏処理は、本発明でいうコードに係る楽音を発生する処理である。
【００７２】
さて、この自動伴奏処理は、詳しくは図６に示すような処理である。自動伴奏処理を開始すると、ＣＰＵ２は、図６に示すように、まず、自動伴奏データの読み込みを行う（Ｓ３１０）。ＲＯＭ４には複数種の自動伴奏データが記憶されているが、その中の１つのデータがＳ３１０の処理において読み込まれる。続いて、発音タイミングであるか否かを調べる（Ｓ３１２）。これは、図示しないタイムカウンタでカウントアップされているタイム値と、Ｓ３１０で取り出した自動伴奏データに含まれるステップタイムとを比較することにより行われる。なお、タイムカウンタは、ＡＵＴＯフラグ＝「１」かつＳ／Ｓフラグ＝「１」となるとタイム値のカウントを開始するように構成されている。
【００７３】
ここで、発音タイミングでないと判断した場合には（Ｓ３１２：ＮＯ）、Ｓ３１８の処理へと進み、一方、発音タイミングであると判断した場合には（Ｓ３１２：ＹＥＳ）、コード展開処理を行う（Ｓ３１４）。コード展開処理は、予めコードパターンとして例えばＲＯＭ４に記憶されているデータを、自動伴奏データに含まれるキーコード、コードタイプレジスタＣＤＴＹＰＥの値、コードルートレジスタＣＤＲＯＯＴの値に基づいて変更を加える処理である。このコード展開処理により、伴奏音として発音すべき楽音が決定される。なお、この種のコード展開処理は、周知技術であり、例えば特開平４−３０１９７号公報に示されているので、ここでは詳細な説明を省略する。
【００７４】
さて、コード展開処理により発音すべき伴奏音を決定したら、その伴奏音のデータを楽音発生回路１４に送出して、伴奏音の発音処理を行う（Ｓ３１６）。これにより、音源１８で楽音信号が生成され、サウンドシステム１６を介して伴奏音が発生されることになる。
【００７５】
続いて、消音タイミングであるか否かを判断する（Ｓ３１８）。具体的には、発音中の楽音の発音時間が、当該発音を指示した自動伴奏データ中のゲートタイムで指示された時間を過ぎたかどうかを調べる。ここで、消音タイミングでないと判断した場合には（Ｓ３１８：ＮＯ）、速やかに自動伴奏処理を終了する。一方、消音タイミングであると判断した場合には（Ｓ３１８：ＹＥＳ）、消音タイミングに達した楽音の消音処理を行う（Ｓ３２０）。これは、その楽音を消音すべき旨の情報を楽音発生回路１４に送出することによって行われる。その結果、楽音発生回路１４では、消音すべき楽音に対応するアサイメントメモリ１４ａがクリアされ、その楽音（すなわち伴奏音）の発生が停止される。なお、消音処理を終えたら、自動伴奏処理を終了する。
【００７６】
このようにして図６に示した自動伴奏処理を終えると、図５におけるＳ２８６の処理を終えたことになり、図５に示した第２和音演奏処理を終了する。そして、この第２和音演奏処理を終えると、図２におけるＳ４０の処理を終えたことになり、この後は、再びＳ１５の処理へと戻って本処理を繰り返すことになる。
【００７７】
次に、一定時間毎に実行される第１タイマ割込処理、第２タイマ割込処理について説明する。これらの割込処理は、タイマ２ａにより一定時間（本実施形態では１ｍｓｅｃ）毎に割込信号が発生されると、ＣＰＵ２によって実行される処理である。第１タイマ割込処理は、ＡＯＣフラグ＝「１」の場合に、タイマ２ａから割込信号が入力されると起動される処理であり、第２タイマ割込処理は、ＡＯＣフラグ≠「１」かつＡＵＴＯフラグ＝「１」の場合に、タイマ２ａから割込信号が入力されると起動される処理である。
【００７８】
まず、第１タイマ割込処理について説明する。
第１タイマ割込処理を開始すると、ＣＰＵ２は、まず、タイマレジスタＴＩＭＥＲが「０」であるかどうかを判断し（Ｓ４０５）、タイマレジスタＴＩＭＥＲが「０」であれば（Ｓ４０５：ＹＥＳ）、直ちに第１タイマ割込処理を終了する。一方、タイマレジスタＴＩＭＥＲが「０」でなければ（Ｓ４０５：ＮＯ）、タイマレジスタＴＩＭＥＲの値を「１」減らし（Ｓ４１０）、その結果、タイマレジスタＴＩＭＥＲの値が「０」となったか否かを判断する（Ｓ４２０）。なお、タイマレジスタＴＩＭＥＲの値が「０」とは、コード検出を行うべきタイミングであることを意味している。
【００７９】
タイマレジスタＴＩＭＥＲの値が「０」でなければ（Ｓ４２０：ＮＯ）、直ちに第１タイマ割込処理を終了する。一方、タイマレジスタＴＩＭＥＲの値が「０」であれば（Ｓ４２０：ＹＥＳ）、複数あるロアーキーの第１接点ＬｗＳＷ１が、すべてオフ状態であるかどうかを判断する（Ｓ４３０）。
【００８０】
ここで、複数あるロアーキーの第１接点ＬｗＳＷ１の内、いずれかがオンであれば（Ｓ４３０：ＮＯ）、第１接点ＬｗＳＷ１がオン状態である鍵について、その鍵のキーコードに基づいてコードタイプおよびコードルートを決定する（Ｓ４４０）。ここで決定したコードタイプおよびコードルートは、それぞれコードタイプレジスタＣＤＴＹＰＥ、コードルートレジスタＣＤＲＯＯＴに格納される。なお、このようなキーコードに基づくコード検出は、例えば特公昭５６−５１６３０、特開平４−３１１０００号公報等に記載された周知技術であるので、ここでは詳細な説明を省略する。
【００８１】
続いて、複数あるロアーキーの第２接点ＬｗＳＷ２が、すべてオフ状態であるか否かを判断する（Ｓ４４５）。ここで、第２接点ＬｗＳＷ２がすべてオフ状態であれば（Ｓ４４５：ＹＥＳ）、速やかに第１タイマ割込処理を終了する。一方、複数ある第２接点ＬｗＳＷ２の内、いずれかがオンであれば（Ｓ４４５：ＮＯ）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納された値に基づいて、新規和音を作成する（Ｓ４５０）。具体的な処理手順は、既に説明したＳ２３２の処理と同様なので、ここでは詳細な説明を省略する。
【００８２】
続いて、既に和音を発音中の状態にあるか否かを判断する（Ｓ４６０）。ここで発音中の状態にあると判断されるのは、Ｓ４５０の処理以前に既にコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの値に基づいて和音（以下、これを旧和音）が作成され、その旧和音を、サウンドシステム１６が発音している場合である。旧和音を発音していない状態であれば（Ｓ４６０：ＮＯ）、ＣＰＵ２は、サウンドシステム１６に新規和音を発音させて（Ｓ４６５）、第１タイマ割込処理を終了する。なお、Ｓ４６５の処理において、新規和音を発音させる際には、Ｓ２６４にて作成されたロアーキーに対する最新のタッチデータに基づいて楽音発生回路１４を制御する。
【００８３】
一方、旧和音を発音している状態であれば（Ｓ４６０：ＹＥＳ）、楽音発生回路１４を制御して、現在発音中である旧和音の構成音の内、新規和音に含まれない構成音を消音させる（Ｓ４７０）。そして、新規和音を構成する楽音の内、現在発音中の旧和音に含まれないものを、サウンドシステム１６から発音させて（Ｓ４８０）、第１タイマ割込処理を終了する。
【００８４】
さて一方、上記Ｓ４３０の処理時点で、ロアーキーの第１接点ＬｗＳＷ１がすべてオフ状態であった場合は（Ｓ４３０：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴにそれぞれ「ＦＦｈ」を格納する（Ｓ４９０）。
【００８５】
そして、既に和音を発音中の状態にあるか否かを判断し（Ｓ５００）、和音が発音されていない場合には（Ｓ５００：ＮＯ）、直ちにタイマ割込処理を終了する。一方、和音が発音されている場合には（Ｓ５００：ＹＥＳ）、楽音発生回路１４を制御して発音中の和音を消音させ（Ｓ５１０）、第１タイマ割込処理を終了する。
【００８６】
次に、第２タイマ割込処理について説明する。
第２タイマ割込処理を開始すると、ＣＰＵ２は、まず、タイマレジスタＴＩＭＥＲの値を「１」減らし（Ｓ６１０）、その結果、タイマレジスタＴＩＭＥＲの値が「０」となったか否かを判断する（Ｓ６２０）。
【００８７】
タイマレジスタＴＩＭＥＲの値が「０」でなければ（Ｓ６２０：ＮＯ）、直ちに第２タイマ割込処理を終了する。一方、タイマレジスタＴＩＭＥＲの値が「０」であれば（Ｓ６２０：ＹＥＳ）、複数あるロアーキーの第１接点ＬｗＳＷ１が、すべてオフ状態であるかどうかを判断する（Ｓ６３０）。
【００８８】
ここで、複数あるロアーキーの第１接点ＬｗＳＷ１の内、いずれかがオンであれば（Ｓ６３０：ＮＯ）、第１接点ＬｗＳＷ１がオン状態である鍵について、その鍵のキーコードに基づいてコードタイプおよびコードルートを決定する（Ｓ６４０）。Ｓ６４０の具体的な処理内容は、既に説明した第１タイマ割込処理におけるＳ４４０の処理と同様なので、その詳細な説明は省略する。
【００８９】
続いて、複数あるロアーキーの第２接点ＬｗＳＷ２が、すべてオフ状態であるか否かを判断する（Ｓ６４５）。ここで、第２接点ＬｗＳＷ２がすべてオフ状態であれば（Ｓ６４５：ＹＥＳ）、速やかに第２タイマ割込処理を終了する。一方、複数ある第２接点ＬｗＳＷ２の内、いずれかがオンであれば（Ｓ６４５：ＮＯ）、ＲＯＭ４の自動伴奏データの中から、現在、発音タイミングにあるものをコード展開する（Ｓ６５０）。このコード展開処理は、既に説明したＳ３１４の処理と同様なので、ここでは詳細な説明を省略する。
【００９０】
続いて、既に自動伴奏音（以下、これを旧伴奏音という）を発音中の状態にあるか否かを調べる（Ｓ６６０）。旧伴奏音を発音中でなければ（Ｓ６６０：ＮＯ）、Ｓ６５０のコード展開処理で決定された新規伴奏音をサウンドシステム１６から発音させて（Ｓ６６５）、第２タイマ割込処理を終了する。
【００９１】
一方、旧伴奏音を発音中であれば（Ｓ６６０：ＹＥＳ）、楽音発生回路１４を制御して、現在発音中である旧伴奏音の構成音の内、新規伴奏音に含まれない構成音を消音させる（Ｓ６７０）。そして、新規伴奏音を構成する楽音の内、現在発音中の旧伴奏音に含まれないものを、サウンドシステム１６から発音させて（Ｓ６８０）、第２タイマ割込処理を終了する。
【００９２】
さて一方、上記Ｓ６３０の処理時点で、ロアーキーの第１接点ＬｗＳＷ１がすべてオフ状態であった場合には（Ｓ６３０：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴにそれぞれ「ＦＦｈ」を格納する（Ｓ６９０）。
【００９３】
そして、既に自動伴奏音を発音中の状態にあるか否かを判断し（Ｓ７００）、自動伴奏音が発音されていない場合には（Ｓ７００：ＮＯ）、直ちに第２タイマ割込処理を終了する。一方、自動伴奏音が発音されている場合には（Ｓ７００：ＹＥＳ）、楽音発生回路１４を制御して発音中の自動伴奏音を消音させ（Ｓ５１０）、第２タイマ割込処理を終了する。なお、Ｓ６９０〜Ｓ７１０の処理により、伴奏音は発音されなくなるが、Ｓ／Ｓフラグ＝「１」のままであるので、リズム伴奏は継続される。
【００９４】
以上説明したような処理により、本電子楽器からは、図１０のタイミングチャートに示すようなタイミングで和音が発生する。なお、図１０は、本電子楽器がＡＯＣモードにある場合のタイミングチャートである。以下の説明において、必要な箇所には、図４または図８のフローチャート中の各処理ステップに付した符号を併記する。
【００９５】
図１０（ａ）は、３つのロアーキー（押下された順に、「１ｓｔキー」、「２ｎｄキー」、「３ｒｄキー」と記す）の第１接点ＬｗＳＷ１および第２接点ＬｗＳＷ２のオン／オフ状態を示している。
まず１ｓｔキーが押下され、その第１接点ＬｗＳＷ１がオンにされると（Ｓ２１０：ＹＥＳ）、押鍵待機時間ΔＴｏｎの計時が開始される。その後、２ｎｄキーが押下されてその第１接点ＬｗＳＷ１がオンにされると（Ｓ２１０：ＹＥＳ）、１ｓｔキーの第１接点ＬｗＳＷ１がオンにされてから押鍵待機時間ΔＴｏｎが経過する前であっても、その計時は中断され、新たに、押鍵待機時間ΔＴｏｎの計時が最初から始められる（Ｓ２２０）。２ｎｄキーの第１接点ＬｗＳＷ１がオンにされた後、さらに３ｒｄキーが押下されてその第１接点ＬｗＳＷ１がオンにされると（Ｓ２１０：ＹＥＳ）、２ｎｄキーの第１接点ＬｗＳＷ１がオンにされてから押鍵待機時間ΔＴｏｎが経過する前であっても、その計時は中断され、押鍵待機時間ΔＴｏｎの計時が最初から始められる（Ｓ２２０）。
【００９６】
３ｒｄキーの第１接点ＬｗＳＷ１がオンにされた後（Ｓ２１０：ＹＥＳ）、１ｓｔキーの第２接点ＬｗＳＷ２がオンにされると（Ｓ２２２：ＹＥＳ）、これが最初の第２接点ＬｗＳＷ２におけるオンイベントなので（Ｓ２２６：ＹＥＳ）、その時点（時刻ｔ１）では、先に計時を始めた押鍵待機時間ΔＴｏｎが経過する時刻ｔ２には至っていないにもかかわらず、直ちにコード検出が行われ（Ｓ２３０）、タイマレジスタＴＩＭＥＲがリセットされ（Ｓ２３１）、新規和音の作成（Ｓ２３２）、新規和音の発音が行われる（Ｓ２３４）。
【００９７】
なお、この後、２ｎｄキー、３ｒｄキーの第２接点ＬｗＳＷ２が、順にオンにされるが（Ｓ２２２：ＹＥＳ）、この時は、最初の第２接点ＬｗＳＷ２におけるオンイベントではなく（Ｓ２２６：ＮＯ）、タイマレジスタＴＩＭＥＲがリセット済みなので（Ｓ４０５：ＹＥＳ）、既に発音されている和音が継続して発音されるだけである。
【００９８】
このようにして新規和音の発音を行えば、押鍵待機時間ΔＴｏｎの経過を待たなくてもよいので、押鍵待機時間ΔＴｏｎの経過を待つものに比べ、迅速に発音を行うことができる。しかも、第１接点ＬｗＳＷ１のオン状態に基づいて和音を決定しているので、第２接点ＬｗＳＷ２では押鍵状態とされるか否かが不確定であるにもかかわらず、的確に演奏者の意図を反映した和音を発生できる可能性が高い。
【００９９】
さて、上記のように１ｓｔキー〜３ｒｄキーまでが押された状態になった後、２ｎｄキー、３ｒｄキーが、この順序で離された場合は、まず２ｎｄキーの第２接点ＬｗＳＷ２がオフにされると（Ｓ２３６：ＹＥＳ）、離鍵待機時間ΔＴｏｆｆの計時が開始される（Ｓ２３８）。その後、３ｒｄキーが離されてその第２接点ＬｗＳＷ２がオフにされると（Ｓ２３６：ＹＥＳ）、２ｎｄキーの第２接点ＬｗＳＷ２がオフにされてから離鍵待機時間ΔＴｏｆｆが経過する前であっても、その計時は中断され、新たに、離鍵待機時間ΔＴｏｆｆの計時が最初から開始される（Ｓ２３８）。
【０１００】
３ｒｄキーの第２接点ＬｗＳＷ２がオフにされた後（Ｓ２３６：ＹＥＳ）、ロアーキーの押鍵操作・離鍵操作のいずれもなく、離鍵待機時間ΔＴｏｆｆの計時が中断されずに完了すると（時刻ｔ３）、コード検出が行われる（Ｓ４４０）。この場合には、１ｓｔキーのみに基づいてコードの検出が行われる。そして、新規和音が作成され（Ｓ４５０）、さらに、旧和音を発音中であるので（Ｓ４６０：ＹＥＳ）、新規和音を構成しない楽音が消音され（Ｓ４７０）、新規和音を構成する音高の楽音が発音される（Ｓ４８０）。
【０１０１】
以上説明したように、本実施形態の電子楽器においては、演奏者がいくつかのロアーキーを操作してコードを指定するだけで、そのコードに係る楽音（和音、自動伴奏音）が発生するので、例えば初心者であっても簡単な操作で複雑な伴奏音を発生させることができる。
【０１０２】
特に、押鍵操作がなされた際には、第２接点ＬｗＳＷ２によって押鍵状態への状態変化を検知したら、第１接点ＬｗＳＷ１による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせを判別するので、押鍵待機時間ΔＴｏｎの経過を待ってからコード検出を行うものに比べ、押鍵操作の開始時点から演奏音発生時点までのタイムラグは短縮される。しかも、第２接点ＬｗＳＷ２で確実な状態変化を検知した上でコード検出を行うので、第１接点ＬｗＳＷ１で状態変化を検知したことを契機としてコード検出を行うようなものに比べ、演奏者の意図がより的確に反映された楽音を発生させることができる。
【０１０３】
したがって、本実施形態の電子楽器によれば、押鍵操作後の反応がよくなり、演奏者が、演奏音発生の遅れに違和感を覚えることはない。また、演奏者の意図しないコードに係る楽音が発生してしまう確率は低くなり、演奏者が気持ちよく思い通りの演奏を行うことができる。
【０１０４】
また、本実施形態の電子楽器においては、最初の第２接点ＬｗＳＷ２のオンイベントについてだけ、直ちに新規和音の作成を行っているので、後から第２接点ＬｗＳＷ２のオンイベントが発生しても、いたずらに新規和音の作成が繰り返されることはなく、楽音発生手段にかかる処理負担を抑制することができる。
【０１０５】
なお、以上説明した電子楽器は、上記請求項１、請求項２に記載の構成を採用したものに相当する。
以上、本発明の実施形態について説明したが、本発明の実施形態については上記のもの以外にも種々の具体的形態が考えられる。以下、有用な変形例について説明する。
【０１０６】
まず、第１変形例について説明する。
上記実施形態の電子楽器では、図４に示した第１和音演奏処理を採用していたが、これに代えて、図１１に示すような第１和音演奏処理を採用してもよい。図１１の処理は、図４の処理中にあるＳ２２６，Ｓ２２８，Ｓ２３０，Ｓ２３１の処理の代わりに、Ｓ２２５，Ｓ２２７，Ｓ２２９の処理を採用したものである。なお、以下、図１１の処理について説明するが、図４、図１１に示した２つの処理には重複する部分が多いので、以下の説明では、Ｓ２２５，Ｓ２２７，Ｓ２２９の処理についてのみ詳述し、他の処理ステップについては、両フローチャート中に同じ符号を付すこととして、その説明を省略する。
【０１０７】
図１１に示す第１和音演奏処理を開始した後、ＣＰＵ２は、複数あるロアーキーの第２接点ＬｗＳＷ２のいずれかにおいてオンイベントが発生したら（Ｓ２２２：ＹＥＳ）、タッチデータを作成する（Ｓ２２４）。
続いて、ＳＷ１ビットマップＳＷ１ＢＭＰに基づいて、新たにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納すべき値を決定する（Ｓ２２５）。このＳ２２５の処理の結果、押鍵待機時間ΔＴｏｎの経過を待つことなく、速やかにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの値が確定することになる。このＳ２２５の処理は、第２接点ＬｗＳＷ２（第２検知手段）によって状態変化を検知したら、第１接点ＬｗＳＷ１（第１検知手段）による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせに対応するコードを検出する処理であり、本発明の主要部に該当する処理である。
【０１０８】
そして、Ｓ２２５の処理を終えたら、タイマレジスタＴＩＭＥＲに「０」を設定し（Ｓ２２７）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに変更があったか否かを判断する（Ｓ２２９）。具体的には、上記Ｓ２２５の処理において決定した新たな値を、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納する前に、その時点でコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納されている値を、適当なメモリ領域に保存しておき、新旧２つの値を比較すればよい。
【０１０９】
ここで、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴが双方とも変更されていなければ（Ｓ２２９：ＮＯ）、第１和音演奏処理を速やかに終了する。
一方、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの内、少なくとも一方が変更されていれば（Ｓ２２９：ＹＥＳ）、コードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納された値に基づいて、新規和音を作成する（Ｓ２３２）。
【０１１０】
Ｓ２３２に引き続く処理、および、その他説明しなかった処理は、図４に示した処理と同じである。
以上のような第１和音演奏処理を採用すると、図４の第１和音演奏処理とは異なり、第２接点ＬｗＳＷ２のオンイベントがあるたびに、新規和音を作成すべきか否かの再確認が行われるので（Ｓ２２９）、演奏者の意図した和音を的確に発生できる可能性がより一層高くなる。
【０１１１】
次に、第２変形例について説明する。
上記実施形態の電子楽器では、図５に示した第２和音演奏処理、および図９に示した第２タイマ割込処理を採用していたが、これに代えて、図１２に示すような第２和音演奏処理、および図１３に示すような第２タイマ割込処理を採用してもよい。図１２の処理は、図５の処理中にあるＳ２６６，Ｓ２６７，Ｓ２６８の処理を削除し、その代わりに、Ｓ２９０，Ｓ２９２，Ｓ２９４，Ｓ２９６の処理を採用したものである。また、図１３の処理は、図９の処理中にあるＳ６４０の処理を削除し、その代わりに、Ｓ６０５，Ｓ６４１の処理を採用したものである。なお、以下の説明においても、代替採用した処理について詳述し、他の処理ステップについては、先に示したフローチャート中の符号と同じ符号を付すこととして、その説明を省略する。
【０１１２】
図１２に示す第２和音演奏処理を開始した後、ＣＰＵ２は、複数あるロアーキーの第２接点ＬｗＳＷ２のいずれかにおいてオンイベントが発生したら（Ｓ２６２：ＹＥＳ）、タッチデータを作成し（Ｓ２６４）、最初の第２接点ＬｗＳＷ２のオンイベントであるかどうかを判断する（Ｓ２６５）。
【０１１３】
ここで、最初の第２接点ＬｗＳＷ２のオンイベントであれば（Ｓ２６５：ＹＥＳ）、Ｓ／Ｓフラグが「０」であるかどうかを調べ（Ｓ２９０）、Ｓ／Ｓフラグが「１」であれば（Ｓ２９０：ＹＥＳ）、ＡＵＴＯフラグが「１」であるかどうかを調べる（Ｓ２６９）。ＡＵＴＯフラグが「１」であれば（Ｓ２６９：ＹＥＳ）、Ｓ／Ｓフラグに「１」をセットして（Ｓ２７０）、ＳＷ１ビットマップＳＷ１ＢＭＰに基づいて、新たにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納すべき値を決定する（Ｓ２９２）。このＳ２９２の処理の結果、押鍵待機時間ΔＴｏｎの経過を待つことなく、速やかにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴの値が確定することになる。このＳ２９２の処理は、第２接点ＬｗＳＷ２（第２検知手段）によって状態変化を検知したら、第１接点ＬｗＳＷ１（第１検知手段）による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせに対応するコードを検出する処理であり、本発明の主要部に該当する処理である。なお、Ｓ２９２の処理を終えたら、Ｓ２９６の処理へと進む。
【０１１４】
さて一方、上記Ｓ２６５の処理において、最初の第２接点ＬｗＳＷ２のオンイベントでないと判断した場合（Ｓ２６５：ＮＯ）、あるいは、上記Ｓ２９０の処理時に、Ｓ／Ｓフラグが「１」でなかった場合（Ｓ２９０：ＮＯ）、あるいは、上記Ｓ２６９の処理時に、ＡＵＴＯフラグが「１」でなかった場合（Ｓ２６９：ＮＯ）のいずれかであれば、ＳＷ２ビットマップＳＷ２ＢＭＰに基づいて、新たにコードタイプレジスタＣＤＴＹＰＥおよびコードルートレジスタＣＤＲＯＯＴに格納すべき値を決定する（Ｓ２９４）。このＳ２９４の処理は、第２接点ＬｗＳＷ２（第２検知手段）によって状態変化を検知したら、第２接点ＬｗＳＷ２（第２検知手段）による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせに対応するコードを検出する処理であり、上記請求項４に記載の構成に相当する処理である。なお、Ｓ２９２の処理を終えたら、Ｓ２９６の処理へと進む。
【０１１５】
こうして、Ｓ２９２またはＳ２９４の処理を終えたら、タイマレジスタＴＩＭＥＲに「０」を設定し（Ｓ２９６）、Ｓ２８０の処理へと進む。以下、Ｓ２８０に引き続く処理、および、その他説明しなかった処理は、図５に示した処理と同じである。
【０１１６】
さて一方、図１３に示す第２タイマ割込処理では、まず、タイマレジスタＴＩＭＥＲの値が「０」であるか否かを判断し（Ｓ６０５）、「０」でない場合に限り（Ｓ６０５：ＮＯ）、Ｓ６１０以降の処理へと進み、「０」である場合は（Ｓ６０５：ＹＥＳ）、直ちに第２タイマ割込処理を終える。このような処理を加えることにより、図１２に示した第２和音演奏処理内でタイマレジスタＴＩＭＥＲに「０」を設定された場合は、第２タイマ割込処理を速やかに終えることができる。
【０１１７】
また、図１３に示す第２タイマ割込処理において、複数あるロアーキーの第１接点ＬｗＳＷ１の内、いずれかがオンであれば（Ｓ６３０：ＮＯ）、第２接点ＬｗＳＷ２がオン状態である鍵について、その鍵のキーコードに基づいてコードタイプおよびコードルートを決定する（Ｓ６４１）。Ｓ６４１の処理に続くＳ６４５以降の処理は、図９に示した処理と同じである。
【０１１８】
以上のような第２和音演奏処理および第２タイマ割込処理を採用すると、図５の第２和音演奏処理および図９の第２タイマ割込処理を採用した場合とは異なり、無音状態からの最初の押鍵で（Ｓ２６５）、且つ未だ自動伴奏中ではなく（Ｓ２６９）、且つ自動伴奏を行う旨の設定がなされている（Ｓ２９２）という状態である場合に、第１接点ＬｗＳＷ１による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせを判別する。そのため、押鍵待機時間ΔＴｏｎの経過を待ってからコード検出を行うものに比べ、押鍵操作／離鍵操作の開始時点から演奏音発生時点までのタイムラグは短縮される。一方、既に押鍵がなされている場合、あるいは、既に自動伴奏中である場合、あるいは、自動伴奏を行う旨の設定がなされていない場合などは、第２接点ＬｗＳＷ２で確実な状態変化を検知した上でコード検出を行う。そのため、第１接点ＬｗＳＷ１で状態変化を検知したことを契機としてコード検出を行うようなものに比べ、演奏者の意図がより的確に反映された楽音を発生させることができる。
【０１１９】
したがって、本実施形態の電子楽器によれば、自動伴奏を開始するときにおける押鍵操作／離鍵操作後の反応がよくなり、演奏者が、伴奏音発生の遅れに違和感を覚えることはない。また、自動伴奏中や、自動伴奏以外の演奏音を発生させる場合は、演奏者の意図しないコードに係る楽音が発生してしまう確率は低くなる。
【０１２０】
次に、第３変形例について説明する。
第３変形例として説明する電子楽器は、上記第２変形例として説明した電子楽器に対し、第１接点ＬｗＳＷ１に基づくコード検出を行う場合の条件を、さらに制限したものである。
【０１２１】
すなわち、第２変形例のものは、無音状態からの最初の押鍵で（Ｓ２６５）、且つ未だ自動伴奏中ではなく（Ｓ２６９）、且つ自動伴奏を行う旨の設定がなされている（Ｓ２９２）という状態であることを条件に、第１接点ＬｗＳＷ１による状態変化の検知結果に基づいてコード検出を行ったが、第３変形例の電子楽器は、さらに、ＳＹＮＣフラグに「１」が設定されていることを、上記条件に加える。
【０１２２】
ＳＹＮＣフラグは、ＳＹＮＣスイッチがオンにされて、シンクロスタートモードでの演奏を行う旨の設定がなされた場合に、「１」が設定される。
したがって、このように構成された電子楽器によれば、シンクロスタートモードで自動伴奏を開始するときにおける押鍵操作／離鍵操作後の反応がよくなり、演奏者が、伴奏音発生の遅れに違和感を覚えることはない。また、シンクロスタートモードでの自動伴奏を行わない場合、シンクロスタートモードであっても既に自動伴奏中である場合、自動伴奏以外の演奏音を発生させる場合などは、演奏者の意図しないコードに係る楽音が発生してしまう確率は低くなる。
【０１２３】
なお、この第３変形例に記載の電子楽器は、上記請求項５に記載の構成を採用したものに相当する。
次に、第４変形例について説明する。
本発明の実施形態として説明した上記各電子楽器は、いずれも押鍵操作時のタイムラグの解消を図ったものであったが、本発明の要部は、一方の検知手段に引き続いて他方の検知手段が状態変化を検知したら、一方の検知手段による状態変化の検知結果に基づいてコード検出を行う点にあり、これは離鍵操作時についても適用可能である。
【０１２４】
すなわち、上記実施形態の電子楽器において、離鍵操作時には、第２接点ＬｗＳＷ２がオフになり、引き続いて第１接点ＬｗＳＷ１がオフになるので、後からオフになる第１接点ＬｗＳＷ１が新たに１つオフになったら、オン状態のまま残っている第２接点ＬｗＳＷ２からコード検出を行うように構成する。
【０１２５】
このように構成された電子楽器によれば、離鍵操作がなされた際には、第１接点ＬｗＳＷ１によって離鍵状態への状態変化を検知したら、第２接点ＬｗＳＷ２による状態変化の検知結果に基づいて、押鍵状態にある鍵の組み合わせを判別する。そのため、離鍵待機時間ΔＴｏｆｆの経過を待ってからコード検出を行うものに比べ、離鍵操作の開始時点から新たなコードに係る演奏音発生時点までのタイムラグは短縮される。具体的には、図１０に併記したように、待機時間ΔＴｏｆｆの経過を待ってからコード検出を行うと時刻ｔ３で和音検出が行われていたが、第４変形例の電子楽器であれば、時刻ｔ３よりも早い時刻ｔ４において和音検出を行うことができる。
【０１２６】
しかも、第１接点ＬｗＳＷ１で確実な離鍵状態への変化を検知した上でコード検出を行うので、第２接点ＬｗＳＷ２で状態変化を検知したことを契機としてコード検出を行うようなものに比べ、演奏者の意図がより的確に反映された楽音を発生させることができる。
したがって、本実施形態の電子楽器によれば、離鍵操作後の反応がよくなり、演奏者が、演奏音発生の遅れに違和感を覚えることはない。また、演奏者の意図しないコードに係る楽音が発生してしまう確率は低くなり、演奏者が気持ちよく思い通りの演奏を行うことができる。
【０１２７】
なお、この第４変形例に記載の電子楽器は、上記請求項３に記載の構成を採用したものに相当する。
【図面の簡単な説明】
【図１】本発明の一実施形態としての電子楽器の構成図である。
【図２】メインルーチンのフローチャートである。
【図３】通常演奏処理を示すフローチャートである。
【図４】第１和音演奏処理を示すフローチャートである。
【図５】第２和音演奏処理を示すフローチャートである。
【図６】自動演奏処理を示すフローチャートである。
【図７】コードに係る楽音を求める際に使用する和音表を示す図である。
【図８】第１タイマ割込処理を示すフローチャートである。
【図９】第２タイマ割込処理を示すフローチャートである。
【図１０】鍵盤操作に伴う処理のタイミングの具体例を示すタイムチャートである。
【図１１】図４とは別の第１和音演奏処理を示すフローチャートである。
【図１２】図５とは別の第２和音演奏処理を示すフローチャートである。
【図１３】図９とは別の第２タイマ割込処理を示すフローチャートである。
【符号の説明】
２・・・ＣＰＵ、２ａ・・・タイマ、４・・・ＲＯＭ、６・・・ＲＡＭ、８・・・オートカウンタ、１０・・・パネル、１２・・・キーボード、１４・・・楽音発生回路、１４ａ・・・アサイメントメモリ、１６・・・サウンドシステム、１８・・・音源、２１・・・バス。
【図１】
0003626863.tif 000002
【図２】
0003626863.tif 000003
【図３】
0003626863.tif 000004
【図４】
0003626863.tif 000005
【図５】
0003626863.tif 000006
【図６】
0003626863.tif 000007
【図７】
0003626863.tif 000008
【図８】
0003626863.tif 000009
【図９】
0003626863.tif 000010
【図１０】
0003626863.tif 000011
【図１１】
0003626863.tif 000012
【図１２】
0003626863.tif 000013
【図１３】
0003626863.tif 000014