(57)【特許請求の範囲】
【請求項１】
演奏操作子と、
前記演奏操作子の動作に応じて往復変位し、該変位に応じて他の部材と当接する変位部材と、
前記変位部材の動作を連続量で検出する検出手段と、
前記検出手段から出力された複数時点のデータに基づき、前記変位部材が前記他の部材に最接近した基準時点を特定し、且つ、前記基準時点における変位部材の動作、該基準時点前における変位部材が他の部材に近接する変位部材の動作、及び、該基準時点後における変位部材が他の部材から離間する変位部材の動作に基づいて前記変位部材が前記他の部材に当接したかどうかを判定する判定手段と
を備える鍵盤楽器。
【請求項２】
前記検出手段から出力されたデータが所定の基準値を超えたときに、前記変位部材が前記他の部材に当接したものと推定する推定手段と、
前記判定手段による判定結果と前記推定手段による推定結果が一致しないときに、前記所定の基準値を補正する補正手段
を更に備えることを特徴とする請求項１に記載の鍵盤楽器。
【請求項３】
前記検出手段の検出出力は、前記変位部材の動きを示す第１種の物理量を示す第１物理情報であり、
前記判定手段は、前記検出手段から出力された複数時点の第１物理情報に基づいて該変位部材の動きを示す第２種の物理量を示す第２物理情報を生成し、該生成した第２物理情報に基づいて変位部材が他の部材に当接したかどうかの判定を行うものである請求項１に記載の鍵盤楽器。
【請求項４】
前記検出手段は前記変位部材の位置情報を連続的に検出する連続量センサであって、
前記第１物理情報は該センサから出力される位置情報であり、
前記第２物理情報は前記位置情報に基づいて生成された速度情報及び加速度情報の少なくとも一方であり、
前記判定手段は、前記算出された速度情報について、前記基準時点のデータと、該基準時点前の複数時点におけるデータを参照して、前記変位部材が前記他の部材に当接したかどうかを判定し、前記算出された加速度情報について、少なくとも前記基準時点のデータと該基準時点以後の複数時点におけるデータを参照して、前記変位部材が前記他の部材に当接したかどうかを判定するものであることを特徴とする請求項３に記載の鍵盤楽器。
【請求項５】
前記判定手段は、前記検出手段から出力された複数時点の第１物理情報を用いた近似式に基づき第２種の物理量を示す第２物理情報を算出し、該算出した第２物理情報に基づき、変位部材が他の部材に当接したかどうかの判定を行うもの請求項３又は４に記載の鍵盤楽器。
【請求項６】
演奏操作子と、
前記演奏操作子の動作に応じて往復変位することで、発音部による発音を制御する変位部材と、
少なくとも前記変位部材の動きを検出する検出手段と、
前記検出手段の出力に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する位置判断手段と、
前記検出手段の出力に基づき往路変位する変位部材の速度情報を出力する速度情報出力手段と、
前記速度情報出力手段が出力した速度情報が所定の速度を越えたかどうかを判別する速度判別手段と、
前記位置判断手段の判断結果並びに前記速度判別手段の判別結果に基づき発音指示情報を生成する発音指示情報生成手段であって、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも前記変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成する発音指示情報生成手段
を具えた楽器。
【請求項７】
演奏操作子の動作に応じて往復変位する変位部材の動作に基づき発音指示情報を生成するための方法であって、
少なくとも前記変位部材の動きを検出する検出ステップと、
前記検出ステップにおける検出結果に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する位置判断ステップと、
前記検出ステップにおける検出結果に基づき往路変位する変位部材の速度情報を出力する速度出力ステップと、
前記速度出力ステップにおいて出力された速度情報が所定の速度を越えているかどうかを判別する速度判別ステップと、
前記位置判断ステップの判断結果並びに前記速度判別ステップの判別結果に基づき発音指示情報を生成するステップであって、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも前記変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成する発音指示情報生成ステップ
を含む方法。
【請求項８】
演奏操作子の動作に応じて往復変位する変位部材の動作に基づき発音指示情報を生成する処理をコンピュータに実行させるプログラムであって、
少なくとも前記変位部材の動きを検出する検出ステップと、
前記検出ステップにおける検出結果に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する位置判断ステップと、
前記検出ステップにおける検出結果に基づき往路変位する変位部材の速度情報を出力する速度出力ステップと、
前記速度出力ステップにおいて出力された速度情報が所定の速度を越えているかどうかを判別する速度判別ステップと、
前記位置判断ステップの判断結果並びに前記速度判別ステップの判別結果に基づき発音指示情報を生成するステップであって、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも前記変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成する発音指示情報生成ステップ
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばピアノ等のように、演奏操作子の動作に応じて往復変位する変位部材の動作に基づき発音が行われる楽器において、該変位部材の動作に基づき打弦タイミングの判定や、発音指示情報を生成するための技術に関する。
【背景技術】
【０００２】
従来より、自動演奏ピアノ等の鍵盤楽器においては、鍵やハンマ等の動きをセンサで検知し、検出結果を演奏データとして記録したり、電子音源に供給して楽音を電子的に発生することが行われている。この種の鍵盤楽器において、ハンマの動作を連続量で検出するハンマセンサを設けて、より正確な打弦タイミングおよび打弦速度を取得できるようにしたものが知られている。下記特許文献１には、ハンマセンサを有する鍵盤楽器の一例として、ハンマシャンクの変位を連続量で検出するハンマセンサを設け、鍵操作時に該ハンマセンサからハンマ運動に関する物理量（位置、速度或いは加速度）を連続量で検出し、その検出結果を用いて、ピアノ演奏に関る種々の情報を取得する装置が開示されている。該情報は、例えば下記（１）〜（９）等である。すなわち：（１）ハンマの動作開始タイミング、（２）打弦タイミング、（３）打弦直前のハンマ速度、（４）押鍵タイミング、（５）バックチェックタイミング、（６）バックチェックが外れたタイミング、（７）バックチェックが外れた後のハンマ速度、（８）ダンパ復帰タイミング、（９）ハンマ動作終了タイミング、（１０）離鍵タイミングなどである。
【特許文献１】特開２００１−１７５２６２号公報
【０００３】
上記特許文献１に代表される従来の装置構成によると、前記ピアノ演奏に関る種々の情報を生成するに際して、制御系は、ハンマ動作の開始や打弦動作の有無の判定等のハンマ動作の判定処理により、ハンマの動作状態を判断している。そのハンマ動作状態の判断は、ハンマセンサの出力と所定の閾値を比較することによって行われていた。すなわち、センサの出力と所定の閾値を比較することで、センサ出力とハンマの動作位置の対応付けを行い、ハンマの動作位置からハンマ動作状態を判断するのである。しかしながら、従来の技術では、打弦タイミング等を求める際の打弦判定は、専ら、ハンマが弦に接近する際の動き、すなわち、打弦前のハンマの動きのみに基づき判定していたので、打弦／非打弦の区別が不確実となる恐れがあった。従って、該打弦判定に基づく発音指示（キーオン）の発生もまた不確かになることがあった。また、連続量センサとしてよく用いられる光学式センサには、センサの使用中に光量が下がるなど、入出力特性に経時変化が生じる場合がある。しかし、従来の装置では、そのようなセンサの入出力特性の経時変化（例えば、光量の低下など）に対する対応が不十分であった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は上述の点に鑑みてなされたもので、自動演奏ピアノ等において、演奏操作子の動作に応じて往復変位する変位部材の動作に基づき発音が行われる楽器において、該変位部材の動作に基づく打弦判定や、発音指示情報の発生／非発生をより正確に行えるようにすることを目的とする。
【課題を解決するための手段】
【０００５】
この発明に係る鍵盤楽器は、演奏操作子と、前記演奏操作子の動作に応じて往復変位し、該変位に応じて他の部材と当接する変位部材と、前記変位部材の動作を連続量で検出する検出手段と、前記検出手段から出力された複数時点のデータに基づき、前記変位部材が前記他の部材に最接近した基準時点を特定し、且つ、前記基準時点における変位部材の動作、該基準時点前における変位部材が他の部材に近接する変位部材の動作、及び、該基準時点後における変位部材が他の部材から離間する変位部材の動作に基づいて前記変位部材が前記他の部材に当接したかどうかを判定する判定手段とを備える。
【０００６】
また、この発明は、演奏操作子と、前記演奏操作子の動作に応じて往復変位することで、発音部による発音を制御する変位部材と、少なくとも前記変位部材の動きを検出する検出手段と、前記検出手段の出力に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する位置判断手段と前記検出手段の出力に基づき往路変位する変位部材の速度情報を出力する速度情報出力手段と、前記速度情報出力手段が出力した速度情報が所定の速度を越えたかどうかを判別する速度判別手段と、前記位置判断手段の判断結果並びに前記速度判別手段の判別結果に基づき発音指示情報を生成する発音指示情報生成手段であって、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも前記変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成する発音指示情報生成手段を具えた楽器である。
【０００７】
また、この発明は、演奏操作子の動作に応じて往復変位する変位部材の動作に基づき発音指示情報を生成するための方法であって、少なくとも前記変位部材の動きを検出する検出ステップと、前記検出ステップにおける検出結果に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する位置判断ステップと、前記検出ステップにおける検出結果に基づき往路変位する変位部材の速度情報を出力する速度出力ステップと、前記速度出力ステップにおいて出力された速度情報が所定の速度を越えているかどうかを判別する速度判別ステップと、前記位置判断ステップの判断結果並びに前記速度判別ステップの判別結果に基づき発音指示情報を生成するステップであって、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも前記変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成する発音指示情報生成ステップを含む方法、或いは、該方法に対応する処理をコンピュータに実行させるためのプログラムとして構成することも可能である。
【発明の効果】
【０００８】
この発明に係る鍵盤楽器によれば、判定手段は、検出手段から出力された複数時点のデータに基づき、変位部材が他の部材に最接近した基準時点を特定し、且つ、基準時点における変位部材の動作、該基準時点前における変位部材が他の部材に近接する変位部材の動作、及び、該基準時点後における変位部材が他の部材から離間する変位部材の動作に基づいて変位部材が他の部材に当接したかどうかを判定するよう構成される。したがって、変位部材が他の部材に近接する変位部材の動作のみならず、変位部材が他の部材から離間する変位部材の動作も考慮して変位部材が前記他の部材に当接したかどうかを判定することができるようになる。これにより、変位部材が他の部材に当接したかどうかをより正確に判定できるようになるという優れた効果を奏する。演奏操作子と変位部材の一例として、鍵とハンマがある。その場合、ハンマによる打弦前のみならず、打弦後のハンマの動作を考慮した打弦判定を行うことができるので、打弦／非打弦の区別をより正確に行えるようになるという優れた効果を奏する。
【０００９】
また、この発明に係る楽器によれば、検出手段は、少なくとも変位部材の動きを検出し、位置判断手段は、検出手段の出力に基づき往路変位する変位部材の位置が所定位置に達したかどうかを判断する。また、速度情報出力手段は、該検出手段の出力に基づき往路変位する変位部材の速度情報を出力し、速度判別手段該速度情報出力手段が出力した速度情報が所定の速度を越えているかどうかを判別する。そして、発音指示情報生成手段は、変位部材の位置が所定位置に達し、且つ、速度情報が所定の速度を越えた場合には、少なくとも変位部材の往路変位時の速度情報に基づき発音指示情報を生成し、変位部材の位置が所定位置に達していない場合又は速度情報が所定の速度を越えていない場合には、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づき発音有無を判断し、該発音有無判定の結果に応じて発音指示情報を生成するよう構成される。したがって、往路変位する変位部材の位置情報又は速度情報に基づく判断で発音指示情報が生成されない場合であっても、少なくとも往路から復路へ反転する時点の変位部材の動きと復路変位する変位部材の動きに基づいて発音有無を判断し、発音有無判定の結果に応じて発音指示情報を生成することができる。すなわち、往路変位する変位部材の位置情報及び速度情報の両方を考慮し、且つ、復路変位する変位部材の動きを考慮して、より正確な発音指示情報の生成が行えるようになるという優れた効果を奏する。演奏操作子と変位部材の一例として、鍵と該鍵の動きに応じて打弦動作するハンマがある。この場合、ハンマのストローク位置とハンマの動作速度との両方を考慮し、且つ、打弦前のみならず、打弦後のハンマの動作を考慮して、より正確な発音指示情報の生成を行うことができるという優れた効果を奏する。
【発明を実施するための最良の形態】
【００１０】
以下添付図面を参照して、この発明の一実施例について説明する。
図１は、この発明の一実施例に係る自動演奏ピアノの構成例を説明するための図であって、機械的な発音機構の要部を抽出して示すと共に、電気的制御系の機能ブロックを示している。図１に示すように、自動演奏ピアノは、機械的な発音機構として、鍵１と、該鍵１に連動して回動ストロークするハンマ２と、該鍵１の運動をハンマ２に伝達するためのアクション機構３と、該ハンマ２によって打撃される弦４と、電気的制御に基づき鍵１を駆動する電磁ソレノイド５と、弦４の振動を止めるためのダンパ６とを含む。これらの構成は、一般的な自動演奏ピアノと同様である。なお、後述するように、この実施例においては、電磁ソレノイド５の駆動をサーボ制御する構成が適用されており、ソレノイド５にはプランジャ動作を検出するフィードバックセンサが具備されるものとする。
また、この自動演奏ピアノには、通常のアコースティックピアノと同様にバックチェック７が設けられており、このバックチェック７は打弦時の反動によるハンマ２の暴れを防止するための部材である。この自動演奏ピアノは、上記のほかにも、通常のアコースティックピアノと同様な各種構成要素を具備するが、それらの説明及び図示は省略する。ハンマ２は、アクション機構３に対して、ハンマシャンク２ａを介して動作支点２ｂを中心にして回動自在に連結されており、対応する鍵１が非押鍵（外力を加えない状態）の時には、図１に示すようなレスト位置（ストローク量０ｍｍの位置）にある。そして、対応する鍵１の変位（上下揺動）に連動して、基本的には該レスト位置から所定のエンド位置の間で回動ストロークする。この実施例において、ハンマ２のエンド位置は、ハンマ２が該レスト位置から４８ｍｍストローク変位した位置とする。図１において、エンド位置に位置するハンマ２を点線で示している。
【００１１】
図１において、符号２６は、ハンマ２の変位に応じた検出信号を連続量で検出するセンサである。センサ２６は、例えば、ハンマ２の連続的な位置情報を出力可能な光学式の位置センサを適用してよい。ハンマ２の連続位置を検出するのに好適な光学式センサの構成例について簡単に説明すると、光学式センサは、例えば、ＬＥＤと光ファイバで繋がる発光側センサヘッドとフォトダイオードと光ファイバで繋がる受光側センサヘッドとを有し、該ＬＥＤの光が発光側センサヘッドから照射されて、フォトダイオードと光ファイバで繋がる受光側センサヘッドにおいて受光され、フォトダイオードによって受光量に応じた出力電圧を取り出すことができる。該受光側センサヘッドにおいて受光する光量が、ハンマ２の変位に対応して変化するよう構成することで、該ハンマ２のストローク位置に応じた出力電圧を当該センサの検出信号として得ることができる。
【００１２】
当該センサ２６から出力される電圧値（アナログ信号）は、図示を省略したＯＰアンプ、ＡＤ変換器を介して、後述する信号処理部２７に、ディジタル信号として出力される。以下、この明細書中では、ディジタル信号に変換されたセンサ出力信号を「ＡＤ値（アナログ／ディジタル変換値）」と略称する。ＡＤ値は、センサ２６の出力（すなわちハンマ位置の測定値）を、例えば「０〜１０２３」の範囲の数値によって表現するデータである。なお、当該自動演奏ピアノに備わる全てのハンマ（８８個）に対して、夫々独立したセンサ２６（ＬＥＤとフォトダイオード）を配設するとコストが高くなってしまう。この点について、１２個のＬＥＤと８個のフォトダイオードとを用いて、８８個のハンマの夫々の動きを個別にセンシング可能なセンサマトリクスを構成する技術が本出願人により提案されており（特開平９−５４５８４号公報を参照）、この実施例に係るセンサ２６は該センサマトリックスにより構成されるものとする。なお、センサの配設構成はセンサマトリックスによる構成に限らず、ＬＥＤとフォトダイオードからなるセンサ２６を当該自動演奏ピアノに備わる全てのハンマに個別に配設する構成であってもよい。
【００１３】
図２は図１に示す自動演奏ピアノの電気的ハードウェア構成を示すブロック図である。図２に示すように当該自動演奏ピアノは、ＣＰＵ２０、ＲＯＭ２１、ＲＡＭ２２及び記憶装置２３を含み、各装置間がデータ及びアドレスバス２０Ｂを介して接続される。センサ２６の出力はＡＤ変換器を含むインターフェース（Ｉ/Ｏ）２４を介して所定のサンプリング周期で制御系に取り込まれる。ＣＰＵ２０は、当該自動演奏ピアノの全体的な動作を制御するとともに、演奏データの再生処理や、演奏の録音処理等の各種信号処理を実行する。ＣＰＵ２０が実行する各種処理の制御プログラムは、例えばＲＯＭ２１内に記憶されていてよい。また、ＲＯＭ２１或いはＲＡＭ２２等の適宜のメモリには、各種信号処理の実行中に発生した各種データや各種パラメータや、該各種信号処理において参照する各種テーブル等が記憶される。また、記憶装置２３は、ハードディスク、フレキシブルディスク又はフロッピー（登録商標）ディスク、コンパクトディスク（ＣＤ‐ＲＯＭ）、光磁気ディスク（ＭＯ）、ＺＩＰディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、半導体メモリ等、適宜の記録媒体で構成されてよい。
【００１４】
ここで、図１に示す電気的制御系の機能ブロックについて説明する。信号処理部２７は、センサ２６の出力に基づき演奏データを生成する処理（演奏の録音処理）を担うモジュールである。また、再生前処理部１０、モーションコントローラ１１及びサーボコントローラ１２は演奏データの再生処理を担うモジュールに相当する。この実施例において、これら各モジュールにおいて実施される信号処理は、ＣＰＵ２０が実行するソフトウェアプログラムによって実現されるものとする。
信号処理部２７内に示す算出部２８及び処理部３０は、信号処理部２７にて実行する信号処理の機能を概念的に抽出して表すものである。算出部２８は、センサ２６から出力されたＡＤ値（ハンマ２の動作位置を表すデータ）に基づき、打弦タイミングや打弦速度等、演奏に関る種々の情報を生成するモジュールである。処理部３０は、前記算出部２８で生成した種々の情報に基づき、ＭＩＤＩ形式等の適宜のデータフォーマットの演奏データを生成するモジュールである。前記演奏データは、基本的には、キーナンバーとベロシティデータ（打弦速度）を含んで構成されるキーオン／キーオフデータである。生成された演奏データは、記憶装置２３に記録しうる。また、生成された演奏データを、図示しない入出力インターフェースを介して図示しない外部機器に供給したり、或いは、図示しない通信ネットワークを介して該ネットワーク上の他の装置にリアルタイムで供給したりしてもよい。
【００１５】
再生前処理部１０は、図示しない適宜の記録媒体や、リアルタイム通信装置等から供給される演奏データに基づいて、鍵１の動作の軌道を指示する軌道データを生成するとともに、該軌道データを用いて鍵の原速度指示値（ｔ，Ｖｒ）を生成する。なお、原速度指示値（ｔ，Ｖｒ）において、「ｔ」は時間データであり、Ｖｒが時間データｔに対応する原速度指示値である。モーションコントローラ１１は該原速度指示値（ｔ，Ｖｒ）に基づいて、前記起動データを実現するためにソレノイド５に対して与えるべき速度目標値Ｖｒを生成してサーボコントローラ１２に出力する。サーボコントローラ１２は、前記速度指示値Ｖｒとソレノイド５から帰還入力されるフィードバック速度信号Ｖｙに基づく励磁電流例えば図２のＰＷＭ発生器２５によって発生されるＰＷＭ形式の電流信号）によってソレノイド５を駆動させることで、該ソレノイド５の駆動をサーボ制御する。
また、上記のようにソレノイド５の駆動により鍵１の打鍵動作を制御して、機械的に楽音を発生させることのみならず、音源装置やスピーカ等から構成される電子楽音発生部１３を利用して電子的に楽音を発生させることもできる。すなわち、再生前処理部１０は、記録媒体やリアルタイム通信装置等から供給される演奏データを電子楽音発生部１３に供給し、電子楽音発生部１３では該供給された演奏データに基づき電子的に楽音を発生することで、該演奏データに応じた演奏音を電子的に発音させることができる。なお、電子楽音発生部１３によって電子的に自動演奏を行う際の演奏データのデータ形式や、音源方式等は従来から知られるどのようなものを適用してもよい。
【００１６】
上記構成からなる自動演奏ピアノにおける演奏の記録処理（演奏データの生成処理）と再生処理の動作手順の概略について簡単に説明する。操作者は、例えばコントローラに備わる録音指示スイッチの操作等によって演奏の記録処理の開始を指示できる。信号処理部２７では、センサ２６の検出結果に基づいて、打弦速度や打弦時刻等、に関する各種情報を求め、前記各種情報に基づきピアノ演奏の演奏内容を表す演奏データを生成する。生成した演奏データは記憶装置２３（図２参照）に記録したり、図示しない外部機器に出力してよい。
また、操作者は例えばコントローラに備わる再生スイッチの操作等により演奏データの再生処理の開始を指示できる。再生前処理部１０は、時々刻々供給される演奏データに基づき鍵１の動作の軌道を指示する軌道データを生成するとともに、該軌道データを用いて鍵の原速度指示値（ｔ，Ｖｒ）を生成する。モーションコントローラ１１では、該原速度指示値（ｔ，Ｖｒ）に基づき、ソレノイド５に対して与えるべき速度目標値Ｖｒが生成される。サーボコントローラ１２では、速度指示値Ｖｒとソレノイド５から帰還入力されるフィードバック速度信号Ｖｙに基づきソレノイド５を駆動するための励磁電流を発生し、該ソレノイド５は該励磁電流によって駆動される。これにより、前記演奏データに応じた軌道（ストローク動作）に従い鍵１が打鍵駆動されて、ハンマ２が打弦運動することで、演奏データに応じたピアノ演奏が行われる。また、再生前処理部１０は再生すべき演奏データに基づき電子楽音発生部１３を制御して、電子楽音発生部１３において演奏データに応じた楽音を電子的に発生することも可能である。
【００１７】
信号処理部２７では、センサ２６から出力されたＡＤ値（数値）をハンマの実際の動作位置に対応付けて認識する必要がある。ＡＤ値とハンマの動作位置とを対応付ける方法として、例えば特開２０００−１５５５７９号公報に記載されているような「キャリブレーション比」を利用する方法が知られている。キャリブレーション比は、エンド位置のＡＤ値をレスト位置のＡＤ値に対する比率を表現したものである。ここで「キャリブレーション比」の設定処理について簡単に説明する。キャリブレーション比の設定処理は、例えば工場出荷時等に実行される処理である。図示しないコントローラからの指示等に応じて、キャリブレーション比の設定処理が開始する。該設定処理においては、レスト位置のＡＤ値とエンド位置のＡＤ値を実測する。そして、前記実測したレスト位置のＡＤ値に対するエンド位置のＡＤ値の比率をキャリブレーション比として、ＲＯＭ２１或いはＲＡＭ２２等適宜のメモリ（例えばフラッシュメモリ等の不揮発性メモリ）内に記録する。なお、キャリブレーション比の算出は８８個の各鍵毎に行われるものとする。
【００１８】
この実施例に係る自動演奏ピアノにおける通常の動作時（演奏データの録音や、再生など）の各種信号処理について説明する。
当該自動演奏ピアノにおいて通常の動作時（例えば、演奏データの生成処理や、演奏データの再生処理）には、信号処理部２７では、レスト位置や、エンド位置など、或る所定のハンマ動作位置を、ハンマ２の動作状態を把握するための参照位置として定め、各参照位置におけるＡＤ値の値を、演奏データの生成等の信号処理における各種判断に参照する閾値として利用する。すなわち、信号処理部２７は、前記閾値とリアルタイムに供給されるセンサ２６の出力に基づき、ハンマ２の動作状態（ストローク変位し始めたであるとか、打弦をしたであるとか等）を認識、把握するのである。この実施例において、前記参照位置としては、例えば、ハンマ２のレスト位置（ストローク量０ｍｍの位置）、エンド位置（レスト位置からのストローク量４８ｍｍ）、第１参照位置Ｍ１（前記エンド位置から８ｍｍ下がった位置）及び第２参照位置Ｍ２（前記エンド位置から０．５ｍｍ下がった位置）の４点が設定される。なお、第１参照位置Ｍ１と第２参照位置Ｍ２は、エンド位置に対する相対的な位置として規定されるものである。信号処理部２７は、前記閾値として利用するエンド位置等の或る所定のハンマ動作位置に相当するＡＤ値を、センサ２６で測定したレスト位置のＡＤ値とキャリブレーション比に基づく計算で求めている。
【００１９】
電源投入時、信号処理部２７は、センサ２６から供給されるＡＤ値とハンマ２の実際の動作位置とを対応付けるための「参照位置のパラメータ（参照値）」を設定する処理を行う。すなわち、所定の複数地点のハンマ動作位置が参照位置として予め設定されており、該参照位置を表すＡＤ値の値（数値）を参照値として記憶する。図３は、当該自動演奏ピアノにおいて、上記４点の参照位置に対応する各参照値を設定する処理の手順の一例を示す。なお、この処理は、８８個の各ハンマについて行うものであるが、ここでは或る１つのハンマ２についての処理により他を代表するものとする。
ステップＳ１において、自動演奏ピアノにおいて電源が投入されると、センサ２６によってハンマ２の現在位置をセンシングして、該センサ２６から出力されるＡＤ値を信号処理部２７に取り込む。電源投入直後には、鍵１は非押鍵状態にある、つまりハンマ２はレスト位置に位置しているものと想定できるので、ここで取り込んだＡＤ値は、当該ハンマ２のレスト位置に相当するデータとして参照される「レスト値Ｒ」としてＲＡＭ等適宜のメモリ内に記憶される。ステップＳ２では、前記ステップＳ１で取り込んだレスト値Ｒと前記キャリブレーション比を用いて、ハンマ２のエンド位置の参照値「エンド値Ｅ」を算出し、該算出したエンド値Ｅを前記ＲＡＭ等適宜のメモリ内に記憶する。
また、ステップＳ３では、キャリブレーション比を用いてハンマ２の第１参照位置Ｍ１及び第２参照位置Ｍ２に相当するデータとして参照される参照値「第１参照値ｍ１」及び「第２参照値ｍ２」を算出し、該算出した第１参照値ｍ１及び第２参照値ｍ２を該ＲＡＭ等適宜のメモリ内に書き込む。前記第１参照値ｍ１及び第２参照値ｍ２は、後述する当該ハンマの速度の算出処理や、打弦有無判定処理等に際して参照される。なお、鍵１をはじめとしてその他の可動部材についても同様に、電源投入時に、センサ出力から参照位置パラメータを設定しうる（ステップＳ４）。
【００２０】
図４は、信号処理部２７において実行されるハンマ速度を求めるルーチンの一例を示すフローチャートである。このルーチンは、例えば、演奏者による演奏操作時の演奏の記録処理（演奏データの生成処理）等において、当該自動演奏ピアノの通常の動作中の主要なルーチンの１つとして実行される。この処理は、８８個の各ハンマについて行うものであるが、ここでは或る１つのハンマ２についての処理のみ説明し、他を代表するものとする。図示の通り、このルーチンはステップＳ１０〜Ｓ１６の処理を所定の起動周期に従ってループするようになっている。
【００２１】
ステップＳ１０において、信号処理部２７では、センサ２６から時々刻々出力されるＡＤ値を当該ルーチンの１回の起動機会毎に取り込み、前記取り込んだＡＤ値をその時刻情報ＴＩＭＥと共にＲＡＭ等適宜のメモリ内に格納する。ここで、信号処理部２７は、ある時点から過去２０回分のサンプリング時点で取り込んだＡＤ値及びその時刻情報ＴＩＭＥからなるデータセットを格納しておき、これら２０個のデータセットから図５（ａ）に示すようなデータテーブルＴＡＢＬＥ１を作成する。テーブルＴＡＢＬＥ１には、図示の通り、過去２０回分のサンプリング点で取り込んだＡＤ値とその時刻情報のデータセットが順次記述されており、信号処理部２７では、テーブルＴＡＢＬＥ１により、所定時間内における時間的推移に応じたハンマの連続的な動作位置の情報を得る。
【００２２】
ステップＳ１１では、取り込んだＡＤ値からハンマ動作（つまり鍵操作）の有無の判定を行う。ハンマ動作の有無判定は、例えば、前述のレスト値Ｒを参照して、取り込まれたＡＤ値が非押鍵状態（レスト位置）から変位しているか否かによって判定できる。ハンマ動作（鍵操作）がなければ（ステップＳ１１のｎｏ）、処理は当該ルーチンの先頭に戻る。
【００２３】
一方、ハンマ動作（鍵操作）があれば（ステップＳ１１のｙｅｓ）、ステップＳ１２において、現時点で取り込まれたＡＤ値が第２参照値ｍ２を越えたかどうか、つまり、ハンマ２のストローク位置が第２の参照位置Ｍ２よりも上方に変位したかどうかを判定する。第２参照位置Ｍ２は、前述の通りエンド位置から０．５ｍｍ下がった位置である。これは、ハンマ２が打弦する位置（エンド位置）の直前の位置であり、この参照位置Ｍ２をハンマ２が超えれば、打弦が行われる（エンド位置に達する）だろうと推断しうる推定打弦位置として規定されている。よって、信号処理部２７では、ＡＤ値が該第２参照値ｍ２を越えた時点（つまり、ハンマ２が推定打弦位置を越えた時点）で「当該ハンマ２による打弦が有った」と推定することができる。このようにセンサ２６から出力されるＡＤ値と閾値に基づき打弦有無の推定を行うことは、ハンマ動作判断の、ハンマ実動作に対するリアルタイム性、すなわち、迅速な動作判断という点で有利である。この実施例においては、詳しくは後述するような判断構成によってキャリブレーション比の補正を行うことで、ステップ１２の打弦有無推定をより正確に行うことができるようになることが後段から明らかになる。
そして、ステップＳ１３では、前記ステップＳ１２での判断（現時点で取り込んだＡＤ値が参照値ｍ２を越えたかどうか？）に応じて、第１の打弦ステートｓｔ１の設定を行う。第１の打弦ステートｓｔ１は、ＡＤ値と参照値ｍ２による打弦有無推定の結果に応じて、「推定打弦」の有無の状態を識別する２状態のステートである。ＡＤ値が参照値ｍ２を越えていれば、第１の打弦ステートｓｔ１が「推定打弦有り」状態に設定される。なお、通常（すなわち、ステップＳ１２での参照値ｍ２越えが否の状態）では、第１の打弦ステートｓｔ１は非打弦（推定打弦無し）に設定されている。
【００２４】
ステップＳ１４では、図５（ａ）のテーブルＴＡＢＬＥ１を参照して、２０点のサンプリング時点のうちから、現時点からみて過去５点前のサンプリング時点においてハンマ２の動作向きが反転したかどうかを調べる。ハンマ２の動作が反転した時点は、テーブルＴＡＢＬＥ１に基づきＡＤ値の増減変化の状態から特定できる。ここで、説明の便宜上、当該ハンマ２がレスト値にあるときのＡＤ値の数値を最大値ＡＤ（ＭＡＸ）で表し、エンド位置にあるときのＡＤ値を最小値ＡＤ（ＭＩＮ）で表すものとすると、ハンマ２の一回の往復変位（つまりレスト位置からエンド位置に至り、そこから再びレスト位置に戻る変位）におけるＡＤ値の増減特性は、基本的には次の通りである。すなわち、ハンマ２の往路行程（レストからエンドに向かう動き）では、センサ２６から出力されるＡＤ値は、最大値ＡＤ（ＭＡＸ）から漸減変化し、ハンマ軌道の頂点（エンド位置相当）にて最小値ＡＤ（ＭＩＮ）になり、ハンマの復路行程（エンドからレストに戻る動き）では、該最小値ＡＤ（ＭＩＮ）から漸増変化してレスト位置にて最大値ＡＤ（ＭＡＸ）に戻る。すなわち、ＡＤ値の変動が減少から増加に転じた時点において、ハンマ２の動作向きが反転した時点と特定できる。
【００２５】
信号処理部２７は、当該ルーチンの起動機会毎に、テーブルＴＡＢＬＥ１を参照して、最新のサンプリング時点からみて過去５点前のサンプリング時点前後でのＡＤ値変動を調べておりハンマ２の動作が反転する時点を探している。そして、そのハンマ２の動作向きが反転した時点が特定されると、該特定された時点をハンマ移動のピーク（つまり打弦点）に相当する基準時点として、該基準時点から前後５点のサンプリング時点でのデータセットを抽出し、図５（ｂ）に示すようなデータテーブルＴＡＢＬＥ２を作成するのである。ここで、前記基準時点は、テーブルＴＡＢＬＥ１内の或るサンプリング時点（例えば最新のサンプリング時点）からみて過去５点前のサンプリング時点に相当するものであるから、テーブルＴＡＢＬＥ２は、該或るサンプリング時点から過去１１点のサンプリング時点におけるデータセットから構成される。
【００２６】
図５（ｂ）に示すように、テーブルＴＡＢＬＥ２には、前記１１点のサンプリング時点でのデータセット（「ＡＤ（−５）、ｔ（−５）」〜「ＡＤ（５）、ｔ（５）」）と、各時点での速度情報（「ｖ（−４）」〜「ｖ（５）」）及び加速度情報（「ａ（−４）」〜「ａ（４）」）が記述される。すなわち、ハンマ２の移動のピーク（打弦点）に相当する基準時点（ＡＤ（０），ｔ（０））と、この基準時点に対して時間的に前後５回分のサンプリング時点でにおける各データセットについて、夫々速度情報と加速度情報を求めている。各時点での速度情報は、例えば直線近似により、任意の２点間のデータ（例えば、あるサンプリング時点でのデータセットとその１つ前のサンプリング時点でのデータセット）の差分に基づき算出することができる。また、算出した速度情報を微分演算することで、加速度情報を求めることができる。なお、速度情報及び加速度情報の算出の具体的な方法については、上述の例に限らず、従来から知られるいかなる方法を適用しても差し支えない。なお、速度情報の算出は、任意の２点間のデータの差分に基づき比較的簡単に求めることができるので、テーブルＴＡＢＬＥ２の作成に先立って、例えば前述のステップＳ２０において当該テーブルＴＡＢＬＥ１を作成する際に算出しておいてもよい。テーブルＴＡＢＬＥ１を作成する際に各時点での速度情報を算出しておけば、ステップＳ２５でのハンマ２の動作反転の判別に速度情報を利用することも可能である。
【００２７】
さて、ステップＳ１４において、ハンマ２の動作向きの反転があれば（ステップＳ１４のｙｅｓ）、ステップＳ１５において、後述の図６に示すサブルーチン「打弦判定処理」を実行する。一方、ハンマ２の動作向きの反転がなければ（ステップＳ１４のｎｏ）、先頭のステップＳ１０に戻り上述した処理を繰り返す。
そして、ステップＳ１６では、前記第１の打弦ステートｓｔ１及び後述する「打弦判定処理」において設定する第１の打弦ステートｓｔ２に基づき、キーオン／オフ（発音指示）信号の生成処理等、その他処理を行う。キーオン／オフ信号は、キーナンバ及びベロシティデータ（打弦速度）を含む演奏データであって、例えばＭＩＤＩ形式等のデータフォーマットで構成されてよい。
【００２８】
次に、上記図４のステップＳ１５における「打弦判定処理」の手順の一例を図６に示すフローチャートを参照して説明する。先ず、ステップＳ２０において、前記図５（ｂ）に示すテーブルＴＡＢＬＥ２を参照して、ハンマ２によって実際に打弦が行われたかどうかの判定を行う。この打弦判定においては、該テーブルＴＡＢＬＥ２における基準時点（ＡＤ（０），ｔ（０））から、ハンマ２が弦に近接動作する際（打弦前）の速度情報及び加速度情報と、ハンマ２が弦から離間動作する際（打弦後）の速度情報及び加速度情報と、次に述べる判定条件に照合して、ハンマ２によって実際に打弦がなされたかどうかを事後的に判定する。
【００２９】
ステップＳ２０における打弦判定の条件は以下の通りである。
（１）確実に打弦したと判定する条件：基準時点（ＡＤ（０），ｔ（０））での速度情報ｖ（０）、及び、基準時点の直前の時点（ＡＤ（−１），ｔ（−１））での速度情報ｖ（−１）、及び、基準時点よりも２サンプリング時点前先行した時点（ＡＤ（−２），ｔ（−２））での速度情報ｖ（−２）を調べ、速度情報ｖ（０）、ｖ（−１）及びｖ（−２）の中に、所定速度（例えばｖ＝０.３ｍ／ｓ）以上のものがあるかどうかを調べる。これにより、弦４に対して近接するハンマ２の打弦直前の運動状態の時間的推移を調べ、ハンマ２が打弦を行うのに十分な所定速度（例えばｖ＝０.３ｍ／ｓ以上）で運動していたのであれば、確実に打弦有りと判断することができる。
（２）打弦した可能性が高いと判定する条件：基準時点（ＡＤ（０），ｔ（０））での加速度情報の絶対値ａ（０）、並びに、該基準時点の前後３回分のサンプリング時点（「ＡＤ（−３），ｔ（−３）」〜「ＡＤ（３），ｔ（３）」）での各加速度情報の絶対値ａ（−３）〜絶対値ａ（３）を調べることで、打弦直前に弦４に対して接近するハンマ２の運動状態と、打弦後に弦４に対して離間するハンマ２の運動状態とを調べる。ここで、基準時点での加速度情報の絶対値ａ（０）が各加速度情報の絶対値ａ（−３）〜絶対値ａ（３）の中で最大であれば、当該ハンマ２の運動によって打弦が行われた可能性が高いと判断できる。
（３）非打弦の可能性が高いと判定する条件：前記（２）の判定条件に適合しないこと、つまり、各加速度情報の絶対値ａ（−３）〜絶対値ａ（３）の中に基準時点での加速度情報の絶対値ａ（０）よりも大きい値があること、及び／又は、複数の速度情報から得られる２次曲線に適合させる２次曲線適合法によって求めた基準時点における速度情報ｖ（０）が「０」に近い値である場合は、当該ハンマ２の運動によっては、打弦が行われなかった可能性が高いと判断できる。
【００３０】
ステップＳ２１では、前記ステップＳ２０での判定結果に応じて、当該ハンマ２の動作状態（打弦有無）を表す第２の打弦ステートｓｔ２を設定する。第２の打弦ステートｓｔ２は、単純に打弦有り（前記条件（１）又は（２）に適う場合）か、打弦無し（前期条件（３）の場合）かを表現するものであってよい。勿論前記条件（１）〜（３）の夫々に応じて、（１）確実に打弦、（２）打弦の可能性大及び（３）非打弦の可能性大、の３状態を表現してもよい。
【００３１】
ステップＳ２２では、前記図４のステップＳ１３で設定した第１の打弦ステートｓｔ１と、前記第２の打弦ステートｓｔ２とを比較して、双方が示す状態（打弦有無）が一致するかどうかを調べる。不一致であった場合（ステップＳ２２のｙｅｓ）、処理をステップＳ２３に進めて、図７を参照して説明するサブルーチン「補正処理」を行う。一方、第１のステートｓｔ１と第２のステートｓｔ２が一致していれば（ステップＳ２２のｎｏ）、打弦判定ルーチンを抜けて、前記図４のハンマ速度を求めるルーチンに戻る。
【００３２】
図７を参照して補正処理の手順の一例について説明する。
ステップＳ３０において、両打弦ステートｓｔ１、ｓｔ２の不一致が、以下に述べるいずれのケースに相当するかを判別し、各ケースに応じた補正処理を行う。
（ケース１）打弦ステートｓｔ１では非打弦と推定しながらも、打弦ステートｓｔ２では打弦有りの判定がなされた場合：打弦ステートｓｔ１では非打弦と推定しながらも、実際には打弦動作が行われているので、打弦ステートｓｔ１の根拠となる参照位置パラメータとして設定されたエンド値Ｅが実際のエンド位置よりも高く想定されてしまっていると考えられる。この場合、発音が有ってもキーオン信号が出ない、所謂「音抜け」の問題が生じる。ケース１の場合は、ステップＳ３１において、テーブルＴＡＢＬＥ２にて基準時点として設定された時点でのＡＤ値「ＡＤ（０）」を新規エンド値Ｅとして設定して、この新規エンド値Ｅと現在のレスト値Ｒとの比を求めることで、当該ハンマ２のキャリブレーション比αを更新する。キャリブレーション比αを更新したら、新規キャリブレーション比から推定打弦位置の閾値（参照値ｍ２）等の各種パラメータ各種パラメータ（各参照値など）を再算出する。
（ケース２）打弦ステートｓｔ１では打弦と推定しながらも、打弦ステートｓｔ２では打弦無しの判定がなされた場合：打弦ステートｓｔ１では打弦と推定しているものの、実際には打弦動作は行われていないので、参照位置パラメータとして設定されたエンド値Ｅが実際のエンド位置よりも低く想定されてしまっていると考えられる。この場合、発音しないにも関わらずキーオン信号を出してしまうというった、所謂「音鳴り」の問題が生じる。このケース２の場合は、ステップＳ３２において、テーブルＴＡＢＬＥ２にて基準時点として設定された時点でのＡＤ値「ＡＤ（０）」に対して、所定数値加算した値を新規エンド値Ｅとして設定して、この新規エンド値Ｅと現在のレスト値Ｒとの比を求めることで、当該ハンマ２のキャリブレーション比を更新する。キャリブレーション比を更新したら、新規キャリブレーション比から推定打弦位置の閾値（参照値ｍ２）等の各種パラメータ（各参照値等）を再算出する。そして、当該補正処理のルーチンを抜けて、前記図４に示すルーチンに戻る。
【００３３】
上述の補正処理において、自動演奏ピアノでの演奏動作中にリアルタイムでセンサ２６から出力されたＡＤ値を基にキャリブレーション比を適切な値に補正することで、新規キャリブレーション比に基づき、打弦推定位置に相当する閾値（第２の参照値Ｍ２）をより適切な値に設定しなおすことができる。従って、例えば経時変化によりアクションメカニズムの相対位置が変動し、キャリブレーション比が変わってしまった場合にも、キャリブレーション比をリアルタイムで補正することができ、連続量センサ２６からの出力値（位置情報）と推定打弦位置とに基づく打弦有無推定をより正確に行えるようになる。
【００３４】
信号処理部２７において実行されるハンマ速度を求めるルーチンにおける打弦判定構成や、速度算出構成等は上述の図４に示す例に限定されない。以下に、ハンマ速度を求めるルーチンの上記とは別の実施例について説明する。
【００３５】
図８は、信号処理部２７において実行するキーオン検出処理（ハンマの速度を求めるルーチン（図４）の別の実施例）の手順の一例を示すフローチャートである。なお、この処理は、８８個の各鍵（各ハンマ）について個別に行うものであるが、ここでは或る１つの鍵（ハンマ２）についての処理のみ説明し、これをもって他を代表するものとする。
【００３６】
このルーチンは、例えば、演奏者による演奏操作時の演奏の記録処理（演奏データの生成処理）等における主要なルーチンの１つとして実行されるもので、所定の起動周期（例えば０．３６ｍｓ毎：２．７８ｋＨｚ）で起動する。すなわち、ステップＳ５０において、該所定の起動周期（例えば０．３６ｍｓ）毎に、センサ２６の出力（ＡＤ値）を取り込む。ステップＳ５１では、前記取り込んだＡＤ値に「オフセット値」を加算する処理を行う。前記オフセット値は、センサ２６の出力特性におけるオフセット（ここで、オフセットは、出力（ＡＤ値）＝０の時にフォトダイオードによって取り出される電圧に相当する）であり、センサ２６の出力に該オフセット値を加算することでセンサ２６の出力特性を修正する。オフセット値は、各センサ毎に固有の値を予め求めたものを、ＲＯＭ２１、ＲＡＭ２２など適宜の記憶装置に記憶させておいてよい。オフセット値によってセンサ２６の出力特性を修正することで、ハンマ２の変位に応じた物理量をより確実に検出できる。
【００３７】
ステップＳ５２では、前述図４のステップＳ１１と同様に、取り込んだＡＤ値と参照値として記憶されたレスト値Ｒを比較して、ハンマ動作（つまり鍵操作）の有無の判定を行う。ハンマ動作（鍵操作）がなければ（ステップＳ５２のｎｏ）、処理は当該ルーチンの先頭に戻る。ステップＳ５３では、現在のタイミングで取り込んだＡＤ値と第１の参照位置Ｍ１を表す閾値（参照値ｍ１）を比較し、該ＡＤ値が参照値ｍ１より大きい（すなわち、ハンマ２の動作位置が参照位置Ｍ１に達していない）場合（ステップＳ５３のｎｏ）は、処理をリターンする。一方、現在のタイミングで取り込んだＡＤ値が参照値ｍ１より小さい（すなわち、ハンマ２の動作位置が参照位置Ｍ１を越えた）場合（ステップＳ５３のｙｅｓ）、ステップＳ５４において、該現在タイミングのＡＤ値が前回取り込んだＡＤ値から変化したかどうかを調べて、ＡＤ値が前回の値から変化していれば（ステップＳ５４のｙｅｓ）、ステップＳ５５において、該現在タイミングで取り込んだＡＤ値と、その時の時刻情報を、図５（ａ）に示すデータテーブルＴＡＢＬＥ１にバッファする。上述の図４に示す「ハンマ速度を求めるルーチン」では、テーブルＴＡＢＬＥ１は、ある時点で取り込んだＡＤ値から過去２０回のサンプリング時点のＡＤ値及びそれらの時刻情報ＴＩＭＥからなる２０個のデータセットを取り込んで構成されるものとしたが、当該別の実施例では、テーブルＴＡＢＬＥ１は、ＡＤ値が参照値ｍ１以下（ハンマの動作位置が参照位置Ｍ１に到達）であり、且つ、前回の値から変化した値についてデータのバッファを行うことで作成される。なお、現在のタイミングで取り込んだＡＤ値が前回のサンプリングタイミングで取り込んだＡＤ値から変化していない場合（ステップＳ５４のｎｏ）は、ステップＳ５５におけるテーブルＴＡＢＬＥ１へのＡＤ値の取り込み処理は行わない。
【００３８】
ステップＳ５６、Ｓ５７では、現在のタイミングで取り込んだＡＤ値が参照値ｍ１を超えた時点からタイマカウンタＣＮＴのカウントを開始させる処理を行う。すなわち、ＡＤ値が参照値ｍ１より小さく（ハンマの動作位置が参照位置Ｍ１を越え）、且つ、タイマカウンタＣＮＴがカウント中ではない場合（ステップＳ５６のｎｏ）、ステップＳ５７においてタイマカウンタＣＮＴのカウントを開始する。タイマタウンタＣＮＴは、後述する速度算出のための判断条件として参照するパラメータの一つである。
【００３９】
ステップＳ５８では、現在のタイミングで取り込んだＡＤ値と第２の参照位置Ｍ２（エンド位置から０・５ｍｍ下の打弦直前位置）を表す閾値（参照値ｍ２）を比較して、ハンマのストローク位置が第２の参照位置Ｍ２に達したかどうかを判断する。現在のタイミングで取り込んだＡＤ値が参照値ｍ２を超えていれば（ステップＳ５８のｙｅｓ）、ステップＳ５９において、推定打弦有無を表す前記打弦ステートｓｔ１を推定打弦有りに設定する。なお、前述のように打弦ステートｓｔ１は通常は打弦無しの状態にセットされているものである。ステップＳ６０では、キーオン信号出力有無を表示するフラグ「キーオンフラグＦＫＯＮ」を調べて、キーオン信号の出力が既に出ているかどうかを調べる。キーオンフラグＦＫＯＮは、ＦＫＯＮ＝１でキーオン信号の出力有り、ＦＫＯＮ＝０でキーオン信号の出力指示なし、を示す２状態フラグである。キーオン信号が未だ出ていなければ（ステップＳ６０のｙｅｓ：ＦＫＯＮ≠１）、ステップＳ６１以下のハンマ速度を求める処理を行う。
【００４０】
ステップＳ６１〜Ｓ６６では、第１の参照位置Ｍ１から第２の参照位置Ｍ２の区間を移動するハンマ２の動きに基づきハンマ２の速度情報（ベロシティデータ：Ｖ値）を算出する処理を行う。
ステップＳ６１では、タイマカウンタＣＮＴのカウント値が１０ｍｓ以上か以下を調べる。前述の通りタイマカウンタＣＮＴは、現在ＡＤ値が参照値ｍ１を超えた時点からカウント開始するものであるから、ステップＳ６１でタイマカウンタＣＮＴのカウント値が１０ｍｓ以上か以下を調べることで、ハンマ２の位置が第１の参照位置Ｍ１から第２の参照位置Ｍ２の区間を移動するのにかかった時間が１０ｍｓ以上か以下が分かる。カウンタＣＮＴが１０ｍｓ以下の場合はステップＳ６２に進み、カウンタＣＮＴが１０ｍｓ以上の場合はステップＳ６３に進む。
【００４１】
カウンタＣＮＴが１０ｍｓ以下の場合はステップＳ６２において、参照位置Ｍ１から第２の参照位置Ｍ２の区間に含まれるＡＤ値及び時刻情報を、当該区間のハンマ軌道を得るためのサンプリングポイントとして抽出する。また、カウンタＣＮＴが１０ｍｓ以上の場合はステップＳ６３において、第２の参照位置Ｍ２を越えた時点から過去１０ｍｓの時間区間に含まれるＡＤ値及び時刻情報を、当該時間区間のハンマ軌道を得るためのサンプリングポイントとして抽出する。そして、ステップＳ６４では、上記ステップＳ６２又は６３において抽出した複数個のサンプリングポイントを、例えば多項式適合法等により補間し、これを時間間隔Δｔで等サンプリング化することで、Ａ０〜Ａ４の５点の等サンプリングポイントを抽出する。前記Ａ０〜Ａ４の５点の等サンプリングポイントが、速度計算に使用するサンプリングポイントである。このように、この実施例では、所定のハンマストローク区間（Ｍ１〜Ｍ２）のデータ或いは所定の時間区間（Ｍ２から過去１０ｍｓ）のデータを利用してハンマ２の速度情報（ベロシティデータ：Ｖ値）を求めている。
図９（ａ）、（ｂ）は、ステップＳ６２〜Ｓ６４において行われるハンマ２の速度の算出用の等サンプリングポイントの抽出の概念図である。図において、横軸に時間ｔを取り、ハンマ軌道を得るためのサンプリングポイントとして抽出されたＡＤ値を黒丸で示し、等サンプリングポイントを星印で示す。（ａ）はステップＳ６２に相当し、（ｂ）はステップＳ６３に相当する。（ａ）に示すように、ステップＳ６２においては、参照位置Ｍ１から第２の参照位置Ｍ２の区間に含まれるＡＤ値及び時刻情報によって表現されたハンマ２の軌道を、時間間隔Δｔで４区間に区切り、Ａ０〜Ａ４の５点の等サンプリング点を、速度計算に使用するポイントとして抽出する。一方、（ｂ）に示すように、ステップＳ６３においては、第２の参照位置Ｍ２を越えた時点から過去１０ｍｓの区間に含まれるＡＤ値及び時刻情報によって表現されたハンマ２の軌道を、等時間間隔Δｔで４区間に区切り、Ａ０〜Ａ４の５点の等サンプリング点が、速度計算に使用するポイントとして抽出される。
【００４２】
ステップＳ６５では、前記抽出した５点の等サンプリング点Ａ０〜Ａ４と、時間間隔データΔｔにより図９（ｃ）に示すテーブルＴＡＢＬＥ１−２を作成する。（ｃ）に示すようにテーブルＴＡＢＬＥ１−２は、等サンプリング化された５つのＡＤ値ＡＤ[０]〜ＡＤ[４]とその時間間隔データΔｔによって構成される。ステップＳ６６では、前記テーブルＴＡＢＬＥ１−２に基づきハンマ２の速度情報（ベロシティデータ：Ｖ値）を算出する。テーブルＴＡＢＬＥ１−２に基づきハンマ２の速度を算出する方法は、例えば、下記関数式（１）を用いる方法がある。
式（１）（２*ＡＤ[０]＋ＡＤ[１]−ＡＤ[３]−２＊ＡＤ[４]）/１０＊１/Δｔ＊α
なお、上記式においてαはＡＤ値を物理量に換算するため（単位合わせ）の重み付け係数である。
【００４３】
ステップＳ６７では、前記ステップＳ６６において算出したＶ値を所定の速度閾値Ｖthと比較することで、速度条件に基づく打弦判定（キーオン判定）を行う。前記速度閾値Ｖthは、例えばＶth＝０．４ｍ／ｓ等である。所定の速度閾値Ｖthとの比較で非打弦の判定がされれば（ステップＳ６７のｎｏ）、ここではキーオンの出力を行わずに、ステップＳ７０以下の処理に進む。
該所定の速度閾値Ｖthとの比較により打弦有りと判定されれば（ステップＳ６７のｙｅｓ）、ステップＳ６８において、キーオン信号ＫＯＮ及び前記算出したＶ値を出力し、ステップＳ６９において、キーオンフラグＦＫＯＮをＦＫＯＮ＝１にセットする。
【００４４】
ステップＳ７０では、前述した図４のステップＳ１４と同様に、図５（ａ）のテーブルＴＡＢＬＥ１を参照して現時点からみて過去５点前のサンプリング時点においてハンマ２の動作向きが往路（打弦）行程から復路（離弦）行程に反転したかどうかを調べる。ハンマ２の動作向きの反転があれば（ステップＳ６９のｙｅｓ）、ステップＳ７１において、サブルーチン「打弦判定処理」を実行する。打弦判定処理の手順の一例を図１０に示す。
【００４５】
図１０において、ステップＳ８０では、図５（ｂ）に示すテーブルＴＡＢＬＥ２に基づき打弦判定を行う。テーブルＴＡＢＬＥ２の作成及び該テーブルＴＡＢＬＥ２に基づく打弦判定の詳細は前述図６に説明したものと同様であってよく、ここではその説明を省略する。ステップＳ８１において、前記ステップＳ８０での打弦判定結果に基づき打弦ステートｓｔ２を１又は０に設定する。なお、打弦ステートｓｔ２は前述と同様にｓｔ２＝１で打弦。ｓｔ２＝０で非打弦を表すものとする。
【００４６】
ステップＳ８２において、打弦ステートｓｔ２、Ｖ値（図８のステップＳ６６で算出したもの）及びキーオンフラグＦＫＯＮを調べ、夫々ｓｔ２＝１（打弦有り）でありながら、Ｖ＜Ｖth（Ｖ値が速度閾値Ｖthを越えていない）及びキーオンフラグＦＫＯＮ＝０（キーオン出力せず）であるかどうかを調べる。これにより、上記ステップＳ６７の速度閾値の条件では非打弦と判定された場合であっても、テーブルＴＡＢＬＥ２に基づく打弦有りの判定が出た場合（ステップＳ８２のｙｅｓ)は、以下の処理によりキーオンＫＯＮを出力するのである。すなわち、ステップＳ８３において、前記のテーブルＴＡＢＬＥ１−２を作成して５点の等サンプリング点Ａ０〜Ａ４のＡＤ値（ＡＤ[０]〜ＡＤ[４]）を抽出し、ステップＳ８４において、前記ステップＳ６６と同様に、該抽出したＡＤ[０]〜ＡＤ[４]に基づきハンマ速度（Ｖ値）を算出する。そして、ステップＳ８５において、キーオン信号ＫＯＮ及び前記算出したＶ値を出力し、キーオンフラグＦＫＯＮをＦＫＯＮ＝１にセットする。
【００４７】
ステップＳ８６では、前記図８のステップＳ５９で設定した第１の打弦ステートｓｔ１と、前記ステップＳ８１において設定した第２の打弦ステートｓｔ２とを比較して、双方が示す状態（打弦有無）が一致するかどうかを調べる。不一致であった場合（ステップＳ８６のｙｅｓ）、ステップＳ８７において「補正処理」を行う。補正処理は前述の図７を参照して説明した処理と同様である。第１のステートｓｔ１と第２のステートｓｔ２が一致していれば（ステップＳ８６のｎｏ）、打弦判定ルーチンを抜けて、前記図８のキーオン検出処理に戻る。
【００４８】
さて、図８に戻ると、ステップＳ７２において、前記ステップＳ５９で設定した第１の打弦ステートｓｔ１と、前記ステップＳ８１において設定した第２の打弦ステートｓｔ２とを調べて、第１の打弦ステートｓｔ１が非打弦（ｓｔ１＝０）且つ第２の打弦ステートｓｔ２が打弦（ｓｔ１＝０）であれば（ステップＳ７２のｙｅｓ）、キーオンＫＯＮの出力処理を行う。すなわち、ステップＳ７３において、上記ステップＳ６１〜Ｓ６６と同様な処理によりハンマ速度（Ｖ値）を求め、ステップＳ７４においてキーオン信号ＫＯＮ及び前記算出したＶ値を出力し、ステップＳ７５においてキーオンフラグＦＫＯＮをＦＫＯＮ＝１にセットする。
なお、当該キーオン検出処理は、上記の処理の後、その他処理（ステップＳ７６）を適宜実行し、リターンする。
【００４９】
以上の手順により、当該キーオン検出処理（ハンマ速度を求めるルーチン）では、打弦前のハンマの近接動作と、打弦後のハンマの離間動作とを考慮して、より正確なキーオンの検出（＝ＭＩＤＩデータの出力）が可能となる。
【００５０】
以上説明した通り、図８〜図１０に示す実施例によれば、打弦前の往路行程でのハンマの速度（Ｖ値）を利用したキーオンの出力と、打弦後の復路行程でのハンマ速度（Ｖ値）を利用したキーオンの出力とを行うことで、可及的リアルタイム性を確保した判断で、且つ、より信頼性の高い発音指示（キーオン）信号の出力が行えるようになるという優れた効果を奏する。
【００５１】
なお、上述の実施例では、所定の動作位置（第１の参照位置Ｍ１、第２の参照位置Ｍ２）に基づく演奏状態の判別は、ハンマ２の動作位置について行う例を示したが、これに限らず、鍵１その他演奏操作にリンクする部材に、動作検出用のセンサを設け、それらの部材において、適宜の動作位置を閾値として定め、それにより演奏状態の判別を行ってもよい。鍵１その他演奏操作にリンクする部材の動作位置に基づく演奏状態の判別の場合であっても、演奏状態の判別は、結果としてハンマが所定の位置に達したかどうかに関わる。   また、上記実施例では、センサ２６を、ハンマのストローク位置を検出する位置センサとして構成したが、これに限らず、センサ２６を速度センサ或るは加速度センサとしてもよい。また、位置情報、速度情報及び加速度情報の各情報を夫々独立したセンサによって別々に検出するように構成してもよい。
【００５２】
また、上記の実施例では、ハンマ速度を求めるルーチンなどの種々の信号処理（つまり信号処理部２７の動作）は、コンピュータが実行するソフトウェアプログラムによって構成及び実施されるものとしたが、これに限らず、信号処理部２７を構成する各モジュールが担う各種演算処理を実行する専用のハードウェア的信号処理装置を具備し、該各モジュールの各種機能をハードウェア装置として構成及び実現することも可能である。また、上記実施例では、自動演奏ピアノとして、自動演奏機能及び演奏操作記録機能を有するアコースティックピアノについて説明したが、ここでアコースティックピアノは、グランドピアノ或いはアップライトピアノの何れであっても差し支えない。また、この発明は、自動演奏ピアノに限らず、消音ピアノに適用することもできる。また、アコースティックピアノに限らず、電子ピアノ等のその他各種鍵盤楽器にも適用可能である。
【図面の簡単な説明】
【００５３】
【図１】この発明の一実施例に係る自動演奏ピアノの全体構成を示す図。
【図２】同実施例に係る自動演奏ピアノの電気的ハードウェア構成を示すブロック図。
【図３】同実施例に係る自動演奏ピアノにおいて電源投入時に実行される処理例を示すフロー。
【図４】同実施例に係る自動演奏ピアノにおける主な動作として実行されるハンマ速度を求めるルーチンの一例を示すフロー。
【図５】（ａ）はハンマ動作の時間的推移を表すデータテーブルＴＡＢＬＥ１の一例を示す図であり、（ｂ）は前記テーブルＴＡＢＬＥ１に基づき作成される打弦直前のハンマの運動状態の時間的推移を表すデータテーブルＴＡＢＬＥ２の一例を示す図。
【図６】同実施例に係る打弦判定処理の一例を示すフローチャート。
【図７】同実施例に係る打弦判定のための補正処理例を示すフローチャート。
【図８】この発明の上記とは別の実施例に係るハンマ速度を求めるルーチンであって、キーオンの出力判定の別構成例を示すフローチャート。
【図９】（ａ）、（ｂ）は、同別の実施例に係るハンマ速度の算出用の等サンプリングポイントの抽出の概念図であり、（ｃ）は別の実施例に係るテーブルＴＡＢＬＥ１−２の構成例を示す図。
【図１０】同別の実施例に係る打弦判定処理の一例を示すフローチャート。
【符号の説明】
【００５４】
１  鍵、２  ハンマ、３  アクションメカニズム、４  弦、５  電磁ソレノイド、６  ダンパ、７  バックチェック、１０  再生前処理部、１１  モーションコントローラ、１２  サーボコントローラ、１３  電子楽音発生部、２０  ＣＰＵ、２１  ＲＯＭ、２２  ＲＡＭ、２３  記憶装置、２４  Ｉ／Ｏ、２５  ＰＷＭ発生器、２６  センサ、２７  信号処理部、２８  算出部、３０  処理部
【図１】
0004626241.tif 000002
【図２】
0004626241.tif 000003
【図３】
0004626241.tif 000004
【図４】
0004626241.tif 000005
【図５】
0004626241.tif 000006
【図６】
0004626241.tif 000007
【図７】
0004626241.tif 000008
【図８】
0004626241.tif 000009
【図９】
0004626241.tif 000010
【図１０】
0004626241.tif 000011