(57)【特許請求の範囲】
【請求項１】
支持部材と、
前記支持部材に対して揺動可能に設けられた複数の鍵と、
前記複数の鍵の各鍵に対応して設けられ、前記各鍵の運動に応じて前記支持部材に対する相対位置が変位する質量体と、
前記複数の鍵の各鍵に対応して設けられ、前記各鍵の鍵操作を検出する鍵操作検出手段と、
前記検出した鍵操作に基づいて楽音信号を発生する楽音信号発生手段と、
操作される鍵の運動に応じて駆動される前記質量体の前記支持部材に対する相対位置を表す位置情報を多数回検出し、該多数回検出した位置情報に基づいて前記操作された鍵の押鍵操作に係る奏法を検出する奏法検出手段と、
前記奏法検出手段が検出した奏法に応じた楽音制御を前記楽音発生手段に対して行う楽音制御手段と
を有する電子楽器。
【請求項２】
鍵接合部と質量体支持部とを有する支持部材と、
前記鍵接合部を回転軸として支持部材に対して揺動可能に設けられ、質量体接合部を有する複数の鍵と、
前記複数の鍵の各鍵に対応して前記鍵に設けられた質量体接合部を回転軸として鍵に対して遥動可能に設けられ、前記各鍵の運動に応じて前記質量体支持部を支点として前記支持部材に対する相対位置が変位する質量体と、
前記複数の鍵の各鍵に対応して設けられ、前記各鍵の鍵操作を検出する鍵操作検出手段と、
前記検出した鍵操作に基づいて楽音信号を発生する楽音信号発生手段と、
操作される鍵の運動に応じて変位する前記質量体の前記支持部材に対する相対位置を表す位置情報を多数回検出し、該多数回検出した位置情報に基づいて前記操作された鍵の押鍵操作に係る奏法を検出する奏法検出手段と、
前記奏法検出手段が検出した奏法に応じた楽音制御を前記楽音発生手段に対して行う楽音制御手段と
を有する電子楽器。
【請求項３】
さらに、前記複数の鍵の各鍵と、前記各鍵に対応する前記複数の質量体のそれぞれとの間に介在し、前記複数の質量体のそれぞれと支持部材との相対位置を非線形に変化させる部材を有する請求項１又は２記載の電子楽器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は電子楽器に関し、特に電子楽器の鍵盤上の鍵操作に応じて楽音を制御することができる電子楽器に関する。
【０００２】
【従来の技術】
自然楽器のピアノは、押鍵速度に応じて発生する楽音が変化する。電子楽器においては、押鍵速度を検出するため各鍵にトランスファスイッチまたはおわん状２メイクスイッチが設けられている。
【０００３】
従来のトランスファスイッチや２メイクスイッチを有するキーボードでは２点を通過する間の平均速度のみを検出しているので、演奏手法を変えても押鍵速度が同じとして検出されてしまう。したがって、従来技術では演奏手法の違いを楽音に反映させることができない。また、イニシャルタッチとアフタタッチの情報を用いて、演奏手法を検出する方法も考えられるが、アフタタッチを待っていたのでは、楽音の発音に遅れが生じてしまうため、鍵盤楽器には好ましくない。
【０００４】
よりきめ細かな制御を実現するため、鍵のストローク位置を検出する全行程センシングキーボードが特開平２−２１４８９７号公報、特開平３−６７２９９号公報等で提案されている。これらは、押鍵操作における全行程の鍵位置の検出を行う。
【０００５】
また、１つ前の押鍵データや１つ前のアフタタッチの情報を用いて、楽音の制御を行う電子鍵盤楽器が特開平２−１４６５９６号公報で提案されている。
【０００６】
【発明が解決しようとする課題】
従来の電子鍵盤楽器では、スタッカートやテヌート等の演奏手法により楽音を変化させることが困難である。また、押鍵操作を検出し、その押鍵操作を反映させた楽音信号をリアルタイムで生成することは難しい。
【０００７】
本発明の目的は、鍵盤楽器の演奏手法に応じて楽音の制御を行うことができる電子鍵盤楽器を提供することである。
【０００８】
【課題を解決するための手段】
本発明の一観点によれば、電子楽器は、支持部材と、前記支持部材に対して揺動可能に設けられた複数の鍵と、前記複数の鍵の各鍵に対応して設けられ、前記各鍵の運動に応じて前記支持部材に対する相対位置が変位する質量体と、前記複数の鍵の各鍵に対応して設けられ、前記各鍵の鍵操作を検出する鍵操作検出手段と、前記検出した鍵操作に基づいて楽音信号を発生する楽音信号発生手段と、操作される鍵の運動に応じて駆動される前記質量体の前記支持部材に対する相対位置を表す位置情報を多数回検出し、該多数回検出した位置情報に基づいて前記操作された鍵の押鍵操作に係る奏法を検出する奏法検出手段と、前記奏法検出手段が検出した奏法に応じた楽音制御を前記楽音発生手段に対して行う楽音制御手段とを有する。
また、本発明の他の観点によれば、電子楽器は、鍵接合部と質量体支持部とを有する支持部材と、前記鍵接合部を回転軸として支持部材に対して揺動可能に設けられ、質量体接合部を有する複数の鍵と、前記複数の鍵の各鍵に対応して前記鍵に設けられた質量体接合部を回転軸として鍵に対して遥動可能に設けられ、前記各鍵の運動に応じて前記質量体支持部を支点として前記支持部材に対する相対位置が変位する質量体と、前記複数の鍵の各鍵に対応して設けられ、前記各鍵の鍵操作を検出する鍵操作検出手段と、前記検出した鍵操作に基づいて楽音信号を発生する楽音信号発生手段と、操作される鍵の運動に応じて変位する前記質量体の前記支持部材に対する相対位置を表す位置情報を多数回検出し、該多数回検出した位置情報に基づいて前記操作された鍵の押鍵操作に係る奏法を検出する奏法検出手段と、前記奏法検出手段が検出した奏法に応じた楽音制御を前記楽音発生手段に対して行う楽音制御手段とを有する。
【０００９】
【作用】
鍵操作に応じて時間的に変化する鍵の相対的位置を検出して、その非線形度を演算することにより、奏法を検出することができる。これにより、検出された奏法の相違に応じた楽音を生成することができる。
【００１０】
また、質量対は演奏者の演奏に対して、鍵盤を介して間接的に動作するものであるため、質量体の位置情報（位置情報の非線形度）は、奏法に応じて大きく異なる。よって、質量体の位置情報を検出し、この位置情報に基づき奏法を判別して楽音制御を行う。よって、えんそうしゃによるびみょうなそうほうのちがいに応じたきめ細かな楽音制御を行うことが出来る。
【００１１】
ここで、上記非線形度はどこで生まれるのか、そのメカニズムを以下に説明する。実施例および実験データで明らかになるが押鍵速度（キーストロークの中間の所定の２点を通過する平均速度）が同じであっても、鍵を押し下げ始めた瞬間に指から鍵に伝わる力が大きい（強押鍵）ほど、非線形出力が得られることから、（１）鍵は剛体ではあるが、強押鍵時にわずかに鍵がしなうことによる、（２）鍵と支持部材との間の回転支持部は微視的に見れば凹凸があり、かつその凹凸を埋めるように潤滑剤（グリス）が塗られている。この部分が極くわずかにずれ、支点移動が起こることによる、（３）実施例では鍵に連動して質量体が移動するが、鍵の質量体駆動部が質量体の被駆動部へ力の伝達がなされる時特に強押鍵時に伝達エネルギが蓄えられることによる、（４）キーストローク検出センサに用いるグレースケールは厚さが約０．３ｍｍのフィルム状になっているので、鍵または質量体の移動に伴いグレースケールに空気抵抗等が加わることによる、以上の４要素のうち１または複数の要素が複雑に絡み合って非線形出力が得られるものと考えられる。
【００１２】
【発明の実施の形態】
図１は、電子鍵盤楽器のシステム構成例を示す。鍵盤は８８の鍵を有し、それぞれの鍵にはストロークセンサＳ１〜Ｓ８８が備えられている。演奏者がそれぞれの鍵に対し押鍵や離鍵等の操作を行うと、ストロークセンサＳ１〜Ｓ８８は、鍵のストローク位置を検出する。検出されたストローク位置は、Ａ／Ｄ変換器ＡＤ１〜ＡＤ８８においてディジタル信号ＳＤ１〜ＳＤ８８に変換され、マルチプレクサ２に供給される。また、キースイッチ１は、音高情報や押鍵速度、押鍵圧力等の鍵操作に関する情報をマルチプレクサ２に供給する。マルチプレクサ２は、入力された情報を必要に応じてバス３に供給する。
【００１３】
電子楽器のパネル上には、音量調整、音色選択又は種々の効果付与、変調等を行う指示を与えるためのパネルスイッチも設けられている。演奏者がパネルスイッチを操作すると、その情報もマルチプレクサ２に供給される。
【００１４】
マイクロコンピュータ４は、ＣＰＵ５とＲＯＭ６とＲＡＭ７を有する。ＲＯＭ６は演算プログラムを記憶している。ＣＰＵ５はこの演算プログラムに従って、ＲＡＭ７に備えられたレジスタやバッファメモリ等のワーキングメモリを用いて各種演算処理を行う。マイクロコンピュータ４は、マルチプレクサ２からバス３を介して鍵操作の情報を受け、音源８に楽音パラメータを出力する。
【００１５】
鍵盤の鍵が押下されると、キースイッチ１内でまず第１接点がオンとなり、その後に第２接点がオンとなる。その後に鍵が離されると、第２接点、第１接点の順にオフとなる。マイクロコンピュータ４は、第１接点オンから第２接点オンまでの時間の逆数をベロシティ信号として検出し、基本的楽音信号パラメータを定める。
【００１６】
音源８は、マイクロコンピュータ４から供給された楽音パラメータに基づき、発音するために必要な楽音信号を形成し出力する。出力された楽音信号は、増幅器１１で増幅され、スピーカ１２から発音される。
【００１７】
マイクロコンピュータ４は、ストロークセンサからの信号に基づき、鍵の動きを検出し、スタッカートやテヌート等の奏法を判断する。ここで、テヌートは、音符の表す長さを十分に保って演奏する奏法であり、スタッカートは、音を明瞭に分離して弾く奏法である。なお、テヌート奏法は、指を鍵に当接させた状態で鍵を押し下げるものであり、鍵を押し下げ始めた瞬間に指から伝わる力は比較的小さい。一方、スタッカート奏法は、指を鍵から離した状態から鍵を押し下げるものであり、鍵を押し下げ始めた瞬間に指から鍵に伝わる力は比較的大きい。
【００１８】
テーブルＲＯＭ９には、音量、音色や効果等の楽音の制御量が奏法の種類に応じて予め設定されている。マイクロコンピュータ４は、鍵の動きに応じて奏法を検出し、テーブルＲＯＭ９から楽音の制御量を読み出して音源８および増幅器１１に出力する。音源８では、キースイッチ１からの信号に基づく楽音信号形成が、テーブルＲＯＭ９から供給される奏法を反映した信号によって修飾される。
【００１９】
テーブルＲＯＭ９は、楽音制御量を音源８に供給することにより音色や効果の制御を行う。また、テーブルＲＯＭ９はＤ／Ａ変換器１０に音量制御量を供給し、増幅器１１の増幅率を制御してスピーカ１２から発音される音量を変化させる。
【００２０】
図２は、テーブルＲＯＭに設定する楽音制御量の例を示す。楽音制御の例として音量を制御するテーブルを示す。この音量制御パラメータはＤ／Ａ変換器１０を介して増幅器１１に供給される。テーブルの横軸は速度データＶＥＬを示す。テーブルの縦軸は奏法を示し、値が大きいほどスタッカート的な奏法を表し、値が小さいほどテヌート的な奏法を表す。
【００２１】
速度データＶＥＬは、押鍵により、第１接点がオンになってから第２接点がオンになるまでの時間差の逆数として検出される。テーブルの速度データは、音の強弱に対応し、速度データが小さいメゾピアノ（ｍｐ）から速度データが大きいフォルテシシモ（ｆｆｆ）までの範囲を有する。
【００２２】
押鍵による速度データが同じであっても、奏法が異なれば発音される音量は微妙に制御される。例えば、奏法がスタッカート的であれば音量が大きくなり、テヌート的であれば音量が小さくなるような制御量をテーブルに設定しておく。この音量制御パラメータはテーブルＲＯＭ９から読み出されて増幅器１１に与えられ、音量制御が行われる。
【００２３】
テーブルＲＯＭ９には、音量制御のパラメータテーブルの他に音色制御等の種々のテーブルが記憶されている。これらのテーブルは、例えば横軸の速度データＶＥＬと縦軸の奏法に対するエンベロープ波形の係数テーブルや音色パラメータの係数テーブルである。これらの係数は音源回路８のパラメータを制御するためのものである。
【００２４】
図３は、奏法の相違により音量制御されるエンベロープ波形を示す。奏法により、増幅器１１において制御される楽音のエンベロープ波形を変化させる。奏法が、スタッカート的であればエンベロープ波形全体を大きくし、テヌート的であればエンベロープ波形全体を小さくするような制御が行われる。これにより、スタッカート奏法では大きな音量が出力され、テヌート奏法では小さな音量が出力される。
【００２５】
図４は、奏法の相違による立上がりの形状を制御させるエンベロープ波形を示す。奏法により、音源回路８において生成されるエンベロープ波形の立上がり形状を制御する。奏法が、スタッカート的であればエンベロープ波形の立上がり形状を急峻にし、テヌート的であればエンベロープ波形の立上がり形状を緩やかにするような制御が行われる。これにより、スタッカート奏法では立上がりが鋭い楽音が出力され、テヌート奏法では立上がりが緩やかな楽音が出力される。
【００２６】
図５は、奏法の相違により音色制御されるフィルタの特性例を示す。音源回路８中に備えられたディジタルフィルタのカットオフ周波数の係数を変化させることにより、発音させる音色を変えることができる。
【００２７】
図５（Ａ）は、ローパスフィルタ（ＬＰＦ）の特性の例を示す。横軸は周波数を示し、縦軸は信号を通過させる率（透過率）を示す。カットオフ周波数を境として、低周波数領域のみの信号を通過させ、高周波数領域の信号は遮断する特性を有する。
【００２８】
図５（Ｂ）は、バンドパスフィルタ（ＢＰＦ）の特性の例を示す。横軸は周波数を示し、縦軸は信号を通過させる率（透過率）を示す。カットオフ周波数を２つ有し、２つのカットオフ周波数の間の周波数帯域の信号を通過させる。
【００２９】
図５（Ｃ）は、ハイパスフィルタ（ＨＰＦ）の特性の例を示す。横軸は周波数を示し、縦軸は信号を通過させる率（透過率）を示す。カットオフ周波数を境として、高周波数領域のみの信号を通過させ、低周波数領域の信号は通過させない特性を有する。
【００３０】
図５（Ａ）、（Ｂ）、（Ｃ）の３種類のフィルタは、それぞれカットオフ周波数を低く設定すれば丸っこい音色となり、カットオフ周波数を高く設定すれば明るい音色となる。そこで、テヌート奏法では丸っこい音色として、スタッカート奏法では明るい音色とするような制御を行う。
【００３１】
図６は、速度データＶＥＬの小さいテヌート奏法によるストローク位置の変化を示す。速度データＶＥＬ＝３８（１６進数）のテヌート奏法は、速度データが小さいので弱い鍵タッチによる奏法である。図のグラフは、時間経過に対する鍵のストローク位置を示す。時間経過に対して、ストローク位置は下方向に凸であり、なめらかな変化を示す。ニュートンの法則によれば、質点に一定の力を作用させると、時間と共に速度はリニアに増大し、位置は２次関数的に変化する。鍵の動きには抵抗等があるが、下方向に凸の変位は比較的安定な力が鍵に作用し続けることを推察させる。
【００３２】
図７は、速度データＶＥＬの小さいスタッカート奏法によるストローク位置の変化を示す。図６（Ａ）と同様に速度データＶＥＬ＝３８（１６進数）のスタッカート奏法による時間経過に対する鍵のストローク位置を示す。時間経過に対して、ストローク位置は最初は下方向に凸でなめらかな変化を示すが、所定時間経過後は直線的にストローク位置が変化する。このような変化は鍵に作用する力が何らかの理由により途中で減少することを推察させる。
【００３３】
図６と図７に示すそれぞれの奏法は、共に弱い鍵タッチによる奏法のグラフである。テヌート奏法とスタッカート奏法を比べると、鍵タッチが弱すぎるためにわずかな違いは見られるもののそれほど大きな違いはない。しかし、以下に示すようにある程度の強さを持った鍵タッチにより各奏法を行えば、顕著な違いが現れる。
【００３４】
図８は、速度データＶＥＬの大きいテヌート奏法によるストローク位置の変化を示す。速度データＶＥＬ＝５０（１６進数）のテヌート奏法は、速度データが大きいので図６のテヌート奏法よりも強い鍵タッチによる奏法である。図のグラフは、時間経過に対する鍵のストローク位置を示す。ストローク位置の変化は、やはり、時間経過に対して、下方向に凸であり、なめらかな変化を示すが、図６の弱い鍵タッチのときに比べてストローク位置が速く変化する。作用する力が増大し、速度の増加率が大きくなるのであろう。
【００３５】
図９は、速度データＶＥＬの大きいスタッカート奏法によるストローク位置の変化を示す。図８と同様に速度データＶＥＬ＝５０（１６進数）のスタッカート奏法による時間経過に対する鍵のストローク位置を示す。スタッカート奏法では、ストローク位置が押鍵の途中において傾きが大きく変化し、複雑な変化を示す。図示の曲線では０〜５ｍｓの領域で上方向に凸の変化を示し、その後下方向に凸の変化を示している。上方向に凸の変化を示す領域では安定した力が鍵に作用していないものと考えられる。運動開始と共に何らかの反力が作用している可能性もある。
【００３６】
スタッカート奏法のストローク位置が、テヌート奏法に比べて非線形な複雑な変化を示す理由として以下のものが影響していると考えられる。まず、押鍵する際に演奏者の指頭と鍵が接触するが、その指頭の接触部のへこみと回復による機構により作用する成分が考えられる。その他、押鍵の際に生じる鍵のわずかなたわみ、鍵の支点部のフェルト、ゴム等のエネルギ蓄積部、鍵とハンマとの駆動点の緩衝部等によるものが考えられる。
【００３７】
グラフに示すストローク位置の変化において、スタッカート奏法は、テヌート奏法に比べてカーブの曲がり具合が大きい、または、カーブの曲がり具合の変化が大きいという特徴を有する。この特徴を抽出することにより、スタッカート奏法とテヌート奏法の違いを検出する手順を以下のフローチャートで説明する。
【００３８】
図１０は、タイマインタラプトの処理を示すフローチャートである。一連の処理を行うＣＰＵは、１〜１０μｓ程度の一定時間間隔で発生する割り込み信号ＴＩＮＴに応じて、以下のタイマインタラプトの処理を行う。
【００３９】
まず、ステップＦＴ１において時間カウンタｔがインクリメントされる。時間カウンタｔは、割り込み信号ＴＩＮＴが発生する度にインクリメントされる時間カウンタのレジスタである。
【００４０】
ステップＦＴ２では、時間カウンタｔが所定値ｔmax に達したか否かを調べる。所定値ｔmax は、時間カウンタｔがカウントされる最大値を示し、この値を越えてカウントされることはない。例えば、ｔmax ＝１００万程度に設定しておく。
【００４１】
時間カウンタｔが所定値ｔmax に達していれば、ステップＦＴ３へ進み時間カウンタｔを０にリセットして、次回からは０からカウントし直す。その後、割り込み前の処理を再開する。一方、時間カウンタｔが所定値ｔmax に達していなければ、ステップＦＴ３をバイパスして割り込み前の処理を再開する。
【００４２】
図１１は、ＣＰＵが処理するメインルーチンを示すフローチャートである。ＣＰＵは、例えば命令のワンステップを実行するのに約０．１μｓ要する。まず、ステップＦＭ１においてレジスタ類の初期化等を行う。カウンタ値が格納されるレジスタＫに０をセットする。
【００４３】
ステップＦＭ２では、レジスタＫが所定値Ｄであるか否かをチェックする。所定値Ｄとは、例えば３程度である。レジスタＫが所定値Ｄでなければ以下の処理をバイパスして、ステップＦＭ５へ進みレジスタｉに１を格納してステップＦＭ６へ進む。一方、レジスタＫが所定値Ｄであれば、ステップＦＭ３に進む。すなわちステップＦＭ３はカウントＤ毎に１回実行される。
【００４４】
ステップＦＭ３では、レジスタｉに１を格納する。レジスタｉには、鍵盤上の８８鍵中の処理対象となる鍵の番号が格納される。その後ステップＦＭ４へ進む。
【００４５】
ステップＦＭ４では、鍵盤上の鍵のストローク位置の検出を行う。つまり、ステップＦＭ２において、レジスタＫの比較を行い、所定値Ｄに応じた頻度でストローク位置を検出することになる。この検出処理の間隔は、１ｍｓ程度が望ましい。
【００４６】
まず、ｉ番目の鍵に対応するストロークセンサＳｉの検出を行い、ディジタル信号に変換されたストローク位置ＳＤｉをレジスタＡＭＰ（ｉ）に格納する。そして、レジスタＴ（ｉ）に時間カウンタｔの値を格納し、レジスタＴＭＳＵＭ（ｉ）の値をレジスタＴＭ（ｉ）だけ増加する。レジスタＴＭ（ｉ）には、初期設定において０がセットされいる。
【００４７】
その後、レジスタＴＭ（ｉ）には、レジスタＴ（ｉ）からレジスタＴ’（ｉ）を引いた値が格納される。レジスタＴ’（ｉ）は、前回のストローク位置検出を行った際の時間を示す。つまり、レジスタＴＭ（ｉ）には、ストローク位置検出を行う間隔の時間が格納される。
【００４８】
次に、後に説明する計算フローの処理を行うことにより、奏法の種類を表す奏法データＤＭＡＸ（ｉ）が求められる。そして、ストローク位置のレジスタＡＭＰ（ｉ）を０にクリアして、レジスタＴ’（ｉ）に現時間を表すレジスタＴ（ｉ）の値を格納する。そして、ステップＦＭ６へ進む。
【００４９】
ステップＦＭ６では、キーオン信号またはキーオフ信号を楽音発生回路（音源）に送出する処理や算出された奏法データＤＭＡＸ（ｉ）に応じた楽音パラメータを設定して、楽音発生回路（音源）に送出する処理を行う。。詳細は後述する。その後、レジスタｉをインクリメントして、ステップＦＭ７へ進む。
【００５０】
ステップＦＭ７では、レジスタｉの値が８８より大きいか否かを調べる。レジスタｉが８８より大きくなければ、鍵盤上の８８鍵全ての鍵についての処理が終了していないので、ステップＦＭ８へ進みレジスタＫが所定値Ｄであるか否かを調べる。レジスタＫが所定値Ｄであれば、ステップＦＭ４へ戻り次の鍵についてストローク位置の検出処理を繰り返す。一方、ステップＦＭ８においてレジスタＫが所定値Ｄでなければ、ステップＦＭ６へ戻り次の鍵についてキーオン信号またはキーオフ信号の送出等の処理を繰り返す。
【００５１】
ステップＦＭ７において、レジスタｉが８８より大きければ、鍵盤上の８８鍵全ての鍵についての処理が終了したことを示すので、ステップＦＭ９へ進みレジスタＫをインクリメントする。
【００５２】
ステップＦＭ１０では、レジスタＫが所定値Ｄ＋１であるか否かを調べる。レジスタＫが所定値Ｄ＋１であれば、ステップＦＭ１１へ進みレジスタＫを０にクリアしてステップＦＭ１２へ進む。一方、レジスタＫが所定値Ｄ＋１でなければ、そのままステップＦＭ１２へ進む。すなわちレジスタＫはＤ毎にカウントを繰り返す。
【００５３】
ステップＦＭ１２では、キースイッチの操作に応じたパラメータの設定処理を行い、音色や効果等の楽音制御を行う。また、メインルーチンの終了処理等の演奏に必要なその他の処理を行い、ステップＦＭ２へ戻り処理を繰り返す。
【００５４】
図１２は、図１１のメインルーチンのステップＦＭ４中の計算フローの処理を示すフローチャートである。ステップＦＫ１において、レジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）は、ストローク位置を格納するレジスタであり、ＡＭＰ１（ｉ）からＡＭＰ８（ｉ）に向けて数字が大きくなる程昔のストローク位置を示す。
【００５５】
レジスタＶｅｌ１（ｉ）〜Ｖｅｌ８（ｉ）はストローク位置の変化速度を格納するためのレジスタであり、Ｖｅｌ１（ｉ）からＶｅｌ８（ｉ）に向けて数字が大きくなる程昔のストローク位置の変化速度を示す。
【００５６】
それぞれ８つのレジスタＶｅｌ１（ｉ）〜Ｖｅｌ８（ｉ）とレジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）はシフトレジスタの機能を果たし、初期設定ではそれぞれのレジスタが０にクリアされている。レジスタＶｅｌ７（ｉ）の値はレジスタＶｅｌ８（ｉ）に退避され、レジスタＡＭＰ７（ｉ）の値はレジスタＡＭＰ８（ｉ）に退避される。このようなシフトレジスタ処理を７組について行うことにより、各レジスタに格納されている値がＶｅｌ１（ｉ）からＶｅｌ８（ｉ）に向けてまたはＡＭＰ１（ｉ）からＡＭＰ８（ｉ）に向けてシフトする。各レジスタには、以下の値が格納される。
【００５７】
【数１】
Ｖｅｌ８（ｉ）←Ｖｅｌ７（ｉ）
ＡＭＰ８（ｉ）←ＡＭＰ７（ｉ）
Ｖｅｌ７（ｉ）←Ｖｅｌ６（ｉ）
ＡＭＰ７（ｉ）←ＡＭＰ６（ｉ）
Ｖｅｌ６（ｉ）←Ｖｅｌ５（ｉ）
ＡＭＰ６（ｉ）←ＡＭＰ５（ｉ）
Ｖｅｌ５（ｉ）←Ｖｅｌ４（ｉ）
ＡＭＰ５（ｉ）←ＡＭＰ４（ｉ）
Ｖｅｌ４（ｉ）←Ｖｅｌ３（ｉ）
ＡＭＰ４（ｉ）←ＡＭＰ３（ｉ）
Ｖｅｌ３（ｉ）←Ｖｅｌ２（ｉ）
ＡＭＰ３（ｉ）←ＡＭＰ２（ｉ）
Ｖｅｌ２（ｉ）←Ｖｅｌ１（ｉ）
ＡＭＰ２（ｉ）←ＡＭＰ１（ｉ）
そして、レジスタＶｅｌ１（ｉ）には、最新に得られたストローク位置と１つ前のストローク位置の変化を示す次式の速度データが格納される。
【００５８】
【数２】
Ｖｅｌ１（ｉ）←｛ＡＭＰ（ｉ）−ＡＭＰ１（ｉ）｝／ＴＭ（ｉ）
・・・（２）
ここで、レジスタＡＭＰ（ｉ）は最新のストローク位置であり、レジスタＡＭＰ１（ｉ）は１つ前のストローク位置である。レジスタＴＭ（ｉ）は、ストローク位置検出が行われる間隔の時間を示す。
【００５９】
その後、レジスタＡＭＰ１（ｉ）に現在のストローク位置を示すレジスタＡＭＰ（ｉ）の値を格納する。ステップＦＫ２では、レジスタＡＭＰ８（ｉ）の値が所定値より大きいか否かを調べる。所定値とはノイズレベルを示し、レジスタＡＭＰ８（ｉ）にノイズレベルより大きな値が格納されていれば、レジスタＡＭＰ１（ｉ）から順番にレジスタ間をシフトされてきたことを示す。
【００６０】
レジスタＡＭＰ８（ｉ）が所定値より大きくなければ、レジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）にストローク位置のデータがまだ７つ以下しか入力されていないことを示すので、処理端子Ａへ進み図１１のメインルーチンの処理へ戻る。一方、レジスタＡＭＰ８（ｉ）が所定値より大きければ、レジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）にデータが８つ入力されたことを示すので、ステップＦＫ３へ進む。
【００６１】
ステップＦＫ３において、レジスタＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）は、ストロークの速度を示すレジスタＶｅｌ１（ｉ）〜Ｖｅｌ８（ｉ）の平均速度を格納するためのレジスタである。
【００６２】
所定値ｎ個のレジスタＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）がシフトレジスタの機能を果たし、初期設定ではそれぞれのレジスタが０にクリアされている。シフトレジスタ処理をｎ組について行うために、以下の処理を行う。
【００６３】
【数３】
ＶｅｌＡｖｅｎ（ｉ）←ＶｅｌＡｖｅｎ−１（ｉ）
ＶｅｌＡｖｅｎ−１（ｉ）←ＶｅｌＡｖｅｎ−２（ｉ）
：ＶｅｌＡｖｅ１（ｉ）←ＶｅｌＡｖｅ（ｉ）
そして、以下の演算により８つの速度Ｖｅｌ１（ｉ）〜Ｖｅｌ８（ｉ）の平均速度を求めて、レジスタＶｅｌＡｖｅ（ｉ）に格納する。
【００６４】
【数４】
ＶｅｌＡｖｅ（ｉ）←｛Ｖｅｌ１（ｉ）＋Ｖｅｌ２（ｉ）＋Ｖｅｌ３（ｉ）＋Ｖｅｌ４（ｉ）＋Ｖｅｌ５（ｉ）＋Ｖｅｌ６（ｉ）＋Ｖｅｌ７（ｉ）＋Ｖｅｌ８（ｉ）｝／８ ・・・（４）
ステップＦＫ４では、８つのレジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）を０にリセットし、レジスタＦＳＥＴ（ｉ）をインクリメントする。レジスタＦＳＥＴ（ｉ）は、ストローク位置の検出中であることを示すレジスタであり、レジスタＦＳＥＴ（ｉ）のカウントが所定値ｎに達したら検出は終了する。
【００６５】
ステップＦＫ５では、レジスタＦＳＥＴ（ｉ）が所定値ｎか否かを調べる。レジスタＦＳＥＴ（ｉ）が所定値ｎでなければ、レジスタＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）の全てに平均速度の値が入力されていないので、処理端子Ａへ進み図１１のメインルーチンの処理へ戻る。一方、レジスタＦＳＥＴ（ｉ）が所定値ｎであれば、レジスタＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）の全てに平均速度の値が入力されたことを示すので、処理端子Ｂへ進む。
【００６６】
図１３は、計算フロー処理の処理端子Ａと処理端子Ｂに続く処理を示すフローチャートである。処理端子Ａからは、図１１のメインルーチンの処理へ戻る。処理端子Ｂからは、ステップＦＫ７へ進み、次式によりマクロ平均速度Ｖｅｌ（ｉ）を求める。
【００６７】
【数５】
Ｖｅｌ（ｉ）←｛ＶｅｌＡｖｅ１（ｉ）＋・・・＋ＶｅｌＡｖｅｎ（ｉ）｝／ｎ上式のマクロ平均速度Ｖｅｌ（ｉ）はｎ個のミクロ平均速度ＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）の平均をとったものであるが、次式により最初のミクロ平均速度ＶｅｌＡｖｅ１（ｉ）と最後のミクロ平均速度ＶｅｌＡｖｅｎ（ｉ）の平均をとってもよい。
【００６８】
【数６】
Ｖｅｌ（ｉ）←｛ＶｅｌＡｖｅ１（ｉ）＋ＶｅｌＡｖｅｎ（ｉ）｝／２ステップＦＫ８では、カウンタｍに１をセットして、ステップＦＫ９へ進む。カウンタｍは、１からｎまで変化する補間用のカウンタである。
【００６９】
ステップＦＫ９では、次式により補間平均速度ＶｅｌＩＰ（ｉ，ｍ）を求める。補間平均速度ＶｅｌＩＰ（ｉ，ｍ）は、１からｎまでの間の補間位置ｍにおける平均速度を示す。つまり、直線補間を行った平均速度を示す。
【００７０】
【数７】
ＶｅｌＩＰ（ｉ，ｍ）←ＶｅｌＡｖｅ１（ｉ）＋ｍ｛ＶｅｌＡｖｅｎ（ｉ）−ＶｅｌＡｖｅ１（ｉ）｝／ｎステップＦＫ１０では、補間位置ｍにおける差分速度ＤＭＡＸ（ｉ，ｍ）と補間位置ｍ＋１における差分速度ＤＭＡＸ（ｉ，ｍ＋１）を次式によりそれぞれ求める。つまり、ミクロ平均速度が直線的に変化しているほど差分速度ＤＭＡＸ（ｉ，ｍ）は小さな値となる。
【００７１】
【数８】
ＤＭＡＸ（ｉ，ｍ）←ＶｅｌＩＰ（ｉ，ｍ）−ＶｅｌＡｖｅ（ｉ，ｍ）ＤＭＡＸ（ｉ，ｍ＋１）←ＶｅｌＩＰ（ｉ，ｍ＋１）−ＶｅｌＡｖｅ（ｉ，ｍ＋１）
ステップＦＫ１３では、差分速度ＤＭＡＸ（ｉ，ｍ＋１）が差分速度ＤＭＡＸ（ｉ，ｍ）より大きいか否かを調べる。大きければステップＦＫ１５へ進み差分最大値ＤＭＡＸ（ｉ）に差分速度ＤＭＡＸ（ｉ，ｍ＋１）を格納し、大きくなければステップＦＫ１４へ進み差分最大値ＤＭＡＸ（ｉ）に差分速度ＤＭＡＸ（ｉ，ｍ）を格納する。これにより、最大の差分速度が差分最大値ＤＭＡＸ（ｉ）に格納される。
【００７２】
ステップＦＫ１６では、カウンタｍをインクリメントしてステップＦＫ１７へ進む。ステップ１７では、カウンタｍがｎであるか否かを調べる。ｎでなければステップＦＫ９へ進み、再びカウンタｍについての処理を繰返し、ｎであれば処理の終了を示すのでステップＦＫ１８へ進む。
【００７３】
ステップＦＫ１８では、レジスタＦＳＥＴ（ｉ），ｍ，ＶｅｌＩＰ（ｉ，ｍ），ＶｅｌＩＰ（ｉ，ｍ＋１），ＤＭＡＸ（ｉ，ｍ），ＤＭＡＸ（ｉ，ｍ＋１）等の各種レジスタをリセットする。その後、図１１のメインルーチンの処理へ戻る。
【００７４】
以上の計算フローの処理により求められた差分最大値ＤＭＡＸ（ｉ）の値が演奏手法の種類を示す。差分最大値ＤＭＡＸ（ｉ）が大きいほど、ストローク位置の変化を示すグラフにおけるカーブが大きな曲がりを示すことになるので、スタッカート的な奏法を示す。逆に、差分最大値ＤＭＡＸ（ｉ）が小さいほど、ストローク位置の変化を示すグラフのカーブが小さな曲がりを示すことになるので、テヌート的な奏法であることを示す。
【００７５】
この差分最大値ＤＭＡＸ（ｉ）を図２に示した楽音制御量変換テーブルの縦軸の奏法として、楽音制御量のテーブルから楽音制御量の係数を引き出すことにより、楽音が制御される。
【００７６】
なお、奏法は差分最大値ＤＭＡＸ（ｉ）の値を用いる場合に限られず、ステップＦＫ１０の後に差分積分値ＤＭＡＸＳＵＭ（ｉ）を次式により求めて、差分積分値によって奏法を判断することも可能である。
【００７７】
【数９】
ＤＭＡＸＳＵＭ（ｉ）←ＤＭＡＸＳＵＭ（ｉ）＋ＤＭＡＸ（ｉ，ｍ）
差分積分値ＤＭＡＸＳＵＭ（ｉ）は、それぞれ補間位置ｍにおける差分速度の積分値である。したがって、差分最大値ＤＭＡＸ（ｉ）と同様に、差分積分値ＤＭＡＸＳＵＭ（ｉ）が大きいほどスタッカート的な奏法となり、小さいほどテヌート的な奏法であることを示す。また、差分積分値ＤＭＡＸＳＵＭ（ｉ）をｎで割って差分速度の平均値から奏法を判断することもできる。
【００７８】
また、その他に差分最大値ＤＭＡＸ（ｉ）の時間的変位を表すＡＣＣ（ｉ）を用いて奏法を判断することもできる。図１３の計算フローの処理のステップＦＫ１０の後に次式によりＡＣＣ（ｉ，ｍ）を求める。
【００７９】
【数１０】
ＡＣＣ（ｉ，ｍ）←｜ＤＭＡＸ（ｉ，ｍ）−ＤＭＡＸ（ｉ，ｍ＋１）｜求められたＡＣＣ（ｉ，ｍ）の最大値を算出することにより、演奏データＡＣＣ（ｉ）が求められる。最大値の代わりに積分値を算出したり、その積分値の平均値を算出することにより奏法を判断することもできる。ＡＣＣ（ｉ）は、差分速度ＤＭＡＸ（ｉ，ｍ）の時間的変位を表すので、ＡＣＣ（ｉ）が大きいほど、ストローク位置の変化を示すグラフのカーブが大きな曲がりを示し、スタッカート的な奏法を示す。逆にＡＣＣ（ｉ）が小さいほどテヌート的な奏法であることを示す。
【００８０】
図６〜９の時間経過に対するストローク位置の変化を表すグラフについて、以上の計算フローの処理を行った結果について説明する。図６において、ｎ＝１５（１０進数）回の処理を行ったときの差分積分値ＤＭＡＸＳＵＭ（ｉ）は１４００ｈとなり、その差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値は１５５ｈとなる。図７において、ｎ＝１２（１０進数）回の処理を行ったときの差分積分値ＤＭＡＸＳＵＭ（ｉ）は１２１８ｈとなり、その差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値は１８２ｈとなる。したがって、速度データＶＥＬ＝３８ｈにおいて、差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値はテヌート奏法よりもスタッカート奏法の方が差分速度の平均値が大きいことを確かめることができる。
【００８１】
また、図８において、ｎ＝７（１０進数）回の処理を行ったときの差分積分値ＤＭＡＸＳＵＭ（ｉ）は６００ｈとなり、その差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値はｄｂｈとなる。図９において、ｎ＝５（１０進数）回の処理を行ったときの差分積分値ＤＭＡＸＳＵＭ（ｉ）は１２８０ｈとなり、その差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値は３ｂ３ｈとなる。したがって、速度データＶＥＬ＝５０ｈにおいて、差分速度の平均値はテヌート奏法よりもスタッカート奏法の方が差分速度の平均値が大きいことを確かめることができる。
【００８２】
以上のように速度データＶＥＬが同じであっても差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値を求めることにより、奏法の相違を判断することができる。つまり、差分積分値ＤＭＡＸＳＵＭ（ｉ）の平均値が大きいほどスタッカート的であり、小さいほどテヌート的な奏法である。
【００８３】
図１４は、図１３の計算フローの処理において用いた処理回数ｎの設定処理を示すサブルーチン２のフローチャートである。前述の計算フローの処理では処理回数ｎの値は所定値として説明したが、図１３のステップＦＫ４の後に以下の処理を行うことにより処理回数ｎを適正な値に設定することができる。
【００８４】
まず、ステップＦＣ１においてレジスタＦＳＥＴ（ｉ）が１であるか否かを調べる。レジスタＦＳＥＴ（ｉ）が１であれば最初の処理であるので、ステップＦＣ２へ進み処理回数ｎの設定を行う。一方、レジスタＦＳＥＴ（ｉ）が１より大きければ処理回数ｎの設定を行う必要はないので、そのまま図１３の計算フローの処理へ戻る。
【００８５】
ステップＦＣ２では、レジスタＩＶＥＬ（ｉ）に速度データを示すレジスタＶｅｌ１（ｉ）の値を格納する。そして、レジスタＩＶＥＬ（ｉ）の値を基にしてテーブルからテーブル値ＴＢＬ（ＩＶＥＬ（ｉ））を引き出して、レジスタｎに格納し、処理回数を設定する。その後、図１３の計算フローの処理へ戻る。
【００８６】
以上のように、速度データＶｅｌ１（ｉ）に応じて処理回数ｎを決める。一般的に押鍵速度が速ければ、押鍵を始めてから発音されるまでの時間が短くなる。逆に、押鍵速度が遅くなるほど、押鍵を始めてから発音されるまでの時間が長くなる。したがって、押鍵速度が速い場合においては、処理回数ｎを少なくしなければ発音のタイミングに間に合わなくなってしまう。逆に、押鍵速度が遅い場合においては、処理回数ｎを多くしても発音のタイミングに間に合わせることができる。
【００８７】
なお、レジスタＩＶＥＬ（ｉ）には初期の速度Ｖｅｌ１（ｉ）のみを用いたが、それに代えて、例えば初期の３つの速度Ｖｅｌ１（ｉ）〜Ｖｅｌ３（ｉ）の平均値を格納するなど、複数の速度データの値を用いてもよい。また、レジスタＩＶＥＬ（ｉ）の値を決めるのに上述のミクロ平均速度ＶｅｌＡｖｅ（ｉ）を用いてもよい。
【００８８】
図１５は、奏法と速度データの算出例（１）を示すサブルーチン３のフローチャートである。速度データＶＥＬ’（ｉ）と奏法ＴＳＵＭ（ｉ）の算出手順を示す以下の処理を図１２のステップＦＫ１の後に行い、ステップＦＫ５〜ＦＫ１８の処理は行わないこととする。また、図１４の処理回数ｎの設定の処理は行わない。
【００８９】
ステップＦＤ１において、ストローク位置ＡＭＰ２（ｉ）が所定値Ｃより小さくて、かつストローク位置ＡＭＰ（ｉ）が所定値Ｃ以上の条件を満たせば、鍵が一定のストローク位置以上押し込まれたことを示すので、ステップＦＤ２へ進み、変換テーブルの入力値ＴＳＵＭ（ｉ）とＶＥＬ’（ｉ）を求める。一方、条件を満たさなければ、そのまま図１２の計算フローの処理へ戻る。
【００９０】
ステップＦＤ２では、ＴＳＵＭ（ｉ）に押鍵操作を開始してからの時間ＴＭＳＵＭ（ｉ）を格納する。そして、最新のストローク位置ＡＭＰ（ｉ）の速度データＶＥＬ’（ｉ）を次式により求める。その後、図１２の計算フローの処理へ戻る。
【００９１】
【数１１】
ＶＥＬ’＝｛ＡＭＰ（ｉ）−オフセット値｝／ＴＭＳＵＭ（ｉ）
ＴＳＵＭ（ｉ）は、押鍵を開始してから所定のストローク位置に達するまでの時間を表し、この時間に応じて奏法を判断する。図２の楽音制御量変換テーブルにおいて、横軸に速度データＶＥＬ’（ｉ）とし、縦軸を奏法ＴＳＵＭ（ｉ）として表引きを行うことにより、楽音制御量が決定される。
【００９２】
図１６は、奏法と速度データの算出例（２）を示す奏法抽出フローのフローチャートである。図１５のサブルーチン３とは別の方法で奏法ＴＳＵＭ（ｉ）と速度データＶＥＬ’（ｉ）を求める手順を示す。図１２の計算フローの処理の代わりに以下の奏法抽出フローの処理を行う。
【００９３】
ステップＦＫ１では、計算フローと同様に、８つの速度のレジスタＶｅｌ１（ｉ）〜Ｖｅｌ８（ｉ）とストローク位置のレジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）のそれぞれについてシフトレジスタ処理を行い、数式２の速度データＶｅｌ１（ｉ）とストローク位置ＡＭＰ１（ｉ）を求める。
【００９４】
ステップＦＫ２では、ＡＭＰ８（ｉ）が所定値よりも大きいか否かを調べて、ノイズレベルを越えているかを判断する。所定値よりも大きければステップＦＫ３へ進み、所定値よりも大きくなければ図１１のメインルーチンの処理へ戻る。
【００９５】
ステップＦＫ３では、計算フローの処理のときと同様に平均速度を表すｎ個のレジスタＶｅｌＡｖｅ１（ｉ）〜ＶｅｌＡｖｅｎ（ｉ）についてシフトレジスタ処理を行い、数式４のミクロ平均速度ＶｅｌＡｖｅ（ｉ）を求める。そして、ステップＦＫ４’では、８つのレジスタＡＭＰ１（ｉ）〜ＡＭＰ８（ｉ）をリセットする。
【００９６】
ステップＦＫ２０では、今回得られたミクロ平均速度ＶｅｌＡｖｅ（ｉ）と前回得られたミクロ平均速度ＶｅｌＡｖｅ１（ｉ）の差分の絶対値が所定値よりも大きいか否かを調べる。大きければ所定の変位が検出されたことを示すのでステップＦＫ２１へ進む。一方、大きくなければ図１１のメインルーチンの処理へ戻る。
【００９７】
ステップＦＫ２１では、ＴＳＵＭ（ｉ）に押鍵操作を開始してからの時間ＴＭＳＵＭ（ｉ）を格納する。そして、最新のストローク位置ＡＭＰ（ｉ）の速度データＶＥＬ’（ｉ）を次式により求める。
【００９８】
【数１２】
ＶＥＬ’＝｛ＡＭＰ（ｉ）−オフセット値｝／ＴＭＳＵＭ（ｉ）
ステップＦＫ１８’では、各種レジスタのリセットを行い、その後図１１のメインルーチンの処理へ戻る。
【００９９】
なお、ステップＦＫ２０では、２つのミクロ平均速度ＶｅｌＡｖｅ１（ｉ）、ＶｅｌＡｖｅ（ｉ）を用いて判断を行ったが、３つ以上のミクロ平均速度を用いて判断すれば、より細かな奏法の態様を判断することができる。
【０１００】
図１７は、図１５のサブルーチン３で用いたしきい値Ｃの設定処理を行うサブルーチン４のフローチャートである。このサブルーチン４の処理を行う際には、図１４のサブルーチン２と図１５のサブルーチン３の処理を併用する。そして、図１４のサブルーチン２のステップＦＣ２の後に以下の処理を行う。
【０１０１】
サブルーチン２のステップＦＣ２において求められたＩＶＥＬ（ｉ）を用いてテーブルからテーブル値ＴＢＬ１（ＩＶＥＬ（ｉ））を引き出し、しきい値を示すＣの設定を行う。その後、図１４のサブルーチン２の処理へ戻り、図１５のサブルーチン３において、しきい値Ｃとの比較を行う。
【０１０２】
図１８は、図２の変換テーブルに用いる他の速度データＶＥＬ”（ｉ）の算出例を示すサブルーチン５のフローチャートである。図１２の計算フローの処理のステップＦＫ１の後に以下の処理を行う。この際に図１４のサブルーチン２の処理は行っても行わなくてもよい。
【０１０３】
ステップＦＥ１において、レジスタＦＳＥＴ（ｉ）が１以上でかつＴＭＳＵＭ（ｉ）が所定値よりも大きいことの条件を満たせば、押鍵を開始してから所定時間が経過したことを示すのでステップＦＥ２へ進み、条件を満たさなければそのまま図１２の計算フローの処理へ戻る。
【０１０４】
ステップＦＥ２では、所定時間経過後の速度データＶＥＬ”（ｉ）を次式により求める。その後、図１２の計算フローの処理へ戻る。
【０１０５】
【数１３】
ＶＥＬ”＝｛ＡＭＰ（ｉ）−オフセット値｝／ＴＭＳＵＭ（ｉ）
速度データＶＥＬ”（ｉ）は、押鍵されてから所定時間経過後のストローク位置ＡＭＰ（ｉ）を用いることにより、押鍵操作における初期の速度を求めたものである。速度データＶＥＬ”（ｉ）を図２の変換テーブルの横軸として、初期速度ＶＥＬ”（ｉ）に応じて楽音の制御を行う。
【０１０６】
なお、以上の奏法または速度データは、押鍵操作から一定時間を経過するまで、または一定のストローク位置を越えるまでのデータのみを用いるだけでもよい。図６、図７、図８、図９に示すように奏法による相違の特徴は押鍵後の最初の部分に現れるので、その特徴部分を抽出するだけでもよい。
【０１０７】
また、速度データＶＥＬは、鍵の第１接点がオンになってから第２接点がオンになるまでの速度であるのに対して、速度データＶＥＬ’やＶＥＬ”は押鍵操作のうちの初期速度を表す。
【０１０８】
そこで、楽音制御量の変換テーブルは、速度データＶＥＬと初期速度ＶＥＬ’と奏法ＤＭＡＸＳＵＭ等の３次元以上の値を入力として制御量を求めてもよい。図１９は、図１１のメインルーチンのステップＦＭ６におけるキーオン信号やキーオフ信号を楽音発生回路（音源）に送出する処理等を示すフローチャートである。
【０１０９】
ステップＦＢ１では、カウンタｉを０から８８まで変化させて全ての鍵についての第１接点と第２接点の変化をウォッチする。ステップＦＢ２では、今回ウォッチ中の接点データにおいて第１接点がオン中か否かを調べる。オン中であればステップＦＢ３へ進み、オン中でなければステップＦＢ９へ進む。
【０１１０】
ステップＦＢ３では、今回ウォッチ中の接点データにおいて第１接点にオンイベントが発生していれば、第１接点がオフからオンに変化したことを示すので、ステップＦＢ４へ進み、フラグＰＲＥＰ（ｉ）を１にセットし、図１０のタイマインタラプト処理でカウントされる現時間ｔ（ｉ）をレジスタＴ（ｉ）に格納する。その他、発音準備に必要な処理を行い、ステップＦＢ５へ進む。一方、ステップＦＢ３において、第１接点にオンイベントが発生していなければ、バイパスしてステップＦＢ５へ進む。
【０１１１】
ステップＦＢ５では、今回ウォッチ中の接点データにおいて、第２接点がオン中か否かを調べる。第２接点がオン中でなければ、以下の処理をバイパスしてステップＦＢ１３へ進み、第２接点がオン中であればステップＦＢ６へ進む。
【０１１２】
ステップＦＢ６では、フラグＰＲＥＰ（ｉ）が１であるか否かを調べる。フラグＰＲＥＰ（ｉ）が１でなければ、既にキーオンデータまたはキーオフデータを楽音発生回路に送出したことを示すので、以下の処理をバイパスしてステップＦＢ１３へ進む。一方、フラグＰＲＥＰ（ｉ）が１であればステップＦＢ７へ進む。
【０１１３】
ステップＦＢ７では、キーオンデータ、キーデータ（キーコード）、速度データＶＥＬ（ｉ）を楽音発生回路（音源）のｉチャンネルへ送出する。速度データＶＥＬは、鍵の第１接点がオンになってから第２接点がオンになるまでの速度を示す。
【０１１４】
速度データＶＥＬ（ｉ）は次式により求められる。ここで、時間Ｔ（ｉ）は、第１接点がオンになった時間を示し、時間ｔ（ｉ）は第２接点がオンになった現時間を示す。
【０１１５】
【数１４】
ＶＥＬ（ｉ）＝１／｛ｔ（ｉ）−Ｔ（ｉ）｝
ステップＦＢ８では、前述で求められた奏法データＤＭＡＸやＤＭＡＸＳＵＭ等から図２に示すような楽音制御量変換テーブルを参照して、音量や音色等を制御する楽音パラメータを決定する。そして、その楽音パラメータを楽音発生回路のｉチャンネルへ送出する。その後、ステップＦＢ１２においてフラグＰＲＥＰ（ｉ）を０にリセットして、ステップＦＢ１３へ進む。
【０１１６】
ステップＦＢ１３では、他のキーデータがあるか否かを調べる。他のキーデータがあれば、ステップＦＢ１へ戻り同様の処理を繰り返す。一方、他のキーデータがなければ図１１のメインルーチンへ戻る。
【０１１７】
ステップＦＢ９は、今回ウォッチ中の接点データにおいて第１接点がオン中でないときの処理であり、さらに第１接点にオフイベントが発生しているか否かを調べる。第１接点にオフイベントが発生していなければ、以下の処理をバイパスしてステップＦＢ１３へ進む。一方、第１接点にオフイベントが発生していれば、ステップＦＢ１０へ進む。
【０１１８】
ステップＦＢ１０では、キーオフ信号を楽音発生回路（音源）のｉチャンネルに送出する。その後、ステップＦＢ１１において、奏法データＤＭＡＸやＤＭＡＸＳＵＭ等から図２に示すような楽音制御量変換テーブルを参照して、楽音パラメータを決定する。そして、その楽音パラメータを楽音発生回路のｉチャンネルへ送出する。その後、ステップＦＢ１２においてフラグＰＲＥＰ（ｉ）を０にリセットして、ステップＦＢ１３へ進む。ここで、フラグＰＲＥＰ（ｉ）を０にリセットしているのは、第１接点がオンした後に第２接点がオンしないまま第１接点がオフする場合もあり得るからである。
【０１１９】
ステップＦＢ１３では、他のキーデータがあるか否かを調べる。他のキーデータがあれば、ステップＦＢ１へ戻り同様の処理を繰り返す。一方、他のキーデータがなければ図１１のメインルーチンへ戻る。
【０１２０】
時間に対して鍵のストロークがリニアに変化する場合を基準として鍵の運動の非線形度を判断する場合を説明したが、他の基準を用いて非線形度を判断することもできる。例えば、下に凸か上に凸か、時間経過に対するストローク変化の曲率等を利用してもよい。複数の基準を併せて用いてもよい。また、奏法の変化が、従来以上に、ストローク変化に明確に現れる鍵盤を用いてもよい。
【０１２１】
図２０は、押鍵操作により鍵のストローク位置を検出するキーストローク検出センサを示す。鍵盤は、白鍵２１Ｗと黒鍵２１Ｂを有する。白鍵２１Ｗと黒鍵２１Ｂは、それぞれ軸２０を支点として支持部材２９に対して回転運動をする。白鍵用ストロークセンサ２２Ｗと黒鍵用ストロークセンサ２２Ｂは、支持部材２９に固定されている。
【０１２２】
白鍵２１Ｗを押鍵すると、白鍵用ストロークセンサ２２Ｗがそのストローク位置を検出する。白鍵２１Ｗの押鍵に従い、シャッター板２３Ｗが白鍵用ストロークセンサ２２Ｗ内を移動する。白鍵用ストロークセンサ２２Ｗは、シャッター板２３Ｗの移動位置に応じた出力を行う。
【０１２３】
白鍵用ストロークセンサ２２Ｗはセンサ内の光源からの光がシャッター板２３Ｗを通過する光量に応じて白鍵２１Ｗのストローク位置を検出する。シャッター板２３Ｗはグレースケールとなっており、シャッター板２３Ｗの位置により通過する光量は変化する。
【０１２４】
同様に黒鍵２１Ｂの押鍵に従い、シャッター板２３Ｂが黒鍵用ストロークセンサ２２Ｂ内を移動する。黒鍵用ストロークセンサ２２Ｂは、シャッター板２３Ｂの移動位置に応じた出力を行い、黒鍵２１Ｂのストローク位置を検出する。
【０１２５】
質量体２４は、支持部材２９に対して移動自在に支持され、自然楽器のピアノのハンマの機構を擬似したものである。白鍵２１Ｗが押鍵されると、白鍵２１Ｗは被駆動部３８Ｗに当たりウレタンゴムへの衝撃を介して、白鍵の質量体に力を伝える。黒鍵２１Ｂが押鍵されると、黒鍵２１Ｂは被駆動部３８Ｂに当たりウレタンゴムへの衝撃を介して、黒鍵の質量体に力を伝える。質量体２４に力が加わると、質量体は移動し支持部材２９に対して相対位置が変化する。
【０１２６】
黒鍵の被駆動部３８Ｂは、白鍵の被駆動部３８Ｗより上に位置している。これは、白鍵と黒鍵の鍵操作のタッチ感触を同一にするためである。質量体２４が自然楽器のハンマの機構を擬似しているので、白鍵２１Ｗまたは黒鍵２１Ｂが押鍵されると、最初は押鍵の手応えが軽く暫くして手応えが重くなる。演奏者は、自然楽器のピアノと同じ様な押鍵操作時のタッチ感覚を得ることができる。また、弱い押鍵操作では、タッチ感触の変化が少なく線形的である。
【０１２７】
第１接点３７Ａと第２接点３７Ｂは、支持部材２９に固定されている。押鍵操作に応じてまず第１接点３７Ａがオンとなり、さらに鍵を深く押し込むと第２接点３７Ｂがオンとなる。
【０１２８】
図２１（Ａ）は、キーストローク検出センサの構成を示す。キーストローク検出センサ２６は、ＬＥＤ２７とフォトトランジスタ２８を有する。図２１（Ｂ）に示すようにＬＥＤ２７が発する光をフォトトランジスタ２８が感知し、その光量に応じて電流がフォトトランジスタ２８のコレクタ−エミッタ間を流れる。
【０１２９】
ＬＥＤ２７とフォトトランジスタ２８の間は、シャッター板により遮られる。シャッター板はグレースケールとなっているので、鍵のストローク位置によりＬＥＤ２７からシャッター板を介してフォトトランジスタ２８が受ける光量は変化する。
【０１３０】
図２２は、他のキーストローク検出センサの構成例を示す。図２０では、白鍵２１Ｗまたは黒鍵２１Ｂと支持部材２９との相対位置を検出するために、白鍵２１Ｗまたは黒鍵２１Ｂにそれぞれストロークセンサ用のシャッター板２３Ｗ，２３Ｂを設けた。
【０１３１】
図２２は、図２０に示す質量体２４と支持部材２９の相対位置を検出するストロークセンサを示す。質量体２４は、鍵に連動して支持部材に対して移動自在となっている。シャッター板４２は質量体２４に固定され、共通光源４１およびフォトダイオード４３は支持部材に固定されている。
【０１３２】
キーストローク検出センサは、共通光源４１、および各鍵のストロークに応じて移動するシャッター板４２と、各鍵に対応するフォトダイオード４３を有する。共通光源４１から発せられる光は、シャッター板４２を通過してフォトダイオード４３に照射される。シャッター板４２はグレースケールとなっており、鍵のストローク位置に応じてフォトダイオード４３に照射される光量が変化する。フォトダイオード４３には受ける光の量に応じて電流が流れるので、鍵のストローク位置を検出することができる。
【０１３３】
図２３は、他のキーストローク検出センサの構成例を示す。図２２と同様に、質量体と支持部材の相対位置を検出する。キーストローク検出センサは、シャッター板４６とフォトインタラプター４５を有する。シャッター板４６は質量体２４に固定され、フォトインタラプター４５は支持部材に固定されている。シャッター板４６は、鍵のストロークに応じてフォトインタラプター４５内の光源と受光素子の間を移動する。シャッター板４６はグレースケールとなっており、鍵のストローク位置に応じてフォトインタラプター４６に流れる電流が変化する。この電流値より鍵のストローク位置を検出することができる。
【０１３４】
図２４は、他のキーストローク検出センサの構成例を示す。白鍵５４Ｗまたは黒鍵５４Ｂを押鍵するとバネ５３がたわみ、押鍵された鍵を元の位置に戻そうとする方向に力が働く。このバネのたわみに応じてシャッタ板５２は支持部材２９に固定されたフォトインタラプター５１内の光源と受光素子の間を移動する。シャッター板５２はグレースケールとなっており、鍵のストローク位置に応じてフォトインタラプター５１に流れる電流が変化する。そして、この電流値より鍵のストローク位置を検出することができる。また、フォトリフレクタを用いて、バネ５３の偏位を検出して、鍵のストローク位置を検出してもよい。
【０１３５】
質量体２４は、支持部材２９に対して移動自在に支持され、自然楽器のピアノのハンマの機構を擬似したものである。白鍵５４Ｗが押鍵されると、白鍵５４Ｗは被駆動部３８Ｗに当たりウレタンゴムへの衝撃を介して、白鍵の質量体に力を伝える。黒鍵５４Ｂが押鍵されると、黒鍵５４Ｂは被駆動部３８Ｂに当たりウレタンゴムへの衝撃を介して、黒鍵の質量体に力を伝える。質量体２４に力が加わると、質量体は移動し支持部材２９に対して相対位置が変化する。
【０１３６】
第１接点３７Ａと第２接点３７Ｂは、支持部材２９に固定されている。押鍵操作に応じてまず第１接点３７Ａがオンとなり、さらに鍵を深く押し込むと第２接点３７Ｂがオンとなる。
【０１３７】
図２５は、他のキーストローク検出センサの構成例を示す。鍵３４を押鍵すると支持部材３３に支持されてバネ２５がたわみ、押鍵された鍵を元の位置に戻そうとする方向に力が働く。このバネのたわみに応じて、鍵のストローク位置を検出することができる。この際に、白鍵のストローク位置を検出するセンサ台３２は黒鍵のストローク位置を検出するセンサ台３１よりも高い位置にある。
【０１３８】
図２６は、白鍵が押鍵された際のバネ圧力と黒鍵が押鍵された際のバネ圧力の違いを示す。図２６（Ａ）は、黒鍵が押鍵されたときのバネ３５Ｂと黒鍵のストローク位置を検出するセンサのセンサ台３６Ｂを示す。図２６（Ｂ）は、白鍵が押鍵されたときのバネ３５Ｗと白鍵のストローク位置を検出するセンサのセンサ台３６Ｗを示す。ここで、黒鍵のセンサ台３６Ｂと白鍵のセンサ台３６Ｗが同じ高さにあるとする。すると、黒鍵の押鍵に比べて白鍵の押鍵の方が、バネのたわみが大きくバネの圧力が高くなる。したがって、図２５に示すように黒鍵のセンサ台３１よりも白鍵のセンサ台３２の方が高い位置にする必要がある。
【０１３９】
図２７は、他のキーストローク検出センサの構成例を示す。白鍵６１のストローク位置は、白鍵用センサ６３により検出され、黒鍵６２のストローク位置は、黒鍵用センサ６４により検出される。白鍵用センサ６３は反射式センサであり、白鍵６１の位置に応じて反射光等が変化するので、白鍵のストローク位置を検出することができる。また、黒鍵用センサ６４も反射式センサであり、同様にして黒鍵６２のストローク位置を検出することができる。
【０１４０】
白鍵６１が押鍵されると、白鍵６１は被駆動部３８Ｗに当たりウレタンゴムへの衝撃を介して、白鍵の質量体に力を伝える。黒鍵６２が押鍵されると、黒鍵６２は被駆動部３８Ｂに当たりウレタンゴムへの衝撃を介して、黒鍵の質量体に力を伝える。質量体２４に力が加わると、質量体は移動し支持部材２９に対して相対位置が変化する。
【０１４１】
第１接点３７Ａと第２接点３７Ｂは、支持部材２９に固定されている。押鍵操作に応じてまず第１接点３７Ａがオンとなり、さらに鍵を深く押し込むと第２接点３７Ｂがオンとなる。
【０１４２】
【発明の効果】
鍵操作に応じて時間的に変化する鍵の相対的位置を検出することにより、奏法を検出することができる。これにより、演奏態様に応じた楽音が生成できるので、演奏表現力を高めることができる。
【図面の簡単な説明】
【図１】 電子鍵盤楽器のシステム構成例を示すブロック図である。
【図２】 テーブルＲＯＭに設定する楽音制御量の例を示す図表である。
【図３】 奏法の相違により音量制御されるエンベロープ波形を示す波形図である。
【図４】 奏法の相違による立上がりの形状を制御させるエンベロープ波形を示す波形図である。
【図５】 音色制御に用いるフィルタの例を示す。図５（Ａ）はローパスフィルタ（ＬＰＦ）の周波数特性、図５（Ｂ）はバンドパスフィルタ（ＢＰＦ）の周波数特性、図５（Ｃ）はハイパスフィルタ（ＨＰＦ）の周波数特性を示すグラフである。
【図６】 速度データＶＥＬ＝３８（１６進数）のテヌート奏法におけるストローク位置の変化を示すグラフである。
【図７】 速度データＶＥＬ＝３８（１６進数）のスタッカート奏法におけるストローク位置の変化を示すグラフである。
【図８】 速度データＶＥＬ＝５０（１６進数）のテヌート奏法におけるストローク位置の変化を示すグラフである。
【図９】 速度データＶＥＬ＝５０（１６進数）のスタッカート奏法におけるストローク位置の変化を示すグラフである。
【図１０】 タイマインタラプトの処理を示すフローチャートである。
【図１１】 ＣＰＵが処理するメインルーチンを示すフローチャートである。
【図１２】 図１１のメインルーチンのステップＦＭ４中の計算フローの処理を示すフローチャートである。
【図１３】 図１２の計算フローの処理に続くフローチャートである。
【図１４】 図１３の計算フローの処理において用いた処理回数ｎの設定処理を示すフローチャートである。
【図１５】 奏法と速度データの算出例（１）を示すフローチャートである。
【図１６】 奏法と速度データの算出例（２）を示す奏法抽出フローのフローチャートである。
【図１７】 図１５のフローチャートで用いたしきい値Ｃの設定処理を行うフローチャートである。
【図１８】 速度データＶＥＬ"（ｉ）の算出例を示すフローチャートである。
【図１９】 図１１のメインルーチンのステップＦＭ６におけるキーオン信号やキーオフ信号を楽音発生回路（音源）に送出する処理等を示すフローチャートである。
【図２０】 押鍵操作により鍵のストローク位置を検出するキーストローク検出センサを示す概略図である。
【図２１】 図２１（Ａ）、（Ｂ）は、キーストローク検出センサの構成を示す概念図である。
【図２２】 他のキーストローク検出センサの構成例を示す概略図である。
【図２３】 他のキーストローク検出センサの構成例を示す概略図である。
【図２４】 他のキーストローク検出センサの構成例を示す概略図である。
【図２５】 他のキーストローク検出センサの構成例を示す概略図である。
【図２６】 図２６（Ａ）は黒鍵が押鍵されたときのバネを示す概念図であり、図２６（Ｂ）は白鍵が押鍵されたときのバネを示す概念図である。
【図２７】 他のキーストローク検出センサの構成例を示す概略図である。
【符号の説明】
１ キースイッチ、 ２ マルチプレクサ、 ３ バス、 ４ マイクロコンピュータ、 ５ ＣＰＵ、 ６ ＲＯＭ、 ７ ＲＡＭ、 ８音源、 ９ テーブルＲＯＭ、 １０Ｄ／Ａ変換器、 １１ 増幅器、１２ スピーカ、 Ｓ１〜Ｓ８８ ストロークセンサ、 ＡＤ１〜ＡＤ８８ Ａ／Ｄ変換器
【図１】
0003671926.tif 000002
【図２】
0003671926.tif 000003
【図３】
0003671926.tif 000004
【図４】
0003671926.tif 000005
【図５】
0003671926.tif 000006
【図６】
0003671926.tif 000007
【図７】
0003671926.tif 000008
【図８】
0003671926.tif 000009
【図９】
0003671926.tif 000010
【図１０】
0003671926.tif 000011
【図１１】
0003671926.tif 000012
【図１２】
0003671926.tif 000013
【図１３】
0003671926.tif 000014
【図１４】
0003671926.tif 000015
【図１５】
0003671926.tif 000016
【図１６】
0003671926.tif 000017
【図１７】
0003671926.tif 000018
【図１８】
0003671926.tif 000019
【図１９】
0003671926.tif 000020
【図２０】
0003671926.tif 000021
【図２１】
0003671926.tif 000022
【図２２】
0003671926.tif 000023
【図２３】
0003671926.tif 000024
【図２４】
0003671926.tif 000025
【図２５】
0003671926.tif 000026
【図２６】
0003671926.tif 000027
【図２７】
0003671926.tif 000028