(57)【特許請求の範囲】
【請求項１】
操作子の操作によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する操作速度情報出力方法であって、
前記第１の操作検出手段の、第１の状態から第２の状態への変化を検出して時間測定を開始する第１検出過程と、
該第１検出過程の後に、前記第１の操作検出手段の、前記第２の状態から前記第１の状態への変化を検出する第２検出過程と、
該第２検出過程の後に、前記第１の操作検出手段の、前記第１の状態から前記第２の状態への変化を検出すると、前記第１検出過程において開始された時間測定をクリアして再度時間測定を開始する第３検出過程と、
該第３検出過程の後に、前記第２の操作検出手段の状態変化を検出する第４検出過程と、
前記第４検出過程における時間測定結果に基づいて前記操作速度情報を出力する出力過程と
を有することを特徴とする操作速度情報出力方法。
【請求項２】
操作子の操作によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する操作速度情報出力装置であって、
前記第１の操作検出手段の、第１の状態から第２の状態への変化を検出して時間測定を開始する第１検出手段と、
該第１検出手段が前記時間測定を開始した後に、前記第１の操作検出手段の、前記第２の状態から前記第１の状態への変化を検出する第２検出手段と、
該第２検出手段が前記第２の状態から前記第１の状態への変化を検出した後に、前記第１の操作検出手段の、前記第１の状態から前記第２の状態への変化を検出すると、前記第１検出手段において開始された時間測定をクリアして再度時間測定を開始する第３検出手段と、
該第３検出手段によって前記時間測定が再度開始された後に、前記第２の操作検出手段の状態変化を検出する第４検出手段と、
前記第４検出手段が前記第２の操作検出手段の状態変化を検出した際の時間測定結果に基づいて前記操作速度情報を出力する出力手段と
を有することを特徴とする操作速度情報出力装置。
【請求項３】
操作子の操作によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する処理をコンピュータに実行させるプログラムを記録した記録媒体であって、前記プログラムは、
前記第１の操作検出手段の、第１の状態から第２の状態への変化を検出して時間測定を開始する第１検出過程と、
該第１検出過程の後に、前記第１の操作検出手段の、前記第２の状態から前記第１の状態への変化を検出する第２検出過程と、
該第２検出過程の後に、前記第１の操作検出手段の、前記第１の状態から前記第２の状態への変化を検出すると、前記第１検出過程において開始された時間測定をクリアして再度時間測定を開始する第３検出過程と、
該第３検出過程の後に、前記第２の操作検出手段の状態変化を検出する第４検出過程と、
前記第４検出過程における時間測定結果に基づいて前記操作速度情報を出力する出力過程と
を前記コンピュータに実行させるプログラムを記憶したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器の操作状態の検出に用いられる操作速度情報出力方法、操作速度情報出力装置および記録媒体に関し、特に鍵の操作状態の検出に用いて好適な操作速度情報出力方法、操作速度情報出力装置および記録媒体に関する。
【０００２】
【従来の技術】
従来より、電子鍵盤楽器等に用いられる鍵には、鍵速度等を検出するために、複数箇所の鍵位置を検出するセンサが設けられている。センサを機械式接点によって構成する場合には、例えば鍵を押下するに従って順次オン状態になる第１および第２接点が設けられ、両接点がオン状態になる間隔を測定することによって押鍵速度を検出することができ、両接点がオフ状態になる間隔を測定することによって離鍵速度を検出することができる。
【０００３】
近年、鍵盤の製造コストを抑えるとともに精度を確保するために、弾性変形する部材によって接点を構成する技術が提案されている（特開平８−２３５９５２号公報）。その一例を図８を参照し説明する。同図(a)は接点部分の縦断面図、(b)は平面図を示す。この例においては、可動接点側の構成は、押圧部２９の先端に形成された第１可動接点２５と、円筒状に連続したドーナツ形の第２可動接点２６とから構成されている。また、固定接点６は、実質上十字形の放射状パターンであって、中央の内パターン１と、外側の外パターン２と、その中間の共通パターン３とをそれぞれ所定の間隔を隔てて形成したものである。
【０００４】
内パターン１と共通パターン３とにより内ペア４が構成され、外パターン２と共通パターン３とにより外ペア５が構成されている。各パターン１、２、３はそれぞれ接点端子部Ｔ１、Ｔ２、Ｔ３を介して外部配線パターンに接続され、これを通して内パターン１および外パターン２は抵抗を介してアースに接続され、共通パターン３は電源電圧Ｖに接続される。内パターン１および外パターン２は電圧検出回路（図示しない）に連結され、例えば各種楽音制御に利用される。
【０００５】
このような構成の２メイクスイッチ２７において、押圧部２９を押圧してスイッチを押し下げると、まず中央の円形第１可動接点２５が内ペア４に当接し、接点端子Ｔ１、Ｔ３間を閉成する。さらにスイッチを押し下げることにより、ドーナツ形第２可動接点２６が内パターン１、外パターン２および共通パターン３のすべてに跨がって当接して、外ペア５の接点端子Ｔ１、Ｔ２間を閉成するとともに、第１可動接点により閉成されている接点端子Ｔ１、Ｔ３間をさらに閉成する。
【０００６】
【発明が解決しようとする課題】
しかし、上述したように弾性変形する部材を接点に用いた場合には、接点部分の複雑な挙動によって、従来では考えられなかったような態様のチャタリングが発生する。この発明は上述した事情に鑑みてなされたものであり、チャタリングが発生しても支障なく、正確な操作検出を可能とする操作速度情報出力方法、操作速度情報出力装置および記録媒体を提供することを目的としている。
【０００７】
【課題を解決するための手段】
上記課題を解決するため本発明にあっては、下記構成を具備することを特徴とする。なお、括弧内は例示である。
請求項１記載の構成にあっては、操作子の操作（押鍵）によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する操作速度情報出力方法であって、前記第１の操作検出手段の、第１の状態（オフ状態）から第２の状態（オン状態）への変化（図４(c)の第１接点の最初のオン）を検出して時間測定を開始する第１検出過程と、該第１検出過程の後に、前記第１の操作検出手段の、前記第２の状態（オン状態）から前記第１の状態（オフ状態）への変化（図４(c)の第１接点の最初のオフ）を検出する第２検出過程と、該第２検出過程の後に、前記第１の操作検出手段の、前記第１の状態（オフ状態）から前記第２の状態（オン状態）への変化（図４(c)の第１接点の２回目のオン）を検出すると、前記第１検出過程において開始された時間測定をクリアして再度時間測定を開始する第３検出過程と、該第３検出過程の後に、前記第２の操作検出手段の状態変化（図４(c)の第２接点のオン）を検出する第４検出過程と、前記第４検出過程における時間測定結果に基づいて前記操作速度情報を出力する出力過程とを有することを特徴とする。
また、請求項２記載の構成にあっては、操作子の操作によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する操作速度情報出力装置であって、前記第１の操作検出手段の、第１の状態から第２の状態への変化を検出して時間測定を開始する第１検出手段と、該第１検出手段が前記時間測定を開始した後に、前記第１の操作検出手段の、前記第２の状態から前記第１の状態への変化を検出する第２検出手段と、該第２検出手段が前記第２の状態から前記第１の状態への変化を検出した後に、前記第１の操作検出手段の、前記第１の状態から前記第２の状態への変化を検出すると、前記第１検出手段において開始された時間測定をクリアして再度時間測定を開始する第３検出手段と、該第３検出手段によって前記時間測定が再度開始された後に、前記第２の操作検出手段の状態変化を検出する第４検出手段と、前記第４検出手段が前記第２の操作検出手段の状態変化を検出した際の時間測定結果に基づいて前記操作速度情報を出力する出力手段とを有することを特徴とする。
また、請求項３記載の構成にあっては、操作子の操作によって検出状態が変化する第１および第２の操作検出手段を用いて、これら第１および第２の操作検出手段の検出状態が変化する時間間隔に基づいて該操作子の操作速度情報を出力する処理をコンピュータに実行させるプログラムを記録した記録媒体であって、前記プログラムは、前記第１の操作検出手段の、第１の状態から第２の状態への変化を検出して時間測定を開始する第１検出過程と、該第１検出過程の後に、前記第１の操作検出手段の、前記第２の状態から前記第１の状態への変化を検出する第２検出過程と、該第２検出過程の後に、前記第１の操作検出手段の、前記第１の状態から前記第２の状態への変化を検出すると、前記第１検出過程において開始された時間測定をクリアして再度時間測定を開始する第３検出過程と、該第３検出過程の後に、前記第２の操作検出手段の状態変化を検出する第４検出過程と、前記第４検出過程における時間測定結果に基づいて前記操作速度情報を出力する出力過程とを前記コンピュータに実行させるプログラムを記憶したことを特徴とする。
【０００８】
【発明の実施の形態】
１．実施形態のハードウエア構成
次に、本発明の一実施形態の電子鍵盤楽器のハードウエア構成を図１を参照し説明する。
図において５２は鍵盤であり、複数の鍵が配列されている。各鍵には、図８において説明したように、押鍵に伴って最初にオン状態になる第１接点１０（1st Make）と、さらに深く押下された時にオン状態になる第２接点１２（2nd Make）とが設けられている。各接点は、例えば音名（Ｃ〜Ｂ）を一方の軸、オクターブ数を他方の軸とするダイオードマトリクス回路上に配置すると好適である。５４はキースキャンＣＰＵであり、鍵盤５２における各接点の状態を検出する。５６はＲＯＭであり、キースキャンＣＰＵ５４の制御プログラムが格納されている。５８はＲＡＭであり、バス６０を介してキースキャンＣＰＵ５４のワークメモリとして用いられる。
【０００９】
これらキースキャンＣＰＵ５４、ＲＯＭ５６、ＲＡＭ５８およびバス６０は、１個のＬＳＩ（ワンチップマイコン）上に実装される。６４はシステムＣＰＵであり、内部バス６２を介してキースキャンＣＰＵ５４から鍵操作状態（キーオン、キーオフおよびベロシティ等）を受信するとともに、バス７４を介して電子鍵盤楽器内の各部を制御する。６６はＲＯＭであり、システムＣＰＵ６４の制御プログラム、各種波形データ、楽音パラメータ等が記憶されている。６８はＲＡＭであり、システムＣＰＵ６４のワークメモリとして用いられる。７０は操作表示部であり、ユーザに対して各種情報を表示するとともに、各種動作モード等の設定を行うことが可能である。７２は音源部であり、システムＣＰＵ６４の指令に基づいて楽音信号を合成する。
【００１０】
２．実施形態のデータ構成
次に、図２を参照し、ＲＯＭ５６およびＲＡＭ５８に格納されるデータ構成について説明する。
同図(a)において、ＲＯＭ５６には、キースキャンＣＰＵ５４の制御プログラムを格納するＣＰＵプログラム領域５６２と、後述する様々なタイミング情報等を格納するプリセットデータ領域５６４とが設けられている。である。また、同図(b)において、ＲＡＭ５８の先頭部分にはＣＰＵワークエリア５８２が設けられ、その後にＴＤＣ用エリア５８４、ＭＡＳＫＴＭ用エリア５８６、ＲＴＲＧＴＭ用エリア５８８およびステータスレジスタ領域５９０が順次設けられている。
【００１１】
同図(b)においてＴＤＣ用エリア５８４は、鍵のベロシティを測定するために設けられたものであり、鍵の第１接点１０がオン状態になった後第２接点１２がオン状態になるまでの時間、換言すればタイマ割込みが発生した回数をカウントする時間差計測カウンタTDCが記憶される。また、本実施形態においては、キースキャンＣＰＵ５４がキーオン信号を送信した後、一定のマスク時間は当該鍵に係るキーオフ信号信号を送信することを禁止している。ＭＡＳＫＴＭ用エリア５８６には、このマスク時間をカウントするマスクタイマMASKTMが記憶される。
【００１２】
また、本実施形態においては、第１接点１０のオンオフ状態が頻繁に変化した場合は、最後に発生したオン状態への遷移を用いて各種制御を行うこととしている。例えば、第１接点１０がオン状態に遷移し、一旦オフ状態に遷移し、さらに２回目のオン状態に遷移した場合、オフ状態に遷移した後に２回目のオン状態に遷移した間隔が所定時間内であれば、２回目のオン状態のタイミングに基づいてベロシティの計算等が行われる。ＲＴＲＧＴＭ用エリア５８８には、かかる判定を行うために、タイマ割込みが発生する毎にカウントアップされるリトリガータイマRTRGTMが記憶される。
【００１３】
また、ＲＡＭ５８の終端部分にはステータスレジスタ領域５９０が設けられる。ここには、各鍵の状態を記憶するステータスレジスタSTATUSが設けられる。上記鍵盤５２内の各鍵には鍵番号Ｋn（Ｋｎ＝Ｋ1, …Ｋe）が付与されており、ステータスレジスタSTATUSは各鍵に対応して一対一に設けられている。そこで、鍵番号Ｋnに対応するステータスレジスタを「STATUS(Kn)」のように表記する。一方、上記時間差計測カウンタTDC、マスクタイマMASKTMおよびリトリガータイマRTRGTMは、全鍵の数より少ない数だけ設けられており、必要に応じて鍵番号Ｋnに対応して割り当てられる。そこで、これらについても、鍵番号Ｋnに対応させて「TDC(Kn)」、「MASKTM(Kn)」、「RTRGTM(Kn)」のように表記する。
【００１４】
次に、各ステータスレジスタSTATUS(Kn)の内容を同図(c)を参照し説明する。ステータスレジスタの第０ビット（最下位ビット）は、鍵の第１接点１０がオン状態であるか否かを示すビットであり、“１”がオン状態であることを示す。また、第１ビットは鍵の第２接点１２がオン状態であるか否かを示すビットであり、“１”がオン状態であることを示す。また、第２ビットはシステムＣＰＵ６４に対してキーオン信号を送信したか否かを示すビットであり、“１”が送信済みであることを示す。また、第３ビットはキーオフ・マスク状態すなわちキーオフの送信を禁止している状態であるか否かを示すビットであり、“１”がマスク状態（キーオフの送信を禁止している状態）であることを示す。
【００１５】
また、第４ビットは、ベロシティの計測中であるか否かを示すビットであり、“１”が計測中であることを示す。また、第５ビットはキーオフ・送信ミス状態であるか否かを示すビットであり、キースキャンＣＰＵ５４からシステムＣＰＵ６４へのキーオフ信号の送信が失敗した時に“１”に設定される。以後、本明細書においては、ステータスレジスタSTATUS(Kn)の内容を、第５ビット〜第０ビットの順に配列して“０１０００１”のように表記する。
【００１６】
３．実施形態の動作
３．１．休止状態
次に、本実施形態の動作を説明する。
まず、電子鍵盤楽器の電源が投入されると、キースキャンＣＰＵ５４において図５，図６に示すメインルーチンが実行される。図において処理がステップＳＰ２に進むと、所定の初期設定が行われ、鍵番号Ｋnが初期値すなわち「１」に設定される。次に、ステップＳＰ４〜ＳＰ１４においては、ステータスレジスタSTATUS(Kn)の内容に応じて処理が分岐される。まず、鍵番号Ｋnの鍵が離鍵されている状態ではステータスレジスタSTATUS(Kn)は“００００００”であるため、処理はステップＳＰ４を介してステップＳＰ１６に進む。
【００１７】
ここでは、鍵番号Ｋnの第１接点１０がオン状態であるか否かが判定される。鍵番号Ｋnの鍵が全く押下されていなければここで「ＮＯ」と判定され、処理はステップＳＰ７２に進む。ここでは、全ての鍵番号ＫnについてステップＳＰ４〜ＳＰ７０の処理が完了したか否かが判定される。未だ完了していなければ「ＮＯ」と判定され、処理はステップＳＰ７４に進み、鍵番号Ｋnが「１」だけインクリメントされ、処理はステップＳＰ４に戻る。そして、インクリメントされた鍵番号Ｋnに基づいて再びステップＳＰ４以降の処理が実行される。その後、鍵番号Ｋnがインクリメントされ続け、鍵番号Ｋnが最終鍵番号Ｋeに達した後に再び処理がステップＳＰ７２に進むと、ここで「ＹＥＳ」と判定される。これにより、処理はステップＳＰ２に戻り、鍵番号Ｋnが再び「１」に設定される。以後、同様の動作が繰り返されることになる。
【００１８】
３．２．通常の鍵操作
３．２．１．押鍵
次に、チャタリングが起きない状態における鍵操作に対する動作を説明する。鍵番号Ｋnの鍵が押下されてゆくと、やがて第１接点１０がオン状態になる。その後に処理がステップＳＰ１６に進むとその旨が検出される。これにより、ここで「ＹＥＳ」と判定され、処理はステップＳＰ１８に進む。ここでは、鍵番号Ｋnに対して時間差計測カウンタTDC(Kn)が割り当て可能か、すなわち時間差計測カウンタに空きがあるか否かが判定される。割当可能であれば処理はステップＳＰ２０に進み、割当処理が行われる。
【００１９】
次に、処理がステップＳＰ２２に進むと、時間差計測カウンタTDC(Kn)の値（初期値）として「０」が設定され、その状態がSTART状態（計測状態）に設定される。次に、処理がステップＳＰ２４に進むと、ステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。すなわち、第１接点１０がオン状態になったために第０ビットが“１”に設定され、時間差計測カウンタTDC(Kn)を用いたベロシティの計測中が開始されたために第４ビットが“１”に設定されるのである。以上のステップが終了すると、処理はステップＳＰ７２に進み、次の鍵番号Ｋn+1あるいは最初の鍵番号Ｋ1に係る処理が実行される。
【００２０】
その後、鍵番号が再び上記Ｋnになった後に処理がステップＳＰ４に進むと、処理はステップＳＰ６を介してステップＳＰ８に進む。ここでは、ステータスレジスタSTATUS(Kn)が“０１０００１”であるか否かが判定される。ここで「ＹＥＳ」と判定されると、処理はステップＳＰ３２に進み、鍵番号Ｋnの第１接点１０がオフ状態であるかか否かが判定される。通常の押鍵操作では、この状態において第１接点１０がオフ状態にならないため、「ＮＯ」と判定され、処理はステップＳＰ３８に進み、第２接点１２がオン状態であるか否かが判定される。第２接点１２が未だオフ状態であれば、ここで「ＮＯ」と判定され、処理はステップＳＰ７４に戻る。以後、当該鍵番号Ｋnについてのメインルーチンの処理においては、上述したステップが繰り返され、実質的な処理は行われない。
【００２１】
本実施形態においては、所定時間毎にタイマ割込が発生し、図７に示すタイマ処理ルーチンが起動される。図において処理がステップＳＰ１０２に進むと、鍵番号Ｋnに初期値すなわち「１」が設定される。なお、本ルーチンにおける鍵番号Ｋnは、メインルーチンの鍵番号Ｋnとはスコープが異なる別の変数である。
【００２２】
次に、処理がステップＳＰ１０４に進むと、時間差計測カウンタTDC(Kn)はSTART状態に設定されているか否かが判定される。ここで「ＹＥＳ」と判定されると、処理はステップＳＰ１０６に進み、ステータスレジスタSTATUS(Kn)が“０１００００”以外の値であるか否かが判定される。上記例においては、ステップＳＰ２４においてステータスレジスタSTATUS(Kn)は“０１０００１”に設定されたから「ＹＥＳ」と判定され、処理はステップＳＰ１０８に進む。
【００２３】
ここでは、時間差計測カウンタTDC(Kn)の値が時間差最大値TDCmax未満であるか否かが判定される。ここで「ＹＥＳ」と判定されると、ステップＳＰ１１０においてカウンタTDC(Kn)が「１」だけインクリメントされる。一方、「ＮＯ」と判定された場合には、ステップＳＰ１１０はスキップされ、カウンタTDC(Kn)の値は保持される。次に、処理がステップＳＰ１１６に進むと、マスクタイマMASKTM(Kn)がスタート設定されているか否かが判定される。この時点ではマスクタイマMASKTM(Kn)はスタート設定されていないため、「ＮＯ」と判定され、処理はステップＳＰ１２６に進む。ここでは、リトリガータイマRTRGTM(Kn)がスタート設定されているか否かが判定される。この時点ではリトリガータイマRTRGTM(Kn)はスタート設定されていないため、「ＮＯ」と判定され、処理はステップＳＰ１３６に進む。
【００２４】
処理がステップＳＰ１３６においては、鍵番号Ｋnが最終鍵番号Ｋeに達したか否かが判定される。ここで「ＮＯ」と判定されると、処理はステップＳＰ１３８に進み、鍵番号Ｋnが「１」だけインクリメントされ、新たな鍵番号ＫnについてステップＳＰ１０４以降の処理が繰り返される。一方、全鍵番号ＫnについてステップＳＰ１０４以降の処理が完了し鍵番号Ｋnが最終鍵番号Ｋeに達していた場合には、ステップＳＰ１３６において「ＹＥＳ」と判定され、処理はメインルーチンに戻る。
【００２５】
メインルーチン（図５，図６）においては、鍵番号Ｋnの第２接点１２がオフ状態である限り、ステップＳＰ８，ＳＰ３２，ＳＰ３８を介するループが繰り返され、実質的な処理は行われないが、上述したようにタイマ処理ルーチンによってカウンタTDC(Kn)は逐次更新されている。これにより、第１接点１０がオン状態になった後の経過時間が、時間差最大値TDCmaxを限度として計測されることになる。その後、鍵番号Ｋnの鍵がさらに深く押下され第２接点１２がオン状態になると、ステップＳＰ３８において「ＹＥＳ」と判定され処理はステップＳＰ４０に進む。
【００２６】
ステップＳＰ４０においては、時間差計測カウンタTDC(Kn)がSTOP状態に設定され、それ以降のカウント処理が禁止される。さらに、ステップＳＰ４０においては、カウンタTDC(Kn)の内容に基づいて、ベロシティVEL(Kn)が求められる。具体的には、ベロシティVEL(Kn)は、カウンタTDC(Kn)に対する演算、テーブル参照、あるいはそれらの組み合わせによって求められる。次に、処理がステップＳＰ４２に進むと、鍵番号ＫnおよびベロシティVEL(Kn)を伴って、キースキャンＣＰＵ５４からシステムＣＰＵ６４にキーオン信号が送信される。これにより、周知の電子楽器と同様に、システムＣＰＵ６４においては、楽音信号が合成され、音源部７２を介して楽音信号が発音される。
【００２７】
３．２．２．離鍵マスク
次に、処理がステップＳＰ４６に進むと、鍵番号ＫnのマスクタイマMASKTM(Kn)の値が「０」に設定され、マスクタイマMASKTM(Kn)がSTART状態に設定される。次に、処理がステップＳＰ４８に進むと、ステータスレジスタSTATUS(Kn)の内容が“００１１１１”に設定される。すなわち、ステータスレジスタSTATUS(Kn)の内容は元々“０１０００１”であったが、鍵の第２接点１２がオン状態になったため第１ビットが“１”に設定され、キーオフ・マスク状態すなわちキーオフの送信を禁止している状態であるから第３ビットが“１”に設定され、ベロシティの計測が終了したために第４ビットが“０”に設定されたのである。
【００２８】
さて、ステータスレジスタSTATUS(Kn)が“００１１１１”になると、ステップＳＰ４〜ＳＰ４の何れにおいても「ＮＯ」と判定されるため、当該鍵番号Ｋnについてはメインルーチン（図５，図６）において実質的な処理が行われなくなる。この場合においても、所定時間毎にタイマ割込みが発生し、タイマ処理ルーチン（図７）が起動される。先にステップＳＰ４０においてカウンタTDC(Kn)がSTOP状態に設定されたから、図７において処理がステップＳＰ１０４に進むと、ここで「ＮＯ」と判定され、処理はステップＳＰ１１６に進む。
【００２９】
先のステップＳＰ４６においてはマスクタイマMASKTM(Kn)はSTART状態に設定されたから、ステップＳＰ１１６においては「ＹＥＳ」と判定される。次に、処理がステップＳＰ１１８に進むと、マスクタイマMASKTM(Kn)が「１」だけインクリメントされる。次に、処理がステップＳＰ１２０に進むと、ステータスレジスタSTATUS(Kn)が“００１１１１”であるか否かが判定される。先にステップＳＰ４８においてステータスレジスタSTATUS(Kn)は“００１１１１”に設定されたから、ここでは「ＹＥＳ」と判定される。
【００３０】
次に、処理がステップＳＰ１２２に進むと、マスクタイマMASKTM(Kn)の値がマスクタイマ最大値MASKTMmax以上になったか否かが判定される。なお、マスクタイマ最大値MASKTMmaxは、鍵の構造等に基づいて予め定められている。まだマスクタイマMASKTM(Kn)の値がマスクタイマ最大値MASKTMmaxに達していなければ「ＮＯ」と判定され、処理はステップＳＰ１２６に進む。ここで、リトリガータイマRTRGTM(Kn)は未だスタート設定されていないために「ＮＯ」と判定され、処理はステップＳＰ１３６に進む。
【００３１】
以上のように、ステータスレジスタSTATUS(Kn)が“００１１１１”になると、当該鍵番号Ｋnに係るマスクタイマMASKTM(Kn)がタイマ割込みの度にインクリメントされてゆく。それ以外には、鍵番号Ｋnについて実質的な処理は行われず、第１および第２接点１２の状態の変化が起ったとしても、処理に影響が及ばない。やがて、マスクタイマMASKTM(Kn)がマスクタイマ最大値MASKTMmaxに達すると、ステップＳＰ１２２において「ＹＥＳ」と判定され、処理はステップＳＰ１２４に進む。ここでは、ステータスレジスタSTATUS(Kn)が“０００１１１”に設定される。すなわち、キーオフ・マスク状態を解消し、キーオフ信号の送信を可能ならしめるため、第３ビットが“０”に設定される。
【００３２】
３．２．３．離鍵
ステータスレジスタSTATUS(Kn)が“０００１１１”に設定されると、以後はメインルーチンのステップＳＰ１２において「ＹＥＳ」と判定され、処理はステップＳＰ５６に進む。ここでは、第２接点１２がオフ状態であるか否かが判定される。未だオフ状態でなければ「ＮＯ」と判定され、処理はステップＳＰ７２に進む。従って、かかる状態では実質的な処理が行われない。
【００３３】
ここで、鍵番号Ｋnの離鍵が開始されると、やがてその第２接点１２がオフ状態になる。その後に処理がステップＳＰ５６に進むと、ここで「ＹＥＳ」と判定され、処理はステップＳＰ５８に進み、ステータスレジスタSTATUS(Kn)が“０００１０１”に設定される。すなわち、第２接点１２がオフ状態になったため、第１ビットが“０”に設定される。
【００３４】
その後、メインルーチンにおいては、当該鍵番号ＫnについてはステップＳＰ１４を介して処理はステップＳＰ６０に進む。ここでは、第２接点１２がオン状態になったか否かが判定される。通常の離鍵状態においては、一旦オフ状態になった第２接点１２はオン状態にはならない。従って、ここでは「ＮＯ」と判定され、処理はステップＳＰ６４に進み、第１接点１０がオフ状態であるか否かが判定される。未だ第１接点１０がオフ状態になっていなければここで「ＮＯ」と判定され、処理はステップＳＰ７２に進む。
【００３５】
以後、メインルーチンにおいて、該鍵番号Ｋnについては、第１接点１０がオフ状態になるまでは、ステップＳＰ１４，ＳＰ６０，ＳＰ６４が繰り返され実質的な処理は行われない。その後、鍵がさらに上昇して第１接点１０がオフ状態になると、ステップＳＰ６４において「ＹＥＳ」と判定され、処理はステップＳＰ６６に進む。ここでは、キースキャンＣＰＵ５４からシステムＣＰＵ６４に鍵番号Ｋnを伴ったキーオフ信号が送信される。これにより、周知の電子楽器と同様に、システムＣＰＵ６４においては、当該鍵番号Ｋnに係る消音処理等が実行される。
【００３６】
次に、処理がステップＳＰ６８に進むと、ステータスレジスタSTATUS(Kn)が“００００００”すなわち初期状態に設定される。次に処理がステップＳＰ７０に進むと、該鍵番号Ｋnに割り当てられていた時間差計測カウンタTDC(Kn)が解放され、他の鍵の時間差計測に割り当てることが可能になる。
【００３７】
３．３．時間差計測カウンタの割当が不可能である場合の動作
上述したステップＳＰ１８においては、鍵番号Ｋnに対して時間差計測カウンタTDC(Kn)が割り当て可能か、すなわち時間差計測カウンタに空きがあるか否かが判定された。ここで、割り当てが不可能であった場合は、処理はステップＳＰ２６に進み、ステータスレジスタSTATUS(Kn)が“０００００１”に設定される。すなわち、第１接点１０がオン状態になったために第０ビットが“１”に設定されるが、ベロシティの計測が行われていないために第４ビットは“０”に保持されたままになる。
【００３８】
その後、当該鍵番号Ｋnについて再びステップＳＰ４以降の処理が実行されると、ステップＳＰ６において「ＹＥＳ」と判定され、処理はステップＳＰ２８に進む。ここでは、第１接点１０がオフ状態であるか否かが判定される。ここで「ＮＯ」と判定されると実質的な処理は行われないが、「ＹＥＳ」と判定されると処理はステップＳＰ３０に進み、ステータスレジスタSTATUS(Kn)が“００００００”（初期状態）に戻される。結局、カウンタTDC(Kn)が割り当て不可能であった場合は、当該鍵操作に対してキーオン信号もキーオフ信号もシステムＣＰＵ６４には送信されないため、全く発音が行われないことになる。
【００３９】
３．４．浅い押鍵操作に対する処理
浅い押鍵操作が行われた場合には、まず第１接点１０がオン状態になり、第２接点１２がオン状態になることなく、比較的長い時間が経過した後に第１接点１０がオフ状態になる。かかる場合の動作を説明する。まず、初期状態（ステータスレジスタSTATUS(Kn)＝“００００００”）において第１接点１０がオン状態になり、かつ、時間差計測カウンタTDC(Kn)の割当が可能であれば、上記ステップＳＰ２０〜ＳＰ２４の処理を介してステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。
【００４０】
次に、第１または第２接点１２に変化が現れるまで、当該鍵番号Ｋnについては、ステップＳＰ８，ＳＰ３２，ＳＰ３８の判定が実行されるが、メインルーチンにおいては実質的な処理は実行されない。その期間中、カウンタTDC(Kn)はタイマ割込みが生ずる毎に「１」づつインクリメントされてゆく。ここで、第１接点１０がオフ状態になると、ステップＳＰ３２において「ＹＥＳ」と判定され、処理はステップＳＰ３４に進む。
【００４１】
ここでは、リトリガータイマRTRGTM(Kn)の値が「０」に設定され、リトリガータイマRTRGTM(Kn)がSTART状態に設定される。次に処理がステップＳＰ３６に進むと、ステータスレジスタSTATUS(Kn)が“０１００００”に設定される。すなわち、第１接点１０がオフ状態になったために第０ビットを“０”に設定したが、これは単なるチャタリングの可能性があるため、ベロシティの測定状態を続行するために、第４ビットを“１”のまま保持したものである。
【００４２】
次に、メインルーチンにおいて再びステップＳＰ４以降の処理が実行されると、ステップＳＰ１０において「ＹＥＳ」と判定されるから処理はステップＳＰ５０に進む。ここでは、第１接点１０がオン状態であるか否かが判定される。ここでは既に第１接点１０がオフ状態になっているため「ＮＯ」と判定され、処理はステップＳＰ３８を介してステップＳＰ７２に進む。以後同様に、メインルーチンにおいては、鍵番号Ｋnに対してステップＳＰ１０，ＳＰ５０，ＳＰ３８が繰り返されるが、実質的な処理は実行されない。
【００４３】
一方、上記例においてはカウンタTDC(Kn)がSTART状態に設定され、ステータスレジスタSTATUS(Kn)が“０１００００”に設定されたため、タイマ処理ルーチンが呼び出されると、処理はステップＳＰ１０４、ＳＰ１０６を介してステップＳＰ１１２に進む。ここでは、カウンタTDC(Kn)のカウント結果（すなわち第１接点１０がオンオフされた間隔）が所定のチャタリング閾値TDCchtr未満であるか否かが判定される。なお、チャタリング閾値TDCchtrは、通常発生するチャタリングの最大周期（例えば３０ｍｓｅｃ）に設定される。
【００４４】
浅い押鍵操作によって第１接点１０のオンオフが生じた場合には、カウンタTDC(Kn)のカウント結果はチャタリング閾値TDCchtrよりも充分に大きくなるから、ステップＳＰ１１２においては「ＮＯ」と判定され、処理はステップＳＰ１１４に進む。ここでは、時間差計測カウンタTDC(Kn)がSTOP状態に設定されるとともに解放され、さらにステータスレジスタSTATUS(Kn)が“００００００”すなわち初期状態に設定される。このように、第２接点１２がオン状態にならないような浅い押鍵操作に対しては、キーオン信号もキーオフ信号もシステムＣＰＵ６４には送信されないため、全く発音が行われないことになる。
【００４５】
３．５．第１接点１０においてチャタリングが生じた場合の処理
次に、第１接点１０においてチャタリングが生じた場合の処理を説明する。第１接点１０においてチャタリングが生じると、第２接点１２がオン状態になる前に第１接点１０においてオンオフが繰り返される。
まず、初期状態（ステータスレジスタSTATUS(Kn)＝“００００００”）において第１接点１０が最初にオン状態になると、上記「浅い押鍵操作」が行われた場合と同様に、該当する鍵番号Ｋnに対して時間差計測カウンタTDC(Kn)が割り当てられ、ステップＳＰ２０〜ＳＰ２４の処理を介してステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。以後、タイマ割込みが生ずる毎にカウンタTDC(Kn)が「１」づつインクリメントされる。
【００４６】
次に、第１接点１０がオフ状態になると、ステップＳＰ３４，ＳＰ３６においてリトリガータイマRTRGTM(Kn)が「０」に戻され、リトリガータイマRTRGTM(Kn)がSTART状態に設定される。ステータスレジスタSTATUS(Kn)が“０１００００”に設定される。次にタイマ割込みが発生すると、ステップＳＰ１１２において、カウンタTDC(Kn)のカウント結果が所定のチャタリング閾値TDCchtr未満であるか否かが判定される。チャタリングが生じた場合には、第１接点１０は頻繁にオンオフされるため、カウント結果はチャタリング閾値TDCchtr未満になる。従って、ここでは「ＹＥＳ」と判定され、処理はステップＳＰ１０８に進み、カウンタTDC(Kn)の更新が続行される。
【００４７】
また、リトリガータイマRTRGTM(Kn)がSTART状態に設定されたことにより、タイマ処理ルーチンのステップＳＰ１２６においては「ＹＥＳ」と判定される。次に、ステップＳＰ１２８においては、リトリガータイマRTRGTM(Kn)が「１」だけインクリメントされる。次に、処理がステップＳＰ１３０に進むと、ステータスレジスタSTATUS(Kn)が“０１００００”であるか否かが判定される。先にステップＳＰ３６においてステータスレジスタSTATUS(Kn)は“０１００００”に設定されたから、ここでは「ＹＥＳ」と判定され、処理はステップＳＰ１３２に進む。ステップＳＰ１３２においては、リトリガータイマRTRGTM(Kn)の値がリトリガータイマ最大値RTRGTMmax以上になったか否かが判定される。ここで「ＮＯ」と判定されると、処理はステップＳＰ１３６に進み、当該鍵番号Ｋnについてはタイマ処理が終了する。
【００４８】
ここで、仮に、リトリガータイマRTRGTM(Kn)がリトリガータイマ最大値RTRGTMmaxに達すると、処理はステップＳＰ１３２に進み、ステータスレジスタSTATUS(Kn)が“００００００”すなわち初期状態に設定される。しかし、上述したように、チャタリングが発生している状況では第１接点１０が頻繁にオンオフするから、リトリガータイマRTRGTM(Kn)の値がリトリガータイマ最大値RTRGTMmaxに達する前に第１接点１０が再びオン状態になる。第１接点１０が再びオン状態になると、メインルーチンのステップＳＰ５０において「ＹＥＳ」と判定されるから、処理はステップＳＰ５２に進む。ここでは、時間差計測カウンタTDC(Kn)が「０」に設定されるとともに、該カウンタTDC(Kn)が再度START状態に設定される。次に、処理がステップＳＰ５４に進むと、ステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。
【００４９】
以後、同様に、第１接点１０がオフ状態になるとステップＳＰ３４，ＳＰ３６においてリトリガータイマRTRGTM(Kn)が「０」に戻されるとともに、ステータスレジスタSTATUS(Kn)が“０１００００”に設定される。また、第１接点１０がオン状態になると、ステップＳＰ５２，ＳＰ５４において、カウンタTDC(Kn)のカウント結果が「０」に戻されるとともに該時間差計測カウンタTDC(Kn)が再度START状態に設定され、ステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。チャタリングが継続している期間中は、これら２つの状態が交互に繰り返されることになる。
【００５０】
鍵番号Ｋnの鍵がさらに深く押下されてゆくと、やがて第２接点１２がオン状態になる。この時点で第１接点１０のチャタリングが終了している場合と、継続している場合とが考えられるため、以後の動作を場合を分けて説明する。
【００５１】
３．５．１．第１接点１０のチャタリング終了後に第２接点１２がオン状態になった場合
第１接点１０のチャタリングが終了すると、第１接点１０はオン状態に安定する。すなわち、ステップＳＰ５２，ＳＰ５４においてカウンタTDC(Kn)がSTART状態に設定され、ステータスレジスタSTATUS(Kn)が“０１０００１”に設定される。これにより、カウンタTDC(Kn)のカウントが再開される。
【００５２】
以後の動作は、「通常の鍵操作」の場合と同様である。すなわち、第２接点１２がオン状態になると、ステップＳＰ３８において「ＹＥＳ」と判定され、ステップＳＰ４０〜ＳＰ４８の処理が実行される。ステップＳＰ４０においては、カウンタTDC(Kn)のカウント結果、換言すれば第１接点１０が最後にオン状態に安定した後に第２接点１２が最初にオン状態になるまでの時間に応じて、ベロシティVEL(Kn)が計算されキーオン信号がシステムＣＰＵ６４に送信される。
【００５３】
３．５．２．第１接点１０のチャタリング中に第２接点１２がオン状態になった場合
「第１接点１０のチャタリング中」には、第１接点１０がオン状態である場合とオフ状態である場合とが考えられる。第１接点１０がオン状態であれば、メインルーチンにおいてステップＳＰ８，ＳＰ３２，ＳＰ３８の判定処理が繰り返されるから、第２接点１２がオン状態になるとともにステップＳＰ４０以降の処理が実行される。すなわち、かかる場合には、「第１接点１０のチャタリング終了後に第２接点１２がオン状態になった場合」と同様の処理が実行されることになる。
【００５４】
一方、第１接点１０がオフ状態であれば、ステップＳＰ１０，ＳＰ５０，ＳＰ３８の判定処理が繰り返される。ここで、第２接点１２がオン状態になると、ステップＳＰ３８を介してステップＳＰ４０以降の処理が実行される。ここで、時間差計測カウンタTDC(Kn)は先に第１接点１０がオン状態になった時からカウントを開始しているため、最後に第１接点１０がオン状態になった後、第２接点１２がオン状態になるまでのカウント結果に基づいてベロシティVEL(Kn)が計算されることになる。
【００５５】
４．実施形態の効果
以下、図３，図４を参照し、想定される各種チャタリングに対する本実施形態の効果を説明する。これらの図は、様々な態様でチャタリング等が発生した場合における第１および第２接点１２のオンオフ状態を負論理で示した波形図である。
【００５６】
（１）図３(a)においては、最初に第１接点１０がオン状態になり、次に第２接点１２がオン状態になり、しかる後に第１接点１０においてチャタリングが生じた場合の波形図を示す。第２接点１２がオン状態になると、ステータスレジスタSTATUS(Kn)は、ステップＳＰ４８において“００１１１１”に設定され、さらにマスクタイマ最大値MASKTMmaxが経過した時にステップＳＰ１２４において“０００１１１”に設定される。何れの場合においても、第１接点１０のオンオフ状態は処理に影響を及ぼさないため、このチャタリングによる影響を排除することができる。
【００５７】
（２）図３(b)においては、第１および第２接点１２が順次オン状態になった後、第２接点１２にチャタリングが生じた場合の波形図を示す。上述したように、第２接点１２がオン状態になると、ステータスレジスタSTATUS(Kn)は“００１１１１”に設定された後、“０００１１１”に設定される。ここで、第２接点１２がオフ状態になると、ステップＳＰ５８においてステータスレジスタSTATUS(Kn)が“０００１０１”に設定されるが、第１接点１０がオフ状態になる前に第２接点１２が再びオン状態になると、ステップＳＰ６０，ＳＰ６２を介してレジスタSTATUS(Kn)が再び“０００１１１”に設定される。これにより、以後は第２接点１２のチャタリングが無かった場合と同様の動作が実行され、第２接点１２のチャタリングによる影響を排除することができる。
【００５８】
（３）図４(a)においては、第１および第２接点１２が順次オン状態になった後、マスクタイマ最大値MASKTMmaxに対応するマスク時間が経過する以前に第１および第２接点１２に同時にチャタリングが生じた場合の波形図を示す。ここで、このようなチャタリングが生じる背景について説明しておく。
【００５９】
自然楽器のピアノにおいては、押鍵操作によってハンマアクションを持ち上げ、ハンマが弦を打つことによって楽音が発生される。そして、ハンマアクションが基準位置に戻る際に鍵に衝突し、演奏者はそのショックを指先に感じることができる。そこで、電子ピアノにおいてもこのようなピアノタッチを再現すべく、鍵にショックを与えるような機構が付与されている。しかし、鍵にこのようなショックを与えると、第１および第２接点１２が共にオフ状態になることがある。図４(a)は、かかる状態を想定したものである。
【００６０】
マスク時間が経過する以前はレジスタSTATUS(Kn)は“００１１１１”に設定されており、この期間中における第１および第２接点１２のオンオフ状態は処理になんら影響を及ぼさない。従って、ピアノタッチを模擬した場合に特有のチャタリングも排除することができる。なお、マスクタイマ最大値MASKTMmaxは、ピアノタッチを与える機構部分の特性に応じて、決定されることは言うまでもない。
【００６１】
（４）図４(b)においては、第１接点１０が一旦オン状態になった後にチャタリングが発生し、そのチャタリングの途中、第１接点１０がオフ状態である時に第２接点１２がオン状態になった場合の波形図を示す。本実施形態のように弾性変形する部材によって接点を構成した場合には、このようなチャタリングも起こりうる。かかる場合には、「第１接点１０のチャタリング中に第２接点１２がオン状態になった場合」において説明したように、第１接点１０が最後にオン状態になった後第２接点１２がオン状態になるまでの時間に応じてベロシティVEL(Kn)が決定されるから、かかる状態におけるチャタリングの影響も排除することができる。
【００６２】
（５）図４(c)においては、第１接点１０においてチャタリングが生じた後第１接点１０がオン状態に安定し、しかる後に第２接点１２がオン状態になった場合の波形図を示す。この例においても、第１接点１０が最後にオン状態になった後第２接点１２がオン状態になるまでの時間に応じてベロシティVEL(Kn)が決定されるから、第１接点１０のチャタリングの影響を排除することができる。
【００６３】
（６）図４(d)においては、第１接点１０においてチャタリングが生じた後第１接点１０がオン状態に安定し、第２接点１２はオフ状態に保持された場合の波形図を示す。この例においては、第１接点１０がオン状態になった後、チャタリング閾値TDCchtrを経過したことを条件としてステータスレジスタSTATUS(Kn)が“００００００”に戻る。従って、この期間内に第２接点１２がオン状態になると、第１接点１０がオフ状態であってもキーオン信号を生成することが可能になる。
【００６４】
５．変形例
本発明は上述した実施形態に限定されるものではなく、例えば以下のように種々の変形が可能である。
（１）上記各実施形態はキースキャンＣＰＵ５４においてキーオン・キーオフイベント検出処理を行ったが、上述した各処理をシステムＣＰＵ６４において実行してもよい。同様に、キーオン・キーオフイベント検出処理も含めて電子鍵盤楽器の各構成要素を各種コンピュータ上で動作するソフトウエアによって構成してもよい。その場合、このソフトウエアをＣＤ−ＲＯＭ、フロッピーディスク等の記録媒体に格納して頒布し、あるいは伝送路を通じて頒布することもできる。
【００６５】
【発明の効果】
以上説明したように本発明によれば、第１の操作検出手段において最後に第１の状態から第２の状態へ変化したタイミングに基づいて操作速度情報を出力するから、チャタリングの影響を防止しつつ操作速度を検出することができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態の電子鍵盤楽器のブロック図である。
【図２】  上記実施形態のメモリマップである。
【図３】  上記実施形態の波形図である。
【図４】  上記実施形態の他の状態における波形図である。
【図５】  上記実施形態のメインルーチンのフローチャート（１／２）である。
【図６】  上記実施形態のメインルーチンのフローチャート（２／２）である。
【図７】  上記実施形態のタイマ処理ルーチンのフローチャートである。
【図８】  従来技術および上記実施形態における接点構造を示す図である。
【符号の説明】
１……内パターン、２……外パターン、３……共通パターン、４……内ペア、５……外ペア、６……固定接点、１０……第１接点、１２……第２接点、２５……第１可動接点、２６……第２可動接点、２７……２メイクスイッチ、２９……押圧部、５２……鍵盤、５４……キースキャンＣＰＵ、５６……ＲＯＭ、５８……ＲＡＭ、６０……バス、６２……内部バス、６４……システムＣＰＵ、６６……ＲＯＭ、６８……ＲＡＭ、７０……操作表示部、７２……音源部、７４……バス、５６２……ＣＰＵプログラム領域、５６４……プリセットデータ領域、５８２……ＣＰＵワークエリア、５８４……ＴＤＣ用エリア、５８６……ＭＡＳＫＴＭ用エリア、５８８……ＲＴＲＧＴＭ用エリア、５９０……ステータスレジスタ領域。
【図１】
0003695337.tif 000002
【図２】
0003695337.tif 000003
【図３】
0003695337.tif 000004
【図４】
0003695337.tif 000005
【図５】
0003695337.tif 000006
【図６】
0003695337.tif 000007
【図７】
0003695337.tif 000008
【図８】
0003695337.tif 000009