(57)【要約】【課題】可及的に簡略な鍵盤および駆動装置構成で自動演奏時の鍵盤動作を精度良く制御することが可能となる自動演奏電子ピアノの制御装置を提供する。【解決手段】押鍵駆動区間では、第３状態ＳＴ３から第４状態ＳＴ４への切換えと、第４状態ＳＴ４から第５状態ＳＴ５への切換えとが鍵スイッチＳＷの第１スイッチＳＷ１と第３スイッチＳＷ３のオンイベントの発生に応じてなされ、それ以外の状態への切換えは駆動オンからの経過時間のみに応じてなされる。一方、離鍵駆動区間では、第８状態ＳＴ８から第９状態ＳＴ９への切換えと、第９状態ＳＴ９から第１０状態ＳＴ１０への切換えとが鍵スイッチＳＷの第２スイッチＳＷ２と第１スイッチＳＷ１のオフイベントの発生に応じてなされ、それ以外の状態への切換えは駆動オフからの経過時間のみに応じてなされる。そして、第１状態ＳＴ１〜第１１状態ＳＴ１１のそれぞれにおいて、当該状態に対応したデューティ比が、自動押離鍵の対象となる鍵を表すキーコードと共に駆動制御部に出力される。【選択図】図１４
2010164631.tif 000002
【特許請求の範囲】
【請求項１】
複数の鍵をそれぞれ独立に駆動して、あるいは複数の鍵のそれぞれと連動する部材をそれぞれ独立に駆動して、鍵を押鍵前の初期位置から押鍵位置まで変位させる押鍵動作、および鍵を前記押鍵位置から前記初期位置まで変位させる離鍵動作を含む押離鍵動作を鍵毎に行わせる鍵駆動手段と、
時間経過に従って供給される鍵の押鍵および離鍵を表す鍵情報に応じて前記鍵駆動手段を電気的に駆動制御することにより、前記押離鍵動作を制御するものであって、前記押鍵動作においては、前記押鍵を表す鍵情報の供給に応答して所定の駆動力で鍵を前記初期位置から前記押鍵位置まで変位させ、鍵を前記押鍵位置で維持する必要がある場合には、前記押鍵動作時の最大駆動力より小さな駆動力で前記押鍵位置に鍵を維持させ、前記離鍵動作においては、前記離鍵を表す鍵情報の供給に応答して前記押鍵動作時あるいは前記押鍵維持時の鍵の駆動力を減少させるとともに最終的に鍵の駆動力を解除することにより鍵を前記押鍵位置から前記初期位置に復帰させる鍵駆動制御手段と、
前記押離鍵動作に応じた鍵の変位により、鍵の押下位置がダンパオフ／オン位置およびキーオン／オフ位置を含む複数の所定位置のいずれかに到達したことを、対応する検出信号を出力してそれぞれ独立に検出する検出手段と
を有し、
前記鍵駆動制御手段は、前記検出手段から出力された検出信号に応じて、前記押離鍵動作における鍵の駆動力の大きさを段階的に切り替えることを特徴とする自動演奏電子ピアノの制御装置。
【請求項２】
前記鍵情報の供給が開始してからの経過時間を計測する計測手段をさらに有し、
前記鍵駆動制御手段は、前記検出手段から所定の検出信号が出力されたタイミングと、前記計測手段によって計測された経過時間が所定時間に到達したタイミングの双方に基づいて、前記押離鍵動作における鍵の駆動力の大きさを段階的に切り替えることを特徴とする請求項１に記載の自動演奏電子ピアノの制御装置。
【請求項３】
前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から所定の検出信号が出力された時点までの経過時間、あるいは前記検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差を計測し、
前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間あるいは前記時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部の大きさを決定し、該決定された大きさの駆動力を含む段階的な駆動力を発生させる
ことを特徴とする請求項２に記載の自動演奏電子ピアノの制御装置。
【請求項４】
前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から所定の検出信号が出力された時点までの経過時間、あるいは前記検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差を計測し、
前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間あるいは前記時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部を発生する発生タイミングを決定し、該決定された発生タイミングの駆動力を含む段階的な駆動力を発生させる
ことを特徴とする請求項２に記載の自動演奏電子ピアノの制御装置。
【請求項５】
前記検出手段は、前記複数の所定位置のうちの１つとしてキーオン位置を検出したときに、キーオン信号を出力し、
前記鍵駆動制御手段は、前記検出手段からキーオン信号が出力されてから所定時間、当該キーオン信号が出力される前に発生していた駆動力より小さな駆動力を発生させ、前記所定時間が経過すると、当該キーオン信号が出力される前に発生していた駆動力より大きな駆動力を発生させる
ことを特徴とする請求項２に記載の自動演奏電子ピアノの制御装置。
【請求項６】
前記検出手段は、前記複数の所定位置のうちの１つとしてダンパオフ位置を検出したときに、ダンパオフ信号を出力し、
前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から前記ダンパオフ信号が出力された時点までの経過時間を計測し、
前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間が所定時間以上であれば、前記ダンパオフ信号が出力されてから別途設定された所定時間が経過するまでの間に、前記ダンパオフ信号が出力された直後の駆動力より強い駆動力を発生させる
ことを特徴とする請求項２に記載の自動演奏電子ピアノの制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子ピアノの各鍵を自動演奏に合わせて駆動制御する自動演奏電子ピアノの制御装置に関する。
【背景技術】
【０００２】
ピアノの各鍵を自動的に駆動制御する制御装置は、従来から知られている。
【０００３】
このような制御装置をアコースティックピアノに適用して、自動演奏を行わせるようにした、いわゆる自動ピアノと呼ばれるものがある。自動ピアノは、各鍵をソレノイド等のアクチュエータで駆動可能に構成し、予め記録された演奏情報（ピアノロールまたはＭＩＤＩ（musical instrument digital interface）データ）に基づいて、対応するアクチュエータを制御することで、対応する鍵を駆動する。その結果、当該鍵に連動するハンマが駆動されて打弦され、自動演奏が実現される。このように自動ピアノでは、楽音は、ハンマが実際に弦を叩くことによって発生するので、ハンマの駆動制御、つまりアクチュエータの駆動制御を精度良く行う必要がある。このため、アクチュエータ（ソレノイド）の駆動をフィードバック制御するようにして、個々の楽器の個体差を吸収するようにしている。さらに同じ楽器であっても、各ハンマは、それぞれ担当する音高によって、その重量が異なるので、アクチュエータの駆動制御の精度をより一層向上させようとすると、各ハンマの重量を考慮したフィードバック制御を行う必要があり、そのようなフィードバック制御を行うようにした自動ピアノの制御装置も提案されている（たとえば、特許文献１参照）。
【０００４】
一方、電子ピアノは、電子音源を備え、予め記憶された演奏データ（ＭＩＤＩデータ）を再生して生成した楽音パラメータを電子音源に供給し、電子音源から楽音を発音させることで、自動演奏を行うようにしている。つまり電子ピアノは、自動ピアノに対して、鍵を駆動しなくても自動演奏できる点が異なっている。しかし昨今、電子ピアノでも、楽器らしさをより表現したいという観点から、電子音源から楽音を発音させると同時に、鍵を自動的に駆動させるようにしたものが商品化されている。この電子ピアノの鍵駆動の制御に上記自動ピアノのフィードバック制御を適用することは、理論的にはもちろん可能である。しかし上記フィードバック制御には、各鍵の操作位置の目標値および操作速度の目標値の少なくとも一方が必要であり、この目標値を検出するためにキーセンサを用いる場合には、各鍵の動作ストロークの全工程について連続的な位置情報を出力可能なものを鍵毎に設けなければならず、製造コストが増大する一方、キーセンサを用いずに、何らかのデータを演算処理して目標値を取得する場合には、演算処理の増加によりＣＰＵへの負荷が増大するので、鍵駆動が直接楽音の発音に結び付かない電子ピアノの鍵駆動の制御に上記フィードバック制御を適用することは有効ではない。
【０００５】
この製造コストの増大およびＣＰＵへの負荷の増大を解消するために、鍵駆動の制御にフィードフォワード制御を適用した電子ピアノの制御装置も提案されている（たとえば、特許文献２参照）。この電子ピアノの制御装置では、鍵の全ストローク（離鍵から押鍵を経由して再度離鍵に至るストローク）を複数の動作区間に分割し、各動作区間毎に、鍵駆動の制御値を変更して、具体的には、ソレノイドに電力を供給する電力供給部に供給するＰＷＭ（pulse width modulation）波形信号のデューティ比を段階的に切換えて、鍵の押鍵および離鍵を表す鍵情報に応じた鍵の押鍵動作および離鍵動作において、各種部材間の衝突による雑音の発生および衝突部分の損傷を抑制するようにしている。
【０００６】
また、上記従来の電子ピアノの制御装置と同様に、ＰＷＭ波形信号のデューティ比を切換えることでソレノイドに供給する電力を制御して、鍵の押鍵動作および離鍵動作における各種部材間の衝突による雑音の発生を抑制するものであるが、上記従来の電子ピアノの制御装置と異なり、ＰＷＭ波形信号のデューティ比の切換えを、鍵の回動に伴ってオン／オフする接点時間差タイプの２メイク式タッチレスポンススイッチの各接点のオン／オフに応じて行うようにした電子ピアノの制御装置もある（たとえば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−８４６８７号公報
【特許文献２】特開２００８−２３８８２８号公報
【特許文献３】特開平１０−１７１４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記従来の電子ピアノの制御装置のうちの前者では、各鍵や各ソレノイドのばらつき、および温度上昇による各ソレノイドの推力低下などについては考慮せずにフィードフォワード制御を行っているので、これらの影響を受け易い。
【０００９】
また、上記従来の電子ピアノの制御装置のうちの後者では、各鍵や各ソレノイドのばらつきの影響は軽減できるものの、接点が２つに限定されており、それ以上細かい制御を行うことができない。
【００１０】
本発明は、この点に着目してなされたものであり、可及的に簡略な鍵盤および駆動装置構成で自動演奏時の鍵盤動作を精度良く制御することが可能となる自動演奏電子ピアノの制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１に記載の自動演奏電子ピアノの制御装置は、複数の鍵をそれぞれ独立に駆動して、あるいは複数の鍵のそれぞれと連動する部材をそれぞれ独立に駆動して、鍵を押鍵前の初期位置から押鍵位置まで変位させる押鍵動作、および鍵を前記押鍵位置から前記初期位置まで変位させる離鍵動作を含む押離鍵動作を鍵毎に行わせる鍵駆動手段と、時間経過に従って供給される鍵の押鍵および離鍵を表す鍵情報に応じて前記鍵駆動手段を電気的に駆動制御することにより、前記押離鍵動作を制御するものであって、前記押鍵動作においては、前記押鍵を表す鍵情報の供給に応答して所定の駆動力で鍵を前記初期位置から前記押鍵位置まで変位させ、鍵を前記押鍵位置で維持する必要がある場合には、前記押鍵動作時の最大駆動力より小さな駆動力で前記押鍵位置に鍵を維持させ、前記離鍵動作においては、前記離鍵を表す鍵情報の供給に応答して前記押鍵動作時あるいは前記押鍵維持時の鍵の駆動力を減少させるとともに最終的に鍵の駆動力を解除することにより鍵を前記押鍵位置から前記初期位置に復帰させる鍵駆動制御手段と、前記押離鍵動作に応じた鍵の変位により、鍵の押下位置がダンパオフ／オン位置およびキーオン／オフ位置を含む複数の所定位置のいずれかに到達したことを、対応する検出信号を出力してそれぞれ独立に検出する検出手段とを有し、前記鍵駆動制御手段は、前記検出手段から出力された検出信号に応じて、前記押離鍵動作における鍵の駆動力の大きさを段階的に切り替えることを特徴とする。
【００１２】
請求項２に記載の自動演奏電子ピアノの制御装置は、請求項１の自動演奏電子ピアノの制御装置において、前記鍵情報の供給が開始してからの経過時間を計測する計測手段をさらに有し、前記鍵駆動制御手段は、前記検出手段から所定の検出信号が出力されたタイミングと、前記計測手段によって計測された経過時間が所定時間に到達したタイミングの双方に基づいて、前記押離鍵動作における鍵の駆動力の大きさを段階的に切り替えることを特徴とする。
【００１３】
請求項３に記載の自動演奏電子ピアノの制御装置は、請求項２の自動演奏電子ピアノの制御装置において、前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から所定の検出信号が出力された時点までの経過時間、あるいは前記検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差を計測し、前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間あるいは前記時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部の大きさを決定し、該決定された大きさの駆動力を含む段階的な駆動力を発生させることを特徴とする。
【００１４】
請求項４に記載の自動演奏電子ピアノの制御装置は、請求項２の自動演奏電子ピアノの制御装置において、前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から所定の検出信号が出力された時点までの経過時間、あるいは前記検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差を計測し、前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間あるいは前記時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部を発生する発生タイミングを決定し、該決定された発生タイミングの駆動力を含む段階的な駆動力を発生させることを特徴とする。
【００１５】
請求項５に記載の自動演奏電子ピアノの制御装置は、請求項２の自動演奏電子ピアノの制御装置において、前記検出手段は、前記複数の所定位置のうちの１つとしてキーオン位置を検出したときに、キーオン信号を出力し、前記鍵駆動制御手段は、前記検出手段からキーオン信号が出力されてから所定時間、当該キーオン信号が出力される前に発生していた駆動力より小さな駆動力を発生させ、前記所定時間が経過すると、当該キーオン信号が出力される前に発生していた駆動力より大きな駆動力を発生させることを特徴とする。
【００１６】
請求項６に記載の自動演奏電子ピアノの制御装置は、請求項２の自動演奏電子ピアノの制御装置において、前記検出手段は、前記複数の所定位置のうちの１つとしてダンパオフ位置を検出したときに、ダンパオフ信号を出力し、前記計測手段は、前記鍵情報の供給が開始してから前記検出手段から前記ダンパオフ信号が出力された時点までの経過時間を計測し、前記鍵駆動制御手段は、前記計測手段によって計測された前記経過時間が所定時間以上であれば、前記ダンパオフ信号が出力されてから別途設定された所定時間が経過するまでの間に、前記ダンパオフ信号が出力された直後の駆動力より強い駆動力を発生させることを特徴とする。
【発明の効果】
【００１７】
請求項１に記載の発明によれば、押離鍵動作に応じた鍵の変位により、鍵の押下位置がダンパオフ／オン位置およびキーオン／オフ位置を含む複数の所定位置のいずれかに到達したことを、対応する検出信号を出力してそれぞれ独立に検出する検出手段から出力された検出信号に応じて、前記押離鍵動作における鍵の駆動力の大きさが段階的に切り替えられるので、各鍵の押鍵から離鍵に至る全工程をセンシングすることなく、その一部の押下位置を検出することで、各鍵の動きを簡易的にフィードバックして押離鍵動作を制御することができる。したがって、可及的に簡略な鍵盤および駆動装置構成で自動演奏時の鍵盤動作を精度良く制御することが可能となる。
【００１８】
請求項２に記載の発明によれば、検出手段から所定の検出信号が出力されたタイミングと、計測手段によって計測された経過時間が所定時間に到達したタイミングの双方に基づいて、前記押離鍵動作における鍵の駆動力の大きさが段階的に切り替えられるので、鍵の押下位置に応じた押離鍵動作をさらに細かく制御することができる。
【００１９】
請求項３に記載の発明によれば、鍵情報の供給が開始してから検出手段から所定の検出信号が出力された時点までの経過時間、あるいは検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差が計測され、該計測された経過時間あるいは時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部の大きさが決定され、該決定された大きさの駆動力を含む段階的な駆動力が発生されるので、つまり、鍵の押下位置だけでなく、その押離鍵の速さにも基づいて押離鍵動作の制御を行うようにしたので、さらに精度のよい押離鍵動作の制御を行うことが可能となる。
【００２０】
請求項４に記載の発明によれば、鍵情報の供給が開始してから検出手段から所定の検出信号が出力された時点までの経過時間、あるいは検出手段から複数の検出信号が出力されたときの各検出信号の出力タイミング間の時間差が計測され、該計測された経過時間あるいは時間差に基づいて、当該検出信号が出力された時点以降の鍵の段階的な駆動力の一部を発生する発生タイミングが決定され、該決定された発生タイミングの駆動力を含む段階的な駆動力が発生されるので、つまり、鍵の押下位置だけでなく、その押離鍵の速さにも基づいて押離鍵動作の制御を行うようにしたので、さらに精度のよい押離鍵動作の制御を行うことが可能となる。
【００２１】
請求項５に記載の発明によれば、検出手段からキーオン信号が出力されてから所定時間、当該キーオン信号が出力される前に発生していた駆動力より小さな駆動力が発生され、前記所定時間が経過すると、当該キーオン信号が出力される前に発生していた駆動力より大きな駆動力が発生されるので、鍵あるいは鍵と連動する部材がストッパと衝突する際の機械的なノイズ（衝突音）を低減することができる。
【００２２】
請求項６に記載の発明によれば、鍵情報の供給が開始してから検出手段からダンパオフ信号が出力された時点までの経過時間が計測され、該計測された経過時間が所定時間以上であれば、前記ダンパオフ信号が出力されてから別途設定された所定時間が経過するまでの間に、前記ダンパオフ信号が出力された直後の駆動力より強い駆動力が発生されるので、発熱などにより低下した鍵駆動手段の駆動力を補って（アシストして）、その後の押鍵動作を的確に行うことができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施の形態に係る電子ピアノの概略構成を示すブロック図である。
【図２】図１中の鍵盤装置の各鍵の駆動を制御する制御構成を示すブロック図である。
【図３】図１中の鍵盤装置の非押鍵状態の断面図である。
【図４】図１中の鍵盤装置の押鍵状態の断面図である。
【図５】図３中の駆動ユニットの平面図である。
【図６】鍵駆動用テーブルの構成の一例を示す図である。
【図７】図１中のＣＰＵによって実行される自動演奏処理プログラムの手順を示すフローチャートである。
【図８】図７中の鍵駆動イベント処理サブルーチンの詳細な手順を示すフローチャートである。
【図９】図８中の鍵駆動オフ処理サブルーチンの詳細な手順を示すフローチャートである。
【図１０】図１中のＣＰＵによって実行される鍵駆動制御処理プログラムの詳細な手順を示すフローチャートである。
【図１１】図１０の鍵駆動制御処理プログラムの続きの手順を示すフローチャートである。
【図１２】図１１の鍵駆動制御処理プログラムの続きの手順を示すフローチャートである。
【図１３】図１２の鍵駆動制御処理プログラムの続きの手順を示すフローチャートである。
【図１４】デューティ比テーブルの一例（（ａ））と、該デューティ比テーブルにおいて、駆動アシスト制御時に切換えられる第４Ａ状態ＳＴ４Ａに対応したデューティ比の一例（（ｂ））を示す図である。
【図１５】本発明の第１の変形例の鍵駆動制御処理プログラムの一部手順を示すフローチャートである。
【図１６】デューティ比関数ＤＲ(ｔ)の一例（（ａ））と、該デューティ比関数ＤＲ(ｔ)を用いて出力されたデューティ比の推移の一例（（ｂ））を示す図である。
【図１７】本発明の第２の変形例の鍵駆動制御処理プログラムの一部手順を示すフローチャートである。
【図１８】第５時間値関数Ｔ５(ｔ)の一例（（ａ））と、該第５時間値関数Ｔ５(ｔ) を用いて出力されたデューティ比の推移の一例（（ｂ））を示す図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００２５】
図１は、本発明の一実施の形態に係る制御装置を適用した自動演奏電子ピアノ（以下、「電子ピアノ」と略して言う）の概略構成を示すブロック図である。
【００２６】
同図に示すように、本実施の形態の電子ピアノは、各種情報を入力するための複数のスイッチやホイール、ジョイスティックを含む設定操作子１と、設定操作子１の操作状態を検出する検出回路２と、音高情報を含む演奏情報を入力するための鍵盤装置３と、装置全体の制御を司るＣＰＵ４と、該ＣＰＵ４が実行する制御プログラムや、各種テーブルデータ等を記憶するＲＯＭ５と、曲データ、各種入力情報および演算結果等を一時的に記憶するＲＡＭ６と、タイマ割込み処理における割込み時間や各種時間を計時するタイマ７と、各種情報等を表示する、たとえば液晶ディスプレイ（ＬＣＤ）および発光ダイオード（ＬＥＤ）等を備えた表示器８と、前記制御プログラムを含む各種アプリケーションプログラムや各種曲データ、各種データ等を記憶する外部記憶装置９と、外部ＭＩＤＩ機器等の外部機器１００を接続し、この外部機器１００とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）１０と、鍵盤装置３から入力された演奏情報や、前記外部記憶装置９に記憶されたいずれかの曲データを自動再生することによって得られた演奏情報等をオーディオ信号に変換し、これに適宜効果を付与する音源１１と、該音源１１からのオーディオ信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１２とにより構成されている。
【００２７】
上記構成要素２〜１１は、バス１３を介して相互に接続され、ＣＰＵ４にはタイマ７が接続され、通信Ｉ／Ｆ１０には外部機器１００が接続され、音源１１にはサウンドシステム１２が接続されている。ここで、通信Ｉ／Ｆ１０は、有線方式のものに限らず、無線方式のものであってもよい。また、両方式のものを備えていてもよい。
【００２８】
外部記憶装置９は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は、駆動装置から着脱可能であってもよいし、外部記憶装置９自体が、本実施の形態の電子ピアノから着脱可能であってもよい。あるいは、記憶媒体も外部記憶装置９も着脱不可能であってもよい。そして、外部記憶装置９には、前述のように、ＣＰＵ４が実行する制御プログラムも記憶でき、ＲＯＭ５に制御プログラムが記憶されていない場合には、この外部記憶装置９に制御プログラムを記憶させておき、それをＲＡＭ６に読み込むことにより、ＲＯＭ５に制御プログラムを記憶している場合と同様の動作をＣＰＵ４にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２９】
通信Ｉ／Ｆ１０には、図示例では、外部機器１００が接続されているが、これに限られず、たとえばＬＡＮ（local area network）やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、外部記憶装置９に上記各プログラムや各種パラメータが記憶されていなければ、通信Ｉ／Ｆ１０は、サーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子ピアノは、通信Ｉ／Ｆ１０および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して電子ピアノへと配信し、電子ピアノが通信Ｉ／Ｆ１０を介して、これらプログラムやパラメータを受信して外部記憶装置９に蓄積することにより、ダウンロードが完了する。
【００３０】
図２は、鍵盤装置３の各鍵の駆動を制御する制御構成を示すブロック図である。ただし、図２には、説明の都合上、ＣＰＵ４も記載されている。
【００３１】
同図に示すように、鍵盤装置３は、複数の鍵（たとえば、８８鍵）を備えた鍵盤３ａと、鍵毎に設けられたソレノイド３ｂ１（後述する図３および図４では、ソレノイドからなるアクチュエータ３３０）に電力を供給する電力供給部３ｂと、各ソレノイド３ｂ１の駆動を制御する駆動制御部３ｃと、各鍵にそれぞれ設けられた鍵スイッチ（図３および図４では、鍵スイッチＳＷ）のオン／オフ状態を検出するスキャン部３ｄと、駆動制御部３ｃ、スキャン部３ｄおよびＣＰＵ４間を接続するバス３ｅとによって、主として構成されている。
【００３２】
鍵盤３ａは、「低域」、「中低域」、「中高域」および「高域」の４つの鍵域（各鍵域にはそれぞれ、２２鍵が属している）に分割され、各鍵域に属する２２個のソレノイド３ｂ１のそれぞれへの電力供給は、鍵域毎に１つの電力供給部３ｂによって制御されている。さらに１つの電力供給部３ｂは、１つの駆動制御部３ｃによって制御されている。なお、鍵域の分割態様や分割数は、これに限らないことは言うまでもない。
【００３３】
駆動制御部３ｃは、駆動制御処理部４ａとして機能するＣＰＵ４によって制御される。具体的には、ある１つの鍵を押鍵方向に駆動させたい場合、駆動制御処理部４ａは、その鍵（のソレノイド３ｂ１）の駆動制御を担当する１つの駆動制御部３ｃ（４つの駆動制御部３ｃのうちの１つ）をサーチし、サーチした駆動制御部３ｃを指定し、その鍵のキーナンバ（各鍵に付与された番号）および駆動オンをバス３ｅ上に送信する（以下、「駆動オン要求」という）と、その駆動オン要求は、指定された駆動制御部３ｃによって受信される。駆動オン要求を受信した駆動制御部３ｃは、その駆動オン要求内に記載された鍵のソレノイド３ｂ１に電力が供給されるように、電力供給部３ｂに対して、所定のタイミングで所定のＰＷＭ波形信号を供給する。これに応じて、ソレノイド３ｂ１には、電力供給部３ｂから所定量の電力が供給され、ソレノイド３ｂ１は、対応する鍵を押下方向に段階的に引き下げる。これとは逆に、ある１つの鍵を離鍵方向に駆動させたい場合、駆動制御処理部４ａは、その鍵（のソレノイド３ｂ１）の駆動制御を担当する１つの駆動制御部３ｃをサーチし、サーチした駆動制御部３ｃを指定し、その鍵のキーナンバおよび駆動オフをバス３ｅ上に送信する（以下、「駆動オフ要求」という）と、その駆動オフ要求は、指定された駆動制御部３ｃによって受信される。駆動オフ要求を受信した駆動制御部３ｃは、その駆動オフ要求内に記載された鍵のソレノイド３ｂ１に電力が供給されなくなるように、電力供給部３ｂに対して、ＰＷＭ波形信号の供給を段階的に停止する。これに応じて、ソレノイド３ｂ１には、電力供給部３ｂから電力が段階的に供給されなくなるので、ソレノイド３ｂ１に対する引き下げ動作も停止して、鍵は離鍵方向に引き上げられる。
【００３４】
なお、電力供給部３ｂは、ソレノイド３ｂ１の故障（異常発熱など）をハードウェア的に検出し、それを駆動制御部３ｃに通知するエラー通知機能も備えている。駆動制御部３ｃは、電力供給部３ｂからエラー通知が送信されてくると、そのエラー通知を駆動制御処理部４ａに転送する。
【００３５】
各鍵には、前述のように、１つの鍵スイッチが設けられている。本実施の形態では、鍵スイッチとして、接点時間差タイプの３メイク式タッチレスポンススイッチを採用している。スキャン部３ｄは、この各鍵スイッチにそれぞれ設けられた３つの接点（図３および図４では、第１〜第３スイッチＳＷ１〜ＳＷ３）を所定の時間毎にスキャンし、鍵毎に各接点のオン／オフ状態を検出する。検出した鍵毎の各接点のオン／オフ状態は、バス３ｅを介して、駆動制御処理部４ａに送信される。なお、鍵スイッチのメイク数は、上記３つに限らず、４つ以上でもよい。ただし、２つ以下の場合には、鍵の駆動制御に利用する情報が不足するので、現実的でない。一方、鍵毎にその非押鍵状態から最深押鍵状態までの全工程内の押下位置を略連続的に検出するために、たとえば光学的なセンサを用いた場合には、背景技術に記載したように、製造コストの上昇により本発明の目的や趣旨が薄れてしまうので、現実的でない。
【００３６】
図３および図４は、鍵盤装置３の断面図であり、図３が鍵の非押鍵状態を示し、図４が鍵の押鍵状態を示している。
【００３７】
図３において、本実施の形態の電子ピアノの楽器本体は、全体は図示しないが、棚板３１５およびそれより上方の部分が該当する。棚板３１５上には、鍵盤シャーシ（以下、単に「シャーシ」と称する）３１４が配設固定される。棚板３１５に対するシャーシ３１４の固定は不図示の締結具等で行われる。以降、本実施の形態の電子ピアノの奏者側（図３の左方）を「前方」と呼ぶことにする。
【００３８】
シャーシ３１４の前部から棚板３１５の前部にかけて、口棒部３１７が、全鍵幅に亘って設けられる。口棒部３１７によって、金具３１８および弾性材３１９を介して、シャーシ３１４の前部が棚板３１５に押しつけられている。
【００３９】
シャーシ３１４には、複数の鍵３１０および各鍵３１０に対応するハンマ体ＨＭが個々に支持される。鍵３１０は、押下操作され、後部の鍵回動支点ＰＫを中心として各々上下方向に回動（前端部が揺動）自在になっている。鍵３１０として白鍵３１０Ｗおよび黒鍵３１０Ｂがそれぞれ複数存在する。各鍵３１０の前部下部には、ハンマ体駆動部３１１が設けられる。
【００４０】
各鍵３１０の下方には、各鍵３１０に対応してハンマ体ＨＭが配置される。シャーシ３１４には、各ハンマ体ＨＭに対応するハンマ体回動軸ＰＨが設けられ、各ハンマ体ＨＭは、対応するハンマ体回動軸ＰＨを中心に上下方向に回動（後端部が揺動）自在になっている。また、ハンマ体ＨＭの係合部３２１が、鍵３１０のハンマ体駆動部３１１と常に係合状態にあり、ハンマ体ＨＭが鍵３１０に連動して回動するようになっている。奏者による押鍵操作に応じて、鍵３１０のハンマ体駆動部３１１により係合部３２１が駆動され、ハンマ体ＨＭがハンマ体回動軸ＰＨを中心に同図反時計方向（押鍵方向に対応する方向）に回動することで、適切な慣性が付与され、良好な押鍵感触が得られる。各鍵３１０の構成、および各ハンマ体ＨＭの構成は、それぞれ同様である。なお、押鍵感触のキースケーリングを実現するために、白鍵用と黒鍵用とで、あるいは音高に応じてハンマ体ＨＭの長さや重さ等を異ならせてもよい。
【００４１】
ハンマ体ＨＭにおいて、ハンマ体回動軸ＰＨよりも後方の基部３２２から質量部材３２３が延設されている。ハンマ体ＨＭは、質量部材３２３の自重によって、同図時計方向（離鍵方向に対応する方向）に常に付勢されており、図３に示すハンマ体ＨＭの位置は、初期状態である非押鍵状態における位置である。
【００４２】
鍵３１０の押鍵状態からの復帰力は、質量部材３２３の重さによるハンマ体ＨＭの復帰力によるものである。復帰時にも、ハンマ体ＨＭは、対応する鍵３１０と連動して回動する。
【００４３】
シャーシ３１４の後部上部および後部下部にはそれぞれ、フェルト等の上側ストッパ３１２および下側ストッパ３１３が設けられている。上側ストッパ３１２は押鍵時にハンマ体ＨＭの質量部材３２３と当接して鍵３１０の押鍵終了位置を規制する（図４参照）。下側ストッパ３１３は非押鍵時に質量部材３２３と当接して鍵３１０の非押鍵状態への復帰位置を規制する（図３参照）。
【００４４】
また、本実施の形態の電子ピアノには、シャーシ３１４の前部に配設されたスイッチ基板３２６上に３メイク式の鍵スイッチＳＷが設けられる。この鍵スイッチＳＷには、前述のように、第１〜第３スイッチＳＷ１〜ＳＷ３が設けられている。押鍵時、すなわちスイッチ押圧部３２４の下方への変位時に、第１スイッチＳＷ１、第２スイッチＳＷ２および第３スイッチＳＷ３の順にオフからオンに切換えられる。そして、押鍵が維持されていれば、第１〜第３スイッチＳＷ１〜ＳＷ３はオン状態に保たれる。一方、離鍵時、すなわちスイッチ押圧部３２４の上方への変位時には、第３スイッチＳＷ３、第２スイッチＳＷ２および第１スイッチＳＷ１の順にオンからオフに切換えられる。第１スイッチＳＷ１のオン／オフが、アコースティックピアノで言うところのダンパのオフ（リリース）／オン（ホールド）に対応し、第２スイッチＳＷ２のオフがキーオフ（消音指示）に対応し、第３スイッチＳＷ３のオンがキーオン（発音指示）に対応する。鍵スイッチＳＷは、ハンマ体ＨＭのスイッチ押圧部３２４によって押圧駆動されて、キーベロシティ（第２スイッチＳＷ２のオンから第３スイッチＳＷ３のオンまでの時間差に基づいて検出される）を含む鍵動作を検出する。奏者による押鍵動作、すなわちリアルタイム演奏の場合は、スイッチ押圧部３２４の検出結果に基づいて、楽音制御がなされる。
【００４５】
本実施の形態の電子ピアノにはまた、自動演奏用の鍵駆動手段として、駆動ユニットＵＮＴが配設される。図５は、駆動ユニットＵＮＴの平面図である。駆動ユニットＵＮＴは、透磁性のある上側ヨーク３３５と下側ヨーク３４０とを備える。上側ヨーク３３５および下側ヨーク３４０は、全鍵幅の長さを有する。駆動ユニットＵＮＴには、各ハンマ体ＨＭに対応する全鍵分のアクチュエータ（ソレノイド）３３０が含まれる。アクチュエータ３３０は、鍵並び方向に沿った前列と後列の２列に並列的に、それぞれ一直線上に配置、すなわち、千鳥配置される。すべてのアクチュエータ３３０は、配置位置を除きいずれも同様に構成される。
【００４６】
図３に示すように、上側ヨーク３３５は、下方に開口した断面コ字状に一体に形成される。下側ヨーク３４０は、上側ヨーク３３５を受け入れる断面コ字状の凹部３４３と、凹部３４３から後方に延設された後方水平部３４１と、凹部３４３から前方に延設された前方水平部３４２とを有して一体に形成される。後方水平部３４１は、後方に十分に長く、質量部材３２３の先端よりも後方まで延びている。下側ヨーク３４０が、断面コ字状の凹部３４３を有して逆ハット型であることで、下側ヨーク３４０の剛性が高くなっている。
【００４７】
棚板３１５には、少なくとも全鍵幅に亘る長さの装着穴３１５ｂ（図３参照）が形成されている。上側ヨーク３３５は、下側ヨーク３４０の凹部３４３内に収容され、これにより上側ヨーク３３５および下側ヨーク３４０が重なっている部分を含むアクチュエータ３３０が、装着穴３１５ｂ内に位置している。この位置は、ハンマ体回動軸ＰＨに近接している。プランジャ３３３のストロークが小さくて済むようにする観点から、アクチュエータ３３０の位置は、鍵回動支点ＰＫとハンマ体回動軸ＰＨとの間であってハンマ体回動軸ＰＨに極力近接した位置に配設するのが好ましい。
【００４８】
図３に示すように、各アクチュエータ３３０において、上側ヨーク３３５の内側であってボビン３３１の周囲にソレノイドコイル３３２が巻回される。また、ボビン３３１の内部をプランジャ３３３が上下方向に往復動作可能に配設される。プランジャ３３３の上部には、弾性材でなる駆動部３３４が設けられる。各アクチュエータ３３０は、上側ヨーク３３５および下側ヨーク３４０が重なっている部分を主な磁路として利用して成り立っている。
【００４９】
上側ヨーク３３５と下側ヨーク３４０とは、複数のネジ３３７（図３、図５参照）で固定される。ネジ３３７による固定は、ボビン３３１およびソレノイドコイル３３２を上側ヨーク３３５および下側ヨーク３４０間に固定することにも役立っている。アクチュエータ３３０が千鳥配置であることで、個々のアクチュエータ３３０のソレノイドコイル３３２の巻回の径（ボビン３３１の径）を大きく、巻き数を多く設定でき、駆動力の効率的な向上に有利となっている。
【００５０】
図３に示すように、駆動ユニットＵＮＴは、下側ヨーク３４０の取り付け用穴３４１ａｂ、３４２ａｂ（図５参照）を通じて、複数のネジ３２９にて、シャーシ３１４の後部下部における取り付け部３１４ａ、前部下部における取り付け部３１４ｂに締結固定される。
【００５１】
駆動ユニットＵＮＴのすぐ後方であって、棚板３１５の下部には、駆動ユニットＵＮＴの動作を制御するための基板３４４が、複数のネジ３４６によって固定されている。また、駆動ユニットＵＮＴおよび基板３４４を下方から覆うユニットカバー３４５が設けられる。ユニットカバー３４５は、板金または樹脂等で構成され、その前後の取り付け部３４５ｂが、複数のネジ３４７によって棚板３１５の下面に固定される。
【００５２】
非押鍵状態では、アクチュエータ３３０の駆動部３３４が、対応するハンマ体ＨＭに近接している。なお、非押鍵状態においては、駆動部３３４がハンマ体ＨＭに当接するようにしてもよい。ソレノイドコイル３３２に通電されると、プランジャ３３３が上方に移動し、駆動部３３４とハンマ体ＨＭとの当接を通じてハンマ体ＨＭを押し上げ駆動する。すると、ハンマ体ＨＭに連動して、鍵３１０が押鍵方向（鍵３１０の先端が下方に変位する方向）に回動する（図４参照）。
【００５３】
通電が解除されると、ハンマ体ＨＭおよび鍵３１０の復帰に伴い、プランジャ３３３がハンマ体ＨＭに押されることに加えて、自重によって元の初期位置（図３で示す位置）に復帰する。
【００５４】
なお本実施の形態では、鍵盤装置として、ハンマ体を介して鍵を駆動するようにしたものを採用したが、これに限らず、ハンマ体を介さずに直接、鍵を駆動するようにしたものを採用してもよい。この場合、ハンマ体を備えた構造のものと、ハンマ体を備えない構造のものがあるが、いずれの構造のものを採用してもよい。
【００５５】
また本実施の形態では、下側ヨーク３４０をシャーシ３１４に固定し、下側ヨーク３４０の固定されたシャーシ３１４を前記締結具等で棚板３１５に固定するようにしたが、これに限らず、下側ヨーク３４０もシャーシ３１４も、たとえばネジによって直接、棚板３１５に締結固定するようにしてもよい。
【００５６】
以上のように構成された電子ピアノ、特に前記ＣＰＵ４が実行する自動鍵駆動制御処理を、図６〜図１３を参照して詳細に説明するが、以下、基本動作と同一鍵連打動作に分けて説明する。同一鍵連打動作とは、自動鍵駆動制御により、同一の鍵が短時間内にオン・オフ動作を繰り返す動作である。基本動作とは、各鍵が非押鍵状態から最深押鍵状態を経由して非押鍵状態に戻るまでの全工程間で、同一鍵連打動作などの特殊な動作がなされない基本的な動作である。なお、特殊な動作としては、同一鍵連打動作以外にも、自動鍵駆動制御により、複数の鍵が短時間内にオン動作してオン状態を同時に維持する「複数鍵連打動作」や、自動鍵駆動制御中にマニュアル演奏がされた場合の動作である「マニュアル演奏との競合動作」などがあるが、これらの動作については、本実施の形態では考慮されていない。この理由は、本発明の特徴、すなわち鍵駆動のフィードフォワード制御を基本としつつ、鍵スイッチＳＷの第１〜第３スイッチＳＷ１〜ＳＷ３によってそれぞれ発生されるオン／オフイベントを用いて、当該フィードフォワード制御内の一部でフィードバック制御を行うという特徴を説明するには、上記「基本動作」と「同一鍵連打動作」を例に挙げて説明するだけで十分であるからである。このように本実施の形態において、上記「複数鍵連打動作」および「マニュアル演奏との競合動作」を考慮しないのは、専ら説明の都合上である。そして、本実施の形態は、前記特許文献２の実施の形態に基づいて構成され、特許文献２の実施の形態には「複数鍵連打動作」および「マニュアル演奏との競合動作」についての制御処理が詳述されているので、この制御処理の記載に基づいて本発明を「複数鍵連打動作」および「マニュアル演奏との競合動作」に簡単に適用することができる。
【００５７】
（１）基本動作
ユーザが、たとえば前記設定操作子１に含まれるモードスイッチ（図示せず）を操作して自動演奏モードを選択すると、図示しないプログラムの実行により、表示器８に曲の選択指示が表示される。そしてユーザは、この指示に従って外部記憶装置９に記憶されている所望の曲を設定操作子１に含まれる所定の操作子の操作により選択する。この選択により、選択された曲の曲データおよび鍵駆動用データが外部記憶装置９から読み出されて、ＲＡＭ６の所定位置に確保された曲データ格納領域および鍵駆動用データ格納領域（ともに図示せず）にそれぞれ記憶される。なお、ユーザが所望とする曲の曲データおよび鍵駆動用データが外部記憶装置９に記憶されていない場合には、ユーザがあるいは自動的に、本実施の形態の電子ピアノの外部、たとえば前記外部機器１００から、その曲データおよび鍵駆動用データを通信Ｉ／Ｆ１０を介してＲＡＭ６内に取り込むようにしてもよい。
【００５８】
本実施の形態で用いる曲データは、ヘッダ、一連のイベントデータ、発生タイミングデータおよびエンドデータからなる。ヘッダは、曲名、初期の音色、音量、演奏テンポなどを表す複数のデータからなる。イベントデータには、キーオンイベントデータ、キーオフイベントデータ、楽音制御イベントデータおよびテンポイベントデータなどが含まれる。キーオンイベントデータは、発生楽音の音高を表すキーコードＫＣおよび楽音の発生開始を表すキーオンＫＯＮを有する。キーオフイベントデータは、発生中の楽音の音高を表すキーコードＫＣおよび楽音の発生停止を表すキーオフＫＯＦを有する。楽音制御イベントデータは、発生楽音の音色、音量を制御するための制御データを有する。発生タイミングデータは、各イベントデータに付随して（隣接して）設けられ、当該イベントデータの楽曲中の発生タイミングを表すテンポクロックタイミングＴＣＬＴを有する。テンポイベントデータは、自動演奏のテンポを変更するための制御データを有する。エンドデータは、曲データの終了を表す。
【００５９】
一方、本実施の形態で用いる鍵駆動用データは、ヘッダ、一連の駆動イベントデータ、駆動タイミングデータおよびエンドデータからなる。ヘッダには、曲名を表すデータが含まれる。駆動イベントデータには、駆動オンイベントデータおよび駆動オフイベントデータが含まれる。駆動オンイベントデータは、駆動鍵のキーナンバ（各鍵に付与された番号のうち、駆動鍵に付与された番号）を表すキーコードＫＣおよび駆動開始を表す駆動オンＫＯＮを有する。駆動オフイベントデータは、駆動中の鍵のキーナンバを表すキーコードＫＣおよび駆動停止を表す駆動オフＫＯＦを有する。駆動タイミングデータは、各駆動イベントデータに付随して（隣接して）設けられ、当該駆動イベントデータの楽曲中の駆動タイミングを表すテンポクロックタイミングＴＣＬＴを有する。エンドデータは、鍵駆動用データの終了を表す。
【００６０】
なお本実施の形態では、曲データが記憶されていれば必ず、鍵駆動用データも記憶されているとし（したがって、ある曲データが外部記憶装置９に記憶されていれば、その曲データに対応する鍵駆動用データも外部記憶装置９あるいは外部機器１００などに記憶されている）、上述のように曲が選択されると、その曲データだけでなくその鍵駆動用データも読み出されてＲＡＭ６内に取り込まれる。しかし、曲データと鍵駆動用データとの違いは、曲データ内の発生タイミングデータによって表される発生タイミングと、その発生タイミングデータに対応する、鍵駆動用データ内の駆動タイミングデータによって表される駆動タイミングとが若干異なる（つまり、鍵駆動制御は発音制御に比べて時間がかかるので、駆動タイミングを発生タイミングより早くする必要がある）程度であるので、外部記憶装置９には曲データのみを記憶しておき、鍵駆動用データが必要となったときに、その鍵駆動用データを対応する曲データから生成するようにしてもよい。
【００６１】
また、自動演奏の指示により、図示しない初期設定処理が実行されて、ＲＡＭ６内に、自動演奏用テーブルおよび鍵駆動用テーブルが用意される。自動演奏用テーブルは、曲データに基づいて自動演奏（楽音信号の自動生成）を行うためのテーブルであり、鍵駆動用テーブルは、鍵駆動用データに基づいて鍵盤装置３の駆動制御を行うためのテーブルである。後述するように、自動演奏と鍵盤装置３の駆動制御とは並行して実行されるが、本発明の特徴は鍵盤装置３の駆動制御にあり、自動演奏にはないので、自動演奏用テーブルの構成や自動演奏用テーブルを用いてどのように自動演奏を行うかについての説明は省略する。
【００６２】
鍵駆動用テーブルは、図６に示すように、鍵駆動用データ中の駆動オンイベントデータを割り当てるための複数（本実施の形態では、１０個）のチャンネルｃｈ１〜ｃｈ１０を有する。なお、この１０個のチャンネルは例示であって、これに限定されることなく、他の個数を採用してもよい。各チャンネルｃｈｉ（ｉは、１から１０までの整数)には、キーコードＫＣ(ｉ)、鍵駆動状態ＳＴ(ｉ)、経過時間ＴＭ(ｉ)、オフディレイフラグＯＦＤＬ(ｉ)、オンディレイフラグＯＮＤＬ(ｉ)、駆動アシスト制御フラグＴＡ(ｉ)および第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)がそれぞれ記憶されるようになっている。
【００６３】
キーコードＫＣ(ｉ)は、駆動オンイベントデータ中のキーコードＫＣである。鍵駆動状態ＳＴ(ｉ)は、駆動オンタイミング、すなわちアクチュエータ３３０への通電制御開始からの時間経過（ただし、駆動オン維持時間を除外する）に従った第１〜第１１状態ＳＴ１〜ＳＴ１１のいずれかを表す（図１４（ａ）参照）。経過時間ＴＭ(ｉ)は、駆動オンタイミングおよび駆動オフタイミングからの経過時間を表す。ただし、駆動オフに関する経過時間ＴＭ(ｉ)は、駆動オフタイミングからの時間に、駆動オンタイミングから駆動オン持続開始タイミングまでの時間を加算して表している。オフディレイフラグＯＦＤＬ(ｉ)は、同一鍵の連打に関係して同一鍵に関する駆動オン直後の駆動オフに対して駆動オフ制御を遅延させるためのフラグであり、“１”により遅延を表し、“０”により非遅延を表す。オンディレイフラグＯＮＤＬ(ｉ)は、同一鍵の連打に関係して同一鍵に関する駆動オフ直後の駆動オンに対して駆動オン制御を遅延させるためのフラグであり、“１”により遅延を表し、“０”により非遅延を表す。駆動アシスト制御フラグＴＡ(ｉ)は、アクチュエータ３３０の駆動力が発熱等によって低下した場合に発生する駆動アシスト制御の状態を表すフラグであり、“１”により駆動アシスト制御状態を表し、“０”により駆動アシスト非制御状態を表す。第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)は、第１〜第３スイッチＳＷ１〜ＳＷ３のオン／オフ状態をそれぞれ表すもので、“０”によりオフ状態を表し、“１”によりオン状態を表す。
【００６４】
この鍵駆動用テーブルの初期設定においては、キーコードＫＣ(ｉ)、経過時間ＴＭ(ｉ)および鍵駆動状態ＳＴ(ｉ)は、それぞれ“０”にリセットされる。オフディレイフラグＯＦＤＬ(ｉ)、オンディレイフラグＯＮＤＬ(ｉ)、駆動アシスト制御フラグＴＡ(ｉ)および第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)は、それぞれ“０”にリセットされる。
【００６５】
前記曲の選択および初期設定後、ＣＰＵ４は、タイマ７との協働により、曲データのヘッダ部分に含まれているテンポデータにより表された演奏テンポによって規定される所定の短時間毎に、図７の自動演奏処理プログラムを繰り返し実行し始める。所定の短時間とは、たとえば、４分音符の時間長の１／１６，１／３２程度の時間長である。この演奏テンポは、設定操作子１に含まれるテンポ操作子（図示せず）の操作によっても変更される。
【００６６】
自動演奏処理プログラムの実行が開始されると、ＣＰＵ４は、ステップＳ１にてランフラグＲＵＮが“１”であるか否かを判定する。ランフラグＲＵＮは、“１”により自動演奏の動作中を表し、“０”により自動演奏の待機中を表す。ランフラグＲＵＮは“０”に初期設定されているので、最初ＣＰＵ４は、ステップＳ１にて“ＮＯ”と判定して、ステップＳ２の判定処理により、ユーザによるスタート指示を待つ。ユーザが自動演奏のスタートを指示しなければ、ＣＰＵ４は、ステップＳ２にて“ＮＯ”と判定して、この自動演奏処理プログラムの実行を一旦終了する。ユーザが、たとえば設定操作子１に含まれる自動演奏スタートスイッチ（図示せず）を操作して自動演奏のスタートを指示すると、ＣＰＵ４は、ステップＳ２にて“ＹＥＳ”と判定して、ステップＳ３にてランフラグＲＵＮを“１”に設定するとともに、テンポクロックＴＣＬを“０”にクリアする。その後、ステップＳ５〜Ｓ１４からなる処理が実行される。
【００６７】
前述のようにして、ランフラグＲＵＮが“１”に設定されると、以降の自動演奏処理プログラムの実行時に、ＣＰＵ４は、ステップＳ１にて“ＹＥＳ”と判定し、ステップＳ４にてテンポクロックＴＣＬに“１”を加算する。次に、ステップＳ５以降の処理について説明する。ＣＰＵ４は、ステップＳ５にて、曲データ中に、テンポクロックＴＣＬにより示されたタイミングを表すタイミングデータの付随したイベントデータがあるか否かを判定する。該当するイベントデータがなければ、ＣＰＵ４は、ステップＳ５にて“ＮＯ”と判定して、処理をステップＳ９に進める。
【００６８】
該当するイベントデータがあれば、ＣＰＵ４は、ステップＳ５にて“ＹＥＳ”と判定して、ステップＳ６にて該当する１つのイベントデータを読み出し、ステップＳ７の自動演奏イベント処理を実行する。この自動演奏イベント処理では、ＣＰＵ４は、読み出されたイベントデータがキーオンイベントデータであれば、当該キーオンイベントデータ中のキーコードＫＣおよびキーオンＫＯＮを音源１１に出力し、読み出されたイベントデータがキーオフイベントデータであれば、当該キーオフイベントデータ中のキーコードＫＣおよびキーオフＫＯＦを音源１１に出力し、読み出されたイベントデータが楽音制御イベントデータであれば、当該楽音制御イベントデータ中の楽音パラメータを音源１１に出力し、読み出されたイベントデータがテンポイベントデータであれば、自動演奏のテンポを変更する。
【００６９】
ステップＳ７の処理後、ＣＰＵ４は、ステップＳ８にて該当する残りのイベントデータが曲データ中にあるか否かを判定し、該当する残りのイベントデータがあれば、前記ステップＳ６およびＳ７の処理を実行する。ステップＳ８の判定処理は、曲データ中に同じ発生タイミングのイベントデータが複数存在する場合に必要なものである。つまり、ステップＳ６では、同じ発生タイミングのイベントデータが複数あったとしても、そのうちの１つだけを読み出し、そのイベントデータを次のステップＳ７の自動演奏イベント処理に渡しているため、当該イベントデータが複数ある場合には、その個数に応じた回数だけ、ステップＳ６およびＳ７の処理を繰り返す必要があるからである。このようにして、該当するイベントデータは、ステップＳ７の自動演奏イベント処理にて１つずつ処理される。該当する残りのイベントデータがなくなると、ＣＰＵ４は、ステップＳ８にて“ＮＯ”と判定して、ステップＳ９にて、鍵駆動用データ中に、テンポクロックＴＣＬにより示された駆動タイミングを表す駆動タイミングデータの付随した駆動イベントデータがあるか否かを判定する。該当する駆動イベントデータがなければ、ＣＰＵ４は、ステップＳ９にて“ＮＯ”と判定して、この自動演奏処理プログラムを一旦終了する。
【００７０】
該当する駆動イベントデータがあれば、ＣＰＵ４は、ステップＳ９にて“ＹＥＳ”と判定して、ステップＳ１０にて該当する１つの駆動イベントデータを読み出し、ステップＳ１１の鍵駆動イベント処理サブルーチンを実行する。ステップＳ１１の処理後、ＣＰＵ４は、ステップＳ１２にて該当する残りの駆動イベントデータが鍵駆動用データ中にあるか否かを判定し、該当する残りの駆動イベントデータがあれば、前記ステップＳ１０およびＳ１１の処理を実行する。なお、ステップＳ１２の判定処理を設けた理由は、前記ステップＳ８の判定処理を設けた理由と同様である。このようにして、該当する駆動イベントデータは、ステップＳ１１の鍵駆動イベント処理サブルーチンにて１つずつ処理される。該当する残りの駆動イベントデータがなくなると、ＣＰＵ４は、ステップＳ１２にて“ＮＯ”と判定して、ステップＳ１３にて鍵駆動用データの読み出しがエンドデータまで達したか否かを判定する。そして、エンドデータに達するまで、すなわち１曲分の鍵駆動用データの読み出しが終了するまで、演奏テンポに応じた短時間毎に、ステップＳ４〜Ｓ１３の処理が繰り返し実行される。
【００７１】
鍵駆動用データの読み出しがエンドデータまで達すると、ＣＰＵ４は、ステップＳ１３にて“ＹＥＳ”と判定し、ステップＳ１４にてランフラグＲＵＮを“０”に設定して、この自動演奏処理プログラムの実行を終了する。このようにしてランフラグＲＵＮが“０”に設定されると、自動演奏処理プログラムが次に実行されたときには、前述のように、ステップＳ１およびＳ２の処理により、ユーザによってスタートが指示されるまで、曲データおよび鍵駆動用データの読み出し処理は実行されない。
【００７２】
なお、鍵駆動用データ内の最後の駆動イベントデータ（エンドデータの直前の駆動イベントデータ）の読み出しが、曲データ内の対応するイベントデータの読み出しより早く終了することが起こり得る（前述のように、駆動イベントデータの駆動タイミングを、対応するイベントデータの発生タイミングより早くする必要があるため）が、この場合には、図７のフローチャートでは、曲データ内の最後のイベントデータを読み出すことができない。これに対処するためには、曲データの読み出しがエンドデータに至ったときに“１”に設定し、それ以外は“０”に設定する曲データ読出終了フラグと、鍵駆動用データの読み出しがエンドデータに至ったときに“１”に設定し、それ以外は“０”に設定する鍵駆動用データ読出終了フラグを設け、曲データ読出終了フラグおよび鍵駆動用データ読出終了フラグがいずれも“１”に設定されているときに、ランフラグＲＵＮを“０”に設定するようにすればよい。
【００７３】
次に、前記ステップＳ１１の鍵駆動イベント処理サブルーチンについて説明する。鍵駆動イベント処理サブルーチンは、図８に詳細に示されている。その実行が開始されると、ＣＰＵ４は、ステップＳ２１にて、前記読み出した駆動イベントデータが駆動オンイベントデータであるか否かを判定する。駆動オンイベントデータであれば、ＣＰＵ４は、ステップＳ２１にて“ＹＥＳ”と判定して、処理をステップＳ２２に進める。前記読み出したイベントデータが駆動オンイベントデータでない場合には、ＣＰＵ４は、ステップＳ２１において“ＮＯ”と判定して、処理をステップＳ２５に進める。まず、読み出された駆動イベントデータが駆動オンイベントデータである場合について説明を続ける。ステップＳ２２においては、ＣＰＵ４は、鍵駆動用テーブルを参照し、前記読み出した駆動オンイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶したチャンネルが存在するか否かを判定する。この判定条件は、後述する同一鍵連打に関する判定条件である。この基本動作においては、同一鍵連打に関係して同一鍵に関する駆動オンイベントデータが短時間内に発生しないことを前提としているので、前記読み出した駆動オンイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶したチャンネルは存在しない。なお、該当するチャンネルが存在する場合については詳しく後述する。したがって、この場合、ＣＰＵ４は、ステップＳ２２にて“ＮＯ”と判定して、処理をステップＳ２３に進める。
【００７４】
ステップＳ２３においては、ＣＰＵ４は、鍵駆動用テーブル内にて第１スイッチフラグＳＷ１が“０”であり、かつ割当て優先度が最大であるチャンネルｃｈｉを探し出し、同探し出したチャンネルｃｈｉに前記図７のステップＳ１０の処理により鍵駆動用データ中から読み出した駆動イベントデータである駆動オンイベントデータを割当てる。すなわち、鍵駆動用テーブルの前記探し出したチャンネルｃｈｉのキーコードＫＣ(ｉ)を駆動オンイベントデータ中に含まれるキーコードＫＣに設定し、鍵駆動状態ＳＴ(ｉ)を第１状態ＳＴ１に設定し、経過時間ＴＭ(ｉ)を“０”にリセットし、オフディレイフラグＯＦＤＬ(ｉ)、オンディレイフラグＯＮＤＬ(ｉ)、駆動アシスト制御フラグＴＡ(ｉ)および第１〜第３スイッチフラグＳＷ１(ｉ)〜ＳＷ３(ｉ)をそれぞれ“０”に設定する。
【００７５】
次にＣＰＵ４は、ステップＳ２４にて、前記記憶したキーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル内の第１状態ＳＴ１に対応したデューティ比をキーコードＫＣ(ｉ)と共に前記駆動制御部３ｃに出力する。そして、ＣＰＵ４は、この鍵駆動イベント処理サブルーチンの実行を一旦終了する。
【００７６】
本実施の形態では、前記ＲＯＭ５または外部記憶装置９には、アクチュエータ３３０を通電制御するためのデューティ比を記憶した複数のデューティ比テーブルが記憶されている。複数のデューティ比テーブルはそれぞれ、押鍵時に鍵３１０を円滑に突き上げるためにアクチュエータ３３０を通電制御する際のデューティ比を押鍵開始からの時間の関数として記憶しているとともに、離鍵時の鍵３１０を円滑に降下させるためにアクチュエータ３３０を通電制御する際のデューティ比を離鍵開始からの時間の関数として記憶している。本実施の形態では、図１４（ａ）に示すように、各デューティ比テーブルは、押鍵時のデューティ比として階段状に変化する６種類（ＳＴ１〜ＳＴ６）のデューティ比、押鍵維持のための１種類（ＳＴ７）のデューティ比、および離鍵時のデューティ比として階段状に変化する４種類（ＳＴ８〜ＳＴ１１）のデューティ比が用意されている。また、複数のデューティ比テーブル内にそれぞれ記憶された時間変化するデューティ比の各平均値はそれぞれ異なる。そして、鍵３１０をなるべく均一な速度で変位させるために、鍵の属する音域（たとえば、低域、中低域、中高域および高域）、白鍵または黒鍵、および千鳥状に配置されたアクチュエータ３３０の前後位置の組み合わせに応じて、鍵３１０は複数のデューティ比テーブルのうちのいずか１つのデューティ比テーブルに予め割当てられている。具体的には、鍵盤装置３の質量部材３２３は低音域ほど重いために（すなわち、回転モーメントが大きいために）、低音域の鍵３１０ほど、前記平均値の大きなデューティ比テーブルに割当てられている。白鍵３１０Ｗは、黒鍵３１０Ｂに比べて回転モーメントが大きいために、黒鍵３１０Ｂに比べて前記平均値の大きなデューティ比テーブルに割当てられている。アクチュエータ３３０が前側に位置している鍵３１０は、アクチュエータ３３０が後側に位置している鍵３１０に比べてハンマ体回動軸ＰＨからの距離が短いために、前記平均値の大きなデューティ比テーブルに割当てられている。
【００７７】
前記ステップＳ２４の処理のように、第１状態ＳＴ１に対応したデューティ比およびキーコードＫＣ(ｉ)が駆動制御部３ｃに出力されると、駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【００７８】
一方、前記図７の自動演奏処理プログラムの実行に並行して、ＣＰＵ４は、タイマ７との協働により、所定の短時間（たとえば、１００μｓ）毎に、図１０〜図１３の鍵駆動制御処理プログラムを繰り返し実行している。この鍵駆動制御処理プログラムの実行が開始されると、ＣＰＵ４は、ステップＳ１０１にて鍵駆動用テーブルのチャンネルｃｈ１〜ｃｈ１０を順に指定する変数ｉを“１”に設定した後、図１３のステップＳ１７２およびＳ１７３の処理により、変数ｉが“１０”に達するまで、ステップＳ１０２〜Ｓ１７１の処理を繰り返し実行する。
【００７９】
この場合、全てのチャンネルは共通の動作をするので、前記図８のステップＳ２３の処理により、駆動オンイベントデータが登録された鍵駆動用テーブルの１つのチャンネルｉについてのみ説明する。ステップＳ１０２においては、ＣＰＵ４は、鍵駆動状態ＳＴ(ｉ)が第７状態ＳＴ７を表しているか否かを判定する。この場合、前記図８のステップＳ２３の処理により、鍵駆動状態ＳＴ(ｉ)は第１状態ＳＴ１に設定されているので、ＣＰＵ４は、ステップＳ１０２にて“ＮＯ”と判定して、ステップＳ１０３にて経過時間ＴＭ(ｉ)に所定の短い時間値Ｔｃを表す値を加算する。この時間値Ｔｃは、この鍵駆動制御処理プログラムの実行周期（たとえば、１００μｓ）である。
【００８０】
前記ステップＳ１０３の処理後、鍵駆動状態ＳＴ(ｉ)は第１状態ＳＴ１に設定されているので、ＣＰＵ４は、ステップＳ１０４にて“ＹＥＳ”と判定して、ステップＳ１０５にて経過時間ＴＭ(ｉ)が第１状態ＳＴ１の終了タイミングを示す所定の第１時間値Ｔ１（図１４（ａ）参照）以上であるか否かを判定する。経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上でなければ、ＣＰＵ４は、ステップＳ１０５にて“ＮＯ”と判定して、処理をステップＳ１７２以降に進める。そして、鍵駆動制御処理プログラムが再び実行されても、経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上になるまで、前記ステップＳ１０１〜Ｓ１０５，Ｓ１７２およびＳ１７３の処理を繰り返す。この繰り返し処理中、駆動制御部３ｃは、図８のステップＳ２４の処理によって供給されたデューティ比に応じたＰＷＭ波形で、キーコードＫＣ(ｉ)により表されたアクチュエータ３３０を通電制御し続ける。
【００８１】
一方、前記ステップＳ１０３の加算処理により、経過時間ＴＭ(ｉ)が第１時間値Ｔ１以上になると、ＣＰＵ４は、ステップＳ１０５にて“ＹＥＳ”と判定して、ステップＳ１０６にて鍵駆動状態ＳＴ(ｉ)を第２状態ＳＴ２に変更する。そして、ＣＰＵ４は、ステップＳ１０７にて、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１４（ａ）参照）内の第２状態ＳＴ２に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。前記ステップＳ１０７の処理後、ＣＰＵ４は、処理をステップＳ１７２以降に進める。
【００８２】
次にこの鍵駆動制御処理プログラムが実行されたときには、鍵駆動状態ＳＴ(ｉ)は第２状態ＳＴ２に設定されているので、ＣＰＵ４は、ステップＳ１０８にて“ＹＥＳ”と判定して、前記ステップＳ１０５〜Ｓ１０７と同様なステップＳ１０９〜Ｓ１１１の処理により、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第２状態ＳＴ２に対応したデューティ比に応じたＰＷＭ波形で、第２状態ＳＴ２の終了タイミングを示す所定の第２時間値Ｔ２になるまで通電制御し続ける。そして、経過時間ＴＭ(ｉ)が第２時間値Ｔ２に達すると、前記と同じアクチュエータ３３０を、第３状態ＳＴ３に対応したデューティ比に応じたＰＷＭ波形で通電制御し始める。したがって、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０は、時間Ｔ２−Ｔ１だけ、第２状態ＳＴ２に対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に第３状態ＳＴ３に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換えられる。
【００８３】
次にこの鍵駆動制御処理プログラムが実行されたときには、鍵駆動状態ＳＴ(ｉ)は第３状態ＳＴ３に設定されているので、ＣＰＵ４は、ステップＳ１１２にて“ＹＥＳ”と判定して、ステップＳ１１３にて第１スイッチＳＷ１のオンイベントが前記図２のスキャン部３ｄによって検出されたか否かを判定する。第１スイッチＳＷ１のオンイベントが検出されなければ、ＣＰＵ４は、ステップＳ１１３にて“ＮＯ”と判定して、処理をステップＳ１７２以降に進める。一方、第１スイッチＳＷ１のオンイベントが検出されると、ＣＰＵ４は、ステップＳ１１３にて“ＹＥＳ”と判定して、ステップＳ１１４にて第１スイッチフラグＳＷ１(ｉ)を“１”に設定する。そしてＣＰＵ４は、ステップＳ１１５にて経過時間ＴＭ(ｉ)が第３状態ＳＴ３の終了タイミングを示す所定の第３時間値Ｔ３より所定時間長い第３′時間値Ｔ３′以上であるか否かを判定する。ここで、第３時間値Ｔ３は、アクチュエータ３３０の駆動力が通常状態（つまり、その駆動力が発熱等により低下していない状態）であれば、鍵駆動を開始してから第１時間値Ｔ１までの時間、時間Ｔ２−Ｔ１および時間Ｔ３−Ｔ２の各時間だけ、第１状態ＳＴ１〜第３状態ＳＴ３にそれぞれ対応したデューティ比に応じたＰＷＭ波形でアクチュエータ３３０に通電制御し続けた場合、鍵３１０のスイッチ押圧部３２４が鍵スイッチＳＷの第１スイッチＳＷ１をオン状態にする時間である。そして第３′時間値Ｔ３′は、この第３時間値Ｔ３に所定の時間値だけ余裕を持たせて、アクチュエータ３３０の駆動力が真に低下していると判定できるようにした閾値である。
【００８４】
経過時間ＴＭ(ｉ)が第３′時間値Ｔ３′以上でなければ、ＣＰＵ４は、ステップＳ１１５にて“ＮＯ”と判定して、ステップＳ１１７にて鍵駆動状態ＳＴ(ｉ)を第４状態ＳＴ４に変更する。そして、ＣＰＵ４は、ステップＳ１１８にて、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル内の第４状態ＳＴ４に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。前記ステップＳ１１８の処理後、ＣＰＵ４は、処理をステップＳ１７２以降に進める。
【００８５】
一方、経過時間ＴＭ(ｉ)が第３′時間値Ｔ３′以上であれば、ＣＰＵ４は、ステップＳ１１５にて“ＹＥＳ”と判定して、ステップＳ１１６にて駆動アシスト制御フラグＴＡ(ｉ)を“１”に設定した後、処理を前記ステップＳ１１７に進める。
【００８６】
次にこの鍵駆動制御処理プログラムが実行されたときには、鍵駆動状態ＳＴ(ｉ)は第４状態ＳＴ４に設定されているが、図１１のステップＳ１２０にて鍵駆動状態ＳＴ(ｉ)が第４状態ＳＴ４を表しているか否かを判定する前に、ＣＰＵ４は、ステップＳ１１９にて駆動アシスト制御フラグＴＡ(ｉ)が“１”に設定されているか否かを判定する。この判定は、アクチュエータ３３０の駆動力が低下しているために駆動アシスト制御を行う場合と、アクチュエータ３３０の駆動力が低下していないために駆動アシスト制御を行わない場合とを分けるためになされている。ここでは、駆動アシスト制御フラグＴＡ(ｉ)が“０”に設定されていて、駆動アシスト制御を行わない場合を説明し、駆動アシスト制御を行う場合については後述する。
【００８７】
駆動アシスト制御フラグＴＡ(ｉ)が“０”に設定されているときには、ＣＰＵ４は、ステップＳ１１９にて“ＮＯ”と判定して、ステップＳ１２０にて鍵駆動状態ＳＴ(ｉ)が第４状態ＳＴ４を表しているか否かを判定する。このとき、鍵駆動状態ＳＴ(ｉ)は第４状態ＳＴ４であるので、ＣＰＵ４は、ステップＳ１２０にて“ＹＥＳ”と判定して、ステップＳ１２１にて第３スイッチＳＷ３のオンイベントがスキャン部３ｄによって検出されたか否かを判定する。第３スイッチＳＷ３のオンイベントが検出されなければ、ＣＰＵ４は、ステップＳ１２１にて“ＮＯ”と判定して、処理をステップＳ１７２以降に進める。一方、第３スイッチＳＷ３のオンイベントが検出されると、ＣＰＵ４は、ステップＳ１２１にて“ＹＥＳ”と判定して、ステップＳ１２２にて第２および第３スイッチフラグＳＷ２(ｉ)およびＳＷ３(ｉ)をそれぞれ“１”に設定し、ステップＳ１２３にて鍵駆動状態ＳＴ(ｉ)を第５状態ＳＴ５に変更する。そして、ＣＰＵ４は、ステップＳ１２４にて、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル内の第５状態ＳＴ５に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。さらにＣＰＵ４は、ステップＳ１２５にて第５状態ＳＴ５を継続させる時間ΔＴst5（図１４（ａ）参照）と経過時間ＴＭ(ｉ)との加算値を第５時間値Ｔ５とした後、処理をステップＳ１７２以降に進める。このように第５時間値Ｔ５を設定するのは、第４状態ＳＴ４から第５状態ＳＴ５に切り替わる時刻、つまり第４時間値Ｔ４は、固定値ではなく、第３スイッチＳＷ３のオンイベントの発生タイミングによって決まる変動値であり、その変動値に対して常に所定時間、すなわち時間ΔＴst5だけ第５状態ＳＴ５を継続させたいからである。
【００８８】
続くステップＳ１２６〜Ｓ１２９の処理は、前記ステップＳ１０４〜Ｓ１０７およびステップＳ１０８〜Ｓ１１１の各処理と同様である。したがって、このステップＳ１２６〜Ｓ１２９の処理により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０は、時間Ｔ５−Ｔ４（＝ΔＴst5）、第５状態ＳＴ５に対応したデューティ比に応じたＰＷＭ波形で通電制御される。
【００８９】
次に、鍵駆動状態ＳＴ(ｉ)が第６状態ＳＴ６になった場合について説明する。この場合、ＣＰＵ４は、前記第５状態ＳＴ５の場合と異なり、ステップＳ１３０〜Ｓ１３８の処理を実行する。しかし、ステップＳ１３２，Ｓ１３５〜Ｓ１３８の処理は、同一鍵連打に関係してオフディレイフラグＯＦＤＬ(ｉ)が“１”に設定されている場合の処理であり、この基本動作においては、オフディレイフラグＯＦＤＬ(ｉ)は必ず“０”に設定されている。したがって、この場合、ステップＳ１３２における“ＹＥＳ”との判定のもとに、実質的には、ステップＳ１３０，Ｓ１３１，Ｓ１３３およびＳ１３４の処理が実行される。そして、これらのステップＳ１３０，Ｓ１３１，Ｓ１３３およびＳ１３４の処理は、前述したステップＳ１０４〜Ｓ１０７、ステップＳ１０８〜Ｓ１１１およびステップＳ１２６〜Ｓ１２９の各処理に対応している。したがって、この場合も、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０は、前記の処理と同様に、時間Ｔ６−Ｔ５の間、第６状態ＳＴ６に対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に、第７状態ＳＴ７に対応したデューティ比に応じたＰＷＭ波形で通電制御され続ける。
【００９０】
この第１〜第６状態ＳＴ１〜ＳＴ６の制御により、鍵３１０およびハンマ体ＨＭは図３の状態から図４の状態に変化し、ハンマ体ＨＭの質量部材３２３の後端部は上側ストッパ３１２により上方への変位が規制される。この状態は、ユーザが鍵３１０の押鍵を維持している状態に対応する。
【００９１】
このような状態で、図７のステップＳ１０の処理により駆動イベントデータである駆動オフイベントデータが読み出されて、図７のステップＳ１１、すなわち図８の鍵駆動イベント処理サブルーチンが実行されると、ＣＰＵ４は、図８のステップＳ２１にて“ＮＯ”と判定するとともに、ステップＳ２５にて“ＹＥＳ”と判定して、ステップＳ２６にて鍵駆動オフ処理サブルーチンを実行する。
【００９２】
鍵駆動オフ処理サブルーチンは、図９に詳細に示されている。その実行が開始されると、ＣＰＵ４は、ステップＳ３１にて、鍵駆動用テーブルを参照し、前記読み出した駆動オフイベントデータ中に含まれているキーコードＫＣと同一のキーコードＫＣを記憶しているチャンネルｃｈｉを探し出す。次に、前記探し出したチャンネルｃｈｉにより指定される鍵駆動用テーブル内の鍵駆動状態ＳＴ(ｉ)が第７状態ＳＴ７であるか否かを判定する。この場合、前記探し出したチャンネルｃｈｉは、前述した図１０のステップＳ１０１〜図１１のステップＳ１３４の処理により、鍵駆動状態ＳＴ(ｉ)が第７状態ＳＴ７に設定されたチャンネルと同じであるものとして話を進める。したがって、ＣＰＵ４は、ステップＳ３２にて“ＹＥＳ”と判定して、処理をステップＳ３３以降に進める。なお、ステップＳ３２にて“ＮＯ”、すなわち鍵駆動状態ＳＴ(ｉ)が第７状態ＳＴ７でないと判定される場合は、この基本動作でない同一鍵連打に関する場合である。
【００９３】
前記ステップＳ３２の“ＹＥＳ”との判定後、ＣＰＵ４は、ステップＳ３３にて鍵駆動状態ＳＴ(ｉ)を第８状態ＳＴ８に変更し、ステップＳ３４にてキーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１４（ａ）参照）内の第８状態ＳＴ８に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、前記場合と同様に、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。なお、この制御および今後の制御は、図４の状態にある鍵３１０およびハンマ体ＨＭを図３の状態に戻す動作、すなわち駆動オフ動作に対応する。
【００９４】
一方、前述のように、ＣＰＵ４は、図１０〜図１３の鍵駆動制御処理プログラムを所定の短い時間値Ｔｃ毎に繰り返し実行している。前記図９の鍵駆動オフ処理サブルーチンによって、鍵駆動状態ＳＴ(ｉ)は第８状態ＳＴ８に設定されているので、図１２のステップＳ１４８〜Ｓ１５２の処理が実行される。このステップＳ１４８〜Ｓ１５２の処理は、前述した図１１のステップＳ１２０〜Ｓ１２４の処理と同様であり、ＣＰＵ４は、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第８状態ＳＴ８に対応したデューティ比に応じたＰＷＭ波形で、第２スイッチＳＷ２のオフイベントがスキャン部３ｄによって検出されるまで（ただし、ステップＳ１２０〜Ｓ１２４の処理では、第３スイッチＳＷ３のオンイベントが検出されるまで）通電制御し、その後に第９状態ＳＴ９に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換える。また、図１２のステップＳ１５３〜Ｓ１５８は、前述した図１１のステップＳ１２０〜Ｓ１２５の処理と同様であり、ＣＰＵ４は、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第９状態ＳＴ９に対応したデューティ比に応じたＰＷＭ波形で、第１スイッチＳＷ１のオフイベントがスキャン部３ｄによって検出されるまで通電制御し、その後に第１０状態ＳＴ１０に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換えるとともに、第１０状態ＳＴ１０を継続させる時間ΔＴst10（図１４（ａ）参照）と経過時間ＴＭ(ｉ)との加算値を第１０時間値Ｔ１０とする。さらに、図１３のステップＳ１５９〜Ｓ１６２の処理は、前述した図１０のステップＳ１０４〜Ｓ１０７などの処理と同様であり、ＣＰＵ４は、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第１０状態ＳＴ１０に対応したデューティ比に応じたＰＷＭ波形で、時間ΔＴst10にわたって通電制御し、その後に第１１状態ＳＴ１１に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換える。
【００９５】
次に、鍵駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１になった場合について説明する。この場合、ＣＰＵ４は、前記第１０状態ＳＴ１０の場合と異なり、ステップＳ１６３〜Ｓ１７１の処理を実行する。しかし、ステップＳ１６５，Ｓ１６８〜Ｓ１７１の処理は、同一鍵連打に関係してオンディレイフラグＯＮＤＬ(ｉ)が“１”に設定されている場合の処理であり、この基本動作においては、オンディレイフラグＯＮＤＬ(ｉ)は必ず“０”に設定されているので、ステップＳ１６５における“ＹＥＳ”との判定のもとに、実質的には、ステップＳ１６４〜Ｓ１６７の処理が実行される。したがって、経過時間ＴＭ(ｉ)が第１１時間値Ｔ１１以上になると、ＣＰＵ４は、ステップＳ１６６にて、“０”を表すデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。したがって、駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０の通電制御を停止する。
【００９６】
この第８状態ＳＴ８〜第１１状態ＳＴ１１の制御により、鍵３１０およびハンマ体ＨＭは図４の状態から図３の状態に変化し、ハンマ体ＨＭの質量部材３２３の後端部は下側ストッパ３１３により下方への変位が規制される。この状態は、ユーザが鍵３１０の押鍵を解除した後の鍵の初期状態に対応する。
【００９７】
前記ステップＳ１６６の処理後、ＣＰＵ４は、ステップＳ１６７にて、鍵駆動用テーブル内のチャンネルｃｈｉのデータを初期値にクリアする。これにより、駆動イベントデータである次の駆動オンイベントデータの鍵駆動用テーブルへの登録に備える。
【００９８】
なお本実施の形態では、図７のステップＳ１０の処理により、駆動イベントデータとして、駆動オンイベントデータおよび駆動オフイベントデータ以外のイベントデータが読み出されることはないが、何らかの事情で駆動オン／オフイベントデータ以外のイベントデータが読み出された場合、ＣＰＵ４は、図７のステップＳ１１、すなわち図８の鍵駆動イベント処理サブルーチンのステップＳ２１およびＳ２５にて“ＮＯ”とそれぞれ判定して、何もせずにこの鍵駆動イベント処理サブルーチンを終了する。
【００９９】
次に、前記図１０のステップＳ１１６にて駆動アシスト制御フラグＴＡ(ｉ)が“１”に設定されて、駆動アシスト制御を行う場合について説明する。
【０１００】
駆動アシスト制御フラグＴＡ(ｉ)が“１”に設定されているときには、ＣＰＵ４は、前記図１１のステップＳ１１９にて“ＹＥＳ”と判定して、処理を図１２のステップＳ１３９に進める。そしてＣＰＵ４は、ステップＳ１３９にて鍵駆動状態ＳＴ(ｉ)が第４状態ＳＴ４を表しているか否かを判定する。このとき、鍵駆動状態ＳＴ(ｉ)は第４状態ＳＴ４であるので、ＣＰＵ４は、ステップＳ１３９にて“ＹＥＳ”と判定して、前記ステップＳ１０５〜Ｓ１０７などと同様なステップＳ１４０〜Ｓ１４２の処理により、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第４状態ＳＴ４に対応したデューティ比に応じたＰＷＭ波形で、第４Ａ状態ＳＴ４Ａの開始タイミングを示す所定の第４Ａｓ時間値Ｔ４Ａｓになるまで通電制御し続ける。そして、経過時間ＴＭ(ｉ)が第４Ａｓ時間値Ｔ４Ａｓに達すると、前記と同じアクチュエータ３３０を、第４Ａ状態ＳＴ４Ａに対応したデューティ比に応じたＰＷＭ波形で通電制御し始める。したがって、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０は、時間Ｔ４Ａｓ−Ｔ３だけ、第４状態ＳＴ４に対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に第４Ａ状態ＳＴ４Ａに対応したデューティ比に応じたＰＷＭ波形の通電制御に切換えられる。
【０１０１】
図１４（ｂ）は、同図（ａ）のデューティ比テーブルにおいて、駆動アシスト制御時に切換えられる第４Ａ状態ＳＴ４Ａに対応したデューティ比の一例を示す図である。同図（ｂ）に示すように、第４Ａ状態ＳＴ４Ａに対応したデューティ比は、第４状態ＳＴ４に対応したデューティ比より十分に大きく設定されている。
【０１０２】
次にこの鍵駆動制御処理プログラムが実行されたときには、鍵駆動状態ＳＴ(ｉ)は第４Ａ状態ＳＴ４Ａに設定されているので、ＣＰＵ４は、ステップＳ１４３にて“ＹＥＳ”と判定して、前記ステップＳ１０５〜Ｓ１０７などと同様なステップＳ１４４〜Ｓ１４６の処理により、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第４Ａ状態ＳＴ４Ａに対応したデューティ比に応じたＰＷＭ波形で、第４Ａ状態ＳＴ４Ａの終了タイミングを示す所定の第４Ａｅ時間値Ｔ４Ａｅになるまで通電制御し続ける。そして、経過時間ＴＭ(ｉ)が第４Ａｅ時間値Ｔ４Ａｅに達すると、前記と同じアクチュエータ３３０を、第４状態ＳＴ４に対応したデューティ比に応じたＰＷＭ波形で通電制御し始める。したがって、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０は、時間Ｔ４Ａｅ−Ｔ４Ａｓだけ、第４Ａ状態ＳＴ４Ａに対応したデューティ比に応じたＰＷＭ波形で通電制御され、その後に第４状態ＳＴ４に対応したデューティ比に応じたＰＷＭ波形の通電制御に切換えられる。さらにＣＰＵ４は、ステップＳ１４７にて駆動アシスト制御フラグＴＡ(ｉ)を“０”にリセットする。
【０１０３】
次にこの鍵駆動制御処理プログラムが実行されたときには、駆動アシスト制御フラグＴＡ(ｉ)がリセットされた状態で、鍵駆動状態ＳＴ(ｉ)が第４状態ＳＴ４に設定されているので、ＣＰＵ４は、前期ステップＳ１１９にて“ＮＯ”と判定するとともに、前期ステップＳ１２０にて“ＹＥＳ”と判定して、前記ステップＳ１２１〜Ｓ１２５の処理を行う。ＣＰＵ４は、このステップＳ１２１〜Ｓ１２５の処理により、駆動制御部３ｃとの協働により、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を、第４状態ＳＴ４に対応したデューティ比に応じたＰＷＭ波形で、第３スイッチＳＷ３のオンイベントがスキャン部３ｄによって検出されるまで通電制御し、その後に第５状態ＳＴ５に対したデューティ比に応じたＰＷＭ波形の通電制御に切換える。第５状態ＳＴ５以降の鍵駆動制御処理については、前述した制御処理と同様であるので、その説明は省略する。
【０１０４】
以上説明したように、駆動アシスト制御フラグＴＡ(ｉ)が“０”にリセットされているときの基本動作においては、図８のステップＳ２３，Ｓ２４、図９のステップＳ３１〜Ｓ３４、図１０のステップＳ１０１〜Ｓ１１８、図１１のステップＳ１１９〜Ｓ１３４、図１２のステップＳ１４８〜Ｓ１５８，図１３のステップＳ１５９〜Ｓ１６７，Ｓ１７２およびＳ１７３の処理により、鍵３１０の押鍵および離鍵動作を制御するために、アクチュエータ３３０が図１４（ａ）に示すデューティ比の時間変化に応じて通電制御される。すなわち、アクチュエータ３３０への通電量および駆動力が時間経過と共に図１４（ａ）に示すデューティ比に比例して制御される。
【０１０５】
このデューティ比の変化においては、鍵３１０およびハンマ体ＨＭの押鍵に対応した押鍵動作の開始時には、図１４（ａ）の第１状態ＳＴ１で示すように、アクチュエータ３３０は中程度のデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは中程度の駆動力で駆動制御される。これは、押鍵動作の開始前には駆動部３３４は基部３２２から離れており、駆動部３３４の上端が基部３２２に接触した際の衝突を小さくするためである。次に、第２状態ＳＴ２で、アクチュエータ３３０は大きなデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは大きな駆動力で駆動制御される。次に、第３状態ＳＴ３で、デューティ比を若干下げる、すなわち鍵３１０およびハンマ体ＨＭの駆動力を若干下げるようにした。
【０１０６】
第３状態ＳＴ３の終了後、第４状態ＳＴ４では、アクチュエータ３３０は中程度のデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは中程度の駆動力で駆動制御される。このように、第４状態ＳＴ４におけるデューティ比を第３状態ＳＴ３におけるデューティ比より小さく設定したのは、第３状態ＳＴ３での大きな駆動力により、鍵３１０およびハンマ体ＨＭには（押鍵方向への）勢い（慣性力）がついているために、駆動力をセーブして省電力化を図るようにしているからである。
【０１０７】
第４状態ＳＴ４の終了後、第５状態ＳＴ５では、中程度のデューティ比をさらに若干下げるようにした。これは、ハンマ体ＨＭの質量部材３２３の後端部が上側ストッパ３１２に衝突するときに発生する衝突音を低減させるためである。つまり、第３スイッチＳＷ３のオンイベント、すなわちキーオンイベントが検出されてから、ハンマ体ＨＭの質量部材３２３の後端部が上側ストッパ３１２に衝突するまでには、少しストロークがある。したがって、キーオンイベントが検出された直後に、いきなり大きな駆動力を発生させるデューティ比でアクチュエータ３３０を通電制御すると、上記質量部材３２３の後端部が勢いを増した状態で上側ストッパ３１２に衝突するので、衝突音が大きくなってしまう。このため、第５状態ＳＴ５におけるデューティ比を第４状態ＳＴ４におけるデューティ比よりさらに小さく設定することで、上記衝突音を低減させるようにしている。
【０１０８】
第５状態ＳＴ５の終了後、第６状態ＳＴ６で、アクチュエータ３３０は再び大きなデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは再び大きな駆動力で駆動制御される。これは、ハンマ体ＨＭの質量部材３２３の後端部の上側ストッパ３１２への衝突の反発力により、質量部材３２３が下方へ変位することを防止、すなわち質量部材３２３のリバウンドを回避するためである。
【０１０９】
その後の第７状態ＳＴ７では、アクチュエータ３３０は中程度のデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは中程度の駆動力で駆動制御される。第７状態ＳＴ７は押鍵維持状態、すなわちハンマ体ＨＭの質量部材３２３の後端部を上側ストッパ３１２に接触させ続ける状態であり、この状態は長時間継続することもあり、電力消費の観点からも、押鍵状態を維持できる最低限のデューティ比でアクチュエータ３３０を通電制御することが望ましいからである。
【０１１０】
そして、鍵３１０の押鍵解除、すなわちハンマ体ＨＭの原位置への復帰時には、最初アクチュエータ３３０は、第８状態ＳＴ８で小さなデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは、小さな駆動力で駆動制御される。これは、押鍵解除に伴い、ハンマ体ＨＭの質量部材３２３を急激に落下させるためである。その後、アクチュエータ３３０は、第９状態ＳＴ９で中低度のデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは中程度の駆動力で駆動制御される。そして、第９状態ＳＴ９から第１１状態ＳＴ１１まで少しずつ段階的に大きくなるデューティ比で通電制御、すなわち鍵３１０およびハンマ体ＨＭは少しずつ段階的に大きくなる駆動力で駆動制御され、最終的にデューティ比が“０”、すなわち鍵３１０およびハンマ体ＨＭの駆動制御が終了する。これらの第９状態ＳＴ９から第１１状態ＳＴ１１においてデューティ比（駆動力）を上昇させる理由は、押鍵解除に伴うハンマ体ＨＭの原位置への復帰時において質量部材３２３の後端の下側ストッパ３１３への衝突を緩和して衝突に伴う衝撃音の発生を防止するとともに同後部のリバウンドを回避するために、アクチュエータ３３０はある程度大きな推力を必要とするからである。そして、質量部材３２３の後端が下側ストッパ３１３上に完全に静止した後に、アクチュエータ３３０への通電制御を解除してアクチュエータ３３０の推力を“０”にするためである。特に、鍵３１０およびハンマ体ＨＭが原位置に近づくほど、すなわちプランジャ３３３がボビン３３１の内底面に近づいてソレノイドコイル３３２との対向面積が減少するほど、デューティ比（ソレノイドコイル３３２への通電量）が同じでも、プランジャ３３３を引き上げる電磁力は減少する。この電磁力の減少を補正するためにも、前記第９状態ＳＴ９から第１１状態ＳＴ１１に渡ってデューティ比を大きくする必要がある。
【０１１１】
このような押鍵動作における第１状態ＳＴ１から第６状態ＳＴ６までの制御、押鍵維持動作における第７状態ＳＴ７の制御、および離鍵動作における第８状態ＳＴ８から第１１状態ＳＴ１１までの制御により、鍵３１０およびハンマ体ＨＭを、機械的な雑音の発生を低減させつつ、円滑に変位させることができる。
【０１１２】
また、前述のようにアクチュエータ３３０のデューティ比を制御するために、複数のデューティ比テーブルが用意されている。そして、これらの複数のデューティ比テーブルは、鍵３１０の属する音域（たとえば、低域、中低域、中高域および高域）、白鍵または黒鍵、および千鳥状に配置されたアクチュエータ３３０の前後位置の組み合わせに応じて用意されているとともに、各鍵３１０に予め割当てられている。これにより、鍵３１０毎に適切なデューティ比を用いてアクチュエータ３３０への通電制御がなされるので、各鍵３１０や各アクチュエータ３３０のばらつきの影響を軽減させつつ、鍵盤装置３の構造とは無関係に、いずれの鍵３１０およびハンマ体ＨＭも適切に駆動される。
【０１１３】
なお、この基本動作、すなわち図１４（ａ）に示すデューティ比の時間変化に応じてアクチュエータ３３０を通電制御する動作は、駆動オンタイミング（あるいは駆動オフタイミング）からの経過時間ＴＭに従って鍵駆動状態ＳＴを切換え、この鍵駆動状態ＳＴに応じたデューティ比のＰＷＭ波形で対応するアクチュエータ３３０を通電制御する点では、前記特許文献２に記載の基本動作とほぼ同じである。しかし、特許文献２に記載の基本動作では、鍵駆動状態ＳＴの切換えを単純に経過時間ＴＭのみに従って行うようにしている（すなわち、完全なフィードフォワード制御によって鍵駆動制御を行っている）のに対して、本実施の形態における基本動作（駆動アシスト制御フラグＴＡ(ｉ)が“０”にリセットされているときの基本動作）では、鍵駆動状態ＳＴの一部、具体的には、第４状態ＳＴ４、第５状態ＳＴ５、第９状態ＳＴ９および第１０状態ＳＴ１０への切換えを第１〜第３スイッチＳＷのオン／オフイベントが検出されたことに従って行うようにしている（すなわち、フィードフォワード制御を基本としつつ、部分的に鍵スイッチＳＷを用いたフィードバック制御によって鍵駆動制御を行っている）点が異なっている。これにより、本実施の形態の電子ピアノでは、各鍵の押鍵から離鍵に至る全工程をセンシングすることなく、その一部、具体的には、それぞれ独立して発生するダンパオフ（リリース）／オン（ホールド）およびキーオン／オフを検出することで、各鍵の動きを簡易的にフィードバックして押鍵／離鍵動作を制御することができる。したがって、可及的に簡略な鍵盤および駆動装置構成で自動演奏時の鍵盤動作を精度良く制御することが可能となる。
【０１１４】
一方、たとえば、アクチュエータ３３０への通電制御が続き、ソレノイドコイル３３２が発熱することなどにより、アクチュエータ３３０の駆動力が低下した状態で、鍵３１０の押鍵駆動が開始されると、第１スイッチＳＷ１がオンになったときの経過時間ＴＭは第３′時間値Ｔ３′以上となって、駆動アシスト制御フラグＴＡがセットされ、鍵駆動状態ＳＴが第４状態ＳＴ４の途中で所定時間、第４状態ＳＴ４に対応したデューティ比よりも遙かに大きなデューティ比のＰＷＭ波形で対応するアクチュエータ３３０が通電制御される。これにより、アクチュエータ３３０の低下した駆動力を補って、その後の押鍵駆動を的確に行うことができる。
【０１１５】
（２）同一鍵連打動作
次に、同一鍵連打に関係して、同一キーコードＫＣを有する複数の駆動オンイベントデータおよび駆動オフイベントデータが鍵駆動用データ中から短時間内に読み出された場合について説明する。これは、鍵駆動用データ中に極めて速い同一鍵の連打を表す駆動オンイベントデータおよび駆動オフイベントデータが駆動イベントデータとして予め含まれている場合や、前記テンポ操作子の操作により自動演奏のテンポが速められた場合などに生ずる。
【０１１６】
この同一鍵連打動作については、連打の条件別に説明する。連打の条件とは、
（Ａ）駆動オンイベントデータが鍵駆動用データ中から読み出された直後に、当該駆動オンイベントデータと同一キーコードＫＣを有する駆動オフイベントデータが鍵駆動用データ中から読み出された場合（以下、「駆動オン直後の駆動オフ」という）
（Ｂ）上記（Ａ）駆動オン直後の駆動オフの直後に、さらに当該駆動オンイベントデータおよび駆動オフイベントデータと同一キーコードＫＣを有する駆動オンイベントデータが鍵駆動用データ中から読み出された場合（以下、「駆動オン直後の駆動オフ・オン」という）
（Ｃ）駆動オフイベントデータが鍵駆動用データ中から読み出された直後に、当該駆動オフイベントデータと同一キーコードＫＣを有する駆動オンイベントデータが鍵駆動用データ中から読み出された場合（以下、「駆動オフ直後の駆動オン」という）
（Ｄ）上記（Ｃ）駆動オフ直後の駆動オンの直後に、さらに当該駆動オフイベントデータおよび駆動オンイベントデータと同一キーコードＫＣを有する駆動オフイベントデータが鍵駆動用データ中から読み出された場合（以下、「駆動オフ直後の駆動オン・オフ」という）
（Ｅ）上記（Ｄ）駆動オフ直後の駆動オン・オフの直後に、当該駆動オフイベントデータおよび駆動オンイベントデータと同一キーコードＫＣを有する駆動オンイベントデータが鍵駆動用データ中から読み出された場合（以下、「駆動オフ直後の駆動オン・オフ・オン」という）
である。本発明の特徴は、「基本動作」がなされたときも「同一鍵連打動作」がなされたときも、基本的に異ならない。つまり、「同一鍵連打動作」がなされたときに特有な鍵駆動制御処理はなされていない。しかし、図１０〜図１３の鍵駆動制御処理プログラムには、「同一鍵連打動作」についての制御処理も記載されているので、以下、上記（Ａ）〜（Ｅ）の連打条件のうち、（Ａ）および（Ｃ）の条件がそれぞれ成立したときになされる「同一鍵連打動作」について説明する。
【０１１７】
（Ａ）駆動オン直後の駆動オフ
この駆動オン直後の駆動オフは、具体的には、駆動オンイベントデータが鍵駆動用データ中から読み出された後、鍵駆動状態ＳＴ(ｉ)が第７状態ＳＴ７に達する前に、当該駆動オンイベントデータと同一のキーコードＫＣを有する駆動オフイベントデータが鍵駆動用データ中から読み出された場合である。この場合、前記図９の鍵駆動オフ処理サブルーチンにおいて、ＣＰＵ４は、ステップＳ３５にて“ＹＥＳ”、すなわち駆動オフイベントデータに含まれるキーコードＫＣと同一キーコードＫＣを記憶したチャンネルｃｈｉの鍵駆動状態ＳＴ(ｉ)が第１〜第６状態ＳＴ１〜ＳＴ６のいずれかであると判定する。そして、ＣＰＵ４は、ステップＳ３６にて、前記チャンネルｃｈｉのオフディレイフラグＯＦＤＬ(ｉ)を“１”に設定する。
【０１１８】
この状態で、図１０〜図１３の鍵駆動制御処理プログラムの実行により、経過時間ＴＭ(ｉ)が増加して、鍵駆動状態ＳＴ(ｉ)が第６状態ＳＴ６の終了時を表す第６時間値Ｔ６に達すると、ＣＰＵ４は、図１１のステップＳ１３１の処理後のステップＳ１３２にて、前記“１”に設定したオフディレイフラグＯＦＤＬ(ｉ)に基づいて“ＮＯ”と判定して、ステップＳ１３５〜Ｓ１３８の処理を実行する。ステップＳ１３５においては、鍵駆動状態ＳＴ(ｉ)を第８状態ＳＴ８に設定する。ステップＳ１３６においては、経過時間ＴＭ(ｉ)を第８状態ＳＴ８の開始時（すなわち第７状態ＳＴ７の終了時）を表す第７時間値Ｔ７（第６時間値Ｔ６に等しい）に設定する。ステップＳ１３７においては、キーコードＫＣ(ｉ)が予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１４（ａ）参照）内の第８状態ＳＴ８に対応したデューティ比をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。ステップＳ１３８においては、オフディレイフラグＯＦＤＬ(ｉ)を“０”にリセットする。
【０１１９】
このような処理により、鍵駆動状態ＳＴ(ｉ)が第１状態ＳＴ１〜第６状態ＳＴ６のいずれかである状態で、同一キーコードＫＣに関する駆動オフイベントデータが読み出されると、第６状態ＳＴ６の終了時まで待って、鍵駆動状態ＳＴ(ｉ)は第７状態ＳＴ７を飛ばして第８状態ＳＴ８に変更される。したがってこの場合には、駆動オフイベントデータが読み出されてから、ハンマ体ＨＭの質量部材３２３の後端部の回動が上側ストッパ３１２により規制された状態になるまで待った後、鍵３１０およびハンマ体ＨＭの原位置への復帰制御が開始されることになる。これにより、楽音信号の発生タイミングとは異なるものの、鍵３１０の押鍵動作および離鍵動作が確実に行われる。また、楽音信号の発生から短時間内に鍵３１０の離鍵動作が開始されるので、視覚的にも不自然ではない。
【０１２０】
（Ｃ）駆動オフ直後の駆動オン
この駆動オフ直後の駆動オンは、具体的には、駆動オンイベントデータが鍵駆動用データ中から読み出された後、鍵駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１を終了する前に、当該駆動オフイベントデータと同一のキーコードＫＣを有する駆動オンイベントデータが鍵駆動用データ中から読み出された場合である。この場合、駆動オンイベントデータの読み出し時期が第８状態ＳＴ８から第１１状態ＳＴ１１のいずれに属するかにより制御が異なるが、本実施の形態では、駆動オフ直後の駆動オンがあった場合に、通常の鍵駆動制御、つまり第１状態ＳＴ１から第１１状態ＳＴ１１に至るまでに順次なされる鍵駆動制御とは異なる制御がなされることが分かればよいので、以下、第１１状態ＳＴ１１で駆動オンイベントデータが鍵駆動用データ中から読み出された場合のみを例に挙げて説明する。
【０１２１】
この場合、前記図８の鍵駆動イベント処理サブルーチンのステップＳ２７の再打鍵処理において、ＣＰＵ４は、駆動オンイベントデータに含まれるキーコードＫＣを記憶したチャンネルｃｈｉの鍵駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１であるときに、オンディレイフラグＯＮＤＬ(ｉ)を“１”に設定する。そして、経過時間ＴＭ(ｉ)が第１１状態ＳＴ１１の終了時に達すると、ＣＰＵ４は、前記図１３の鍵駆動制御処理プログラムのステップＳ１６５にて“ＮＯ”、すなわちオンディレイフラグＯＮＤＬ(ｉ)が“０”でないと判定して、ステップＳ１６８以降の処理を実行する。
【０１２２】
ＣＰＵ４は、ステップＳ１６８にて鍵駆動状態ＳＴ(ｉ)を第２状態ＳＴ２に設定し、ステップＳ１６９にて経過時間ＴＭ(ｉ)を第１状態ＳＴ１の終了時を表す時間値Ｔ１に設定する。そして、ＣＰＵ４は、ステップＳ１７０にて、駆動オンイベントデータに含まれているキーコードＫＣが予め割当てられているデューティ比テーブルを探し出して、同探し出したデューティ比テーブル（図１４（ａ）参照）内の第２状態ＳＴ２に対応したデューティ比をキーコードＫＣと共に駆動制御部３ｃに出力する。そして、ＣＰＵ４は、ステップＳ１７１にてオンディレイフラグＯＮＤＬ(ｉ)を“０”にリセットしておく。駆動制御部３ｃは、キーコードＫＣにより表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。
【０１２３】
このような処理により、鍵駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１で、同一キーコードＫＣに関する駆動オンイベントデータが読み出されると、鍵駆動状態ＳＴ(ｉ)が第１１状態ＳＴ１１を終了するまで待って、鍵駆動状態ＳＴ(ｉ)が第２状態ＳＴ２に変更される。したがって、この場合には、駆動オフイベントデータの読み出し直後の駆動オンイベントデータの読み出しにより、鍵３１０およびハンマ体ＨＭは、離鍵動作の終了後、鍵駆動状態ＳＴ(ｉ)の途中から（第１状態ＳＴ１からではなく、第２状態ＳＴ２から）押鍵動作に入る。これにより、楽音信号の発生タイミングとは僅かに異なるものの、鍵３１０の離鍵動作および押鍵動作が確実に行われ、視覚的にも不自然ではない。
【０１２４】
（３）変形例
さらに、本発明の実施にあたっては、上記実施の形態に限定されるものではなく、本発明の目的を逸脱しない限りにおいて種々の変更が可能である。
【０１２５】
図１５は、本実施の形態の第１の変形例の鍵駆動制御処理プログラムの一部手順を示すフローチャートであり、同図中、前記図１０および図１１中のステップと同一処理を行うステップには同一ステップ番号を付している。
【０１２６】
図１５において、鍵駆動状態ＳＴ(ｉ)が第３状態ＳＴ３で、第１スイッチＳＷ１のオンイベントが検出されると、ＣＰＵ４は、ステップＳ１１２〜Ｓ１１８の処理を実行した後、ステップＳ２０１にて経過時間ＴＭ(ｉ)を第３時間値Ｔ３とする。その後、経過時間ＴＭ(ｉ)が第４Ｄ時間値Ｔ４Ｄ以上になると、ＣＰＵ４は、ステップＳ２１１にて“ＹＥＳ”と判定し、ステップＳ２１２にて鍵駆動状態ＳＴ(ｉ)を第４Ｄ状態ＳＴ４Ｄに変更する。そしてＣＰＵ４は、ステップＳ２１３にて、キーコードＫＣ(ｉ)が予め割当てられているデューティ比関数ＤＲ(ｔ)を探し出して、同探し出したデューティ比関数ＤＲ(ｔ)（図１６（ａ）参照）の第３時間値Ｔ３に対応したデューティ比ＤＲ(Ｔ３)をキーコードＫＣ(ｉ)と共に駆動制御部３ｃに出力する。駆動制御部３ｃは、キーコードＫＣ(ｉ)により表された鍵３１０に対応したアクチュエータ３３０を前記デューティ比に応じたＰＷＭ波形で通電制御する。これにより、図１６（ｂ）に示すように、鍵駆動状態ＳＴが第４Ｄ状態ＳＴ４Ｄのときのデューティ比は、押鍵駆動を開始してから第１スイッチＳＷ１がオンになるまでの経過時間Ｔ３の値（この値は、押鍵の速さを表している）に応じて変動する。図１６（ａ）では、デューティ比関数ＤＲ(ｔ)として非線形増加関数を例示しているが、これに限らず、線形増加関数を採用するようにしてもよい。ただし、経過時間ｔが長い程、デューティ比を大きくする方が好ましいので、減少関数を採用するのは現実的でない。
【０１２７】
なお、図１６（ｂ）の例では、押鍵の速さに応じて押鍵時の鍵駆動制御を行うようにしたが、これに限らず、離鍵の速さに応じて離鍵時の鍵駆動制御を行うようにしてもよい。具体的には、離鍵駆動を開始してからの経過時間ｔに応じてデューティ比が変動するデューティ比関数ＤＲ′(ｔ)を定義しておき、第２スイッチＳＷ２がオフになるまでの経過時間Ｔ８−Ｔ７の値、あるいは離鍵駆動を開始してから第１スイッチＳＷ１がオフになるまでの経過時間Ｔ９−Ｔ７の値に対応するデューティ比をこのデューティ比関数ＤＲ′(ｔ)から求め、このデューティ比をその後の鍵駆動状態ＳＴ、つまり第１０状態ＳＴ１０あるいは第１１状態ＳＴ１１のデューティ比とする。あるいは、第２スイッチＳＷ２がオフしてから第１スイッチＳＷ１がオフするまでの経過時間Ｔ９−Ｔ８の値に対応するデューティ比を所定のデューティ比関数から求め、このデューティ比をその後の鍵駆動状態ＳＴ、つまり第１０状態ＳＴ１０あるいは第１１状態ＳＴ１１のデューティ比としてもよい。
【０１２８】
このように第１の変形例では、鍵の押離鍵位置だけでなく、その押離鍵の速さにも基づいて鍵駆動制御を行うようにしたので、さらに精度のよい鍵駆動制御を行うことが可能となる。
【０１２９】
図１７は、本実施の形態の第２の変形例の鍵駆動制御処理プログラムの一部手順を示すフローチャートであり、同図中、前記図１０および図１１中のステップと同一処理を行うステップには同一ステップ番号を付している。
【０１３０】
図１７において、鍵駆動状態ＳＴ(ｉ)が第３状態ＳＴ３で、第１スイッチＳＷ１のオンイベントが検出されると、ＣＰＵ４は、ステップＳ１１２〜Ｓ１１８の処理を実行した後、ステップＳ３０１にて経過時間ＴＭ(ｉ)を第３時間値Ｔ３とし、ステップＳ３０２にて、キーコードＫＣ(ｉ)が予め割当てられている第５時間値関数Ｔ５(ｔ)を探し出して、同探し出した第５時間値関数Ｔ５(ｔ)（図１８（ａ）参照）の第３時間値Ｔ３に対応した第５時間値Ｔ５(Ｔ３)を第５時間値Ｔ５とする。この第５時間値Ｔ５は、ステップＳ３１１にて、第５状態ＳＴ５から第６状態ＳＴ６への切換えの判断に用いられているので、第５状態ＳＴ５の終了時を規定する。つまり第５状態ＳＴ５の終了時は、押鍵駆動を開始してから第１スイッチＳＷ１がオンになるまでの経過時間Ｔ３の値（この値は、押鍵の速さを表している）に応じて変動する（図１８（ｂ）参照）。
【０１３１】
なお、図１８（ｂ）の例では、押鍵の速さに応じて押鍵時の鍵駆動制御を行うようにしたが、これに限らず、離鍵の速さに応じて離鍵時の鍵駆動制御を行うようにしてもよい。具体的には、離鍵駆動を開始してからの経過時間ｔに応じて第１０時間値Ｔ１０あるいは第１１時間値Ｔ１１が変動する第１０時間値関数Ｔ１０(ｔ)あるいは第１１時間値関数Ｔ１１(ｔ)を定義しておき、第２スイッチＳＷ２がオフになるまでの経過時間Ｔ８−Ｔ７の値、あるいは離鍵駆動を開始してから第１スイッチＳＷ１がオフになるまでの経過時間Ｔ９−Ｔ７の値に対応する第１０時間値Ｔ１０あるいは第１１時間値Ｔ１１をこの第１０時間値関数Ｔ１０(ｔ)あるいは第１１時間値関数Ｔ１１(ｔ)から求め、この第１０時間値Ｔ１０あるいは第１１時間値Ｔ１１を前記図１３のステップＳ１６０あるいはＳ１６４の判定で用いるようにする。
【０１３２】
このように第２の変形例でも、鍵の押離鍵位置だけでなく、その押離鍵の速さにも基づいて鍵駆動制御を行うようにしたので、さらに精度のよい鍵駆動制御を行うことが可能となる。
【０１３３】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０１３４】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３５】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【０１３６】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０１３７】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【０１３８】
３ａ…鍵盤，３ｂ…電力供給部（鍵駆動手段），３ｃ…駆動制御部（鍵駆動手段），３ｄ…スキャン部（検出手段），４…ＣＰＵ（鍵駆動手段、鍵駆動制御手段、計測手段），７…タイマ（計測手段）
【図１】
2010164631.tif 000003
【図２】
2010164631.tif 000004
【図３】
2010164631.tif 000005
【図４】
2010164631.tif 000006
【図５】
2010164631.tif 000007
【図６】
2010164631.tif 000008
【図７】
2010164631.tif 000009
【図８】
2010164631.tif 000010
【図９】
2010164631.tif 000011
【図１０】
2010164631.tif 000012
【図１１】
2010164631.tif 000013
【図１２】
2010164631.tif 000014
【図１３】
2010164631.tif 000015
【図１４】
2010164631.tif 000016
【図１５】
2010164631.tif 000017
【図１６】
2010164631.tif 000018
【図１７】
2010164631.tif 000019
【図１８】
2010164631.tif 000020