(57)【特許請求の範囲】
【請求項１】
自動演奏イベントを発生する手段と、
自動演奏イベントに基づく駆動信号に従って鍵の駆動を開始する鍵駆動手段と、
鍵盤の動作を検出することにより演奏イベントを発生する検出手段と、
前記自動演奏イベントに基づく発音タイミングの前後であって、前記鍵の駆動開始から前記発音タイミングに至る期間より短い所定期間において、前記自動演奏イベントと同一の鍵について前記演奏イベントが発生した場合は当該演奏イベントを無効とする手段と、
前記演奏イベントであって無効となっていないもの、および前記自動演奏イベントの楽音形成処理を電子的な音源に指示する制御手段と
を具備したことを特徴とする電子鍵盤楽器。
【請求項２】
自動演奏イベントを発生する手段と、
自動演奏イベントに基づく駆動信号に従って鍵の駆動を開始する鍵駆動手段と、
鍵盤の動作を検出することにより演奏イベントを発生する検出手段と、
前記自動演奏イベントに基づく発音タイミングの前後の所定期間において前記自動演奏イベントと同一の鍵について前記演奏イベントが発生し、前記自動演奏イベントに基づくベロシティと前記演奏イベントによるベロシティが所定範囲内にある場合に、当該演奏イベントを無効とする手段と、
前記演奏イベントであって無効となっていないもの、および前記自動演奏イベントの楽音形成処理を電子的な音源に指示する制御手段と
を具備したことを特徴とする電子鍵盤楽器。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は自動演奏機能を備えた電子鍵盤楽器に関する。
【０００２】
【従来の技術】
自動的に演奏を行う楽器として、いわゆる自動演奏ピアノのように鍵盤の鍵を演奏データに従って駆動することによりピアノの打弦機構を動作させて音を出すタイプのものと、電子的な音源により演奏データに従って楽音信号を形成する演奏機能付き電子楽器とがある。
【０００３】
【発明が解決しようとする課題】
ところで、上述のもののうち自動演奏ピアノは自動演奏の際に鍵が動くので演奏を聴くだけでなく見て楽しむことができるという利点がある。しかしながら、自動演奏ピアノの場合、ピアノの音しか発音させることができず、また、高価でもある。一方、演奏機能付き電子楽器は、電子的な音源により多彩な楽音を発生させることができ、自動ピアノに比べれば安価ではあるが、自動演奏時に楽音しか発生されないため、演奏を見て楽しむということができない。
【０００４】
この発明は、このような背景の下でなされたものであり、自動演奏の際に楽音が発生されるのみならず、これと同期して該当する鍵が駆動され、演奏を聴くだけでなく見て楽しむことができる電子鍵盤楽器を提供することを目的としている。
【０００５】
【課題を解決するための手段】
請求項１にかかる発明は、自動演奏イベントを発生する手段と、自動演奏イベントに基づく駆動信号に従って鍵の駆動を開始する鍵駆動手段と、鍵盤の動作を検出することにより演奏イベントを発生する検出手段と、前記自動演奏イベントに基づく発音タイミングの前後であって、前記鍵の駆動開始から前記発音タイミングに至る期間より短い所定期間において、前記自動演奏イベントと同一の鍵について前記演奏イベントが発生した場合は当該演奏イベントを無効とする手段と、前記演奏イベントであって無効となっていないもの、および前記自動演奏イベントの楽音形成処理を電子的な音源に指示する制御手段とを具備したことを特徴とする。
【０００６】
請求項２にかかる発明は、自動演奏イベントを発生する手段と、
自動演奏イベントに基づく駆動信号に従って鍵の駆動を開始する鍵駆動手段と、
鍵盤の動作を検出することにより演奏イベントを発生する検出手段と、
前記自動演奏イベントに基づく発音タイミングの前後の所定期間において前記自動演奏イベントと同一の鍵について前記演奏イベントが発生し、前記自動演奏イベントに基づくベロシティと前記演奏イベントによるベロシティが所定範囲内にある場合に、当該演奏イベントを無効とする手段と、
前記演奏イベントであって無効となっていないもの、および前記自動演奏イベントの楽音形成処理を電子的な音源に指示する制御手段と
を具備したことを特徴とする。
【００１８】
【実施例】
以下、本発明を更に理解しやすくするため、実施例について説明する。かかる実施例は、本発明の一態様を示すものであり、この発明を限定するものではなく、本発明の範囲で任意に変更可能である。
【００１９】
＜第１実施例＞
Ａ．本実施例の構成
図１は本実施例による電子鍵盤楽器の構成を示すブロック図である。以下、この図を参照し、本実施例の構成について説明する。
【００２０】
（１）鍵盤、鍵駆動手段および検出手段
図１において、１は多数の鍵が配備されてなる鍵盤、２は自動演奏の際に鍵盤１を構成する各鍵を駆動するための鍵駆動回路である。また、３は押鍵検出回路であり、この押鍵検出回路３を介して鍵盤１の各鍵の押鍵、離鍵が検出され、キーイベント（演奏イベント）が発生される。このキーイベントは押離鍵された鍵の番号を表すキーコードと押離鍵の速度を表すベロシティを含んでいる。
【００２１】
図２は、鍵盤１における各鍵の取り付け構造を示すものであり、同図において１０１が鍵である。この図に示すように、鍵１０１は、支点１０２を中心に回動自在に支持されている。図２において鍵１０１の右端の部分が演奏者と対面する前端部であり、この部分はバネ１０３によって上方へ持上げられている。一方、鍵１０１の後端部の下方には駆動機構１０４が設けられている。この駆動機構１０４は鍵駆動のための手段としてソレノイド（図示略）を内蔵している。例えば押鍵駆動が行われる場合には、このソレノイドへの通電によって磁界が発生され、この磁界により鍵１０１の後端部下方に設けられた被駆動部１０４が上方へ突き上げ駆動され（矢印ｍ）、この突き上げ駆動により、鍵１０１の前端部がバネ１０３の反発力に抗して降下される（矢印Ｍ）。駆動機構１０４による突き上げ駆動がされていないときには、演奏者が行う押鍵、離鍵操作は、何の妨げも受けない。各鍵を押鍵駆動あるいは離鍵駆動するためには各鍵に対応した駆動機構１０４のソレノイドに対する通電制御を行う必要があるが、この通電制御は図１における鍵盤駆動回路２を介して行われる。
【００２２】
（２）操作および表示のための手段
４はこの電子鍵盤楽器の操作パネル面に配備された各種スイッチ類、５はこれらの各スイッチのオン／オフ状態を検知するためのスイッチ検出回路、６は操作パネル面上のディスプレイ（図示略）に演奏者に対する各種メッセージの表示を行わせるための表示回路である。
【００２３】
（３）楽音形成手段
７は電子的な構成により楽音信号を形成する音源回路である。この音源回路７によって形成された楽音信号は、効果回路８によって各種の音響的効果が付与され、サウンドシステムＳＳから楽音として発音される。これらの音源回路７、効果回路８およびサウンドシステムＳＳが本実施例における楽音形成手段を構成している。すなわち、本実施例は、上述のように鍵１０１を駆動するための鍵盤駆動回路２等を備えてはいるものの、これらによって行われる鍵駆動により打弦機構等を動作せしめて発音を行うものではなく、専らこの電子的な楽音形成手段によって楽音を出力するものである。
【００２４】
（４）制御手段
図１において、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２およびタイマ１３は、この電子鍵盤楽器の制御手段を構成している。すなわち、ＣＰＵ１０は、バスを介して図１に示される各部を制御することにより、この電子鍵盤楽器の所期の機能を提供するものである。ＲＯＭ１１はＣＰＵ１０によって実行される制御プログラムを予め記憶している。ＲＡＭ１２はＣＰＵ１０が制御を行う際に必要な各種制御情報の一時記憶等に使用される。また、自動演奏が行われる際にはイベントおよびデルタデータ（後述）からなる演奏データが演奏に先立ってこのＲＡＭ１２に記憶される。タイマ１３はＣＰＵ１０が各種制御を行うタイミングを得るために設けられた手段であり、予め設定された時間間隔で定期的にタイマ割込み信号をＣＰＵ１０に供給する。このタイマ割込み信号には、常に一定時間間隔で出力されるタイマ割込み信号のほか、自動演奏の設定テンポに応じた時間間隔で発生される自動演奏用タイマ割込み信号がある。通常、一定時間間隔のタイマ割込み信号は、自動演奏用タイマ割込み信号の発生周期よりも十分に短い周期（本実施例では１ｍｓ）で発生される。
【００２５】
本実施例においてＣＰＵ１０が行う制御のうち主なものを挙げると次の通りである。
【００２６】
ａ．通常の鍵盤演奏のための制御
この制御は、基本的には通常の電子鍵盤楽器において行われるものと同様である。すなわち、ＣＰＵ１０は、押鍵検出回路３を介してキーオンイベントおよびキーオフイベント（演奏イベント）を検出し、これらのキーイベントに応答して、音源回路７による発音および消音の制御を行う。ただし、本実施例においては、自動演奏時においても演奏者による鍵盤演奏を認めているため、押鍵検出回路３から検出される演奏イベントには自動演奏に対応したものと演奏者の鍵盤演奏に対応したものとが混在することとなり、その取り扱いが問題となる。なお、この取り扱いについては後述する。
【００２７】
ｂ．自動演奏のための制御
本実施例では、自動演奏に先立ち、演奏データがＦＤＤ１５等から供給され、図３に例示するような態様でＲＡＭ１２に記憶される。この図に示すように、演奏データはイベントとデルタタイムからなる一連のデータであり、ＲＡＭ１２内の連続した各アドレスにデルタタイム、イベント、デルタタイム、…という具合に順次交互に記憶されている。ここで、デルタタイムは、その直後にあるイベントをＲＡＭ１２から読み出すまでの待機時間を指定する情報である。イベントは、楽音信号の形成に関連した指示を行う情報であり、キーイベント（自動演奏イベント）の他、音色設定等の制御情報も含まれる。キーイベントには、発音を指示するキーオンイベントと消音を指示するキーオフイベントがある。また、キーイベントには発音または消音の対象となる音高（すなわち、電子鍵盤楽器においては鍵の番号）を指定するキーコード、発音の強度を指定するベロシティが含まれている。自動演奏開始の指示が与えられた場合、ＣＰＵ１０は、これらの演奏データをＲＡＭ１２から逐次読み出し、この演奏データに従って音源回路７の楽音信号形成処理を制御し、自動演奏を行う。
【００２８】
また、本実施例における自動演奏は、音による演出のみならず、これに合わせて鍵の動きによる演出を行うものである。すなわち、ＣＰＵ１０は、キーイベントをＲＡＭ１２から読み出した場合、これに応答した楽音形成の制御を行うのみならず、このキーイベントに対応した鍵を押鍵駆動あるいは離鍵駆動すべく、鍵盤駆動回路２に対して必要な指令を行う。
【００２９】
以上の自動演奏のための制御は、タイマ１３から供給されるタイマ割込み信号に同期して行われる。
【００３０】
さて、本実施例は、自動演奏と演奏者によるマニュアル演奏を同時に行い得るように構成されており、自動演奏中において鍵盤１の各鍵は演奏データに従って駆動されると共に演奏者によっても押離鍵が行われる。このため、マニュアル演奏の結果生じたキーイベント（演奏イベント）と演奏データ中のキーイベント（自動演奏イベント）に従って押離鍵駆動が行われた結果生じたキーイベントの両方が押鍵検出回路３を介して検出される。これらの各キーイベントのうち前者のものは音源回路７へ送って発音処理あるいは消音処理を行わせるべきものであるが、後者のものは無効イベントであり、音源回路７へは送らず無視しなければならない。無視しないで音源回路７へ送ると、同一の演奏データに対応した発音処理または消音処理が重複して行われてしまうからである。
【００３１】
そこで、本実施例においては、ＲＡＭ１２内の所定の記憶エリアに図４に示す第１〜第３のバッファを設定し、ＣＰＵ１０がこれらの各バッファを用いることによりキーイベントの時系列的な管理を行い、上記の重複した発音処理あるいは消音処理が行われないように制御を行っている。なお、これらのバッファを使用した制御については、本実施例の動作説明の際に詳述する。
【００３２】
ｃ．鍵駆動タイミングの最適化のための制御
上述したように、本実施例においては、音源回路７によって発音を行わせる際にその楽音に対応した鍵を押離鍵させる。ここで、鍵駆動回路２によって鍵の駆動を開始してから実際に押鍵または離鍵が行われるまでに遅延が生じる。従って、音源回路７によって発音を行うのと同時に鍵駆動回路２による鍵の駆動を行ったのでは、押鍵および離鍵の動きが発音タイミングおよび消音タイミングよりも遅れてしまう。
【００３３】
そこで、本実施例においては、自動演奏中、再生すべきキーイベントが発生した場合、図５に示す態様で鍵駆動およびキーイベントに対応した発音・消音のタイミング制御を行う。すなわち、
ｉ）キーイベント発生時点から所定の待機時間Ｔだけ待機した後のタイミングで当該キーイベントを音源回路７に送り、キーイベントに対応した発音または消音を行わせる。
ii）音源回路７にキーイベントを送るタイミングよりも所定の先行時間ｄＴだけ前のタイミングにおいて、当該キーイベントに対応した押鍵または離鍵の指示を鍵駆動回路２に与える。先行時間ｄＴとしては、押鍵または離鍵の指示を鍵駆動回路２に与えてから、押鍵または離鍵が実際に行われるまでの反応時間を使用する。
【００３４】
このような制御により、鍵の動きと音源回路７の発音および消音タイミングとの同期化が行われる。
【００３５】
ところで、鍵駆動装置１０５は、発熱により、その特性が変動する。そして、この特定変動が生じた場合、上記反応時間も変動することとなる。また、鍵駆動装置１０５の特性には各鍵間でばらつきがある。従って、すべての鍵について、鍵の動きを正確に発音または消音タイミングと同期させるためには、上記時間ｄＴとして各鍵毎に最適値を設定する必要がある。
【００３６】
そこで、本実施例においてＣＰＵ１０は、上記反応時間を各鍵毎に測定し、この測定結果に基づいて各鍵毎に最適な先行時間ｄＴを求め、以後はこの先行時間ｄＴに従った鍵駆動のタイミング制御を行う。
【００３７】
（５）自動演奏のための情報を授受あるいは記憶するための手段
１４は外部との間でＭＩＤＩ情報の送受信を行うためのＭＩＤＩインタフェース、１５は演奏データを記憶するためのＦＤ（フレキシブルディスク）の駆動を行うＦＤＤ（フレキシブルディスク駆動装置）である。これらは、この電子鍵盤楽器において自動演奏を行うのに必要な演奏データを得るため、あるいは電子鍵盤楽器の演奏により生じた演奏データを記録または外部に出力するために設けられた手段である。
【００３８】
Ｂ．本実施例の動作
図６〜図１２はＣＰＵ１０によって実行される制御の内容を示すフローチャートである。以下、これらの図を参照し、本実施例の動作を説明する。
【００３９】
（１）全体フロー
この電子鍵盤楽器の電源が投入されると、ＣＰＵ１０は図６にフローを示すメインルーチンを実行する。すなわち、最初に初期化処理（ステップＳ１）を実行し、以後は、キースキャン処理（ステップＳ２）、自動演奏処理（ステップＳ３）、発音・鍵駆動処理（ステップＳ４）および操作パネル面上の各種スイッチ類の状態検出等のその他の処理（ステップＳ５）を繰返し実行する。図９はステップＳ１において実行される初期化処理ルーチンのフローを示している。また、図１０〜図１２はステップＳ２〜Ｓ４において実行されるキースキャン処理ルーチン、自動演奏処理ルーチンおよび発音・鍵駆動処理ルーチンの各フローを示している。
【００４０】
一方、タイマ１３からＣＰＵ１０に対し、自動演奏の設定テンポに応じた時間間隔で自動演奏用タイマ割込み信号が供給される。この結果、ＣＰＵ１０は、その時点で実行中の処理を中断し、図７にフローを示す自動演奏用タイマ割込み処理ルーチンを実行することにより、自動演奏フラグＡＰに“１”をセットする（ステップＳ１０１）。そして、この処理の終了後、中断していた処理を再開する。
また、上記自動演奏用タイマ割込み信号とは別に、タイマ１３からＣＰＵ１０に対し、一定時間間隔（例えば１ｍｓ間隔）でタイマ割込み信号が供給される。この結果、ＣＰＵ１０は、実行中の処理を中断して図８にフローを示す一定時間毎タイマ割込み処理ルーチンを実行する。すなわち、キーフラグＫＥＹに“１”をセットし（ステップＳ２０１）、発音・鍵駆動フラグＴＧ＿ＫＤにも“１”をセットする（ステップＳ２０２）。そして、この処理の終了により、中断していた処理を再開する。
【００４１】
（２）初期化処理
本実施例においては、電源投入直後の初期化処理（図６に示すメインルーチンのステップＳ１）において、上述した鍵駆動タイミングの最適化のための処理を行う。ここで、図９を参照し、この初期化処理の詳細について説明する。まず、ステップＳ３０１に進み、鍵番号レジスタＫＮに初期値「１」を設定する。次いでステップＳ３０２に進むと、鍵駆動回路２に対し鍵番号レジスタＫＮの内容に対応した鍵（すなわち、この場合は第１番目の鍵）についての押鍵駆動指示およびこの押鍵駆動の強度を指定する押鍵信号Ｆを供給するとともに、計時を開始する。この結果、鍵駆動回路２により、上記押鍵駆動指示のなされた鍵に対応した駆動機構１０４のソレノイドに押鍵信号Ｆに対応した電流が通電され、押鍵信号Ｆに対応した強度での押鍵駆動が行われる。
【００４２】
次にステップＳ３０３に進み、上記押鍵駆動指示に対応したキーオンイベントが押鍵検出回路３を介して検出されるまで待機する。そして、該当するキーオンイベントが検出された場合にはステップＳ３０４に進んで計時を終了する。そして、この計時により得られた押鍵駆動指示からキーオンイベント発生までの反応時間を示す情報を、鍵番号ＫＮおよび押鍵強度Ｆに対応した押鍵用先行時間レジスタｄＴ＿ｏｎ（ＫＮ，Ｆ）に格納する。次にステップＳ３０５に進み、上記待機時間Ｔから押鍵用先行時間レジスタｄＴ＿ｏｎ（ＫＮ，Ｆ）の内容を減算する。そして、この減算結果を鍵番号ＫＮおよび押鍵強度Ｆに対応した押鍵用待機時間レジスタＤＴ＿ｏｎ（ＫＮ，Ｆ）に格納する。
【００４３】
以上説明したステップＳ３０２〜Ｓ３０５に相当する処理を離鍵駆動についても実施することにより（ステップＳ３０６〜Ｓ３０９）、離鍵駆動指示からキーオフイベント発生までの反応時間を測定し、この測定結果に従って鍵番号ＫＮおよび離鍵強度Ｆに対応した離鍵用待機時間を求め、離鍵用待機時間レジスタＤＴ＿ｏｆｆ（ＫＮ，Ｆ）に格納する。
【００４４】
そして、ステップＳ３１０に進み、鍵番号レジスタＫＮの内容が最大値（例えば「８８」）と等しいか否かを判断する。そして、この判断結果が「ＮＯ」の場合は、鍵番号レジスタＫＮの内容を１だけ増加させ（ステップＳ３１１）、ステップＳ３０２〜Ｓ３１０）を実行する。
【００４５】
鍵盤１を構成するすべての鍵について、上記ステップＳ３０１〜Ｓ３１０が実行されると、ステップＳ３１０の判断結果が「ＹＥＳ」となり、この初期化処理を終了する。 以上のように、鍵盤上の全鍵について、キーイベントが発生してから押鍵または離鍵の駆動指示の送出まで待機せねばならない時間が求められ、押鍵用待機時間レジスタＤＴ＿ｏｎ（ＫＮ，Ｆ）および離鍵用待機時間レジスタＤＴ＿ｏｆｆ（ＫＮ，Ｆ）内に格納される。
【００４６】
（３）自動演奏
操作パネル上に設けられた自動演奏の指示のためのスイッチがオン状態とされると、この操作がメインルーチンのステップＳ５において検知され、ランフラグＲＵＮに“１”がセットされる。この結果、以下のように自動演奏のための制御が行われる。
【００４７】
まず、メインルーチンのステップＳ３から図１１に示す自動演奏処理ルーチンへ進むと、そのステップＳ５０１においてランフラグＲＵＮの内容が“１”か否かを判断する。この場合、ランフラグＲＵＮに“１”がセットされていることにより、ステップＳ５０１の判断結果が「ＹＥＳ」となってステップＳ５０２へ進む。なお、自動演奏の指示がなされておらず、ランフラグＲＵＮが“０”となっている場合にはステップＳ５０１の結果が「ＮＯ」となり、そのままメインルーチンに戻る。すなわち、この自動演奏処理ルーチンの実質的な処理は自動演奏の指示がなされてときのみ実行される。
【００４８】
次にステップＳ５０２に進むと、自動演奏フラグＡＰの内容が“１”か否かを判断する。前述した自動演奏用タイマ割込み信号がタイマ１３から供給され、これに伴って図７に示す自動演奏用タイマ割込み処理ルーチンが実行された直後においては、自動演奏フラグＡＰに“１”がセットされているため、ステップＳ５０２の判断結果が「ＹＥＳ」となってステップＳ５０３に進む。一方、ステップＳ５０２の判断結果が「ＮＯ」の場合はメインルーチンに戻る。
【００４９】
次にステップＳ５０３に進むと、自動演奏フラグＡＰに“０”を書込む。次にステップＳ５０４に進み、残り時間レジスタＴＩＭＥの内容が「０」となっているか否かを判断する。この残り時間レジスタＴＩＭＥは、ＲＡＭ１２から演奏データを読み出す時刻までの残り時間を示す情報を記憶するレジスタである。残り時間レジスタＴＩＭＥの内容が「０」よりも大きい場合、すなわち、未だ演奏データを読み出す時刻に至っていない場合には、ステップＳ５０４の判断結果が「ＮＯ」となり、ステップＳ５９９へ進んで残り時間レジスタＴＩＭＥの内容を１だけ減少させ、メインルーチンに戻る。
【００５０】
再びメインルーチンのステップＳ３において自動演奏処理ルーチンが実行される際、ステップＳ５０２まで進むこととなるが、自動演奏用タイマ割込み信号が発生され、自動演奏フラグＡＰが“１”にセットされるまでの間は、ステップＳ５０２の判断結果が「ＮＯ」となるため、ステップＳ５０３以降の処理は一切実行されない。そして、自動演奏フラグＡＰの内容が“１”となった後、自動演奏処理ルーチンが最初に実行される場合に限り、ステップＳ５０３以降の処理が実行される。すなわち、自動演奏処理ルーチンにおけるステップＳ５０３以降の処理は、自動演奏用タイマ割込み信号の発生タイミングに同期して実行されるものであり、また、１回の自動演奏用タイマ割込み信号の発生に対して１回限り実行される。従って、残り時間レジスタＴＩＭＥの内容も、自動演奏用タイマ割込み信号が発生される毎に１ずつ減少してゆくこととなる（ステップＳ５９９）。
【００５１】
そして、残り時間レジスタＴＩＭＥの内容が「０」になると、ステップＳ５０４からステップＳ５０５へ進み、ＲＡＭ１２の読み出しアドレスを進めて演奏データを読み出す。次にステップＳ５０６に進み、読み出した演奏データがデルタタイムであるか否かを判断する。
【００５２】
演奏データがキーイベント等、デルタタイム以外のデータである場合には、ステップＳ５０６の判断結果が「ＮＯ」となり、ステップＳ５０７に進む。そして、読み出した演奏データがキーオンまたはキーオフのキーイベントであるか否かを判断する。この判断結果が「ＮＯ」の場合はそのデータに対応した制御（ステップＳ５０８）を行ってステップＳ５０５へ戻る。一方、ステップＳ５０７の判断結果が「ＹＥＳ」の場合はステップＳ５０９へ進み、ステップＳ５０５において読み出したキーイベントを第１バッファに書込むと共にこのキーイベントに対応した発音または消音を行うまでの待機時間の初期値として所定の待機時間Ｔを第１バッファに書込む（図４参照）。次にステップＳ５１０へ進み、上記キーイベントおよびこのキーイベントの鍵番号に対応した待機時間の第２バッファへの書込みを行う。すなわち、読み出したキーイベントがキーオンイベントである場合には、その鍵番号ＫＮに対応した押鍵用待機時間レジスタＤＴ＿ｏｎ（ＫＮ、Ｆ）から押鍵用待機時間を読み出し、キーオンイベントと共に第２バッファへ書込む。また、キーイベントがキーオフイベントである場合には、その鍵番号ＫＮに対応した離鍵用待機時間レジスタＤＴ＿ｏｆｆ（ＫＮ、Ｆ）から離鍵用待機時間を読み出し、キーオフイベントと共に第２バッファへ書込む。
【００５３】
ステップＳ５１０が終了すると、ステップＳ５０５へ戻り、読み出しアドレスを進めて新たな演奏データを読み出し、その演奏データがキーイベント等のデルタタイム以外のデータである場合はステップＳ５０６からステップＳ５０７へ進み、上述と同様な処理を実行する。
【００５４】
ステップＳ５０５においてデルタタイムを読み出した場合はステップＳ５０６の判断結果が「ＹＥＳ」となってステップＳ５１１へ進む。そして、読み出したデルタタイムを残り時間レジスタＴＩＭＥに書込む。このようにして次に演奏データを読み出すまでに待機しなければならない残り時間が設定される訳である。次いでステップＳ５１２へ進み、残り時間レジスタＴＩＭＥの内容が「０」か否かを判断し、この判断結果が「ＹＥＳ」の場合はステップＳ５０５へ戻る。一方、ステップＳ５１２の判断結果が「ＮＯ」の場合は残り時間レジスタＴＩＭＥの内容を１だけ減少させ（ステップＳ５９９）、メインルーチンに戻る。
【００５５】
以上のように、自動演奏用タイマ割込み信号の発生に同期したタイミングで、ＲＡＭ１２からキーイベントが逐次読み出され、所定の待機時間Ｔを示す情報と共に第１バッファに書込まれ、さらに当該キーイベントの鍵番号に対応した待機時間情報と共に第２バッファに書込まれる。
【００５６】
このようにしてバッファに書込まれたキーイベントは、メインルーチンのステップＳ４において図１２に示す発音・鍵駆動処理ルーチンが実行されることにより、楽音形成処理および鍵駆動処理に使用される。
【００５７】
まず、ステップＳ６０１に進むと、発音・鍵駆動フラグＴＧ＿ＫＤの内容が“１”か否かを判断する。そして、この判断結果が「ＹＥＳ」の場合は発音・鍵駆動フラグＴＧ＿ＫＤに“０”を書込んで（ステップＳ６０２）、ステップＳ６０３以降の処理へ進み、「ＮＯ」の場合は何等処理を行うことなくメインルーチンに戻る。この発音・鍵駆動フラグＴＧ＿ＫＤは、一定時間間隔でタイマ割込み信号が発生され、図８に示す一定時間毎タイマ割込み処理が実行されることにより“１”がセットされる。従って、発音・鍵駆動処理ルーチンにおけるステップＳ６０２以降の処理は、一定時間間隔でタイマ割込み信号が発生される毎に実行されることとなる。
【００５８】
次にステップＳ６０３へ進むと、第１バッファ内に発音または消音までの待機時間が０となっているキーイベントがあるか否かを判断する。該当するキーイベントがない場合はステップＳ６０４およびＳ６０５を飛ばしてステップＳ６０６へ進み、第１バッファ内に発音または消音までの待機時間がαとなっているキーイベントがあるか否かを判断する。該当するキーイベントがない場合はステップＳ６０７を飛ばしてステップＳ６０８へ進み、第１バッファ内の各キーイベントに対応した各待機時間を一律に１だけ減少させる。
【００５９】
次にステップＳ６０９に進み、第２バッファ内に押鍵駆動または離鍵駆動までの待機時間が０となっているキーイベントがあるか否かを判断する。該当するキーイベントがない場合はステップＳ６１０およびＳ６１１を飛ばしてステップＳ６１２へ進み、第２バッファ内の各キーイベントに対応した各待機時間を一律に１だけ減少させる。
【００６０】
次にステップＳ６１３に進み、第３バッファ内に待機時間が０であるキーイベントがあるか否かを判断し、該当するキーイベントがない場合は第３バッファ内の各キーイベントに対応した待機時間を一律に１だけ減少させ（ステップＳ６１５）、メインルーチンに戻る。なお、第３バッファ内のキーイベントおよび待機時間については後述する。
【００６１】
以上のように、一定時間間隔でタイマ割込み信号が発生される毎に、第１〜第３の各バッファ内のキーイベントに対応した各待機時間についての判定が行われると共に各待機時間を１だけ減少させる処理が行われ、各待機時間は次第に減少してゆくこととなる。
【００６２】
さて、前述した自動演奏処理ルーチンが実行された結果、あるキーオンイベントがＲＡＭ１２から読み出されたとすると、このキーオンイベントおよび所定の待機時間Ｔが第１バッファに書込まれ（図１１におけるステップＳ５０９）、このキーオンイベントおよびその鍵番号ＫＮに対応した押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）が第２バッファに書込まれる。
【００６３】
そして、この発音・鍵駆動処理ルーチンが実行される毎に、第１バッファ内の待機時間は初期値Ｔから、第２バッファ内の押鍵用待機時間は初期値ＤＴ＿ｏｎ（ＫＮ，Ｆ）から、順次１ずつデクリメントされてゆく。
【００６４】
ここで、時間Ｔ、ＤＴ＿ｏｎ（ＫＮ，Ｆ）、αは、図５に示す関係を有している（ただし、図５においてＤＴ＿ｏｎ（ＫＮ，Ｆ）は単にＤＴと表されている）。このため、キーオンイベントの読み出し時刻から押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）だけ経過した時点において、最初に第２バッファ内の押鍵用待機時間が０となる。
【００６５】
この結果、ステップＳ６０９の判断結果が「ＹＥＳ」となり、ステップＳ６１０へ進むこととなる。そして、ステップＳ６１０へ進むと、待機時間が０となった第２バッファ内のキーオンイベントが読み出され、このキーオンイベントに対応した押鍵駆動の指示および押鍵強度を指定する押鍵信号Ｆが鍵駆動回路２へ送られる。
【００６６】
次にキーオンイベントの読み出し時刻から時間Ｔ−αだけ経過した時点において、第１バッファ内の当該キーオンイベントに対応した待機時間がαとなる。この結果、ステップＳ６０６の判断結果が「ＹＥＳ」となり、ステップＳ６０７へ進むこととなる。そして、ステップＳ６０７へ進むと、当該キーオンイベントおよびこのキーオンイベントに対応した待機時間の初期値２αが第３バッファに書込まれる。このようにして書込まれた第３バッファ内の待機時間が前述したステップＳ６１３〜Ｓ６１５の各処理の処理対象となる訳である。第３バッファ内の待機時間が０より大きい間はステップＳ６１３の判断結果が「ＮＯ」となるため、待機時間のデクリメント（ステップＳ６１５）のみが行われる。
【００６７】
次にキーオンイベントの読み出し時刻から時間Ｔだけ経過すると、第１バッファ内の当該キーオンイベントに対応した待機時間が０となる。この結果、ステップＳ６０３の判断結果が「ＹＥＳ」となり、ステップＳ６０４へ進み、当該キーオンイベントが音源回路７へ送られ、発音が行われる。次いでステップＳ６０５へ進み、発音を行ったキーオンイベントが第１バッファから消去される。
【００６８】
以上のようにして、キーオンイベントの読み出し時刻から押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）だけ経過した時点において押鍵駆動の指示が行われ、読み出し時刻から所定の待機時間Ｔだけ経過した時点において当該キーオンイベントに対応した発音が行われる。ここで、押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）は、押鍵駆動指示が発音タイミングよりも反応時間ｄＴ＿ｏｎ（ＫＮ，Ｆ）だけ先行して行われるように設定されているため、キーオンイベントに対応した発音が行われるとと同時に当該キーオンイベントに対応した押鍵動作が行われる（図５参照）。
【００６９】
その後、キーオンイベントの読み出し時刻から時間Ｔ＋αだけ経過すると（すなわち、上記ステップＳ６０７において第３バッファにキーオンイベントおよび待機時間の初期値２αを書き込んだ時点から時間２αが経過すると）、第３バッファ内の当該キーオンイベントに対応した待機時間が０となる。この結果、ステップＳ６１３の判断結果が「ＹＥＳ」となり、ステップＳ６１４へ進み、第３バッファから当該キーオンイベントが消去される。
【００７０】
すなわち、本実施例においてはキーオンイベントの読み出し時刻から時間Ｔだけ経過した時点において当該キーオンイベントに対応した発音が行われるが、この発音時刻を中心に±αの範囲の期間、当該キーオンイベントが第３バッファ内に保存される。
【００７１】
以上、ＲＡＭ１２から読み出されたキーオンイベントの取り扱いを例に説明を行ったが、キーオフイベントについても全く同様な処理が行われる。
【００７２】
（４）演奏者による鍵盤演奏
本実施例においては、上述の自動演奏が行われていない場合および自動演奏が行われている場合のいずれにおいても、演奏者が鍵盤１を操作して演奏を行うことができる。自動演奏中に演奏者による鍵盤演奏が行われると、演奏者による押離鍵操作に対応したキーイベント（演奏イベント）と、ＲＡＭ１２から読み出されたキーイベント（自動演奏イベント）に従って鍵駆動がなされることによって生じるキーイベントの両方が、押鍵検出回路３を介して検出される。これらのキーイベントは、メインルーチンのステップＳ２を介して実行されるキースキャン処理ルーチン（図１０）の処理対象となる。
【００７３】
まず、ステップＳ４０１に進み、キーフラグＫＥＹの内容が“１”か否かを判断する。そして、この判断結果が「ＹＥＳ」の場合はキーフラグＫＥＹに“０”を書込んで（ステップＳ４０２）、ステップＳ４０３以降の処理へ進み、「ＮＯ」の場合は何等処理を行うことなくメインルーチンに戻る。このキーフラグＫＥＹも、上述した発音・鍵駆動フラグＴＧ＿ＫＤと同様、一定時間間隔でタイマ割込み信号が発生されることにより“１”がセットされる。従って、キースキャン処理ルーチンにおけるステップＳ４０２以降の処理も、一定時間間隔でタイマ割込み信号が発生される毎に実行される。
【００７４】
次にステップＳ４０３へ進むと、押鍵検出回路３を介して鍵盤１のスキャンを行う。次いでステップＳ４０４へ進み、押鍵検出回路３を介してキーオンイベントまたはキーオフイベントが検出されたか否かを判断し、この判断結果が「ＮＯ」の場合はメインルーチンへ戻り、「ＹＥＳ」の場合はステップＳ４０５へ進む。
【００７５】
次にステップＳ４０５に進むと、ステップＳ４０３において検出されたキーオンイベントまたはキーオフイベントと同一のキーコードを含むキーイベントが第３バッファ内にないか否かを判断する。この判断結果が「ＹＥＳ」の場合はステップＳ４０６に進み、ステップＳ４０３において検出されたキーオンイベントまたはキーオフイベントを音源回路７へ送り、これに対応した発音または消音を行わせる。そして、メインルーチンに戻る。
【００７６】
一方、ステップＳ４０５の判断結果が「ＮＯ」の場合はステップＳ４０６を実行することなくメインルーチンに戻る。このような制御が行われるため、本実施例においては、ＲＡＭ１２から読み出されたキーイベント（自動演奏イベント）について発音処理または消音処理が重複して行われることはない。
【００７７】
何故ならば、前述した通り、ＲＡＭ１２からキーイベント（自動演奏イベント）が読み出された場合には、このキーイベントに対応した発音または消音が行われる時刻から±αの範囲内の期間、当該キーイベントが第３バッファ内に保存されている。また、本実施例においては、ＲＡＭ１２からキーイベント（自動演奏イベント）が読み出された場合には、そのキーイベントに対応した発音または消音と同時に、そのキーイベントに対応した鍵駆動が行われ、この鍵駆動に対応したキーイベントが検出される。従って、かかる鍵駆動に対応したキーイベント（無効イベント）に関しては、上記ステップＳ４０５の判断結果は必ず「ＮＯ」となり、重複した発音処理または消音処理が行われることはないのである。なお、ステップＳ４０４において複数のキーイベントが同時に検出された場合はステップＳ４０５（およびＳ４０６）の処理を複数の各イベントについて行うものとする。
【００７８】
＜第２実施例＞
上記第１実施例ではＲＡＭ１２から読み出されたキーイベントに対応した鍵駆動を行う際に一定の押鍵信号または離鍵信号Ｆを鍵駆動回路２に与えたが、本実施例においては、信号Ｆの大きさを図１３に示すようにキーイベントのベロシティに応じて段階的に変化させる。ただし、鍵駆動回路２による鍵の駆動強度の制御に関して、あまりに厳しい要求をしたのでは楽器が高価になってしまうので、本実施例ではベロシティの分解能よりは粗い閾値を用いてベロシティを量子化し、信号Ｆを決定する。このようにベロシティを量子化しても、発音される音には全く影響がなく、駆動強度を細かく制御しなくても何ら問題はない。
【００７９】
このように鍵の駆動速度を可変とした場合、鍵の反応時間も鍵の駆動速度により変化する。このため、押鍵用待機時間または離鍵用待機時間として固定の値を使用したのでは、鍵の駆動速度によっては発音タイミングと鍵駆動タイミングとの間にずれが生じてしまう。
【００８０】
そこで、本実施例においては、上記第１実施例における各処理を以下のように変更する。
【００８１】
まず、初期化処理ルーチン（図９）は、図１４に示すフローに従って実行する。すなわち、信号Ｆの大きさを「１」に初期設定し（ステップＳ７０１）、次いで図９に示す初期化処理ルーチンを実行する（ステップＳ７０２）。そして、信号Ｆの大きさを最大値と比較し（ステップＳ７０３）、最大値に達するまで「１」ずつインクリメントしながら（ステップＳ７０４）、ステップＳ７０２を繰返し実行する。この結果、鍵盤１の各鍵の鍵番号ＫＮと信号Ｆの各組合せに対応した押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）および離鍵用待機時間ＤＴ＿ｏｆｆ（ＫＮ，Ｆ）が得られる。
【００８２】
また、自動演奏処理ルーチン（図１１）の実行時においては、ＲＡＭ１２から読み出したキーイベントのベロシティを参照し、このベロシティに対応した信号Ｆを求め、この信号Ｆに対応した押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）または離鍵用待機時間ＤＴ＿ｏｆｆ（ＫＮ，Ｆ）を第２バッファへ書き込む（ステップＳ５１０）。
【００８３】
また、発音・鍵駆動処理ルーチン（図１２）の実行時においては、第２バッファから読み出されたキーイベント中のベロシティに従って押鍵信号または離鍵信号Ｆの出力を行う（ステップＳ６１０）。このようにすることで、鍵速度が変っても発音タイミングと一致したタイミングで押離鍵を行わせることができる。
【００８４】
また、キースキャン処理ルーチン（図１０）を実行する際には、同ルーチンのステップＳ４０５およびＳ４０６に代えて、図１５に示す一致判定処理ルーチンを実行する。
【００８５】
すなわち、押鍵検出回路３を介してキーオンイベントまたはキーオフイベントが検出された場合、このキーオンイベントまたはキーオフイベントと同一のキーコードを含むキーイベントが第３バッファ内にないか否かを判断し（ステップＳ８０１）、この判断結果が「ＹＥＳ」の場合は当該キーオンイベントまたはキーオフイベントを音源回路７へ送って発音または消音を行わせる（ステップＳ８０２）。
【００８６】
しかし、ステップＳ８０１の判断結果が「ＮＯ」である場合には、当該キーオンイベント等のベロシティと第３バッファ内のこれに対応したキーイベントのベロシティを比較し（ステップＳ８０３）、両者が近い場合に限って当該キーオンイベント等を無視し、両者が近い値でない場合には無視することなく音源回路７へ送る（ステップＳ８０２）。すなわち、２つのキーイベントが非常にタイミングが接近しており、かつ、同一の鍵に関するものであっても、ベロシティが異なれば全く別のキーイベントとして取り扱うものである。このような制御が行われる結果、演奏者が自動演奏による鍵駆動と非常に近いタイミングで、しかも、全く同一の鍵について押鍵または離鍵を行った場合であっても、押鍵強度が異なれば、この演奏者による押離鍵も無視されることなく楽音形成に使用される。
【００８７】
＜第３実施例＞
上記第１実施例では電源投入直後の初期化処理ルーチンにより、各鍵の反応時間を測定し、各鍵についての押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）および離鍵用待機時間ＤＴ＿ｏｆｆ（ＫＮ，Ｆ）の設定を行った。
【００８８】
しかしながら、電子鍵盤楽器が長時間使用され、鍵駆動回路２によるソレノイドへの通電が何回も繰返されると、各鍵の駆動機構１０４の特性が発熱によって変化し、鍵の反応時間も変化することとなる。
【００８９】
そこで、本実施例においては、各鍵の反応時間の測定および押鍵用待機時間ＤＴ＿ｏｎ（ＫＮ，Ｆ）等の設定を逐次行う。具体的には次の通りである。
まず、ＲＡＭ１２内に、上記第１〜第３のバッファに加えて、図１６に示す第４バッファを設定する。
【００９０】
また、キースキャン処理ルーチン（図１０）のステップＳ４０５およびＳ４０６を図１７に示す一致判定処理ルーチンに置き換える。さらに発音・鍵駆動ルーチン（図１２）のステップＳ６１０を図１８に示す駆動信号出力処理ルーチンに置き換え、同ルーチンのステップＳ６１５の後に図１９に示す計時処理ルーチンを追加する。
【００９１】
かかる変更のなされた本実施例によれば、以下の動作が得られる。
まず、一定時間間隔のタイマ割込み信号に同期して発音・鍵駆動処理ルーチン（図１２）が駆動され、そのステップＳ６０９の判断結果が「ＹＥＳ」となった場合には、第２バッファ内のキーイベントに対応した鍵駆動の指示およびその駆動強度を指定する押鍵信号または離鍵信号Ｆを鍵駆動回路２へ送る（図１８のステップＳ１００１）。次いでこの鍵駆動の指示を行ったキーイベントを時間情報の初期値「０」と共に第４バッファに書き込む。そして、発音・鍵駆動処理ルーチンを終える際には、この第４バッファ内のキーイベントに対応した時間情報をインクリメント（図１９のステップＳ１１０１）してからメインルーチンに戻る。以後、この第４バッファ内の時間情報はタイマ割込み信号が発生される毎に１ずつインクリメントされてゆく。
【００９２】
そして、キースキャン処理ルーチン（図１０）の実行時、そのステップＳ４０３およびＳ４０４において押鍵検出回路３を介してキーオンイベント等が検出された場合、このキーオンイベント等と同一のキーコードを含むキーイベントが第３バッファ内にないか否かを判断し（図１７のステップＳ９０１）、この判断結果が「ＹＥＳ」の場合は当該キーオンイベント等を音源回路７へ送って発音等を行わせる（図１７のステップＳ９０２）。
【００９３】
一方、ステップＳ９０１の判断結果が「ＮＯ」である場合には、ステップＳ９０３に進む。本実施例においては、上述の通り、鍵駆動の指示の行われたキーイベントはすべて第４バッファ内に格納される。ステップＳ９０３では、この第４バッファ内のキーイベントの中から押鍵検出回路３を介して検出したキーオンイベント等と同一のキーイベントを探し、このキーイベントに対応した時間情報を第４バッファから読み出す。この時間情報は、第４バッファ内のキーイベントについての鍵駆動の指示がなされてから現在までの経過時間、すなわち、その鍵駆動の指示が行われてから実際に鍵駆動が行われ、今回、押鍵検出回路３からキーオンイベント等が検出されるまでに要した鍵の反応時間に他ならない。そこで、ステップＳ９０３では、この第４バッファから読み出した時間情報により、押鍵用先行時間レジスタｄＴ＿ｏｎ（ＫＮ，Ｆ）または離鍵用先行時間レジスタｄＴ＿ｏｆｆ（ＫＮ，Ｆ）の内容を更新する。次にステップＳ９０４に進み、この更新結果に従って、押鍵用待機時間レジスタＤＴ＿ｏｎ（ＫＮ，Ｆ）または離鍵用待機時間レジスタＤＴ＿ｏｆｆ（ＫＮ，Ｆ）の内容を更新する。そして、ステップＳ９０３において探し出したキーイベントを第４バッファから消去し（ステップＳ９０５）、メインルーチンに戻る。
【００９４】
このように本実施例によれば、ＲＡＭ１２から読み出したキーイベントに従って鍵駆動が行われ、この鍵駆動によって生じたキーイベントが検出される毎に、その鍵に対応した押鍵用待機時間レジスタＤＴ＿ｏｎ（ＫＮ，Ｆ）または離鍵用待機時間レジスタＤＴ＿ｏｆｆ（ＫＮ，Ｆ）の内容が更新される。
【００９５】
＜変形例＞
以上、本発明の各実施例を説明したが、本発明にはさらに以下のような変形が考えられる。
（１）内部的に発生した演奏データに基づいて鍵盤を駆動するものに限らず、外部装置（電子鍵盤楽器や自動演奏装置等）から供給された演奏データに基づいて鍵盤を駆動するようにしても良い。すなわち、本発明にいう「自動演奏」とは、本電子鍵盤楽器の鍵を演奏者が操作することにより得られる演奏以外のすべてを含むものである。このとき、反応時間ｄＴを最初に求めるときは、外部装置に対して各キーのオン／オフイベントを出力するように要求してイベントを受信し、外部装置と本電子鍵盤楽器との間の信号伝送に要する遅延を含めた反応時間ｄＴを求めるようにしてもよい。
【００９６】
（２）鍵盤の駆動方式はどのようなものであってもよい。
（３）上記第３実施例では、反応時間ｄＴ＿ｏｎおよびｄＴ＿ｏｆｆを逐次変更する際、時間の経過に従って同じキーに関して得られた複数のｄＴ＿ｏｎ等を平均化するようにしてもよい。
【００９７】
（４）上記第２実施例では、演奏者の操作により発生したキーイベントの内、駆動により発生したキーイベントとキーコードが一致し、かつ、タイミングがほぼ一致するが、ベロシティの異なるなるものについては発音させるようにしたが、この時、駆動信号の元となった演奏データによる発音を無効とするようにしてもよい。また、無効とするか否かを選択できるようにしてもよい。
【００９８】
（５）上記第１実施例では反応時間を測定する際に鍵を１個ずつ駆動するようにしたが、複数個ずつまとめて、あるいは全鍵同時に駆動し、駆動した鍵についての反応時間を測定するようにしてもよい。
（６）反応時間の測定をする際、鍵が駆動されるが、この鍵の駆動により楽音を発音させてもよいし、発音させないようにしてもよい。また、発音させるか発音させないかを演奏者が選択し得るようにしてもよい。
【００９９】
（７）演奏者の指によって押鍵がされている（マニュアル押鍵）間に、該鍵に対応した自動演奏イベントが発生した場合、この自動演奏イベントに対応した押鍵駆動を中止するか、あるいは押鍵駆動後、即座に離鍵駆動信号を送るように制御手段を設計してもよい。このようにすることにより、マニュアル押鍵後に発生した自動演奏イベントにより鍵が押鍵駆動されている状態でマニュアル離鍵された時に鍵が戻らないといった不都合を防止することができる。
【０１００】
【発明の効果】
以上説明したように、本発明に係る電子鍵盤楽器によれば、自動演奏の際に楽音が発生されるのみならず、これと同期して該当する鍵が駆動されるため、演奏を聴くだけでなく見て楽しむことができるという効果がある。
【図面の簡単な説明】
【図１】  この発明の第１実施例による電子鍵盤楽器の構成を示すブロック図である。
【図２】  同実施例における鍵の取り付け構造を示す図である。
【図３】  同実施例における演奏データを示す図である。
【図４】  同実施例における第１〜第３のバッファを示す図である。
【図５】  同実施例におけるキーイベント発生タイミング、鍵駆動指示タイミングおよびキーイベントに対応した発音タイミングの関係を示す図である。
【図６】  同実施例の動作を示すフローチャートである。
【図７】  同実施例の動作を示すフローチャートである。
【図８】  同実施例の動作を示すフローチャートである。
【図９】  同実施例の動作を示すフローチャートである。
【図１０】  同実施例の動作を示すフローチャートである。
【図１１】  同実施例の動作を示すフローチャートである。
【図１２】  同実施例の動作を示すフローチャートである。
【図１３】  この発明の第２実施例における駆動信号Ｆとベロシテイの関係を示す図である。
【図１４】  同実施例の動作を示すフローチャートである。
【図１５】  同実施例の動作を示すフローチャートである。
【図１６】  この発明の第３実施例において使用する第４バッファを示す図である。
【図１７】  同実施例の動作を示すフローチャートである。
【図１８】  同実施例の動作を示すフローチャートである。
【図１９】  同実施例の動作を示すフローチャートである。
【符号の説明】
１……鍵盤、２……鍵盤駆動回路、３……押鍵検出回路、
７……音源回路、
１０……ＣＰＵ、１１……ＲＯＭ、１２……ＲＡＭ、１３……タイマ。
【図１】
0003704747.tif 000002
【図２】
0003704747.tif 000003
【図３】
0003704747.tif 000004
【図４】
0003704747.tif 000005
【図５】
0003704747.tif 000006
【図６】
0003704747.tif 000007
【図７】
0003704747.tif 000008
【図８】
0003704747.tif 000009
【図９】
0003704747.tif 000010
【図１０】
0003704747.tif 000011
【図１１】
0003704747.tif 000012
【図１２】
0003704747.tif 000013
【図１３】
0003704747.tif 000014
【図１４】
0003704747.tif 000015
【図１５】
0003704747.tif 000016
【図１６】
0003704747.tif 000017
【図１７】
0003704747.tif 000018
【図１８】
0003704747.tif 000019
【図１９】
0003704747.tif 000020