(57)【特許請求の範囲】
【請求項１】
供給される駆動信号に応じて鍵を駆動させる駆動手段と、
鍵番号データを所定個数分のみ記憶可能な第１の記憶手段と、
前記第１の記憶手段に空きエリアがないときに、前記鍵番号データを記憶する第２の記憶手段と、
前記第１の記憶手段に記憶されている鍵番号データに対応する鍵を駆動させるための前記駆動信号を前記駆動手段へ与える駆動信号供給手段と、
処理タイミングに従って順次供給される演奏データが押鍵データであった場合に、前記第１の記憶手段に空きエリアがあるときには、当該演奏データ中の鍵番号データを前記空きエリアに記憶させ、一方、前記第１の記憶手段に空きエリアがないときには、前記第２の記憶手段に前記鍵番号データを記憶させるように制御し、更に、前記供給された演奏データが離鍵データであった場合には、当該演奏データ中の鍵番号データと同じ鍵番号のデータが記憶されている前記第１及び第２の記憶手段のエリアを空き状態にし、前記第１の記憶手段に空きエリアが生じ、かつ前記第２の記憶手段に鍵番号データが記憶されているときは、当該鍵番号データを前記第１の記憶手段の空きエリアに転送すると共に、前記第２の記憶手段における当該鍵番号データが記憶されているエリアを空き状態にする記憶制御手段と、
を備えたことを特徴とする鍵盤駆動装置。
【請求項２】
前記信号生成手段は、押鍵速度及び離鍵速度を制御する信号パターンの駆動信号を前記駆動手段に与えることを特徴とする請求項１記載の鍵盤駆動装置。
【請求項３】
前記信号生成手段は、演奏データに応じて前記信号パターンを演算によって生成することを特徴とする請求項２記載の鍵盤駆動装置。
【請求項４】
前記信号生成手段は、予め設定されているデータに基づいて前記信号パターンを生成することを特徴とする請求項２記載の鍵盤駆動装置。
【請求項５】
前記記憶制御手段が、前記第１の記憶手段の同一のエリアにおいて離鍵すべき鍵のデータの後に押鍵すべき鍵のデータを転送する場合には、前記信号パターンは、当該離鍵すべき鍵及び当該押鍵すべき鍵に対する駆動信号同士が互いに排他的な信号パターンであることを特徴とする請求項２〜４のいずれかに記載の鍵盤駆動装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
この発明は、演奏データに応じて鍵盤を自動的に押鍵及び離鍵する鍵盤駆動装置に関する。
【０００２】
【従来の技術】
このような鍵盤駆動装置においては、各鍵ごとにプランジャ、ソレノイドその他のアクチュエータ（駆動機構部）を設けて、演奏データのイベントが押鍵であるときは、押鍵すべき鍵に対応するアクチュエータの駆動信号をオンにする。また、演奏データのイベントが離鍵であるときは、離鍵すべき鍵に対応するアクチュエータの駆動信号をオフにする。したがって、演奏データのイベントが和音である場合には、その和音に対応する複数の鍵を同時に押鍵及び離鍵する駆動信号をアクチュエータに与える。
【０００３】
【発明が解決しようとする課題】
ところで、和音のように同時に押鍵する場合や、和音以外でも同一の期間重複して押鍵する場合には、対応する複数の鍵を駆動するアクチュエータに与える駆動信号を供給する電源の負荷も大きくなる。したがって、同時に又は同期間に押鍵する最大鍵数が制限されている。このため、上記鍵盤駆動装置においては、この最大鍵数を超えた演奏データについては押鍵処理を省略しなければならなかった。
この発明の課題は、同時に駆動できる最大鍵数を超えて押鍵すべき演奏データがある場合でも押鍵処理を行うようにすることである。
【０００４】
【課題を解決するための手段】
この発明は、供給される駆動信号に応じて鍵を駆動させる駆動手段と、鍵番号データを所定個数分のみ記憶可能な第１の記憶手段と、第１の記憶手段に空きエリアがないときに、鍵番号データを記憶する第２の記憶手段と、第１の記憶手段に記憶されている鍵番号データに対応する鍵を駆動させるための駆動信号を駆動手段へ与える駆動信号供給手段と、処理タイミングに従って順次供給される演奏データが押鍵データであった場合に、第１の記憶手段に空きエリアがあるときには、この演奏データ中の鍵番号データを空きエリアに記憶させ、一方、第１の記憶手段に空きエリアがないときには、第２の記憶手段に鍵番号データを記憶させるように制御し、更に、供給された演奏データが離鍵データであった場合には、この演奏データ中の鍵番号データと同じ鍵番号のデータが記憶されている第１及び第２の記憶手段のエリアを空き状態にし、第１の記憶手段に空きエリアが生じ、かつ第２の記憶手段に鍵番号データが記憶されているときは、この鍵番号データを第１の記憶手段の空きエリアに転送すると共に、第２の記憶手段におけるこの鍵番号データが記憶されているエリアを空き状態にする記憶制御手段とを備えた構成になっている。
この構成によれば、駆動できる最大鍵数を超えて押鍵すべき演奏データがある場合には、その押鍵すべき鍵の情報（鍵番号データ）をいったん保留しておき、駆動中のいずれかの鍵が離鍵されたときに保留中の鍵の情報に基づいて押鍵処理をする。
【０００５】
【発明の実施の形態】
以下、図１〜図１７を参照してこの発明の第１及び第２実施形態について説明する。
図１は、この発明による鍵盤駆動装置を電子楽器に適用した場合における第１及び第２実施形態のシステム構成を示す図である。ＣＰＵ１は、システムバスに接続された下記の各部との間でコマンド及びデータの授受を行って、この電子楽器全体を制御する。ＲＯＭ２は、ＣＰＵ１が実行する制御プログラムや電源投入後のイニシャライズ処理における初期データを記憶している。ＲＡＭ３は、ＣＰＵ１が処理したデータを記憶する。鍵盤４は、押鍵操作及び離鍵操作に応じて鍵番号その他のデータをＣＰＵ１に入力する。入力されたデータはＲＡＭ４に一時的に記憶され、発音処理及び消音処理がなされる。
【０００６】
プランジャー５は、演奏者の代わりに、演奏データに応じて鍵盤を自動的に押鍵及び離鍵させる鍵盤駆動手段である。プランジャードライバ６は、ＣＰＵ１のコマンドに応じてプランジャー５に与える駆動信号を生成する信号生成手段である。スイッチング回路７は、この駆動信号に応じて電源８からプランジャー５を駆動する実際の電流を中継する。タイマ９は、一定時間ごとにＣＰＵ１に対してタイマインタラプトを入力する。タイマインタラプトについては後述する。音源１０は、ＣＰＵ１からの発音指令及び消音指令に基づいて楽音信号を生成し、図示しないサウンドシステムに送出する。ＭＩＤＩインタフェース１１は、外部のＭＩＤＩ機器との間でＭＩＤＩデータを送受信する。
【０００７】
自動演奏データメモリ１２は、予め入力された自動演奏データ又はＭＩＤＩインタフェース１１から入力されたＭＩＤＩデータを自動演奏データとして記憶する。この自動演奏データメモリ１２の自動演奏データは、図２に示すように、イベント及びこのイベントの処理タイミングのデータで構成され、ＣＰＵ１の読出指令によって順次読み出される。イベントが和音の場合には、複数のイベントの処理タイミングが同じタイミングになっている。ＣＰＵ１は、この自動演奏データに基づいて、プランジャードライバ６に対して押鍵指令及び離鍵指令を発する。
【０００８】
図３（１）は、鍵盤４の構造を示す断面図である。各鍵４１は、その先端部４１ａがフレーム４２に固定されている。鍵４１の下側の所定位置には、スイッチ押部４１ｂが下側に突出して設けられている。このスイッチ押部４１ｂに対向するフレーム４２の位置には、２つの押鍵タッチ検出スイッチ４３が設けられており、押鍵、離鍵を検出してその検出信号をＣＰＵ１に入力する。ＣＰＵ１は、この検出信号に応じて音源１０に対する発音指示、消音指示を行う。また、鍵４１の下側における先端部４１ａとスイッチ押部４１ｂとの間には突起４１ｃが設けられている。そして、この突起４１ｃにはコイルスプリング４４の一端が固定され、他の一端はフレーム４２に固定されている。このコイルスプリング４４によって鍵４１が上側に付勢され、押鍵操作に対して反発力を与える。
【０００９】
また、フレーム４２の所定位置には、プランジャー５が固定されている。さらに、プランジャー５に近接して鍵駆動アーム４５が軸４５ａに対して回動可能に取り付けられている。鍵駆動アーム４５は、軸４５ａに設けられたバネ（図示せず）によってプランジャー５側に付勢されているとともに、コイルスプリング４４の伸張力によって鍵４１の下側突起部４１ｄに当接して付勢されている。したがって、プランジャー５が駆動されていない状態では、図３（１）に示すように、鍵駆動アーム４５がプランジャー５の可動部５ａに押し当てられた状態になっている。
【００１０】
いま、プランジャードライバ６からプランジャー５に駆動信号が与えられると、プランジャー５の可動部５ａが鍵駆動アーム４５側に突出する。この結果、図３（２）に示すように、鍵駆動アーム４５が下側に回動して、鍵４１の下側突起部４１ｄを下側に押圧し、鍵４１は先端部４１ａの板バネ構造により下側にたわみ、自動的に押鍵されることになる。またこのとき、鍵４１のスイッチ押部４１ｂの押下により押鍵タッチ検出スイッチ４３がオンになる。この場合において、２つの押鍵タッチ検出スイッチ４３は同時にオンにならず、時間差をもってオンになる。この時間差は、押鍵速度に応じて変化する。そして、プランジャー５への駆動信号がオフになると、コイルスプリング４４及び鍵４１の先端部４１ａの板バネ構造のバネの付勢力により鍵４１が図３（１）に示す状態に戻る。
【００１１】
したがって、押鍵時には、鍵駆動アーム４５はコイルスプリング４４及び鍵４１の先端部４１ａの板バネ構造のバネの付勢力を超えるだけの回動作用を必要とし、このため電源８からはその回動作用に必要な電流がプランジャー５に供給される。したがって、同時に押鍵する鍵の数が多くなると、電源８の負荷が大きくなるので、同時に押鍵する最大鍵数を制限している。ちなみに、第１及び第２実施形態においてはこの最大鍵数を６個に制限している。
【００１２】
次に、第１及び第２実施形態における演奏データの処理の概念について、図４〜図６を参照して説明する。自動演奏データメモリ１２のイベントデータで同時処理分のデータ例えば和音のデータは、図４に示すＲＡＭ３の一時メモリエリア３１に一時的に記憶される。したがって、図５に示すように、一時メモリ３１に記憶されるイベントデータは、図２に示す自動演奏データメモリ１２のデータ形式と同じになっている。ＣＰＵ１のデータ判別機能は、ＲＡＭ３の状態メモリ３２に一時メモリ３１のイベントデータを全て転送できるだけの空きエリアがあるか否かを判別して、空きエリアがある場合にはそのイベントデータを状態メモリ３２に転送し、空きエリアが足りない場合は、転送できないイベントデータを保留メモリ３３に転送する。
【００１３】
状態メモリ３２のデータ形式は、図５に示すように、鍵番号、オフフラグ、タイマインタラプトによって変化する時間データＴで構成されている。オフフラグが１のときは離鍵状態であることを表し、オフフラグが０のときは押鍵状態であることを表す。また、保留メモリ３３のデータ形式は、鍵番号のみで構成されている。ＣＰＵ１は、プランジャードライバ６を監視して、駆動信号がオフになったか否かを判別して、オフになったときは対応する状態メモリ３２のオフフラグを０から１に変えてそのエリアを空きにし、その空きエリアに保留メモリ３３に記憶したイベントデータを転送する。また、鍵盤駆動状態に応じた発音処理、消音処理を音源１０に対して指示する。
【００１４】
例えば、図６に示すように、ノート１からノート５までが同時に押鍵されているときに、処理タイミングｔ１のノート６の押鍵イベントデータが一時メモリ３１に転送されたときは、最大押鍵数６に対して１つの空きエリアがあるので、ノート６のイベントデータを状態メモリ３２に転送して、押鍵処理をすることができる。この後、ノート１からノート６までが押鍵中において、ノート７のイベントデータが一時メモリ３１に転送されたときは、最大押鍵数６に対して１つの空きエリアもないので、ノート７のイベントデータは保留メモリ３３に記憶される。
【００１５】
そして、ｔ２のタイミングにおいてノート５がオフになると、その時点でノート７のイベントデータを保留メモリ３３から状態メモリ３２に転送する。また、状態メモリ３２に空きエリアがない状態でノート８のイベントデータが一時メモリ３１に転送されたときは、ノート８のイベントデータは保留メモリ３３に転送され、ｔ３のタイミングにおいてノート６がオフになると、その時点でノート８のイベントデータを保留メモリ３３から状態メモリ３２に転送する。
【００１６】
次に、第１実施形態の動作をＣＰＵ１のフローチャートを参照して詳細に説明する。
図７のメインフローにおいて、イニシャライズ処理（ステップＳ１）をした後、データリード／ライト処理（ステップＳ２）、発音処理（ステップＳ３）、その他の処理（ステップＳ４）を繰り返すループを実行する。
【００１７】
ステップＳ２におけるデータリード／ライト処理は、図８に示すように、一時メモリ３２内にデータが残っているか否かを判別する（ステップＳ５）。データが残っていないときは自動演奏データメモリ１２の現在指定されているエリアから、イベント及び処理タイミングからなるデータを読み出し（ステップＳ６）、そのデータを一時メモリ３１に格納する（ステップＳ７）。次に、自動演奏データメモリ１２の次のエリアを指定する（ステップＳ８）。そして、自動演奏データメモリ１２の直前の指定エリアの処理タイミングと、現在の指定エリアの処理タイミングとが同じタイミングであるか否かを判別する（ステップＳ９）。
【００１８】
同じタイミングであるときは、これらのデータは和音を表しているので、同時に押鍵処理を行う必要がある。したがって、ステップＳ６に移行して、現在の指定エリアのデータを読み出す。ステップＳ９において、直前の指定エリアの処理タイミングと現在の指定エリアの処理タイミングとが異なるときは、図９のフローにおいて、一時メモリ３１内のデータの処理タイミングがタイマ９の現在値であるか否か、すなわちイベント開始時間であるか否かを判別する（ステップＳ１０）。また、図８のステップＳ５において一時メモリ３１内にデータが残っている場合には、自動演奏データメモリ１２からデータを読み出すことなく、図９のステップＳ１０に移行して、一時メモリ３１内のデータの処理タイミングがイベント開始時間であるか否かを判別する。
【００１９】
ステップＳ１０において、一時メモリ３１内のデータの処理タイミングがイベント開始時間でない場合は、メインフローに戻る。処理タイミングがイベント開始時間であるときは、一時メモリ３１の空きでないエリアからイベントデータを読み出し、そのエリアを空きにする（ステップＳ１１）。そして、読み出したイベントデータが鍵盤４をオンにするキーオンデータであるか、それとも鍵盤４をオフするキーオフデータであるかを判別する（ステップＳ１２）。キーオンデータであるときは、状態メモリ３２に空きエリアがあるか否かを、鍵番号の有無で判断する（ステップＳ１３）。そして、空きエリアがあるときは、その空きエリアに対して鍵番号を格納し、オフフラグに０をセットし、Ｔに０をセットする（ステップＳ１４）。そして、一時メモリ１５の全エリアが空きになったか否かを判別する（ステップＳ１５）。一方、ステップＳ１３において、状態メモリ３２に空きエリアがない場合には、保留メモリの最初の空きエリアに鍵番号を格納する（ステップＳ１６）。そして、ステップＳ１５に移行して一時メモリ３１の全エリアが空きになったか否かを判別する。
【００２０】
一時メモリ１５の全エリアが空きになった場合はメインフローに戻るが、空きでないエリアがあるときは、ステップＳ１１に移行してその空きでないエリアからデータを読み出す。ステップＳ１２において、読み出したイベントデータが鍵盤４をオフにするキーオフデータであるときは、オフする鍵番号が保留メモリ３３に記憶されているか否かを判別する（ステップＳ１７）。記憶されていない場合には、オフする鍵番号が記憶されている状態メモリ３２のエリアを探す（ステップＳ１８）。そして、見つかったエリアのオフフラグに１をセットして、Ｔに０をセットする（ステップＳ１９）。次に、ステップＳ１５に移行して一時メモリ３１の全エリアが空きになったか否かを判別する。ステップＳ１７において、オフする鍵番号が保留メモリ３３に記憶されているときは、記憶されているエリアを空きにして、空きになったエリアにそのエリア以下のデータを前詰めする（ステップＳ２０）。この後、ステップＳ１５に移行して一時メモリ３１の全エリアが空きになったか否かを判別する。
【００２１】
図１０及び図１１は、タイマインタラプト処理のフローである。１０ｍｓごとにタイマインタラプトが入ると、図１０において、状態メモリ３２に空きでないエリアがあるか否かを判別する（ステップＳ２１）。空きでないエリアがあるときは、データが記憶されている最初のエリアを指定する（ステップＳ２２）。次に、その指定したエリアのＴに１０（ｍｓ）を加算し（ステップＳ２３）、その加算したＴを基準時間ＴＢ（この場合、ＴＢ＝４０ｍｓ）で除算し（ステップＳ２４）、商Ａ及び余りＢを求める。そして、商Ａと余りＢとの値を比較する（ステップＳ２５）。
【００２２】
ＡがＢより大きいときは、指定したエリアのオフフラグが１であるか否か、すなわち、そのエリアのイベントが消音であるか否かを判別する（ステップＳ２６）。このオフフラグが０（発音）であるときは、そのエリアの鍵番号に対応するプランジャードライバ６にプランジャー信号オンを送出する（ステップＳ２７）。一方、このオフフラグが１（消音）であるときは、そのエリアの鍵番号に対応するプランジャードライバ６にプランジャー信号オフを送出する（ステップＳ２８）。
【００２３】
ステップＳ２５において、ＡがＢ以下であるときは、指定したエリアのオフフラグが１であるか否かを判別する（ステップＳ２９）。このオフフラグが０（発音）であるときは、ステップＳ２８において、そのエリアの鍵番号に対応するプランジャードライバ６にプランジャー信号オフを送出する。一方、このオフフラグが１（消音）であるときは、ステップＳ２７において、そのエリアの鍵番号に対応するプランジャードライバ６にプランジャー信号オンを送出する。
【００２４】
ステップＳ２７又はステップＳ２８において、プランジャー信号オン又はオフを送出した後は、指定したエリアのオフフラグが１（消音）であるか否かを判別し（ステップＳ３０）、オフフラグが１であるときはＴが１６０ｍｓより大きいか否かを判別する（ステップＳ３１）。Ｔが１６０ｍｓより大きい場合には、その指定したエリアを空きにする（ステップＳ３２）。そして、指定しているエリア以降に空きでないエリアがあるか否かを判別する（ステップＳ３３）。ステップＳ３０においてオフフラグが０である場合、又はステップＳ３１においてＴが１６０ｍｓ以下である場合は、ステップＳ３３において指定しているエリア以降に空きでないエリアがあるか否かを判別する。空きでないエリアがあるときは、見つかったエリアを指定して（ステップＳ３４）、ステップＳ２４に移行してＴ/ＴＢの演算を行う。
【００２５】
ステップＳ３３において、状態メモリ３２において指定したエリア以降に空きエリアがないとき、又は、ステップＳ２１において、状態メモリ３２が全て空きエリアであるときは、図１１のフローにおいて、保留メモリ３３に空きでないエリアがあるか否かを判別する（ステップＳ３５）。空きエリアがある場合には、データが記憶されている最初のエリアを指定する（ステップＳ３６）。次に、状態メモリ３２に空きエリアがあるか否かを判別し（ステップＳ３７）、空きエリアがある場合には、保留メモリ３３に記憶されている鍵番号データを状態メモリ３２の空きエリアに移し、そのエリアにおけるオフフラグを０にセットし、Ｔに０をセットする（ステップＳ３８）。
【００２６】
次に、保留メモリ３３の指定エリアを空きにする（ステップＳ３９）。そして、保留メモリ３３の次のエリアも空きでないか否かを判別し（ステップＳ４０）、次のエリアが空きでない場合は次のエリアを指定する（ステップＳ４１）。そして、ステップＳ３７に移行して、状態メモリ３２の空きエリアを判別する。ステップＳ３７において、状態メモリ３２に空きエリアがない場合、又は、ステップＳ４０において、保留メモリにおいて指定しているエリア以降に空きでないエリアがない場合には、保留メモリ３３内のデータを前詰めにする（ステップＳ４２）。この後、メインフローに戻る。また、ステップＳ３５において、保留メモリ３３が全て空きエリアである場合には、メインフローに戻る。
【００２７】
図１２は、ＴＢ＝４０ｍｓの場合に、１０ｍｓごとのタイマインタラプトに応じて、プランジャー信号の推移を示したものである。
１０ｍｓごとのタイマインタラプト（以下、「ＴＩ」と略記する）に応じて、図１０のステップＳ２４における演算Ｔ／ＴＢ（＝４０）の商Ａ及び余りＢは、図１２に示す値となる。したがって、オフフラグが０すなわち押鍵の場合には、ＴＩ＝０〜３０の期間は、図１０のステップＳ２５、ステップＳ２９、ステップＳ２８の処理によってプランジャー信号はオフとなる。ＴＩ＝４０〜５０の期間は、図１０のステップＳ２５、ステップＳ２９、ステップＳ２７の処理によってプランジャー信号はでオンとなる。同様に、ＴＩ＝５０〜８０の期間はオフ、ＴＩ＝８０〜１００の期間はオン、ＴＩ＝１００〜１２０の期間はオフ、ＴＩ＝１２０〜１５０の期間はオン、ＴＩ＝１５０〜１６０の期間はオフ、ＴＩ＝１６０以降は常時オンとなる。すなわち、押鍵開始過渡期のプランジャー信号は、断続的にオンとなり、しかもオン時間が次第に長くなって、最終的に連続したオン信号となる。
【００２８】
一方、オフフラグが１すなわち離鍵の場合には、押鍵の場合とは位相が逆になる。また、Ｔが１６０ｍｓを超えたときは、完全に離鍵されているので、図１０のステップＳ３１からステップＳ３２に以降して、指定したエリアを空きにする。
【００２９】
このように、上記第１実施形態によれば、駆動できる最大鍵数を超えて押鍵すべき演奏データがある場合には、その押鍵すべき鍵の情報をいったん保留しておき、駆動中のいずれかの鍵が離鍵されたときに保留中の鍵の情報に基づいて押鍵処理をする。したがって、同時に駆動できる最大鍵数を超えて押鍵すべき演奏データがあるときでも押鍵処理を行うことができる。この場合において、保留中の鍵の押鍵タイミングが、実際の演奏データの処理タイミングすなわち発音タイミングより若干遅れることになるが、このタイミングずれは、いわゆる「ノリ」としてとらえられ、むしろ機械的な正確さが薄れて、人間味が生まれるので必ずしも欠点にはならない。
【００３０】
また、図１２に示すように、押鍵及び離鍵を徐々に行うので、図３に示した各鍵におけるコイルスプリング４４及び鍵駆動アーム４５の軸４４ａに設けられた図示しないバネに対する応力変化が緩やかになり、その疲労度が低減される。また、押鍵時に電源８からプランジャー５に供給される電流のせん頭値が小さくなるので、定格値の低い小型かつ安価な電源を使用できる効果もある。さらに、各鍵の所定個所に設けられた緩衝材も簡単な構造のものが使用できる。
【００３１】
図１３及び図１４は、基準時間ＴＢが３０ｍｓ及び２０ｍｓの場合において、タイマインタラプトに応じたプランジャー信号の推移を示したものである。この２つの図であきらかなように、基準時間ＴＢが小さくなるほど押鍵速度及び離鍵速度が速くなる。また、図２に示した自動演奏データでは省略したが、イベントデータには鍵番号及び押鍵又は離鍵を表すオン・オフの情報の他に、押鍵速度を表すベロシティデータが含まれている。そして、鍵構造において説明したように、２つの押鍵タッチ検出スイッチ４３は同時にオンにならず時間差をもってオンになり、この時間差は押鍵速度に応じて変化する。
【００３２】
したがって、イベントデータに含まれるベロシティデータに応じて基準時間ＴＢを変化させることにより、音源１０に対してベロシティ情報を供給することができる。この結果、プランジャー５による自動押鍵であっても、あたかも人間が演奏したかのように、演奏データにおけるベロシティデータに基づいた強弱をつけた発音が可能になる。
【００３３】
次に、図１５〜図１７に基づいてこの発明の第２実施形態を説明する。
第２実施形態においても、第１実施形態と同様、図１２に示すように、押鍵及び離鍵を徐々に行う。この場合において、押鍵開始の過渡状態においては、電源８からプランジャー５に電流が流れていない時間がある。逆に、離鍵開始の過渡状態においては、電源８からプランジャー５に電流が流れている時間がある。そこで、この第２実施形態においては、電源８の負荷電流を増加することなく押鍵及び離鍵の過渡状態を重ね合わせる。このため、ＲＡＭ３内に同時駆動可能鍵数の２倍のエリアをもつ状態メモリを有する構成にしている。そして、状態メモリの全エリアの２分の１のエリアは押鍵に対応するエリアとし、残りの２分の１は離鍵に対応するエリアとする。
【００３４】
なお、第２実施形態におけるＣＰＵ１のメインフローは第１実施形態と同じであり、データリード／ライト処理及びタイマインタラプト処理についても、第１実施形態と同じ処理を多く含んでいる。したがって、図１５及び図１６において、第１実施形態と同じ処理については同一の符号で表し、その説明は省略する。
【００３５】
図１５は、第２実施形態におけるデータリード／ライト処理の一部のフローであり、ステップＳ１３において状態メモリに空きエリアがあるときは、オフフラグが０すなわち発音状態の状態メモリのエリア数が、状態メモリの全エリア数（例えば、１２エリア）の２分の１（６エリア）より少ないか否かを判別する（ステップＳ４３）。そして、オフフラグが０のエリア数が全エリア数の２分の１より少ない場合には、ステップＳ１４に移行して状態メモリの空きエリアに鍵番号を格納し、オフフラグに０をセットし、Ｔに０をセットする。
【００３６】
図１６は、第２実施形態におけるタイマインタラプト処理の一部のフローであり、ステップＳ３７において状態メモリに空きエリアがあるときは、オフフラグが０の発音状態の状態メモリのエリア数が、状態メモリの全エリア数の２分の１より少ないか否かを判別する（ステップＳ４４）。そして、オフフラグが０のエリア数が全エリア数の２分の１より少ない場合には、ステップＳ３８に移行して保留メモリの指定エリアに記憶されている鍵番号データを状態メモリの空きエリアに格納し、オフフラグに０をセットし、Ｔに０をセットする。
【００３７】
図１７は、互いに異なる２つの鍵の押鍵信号及び離鍵信号を示している。この図で明らかなように、２つの鍵においてオン状態（ハイレベル）となるプランジャー信号の期間が重複しない。したがって、押鍵状態の任意の鍵が離鍵を開始して完全に離鍵状態になる前に、保留メモリに記憶されている鍵番号に対応する他の鍵の押鍵を開始することができる。この結果、無駄のない鍵盤操作が可能になる。
【００３８】
【発明の効果】
この発明によれば、駆動できる最大鍵数を超えて押鍵すべき演奏データがある場合には、その押鍵すべき鍵の情報をいったん保留しておき、駆動中のいずれかの鍵が離鍵されたときに保留中の鍵の情報に基づいて押鍵処理をする。したがって、同時に駆動できる最大鍵数を超えて押鍵すべき演奏データがある場合でも押鍵処理を行うことができる。
【図面の簡単な説明】
【図１】この発明の各実施形態における電子楽器のシステムを示すブロック図。
【図２】図１における自動演奏データメモリの自動演奏データを示す図。
【図３】図１における鍵盤の鍵の構造を示す断面図。
【図４】この発明の自動演奏データの流れを示す図。
【図５】図１におけるＲＡＭのデータエリアを示す図。
【図６】押鍵信号を表すタイミングチャート。
【図７】第１実施形態におけるＣＰＵのメインフローチャート。
【図８】図７におけるデータリード／ライト処理のフローチャート。
【図９】図８に続くデータリード／ライト処理のフローチャート。
【図１０】第１実施形態におけるタイマインタラプト処理のフローチャート。
【図１１】図１０に続くタイマインタラプト処理のフローチャート。
【図１２】第１実施形態におけるある基準時間での押鍵信号の推移を示すタイミングチャート。
【図１３】第１実施形態における他の基準時間での押鍵信号の推移を示すタイミングチャート。
【図１４】第１実施形態における他の基準時間での押鍵信号の推移を示すタイミングチャート。
【図１５】第２実施形態におけるデータリード／ライト処理の一部のフローチャート。
【図１６】第２実施形態におけるタイマインタラプト処理の一部のフローチャート。
【図１７】第２実施形態における押鍵信号及び離鍵信号の推移を示すタイミングチャート。
【符号の説明】
１  ＣＰＵ
３  ＲＡＭ
４  鍵盤
５  プランジャー
６  プランジャードライバ
１０  音源
１２  自動演奏データメモリ
【図１】
0003671236.tif 000002
【図２】
0003671236.tif 000003
【図３】
0003671236.tif 000004
【図４】
0003671236.tif 000005
【図５】
0003671236.tif 000006
【図６】
0003671236.tif 000007
【図７】
0003671236.tif 000008
【図８】
0003671236.tif 000009
【図９】
0003671236.tif 000010
【図１０】
0003671236.tif 000011
【図１１】
0003671236.tif 000012
【図１２】
0003671236.tif 000013
【図１３】
0003671236.tif 000014
【図１４】
0003671236.tif 000015
【図１５】
0003671236.tif 000016
【図１６】
0003671236.tif 000017
【図１７】
0003671236.tif 000018