(57)【要約】【課題】  同一鍵の連打時にあっても鍵情報による楽音信号の再生を正確に行うとともに、鍵が視覚的に不自然さを感じないように駆動されるようにする。【解決手段】  コンピュータ部７０は、曲データ中のイベントデータを時間経過に従って読み出して、読み出したイベントデータに応じて、音源回路６６における楽音信号の発生を制御するとともに、鍵駆動装置５０を制御して鍵盤装置１０を駆動する。所定の短時間内に同一の鍵に関するイベントデータが読み出されたとき、すなわち同一鍵の連打時には、コンピュータ部７０は、鍵の駆動制御を遅延して、鍵駆動装置５０による押鍵動作又は離鍵動作を遅延する。【選択図】  図１
2008233825.tif 000002
【特許請求の範囲】
【請求項１】
複数の鍵をそれぞれ独立に駆動して押鍵動作及び離鍵動作させる鍵駆動装置と、
前記複数の鍵に対応した楽音信号を発生する楽音信号発生手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記鍵駆動装置による押鍵動作及び離鍵動作を電気的に制御する鍵駆動制御手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記楽音信号発生手段による楽音信号の発生を制御する楽音信号発生制御手段とを備えた楽器の制御装置であって、
前記楽音信号発生制御手段は、前記複数の鍵の押鍵及び離鍵を表す鍵情報の供給に応答して即座に前記楽音信号発生手段による楽音信号の発生を制御し、かつ
前記鍵駆動制御手段は、所定の短時間内に同一の鍵に関する押鍵及び離鍵を表す複数の鍵情報が供給されたとき、前記押鍵又は離鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作又は離鍵動作を遅延させる遅延手段を有する楽器の制御装置。
【請求項２】
請求項１に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記押鍵動作の制御開始からの経過時間に従って変化する駆動力で前記鍵駆動装置が鍵を駆動するように押鍵動作を制御し、かつ
前記遅延手段は、押鍵を表す鍵情報の供給直後の同一の鍵に関する離鍵を表す鍵情報の供給に対し、前記押鍵動作の制御開始から所定の時間が経過するまで、前記離鍵を表す鍵情報に応じた前記鍵駆動装置による離鍵動作の制御開始を遅延する楽器の制御装置。
【請求項３】
請求項２に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記遅延手段によって離鍵動作の制御開始を遅延させている状態で、同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、前記離鍵動作の制御及び前記新たな押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作の制御をキャンセルするキャンセル手段を有する楽器の制御装置。
【請求項４】
請求項１に記載した楽器の制御装置において、
複数の鍵の押鍵及び離鍵により切換えられて各鍵の押鍵状態及び離鍵状態をそれぞれ検出する複数のスイッチをさらに備え、
前記鍵駆動制御手段は、前記離鍵動作の制御開始からの経過時間に従って変化する駆動力で前記鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ
前記遅延手段は、離鍵を表す鍵情報の供給直後の同一の鍵に関する押鍵を表す鍵情報の供給に対し、前記離鍵動作の制御中に前記鍵スイッチによって前記同一の鍵の離鍵状態が検出されるまで、前記押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作の制御開始を遅延する楽器の制御装置。
【請求項５】
請求項１に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記離鍵動作の制御開始からの経過時間に従って変化する駆動力で前記鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ
前記遅延手段は、離鍵を表す鍵情報の供給直後の同一の鍵に関する押鍵を表す鍵情報の供給に対し、前記離鍵動作の制御開始から所定の時間が経過するまで、前記押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作の制御開始を遅延する楽器の制御装置。
【請求項６】
請求項４又は５に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記遅延手段によって押鍵動作の制御開始を遅延させている状態で、同一の鍵に関する新たな離鍵を表す鍵情報が供給されたとき、前記新たな離鍵を表す鍵情報を保持して、前記押鍵動作の制御終了後に、前記新たな離鍵を表す鍵情報に応じた前記鍵駆動装置による離鍵動作を開始させる離鍵保持手段を有する楽器の制御装置。
【請求項７】
請求項６に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記遅延手段によって押鍵動作の制御開始を遅延させている状態で、前記新たな離鍵を表す鍵情報の供給後に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、前記離鍵保持手段による離鍵動作及び前記新たな押鍵を表す鍵情報に応じた前記鍵駆動装置よる押鍵動作をキャンセルするキャンセル手段を有する楽器の制御装置。
【請求項８】
複数の鍵をそれぞれ独立に駆動して押鍵動作及び離鍵動作させる鍵駆動装置と、
前記複数の鍵に対応した楽音信号を発生する楽音信号発生手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記鍵駆動装置による押鍵動作及び離鍵動作を電気的に制御する鍵駆動制御手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記楽音信号発生手段による楽音信号の発生を制御する楽音信号発生制御手段とを備えた楽器の制御装置であって、
前記楽音信号発生制御手段は、前記複数の鍵の押鍵及び離鍵を表す鍵情報の供給に応答して即座に前記楽音信号発生手段による楽音信号の発生を制御し、
前記鍵駆動制御手段は、前記離鍵動作の制御開始からの経過時間に従って変化する駆動力で前記鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ
前記鍵駆動制御手段は、前記離鍵動作の制御中に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、前記離鍵動作の制御開始からの経過時間が所定の第１タイミング範囲内にあることを条件に前記新たな押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作を遅延する第１制御手段、及び前記離鍵動作の制御開始からの経過時間が前記第１タイミング範囲とは異なる所定の第２タイミング範囲内にあることを条件に前記新たな押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作を即座に行う第２制御手段を有する楽器の制御装置。
【請求項９】
複数の鍵をそれぞれ独立に駆動して押鍵動作及び離鍵動作させる鍵駆動装置と、
前記複数の鍵に対応した楽音信号を発生する楽音信号発生手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記鍵駆動装置による押鍵動作及び離鍵動作を電気的に制御する鍵駆動制御手段と、
時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて前記楽音信号発生手段による楽音信号の発生を制御する楽音信号発生制御手段とを備えた楽器の制御装置であって、
前記楽音信号発生制御手段は、前記複数の鍵の押鍵及び離鍵を表す鍵情報の供給に応答して即座に前記楽音信号発生手段による楽音信号の発生を制御し、
前記鍵駆動制御手段は、前記押鍵動作及び前記離鍵動作の制御開始からの経過時間に従ってそれぞれ変化する駆動力で前記鍵駆動装置が鍵を駆動するように押鍵動作及び離鍵動作を制御し、かつ
前記鍵駆動制御手段は、前記離鍵動作の制御中に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、前記新たな押鍵を表す鍵情報に応じた前記鍵駆動装置による押鍵動作の制御開始時の駆動力を、前記離鍵動作の制御開始から前記新たな押鍵を表す鍵情報供給までの時間に応じて異ならせる楽器の制御装置。
【請求項１０】
請求項９に記載した楽器の制御装置において、
前記鍵駆動制御手段は、前記新たな鍵の押鍵が遅くなるに従って、前記新たな押鍵を表す鍵情報による押鍵動作の制御開始時の駆動力を大きくするようにした楽器の制御装置。
【請求項１１】
請求項１０に記載した楽器の制御装置において、
前記鍵駆動装置による押鍵動作の駆動力を押鍵動作の制御開始時に大きく立ち上げ、その後に徐々に減少させ、前記鍵駆動装置による離鍵動作における駆動力を離鍵動作の制御開始から徐々に増加させるようにした楽器の制御装置。
【請求項１２】
請求項１乃至１１のうちのいずれか一つに記載した楽器の制御装置において、
前記鍵駆動装置は、ソレノイドへの通電による電磁力でプランジャを引き上げて鍵を原位置から変位させるようにした楽器の制御装置。
【請求項１３】
前記複数の鍵にそれぞれ連動する質量体をさらに備えた請求項１乃至１２のうちのいずれか一つに記載した楽器の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、押鍵及び離鍵を表す鍵情報に応じて楽音信号を発生させるとともに、鍵を駆動する楽器の制御装置に関する。
【背景技術】
【０００２】
従来から、例えば下記特許文献１に示されているように、曲データを時間経過に従って順次読み出して鍵及びハンマーを駆動する自動演奏ピアノは知られている。この自動演奏ピアノにおいては、同一の鍵に関する複数のキーオンデータ及びキーオフデータが短時間内に読み出されると、すなわち自動演奏による同一の鍵の連打時には、各キーオンデータの読み出しタイミングに正確に同期させて押鍵動作を制御することができないことに鑑み、キーオンデータを加工して押鍵動作において鍵及びハンマーに対する駆動力を通常よりも大きくし、又はキーオフデータによる離鍵動作を早めるようにしている。
【特許文献１】特許第３５５１５０７号公報
【発明の開示】
【０００３】
しかし、上記従来の装置は、鍵及びハンマーの駆動により、ハンマーによる打弦でピアノ音を発生させるものである。そして、前記のような連打時の改良を加えても、より速い同一鍵の連打時には鍵及びハンマーの駆動が間に合わず、曲データが正確に再生されない。本発明は、この点に鑑み、鍵の押鍵及び離鍵を表す鍵情報に応じて楽音信号を電気的に発生することに並行して、前記鍵情報に応じて鍵を駆動することにより、同一鍵の連打時にあっても鍵情報による楽音信号の再生を正確に行うとともに、視覚的に不自然を感じないように鍵を駆動することを目的とするものである。
【０００４】
本発明は、上記目的を達成するために、複数の鍵をそれぞれ独立に駆動して押鍵動作及び離鍵動作させる鍵駆動装置と、複数の鍵に対応した楽音信号を発生する楽音信号発生手段と、時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて鍵駆動装置による押鍵動作及び離鍵動作を電気的に制御する鍵駆動制御手段と、時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報に応じて楽音信号発生手段による楽音信号の発生を制御する楽音信号発生制御手段とを備えた楽器の制御装置であって、楽音信号発生制御手段は複数の鍵の押鍵及び離鍵を表す鍵情報の供給に応答して即座に楽音信号発生手段による楽音信号の発生を制御し、鍵駆動制御手段は、所定の短時間内に同一の鍵に関する押鍵及び離鍵を表す複数の鍵情報が供給されたとき、押鍵又は離鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作又は離鍵動作を遅延させる遅延手段を有する。
【０００５】
この場合、時間経過に従って供給される鍵の押鍵及び離鍵を表す鍵情報は、例えば、自動演奏による曲データの再生又は他の電子楽器からの演奏によるものである。また、複数の鍵には、それらにそれぞれ連動するハンマーなどの質量体をさらに備えるようにするとよい。さらに、鍵駆動装置を、例えばソレノイドへの通電による電磁力でプランジャを引き上げて鍵を原位置から変位させるように構成できる。
【０００６】
具体的には、鍵駆動制御手段は、押鍵動作の制御開始からの経過時間に従って変化する駆動力で鍵駆動装置が鍵を駆動するように押鍵動作を制御するものであり、遅延手段は、押鍵を表す鍵情報の供給直後の同一の鍵に関する離鍵を表す鍵情報の供給に対し、押鍵動作の制御開始から所定の時間が経過するまで、離鍵を表す鍵情報に応じた鍵駆動装置による離鍵動作の制御開始を遅延する。また、複数の鍵の押鍵及び離鍵により切換えられて各鍵の押鍵状態及び離鍵状態をそれぞれ検出する複数のスイッチをさらに備え、鍵駆動制御手段は、離鍵動作の制御開始からの経過時間に従って変化する駆動力で鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ遅延手段は、離鍵を表す鍵情報の供給直後の同一の鍵に関する押鍵を表す鍵情報の供給に対し、離鍵動作の制御中に鍵スイッチによって同一の鍵の離鍵状態が検出されるまで、押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作の制御開始を遅延する。さらに、鍵駆動制御手段は、離鍵動作の制御開始からの経過時間に従って変化する駆動力で鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ遅延手段は、離鍵を表す鍵情報の供給直後の同一の鍵に関する押鍵を表す鍵情報の供給に対し、離鍵動作の制御開始から所定の時間が経過するまで、押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作の制御開始を遅延する。
【０００７】
これによれば、短時間内に同一鍵に関する複数の鍵情報が供給される場合、いわゆる同一鍵の連打時にも、鍵の押鍵及び離鍵を表す鍵情報の供給に同期して、楽音信号が発生されるので、供給される鍵情報が正確に再生される。また、鍵の駆動においては、鍵駆動装置による鍵の駆動に遅延が生じる場合でも、遅延手段により、鍵の押鍵動作又は離鍵動作が適宜遅延され、この遅延はあまり大きくする必要はないので、鍵の押鍵動作及び離鍵動作が確実に行われるとともに、視覚的にも不自然でなくなる。
【０００８】
また、本発明の他の特徴は、前記楽器の制御装置において、鍵駆動制御手段は、遅延手段によって押鍵動作の制御開始を遅延させている状態で、同一の鍵に関する新たな離鍵を表す鍵情報が供給されたとき、新たな離鍵を表す鍵情報を保持して、押鍵動作の制御終了後に、新たな離鍵を表す鍵情報に応じた鍵駆動装置による離鍵動作を開始させる離鍵保持手段を有する。これによれば、離鍵を表す鍵情報の供給直後に、押鍵及び離鍵を表す鍵情報が続けて発生した場合でも、鍵が２回続けて確実に押鍵及び離鍵されるので、鍵の駆動が正確に行われる。
【０００９】
また、本発明の他の特徴は、鍵駆動制御手段は、遅延手段によって離鍵動作の制御開始を遅延させている状態で、同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、離鍵動作の制御及び新たな押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作の制御をキャンセルするキャンセル手段を有する。また、鍵駆動制御手段は、遅延手段によって押鍵動作の制御開始を遅延させている状態で、新たな離鍵を表す鍵情報の供給後に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、離鍵保持手段による離鍵動作及び新たな押鍵を表す鍵情報に応じた鍵駆動装置よる押鍵動作をキャンセルするキャンセル手段を有する。これによれば、連打に関係した鍵情報により鍵を駆動しても駆動に遅れが生じ、かつ最終的には鍵が押鍵状態に設定される場合には、離鍵動作及びそれに続く押鍵動作がキャンセルされ、鍵の駆動による不自然さが回避される。
【００１０】
また、本発明の他の特徴は、鍵駆動制御手段は、離鍵動作の制御開始からの経過時間に従って変化する駆動力で鍵駆動装置が鍵を駆動するように離鍵動作を制御し、かつ鍵駆動制御手段は、離鍵動作の制御中に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、離鍵動作の制御開始からの経過時間が所定の第１タイミング範囲内にあることを条件に新たな押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作を遅延する第１制御手段、及び離鍵動作の制御開始からの経過時間が第１タイミング範囲とは異なる所定の第２タイミング範囲内にあることを条件に新たな押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作を即座に行う第２制御手段を有する。これによれば、鍵駆動装置による離鍵動作において、第１及び第２制御手段が鍵の離鍵動作状態に応じて鍵の押鍵動作を遅延し又は鍵の押鍵動作を即座に行う、すなわち鍵の離鍵動作状態に応じて押鍵動作が的確に遅延されるので、鍵の押鍵動作及び離鍵動作が確実に行われるとともに、視覚的にも不自然でなくなる。
【００１１】
また、本発明の他の特徴は、鍵駆動制御手段は、押鍵動作及び離鍵動作の制御開始からの経過時間に従ってそれぞれ変化する駆動力で鍵駆動装置が鍵を駆動するように押鍵動作及び離鍵動作を制御し、かつ鍵駆動制御手段は、離鍵動作の制御中に同一の鍵に関する新たな押鍵を表す鍵情報が供給されたとき、新たな押鍵を表す鍵情報に応じた鍵駆動装置による押鍵動作の制御開始時の駆動力を、離鍵動作の制御開始から新たな押鍵を表す鍵情報の供給までの時間に応じて異ならせるようにしたことにある。この場合、鍵駆動制御手段は、例えば、新たな鍵の押鍵が遅くなるに従って、新たな押鍵を表す鍵情報による押鍵動作の制御開始時の駆動力を大きくするようにするとよい。そして、鍵駆動装置による押鍵動作の駆動力を押鍵動作の制御開始時に大きく立ち上げ、その後に徐々に減少させ、鍵駆動装置による離鍵動作における駆動力を離鍵動作の制御開始から徐々に増加させるようにするとよい。
【００１２】
これによれば、鍵の離鍵動作において、鍵が原位置に戻る過程の位置に応じて、押鍵動作を開始するための駆動力が的確に制御され、離鍵動作に続く押鍵動作が正確に行われるようになる。特に、鍵の原位置への復帰時において、離鍵動作における鍵の押鍵動作を確保するためには、鍵が原位置に近づくほど大きな駆動力を必要とする。特に、鍵にハンマーなどの質量体が設けられている場合には、この駆動力の違いは大きいが、このような事態が回避されて、離鍵動作に続く押鍵動作が正確に行われるようになる。また、ソレノイドへの通電による電磁力でプランジャを引き上げて鍵を駆動する構成においては、ソレノイドへの通電量が同じでも、鍵が原位置に近づくほど、電磁力は小さくなる。したがって、この場合には、鍵が原位置に近づくほど、ソレノイドへの通電量をさらに増加させる必要がある。
【００１３】
さらに、本発明の実施にあたっては、装置の発明に限定されることなく、コンピュータに実行させるコンピュータ読み取り可能なプログラムおよび方法の発明としても実施し得るものである。
【発明を実施するための最良の形態】
【００１４】
ａ．構成例
以下、本発明の一実施形態について図面を用いて説明する。図１は、本発明の一実施形態に係る電子楽器の構成を示す全体ブロック図である。この電子楽器は、鍵盤装置１０を備えている。鍵盤装置１０は、図２に示すように、前後方向に延設された複数の白鍵及び黒鍵１１を横方向に１列に配置している。各鍵１１は、図３Ａに示すように、合成樹脂により一体成形した鍵フレーム２０に組み付けられている。鍵フレーム２０は支持台３０上に固定されており、鍵フレーム２０には、複数の鍵１１に対応した複数の揺動レバー４０が複数の鍵１１の下方にてそれぞれ組み付けられている。
【００１５】
鍵１１は、下方を開放させて断面コ字状に合成樹脂により一体成形され、後端部１１ａを鍵フレーム２０の後端部２１に設けられて前方に開口した凹部に勘合させて、後端部１１ａの側面を支点に前端部１１ｂを上下方向に揺動可能に鍵フレーム２０に支持されている。鍵１１の前端部１１ｂには、鍵フレーム２０の前端水平部に立設された鍵ガイド２２が下方から侵入しており、鍵１１の前端部１１ｂは押鍵時に鍵ガイド２２に案内されて垂直に変位する。また、フレーム２０の前端水平部上にはフェルト等を重ねた長尺の鍵ストッパ２３も鍵盤横方向に延設されて固着され、同ストッパ２３は鍵１１の前端部１１ｂの下方への変位を規制する。ただし、この鍵ストッパ２３は演奏による通常の押鍵時に鍵１１の下方への変位を規制するものではなく、通常の押鍵時には、鍵１１の前端部下端面は鍵ストッパ２３の上面から離間した状態にある。一方、鍵１１の上に重い物を置いたりした場合などのように、非常に大きな下方への力が鍵１１に加わった場合には、鍵ストッパ２３が鍵１１の下方への変位を規制して鍵１１の異常な変形による破壊を防止する。
【００１６】
鍵１１の前端部１１ｂ近傍の前部分下面には、同下面からほぼ垂直下方に延設した駆動部１２が一体的に形成されている。駆動部１２は、後方を開放させて水平断面コ字状に形成され、下端は下端部１２ａにより閉じている。下端部１２ａの下面には、図示省略した弾性部材が組み付けられている。
【００１７】
揺動レバー４０は、合成樹脂製のレバー基部４１と金属製の質量体４２とにより構成されている。レバー基部４１は長尺状かつ平板状に成形されて、長手方向を前後方向にかつ板面を垂直に鍵１１の前部分下方に配置されている。レバー基部４１は下面中央部にて切り欠いた鍵盤横方向を軸線とする凹部４１ａを有し、凹部４１ａは軸線方向に厚肉に成形されている。この凹部４１ａは前方斜め下方にて開放されていて、鍵フレーム２０の前方下端位置から後方斜め上方に延設された傾斜板２４の上端部に設けた回動支持部２５に組み付けられている。回動支持部２５は鍵盤横方向に延設されている。これにより、揺動レバー４０は、回動支持部２５を支点として鍵フレーム２０に上下に揺動可能に支持される。
【００１８】
この揺動レバー４０は板ばね４４により前方（図示左方向）に付勢されている。板ばね４４は、前端にてレバー基部４１の凹部４１ｂに係合し、鍵フレーム２０の中間部に設けた開口部２６を介して鍵１１の下面から鍵１１内に侵入している。そして、板ばね４４の後端部は、鍵１１の後端部１１ａの内面に当接している。レバー基部４１の前端部には、所定の隙間を隔てて上下方向に二股に分けた一対の脚部４１ｃ，４１ｄが形成され、上方に位置する脚部４１ｃは下方に位置する脚部４１ｄより短く設定されている。両脚部４１ｃ，４１ｄの間には、鍵１１の駆動部１２の下端部１２ａが侵入して両脚部４１ｃ，４１ｄに係合している。これにより、鍵１１の離鍵時には、質量体４２の下方への自重による変位により、揺動レバー４０の前端部は上方へ変位しており、鍵１１の前端部も上方へ変位している。一方、鍵１１の押鍵時には、駆動部１２の下端部１２ａの下端面が脚部４１ｄの上面を押圧し、揺動レバー４０の前端部は下方へ変位する。
【００１９】
レバー基部４１の下面には、凹部４１ａと脚部４１ｄとの間にて、下方に突出したスイッチ駆動部４１ｅが形成されている。スイッチ駆動部４１ｅは、傾斜板２４に設けた貫通窓２４ａを介してプリント基板４５上に組み付けた第１乃至第３スイッチ４６〜４８に対向している。プリント基板４５は傾斜板２４の下面に同板２４とほぼ平行に組み付けられており、第１乃至第３スイッチ４６〜４８は、鍵１１ごとに設けられて鍵盤横方向に配列されている。第１乃至第３スイッチ４６〜４８は、複数の鍵１１に共通に一体的に形成されたゴム接点スイッチである。第１乃至第３スイッチ４６〜４８においては、押鍵時すなわちスイッチ駆動部４１ｅの下方への変位時に、第1スイッチ４６、第２スイッチ４７及び第３スイッチ４８の順にオフからオンに切り換えられる。そして、押鍵が維持されていれば、第１乃至第３スイッチ４６〜４８はオン状態に保たれる。一方、離鍵時すなわちスイッチ駆動部４１ｅの上方への変位時には、第３スイッチ４８、第２スイッチ４７及び第３スイッチ４６の順にオンからオフに切り換えられる。
【００２０】
質量体４２は棒状に成形され、その前部外周上にレバー基部４１をアウトサート成形することによりレバー基部４１に一体的に組み付けられている。質量体４２の後部は折り曲げて重ね合わされており、この折り曲げ部分４２ａの長さをそれぞれ異ならせることにより質量体４２の重さを異ならせている。具体的には、隣接する白鍵１１および黒鍵１１との間では、各鍵１１，１１の押圧位置上方への回転モーメントがほぼ等しくなるように設定される。また、白鍵１１においても、黒鍵１１においても、低音鍵に対して重い質量体４２を用い、高音側に向かうにしたがって質量体４２の重さを軽く設定し、前記回転モーメントが低音側で大きく高音側に向かうにしたがって小さくなるようになっている。
【００２１】
また、鍵フレーム２０の後端部に位置する支持台３０の上面には、下限ストッパ部材３１が鍵盤横方向に延設して固着されている。この下限ストッパ部材３１は、揺動レバー４０の後端部の下方への変位を規制することにより、鍵１１の離鍵時における鍵１１の前端部の上方への変位を規制する。また、鍵フレーム２０の後端部に位置する上面板２７の下面には、長尺の上限ストッパ部材３２が下限ストッパ部材３１と上下方向に所定距離だけ隔てて下方を向けて鍵盤横方向に延設して固着されている。この上限ストッパ部材３２は、揺動レバー４０の後端部の上方への変位を規制することにより、鍵１１の押鍵時における鍵１１の前端部の下方への変位を規制する。
【００２２】
さらに、鍵盤装置１０内には、複数の鍵１１にそれぞれ対応した複数の鍵駆動装置５０が設けられている。各鍵駆動装置５０は、ボビン５１、ソレノイド５２、プランジャ５３及び駆動ロッド５４からなる。ボビン５１は、複数の鍵１１に共通に設けられて支持台３０に組み付けられた支持部材５５に固定されている。ソレノイド５２は、ボビン５１の外周上に組み付けられている。プランジャ５３は、ボビン５１内に上下方向に摺動可能に収容され、ソレノイド５２への非通電時には自重でボビン５１の内底面に接する位置まで降下している。ソレノイド５２への通電時には、プランジャ５３は電磁力により自重に抗して上方へ変位する。駆動ロッド５４は、プランジャ５３の上面に固定されて上方に延設されている。ソレノイド５２の非通電時には、図３Ｂに拡大して示すように、駆動ロッド５４の先端は、レバー基部４１の先端部の下面（被駆動部）から所定の僅かなクリアランス分だけ離れて位置する
【００２３】
この場合、ソレノイド５２を大きく構成して大きな駆動力を得るために、複数のソレノイド５２、プランジャ５３及び駆動ロッド５４は、図４に示すように、前後２列に千鳥状に配置されている。この配置のために、前側に位置するプランジャ５３を後側に位置するプランジャ５３に比べて大きく構成して、揺動レバー４０の駆動力を補うようにしている。しかし、この前後のプランジャ５３の大きさを異ならせなくも、後述する駆動制御のみにより、前側に位置するプランジャ５３を後側に位置するプランジャ５３に比べて大きな駆動力で駆動するようにしてもよい。このように構成した鍵駆動装置５０においては、ソレノイド５２の非通電状態時に、駆動ロッド５４の先端が揺動レバー４０のレバー基部４１の先端部の下面から僅かに離れた下方に位置する（図３Ｂ参照）。一方、ソレノイド５２の通電時には、駆動ロッド５４の先端がレバー基部４１の先端部の下面に当接してレバー基部４１の先端部を上方に変位させる。このとき、前記押鍵時と同様に、スイッチ駆動部４１ｅがレバー基部４１（揺動レバー４０）の揺動に連動して下方に変位して、第１乃至第３スイッチ４６〜４８をオフからオンに切り換える。また、揺動レバー４０の揺動により、鍵１１の前端部も押鍵時のように下方に変位する。図３Ｃは、このソレノイド５２への通電による鍵１１及び揺動レバー４０の駆動状態を示している。
【００２４】
ふたたび、図１の説明に戻ると、各鍵１１の第１乃至第３スイッチ４６〜４８のオン・オフ動作は検出回路６１によって検出され、各鍵１１のソレノイド５２の通電・非通電は駆動回路６２によって制御されるようになっている。検出回路６１は、各鍵１１の第１乃至第３スイッチ４６〜４８を走査し、いずれかのスイッチがオフ状態からオン状態に変化したとき、変化のあったスイッチの種類（ＳＷ１〜ＳＷ３）、同スイッチの属する鍵１１を表すキーコードＫＣ、及びスイッチオンであることを表すキーオンイベントをバス６３に出力する。いずれかのスイッチがオン状態からオフ状態に変化したときには、変化のあったスイッチの種類（ＳＷ１〜ＳＷ３）、同スイッチの属する鍵１１を表すキーコードＫＣ、及びスイッチオフであることを表すキーオフイベントをバス６３に出力する。駆動回路６２は、パルス幅変調（ＰＷＭ）制御によりソレノイド５２を通電制御するもので、バス６３を介して供給されるキーコードＫＣ及び波形デューティ比（以下、単にデューティ比という）を入力して、キーコードＫＣによって表される鍵１１に対応したソレノイド５２を前記デューティ比で通電制御する。
【００２５】
電子楽器は、さらに、複数のパネル操作子６４、ディスプレイ６５及び音源回路６６を備えている。複数のパネル操作子６４は、電子楽器の操作パネル上に設けられて、電子楽器の各部の動作を指示するとともに、各種データの設定に利用される。特に、本実施形態では、自動演奏のテンポを設定するテンポ操作子６４ａが設けられていることに注目すべきである。複数のパネル操作子６４の操作は、バス６３に接続された検出回路６７によって検出される。ディスプレイ６５は、操作パネル上に設けられた液晶ディスプレイ、ＣＲＴなどで構成され、文字、数字、図形などを表示する。このディスプレイ６５の表示内容は、バス６３に接続された表示回路６８によって制御される。
【００２６】
音源回路６６は、バス６３に接続されていて、バス６３を介して供給されるキーコードＫＣ及びキーオンＫＯＮからなるキーオン制御データに応答して、キーコードＫＣによって表される音高の楽音信号を生成し始める。このキーオン制御データ中にはベロシティＶＥＬが含まれることもあり、ベロシティＶＥＬが含まれている場合には、生成される楽音信号の音色、音量などがベロシティＶＥＬに応じて制御される。また、音源回路６６は、バス６３を介して供給されるキーコードＫＣ及びキーオフＫＯＦからなるキーオフ制御データに応答して、生成中のキーコードＫＣによって表される音高の楽音信号の生成を終了し始める。楽音信号の生成の終了とは、楽音信号をリリース制御した後に、その生成を停止することを意味する。この場合、生成される楽音信号の音色及び音量、並びに同生成された楽音信号に付与される効果は、本明細書では詳しい説明は省略するが、別途供給される楽音制御データによって制御される。なお、音源回路６６は多数の音源チャンネルを有しており、本実施形態においては、キーオン制御データの到来時には、いずれかの音源チャンネルにて楽音信号が生成されるものとする。音源回路６６にて生成された楽音信号はディジタル楽音信号であり、このディジタル楽音信号はサウンドシステム６９を介して放音される。サウンドシステム６９内には、ディジタル楽音信号をＤ／Ａ変換するＤ／Ａ変換器、Ｄ／Ａ変換されたアナログ楽音信号を増幅するアンプ、及び同増幅されたアナログ楽音信号を放音するスピーカなどが含まれている。
【００２７】
また、この電子楽器は、バス６３に接続されたコンピュータ部７０、外部記憶装置８１、ＭＩＤＩインターフェース回路８２及び通信インターフェース回路８３も備えている。コンピュータ部７０は、ＣＰＵ７１、タイマ７２、ＲＯＭ７３及びＲＡＭ７４からなり、後述する図５乃至図１３のプログラムを実行することにより、自動演奏及び鍵盤装置１０を用いたマニュアル演奏による楽音の発生を制御することに加え、鍵盤装置１０の鍵１１の駆動を制御する。外部記憶装置８１は、ＨＤＤ、ＦＤＤ、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、半導体メモリなどの不揮発性の記録媒体と、同各記録媒体に対するドライブユニットを含む。
【００２８】
本実施形態においては、外部記憶装置８１に、特に、曲を自動演奏するための複数の曲データ及びソレノイド５２を通電制御するためのデューティ比を記憶した複数のデューティ比テーブルが記憶されている。各曲データは、図１４に示すように、ヘッダ、一連のイベントデータ及びエンドデータからなる。ヘッダは、曲名、初期の音色、音量、演奏テンポなどを表す複数のデータからなる。イベントデータには、キーオンデータ、キーオフデータ、楽音制御データ（図示しない）及びテンポデータ（図示しない）などが含まれる。キーオンデータは、発生楽音の音高を表すキーコードＫＣ及び楽音の発生開始を表すキーオンＫＯＮを有する。キーオフデータは、発生中の楽音の音高を表すキーコードＫＣ及び楽音の発生停止を表すキーオフＫＯＦを有する。楽音制御データは、発生楽音の音色、音量を制御するための制御データを有する。テンポデータは、自動演奏のテンポを変更するための制御データを有する。これらのキーオンデータ、キーオフデータ、楽音制御データ及びテンポデータは、それらの楽曲中のタイミングを表すテンポクロックタイミングＴＣＬＴをそれぞれ含む。エンドデータは、曲の終了を表す。なお、これらの曲データ及び前記プログラムは、予め外部記憶装置８１に記憶されていてもよいし、ＭＩＤＩインターフェース回路８２又は通信インターフェース回路８３を介して外部から取り込んでもよい。
【００２９】
複数のデューティ比テーブルは、図１５に示すように、それぞれ、押鍵時に鍵１１を円滑に突き上げるためにソレノイド５２を通電制御する際のデューティ比を押鍵開始からの時間の関数として記憶しているとともに、離鍵時の鍵１１を円滑に降下させるためにソレノイド５２を通電制御する際のデューティ比を離鍵開始からの時間の関数として記憶している。本実施形態では、図１６に示すように、各デューティ比テーブルは、押鍵時のデューティ比として階段状に変化する７種類（ＳＴ１〜ＳＴ７）のデューティ比、押鍵維持のための１種類（ＳＴ８）のデューティ比、及び離鍵時のデューティ比として階段状に変化する４種類（ＳＴ９〜ＳＴ１２）のデューティ比が用意されている。また、複数のデューティ比テーブル内にそれぞれ記憶された時間変化するデューティ比の各平均値はそれぞれ異なる。そして、鍵１１をなるべく均一な速度で変位させるために、鍵の属する音域（例えば、低域、中低域、中高域及び高域）、白鍵又は黒鍵、及び千鳥状に配置された鍵駆動装置５０の前後位置の組み合わせに応じて、鍵１１は複数のデューティ比テーブルのうちのいずか一つのデューティ比テーブルに予め割当てられている。具体的には、鍵盤装置１０の質量体４２は低音域ほど重いために（すなわち、回転モーメントが大きいために）、低音域の鍵１１ほど、前記平均値の大きなデューティ比テーブルに割当てられている。白鍵１１は、黒鍵１１に比べて回転モーメントが大きいために、黒鍵１１に比べて前記平均値の大きなデューティ比テーブルに割当てられている。鍵駆動装置５０が前側に位置している鍵１１は、鍵駆動装置５０が後側に位置している鍵１１に比べて回動支点からの距離が短いために、前記平均値の大きなデューティ比テーブルに割当てられている。
【００３０】
ＭＩＤＩインターフェース回路８２は、他の電子音楽装置、シーケンサ、パーソナルコンピュータなどのＭＩＤＩ対応の外部機器９１に接続可能となっていて、この電子楽器が外部機器９１と各種プログラム及びデータを交信可能としている。通信インターフェース回路８３は、通信ネットワーク９２に接続可能となっていて、この電子楽器が各種プログラム及びデータをサーバコンピュータ９３から受信できるとともに、各種プログラム及びデータをサーバコンピュータ９３に送信できるようになっている。
【００３１】
次に、上記のように構成した実施形態の動作について説明するが、基本動作、同一鍵連打動作、複数鍵連打動作及びマニュアル演奏との競合動作に分けて説明する。同一鍵連打動作とは、自動演奏により、同一の鍵が短時間内にオン・オフ動作を繰り返す動作である。複数鍵連打動作とは、自動演奏により、複数の鍵が短時間内にオン動作してオン状態を同時に維持する動作である。マニュアル演奏との競合動作とは、自動演奏中にマニュアル演奏がされた場合の動作である。基本動作とは、これら以外の基本的な動作である。
【００３２】
ｂ．基本動作
ユーザがパネル操作子６４を操作して自動演奏を指示すると、図示しないプログラムの実行により、ディスプレイ６５に曲の選択指示が表示される。そして、ユーザは、この指示に従って外部記憶装置８１に記憶されている所望の曲をパネル操作子６４の操作により選択する。この選択により、選択された曲の曲データが外部記憶装置８１から読み出されてＲＡＭ７４に記憶される。なお、ユーザが所望とする曲が外部記憶装置８１に記憶されていない場合には、ユーザが、ＭＩＤＩ機器９１又はサーバコンピュータ９３に記憶されている曲をＲＡＭ７４内に取り込むようにしてもよい。
【００３３】
また、自動演奏の指示により、図示しない初期設定処理が実行されて、ＲＡＭ７４内に、自動演奏テーブル、ウェイトテーブル及びマニュアル演奏テーブルが用意される。自動演奏テーブルは、図１７に示すように、曲データに基づく自動演奏による鍵盤装置１０の駆動を制御するためのテーブルであり、イベントデータ中のキーオンデータを割り当てるための複数（本実施形態では、１０個）のチャンネルｃｈ１〜ｃｈ10を有する。なお、この１０個のチャンネルは例示であって、これに限定されることなく、他の個数を採用してもよい。各チャンネルｃｈｉ（ｉは、１から１０までの整数)には、キーコードＫＣ(ｉ)、キー駆動状態ＳＴ(ｉ)、経過時間ＴＭ(ｉ)、オフディレイフラグＯＦＤＬ(ｉ)、オンディレイフラグＯＮＤＬ(ｉ)、第１スイッチフラグＳＷ１(ｉ)、割当て優先度ＡＳＰＲ(ｉ)及びウェイトフラグＷＡＩＴ(ｉ)がそれぞれ記憶されるようになっている。
【００３４】
キーコードＫＣ(ｉ)は、キーオンデータ中のキーコードＫＣである。キー駆動状態ＳＴ(ｉ)は、キーオンタイミングすなわちソレノイド５２への通電開始からの時間経過（但し、キーオン維持時間を除外する）に従った第１乃至第１２状態ＳＴ１〜ＳＴ１２のいずれかを表す（図１６参照）。経過時間ＴＭ(ｉ)は、キーオンタイミング及びキーオフタイミングからの経過時間を表す。但し、キーオフに関する経過時間ＴＭ(ｉ)は、キーオフタイミングからの時間に、キーオンタイミングからキーオン持続開始タイミングまでの時間を加算して表している。オフディレイフラグＯＦＤＬ(ｉ)は、同一鍵の連打に関係して同一鍵に関するキーオン直後のキーオフに対してキーオフ制御を遅延させるためのフラグであり、“１”により遅延を表し、“０”により非遅延を表す。オンディレイフラグＯＮＤＬ(ｉ)は、同一鍵の連打に関係して同一鍵に関するキーオフ直後のキーオンに対してキーオン制御を遅延させるためのフラグであり、“１”により遅延を表し、“０”により非遅延を表す。第１スイッチフラグＳＷ１(ｉ)は、第１スイッチ４６のオン・オフ状態をそれぞれ表すもので、“０”によりオフ状態を表し、“１”によりオン状態を表す。割当て優先度ＡＳＰＲ(ｉ)は、新たなキーオンデータをチャンネルｃｈ１〜ｃｈ１０のうちのいずれかのチャンネルに割当てるための優先順位を表すもので、「０」〜「１０」のうちのいずれかの値を取る。この場合、「０」は新たなキーオンデータのチャンネル割当てが禁止されることを表し、「１」〜「１０」は大きいほど新たなキーオンデータのチャンネル割当ての優先順位が高いことを表す。ウェイトフラグＷＡＩＴ(ｉ)は、複数の鍵の連打に関係し、異なる鍵に関する複数のキーオンデータが短時間内に曲データ中から読み出されたとき、前回の鍵１１の駆動から今回の鍵の駆動を所定時間（例えば、５ｍｓ）だけ遅延させるためのフラグであり、“１”により遅延を表し、“０”により非遅延を表す。
【００３５】
この自動演奏テーブルの初期設定においては、キーコードＫＣ及び経過時間ＴＭは、「０」にそれぞれリセットされる。キー駆動状態ＳＴ(ｉ)、オフディレイフラグＯＦＤＬ(ｉ)、オンディレイフラグＯＮＤＬ(ｉ)、第１スイッチフラグＳＷ１(ｉ)及びウェイトフラグＷＡＩＴ(ｉ)は、それぞれ“０”にリセットされる。割当て優先度ＡＳＰＲ(ｉ)は、チャンネルｃｈ１〜ｃｈ１０の順に、「１０」〜「１」にそれぞれ設定される。
【００３６】
ウェイトテーブルは、図１８に示すように、異なる鍵に関する複数のキーオンデータが短時間内に曲データ中から読み出された場合に、鍵駆動待機中のキーオンデータが割当てられているチャンネル（すなわち、自動演奏テーブル内のウェイトフラグＷＡＩＴ(ｉ)が“１”であるチャンネル）を表す１つ又は複数のチャンネル番号ｃｈＮＯを、鍵１１が駆動される順に記憶する。前記初期設定時には、このウェイトテーブル内の全てのデータがクリアされる。
【００３７】
マニュアル演奏テーブルは、図１９に示すように、鍵盤装置１０の演奏による楽音の発生を制御するためのテーブルであり、演奏操作された鍵１１を割り当てるための複数（例えば、２０程度）のチャンネルｃｈ１〜ｃｈｐを有する。各チャンネルｃｈｊ（ｊは、１からｐまでの整数)には、キーコードＫＣ(ｊ)、第１〜第３スイッチフラグＳＷ１(ｊ)〜ＳＷ３(ｊ)、カウントフラグＣＮＴＦ(ｊ)、タッチカウント値ＴＣＮＴ(ｊ)及び割当て優先度ＡＳＰＲ(ｊ)がそれぞれ記憶されるようになっている。
【００３８】
キーコードＫＣ(ｉ)は、押鍵された鍵１１を表す。第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)は、第１乃至第３スイッチ４６〜４８のオン・オフ状態をそれぞれ表すもので、“０”によりオフ状態を表し、“１”によりオン状態を表す。カウントフラグＣＮＴＦ(ｉ)は、押鍵された鍵１１のベロシティ(鍵タッチ)を検出するために、“１”により第２スイッチ４７がオンしてから第３スイッチ４８がオンするまでの状態を表し、“０”によりそれ以外の状態を表す。タッチカウント値ＴＣＮＴ(ｉ)は、前記ベロシティ検出のために時間計測のカウント値を示す。割当て優先度ＡＳＰＲ(ｉ)は、新たに押鍵された鍵をチャンネルｃｈ１〜ｃｈｐのうちのいずれかのチャンネルに割当てるための優先順位を表すもので、「０」〜「ｐ」のうちのいずれかの値を取る。この場合も、「０」は新たに押鍵された鍵のチャンネル割当て禁止を表し、「１」〜「ｐ」は大きい程新たに押鍵された鍵のチャンネル割当ての優先順位が高いことを表す。
【００３９】
このマニュアル演奏テーブルの初期設定においては、キーコードＫＣ(ｉ)及びタッチカウント値ＴＣＮＴ(ｉ)は、「０」にそれぞれリセットされる。第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)及びカウントフラグＣＮＴＦ(ｉ)、は、それぞれ“０”にリセットされる。割当て優先度ＡＳＰＲ(ｉ)は、チャンネルｃｈ１〜ｃｈｐの順に、「ｐ」〜「１」にそれぞれ設定される。
【００４０】
前記曲の選択及び初期設定後、ＣＰＵ７１は、タイマ７２との協働により、曲データのヘッダ部分に含まれているテンポデータにより表された演奏テンポによって規定される所定の短時間ごとに、図５の自動演奏プログラムを繰り返し実行し始める。所定の短時間とは、例えば、４分音符の時間長の１／１６，１／３２程度の時間長である。なお、この演奏テンポはテンポ操作子６４ａの操作によっても変更される。
【００４１】
自動演奏プログラムの実行は、ステップＳ１０にて開始され、ＣＰＵ７１は、ステップＳ１１にてランフラグＲＵＮが“１”であるか否かを判定する。ランフラグＲＵＮは、“１”により自動演奏の動作中を表し、“０”により自動演奏の待機中を表す。ランフラグＲＵＮは“０”に初期設定されているので、最初、ＣＰＵ７１はステップＳ１１にて「Ｎｏ」と判定して、ステップＳ１２の判定処理により、ユーザによるスタート指示を待つ。ユーザが自動演奏のスタートを指示しなければ、ＣＰＵ７１は、ステップＳ１２にて「Ｎｏ」と判定して、ステップＳ２１にてこの自動演奏プログラムの実行を一旦終了する。ユーザがパネル操作子６４を操作して自動演奏のスタートを指示すると、ＣＰＵ７１は、ステップＳ１２にて「Ｙｅｓ」と判定して、ステップＳ１３にてランフラグＲＵＮを“１”に設定するとともに、テンポクロックＴＣＬを「０」にクリアする。その後、ステップＳ１５〜Ｓ２０からなる処理が実行される。
【００４２】
前記のようにして、ランフラグＲＵＮが“１”に設定されると、以降の自動演奏プログラムの実行時に、ＣＰＵ７１は、ステップＳ１１にて「Ｙｅｓ」と判定し、ステップＳ１４にてテンポクロックＴＣＬに「１」を加算する。次に、ステップＳ１５以降の処理について説明する。ＣＰＵ７１は、ステップＳ１５にて、曲データ中に、テンポクロックＴＣＬにより示されたタイミングを表すテンポクロックタイミングＴＣＬＴを含むイベントデータがあるかを判定する。該当するイベントデータがなければ、ＣＰＵ７１は、ステップＳ１５にて「Ｎｏ」と判定して、この自動演奏プログラムを一旦終了する。
【００４３】
該当するイベントデータがあれば、ＣＰＵ７１は、ステップＳ１５にて「Ｙｅｓ」と判定して、ステップＳ１６にて該当する１つのイベントデータを読み出し、ステップＳ１７の自動演奏イベント処理ルーチンを実行する。ステップＳ１７の処理後、ＣＰＵ７１は、該当する残りのイベントデータが曲データ中にあるかを判定し、該当する残りのイベントデータがあれば、前記ステップＳ１６，Ｓ１７の処理を実行する。このようにして、該当するイベントデータは、ステップＳ１７の自動演奏イベント処理ルーチンにて一つずつ処理される。該当する残りのイベントデータがなくなると、ＣＰＵ７１は、ステップＳ１８にて「Ｎｏ」と判定して、ステップＳ１９にて曲データの読み出しがエンドデータまで達したかを判定する。そして、エンドデータに達するまで、すなわち１曲分の曲データの読み出しが終了するまで、演奏テンポに応じた短時間ごとに、ステップＳ１４〜Ｓ１８の処理が繰り返し実行される。
【００４４】
曲データの読み出しがエンドデータまで達すると、ＣＰＵ７１は、ステップＳ１９にて「Ｙｅｓ」と判定し、ステップＳ２０にてランフラグＲＵＮを“０”に設定してこの自動演奏プログラムの実行を終了する。このようにしてランフラグＲＵＮが“０”に設定されると、自動演奏プログラムが次に実行されたときには、前述のように、ステップＳ１１，Ｓ１２の処理により、ユーザによってスタートが指示されるまで、曲データの読み出し処理は実行されない。
【００４５】
次に、前記ステップＳ１７の自動演奏イベント処理ルーチンについて説明する。自動演奏イベント処理ルーチンは、図６に詳細に示されており、その実行がステップＳ１００にて開始される。ステップＳ１００の実行開始後、ＣＰＵ７１は、ステップＳ１０１にて、前記読み出したイベントデータがキーオンデータであるかを判定する。キーオンデータであれば、ＣＰＵ７１は、ステップＳ１０１にて「Ｙｅｓ」と判定して、プログラムをステップＳ１０２に進める。前記読み出したイベントデータが、キーオフデータ、楽音制御データ、テンポデータなどのキーオンデータでない場合には、ＣＰＵ７１は、ステップＳ１０１において「Ｎｏ」と判定して、プログラムをステップ１１０に進める。まず、読み出されたイベントデータがキーオンデータである場合について説明を続ける。ステップＳ１０２においては、ＣＰＵ７１は、キーオンデータ中のキーコードＫＣ及びキーオンＫＯＮを音源回路６６に出力する。音源回路６６は、キーコードＫＣ及びキーオンＫＯＮの供給に応答し、供給されたキーコードＫＣに対応した音高の楽音信号を生成し始める。生成された楽音信号はサウンドシステム６９を介して放音されるので、曲データに応じた楽音がサウンドシステム６９から発音される。
【００４６】
次に、ＣＰＵ７１は、ステップＳ１０３にて、ＲＡＭ６４内に用意されているマニュアル演奏テーブル（図１９）を参照し、前記読み出したイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶し、かつ第１スイッチフラグＳＷ１が“１”であるチャンネルが存在するかを判定する。この基本動作においては、ユーザによる鍵盤装置１０の演奏がないことを前提としているので、マニュアル演奏テーブル内には、前記読み出したイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶し、かつ第１スイッチフラグＳＷ１が“１”であるチャンネルは存在しない。なお、前記該当するチャンネルが存在する場合については詳しく後述する。したがって、この場合には、ＣＰＵ７１は、ステップＳ１０３にて「Ｎｏ」と判定して、プログラムをステップＳ１０４に進める。
【００４７】
ステップＳ１０４においては、ＣＰＵ７１は、自動演奏テーブル（図１７）を参照し、前記読み出したイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶したチャンネルが存在するかを判定する。この判定条件は、後述する同一鍵連打に関する判定条件である。この基本動作においては、同一鍵連打に関係して同一鍵に関するキーオンデータが短時間内に発生しないことを前提しているので、前記読み出したイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶したチャンネルは存在しない。なお、該当するチャンネルが存在する場合については詳しく後述する。したがって、この場合、ＣＰＵ７１は、ステップＳ１０４にて「Ｎｏ」と判定して、プログラムをステップＳ１０５に進める。
【００４８】
ステップＳ１０５においては、ＣＰＵ７１は、自動演奏テーブル内にキーオンデータを割り当て可能な空きチャンネルがないか、具体的には自動演奏テーブル内の全てのチャンネルの第１スイッチフラグＳＷ１が“１”であるかを判定する。この判定条件は、後述する複数鍵連打に関する判定条件である。したがって、この場合も、ＣＰＵ７１は、ステップＳ１０５にて「Ｎｏ」と判定して、プログラムをステップＳ１０６に進める。
【００４９】
ステップＳ１０６においては、ＣＰＵ７１は、自動演奏テーブル内にて第１スイッチフラグＳＷ１が“０”であり、かつ割当て優先度ＡＳＰＲが最大であるチャンネルｃｈｉを探し出し、同探し出したチャンネルｃｈｉに前記図５のステップＳ１６の処理により曲データ中から読み出したイベントデータであるキーオンデータを割当てる。すなわち、自動演奏テーブルの前記探し出したチャンネルｃｈｉのキーコードＫＣ(ｉ)をキーオンデータ中に含まれるキーコードＫＣに設定し、キー駆動状態ＳＴ(ｉ)を第１状態ＳＴ１に設定し、経過時間ＴＭ(ｉ)を「０」にリセットし、オフディレイフラグＯＦＤＬ(ｉ)及びオンディレイフラグＯＮＤＬ(ｉ)を“０”に設定し、第１スイッチフラグＳＷ１(ｉ)を“１”に設定し、割当て優先度ＡＳＰＲ(ｉ)を「０」に設定し、かつウェイトフラグＷＡＩＴ(ｉ)を“０”に設定する。
【００５０】
次に、ＣＰＵ１０７は、ウェイト制御フラグＷＴＣＮＴが“０”であるかを判定する。ウェイト制御フラグＷＴＣＮＴは、複数の鍵の連打に関係して異なるキーコードＫＣを有する複数のキーオンデータが短時間内に曲データ中から読み出された場合に、前のキーオンデータに基づく鍵１１の駆動から所定の短い待ち時間ＷＴＭmax（例えば、５ｍｓ）だけ次の鍵１１の駆動を遅延させるためのフラグであり、“１”により遅延状態を表し、“０”によりそれ以外の状態を表す。この基本動作では、複数の鍵の連打に関係して複数の鍵に関するキーオンデータが短時間内に発生しないことを前提しているので、ウェイト制御フラグＷＴＣＮＴは“０”に設定されている。したがって、ＣＰＵ７１は、ステップＳ１０７にて「Ｙｅｓ」と判定して、ステップＳ１０８にて、前記記憶したキーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第１状態ＳＴ１に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。次に、ＣＰＵ７１は、ステップＳ１０９にてウェイト制御フラグＷＴＣＮＴを“１”に設定するとともに、ウェイトタイマＷＴＭを待ち時間ＷＴＭmaxに設定する。なお、このステップＳ１０９の処理は、複数鍵連打に関係するもので、この基本動作には関係のない処理である。そして、ＣＰＵ７１は、ステップＳ１１６にて、この自動演奏イベント処理ルーチンの実行を一旦終了する。
【００５１】
前記ステップＳ１０８の処理のように、第１状態ＳＴ１に対応したデューティ比及びキーコードＫＣ(ｉ)が駆動回路６２に出力されると、駆動回路６２は、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００５２】
一方、前記図５の自動演奏プログラムの実行に並行して、ＣＰＵ７１は、タイマ７２との協働により、所定の短時間（例えば、１００μｓ）ごとに、図９Ａ乃至図９Ｃのキー駆動プログラムを繰り返し実行している。このキー駆動プログラムの実行は、図９ＡのステップＳ２００にて開始され、ＣＰＵ７１は、ステップＳ２０１にて自動演奏テーブルのチャンネルｃｈ１〜ｃｈ１０を順に指定する変数ｉを「１」に設定した後、図９ＣのステップＳ２５９，Ｓ２６０の処理により、変数ｉが「１０」に達するまで、ステップＳ２０２〜Ｓ２５８の処理を繰り返し実行する。
【００５３】
この場合、全てのチャンネルは共通の動作をするので、前記図６のステップＳ１０６の処理により、キーオンデータが登録された自動演奏テーブルの一つのチャンネルｉについてのみ説明する。ステップＳ２０２においては、ＣＰＵ７１は、変数ｉにより指定される自動演奏テーブル内のウェイトフラグＷＡＩＴ(ｉ)が“０”であるかを判定する。この基本動作では、前記ウェイト制御フラグＷＴＣＮＴの場合と同様に、ウェイトフラグＷＡＩＴ(ｉ)も“１”に設定されることはない。したがって、ＣＰＵ７１は、ステップＳ２０２にて「Ｙｅｓ」と判定して、ステップＳ２０３にてキー駆動状態ＳＴが第８状態ＳＴ８を表しているかを判定する。この場合、前記図６のステップＳ１０６の処理により、キー駆動状態ＳＴ(ｉ)は第１状態ＳＴ１に設定されているので、ＣＰＵ７１はステップＳ２０３にて「Ｎｏ」と判定して、ステップＳ２０４にて経過時間ＴＭ(ｉ)に所定の短い時間値Ｔｃを表す値を加算する。この時間値Ｔｃは、このキー駆動プログラムの実行周期（例えば、１００μｓ）である。
【００５４】
前記ステップＳ２０４の処理後、キー駆動状態ＳＴ(ｉ)は第１状態ＳＴ１に設定されているので、ＣＰＵ７１はステップＳ２０５にて「Ｙｅｓ」と判定して、ステップＳ２０６にて経過時間ＴＭ(ｉ)が第１状態ＳＴ１の終了タイミングを示す所定の第１時間値Ｔ１（図１６参照）以上であるかを判定する。経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上でなければ、ＣＰＵ７１は、ステップＳ２０６にて「Ｎｏ」と判定して、プログラムをステップＳ２５９以降に進める。そして、キー駆動プログラムが再び実行されても、経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上になるまで、前記処理を繰り返す。この繰り返し処理中、駆動回路６２は、図６のステップＳ１０８の処理によって供給されたデューティ比に応じたＰＷＭ波形で、キーコードＫＣ(ｉ)により表されたソレノイド５２を通電し続ける。
【００５５】
一方、前記ステップＳ２０４の加算処理により、経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上になると、ＣＰＵ７１は、ステップＳ２０６に「Ｙｅｓ」と判定して、ステップＳ２０７にてキー駆動状態ＳＴ(ｉ)を第２状態ＳＴ２に変更する。そして、ＣＰＵ７１は、ステップＳ２０８にて、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第２状態ＳＴ２に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。駆動回路６２は、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。前記ステップＳ２０８の処理後、ＣＰＵ７１は、プログラムをステップＳ２５９以降に進める。
【００５６】
次に、このキー駆動プログラムが実行されたときには、キー駆動状態ＳＴ(ｉ)は第２状態ＳＴ１に設定されているので、ＣＰＵ７１はステップＳ２０９にて「Ｙｅｓ」と判定して、前記ステップＳ２０６〜Ｓ２０８と同様なステップＳ２１０〜Ｓ２１２の処理により、駆動回路６２との協働により、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を、第２状態ＳＴ２に対応したデューティ比に応じたＰＷＭ波形で、第２状態ＳＴ２の終了タイミングを示す所定の第２時間値Ｔ２になるまで通電制御し続ける。そして、経過時間ＴＭ(ｉ)が第２時間値Ｔ２に達すると、前記と同じソレノイド５２を、第３状態ＳＴ３に対応したデューティ比に応じたＰＷＭ波形で通電し始める。したがって、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２は、時間Ｔ２−Ｔ１だけ、第２状態ＳＴ２に対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に第３状態ＳＴ３に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換えられる。
【００５７】
また、ステップＳ２１３〜Ｓ２１６、ステップＳ２１７〜Ｓ２２０、ステップＳ２２１〜Ｓ２２４及びステップＳ２２５〜Ｓ２２８の各処理も、前記ステップＳ２０５〜Ｓ２０８及びステップＳ２０９〜Ｓ２１２の処理と同様である。したがって、これらのステップＳ２１３〜Ｓ２１６、ステップＳ２１７〜Ｓ２２０、ステップＳ２２１〜Ｓ２２４及びステップＳ２２５〜Ｓ２２８の処理により、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２は、時間Ｔ３−Ｔ２，Ｔ４−Ｔ３，Ｔ５−Ｔ４，Ｔ６−Ｔ５ずつ、第３状態ＳＴ３乃至第６状態ＳＴ６に対応したデューティ比に応じたＰＷＭ波形で順次通電制御される。
【００５８】
次に、キー駆動状態ＳＴ(ｉ)が第７状態ＳＴ７になった場合について説明する。この場合、ＣＰＵ７１は、前記場合と異なり、ステップＳ２２９〜Ｓ２３７の処理を実行する。しかし、ステップＳ２３１，Ｓ２３４〜Ｓ２３７の処理は、同一鍵連打に関係してオフディレイフラグＯＦＤＬ(ｉ)が“１”に設定されている場合の処理であり、この基本動作においては、オフディレイフラグＯＦＤＬ(ｉ)は必ず“０”に設定されている。したがって、この場合、ステップＳ２３１における「Ｙｅｓ」との判定のもとに、実質的には、ステップＳ２２９，Ｓ２３０，Ｓ２３２，Ｓ２３３の処理が実行される。そして、これらのステップＳ２２９，Ｓ２３０，Ｓ２３２，Ｓ２３３の処理は、前述したステップＳ２０５〜Ｓ２０８、ステップＳ２０９〜Ｓ２１２、ステップＳ２１３〜Ｓ２１６、ステップＳ２１７〜Ｓ２２０、ステップＳ２２１〜Ｓ２２４及びステップＳ２２５〜Ｓ２２８の各処理に対応している。したがって、この場合も、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２は、前記の処理と同様に、時間Ｔ７−Ｔ６の間、第７状態ＳＴ７に対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に、第８状態ＳＴ８に対応したデューティ比に応じたＰＷＭ波形で通電制御され続ける。
【００５９】
この第１乃至第７状態ＳＴ１〜ＳＴ７の制御により、鍵１１及び揺動レバー４０は図３Ａの状態から図３Ｃの状態に変化し、揺動レバー４０の質量体４２の後端部は上限ストッパ部材３２により上方への変位が規制される。そして、スイッチ駆動部４１ｅは第１乃至第３スイッチ４６〜４８を押圧してオンさせる。この状態は、ユーザが鍵１１の押鍵を維持している状態に対応する。
【００６０】
このような状態で、図５のステップＳ１６の処理によりイベントデータであるキーオフデータが読み出されて、図５のステップＳ１７すなわち図６の自動演奏イベント処理ルーチンが実行されると、ＣＰＵ７１は、図６のステップＳ１０１にて「Ｎｏ」と判定するとともにステップＳ１１０にて「Ｙｅｓ」と判定して、ステップＳ１１１にてキーオフ処理ルーチンを実行する。
【００６１】
キーオフ処理ルーチンは、図７に詳細に示されており、その実行がステップＳ１２０にて開始される。ステップＳ１２０の実行開始後、ＣＰＵ７１は、ステップＳ１２１にてキーオフデータ中のキーコードＫＣ及びキーオフＫＯＦを音源回路６６に出力する。音源回路６６は、キーコードＫＣ及びキーオフＫＯＦの供給に応答し、供給されたキーコードＫＣにより表される音高であって発生中の楽音信号を発生停止させる。具体的に、前記発生中の楽音信号をリリースさせて、その後に楽音信号の生成を停止する。その結果、前記楽音信号に対応した楽音の放音が停止される。
【００６２】
次に、ＣＰＵ７１は、ステップＳ１２２にて、自動演奏テーブル（図１７）を参照し、前記読み出したイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶しているチャンネルｃｈｉを探し出す。次に、前記探し出したチャンネルｃｈｉにより指定される自動演奏テーブル内のキー駆動状態ＳＴ(ｉ)が第８状態ＳＴ８であるかを判定する。この場合、前記探し出したチャンネルｃｈｉは、前述した図９ＡのステップＳ２０１乃至図９ＢのステップＳ２３３の処理により、キー駆動状態ＳＴ(ｉ)が第８状態ＳＴ８に設定されたチャンネルと同じであるものとして話を進める。したがって、ＣＰＵ７１は、ステップＳ１２３にて「Ｙｅｓ」と判定して、プログラムをステップＳ１２４以降に進める。なお、ステップＳ１２３にて「Ｎｏ」すなわちキー駆動状態ＳＴ(ｉ)が第８状態ＳＴ８でないと判定される場合は、この基本動作でない同一鍵連打に関する場合である。
【００６３】
前記ステップＳ１２３の「Ｙｅｓ」との判定後、ＣＰＵ７１は、ステップＳ１２４にてキー駆動状態ＳＴ(ｉ)を第９状態ＳＴ９に変更し、ステップＳ１２５にてキーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第９状態ＳＴ９に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。駆動回路６２は、前記場合と同様に、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。なお、この制御及び今後の制御は、図３Ｃの状態にある鍵１１及び揺動レバー４０を図３Ａの状態に戻す、すなわちキーオフ動作に対応する。
【００６４】
一方、前述のように、ＣＰＵ７１は、図９Ａ〜図９Ｃのキー駆動プログラムを所定の短い時間値Ｔｃごとに繰り返し実行している。この場合、キー駆動状態ＳＴ(ｉ)は第９状態ＳＴ９に設定されているので、図９ＢのステップＳ２３８〜Ｓ２４１の処理が実行される。このステップＳ２３８〜Ｓ２４１の処理も、前述した図９ＡのステップＳ２０５〜Ｓ２０８などの処理と同様であり、ＣＰＵ７１は、駆動回路６２との協働により、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を、第９状態ＳＴ９に対応したデューティ比に応じたＰＷＭ波形で、時間Ｔ９−Ｔ８にわたって通電制御し、その後に第１０状態ＳＴ１０に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換える。また、図９ＢのステップＳ２４２〜Ｓ２４５及び図９ＣのステップＳ２４６〜Ｓ２４９の処理も、前述した図９ＢのステップＳ２３８〜Ｓ２４１の処理と同様である。したがって、ステップＳ２３８〜Ｓ２４１，Ｓ２４２〜Ｓ２４５，Ｓ２４６〜Ｓ２４９の処理により、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２は、時間Ｔ９−Ｔ８（＝Ｔ９−Ｔ７），Ｔ１０−Ｔ９，Ｔ１１−Ｔ１０ずつ、第９乃至第１１状態ＳＴ９〜ＳＴ１１に対応したデューティ比に応じたＰＷＭ波形で順次通電制御される。
【００６５】
次に、キー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２になった場合について説明する。この場合、ＣＰＵ７１は、前記場合と異なり、ステップＳ２５０〜Ｓ２５８の処理を実行する。しかし、ステップＳ２５２，Ｓ２５５〜Ｓ２５８の処理は、同一鍵連打に関係してオンディレイフラグＯＮＤＬ(ｉ)が“１”に設定されている場合の処理であり、この基本動作においては、オンディレイフラグＯＮＤＬ(ｉ)は必ず“０”に設定されているので、ステップＳ２５１における「Ｙｅｓ」との判定のもとに、実質的には、ステップＳ２５０，Ｓ２５１，Ｓ２５３，Ｓ２５４の処理が実行される。したがって、経過時間ＴＭ(ｉ)が時間値Ｔ１２以上になると、ＣＰＵ７１は、ステップＳ２５３にて、「０」を表すデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。したがって、駆動回路６２は、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２の通電を停止する。
【００６６】
この第９状態ＳＴ９乃至第１２状態ＳＴ１２の制御により、鍵１１及び揺動レバー４０は図３Ｃの状態から図３Ａの状態に変化し、揺動レバー４０の質量体４２の後端部は下限ストッパ部材３１により下方への変位が規制される。そして、スイッチ駆動部４１ｅは第１乃至第３スイッチ４６〜４８の押圧を解除してオフさせる。この状態は、ユーザが鍵１１の押鍵を解除している状態に対応する。
【００６７】
前記ステップＳ２５３の処理後、ＣＰＵ７１は、ステップＳ２５４にて、自動演奏テーブル内のチャンネルｃｈｉの割当て優先度ＡＳＰＲ(ｉ)を以前の値に維持したまま、それ以外のデータを初期値にクリアする。これにより、イベントデータである次のキーオンデータの自動演奏テーブルへの登録に備える。この割当て優先度ＡＳＰＲ(ｉ)は、実際には、図１０のスイッチイベントプログラムの処理により、前記ステップＳ２５４の処理よりも前に既に更新されている。したがって、このスイッチイベントプログラムについて説明しておく。スイッチイベントプログラムは、鍵１１の第１乃至第３スイッチ４６〜４８のオン状態及びオフ状態に変化があるときに実行される。
【００６８】
検出回路６１は、前述したソレノイド５２による鍵駆動操作及び後述するマニュアル演奏操作による全ての鍵１１に関する第１乃至第３スイッチ４６〜４８のオン・オフ動作を常時監視している。この監視動作において、第１乃至第３スイッチ４６〜４８のオン状態及びオフ状態に変化あると、検出回路６１は、第１乃至第３スイッチ４６〜４８の状態変化の種類を表すスイッチイベントデータ及び状態変化のあった鍵１１を表すキーコードＫＣを含むキーイベントデータを、バス６３を介してコンピュータ部７０に供給する。
【００６９】
このようにして、キーイベントデータがコンピュータ部７０に供給されると、ＣＰＵ７１は、図１０のステップＳ３００にてスイッチイベントプログラムの実行を開始し、ステップＳ３０１にて、ＲＡＭ６４内の自動演奏テーブル（図１７）を参照し、前記供給されたキーイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶し、かつ第１スイッチフラグＳＷ１が“１”であるチャンネルが存在するかを判定する。前記条件が成立すれば、ＣＰＵ７１は、ステップＳ３０１にて「Ｙｅｓ」と判定してステップＳ３０２以降の処理を実行する。一方、前記条件が成立しなければ、ＣＰＵ７１は、ステップＳ３０１にて「Ｎｏ」と判定し、ステップＳ３１０にてマニュアル演奏ルーチンを実行する。前記条件が成立しないことは、自動演奏ではなく、後述するマニュアル演奏動作に関係することである。したがって、この基本動作においては、ＣＰＵ７１は、ステップＳ３０１にて「Ｙｅｓ」と判定し、ステップＳ３０２以降の処理を実行する。
【００７０】
ステップＳ３０２においては、ＣＰＵ７１は、供給されたキーイベントデータに含まれるスイッチイベントデータが第１スイッチ４６のオフイベントを表しているか、すなわちキーイベントデータが第１スイッチ４６のオン状態からオフ状態への変化を表しているかを判定する。キーイベントデータが第１スイッチ４６のオフイベントに関するものであれば、ＣＰＵ７１は、ステップＳ３０２にて「Ｙｅｓ」と判定して、ステップＳ３０３以降の処理を実行する。そうでなければ、ＣＰＵ７１は、ステップＳ３０２にて「Ｎｏ」と判定して、ステップＳ３１１にてこのスイッチイベントプログラムの実行を終了する。なお、この第１スイッチ４６に関するオフイベントは、通常前述した第９状態ＳＴ９（図１６参照）時に発生するものである。
【００７１】
ステップＳ３０３においては、キーイベントデータに含まれているキーコードＫＣと同一のキーコードＫＣを記憶している自動演奏テーブルのチャンネルｃｈｉを検出して、同チャンネルｃｈｉの第１スイッチフラグＳＷ１(ｉ)を“０”に設定するとともに、同チャンネルｃｈｉの割当て優先度ＡＳＰＲ(ｉ)を「１」に設定する。次に、ＣＰＵ７１は、自動演奏テーブル内の前記チャンネルｃｈｉ以外であり、かつ第１スイッチフラグＳＷ１が“０”であるチャンネルの割当て優先度ＡＳＰＲ(ｉ)にそれぞれ「１」を加算する。この割当て優先度ＡＳＰＲ(ｉ)の加算処理により、前述した割当て優先度ＡＳＰＲ(ｉ)の更新が行われる。したがって、次のキーオンデータが曲データ中から読み出された際には、最も古く第１スイッチフラグＳＷ１(i)が“０”にリセットされるとともに割当て優先度ＡＳＰＲ(ｉ)が「１」に設定されたチャンネルに、前記読み出されたキーオンデータが割り当てられることになる。
【００７２】
そして、前述した図９ＣのステップＳ２５４の処理で割当て優先度ＡＳＰＲ(ｉ)を更新しなかった理由は、図９ＣのステップＳ２５４の処理が時間的には前記ステップＳ３０３の処理後に行われもので、同ステップＳ３０３の処理によって割当て優先度ＡＳＰＲ(ｉ)が既に更新されているためである。また、第１スイッチフラグＳＷ１(ｉ)に関しては、前記ステップＳ２５４の処理によって“０”にリセットするようにしたが、前記ステップＳ３０３にて“０”にリセットされているので、前記ステップＳ２５４の処理によって敢えて“０”にリセットしなくてもよい。それよりも、前記ステップＳ３０３にて、前記ステップＳ３０１の処理により探し出されたチャンネルｉ内の第１スイッチフラグＳＷ１(i)及び割当て優先度ＡＳＰＲ(ｉ)を更新した理由は、前記新たなキーオンデータの割当てを許容するためである。そして、前記ステップＳ３０３にて前記探し出したチャンネルｉ内の第１スイッチフラグＳＷ１(i)及び割当て優先度ＡＳＰＲ(ｉ)以外のデータをクリアしない理由は、前記第１スイッチ４６のオフ後も、前述した第９状態ＳＴ９乃至第１２状態ＳＴ１２の離鍵動作を確保するためである。なお、前記ステップＳ３０４の処理後、ＣＰＵ７１はステップＳ３０５以降の処理を実行するが、ステップＳ３０５以降の処理は同一鍵連打動作に関するものであり、ステップＳ３０５以降の処理については後述する。
【００７３】
また、図５のステップＳ１６の処理により、イベントデータとして、キーオンデータ及びキーオフデータ以外の音色、音量、テンポなどを制御する制御データが読み出されると、ＣＰＵ７１は、図５のステップＳ１７すなわち図６の自動演奏イベント処理ルーチンのステップＳ１０１，Ｓ１１０にて「Ｎｏ」とそれぞれ判定して、ステップＳ１１２のその他の処理を実行する。その他の処理においては、前記制御データに応じて、音源回路６６にて生成される楽音信号の音色、音量などが変更制御されるとともに、自動演奏のテンポも変更される。
【００７４】
上記作動説明からも理解できるように、この基本動作においては、図６のステップＳ１０２及び図７のステップＳ１２１の処理により、曲データ中のキーオンデータ及びキーオフンデータに基づいて音源回路６６における楽音信号の発生および停止が制御されて曲データが自動的に再生される。一方、図６のステップＳ１０６，Ｓ１０８、図７のステップＳ１２２〜Ｓ１２５、図９ＡのステップＳ２０１、Ｓ２０４〜Ｓ２２８、図９ＢのステップＳ２２９〜Ｓ２３３、ステップＳ２３８〜Ｓ２４５、図９ＣのステップＳ２４６〜Ｓ２５４，Ｓ２５９，Ｓ２６０の処理により、鍵１１の押鍵及び離鍵動作を制御するために、ソレノイド５２が図１６に示すデューティ比の時間変化に応じて制御される。すなわち、ソレノイド５２への通電量及び駆動力が時間経過と共に図１６に示すデューティ比に比例して制御される。
【００７５】
このデューティ比の変化においては、鍵１１及び揺動レバー４０の押鍵に対応した押鍵動作の開始時には、図１６の第１状態ＳＴ１で示すように、ソレノイド５２は中程度のデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は中程度の駆動力で駆動制御される。これは、押鍵動作の開始前には駆動ロッド５４はレバー基部４１から離れており、駆動ロッド５４の上端がレバー基部４１に接触した際の衝突を小さくするためである。次に、第２状態ＳＴ２で、ソレノイド５２は大きなデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は大きな駆動力で駆動制御される。その後、第３状態ＳＴ３から第５状態ＳＴ５まで少しずつ段階的にデューティ比を下げる、すなわち鍵１１及び揺動レバー４０の駆動力を少しずつ段階的に下げるようにした。第３状態ＳＴ３から第５状態ＳＴ５まで段階的にデューティ比（駆動力）を下げる理由は、同一鍵の連打に関係するもので、後述する連打時の動作説明の際に説明する。第２状態ＳＴ２から第５状態ＳＴ５にわたってデューティ比（駆動力）を大きく、特に第２状態ＳＴ２の切換え時にデューティ比（駆動力）を大きくする理由は、第１状態ＳＴ１の通電制御によって駆動ロッド５４の上端がレバー基部４１に接触した後に、揺動レバー４０の質量体４２を大きな力で短時間のうちに突き上げるためである。
【００７６】
別な観点から図１６の第１状態ＳＴ１から第２状態ＳＴ２への急激な大きな変化（飛躍制御）の理由について説明する。鍵１１の離鍵状態では駆動ロッド５４の先端とレバー基部４１の下面の被駆動部との間には僅かなクリアランスが存在する（図３Ｂ参照）。これは、離鍵時におけるレバー基部４１との接触による駆動ロッド５４の耐久性を高く保つことが難しく、鍵１１の離鍵後には、質量体４２が下限ストッパ部材３１にのみと当接するようにしたためである。また、前記クリアランスをなくして、離鍵時にレバー基部４１の下面が駆動ロッド５４の先端に当接するようにした場合には、鍵１１のマニュアル演奏時に、メカ的な雑音が発生するという問題もある。このように理由により前記クリアランスを設けた機構において、駆動ロッド５４の押上げ時のメカ的な雑音の発生を防止したうえで、鍵１１を迅速に駆動するために前記のような飛躍制御が必要とされる。
【００７７】
前記第５状態ＳＴ５の終了後、第６状態ＳＴ６では、ソレノイド５２は中程度のデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は中程度の駆動力で駆動制御される。これは、揺動レバー４０の質量体４２の後端部の上方への変位が上限ストッパ部材３２に衝突して規制される際に、前記衝突を緩和して衝突に伴う衝撃音の発生を防止するためである。この第６状態ＳＴ６の通電制御後、第７状態ＳＴ７で、ソレノイド５２はふたたび大きなデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０はふたたび大きな駆動力で駆動制御される。これは、揺動レバー４０の質量体４２の後端部の上限ストッパ部材３２への衝突の反発力により、質量体４２が下方へ変位することを防止、すなわち質量体４２のリバウンドを回避するためである。その後の第８状態ＳＴ８では、ソレノイド５２は中程度のデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は中程度の駆動力で駆動制御される。第８状態ＳＴ８は押鍵維持状態すなわち揺動レバー４０の質量体４２の後端部を上限ストッパ部材３２に接触させ続ける状態であり、この状態は長時間継続することもあり、電力消費の観点からも、押鍵状態を維持できる最低限のデューティ比でソレノイド５２の通電を制御することが望ましいからである。
【００７８】
そして、鍵１１の押鍵解除すなわち揺動レバー４０の原位置への復帰時には、最初、ソレノイド５２は第９状態ＳＴ９で小さなデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は小さな駆動力で駆動制御される。これは、押鍵解除に伴い、揺動レバー４０の質量体４１を急激に落下させるためである。その後、ソレノイド５２は、第１０状態ＳＴ１０で中低度のデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は中程度の駆動力で駆動制御される。そして、第１０状態ＳＴ１０から第１２状態ＳＴ１２まで少しずつ段階的に大きくなるデューティ比で通電制御、すなわち鍵１１及び揺動レバー４０は少しずつ段階的に大きくなる駆動力で駆動制御され、最終的にデューティ比が「０」、すなわち鍵１１及び揺動レバー４０の駆動制御が終了する。これらの第１０状態ＳＴ１０から第１２状態ＳＴ１２においてデューティ比（駆動力）を上昇させる理由は、押鍵解除に伴う揺動レバー４０の原位置への復帰時において質量体４１の後端の下限ストッパ部材３１への衝突を緩和して衝突に伴う衝撃音の発生を防止するとともに同後部のリバウンドを回避するために、ソレノイド５２はある程度大きな推力を必要とするからである。そして、質量体４１の後端が下限ストッパ部材３１上に完全に静止した後に、ソレノイド５２への通電を解除してソレノイド５２の推力を「０」にするためである。特に、鍵１１及び揺動レバー４０が原位置に近づくほど、すなわちプランジャ５３がボビン５１の内底面に近づいてソレノイド５２との対向面積が減少するほど、デューティ比（ソレノイド５２への通電量）が同じでも、プランジャ５３を引き上げる電磁力は減少する。この電磁力の減少を補正するためにも、前記第１０状態ＳＴ１０から第１２状態ＳＴ１２に渡ってデューティ比を大きくする必要がある。
【００７９】
このような押鍵動作における第１状態ＳＴ１から第７状態ＳＴ７までの制御、押鍵維持動作における第８状態ＳＴ８の制御、及び離鍵動作における第９状態ＳＴ９から第１２状態ＳＴ１２までの制御により、鍵１１及び揺動レバー４０を、機械的な雑音を発生させることなく、円滑に変位させることができる。
【００８０】
また、前記のようにソレノイド５２のデューティ比を制御するために、複数のデューティ比テーブルが用意されている。そして、これらの複数のデューティ比テーブルは、鍵１１の属する音域（例えば、低域、中低域、中高域及び高域）、白鍵又は黒鍵、及び千鳥状に配置された鍵駆動装置５０の前後位置の組み合わせに応じて用意されているとともに、各鍵１１に予め割当てられている。これにより、鍵１１ごとに適切なデューティ比を用いてソレノイド５２の通電が制御されるので、鍵盤装置１０の構造とは無関係に、いずれの鍵１１及び揺動レバー４０も適切に駆動される。
【００８１】
ｂ．同一鍵連打動作
次に、同一鍵連打に関係して、同一キーコードＫＣを有する複数のキーオンデータ及びキーオフデータが曲データ中から短時間内に読み出された場合について説明する。これは、曲データ中に極めて速い同一鍵の連打を表すキーオンデータ及びキーオフデータがイベントデータとして予め含まれている場合もあるが、テンポ操作子６４ａの操作により自動演奏のテンポが速められたときに生ずることが多い。
【００８２】
この同一鍵連打動作については、連打の条件別に説明する。連打の条件とは次の(Ａ)〜(Ｅ)の場合である。(Ａ)は、図２０(Ａ)に示すように、自動演奏によるイベントデータであるキーオンデータが曲データ中から読み出された直後に、前記キーオンデータと同一キーコードＫＣを有するキーオフデータが曲データ中から読み出された場合である（以下、キーオン直後のキーオフという）。(Ｂ)は、図２０(Ｂ)に示すように、前記「(Ａ)キーオン直後のキーオフ」の直後に、さらに前記キーオンデータ及びキーオフデータと同一キーコードＫＣを有するキーオンデータが曲データ中から読み出された場合である（以下、キーオン直後のキーオフ・オンという）。(Ｃ)は、図２０(Ｃ)に示すように、自動演奏によるイベントデータであるキーオフデータが曲データ中から読み出された直後に、前記キーオフデータと同一キーコードＫＣを有するキーオンデータが曲データ中から読み出された場合である（以下、キーオフ直後のキーオンという）。(Ｄ)は、図２０(Ｄ)に示すように、前記「(Ｃ)キーオフ直後のキーオン」の直後に、さらに前記キーオフデータ及びキーオンデータと同一キーコードＫＣを有するキーオフデータが曲データ中から読み出された場合である（以下、キーオフ直後のキーオン・オフという）。(Ｅ)は、図２０(Ｅ)に示すように、さらに前記「(Ｄ)キーオフ直後のキーオン・オフ」の直後に、前記キーオフデータ及びキーオンデータと同一キーコードＫＣを有するキーオンデータが曲データ中から読み出された場合である（以下、キーオフ直後のキーオン・オフ・オンという）。以下、前記(Ａ)〜(Ｅ)について順次説明する。
【００８３】
(Ａ)キーオン直後のキーオフ
このキーオン直後のキーオフは、具体的には、図２０(Ａ)に示すように、キーオンデータが曲データ中から読み出された後、キー駆動状態ＳＴが第８状態ＳＴ８に達する前に、前記キーオンデータと同一のキーコードＫＣを有するキーオフデータが曲データ中から読み出された場合である。この場合、前述した図７のキーオフ処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１２６にて、「Ｙｅｓ」すなわちキーオフデータに含まれるキーコードＫＣと同一キーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１乃至第７状態ＳＴ１〜ＳＴ７のいずれかであると判定する。そして、ＣＰＵ７１は、ステップＳ１２７にて、前記チャンネルｃｈｉのオフディレイフラグＯＦＤＬ(ｉ)を“１”に設定する。
【００８４】
この状態で、図９Ａ〜図９Ｃのキー駆動プログラムの実行により、経過時間ＴＭ(ｉ)が増加して、キー駆動状態ＳＴ(ｉ)が第７状態ＳＴ７の終了時を表す時間値Ｔ７に達すると、ＣＰＵ７１は、図９ＢのステップＳ２３０の処理後のステップＳ２３１にて、前記“１”に設定したオフディレイフラグＯＦＤＬ(ｉ)に基づいて「Ｎｏ」と判定して、ステップＳ２３４〜Ｓ２３７の処理を実行する。ステップＳ２３４においては、キー駆動状態ＳＴ(ｉ)を第９状態ＳＴ９に設定する。ステップＳ２３８においては、経過時間ＴＭ(ｉ)を第９状態ＳＴ９の開始時（すなわち第８状態の終了時）を表す時間値Ｔ８（時間値Ｔ７に等しい）に設定する。ステップＳ２３６においては、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第９状態ＳＴ９に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。駆動回路６２は、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。ステップＳ２３７においては、オフディレイフラグＯＦＤＬ(ｉ)を“０”にリセットする。
【００８５】
このような処理により、キー駆動状態ＳＴ(ｉ)が第１状態ＳＴ１乃至第７状態ＳＴ７のいずれかである状態で、同一キーコードＫＣに関するキーオフデータが読み出されると、第７状態ＳＴ７の終了時まで待って、キー駆動状態ＳＴ(ｉ)は第８状態ＳＴ８を飛ばして第９状態ＳＴ９に変更される。したがって、この場合には、キーオフデータが読み出され、揺動レバー４０の質量体４２の後端部が上限ストッパ部材３２により静止された状態、すなわち鍵１１が完全に押鍵された状態になるまで待った後、鍵１１及び揺動レバー４０の原位置への復帰制御が開始されることになる。これにより、楽音信号の発生タイミングとは異なるものの、鍵１１の押鍵動作及び離鍵動作が確実に行われる。また、楽音信号の発生から短時間内に鍵１１の離鍵動作が開始されるので、視覚的にも不自然でなくなる。
【００８６】
(Ｂ)キーオン直後のキーオフ・オン
このキーオン直後のキーオフ・オンは、具体的には、図２０(Ｂ)に示すように、キーオンデータが曲データ中から読み出された後、キー駆動状態ＳＴが第８状態ＳＴ８に達する前に、前記キーオンデータと同一のキーコードＫＣを有するキーオフデータ及びキーオンデータが曲データ中から読み出された場合である。この場合、前記「(Ａ)キーオン直後のキーオフ」で説明したように、キーオフデータが読み出されたときに、図７のステップＳ１２７の処理により、オフディレイフラグＯＦＤＬ(ｉ)が“１”に設定される。そして、前記キーオフデータと同一のキーコードＫＣを有するキーオンデータが読み出されると、鍵１１及び揺動レバー４０はキーオン駆動状態にあり、自動演奏テーブル内にはキーオンデータ中のキーコードＫＣを記憶したチャンネルｃｈｉが存在する。しかも、この場合には、第１スイッチフラグＳＷ１(ｉ)も“１”に設定されている。したがって、ＣＰＵ７１は、図６の自動演奏イベント処理ルーチンのステップＳ１０４にて「Ｙｅｓ」と判定して、ステップＳ１１３すなわち図８の特殊キーオン処理ルーチンのステップＳ１４１にて、「Ｙｅｓ」すなわちキーオンデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１状態ＳＴ１乃至第７状態ＳＴ７のいずれかであると判定する。そして、ＣＰＵ７１は、ステップＳ１４２，Ｓ１４３の処理により、前記チャンネルｃｈｉのオフディレイフラグＯＦＤＬ(ｉ)を“０”にリセットする。
【００８７】
したがって、この場合には、キーオン直後のキーオフデータ及びキーオンデータがキャンセルされてしまい、鍵１１及び揺動レバー４０は短時間内で離鍵及び押鍵動作することはない。これは、連打に関係したキーオンデータ及びキーオフデータに応答して鍵１１及び揺動レバー４０を駆動しても駆動に遅れが生じ、かつ最終的には鍵１１及び揺動レバー４０は押鍵状態に設定されるのであるから、鍵１１及び揺動レバー４０を駆動しない方が不自然でなくなるためである。ただし、この場合でも、図６のステップＳ１０２及び図７のステップＳ１２１の処理により、前記キャンセルされたキーオンデータ及びキーオフデューティに関する楽音は発生され、合計で２つの楽音が発音される。
【００８８】
(Ｃ)キーオフ直後のキーオン
このキーオフ直後のキーオンは、具体的には、図２０(Ｃ)に示すように、キーオンデータが曲データ中から読み出された後、キー駆動状態ＳＴが第１２状態ＳＴ１２を終了する前に、前記キーオフデータと同一のキーコードＫＣを有するキーオンデータが曲データ中から読み出された場合である。この場合、キーオンデータの読み出し時期が第９状態ＳＴ９から第１２状態ＳＴ１２のいずれに属するかにより制御が異なるので、これらを順次説明する。
【００８９】
まず、キーオンデータが第９状態ＳＴ９で曲データ中から読み出された場合について説明する。この場合、前述した図８の特殊キーオン処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１４４にて、「Ｙｅｓ」すなわちキーオンデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９であると判定して、ステップＳ１４５以降の処理を実行する。この場合、オフディレイフラグＯＦＤＬ(ｉ)は“０”に設定されているので、ＣＰＵ７１は、ステップＳ１４５にて「Ｎｏ」と判定して、ステップＳ１４７にて第１スイッチフラグＳＷ１(ｉ)が“０”であるかを判定する。第１スイッチフラグＳＷ１(ｉ)が“０”であれば、ＣＰＵ７１は、ステップＳ１４７にて「ＹＥＳ」と判定して、ステップＳ１４８にてキー駆動状態ＳＴ(ｉ)を第５状態ＳＴ５に設定するとともに、経過時間ＴＭ(ｉ)を第４状態ＳＴ４の終了時を表す時間値Ｔ４に設定する。そして、ＣＰＵ７１は、ステップＳ１４９にて、キーオンデータに含まれているキーコードＫＣが予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第５状態ＳＴ５に対応したデューティ比をキーコードＫＣと共に駆動回路６２に出力する。駆動回路６２は、前記キーコードＫＣにより表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００９０】
前記ステップＳ１４７の判定処理において、第１スイッチフラグＳＷ１(ｉ)が“１”であれば、ＣＰＵ７１は、ステップＳ１４７にて「Ｎｏ」と判定して、ステップＳ１５０にてオンディレイフラグＯＮＤＬ(ｉ)を“１”に設定する。この場合には、第１スイッチ４６がオン状態からオフ状態に変化すると、前述した図１０のスイッチイベントプログラムのステップＳ３０２にて「ＹＥＳ」と判定された後、ステップＳ３０３，Ｓ３０４の処理を経て、ステップＳ３０５，Ｓ３０６の処理により、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９を表し、かつ前記オンディレイフラグＯＮＤＬ(ｉ)が“１”に設定されていることを条件に、前述したステップＳ１４８，Ｓ１４９と同様なステップＳ３０７，Ｓ３０８の処理を実行する。そして、この場合には、ステップＳ３０９にて、オンディレイフラグＯＮＤＬ(ｉ)は“０”にリセットされる。
【００９１】
このような処理により、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９で、同一キーコードＫＣに関するキーオンデータが読み出されると、第１スイッチ４６がオフ状態にあることを条件に、キー駆動状態ＳＴ(ｉ)が第５状態ＳＴ５に変更される。したがって、この場合には、キーオフデータの読み出し直後のキーオンデータの読み出しにより、鍵１１及び揺動レバー４０は離鍵動作を中止して、押鍵動作を行う。また、第１スイッチ４６がオフ状態にあることを条件にした理由は、鍵１１及び揺動レバー４０は離鍵動作がある程度完了した後に、押鍵動作に入るようにするためである。これにより、楽音信号の発生タイミングとは異なるものの、鍵１１の離鍵動作及び押鍵動作が確実に行われ、視覚的にも不自然でなくなる。
【００９２】
次に、キーオンデータが第１０状態ＳＴ１０で曲データ中から読み出された場合について説明する。この場合、前述した図８の特殊キーオン処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１５１にて、「Ｙｅｓ」すなわちキーオンデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１０状態ＳＴ１０であると判定して、ステップＳ１５２，Ｓ１５３の処理を実行する。ステップＳ１５２においては、ＣＰＵ７１は、キー駆動状態ＳＴ(ｉ)を第４状態ＳＴ４に設定するとともに、経過時間ＴＭ(ｉ)を第３状態ＳＴ３の終了時を表す時間値Ｔ３に設定する。ステップＳ１５３においては、ＣＰＵ７１は、キーオンデータに含まれているキーコードＫＣが予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第４状態ＳＴ４に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。駆動回路６２は、キーコードＫＣにより表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００９３】
このような処理により、キー駆動状態ＳＴ(ｉ)が第１０状態ＳＴ１０で、同一キーコードＫＣに関するキーオンデータが読み出されると、キー駆動状態ＳＴ(ｉ)が第４状態ＳＴ４に変更される。したがって、この場合には、キーオフデータの読み出し直後のキーオンデータの読み出しにより、鍵１１及び揺動レバー４０は離鍵動作を中止して、ただちに押鍵動作を行う。なお、この場合には、第１スイッチ４６は既にオフ状態にあり、鍵１１及び揺動レバー４０は離鍵動作がある程度完了した後に、押鍵動作に入る。これにより、楽音信号の発生タイミングとは異なるものの、鍵１１の離鍵動作及び押鍵動作が確実に行われ、視覚的にも不自然でなくなる。
【００９４】
次に、キーオンデータが第１１状態ＳＴ１１で曲データ中から読み出された場合について説明する。この場合、前述した図８の特殊キーオン処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１５４にて、「Ｙｅｓ」すなわちキーオンデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１であると判定して、前述したステップＳ１５２，Ｓ１５３と同様なステップＳ１５５，Ｓ１５６の処理を実行する。ステップＳ１５５においては、ＣＰＵ７１は、キー駆動状態ＳＴ(ｉ)を第３状態ＳＴ３に設定するとともに、経過時間ＴＭ(ｉ)を第２状態ＳＴ２の終了時を表す時間値Ｔ２に設定する。ステップＳ１５６においては、ＣＰＵ７１は、キーオンデータに含まれているキーコードＫＣが予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第３状態ＳＴ３に対応したデューティ比をキーコードＫＣと共に駆動回路６２に出力する。駆動回路６２は、キーコードＫＣにより表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００９５】
このような処理により、キー駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１で、同一キーコードＫＣに関するキーオンデータが読み出されると、キー駆動状態ＳＴ(ｉ)が第３状態ＳＴ３に変更される。したがって、この場合には、キーオフデータの読み出し直後のキーオンデータの読み出しにより、鍵１１及び揺動レバー４０は離鍵動作を中止して、ただちに押鍵動作を行う。なお、この場合も、第１スイッチ４６は既にオフ状態にあり、鍵１１及び揺動レバー４０は離鍵動作がある程度完了した後に、押鍵動作に入る。これにより、楽音信号の発生タイミングとは異なるものの、鍵１１の離鍵動作及び押鍵動作が確実に行われ、視覚的にも不自然でなくなる。
【００９６】
次に、キーオンデータが第１２状態ＳＴ１２で曲データ中から読み出された場合について説明する。この場合、前述した図８の特殊キーオン処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１５７にて、「Ｙｅｓ」すなわちキーオンデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２であると判定して、ステップＳ１５８以降の処理を実行する。この場合、オフディレイフラグＯＦＤＬ(ｉ)は“０”に設定されているので、ＣＰＵ７１は、ステップＳ１５８にて「Ｎｏ」と判定して、ステップＳ１６０にてオンディレイフラグＯＮＤＬ(ｉ)を“１”に設定する。そして、経過時間ＴＭ(ｉ)が第１２状態ＳＴ１２の終了時に達すると、ＣＰＵ７１は、前述した図９Ｃのキー駆動プログラムのステップＳ２５２にて「Ｎｏ」すなわちオンディレイフラグＯＮＤＬ(ｉ)が“０”でないと判定して、ステップＳ２５５以降の処理を実行する。
【００９７】
ＣＰＵ７１は、ステップＳ２５５にてキー駆動状態ＳＴ(ｉ)を第２状態ＳＴ２に設定し、ステップＳ２５６にて経過時間ＴＭ(ｉ)を第１状態ＳＴ１の終了時を表す時間値Ｔ１に設定する。そして、ＣＰＵ７１は、ステップＳ２５７にて、キーオンデータに含まれているキーコードＫＣが予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第２状態ＳＴ２に対応したデューティ比をキーコードＫＣと共に駆動回路６２に出力する。そして、ＣＰＵ７１は、ステップＳ２５８にてオンディレイフラグＯＮＤＬ(ｉ)を“０”にリセットしておく。駆動回路６２は、キーコードＫＣにより表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００９８】
このような処理により、キー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２で、同一キーコードＫＣに関するキーオンデータが読み出されると、キー駆動状態ＳＴが第１２状態ＳＴ１２を終了するまで待って、キー駆動状態ＳＴ(ｉ)が第２状態ＳＴ２に変更される。したがって、この場合には、キーオフデータの読み出し直後のキーオンデータの読み出しにより、鍵１１及び揺動レバー４０は、離鍵動作の完全な終了後、押鍵動作に入る。これにより、楽音信号の発生タイミングとは僅かに異なるものの、鍵１１の離鍵動作及び押鍵動作が確実に行われ、視覚的にも不自然でなくなる。
【００９９】
前記説明のように、キーオフデータの読み出しの直後にキーオンデータが読み出された場合には、読み出しのタイミングが第９状態ＳＴ９から第１２状態ＳＴ１２のいずれかの状態にあるかにより、鍵１１及び揺動レバー４０を駆動するために、第２状態ＳＴ２から第５状態ＳＴ５のいずれかに戻るようにした。これは、揺動レバー４０の質量体４２の後部が下限ストッパ部材３１に近づくほど大きな推力で質量体４２を押し上げる必要があり、そのために、キーオンデータの読み出しタイミングが第１２状態ＳＴ１２に近づくほど、鍵１１及び揺動レバー４０を駆動するためのソレノイド５２による推力を大きくするためである。したがって、キーオフデータの読み出し直後にキーオンデータによる鍵１１及び揺動レバー４０の押鍵動作が適切に行われる。このような理由により、デューティ比テーブル内のデューティ比は、第２状態ＳＴ２から第５状態ＳＴ５にわたって、段階的に少しずつ下げられている。
【０１００】
(Ｄ)キーオフ直後のキーオン・オフ
このキーオフ直後のキーオン・オフは、具体的には、図２０(Ｄ)に示すように、キー駆動状態ＳＴが第９状態ＳＴ９又は第１２状態ＳＴ１２にあるときにキーオンデータが曲データ中から読み出され、第９状態ＳＴ９から第５状態ＳＴ５に切換わる前又は第１２状態ＳＴ１２から第２状態ＳＴ２に切換わる前に、さらにキーオフデータが曲データ中から読み出された場合である。なお、キー駆動状態ＳＴが第１０状態ＳＴ１０又は第１１状態ＳＴ１１にあるときにキーオンデータが読み出された場合には、即座に、第１０状態ＳＴ１０から第４状態に切換わる又は第１１状態ＳＴ１１から第３状態ＳＴ３に切換わるので、第１０状態ＳＴ１０又は第１１状態ＳＴ１１における更なるキーオフデータの読み出しはあり得ない。
【０１０１】
まず、キー駆動状態ＳＴが第９状態ＳＴ９にあるときにキーオンデータが曲データ中から読み出され、その直後にキーオフデータが曲データ中から読み出された場合について説明する。この場合、前記「(Ｃ)キーオフ直後のキーオン」で説明したように、キーオンデータの読み出し時に、図８のステップＳ１４７，Ｓ１５０の処理により、オンディレイフラグＯＮＤＬ(ｉ)が“１”に設定される。そして、この状態で、前記キーオンデータと同一のキーコードＫＣを有するキーオフデータが読み出されると、前述した図７のキーオフ処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１２８にて「Ｙｅｓ」すなわちキーオフデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９であると判定する。そして、ＣＰＵ７１は、ステップＳ１２９にて、オフディレイフラグＯＦＤＬ(ｉ)を“１”に設定する。
【０１０２】
その後、前記キーコードＫＣに対応した鍵１１の第１スイッチ４６がオフされると、前述した図１０のスイッチイベントプログラムのステップＳ３０２にて「Ｙｅｓ」と判定され、前記ステップＳ３０３，Ｓ３０４の処理後、ＣＰＵ７１は、ステップＳ３０５にて「Ｙｅｓ」すなわちキー駆動状態ＳＴ(ｉ)は第９状態ＳＴ９であると判定してプログラムをステップＳ３０６以降に進める。この場合、オンディレイフラグＯＮＤＬ(ｉ)は“１”に設定されているので、ＣＰＵ７１は、ステップＳ３０６にて「Ｙｅｓ」と判定し、ステップＳ３０７〜Ｓ３０９の処理を実行する。ステップＳ３０７〜Ｓ３０９の処理は、前記「(Ｃ)キーオフ直後のキーオン」の説明したように、キー駆動状態ＳＴ(ｉ)を第５状態ＳＴ５に戻して鍵１１及び揺動レバー４０を押鍵動作させるとともに、オンディレイフラグＯＮＤＬ(ｉ)を“０”にリセットするものである。
【０１０３】
このような処理により、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９で、同一キーコードＫＣに関するキーオンデータ及びキーオフデータが曲データ中から順次読み出されると、前記「(Ｃ)キーオフ直後のキーオン」と同様に、前記第１スイッチ４６がオフ状態にあることを条件に、キー駆動状態ＳＴ(ｉ)が第５状態ＳＴ５に変更されて、鍵１１及び揺動レバー４０は押鍵動作を開始する。ただし、この場合には、前記「(Ｃ)キーオフ直後のキーオン」とは異なり、オフディレイフラグＯＦＤＬ(ｉ)は“１”に保たれたまま第５状態ＳＴ５に戻るので、前記「(Ａ)キーオン直後のキーオフ」と同様に、キー駆動状態ＳＴ(ｉ)が第７状態ＳＴ７を終了すると、その直後に、キー駆動状態ＳＴ(ｉ)は第９状態ＳＴ９に変更されて、鍵１１及び揺動レバー４０は離鍵動作を開始する。これにより、この場合も、楽音信号の発生タイミングとは異なるものの、鍵１１の離鍵動作及び押鍵動作からなる連打動作が確実に行われ、視覚的にも不自然でなくなる。
【０１０４】
次に、キー駆動状態ＳＴが第１２状態ＳＴ１２にあるときにキーオンデータが曲データ中から読み出され、その直後にキーオフデータが曲データ中から読み出された場合について説明する。この場合、前記「(Ｃ)キーオフ直後のキーオン」で説明したように、キーオンデータの読み出し時に、図８のステップＳ１５７，Ｓ１６０の処理により、オンディレイフラグＯＮＤＬ(ｉ)が“１”に設定される。そして、この状態で、前記キーオンデータと同一のキーコードＫＣを有するキーオフデータが読み出されると、前述した図７のキーオフ処理ルーチンにおいて、ＣＰＵ７１は、ステップＳ１３０にて「Ｙｅｓ」すなわちキーオフデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉのキー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２であると判定する。そして、ＣＰＵ７１は、ステップＳ１３１にて、オフディレイフラグＯＦＤＬ(ｉ)を“１”に設定する。
【０１０５】
その後、経過時間ＴＭ(ｉ)が時間値Ｔ１２以上になると、ＣＰＵ７１は、図９ＣのステップＳ２５１にて「Ｙｅｓ」と判定して、前述したステップＳ２５２の判定処理を実行する。この場合、オンディレイフラグＯＮＤＬ(ｉ)は“１”に設定されているので、ＣＰＵ７１は、ステップＳ２５２にて「Ｎｏ」と判定して、ステップＳ２５５〜Ｓ２５８の処理を実行する。ステップＳ２５５〜Ｓ２５８の処理は、前記「(Ｃ)キーオフ直後のキーオン」の説明したように、キー駆動状態ＳＴ(ｉ)を第２状態ＳＴ２に戻して鍵１１及び揺動レバー４０を押鍵動作させるとともに、オンディレイフラグＯＮＤＬ(ｉ)を“０”にリセットするものである。
【０１０６】
このような処理により、キー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２で、同一キーコードＫＣに関するキーオンデータ及びキーオフデータが読み出されると、前記「(Ｃ)キーオフ直後のキーオン」と同様に、経過時間ＴＭ(ｉ)が第１２状態ＳＴ１２の終了を表す時間値Ｔ１２になったことを条件に、キー駆動状態ＳＴ(ｉ)が第２状態ＳＴ２に変更されて、鍵１１及び揺動レバー４０は押鍵動作を開始する。ただし、この場合には、前記「(Ｃ)キーオフ直後のキーオン」とは異なり、オフディレイフラグＯＦＤＬ(ｉ)は“１”に保たれたまま第２状態ＳＴ２に戻るので、前記「(Ａ)キーオン直後のキーオフ」と同様に、キー駆動状態ＳＴ(ｉ)が第７状態ＳＴ７を終了すると、その直後に、キー駆動状態ＳＴ(ｉ)は第９状態ＳＴ９に変更されて、鍵１１及び揺動レバー４０は離鍵動作を開始する。これにより、この場合も、楽音信号の発生タイミングとは異なるものの、鍵１１の離鍵動作及び押鍵動作からなる連打動作が確実に行われ、視覚的にも不自然でなくなる。
【０１０７】
(Ｅ)キーオフ直後のキーオン・オフ・オン
このキーオフ直後のキーオン・オフ・オンは、具体的には、図２０(Ｅ)に示すように、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９又は第１２状態ＳＴ１２にあるときにキーオンデータ及びキーオフデータが曲データ中から順次読み出され、第９状態ＳＴ９から第５状態ＳＴ５に切換わる前又は第１２状態ＳＴ１２から第２状態ＳＴ２に切換わる前に、さらにキーオンデータが曲データ中から読み出された場合である。
【０１０８】
まず、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９にあるときにキーオンデータ及びキーオフデータが読み出され、その直後にキーオンデータが読み出された場合について説明する。この場合、前記「(Ｄ)キーオフ直後のキーオン・オフ」で説明したように、前のキーオンデータの読み出し時に、図８のステップＳ１４７，Ｓ１５０の処理により、オンディレイフラグＯＮＤＬ(ｉ)が“１”に設定され、キーオフデータの読み出し時に、図７のステップＳ１２８，Ｓ１２９の処理によりオフディレイフラグＯＦＤＬ(ｉ)が“１”に設定される。
【０１０９】
その後、キーオンデータの読み出しにより、ＣＰＵ７１は図８の特殊キーオンルーチンのステップＳ１４４にて「Ｙｅｓ」と判定して、ステップＳ１４５の判定処理を実行する。この場合、オフディレイフラグＯＦＤＬ(ｉ)は“１”に設定されているので、ＣＰＵ７１は、ステップＳ１４５にて「Ｙｅｓ」と判定して、ステップＳ１４６にてＯＦＤＬ(ｉ)を“０”にリセットする。このＯＦＤＬ(ｉ)のリセットは、キーオフデータのキャンセルを意味する。これにより、この状態では、前記「(Ｃ)キーオフ直後のキーオン」の場合と同じなり、第１スイッチ４６のオフを条件に、キー駆動状態ＳＴ(ｉ)が第５状態ＳＴ５に戻されて鍵１１及び揺動レバー４０が押鍵動作するとともに、オンディレイフラグＯＮＤＬ(ｉ)が“０”にリセットされる。
【０１１０】
したがって、この場合には、キーオフ直後のキーオフデータ及びその後のキーオンデータがキャンセルされてしまい、鍵１１及び揺動レバー４０は、第１スイッチ４６のオフを条件に、押鍵動作する。そして、その後の鍵１１及び揺動レバー４０の離鍵動作は、その後のキーオフデータの読み出しに従う。これは、キー駆動状態ＳＴ(ｉ)が第９状態ＳＴ９である間に、キーオンデータ及びキーオフデータが読み出され、その直後にキーオンデータがふたたび読み出された場合でも、前のキーオンデータ及びキーオフデータに応答して鍵１１及び揺動レバー４０を駆動しても駆動に遅れが生じ、かつその後のキーオンデータにより最終的には鍵１１及び揺動レバー４０は押鍵状態に設定されるのであるから、鍵１１及び揺動レバー４０を繰り返し駆動しない方が不自然でなくなるためである。
【０１１１】
次に、キー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２にあるときにキーオンデータ及びキーオフデータが曲データ中から順次読み出され、その直後にキーオンデータが曲データ中から読み出された場合について説明する。この場合、前記「(Ｄ)キーオフ直後のキーオン・オフ」で説明したように、前のキーオンデータの読み出し時に、図８のステップＳ１５７，Ｓ１６０の処理により、オンディレイフラグＯＮＤＬ(ｉ)が“１”に設定され、キーオフデータの読み出し時に、図７のステップＳ１３０，Ｓ１３１の処理によりオフディレイフラグＯＦＤＬ(ｉ)が“１”に設定される。
【０１１２】
その後、キーオンデータの読み出しにより、ＣＰＵ７１は図８の特殊キーオンルーチンのステップＳ１５７にて「Ｙｅｓ」と判定して、ステップＳ１５８の判定処理を実行する。この場合、オフディレイフラグＯＦＤＬ(ｉ)は“１”に設定されているので、ＣＰＵ７１は、ステップＳ１５８にて「Ｙｅｓ」と判定して、ステップＳ１５９にてＯＦＤＬ(ｉ)を“０”にリセットする。このＯＦＤＬ(ｉ)のリセットも、キーオフデータのキャンセルを意味する。これにより、この状態では、前記「(Ｃ)キーオフ直後のキーオン」の場合と同じなり、キー駆動状態ＳＴ(ｉ)の第１２状態ＳＴ１２の終了時に、キー駆動状態ＳＴ(ｉ)が第２状態ＳＴ２に戻されて鍵１１及び揺動レバー４０が押鍵動作するとともに、オンディレイフラグＯＮＤＬ(ｉ)が“０”にリセットされる。
【０１１３】
したがって、この場合にも、キーオフ直後のキーオフデータ及びその後のキーオンデータがキャンセルされてしまい、鍵１１及び揺動レバー４０は、キー駆動状態ＳＴ(ｉ)の第１２状態ＳＴ１２の終了時に押鍵動作する。そして、その後の鍵１１及び揺動レバー４０の離鍵動作は、その後のキーオフデータの読み出しに従う。これは、キー駆動状態ＳＴ(ｉ)が第１２状態ＳＴ１２である間に、キーオンデータ及びキーオフデータが読み出され、その直後にキーオンデータがふたたび読み出された場合、前のキーオンデータ及びキーオフデータに応答して鍵１１及び揺動レバー４０を駆動しても駆動に遅れが生じ、かつその後のキーオンデータにより最終的には鍵１１及び揺動レバー４０は押鍵状態に設定されるのであるから、鍵１１及び揺動レバー４０を繰り返し駆動しない方が不自然でなくなるためである。
【０１１４】
ｃ．複数鍵連打動作
次に、複数の鍵１１に関するイベントデータを構成するキーオンデータが、和音演奏又は複数の鍵１１の連打演奏のように、短時間内に曲データ中から読み出される場合について説明する。キーオンデータが読み出されるとともに、読み出されたキーオンデータが自動演奏テーブルのいずれかのチャンネルに割当てられると、図６の自動演奏イベント処理ルーチンのステップＳ１０９の処理により、ウェイト制御フラグＷＴＣＮＴが“１”に設定されるとともに、ウェイトタイマＷＴＭが所定の待ち時間ＷＴＭmaxに設定される。この待ち時間ＷＴＭmaxは、例えば５ｍｓ程度の所定の短い時間値に設定されている。一方、ＣＰＵ７１は、タイマ７２との協働により、図１３のウェイト処理プログラムを所定の短時間ごとに繰り返し実行している。
【０１１５】
このウェイト処理プログラムの実行はステップＳ５００にて開始され、ＣＰＵ７１はステップＳ５０１にてウェイト制御フラグＷＴＣＮＴが“１”であるか否かを判定する。ウェイト制御フラグＷＴＣＮＴが“１”に設定されていると、ＣＰＵ７１は、ステップＳ５０１にて「Ｙｅｓ」と判定し、ステップＳ５０２にてウェイトタイマＷＴＭからこのウェイト処理プログラムの実行間隔時間を表す所定値ＷＴＭoを減算する。そして、ＣＰＵ７１は、ステップＳ５０３にてウェイトタイマＷＴＭが「０」以下であるかを判定する。この場合、キーオンデータの前回の読み出しから待ち時間ＷＴＭmaxが経過するまでは、ＣＰＵ７１は、ステップＳ５０３にて「Ｎｏ」と判定して、ステップＳ５１２にてこのウェイト処理プログラムの実行を一旦終了する。
【０１１６】
前記基本動作では、複数のキーオンデータは同時又は短時間内に曲データ中から順次読み出されないことを前提としていたので、後述する図６のステップＳ１１５の処理によってウェイトテーブル内に押鍵動作待ちのチャンネル番号ｃｈＮＯが記憶されることはない。したがって、キーオンデータの読み出しから待ち時間ＷＴＭmaxが経過すると、ＣＰＵ７１は、図１３のステップＳ５０３にて「Ｙｅｓ」と判定し、ステップＳ５０４にて「Ｎｏ」と判定する。そして、ＣＰＵ７１は、ステップＳ５１１にて、ウェイト制御フラグＷＴＣＮＴを“０”にリセットする。その結果、前回のキーオンデータの読み出しタイミングから待ち時間ＷＴＭmaxを経過した後に、次のキーオンデータが読み出される場合には、前記基本動作で説明したように、ＣＰＵ７１は、図６のステップＳ１０７にて「Ｙｅｓ」と判定してステップＳ１０８，Ｓ１０９の処理を実行する。これにより、この場合には、ステップＳ１０２の楽音信号の発生開始と同時に鍵１１及び揺動レバー４０は押鍵動作する。
【０１１７】
しかし、図２１に示すように、複数のキーオンデータが同時又は待ち時間ＷＴＭmax内に曲データ中から順次読み出されて、前記図１３のステップＳ５１１の処理によりウェイト制御フラグＷＴＣＮＴが“０”にリセットされる前に、次のキーオンデータが曲データ中から読み出された場合には、ＣＰＵ７１は、図６のステップＳ１０７にて「Ｎｏ」と判定して、ステップＳ１１４，Ｓ１１５の処理を実行する。ステップＳ１１４においては、ＣＰＵ７１は、前述したステップＳ１０６の処理によって探し出された、キーオンデータ中に含まれるキーコードＫＣと同一のキーコードＫＣを記憶した自動演奏テーブル内のチャンネルｉのウェイトフラグＷＡＩＴ(ｉ)を“１”に設定する。ステップＳ１１５においては、ウェイトテーブル内のチャンネル番号ｃｈＮＯを更新する。このチャンネル番号ｃｈＮＯの更新においては、前記探し出されたチャンネル番号ｃｈＮＯ（＝ｉ）を、ウェイトテーブル内に最も優先順位の低いチャンネル番号ｃｈＮＯとして記憶する。ただし、ウェイトテーブル内にチャンネル番号ｃｈＮＯが１つしか存在しない場合には、最も優先順位の高いチャンネル番号ｃｈＮＯと同等である。
【０１１８】
この場合、前記ステップＳ１０８，Ｓ１０９の処理が実行されないので、ステップＳ１０２の処理によりキーオンデータに関する楽音信号の発生は開始されるが、同キーオンデータに関した鍵１１及び揺動レバー４０の押鍵動作は行われない。その代わり、ウェイトテーブルには、押鍵動作待ちのキーオンデータの割当てチャンネルを表す複数のチャンネル番号ｃｈＮＯが次々に記憶される。このウェイトテーブル内の複数のチャンネル番号ｃｈＮＯは、前記図６のステップＳ１１５のチャンネル番号ｃｈＮＯの更新処理及び後述する図１３のステップＳ５０５の更新処理により、常に優先順位順に記憶されている。
【０１１９】
このようにウェイトテーブル内にチャンネル番号ｃｈＮＯが記憶された状態で、ウェイトタイマＷＴＭが図１３のステップＳ５０２の処理によって前述のように「０」以下になると、ＣＰＵ７１は、ステップＳ５０３にて「Ｙｅｓ」と判定した後、ステップＳ５０４にて「Ｙｅｓ」と判定して、ステップＳ５０５以降の処理を実行する。ステップＳ５０５においては、ＣＰＵ７１は、ウェイトテーブルに記憶されていて最も優先順位の高いチャンネル番号ｃｈＮＯを取り出して変数ｉとして設定する。次に、ＣＰＵ７１は、ステップＳ５０６にて、ウェイトテーブルのチャンネル番号ｃｈＮＯを更新する。このチャンネル番号ｃｈＮＯの更新においては、前記取り出したチャンネル番号ｃｈＮＯ（＝ｉ）をウェイトテーブルから消去し、それ以外のチャンネル番号ｃｈＮＯを優先順に並び換えて記憶する。次に、ＣＰＵ７１は、ステップＳ５０７にて、変数ｉにより指定されるチャンネルｃｈｉのウェイトフラグＷＡＩＴ(ｉ)を“０”にリセットする。
【０１２０】
ステップＳ５０７の処理後、ＣＰＵ７１は、ステップＳ５０８にて、前記変数ｉにより指定される自動演奏テーブル内のキーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１６参照）内の第１状態ＳＴ１に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動回路６２に出力する。駆動回路６２は、キーコードＫＣ(ｉ)により表された鍵１１に対応したソレノイド５２を前記デューティ比に応じたＰＷＭ波形で通電制御するので、キーコードＫＣ(ｉ)に対応した鍵１１及び揺動レバー４０は押鍵動作を開始する。この場合の押鍵動作は、前回の押鍵動作から待ち時間ＷＴＭmaxだけ遅れている。
【０１２１】
次に、ＣＰＵ７１は、ステップＳ５０９にて、ウェイトテーブル内にチャンネル番号ｃｈＮＯがあるか、すなわちチャンネル番号ｃｈＮＯがウェイトテーブル内に残っているかを判定する。チャンネル番号ｃｈＮＯが残っていれば、ＣＰＵ７１は、ステップＳ５０９にて「Ｙｅｓ」と判定して、ステップＳ５１０にてウェイトタイマＷＴＭをふたたび待ち時間ＷＴＭmaxに設定して、ステップＳ５１２にてこのウェイト処理プログラムの実行を一旦終了する。
【０１２２】
この場合、ウェイト制御フラグＷＴＣＮＴは“１”に設定されたままであるので、その後に、ウェイト処理プログラムが実行された場合には、ステップＳ５０１〜Ｓ５０３の処理が繰り返し実行されて、ウェイトタイマＷＴＭが時間経過に従って減少する。そして、ウェイトタイマＷＴＭが「０」以下になれば、ステップＳ５０３，Ｓ５０４にてそれぞれ「Ｙｅｓ」と判定されて、ステップＳ５０５〜Ｓ５０８の処理により、ウェイトテーブル内のチャンネル番号ｃｈＮＯにより指定される鍵１１及び揺動レバー４０が押鍵動作するとともに、ウェイトテーブル内のチャンネル番号ｃｈＮＯが順次消去されていく。そして、ウェイトテーブル内にチャンネル番号ｃｈＮＯが存在しなくなった時点で、ＣＰＵ７１はステップＳ５０９にて「Ｎｏ」と判定して、ステップＳ５１１にてウェイト制御フラグＷＴＣＮＴを“０”に設定する。したがって、これ以降にキーオンデータが曲データ中から読み出された場合には、図６のステップＳ１０７，Ｓ１０８の処理により、キーオンデータの読み出しすなわち楽音信号の発生開始と同時に鍵１１及び揺動レバー４０は押鍵動作するようになる。
【０１２３】
上記作動説明からも理解できるように、複数の鍵１１に関するキーオンデータが短時間内に曲データ中から次々に読み出される場合には、楽音信号はキーオンデータの発生に同期して開始されるが、鍵１１及び揺動レバー４０の押鍵動作は待ち時間ＷＴＭmax間隔で行われる。この場合、待ち時間ＷＴＭmax（例えば、５ｍｓ）は、図１６のデューティ比テーブルにおける第３状態ＳＴ３乃至第６状態ＳＴ６のいずかれの状態すなわちソレノイド５２への通電量が減少する状態に含まれる時間に設定されている。したがって、前記待ち時間ＷＴＭmax間隔の押鍵動作により、複数の鍵１１に関するキーオンデータが短時間内に読み出されても、図２１に示すように、複数のソレノイド５２への通電量の合計値の上昇を抑えることができる。その結果、鍵１１及び揺動レバー４０を駆動するための瞬間電力量及び所定の短い時間内の積算電力量を抑えることができて、瞬間電力量及び所定の短い時間内の積算電力量が許容値を超えることを防止できる。その結果、電力の供給源である電源装置が損傷したり、音源回路６６、表示回路６８、コンピュータ部７０などの他の回路の動作が不安定になることもない。
【０１２４】
また、前記基本動作で説明したように、キーオフデータが読み出されることなく、多くのキーオンデータが読み出され続けた場合（すなわち同時に多くのキーオンが存在するような場合）、図６のステップＳ１０２の処理により楽音信号の発生は許容されるが、図６のステップＳ１０５の処理により、イベントデータであるキーオンデータの自動演奏テーブルへの割当てが禁止されて、鍵１１及び揺動レバー４０は駆動されない。本実施形態では、自動演奏テーブルのチャンネル数（例えば、１０個）に対応した最大で１０個のみのソレノイド５２への通電が許容されるだけである。これにより、キーオン維持された状態すなわち図１６の第８状態ＳＴ８に維持された鍵１１の数がある程度増加しても、ソレノイド５２への最大電力をある程度小さく抑えることができる。その結果、鍵１１及び揺動レバー４０を駆動するための瞬間電力量及び所定の短い時間内の積算電力量を抑えることができて、瞬間電力量及び所定の短い時間内の積算電力量が許容値を超えることを防止できる。なお、前記第８状態ＳＴ８があまりにも長く継続する場合には、第８状態ＳＴ８にあるソレノイド５２への通電を停止する措置を取ることも可能である。
【０１２５】
ｄ．マニュアル演奏との競合動作
次に、自動演奏の再生と同時に、ユーザが鍵盤装置１０を用いてマニュアル演奏した場合について説明する。ユーザが鍵盤装置１０内のいずれかの鍵１１を押離鍵操作すると、押鍵時には鍵１１の前端部の降下及び揺動レバー４０の反時計回りの回転により、レバー基部４１に設けたスイッチ駆動部４１ｅが第１乃至第３スイッチ４６〜４８を順に押圧し、第１スイッチ４６、第２スイッチ４７及び第３スイッチ４８はこの順にオンする。一方、離鍵時には、スイッチ駆動部４１ｅが第１乃至第３スイッチ４６〜４８の押圧を順に解除するので、第３スイッチ４８、第２スイッチ４７及び第１スイッチ４６はこの順にオフする。そして、これらの第１乃至第３スイッチ４６〜４８のオン・オフ動作は検出回路６１により検出される。
【０１２６】
前記第１乃至第３スイッチ４６〜４８のオン・オフ動作が検出回路６１により検出されると、検出回路６１はバス６３を介してキーイベントデータをコンピュータ部７０に供給する。このキーイベントデータは、第１乃至第３スイッチ４６〜４８のオンイベント及びオフイベントに加えて、第１乃至第３スイッチ４６〜４８に対応した鍵１１を表すキーコードＫＣを含んでいる。そして、このキーイベントデータがコンピュータ部７０に供給されると、ＣＰＵ７１は、前述のように、図１０のスイッチイベントプログラムを実行する。このスイッチイベントプログラムの実行は、ステップＳ３００にて開始され、ＣＰＵ７１は、ステップＳ３０１にて、ＲＡＭ６４内の自動演奏テーブル（図１７）を参照し、前記供給されたキーイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶し、かつ第１スイッチフラグＳＷ１が“１”であるチャンネルｃｈが存在するかを判定する。そして、前記条件が成立しなければ、ＣＰＵ７１は、ステップＳ３０１にて「Ｎｏ」と判定し、ステップＳ３１０にてマニュアル演奏ルーチンの処理を実行する。
【０１２７】
このマニュアル演奏ルーチンは図１１に示されており、その実行がステップＳ３２０にて開始される。このマニュアル演奏ルーチンにおいては、第１スイッチ４６のオンイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３２１にて「Ｙｅｓ」と判定して、ステップＳ３２２の処理を実行する。ステップＳ３２２においては、ＣＰＵ７１は、ＲＡＭ６４内に用意されているマニュアル演奏テーブル（図１９参照）内において、第１スイッチフラグＳＷ１が“０”であり、かつ割当て優先度ＡＳＰＲが最大であるチャンネルｃｈｊを探し出し、同探し出したチャンネルｃｈｊに前記供給されたキーコードＫＣを割当てる。すなわち、マニュアル演奏テーブルの前記探し出したチャンネルｃｈｊのキーコードＫＣ(ｊ)を前記供給されたキーコードＫＣに設定し、第１スイッチフラグＳＷ１(ｊ)を“１”に設定し、第２スイッチフラグＳＷ２(ｊ)を“０”にリセットし、第３スイッチフラグＳＷ３(ｊ)を“０”にリセットし、カウントフラグＣＮＴＦ(ｊ)を“０”にリセットし、タッチカウント値ＴＣＮＴ(ｊ)を「０」にクリアし、かつ割当て優先度ＡＳＰＲ(ｊ)を「０」に設定する。
【０１２８】
なお、この場合は、ソレノイド５２の通電により鍵１１及び揺動レバー４０を駆動するわけでなく、消費電力の問題がないので、マニュアル演奏テーブルの割当てチャンネル数ｐは十分に大きな値であり、全ての鍵１１の押鍵はマニュアル演奏テーブルのいずれかに割り当てられる。また、供給されたキーコードＫＣと同一キーコードＫＣを記憶しているチャンネルが存在する場合には、割当て優先度ＡＳＰＲ(ｊ)とは無関係に、前記供給されたキーコードＫＣを前記同一キーコードＫＣを記憶しているチャンネルに割当てるようにしてもよい。
【０１２９】
第２スイッチ４７のオンイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３２３にて「Ｙｅｓ」と判定して、ステップＳ３２４，Ｓ３２５の処理を実行する。ステップＳ３２４においては、ＣＰＵ７１は、マニュアル演奏テーブル内において、供給されたキーコードＫＣと同一キーコードＫＣ(ｊ)を記憶し、かつ第１スイッチフラグＳＷ１(ｊ)が“１”であるチャンネルを探し出し、同探し出したチャンネルのチャンネル番号ｃｈを変数ｊに設定する。ステップＳ３２５においては、ＣＰＵ７１は、前記設定した変数ｊによって指定される第２スイッチフラグＳＷ２(ｊ)を“１”に設定し、かつカウントフラグＣＮＴＦ(ｊ)を“１”に設定する。
【０１３０】
一方、ＣＰＵ７１は、図１２のタッチカウントプログラムを所定の短時間ごとに繰り返し実行している。このタッチカウントプログラムの実行はステップＳ４００にて開始され、ＣＰＵ７１は、ステップＳ４０１，Ｓ４０４，Ｓ４０５の処理により、変数ｊを「１」から「１」ずつ順次増加させながら、ステップＳ４０２，Ｓ４０３の処理を実行する。そして、変数ｊが「ｐ」に達すると、ＣＰＵ７１は、ステップＳ４０４にて「Ｙｅｓ」と判定し、ステップＳ４０６にてこのタッチカウントプログラムの実行を一旦終了する。
【０１３１】
ステップＳ４０２，Ｓ４０３の処理においては、ＣＰＵ７１は、マニュアル演奏テーブル内の変数ｊで指定されるチャンネルのカウントフラグＣＮＴＦ(ｊ)が“１”であるチャンネルｊのタッチカウント値ＴＣＮＴ(ｊ)に「１」を加算する。これにより、鍵１１の押鍵操作により、第２スイッチ４７がオン状態に変化した後、時間経過に従ってタッチカウント値ＴＣＮＴ(ｊ)が、このタッチカウントプログラムの実行周期ごとに「１」ずつ順次増加する。
【０１３２】
このようなタッチカウント値ＴＣＮＴ(ｊ)の増加状態で、第３スイッチ４８のオンイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３２６にて「Ｙｅｓ」と判定して、ステップＳ３２７以降の処理を実行する。ステップＳ３２７においては、ＣＰＵ７１は、マニュアル演奏テーブル内において、供給されたキーコードＫＣと同一キーコードＫＣ(ｊ)を記憶し、かつ第２スイッチフラグＳＷ２(ｊ)が“１”であるチャンネルを探し出し、同探し出したチャンネルのチャンネル番号を変数ｊに設定する。次に、ＣＰＵ７１は、ステップＳ３２８にて、前記変数ｊにより指定されるチャンネルのタッチカウント値ＴＣＮＴ(ｊ)を読み出して、図示しないベロシティ変換テーブルを参照して、タッチカウント値ＴＣＮＴ(ｊ)にほぼ反比例するベロシティＶＥＬを計算する。ベロシティ変換テーブルは、タッチカウント値ＴＣＮＴにほぼ反比例するベロシティＶＥＬを記憶している。したがって、計算されたベロシティＶＥＬは、第２スイッチＳＷ２がオンしてから第３スイッチＳＷ３がオンするまでの時間にほぼ反比例した値を示し、鍵タッチの速さ（すなわち強さ）を表すデータとして利用される。
【０１３３】
このベロシティＶＥＬの計算後、ＣＰＵ７１は、ステップＳ３２９にて、前記変数ｊによって指定されるキーコードＫＣ(ｊ)、キーオンＫＯＮ及びベロシティＶＥＬをバス６３を介して音源回路６６に供給する。音源回路６６は、前記キーコードＫＣ(ｊ)により表された音高の楽音信号の生成を開始し、同楽音信号に対応した楽音をサウンドシステム６９を介して放音し始める。なお、この場合の楽音信号の音色、音量、効果などは、パネル操作子６４の操作により設定されたものであると同時に、前記音色、音量などは供給されたベロシティＶＥＬによっても制御される。前記ステップＳ３２９の処理後、ＣＰＵ７１は、ステップＳ３３０にて、前記設定した変数ｊによって指定される第３スイッチフラグＳＷ３(ｊ)を“１”に設定し、かつカウントフラグＣＮＴＦ(ｊ)を“０”にリセットする。このカウントフラグＣＮＴＦ(ｊ)のリセットにより、前記図１２のタッチカウントプログラムが実行されても、タッチカウント値ＴＣＮＴ(ｉ)は増加しない。
【０１３４】
第３スイッチ４８のオフイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３３１にて「Ｙｅｓ」と判定して、ステップＳ３３２，Ｓ３３３の処理を実行する。ステップＳ３３２においては、ＣＰＵ７１は、マニュアル演奏テーブル内において供給されたキーコードＫＣと同一キーコードＫＣ(ｊ)を記憶し、かつ第３スイッチフラグＳＷ３(ｊ)が“１”であるチャンネルを探し出し、同探し出したチャンネルのチャンネル番号ｃｈを変数ｊに設定する。ステップＳ３３３においては、ＣＰＵ７１は、前記設定した変数ｊによって指定される第３スイッチフラグＳＷ３(ｊ)を“０”にリセットする。
【０１３５】
第２スイッチ４７のオフイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３３４にて「Ｙｅｓ」と判定して、ステップＳ３３５，Ｓ３３６の処理を実行する。ステップＳ３３５においては、ＣＰＵ７１は、マニュアル演奏テーブル内において供給されたキーコードＫＣと同一キーコードＫＣ(ｊ)を記憶し、かつ第２スイッチフラグＳＷ２(ｊ)が“１”であるチャンネルを探し出し、同探し出したチャンネルのチャンネル番号ｃｈを変数ｊに設定する。ステップＳ３３６においては、ＣＰＵ７１は、前記設定した変数ｊによって指定される第２スイッチフラグＳＷ２(ｊ)を“０”にリセットする。
【０１３６】
第１スイッチ４６のオフイベントがキーコードＫＣと共に検出回路６１からコンピュータ部７０に供給されると、ＣＰＵ７１は、ステップＳ３３７にて「Ｙｅｓ」と判定して、ステップＳ３３８以降の処理を実行する。ステップＳ３３８においては、ＣＰＵ７１は、マニュアル演奏テーブル内において、供給されたキーコードＫＣと同一キーコードＫＣ(ｊ)を記憶し、かつ第１スイッチフラグＳＷ１(ｊ)が“１”であるチャンネルを探し出し、同探し出したチャンネルのチャンネル番号を変数ｊに設定する。次に、ＣＰＵ７１は、ステップＳ３３９にて、前記変数ｊによって指定されるキーコードＫＣ(ｊ)及びキーオフＫＯＦをバス６３を介して音源回路６６に供給する。音源回路６６は、前記キーコードＫＣ(ｊ)により表された音高の楽音信号の生成を停止する。詳しくは、同楽音信号をリリースさせた後、その発生を停止する。
【０１３７】
次に、ＣＰＵ７１は、ステップＳ３４０にて、前記設定した変数ｊによって指定される第１スイッチフラグＳＷ１(ｊ)を“０”にリセットし、かつ割当て優先度ＡＳＰＲ(ｊ)を「１」に設定する。そして、ＣＰＵ７１は、ステップＳ３４１にて、前記変数ｊによって指定される以外かつ第１スイッチフラグＳＷ１が“０”であるチャンネルの割当て優先度ＡＳＰＲにそれぞれ「１」を加算する。
【０１３８】
このような動作説明からも理解できるように、鍵盤装置１０の鍵１１を押鍵及び離鍵操作することにより、ユーザがマニュアル演奏を行うと、同演奏に従って、楽音が発音される。そして、この発生楽音は、ユーザによる鍵タッチに応じて音色、音量などが変更制御される。
【０１３９】
このようなマニュアル演奏が行われた鍵１１に関しては、自動演奏によるキーイベントデータであるキーオンデータが曲データ中から読み出されても、前述のように、図６の自動演奏イベント処理ルーチンのステップＳ１０３の処理により、自動演奏による鍵１１及び揺動レバー４０の駆動が禁止される。その結果、ユーザが押鍵中の鍵１１に対応したソレノイド５２を通電制御した場合に、駆動ロッド５４が既に上方に変位しているレバー基部４１に勢いよく衝突することを回避でき、前記衝突による異音の発生を防止できるとともに、駆動ロッド５４及びレバー基部４１の衝突による磨耗を回避できる。また、曲の練習において、ユーザは自動演奏される曲を鍵盤装置１０を用いて演奏した場合、鍵１１がソレノイド５２によって駆動されないことは、ユーザの演奏が正しいことを意味するので、ソレノイド５２による鍵１１の駆動によりユーザの演奏の正確さを判定することもできる。
【０１４０】
逆に、自動演奏に基づくキーオンデータが自動演奏テーブル内のいずれかのチャンネルに割当てられ、前記キーオンデータによる楽音信号が発生される場合には、第１乃至第３スイッチ４６〜４８がオン・オフ動作して、検出回路６１からこれらのオン・オフ動作によるキーイベントデータがコンピュータ部７０に供給されても、このキーイベントデータによる楽音信号の発生の制御はなされない。すなわち、前記キーイベントデータがコンピュータ部７０に供給されても、ＣＰＵ７１は図１０のステップＳ３０１の判定処理により、自動演奏テーブル内に供給されたキーイベントデータ中のキーコードＫＣと同一キーコードＫＣを記憶し、かつ第１スイッチフラグＳＷ１が“１”であるチャンネルが存在すれば、ステップＳ３１０の処理を実行しない。そして、自動演奏テーブルへのキーオンデータの割り当てはキーオンデータの読み出し後に瞬時に実行されるのに対し、鍵１１の駆動には遅れがあるので、自動演奏による曲データの再生による楽音信号の発生と、前記曲データに従った鍵１１の駆動によるキーイベントデータの発生による楽音信号の発生が重ねて行われることはない。
【０１４１】
ｅ．変形例
さらに、本発明の実施にあたっては、上記実施形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【０１４２】
例えば、上記実施形態においては、自動演奏に関する曲データ中にベロシティ（鍵タッチ）ＶＥＬを含ませなかった。しかし、これに代えて、曲データ中にベロシティＶＥＬを含ませておいて、曲データ中のベロシティＶＥＬに応じて音源回路６６にて生成される楽音信号の音色、音量などを制御するようにしてもよい。この場合、鍵１１及び揺動レバー４０の押鍵動作の初期駆動において、ソレノイド５２へのデューティ比（すなわち通電量）をベロシティＶＥＬに比例させるようにすればよい。具体的には、第１状態ＳＴ１乃至第５状態ＳＴ５における図６のステップＳ１０８、図８のステップＳ１４９，Ｓ１５３，Ｓ１５６、図９ＡのステップＳ２０８，Ｓ２１２，Ｓ２１６，Ｓ２２０、図９ＣのステップＳ２４９，Ｓ２５７及び図１０のステップＳ３０８の処理によるデューティ比をベロシティＶＥＬに比例させるようにすればよい。この場合、デューティ比テーブルから読み出されたデューティ比にベロシティＶＥＬを乗算して、駆動回路６２に出力するようにすればよい。
【０１４３】
また、上記実施形態においては、曲データ中からキーオンデータが読み出されると、鍵１１及び揺動レバー４０が駆動されない場合すなわち読み出されたキーオンデータ中のキーコードＫＣにより表された鍵が既にマニュアル演奏され又は自動演奏テーブルが満杯の場合でも、図６のステップＳ１０２の処理により楽音信号は必ず発生されるようにした。しかし、これらの場合には、楽音信号を発生しないようにしてもよい。この場合、図６の自動演奏イベント処理ルーチンにおいて、ステップＳ１０２の処理を止めて、同ステップＳ１０２と同じ処理をステップＳ１０６及びステップＳ１１３の直前に実行するようにすればよい。
【０１４４】
また、上記実施形態においては、図１０のステップＳ３０３の処理及び図６のステップＳ１０５，Ｓ１０６の処理により、第１スイッチ４６がオフした鍵１１に関して、自動演奏のイベントデータであるキーオンデータを割当て可能とした。この場合、説明を省略したが、新たなキーオンデータを割り当てたチャンネルが未だ完全にクリアされていない場合、すなわち同チャンネルのキー駆動状態ＳＴが第１２状態ＳＴ１２を終了していない場合には、この第１２状態ＳＴ１２を終了していないソレノイド５２の通電を解除するようにするとよい。また、前記のような割り当てに代えて、キー駆動動作において、キー駆動状態ＳＴが第１２状態ＳＴ１２を終了したチャンネルに、キーイベントデータであるキーオンデータを割当て可能としてもよい。この場合、図９ＣのステップＳ２５４の処理により、キー駆動状態ＳＴが第１２状態ＳＴ１２を終了したチャンネルをクリアするようにしているので、図６のステップＳ１０６のキーオンデータの割当て際に、前記クリアされているチャンネルが割当てチャンネルとして決定されるようにすればよい。
【０１４５】
また、上記実施形態においては、図１０のスイッチイベントプログラムにおけるステップＳ３０１の判定処理により、自動演奏テーブル内に同一キーコードＫＣ（すなわち鍵盤１１の演奏によるキーコードＫＣと同一キーコードＫＣ）が記憶されていない場合、又は自動演奏テーブル内に同一キーコードＫＣが記憶されていても第１スイッチフラグＳＷ１が“１”でなければ、ステップＳ３１０のマニュアル演奏ルーチンが実行されるようにした。しかし、これに代えて、マニュアル演奏ルーチンの実行条件として、自動演奏テーブル内に同一キーコードＫＣを記憶したチャンネルが存在しないことを条件としてもよい。言い換えれば、ステップＳ３０１のように自動演奏テーブル内に同一キーコードＫＣが存在していて、キー駆動状態ＳＴが第１２状態ＳＴ１２を終了していない場合には、マニュアル演奏ルーチンを実行しないようにしてもよい。
【０１４６】
また、上記実施形態においては、キー駆動状態ＳＴが第９状態ＳＴ９であるとき、新たにイベントデータであるキーオンデータが曲データ中から読み出されると、図１０のステップＳ３０５〜Ｓ３０９の処理により、第１スイッチ４６がオフ状態であることを条件に、キー駆動状態ＳＴが第９状態ＳＴ９から第５状態ＳＴ５に切換えられるようにした。しかし、これに代えて、キー駆動状態ＳＴが第９状態ＳＴ９であるとき、新たにイベントデータであるキーオンデータが曲データ中から読み出された場合も、上記実施形態のキー駆動状態ＳＴが第１２状態ＳＴ１２であるときと同様に、第９状態ＳＴ９の終了を条件に、キー駆動状態ＳＴが第９状態ＳＴ９から第５状態ＳＴ５に切換えられるようにしてもよい。
【０１４７】
また、上記実施形態においては、ソレノイド５２のデューティ比の制御において、図１６に示すように時間経過に従って段階的に変更するようにした。しかし、これに代えて、デューティ比を時間経過に従って連続的に変更するようにしてもよい。この場合、時間経過に従ったデューティ比を離散的に記憶しておいて、経過時間ＴＭを用いてデューティ比を補間演算により計算するようにすればよい。
【０１４８】
また、上記実施形態の複数連打動作においては、所定の待ち時間ＷＴＭmax内に複数のキーオンデータが読み出された場合に、一方のキーオンデータによる鍵１１及び揺動レバー４０の駆動を遅延するようにした。しかし、これに代えて、所定の待ち時間ＷＴＭmax内に、３以上の所定数以上のキーオンデータが読み出された場合に、前記所定数以上のキーオンデータによる鍵１１及び揺動レバー４０の駆動を遅延するようにしてもよい。この場合、図６のステップＳ１０９の処理に代えて、前記所定数よりも「１」だけ小さな数のキーオンデータが待ち時間ＷＴＭmax内に読み出されたとき、ウェイト制御フラグＷＴＣＮＴの“１”への設定処理、及びウェイトタイマＷＴＭの待ち時間ＷＴＭmaxへの設定処理を実行するようにすればよい。
【０１４９】
また、上記実施形態においては、外部記憶装置８１、ＭＩＤＩ機器９１及びサーバコンピュータ９３から供給された曲データをＲＡＭ７４に一旦記憶させた後に順次読み出して、楽音の発生、鍵１１及び揺動レバー４０の動作を制御するようにした。しかし、これに代えて、シーケンサ、電子楽器などの曲データの再生可能なＭＩＤＩ機器９１から曲データに関するキーイベントデータが時間経過に従って直接供給されるようにし、このキーイベントデータを用いて、楽音の発生、鍵１１及び揺動レバー４０の動作を制御するようにしてもよい。また、ＭＩＤＩ機器９１として電子楽器を採用し、この電子楽器の演奏、例えば教師による演奏に基づくキーイベントデータをリアルタイムで入力して、この入力したキーイベントデータに基づいて楽音信号の発生及び鍵１１の駆動を制御するようにしてもよい。
【０１５０】
さらに、上記実施形態においては、鍵駆動装置５０によって揺動レバー４０のレバー基部４１を突き上げて駆動するようにしたが、電子楽器の鍵盤構造が異なる場合には、他の構成を採用することもできる。要は、鍵駆動装置５０への通電時に、鍵１１の押鍵時と同様な機能を果たすように、鍵１１及び揺動レバー４０を駆動するようにすればよい。また、この鍵駆動装置５０及びその制御方法に関しては、電子楽器の鍵盤装置ばかりでなく、自然楽器であるピアノの鍵及びハンマー（質量体に相当）を駆動する鍵駆動装置にも適用される。
【図面の簡単な説明】
【０１５１】
【図１】本発明の一実施形態に係る電子楽器の構成を示す全体ブロック図である。
【図２】図１の鍵盤装置の平面図である。
【図３Ａ】前記鍵盤装置の縦断側面図である。
【図３Ｂ】図３Ａの駆動ロッドの先端部分を拡大して示す拡大図である。
【図３Ｃ】鍵駆動装置によって一つの鍵を駆動した状態を示す前記鍵盤装置の縦断側面図である。
【図４】鍵駆動装置のソレノイド、プランジャ及び駆動ロッドの平面配置図である。
【図５】マイクロコンピュータ部にて実行される自動演奏プログラムを示すフローチャートである。
【図６】前記自動演奏プログラム内の自動演奏イベント処理ルーチンの詳細を示すフローチャートである。
【図７】前記自動演奏イベント処理ルーチン内のキーオフ処理ルーチンの詳細を示すフローチャートである。
【図８】前記自動演奏イベント処理ルーチン内の特殊キーオン処理ルーチンの詳細を示すフローチャートである。
【図９Ａ】マイクロコンピュータ部にて実行されるキー駆動プログラムの前部分を示すフローチャートである。
【図９Ｂ】前記キー駆動プログラムの中間部分を示すフローチャートである。
【図９Ｃ】前記キー駆動プログラムの後部分を示すフローチャートである。
【図１０】マイクロコンピュータ部にて実行されるスイッチイベントプログラムを示すフローチャートである。
【図１１】前記スイッチイベントプログラム内のマニュアル演奏ルーチンの詳細を示すフローチャートである。
【図１２】マイクロコンピュータ部にて実行されるタッチカウントプログラムを示すフローチャートである。
【図１３】マイクロコンピュータ部にて実行されるウェイト処理プログラムを示すフローチャートである。
【図１４】曲データの構成例を示す図である。
【図１５】デューティ比テーブルの構成例を示す図である。
【図１６】前記デューティ比テーブルのデータ内容を示す図である。
【図１７】自動演奏テーブルの構成例を示す図である。
【図１８】ウェイトテーブルの構成例を示す図である。
【図１９】マニュアル演奏テーブルの構成例を示す図である。
【図２０】同一鍵連打時の作動説明図である。
【図２１】複数鍵連打時の作動説明図である。
【符号の説明】
【０１５２】
１０…鍵盤装置、１１…鍵、４０…揺動レバー、４１…レバー基部、４２…質量体、４６…第１スイッチ、４７…第２スイッチ、４８…第３スイッチ、５０…鍵駆動装置、５２…ソレノイド、６４…パネル操作子、７０…コンピュータ部、６６…音源回路、８１…外部記憶装置
【図１】
2008233825.tif 000003
【図２】
2008233825.tif 000004
【図３Ａ】
2008233825.tif 000005
【図３Ｂ】
2008233825.tif 000006
【図３Ｃ】
2008233825.tif 000007
【図４】
2008233825.tif 000008
【図５】
2008233825.tif 000009
【図６】
2008233825.tif 000010
【図７】
2008233825.tif 000011
【図８】
2008233825.tif 000012
【図９Ａ】
2008233825.tif 000013
【図９Ｂ】
2008233825.tif 000014
【図９Ｃ】
2008233825.tif 000015
【図１０】
2008233825.tif 000016
【図１１】
2008233825.tif 000017
【図１２】
2008233825.tif 000018
【図１３】
2008233825.tif 000019
【図１４】
2008233825.tif 000020
【図１５】
2008233825.tif 000021
【図１６】
2008233825.tif 000022
【図１７】
2008233825.tif 000023
【図１８】
2008233825.tif 000024
【図１９】
2008233825.tif 000025
【図２０】
2008233825.tif 000026
【図２１】
2008233825.tif 000027