(57)【特許請求の範囲】
【請求項１】
外部イベントに従って、曲データを自動演奏する自動演奏装置であって、
前記曲データは、所定の区間データによって各演奏区間に区分されており、
前記区間データは前記区間の先頭に位置し、
前記自動演奏は、前記外部イベントを受けて前記曲データの所定区間の先頭から終わりまでを自動演奏するものであり、
前記自動演奏時には、前記外部イベントに応じて、当該外部イベントに対応する前記区間の自動演奏が１区間ずつ順次進行するとともに、
前記外部イベントがあったとき、その直前の区間における前記自動演奏のテンポ、前記直前の区間におけるクロック数の想定値として予め記憶されている値、及び前回の外部イベントから今回の外部イベントまでの間のクロック数の実測値を用いて、今回の外部イベントに対応する区間における前記自動演奏のテンポを設定することを特徴とする自動演奏装置。
【請求項２】
前記所定の区間は、前記曲データの一拍に相当する区間であることを特徴とする前記請求項１に記載の自動演奏装置。
【請求項３】
前記所定の区間は、メロディーのノートデータ１音と、当該メロディーのノートデータに後続する伴奏のノートデータとから成る区間であることを特徴とする前記請求項１に記載の自動演奏装置。
【請求項４】
前記テンポの設定は、前記直前の区間におけるクロック数の想定値として予め記憶されている値と、前記前回の外部イベントから今回の外部イベントまでの間のクロック数の実測値との比率を用いて行うことを特徴とする前記請求項１〜３のいずれかに記載の自動演奏装置。
【請求項５】
前記外部イベントが、発音の強弱に関する情報を含むことを特徴とする前記請求項１〜４のいずれかに記載の自動演奏装置。
【請求項６】
前記外部イベントが、鍵盤の押鍵操作であることを特徴する前記請求項１〜５のいずれかに記載の自動演奏装置。
【請求項７】
前記外部イベントが、自動演奏装置を操作する操作パネルにおける操作であることを特徴とする前記請求項１〜６のいずれかに記載の自動演奏装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部イベントに従って発音することで、自動演奏を行うことができる自動演奏装置に関する。
【０００２】
【従来の技術】
従来より、メモリに曲データを記憶しておき、外部からのイベント（例えば、鍵盤の押鍵）に応じて、この曲データを順次読み出し発音することによって、自動演奏を実行する電子楽器が用いられてきた。
【０００３】
このような電子楽器は、単純な外部イベントを与えるだけで自動演奏が行えるので、習熟を必要とせず、誰でも楽器演奏が楽しめるという利点を有する。
特に、子供に対して音楽に親しみを持つきっかけを与えることができ、また、楽器演奏を修得することが難しい老人、身障者に対して、楽器演奏の楽しみを与えることができる点で有用である。
【０００４】
【発明が解決しようとする課題】
しかし、従来の電子楽器は、１の外部イベントに対し、１音のみの発音が発生するものであるため、自動演奏を行うには、全てのノートデータ（メモリの曲データのうち、発音に対応するデータ）に対し、その都度外部イベントを与える必要があった。
【０００５】
そのため、複雑なアレンジを伴う曲等に対しては、適切に外部イベントを与えることが難しく、自動演奏が困難である場合があった。
また、自動演奏する曲が、メロディーと伴奏とを有するものである場合、メロディのみに外部イベントを与えても、メロディーとタイミングが一致しない伴奏は発音されないという問題があった。
【０００６】
本発明は以上の点に鑑みなされたものであり、複雑なアレンジを伴う曲でも、例えば、一定間隔の外部イベント、または、メロディーのみに対応する外部イベントを与えるだけで、容易に自動演奏を行うことができる自動演奏装置を提供することを目的とする。
【０００７】
【課題を解決するための手段及び発明の効果】
（１）請求項１の発明は、
外部イベントに従って、曲データを自動演奏する自動演奏装置であって、前記曲データは、所定の区間データによって各演奏区間に区分されており、前記区間データは前記区間の先頭に位置し、前記自動演奏は、前記外部イベントを受けて前記曲データの所定区間の先頭から終わりまでを自動演奏するものであり、前記自動演奏時には、前記外部イベントに応じて、当該外部イベントに対応する前記区間の自動演奏が１区間ずつ順次進行するとともに、前記外部イベントがあったとき、その直前の区間における前記自動演奏のテンポ、前記直前の区間におけるクロック数の想定値として予め記憶されている値、及び前回の外部イベントから今回の外部イベントまでの間のクロック数の実測値を用いて、今回の外部イベントに対応する区間における前記自動演奏のテンポを設定することを特徴とする自動演奏装置を要旨とする。
【０００８】
本発明の自動演奏装置では、曲データは、所定の区間に区分されており、自動演奏時には、外部イベントを与えるごとに、その外部イベントに対応する区間の自動演奏が進行する。
従って、演奏者は、全てのノートデータごとに外部イベントを与える必要はなく、例えば、曲データの区間ごとに、１つの外部イベントをあたえるだけでよいので、自動演奏を容易に行うことができる。
【０００９】
特に、曲データを区分した各区間の中に、２以上のノートデータを有する区間を有する場合には、その２以上のノートデータを有する区間については、１つの外部イベントを与えるだけで、その２以上のノートデータが自動的に発音されるので、全てのノートデータごとに外部イベントを与える必要がある場合に比べて、外部イベントを与える回数が少なくて済む。
【００１０】
また、本発明の自動演奏装置では、外部イベントの間隔を基にして、自動演奏のテンポを設定する。つまり、外部イベントの間隔が短ければ、自動演奏のテンポを早くし、逆に、外部イベントの間隔が長ければ自動演奏のテンポを遅くする。
【００１１】
このため、外部イベントの間隔を変化させることにより、自動演奏のテンポを、自由に変えることができる。
更に、外部イベントの間隔に応じて、自動演奏のテンポが変化するので、固定されたテンポで自動演奏が進行する場合に比べて、例えば、所定の区間内のノートデータの発音が終わらないうちに次の外部イベントが与えられたり、逆に、所定の区間内の全てのノートデータを発音した後に、次の外部イベントまでに不自然な間が生じてしまうような事態が起こりにくい。
【００１２】
・前記ノートデータとは、例えば、曲データの一部であって、自動演奏装置に発音を指示する情報をいう。
（２）請求項２の発明は、
前記所定の区間は、前記曲データの一拍に相当する区間であることを特徴とする前記請求項１に記載の自動演奏装置を要旨とする。
【００１３】
本発明の自動演奏装置では、外部イベントに対応する区間が、曲の一拍に相当するので、外部イベントを与える度に、一拍ずつ自動演奏が進行する。
従って、この自動演奏装置では、演奏者は、外部イベントを、一拍の間隔で与えるだけで自動演奏を行うことができ、操作が容易であるという特長を有する。
（３）請求項３の発明は、
前記所定の区間は、メロディーのノートデータ１音と、当該メロディーのノートデータに後続する伴奏のノートデータとから成る区間であることを特徴とする前記請求項１に記載の自動演奏装置を要旨とする。
【００１４】
本発明では、外部イベントに対応する区間が、メロディーのノートデータ１音と、そのメロディーのノートデータに後続する伴奏のノートデータとから成るので、外部イベントを与える度に、メロディーと、そのメロディーに伴う伴奏音が発音される。
【００１５】
従って、演奏者は、メロディーのノートデータのタイミングで外部イベントを与えるだけで自動演奏を進行させることができ、伴奏音のノートデータに対しては、外部イベントを与える必要がない。
そのため、この自動演奏装置は、演奏者の操作が容易であるという特長を有する。
（４）請求項４の発明は、
前記テンポの設定は、前記直前の区間におけるクロック数の想定値として予め記憶されている値と、前記前回の外部イベントから今回の外部イベントまでの間のクロック数の実測値との比率を用いて行うことを特徴とする前記請求項１〜３のいずれかに記載の自動演奏装置を要旨とする。
【００１６】
本発明は、テンポの設定方法を例示している。
本発明では、例えば、前記直前の区間におけるクロック数の想定値として予め記憶されている値（TapClock）と、前回の外部イベントから今回の外部イベントまでの間のクロック数の実測値（Taptime）とを比較し、実測値の方が短い場合は、テンポを現状の値より高く設定し、逆に、実測値の方が長い場合は、テンポを現状の値より低く設定する。
【００１７】
具体的には、例えば、外部イベントが与えられるごとに、以下の式により自動演奏のテンポ（NewTempo）を設定し直す。
（NewTempo）＝（OldTempo）×（TapClock）／（Taptime）
尚、上記OldTempoは、例えば、前回の外部イベントがあった際に、上記の式に従って設定したテンポをいう。また、自動演奏を開始してから最初のテンポ設定においては、例えば、曲データに予め記録された値とすることができる。
【００１８】
本発明の自動演奏装置では、外部イベントの間隔の変化に応じて、自動演奏のテンポが自動的に再設定されるので、演奏者は、外部イベントの間隔を変化させることにより、自動演奏のテンポを自由に変えることができる。
また、外部イベントの間隔に合わせて自動演奏のテンポが変化することにより、固定されたテンポで自動演奏が進行する場合に比べて、例えば、ある区間の自動演奏が終了しないうちに次の外部イベントが与えられたり（次の区間の自動演奏が始まったり）、逆に、ある区間の自動演奏が終了してから、次の外部イベントがあるまで（次の区間の自動演奏が始まるまで）に不自然な間が生じてしまうようなことが起こりにくい。
【００１９】
・前記予め記憶されている値としては、例えば、外部イベントの間隔の想定値として、予め曲データに記録された値とすることができる。この予め記憶されている値は、例えば、全ての外部イベントの間隔に対して同一の値とすることができるし、あるいは、外部イベントによって（例えば、自動演奏において何回目の外部イベントであるかによって）異なる値とすることができる。
【００２０】
また、前記予め記憶されている値としては、例えば、ある外部イベントに対応するノートデータのステップタイム（ノートデータの含むデータの１つであり、そのノートデータの発音されるタイミングを示すデータ）と、次の外部イベントに対応するノートデータのステップタイムとの差を用いることができる。
【００２１】
・前記実測値としては、例えば、外部イベントと外部イベントの間において、所定のテンポで動作するタイマーのクロック数とすることができる。前記タイマーのテンポとしては、例えば、上記OldTempoとすることができる。
【００２６】
（５）請求項５の発明は、
前記外部イベントが、発音の強弱に関する情報を含むことを特徴とする前記請求項１〜４のいずれかに記載の自動演奏装置を要旨とする。
【００２７】
本発明では、外部イベントに、発音の強弱に関する情報（ベロシティ情報）が含まれているので、例えば、ある外部イベントが与えられると、その外部イベントに含まれるベロシティ情報に従って、自動演奏の発音の音量が設定される。
具体的には、自動演奏の発音の音量の設定を、例えば、次のように行うことができる。
【００２８】
自動演奏において、各ノートデータには、その音量に関するデータ（ベロシティ値）が記録されており、基本的には、その記録されたベロシティ値に従って、各ノートデータの発音の音量が定められるが、外部イベントに含まれるベロシティ情報が所定の値よりも大きいときは、その外部イベントに対応する区間の各ノートデータのベロシティ値を１．２倍に修正し、その修正されたベロシティ値に基づいて、発音処理を行う。
【００２９】
逆に、外部イベントに含まれるベロシティ情報が所定の値よりも小さいときは、その外部イベントに対応する区間の各ノートデータのベロシティ値を０．７倍に修正し、その修正されたベロシティ値に基づいて、発音処理を行う。
本発明の自動演奏装置では、外部イベントに含まれるベロシティ情報により、例えば、区間ごとに発音の音量を制御することができるという特長を有する。
【００３０】
・前記ベロシティ情報を含む外部イベントとしては、例えば、鍵盤の押鍵、操作パネルにおけるパネルスイッチ（パネルＳＷ）の操作、ＭＩＤＩ入力されたキーオン情報等がある。また、ベンダー等のアナログ操作子の操作情報を用いてもよい。
【００３１】
・前記ベロシティ情報としては、外部イベントが鍵盤の押鍵である場合には、例えば、鍵盤の押鍵の強さ（速さ）を示すパラメータがある。また、外部イベントが、操作パネルにおけるパネルスイッチ（パネルＳＷ）操作である場合には、そのパネルＳＷを押す強さ（速さ）を示すパラメータがある。
（６）請求項６の発明は、
前記外部イベントが、鍵盤の押鍵操作であることを特徴とする前記請求項１〜５のいずれかに記載の自動演奏装置を要旨とする。
【００３２】
本発明は、外部イベントを例示する。
本発明の自動演奏装置では、鍵盤の鍵に対する押鍵を外部イベントとして、自動演奏を行うことができる。
尚、外部イベントを発生させる鍵は、例えば、鍵盤の全ての鍵とすることもできるし、特定の鍵のみとすることもできる。
【００３３】
・本発明の自動演奏装置としては、例えば、電子ピアノ等の鍵盤楽器が挙げられる。
・前記鍵盤は、自動演奏装置の一部であってもよく、また、自動演奏装置とは別体であり、例えばＭＩＤＩ端子を通じて自動演奏装置に接続されているものでもよい。
（７）請求項７の発明は、
前記外部イベントが、自動演奏装置を操作する操作パネルにおける操作であることを特徴とする前記請求項１〜５のいずれかに記載の自動演奏装置を要旨とする。
【００３４】
本発明は、外部イベントを例示する。
本発明の自動演奏装置では、例えば、操作パネルに設けられたボタンを操作することにより外部イベントを発生させ、自動演奏を行うことができる。
・前記操作パネルは、自動演奏装置の一部であってもよく、また、自動演奏装置とは別体であり、例えばＭＩＤＩ端子を通じて自動演奏装置に接続されているものでもよい。
【００３５】
【発明の実施の形態】
以下に本発明の電子楽器（自動演奏装置）の実施の形態の例を説明する。
（実施の形態１）
ａ）まず、本実施例１の電子楽器全体の構成を図１を用いて説明する。
【００３６】
図１に示す電子楽器１００は、鍵盤１０８、鍵盤１０８の操作状態を検出するキースイッチ回路１０１、操作パネル１０９、操作パネル１０９の操作状態を検出するパネルスイッチ回路１０２、ＲＡＭ１０４、ＲＯＭ１０５、ＣＰＵ１０６、テンポタイマー１１５及び楽音発生装置（楽音発生回路）１０７を備えており、これらはバス１１４により結合されている。
【００３７】
そして、楽音発生装置１０７には、ディジタル／アナログ（Ｄ／Ａ）変換器１１１、増幅器１１２、及びスピーカ１１３が順次接続されている。
ｂ）次に、各部の構成について説明する。
操作パネル１０９は、モード選択スイッチを備えており、このモード選択スイッチにおいて通常演奏モードを選択すると、この電子楽器１００は通常の電子楽器として機能し、一方、自動演奏モードを選択すると、自動演奏装置として機能する。
【００３８】
上記操作パネル１０９は、選曲スイッチを備えており、この選曲スイッチにおいて、自動演奏する曲を選ぶことができる。
また、操作パネル１０９は、自動演奏をする際の鍵盤１０８に対する鍵盤イベント（鍵盤１０８のいずれかの鍵を押鍵すること；外部イベント）のタイミングを表示する表示器１０９ａを備えている。
【００３９】
この表示器１０９ａは、図２ａに示す様に、自動演奏において鍵盤イベントを与えるべきタイミングを大きい黒丸で示し、鍵盤イベントのタイミングの他に、鍵盤イベントに応じて発音されるノートデータのタイミングを小さい黒丸で表示する。
【００４０】
また、表示器１０９ａでは、一拍の区間の区切りを表示し、既に自動演奏が終了した鍵盤イベントのタイミング、及び発音されたノートデータのタイミングは、図２ｂに示す様に、十字印として表示する。
テンポタイマー１１５は、自動演奏の際に、所定の間隔で割り込み信号をＣＰＵ１０６に供給し、自動演奏のテンポの基準となるものである。
【００４１】
ＲＯＭ１０５は、電子楽器１００全体を制御するためのプログラムや各種データの他、複数の曲に対応した自動演奏データ（曲データ）、及び演奏制御機能のためのプログラムも記憶している。
上記自動演奏データは、図３に示す様に、曲（曲（１）、曲（２）、・・・曲（ｎ））ごとに、ＲＯＭ１０５に予め記憶されている。
【００４２】
そして、各曲の自動演奏データは、図４に示す様に、曲の最初の部分に、音色データ、音量ボリュームデータ、テンポデータ、及び拍データが記憶されている。また、自動演奏データは、曲の一拍に相当する区間（拍）ごとにまとまったノートデータと、拍（区間）ごとに対応して設けられた拍データとを有する。
【００４３】
上記音色データは、続くノートデータ（図１３においてはメロディーのノートデータ及び伴奏のノートデータ）に基づき発音すべき楽音の音色を指定する。
上記音量ボリュームデータは、発音する楽音の音量を制御する。
上記テンポデータは、曲の最初の拍（区間）のテンポスピードのみ制御するものである。尚、２拍目以降のテンポは、後述するように、鍵盤イベント間のタイミングにより定められる。
【００４４】
上記拍データには、対応する拍（区間）についてのTapClockが記録されており、具体的には、９６又は４８が記録されている。例えば、３／４、４／４拍子ならば９６が記憶されており、６／８拍子ならば４８が記憶されている。
尚、このTapClockとは、対応する拍（区間）において、テンポタイマー１１５が信号を送る回数（クロック数）の想定値である。
【００４５】
上記ノートデータは、それぞれ、キーナンバＫ、ステップタイムＳ、ゲートタイムＧ、及びベロシティＶを含んでいる。
ここで、ステップタイムＳは、曲の始めを基点として、そのノートデータが発音されるタイミングを示すデータである。
【００４６】
また、キーナンバＫは音階を示し、ゲートタイムＧは発音の持続時間を示し、ベロシティＶは発音の音量（押鍵圧）を示している。
ＣＰＵ１０６は、ＲＯＭ１０５に予め格納されているプログラムにより、後述する自動演奏を実行する。
【００４７】
また、ＣＰＵ１０６は、ＲＯＭ１０５に格納されている各種の制御プログラムを読み出して実行することで、電子楽器１００全体の動作制御も行う。このとき、ＲＡＭ１０４は、ＣＰＵ１０６が各種の制御処理を行うために、種々のデータを一時記憶するためのメモリとして使用される。
【００４８】
そして、自動演奏の際には、図３に示す様に、自動演奏する曲の自動演奏データを保持し、必要に応じて楽音発生装置１０７に送り出す。
楽音発生装置１０７は、自動演奏の実行時には、ＲＡＭ１０４から送られる所定の自動演奏データを発音し、通常演奏の実行時には、鍵盤１０８の押鍵に応じた楽音を発音するものである。
【００４９】
ｃ）次に、本実施の形態１の電子楽器１００の自動演奏時の動作の概略を説明する。
本実施の形態１の電子楽器１００は、自動演奏モードとした場合には、１回目の鍵盤イベントがあると、自動演奏データのうち、最初の区間の先頭から、その区間の終わりまで自動演奏を進め、２回目の鍵盤イベントがあると、２番目の区間の先頭からその区間の終わりまで自動演奏を進行する。以後同様に、ｎ回目の鍵盤イベントがあると、ｎ番目の区間の先頭からその区間の終わりまで自動演奏を進行する。
【００５０】
尚、ｎ番目の区間の自動演奏が終了しないうちに、ｎ＋１回目の鍵盤イベントがあると、まだ発音すべきノートデータが残っていてもそれは無視して、ｎ＋１番目の区間の先頭に飛び、そこから自動演奏が進行する。また、ｎ番目の区間の自動演奏が終了した後は、ｎ＋１回目の鍵盤イベントがあるまで待機する。
【００５１】
この電子楽器１００のｎ番目の区間における自動演奏のテンポは、テンポタイマー１１５のテンポに同期しており、そのテンポタイマー１１５のテンポは、下記の式に従って、鍵盤イベントのある度に（即ち、自動演奏データの区間ごとに）再設定される。
【００５２】
（Newtempo）=(OldTempo）×（TapClock）／（TapTime）
ここで、OldTempoとは、前の区間（ｎ−１番目の区間）における自動演奏のテンポである。
尚、曲の最初の区間のテンポは、自動演奏データ中に記憶されたテンポデータに基づいて設定される。
【００５３】
また、TapClockとは、前述したように、１区間の間にテンポタイマー１１５が信号を送る回数（クロック数）の想定値として、自動演奏データに予め記録されている値（９６又は４８）である。
また、TapTimeとは、前回（ｎ−１回目）の鍵盤イベントから今回（ｎ回目）の鍵盤イベントまでの間の、テンポタイマー１１５のクロック数の実測値である。
【００５４】
従って、TapTimeがTapClockより小さい場合（鍵盤イベントの間隔が想定よりも短かった場合）には、NewtempoはOldTempoよりも大きく設定され、逆に、TapTimeがTapClockより大きい場合（鍵盤イベントの間隔が想定よりも長かった場合）には、NewtempoはOldTempoよりも小さく設定される。
【００５５】
一方、電子楽器１００は、通常演奏モードの際には、通常の電子楽器として機能するが、本発明の内容とは直接関係がないので省略する。
ｄ）次に、本実施の形態１の電子楽器１００の動作、特に、自動演奏実行時の動作について具体的に説明する。
【００５６】
(i)本実施例１の電子楽器１００の処理のメインルーチンを図５に示す。電子楽器１００に電源が投入されると、先ず、初期化処理が行われる（ステップ１０）。
この初期化処理は、ＣＰＵ１０６の内部状態を初期状態に設定すると共に、ＲＡＭ１０４に定義されているレジスタ、カウンタ或いはフラグ等に初期値を設定する処理である。また、この初期化処理では、楽音発生装置１０７に所定のデータを送り、電源投入時に不要な音が発生されるのを防止する処理も行われる。
【００５７】
(ii)初期化処理が終了すると、次いで、パネルイベント処理が行われる（ステップ２０）。
パネルイベント処理の詳細を図６に示す。このパネルイベント処理では、先ず、操作パネル１０９での操作の有無が調べられる（ステップ１１０）。これは、次のようにして行われる。即ち、先ずパネルスイッチ回路１０２が操作パネル１０９をスキャンすることにより得られる各スイッチのオン／オフ状態を示すデータ（以下、「新パネルデータ」という。）を各スイッチに対応したビット列として取り込む。
【００５８】
次いで、前回読み込んで既にＲＡＭ１０４に記憶されているデータ（以下、「旧パネルデータ」という。）と、上記新パネルデータとを比較して相違するビットをオンにしたパネルイベントマップを作成する。パネルイベントの有無は、このパネルイベントマップを参照することにより判断される。即ち、パネルイベントマップ中にオンになっているビットが１つでも存在するとパネルイベントがあった旨が判断される。
【００５９】
上記ステップ１１０でパネルイベントがないことが判断されると、このパネルイベント処理ルーチンからリターンしてメインルーチンに戻る。
一方、上記ステップ１１０でパネルイベントがあることが判断されると、次いで、そのパネルイベントはモード選択スイッチのイベントであるか否かが調べられる（ステップ１２０）。これは、パネルイベントマップ中のモード選択スイッチに対応するビットがオンになっているか否かを調べることにより行われる。
【００６０】
ここで、モード選択スイッチのイベントでないことが判断されるとステップ１３０に進み、一方、モード選択スイッチのイベントであると判断されると、モード変更処理が行われる（ステップ１５０）。このモード変更処理とは、通常演奏モードと自動演奏モードとを、転換する処理である。モード変更処理が終了すると、ステップ１３０に進む。
【００６１】
ステップ１３０では、選曲スイッチのイベントであるか否かが調べられる。これは、パネルイベントマップ中の選曲スイッチに対応するビットがオンになっているか否かを調べることにより行われる。
ここで、選曲スイッチのイベントでないことが判断されるとステップ１４０に進み、一方、選曲スイッチのイベントであると判断されると、選曲処理が行われる（ステップ１６０）。この選曲処理とは、自動演奏をする曲を選択する処理であり、選曲スイッチにおいて指定された曲が、自動演奏実行時に演奏される。選曲処理が終了すると、ステップ１４０に進む。
【００６２】
ステップ１４０では、その他のスイッチに対する処理が行われる。この「その他のスイッチ処理」により、例えば、音色選択スイッチ、音響効果選択スイッチ、音量設定スイッチ等の各パネルイベントに対する処理が行われることになるが、これらの各処理は本発明とは直接関係しないので説明は省略する。この「その他のスイッチ処理」が終了すると、パネルイベント処理ルーチンからリターンしてメインルーチンに戻る。
【００６３】
(iii)パネルイベント処理が終了すると、鍵盤イベント処理（図５、ステップ３０）が実行される。この鍵盤イベント処理の詳細を図７に示す。
まず、ステップ２１０では、自動演奏モードであるか否かが調べられる。ここで、自動演奏モードであると判断されると、ステップ２２０に進み、後述する自動演奏用イベント処理を実行する。
【００６４】
一方、ステップ２１０において通常演奏モードであると判断されると、ステップ２３０に進み、通常イベント処理（通常の電子楽器としての発音処理）を実行する。通常イベント処理については、本発明と直接関係しないので説明は省略する。
【００６５】
ステップ２２０では、図８に示す様に、自動演奏用イベント処理が実行される。
この自動演奏用イベント処理では、まずステップ３１０にて、鍵盤イベント（外部イベント）の有無が調べられる。これは、次のようにして行われる。即ち、キースイッチ回路１０１で鍵盤１０８をスキャンすることにより、各鍵の押下状態を示すデータ（以下、「新キーデータ」という。）を各鍵に対応したビット列として取り込む。
【００６６】
次いで、前回読み込んで既にＲＡＭ１０４に記憶されているデータ（以下、「旧キーデータ」という。）と、上記新キーデータとを比較して相違するビットが存在するか否かを調べ、相違するビットをオンにした鍵盤イベントマップを作成する。鍵盤イベントの有無の判断はこの鍵盤イベントマップを参照することにより行われる。即ち、鍵盤イベントマップ中にオンになっているビットが１つでも存在すると鍵盤イベントがあった旨が判断されることになる。
【００６７】
上記で作成した鍵盤イベントマップを参照することにより鍵盤イベントがあったことが判断されると、ステップ３２０へ進み、一方、鍵盤イベントが無かったと判断されると、自動演奏用イベント処理ルーチンからリターンしてメインルーチンに戻る。
【００６８】
ステップ３２０では、下記の式に従い、自動演奏のテンポ（Newtempo）を決定する。
（Newtempo）=(OldTempo）×（TapClock）／（TapTime）
ここで、OldTempoは、前回の自動演奏用イベント処理において決定されたテンポである。また、TapClockは、自動演奏データの１区間に、テンポタイマー１１５が信号を送る回数（クロック数）の想定値として、自動演奏データに予め記録されている数値（９６又は４８）である。また、TapTimeは、前回の鍵盤イベントから今回の鍵盤イベントまでの間のクロック数の実測値であり、後述する自動演奏用クロック処理において、カウントアップされたものである。
【００６９】
このように決定されたNewtempoは、次の鍵盤イベントがあるまでの間、テンポタイマー１１５のテンポ（割り込み間隔）として設定される。そして、このテンポタイマー１１５のテンポは、後述するように、次の鍵盤イベントがあるまでの間の自動演奏のテンポとなる。
【００７０】
ステップ３２０の後は、ステップ３３０へ進む。このステップ３３０では、未処理クロックの一括処理を行う。
つまり、自動演奏データのｎ番目の区間を自動演奏している際に、ｎ＋１回目の鍵盤イベントがあると、ｎ＋１番目の区間の先頭までは一気に自動演奏を進め、ｎ＋１番目の区間の先頭からは、前記ステップ３２０で検出し、設定したテンポで自動演奏を再開させる。
【００７１】
このステップ３３０の処理により、鍵盤イベントがあるごとに、その鍵盤イベントに対応する自動演奏データの区間が自動演奏される機能が実現する。
ステップ３３０の後は、ステップ３４０へ進む。
このステップ３４０では、次の拍データに記憶されている値をTapClockとする。
【００７２】
次のステップ３５０では、RunClockとして、上記ステップ３４０で設定したTapClockを設定する。尚、このRunClockは、後に詳述するように、自動演奏処理の進行を律する値である。
次のステップ３６０では、TapTimeとして、０を設定する。
【００７３】
(iV)鍵盤イベント処理が終了すると、ソングプレイ処理（図５、ステップ４０）が実行される。このソングプレイ処理の詳細を図９に示す。
ステップ４０５では、RunClockが０であるか否かが調べられる。RunClockが０でないと判断されると、ステップ４１０に進む。一方、RunClockが０であると判断されると、ソングプレイ処理ルーチンからリターンしてメインルーチンに戻る。
【００７４】
尚、このRunClockは、前述したように、自動演奏用イベント処理において、TapClockの値が設定され、後述する自動演奏用クロック処理において、テンポタイマー１１５のテンポに応じて減算されるものである。
ステップ４１０では、SeqClockが０であるか否かが調べられる。このSeqClockは、図１０に示す様に、テンポタイマー１１５からの割り込み信号によってインクリメントされ、ソングプレイ処理終了後、０にリセットされる数値である。よって、SeqClockは、直前のソングプレイ処理からのクロック数を示す。尚、このテンポタイマー１１５の割り込み信号を発するテンポは、前述した自動演奏用イベント処理において設定されたものである。
【００７５】
ステップ４１０でSeqClockが０であると判断されると、未だ自動演奏の発音タイミングに至らないとして、ソングプレイ処理ルーチンからリターンしてメインルーチンに戻る。
一方、ステップ４１０でSeqClockが０でないと判断されると、ステップ４２０へ進む。このステップ４２０では、自動演奏用クロック処理が実行される。この自動演奏用クロック処理の詳細を図１１に示す。
【００７６】
自動演奏用クロック処理のステップ５１０では、TapTimeにSeqClockの値が加算される。従って、TapTimeは、SeqClockと同様に、テンポタイマー１１５の割り込みがあるたびにインクリメントされる。
次のステップ５２０では、SeqClockがRunClockより大きいか否かが調べられる。
【００７７】
SeqClockがRunClockより大きくないと判断された場合は、ステップ５４０に進む。一方、ステップ５２０にて、SeqClockがRunClockより大きいと判断された場合は、ステップ５３０に進み、SeqClockの値として、RunClockが設定され、その後、ステップ５４０に進む。
【００７８】
ステップ５４０では、RunClockからSeqClockが減算される。その後、自動演奏用クロック処理ルーチンからメインルーチンにリターンする。
次に、ソングプレイ処理のルーチン（図９）に戻り、ステップ４３０のシーケンス進行処理が行われる。ここでは、未だ発音していないノートデータのうち、所定の範囲のノートデータを順次読み出し、楽音発生装置１０７へ送る。
【００７９】
楽音発生装置１０７では、ノードデータの有するキーナンバＫ及びゲートタイムＧに従って、それぞれ、発音の音階、及び発音の継続時間を定めるとともに、ノードデータの有するベロシティＶと、鍵盤の押鍵速さとに従って、発音の音量を設定し、発音する。
【００８０】
その音量設定に関する具体的な処理方法を、図１２に示す。
ステップ６１０では、鍵盤の押鍵速さが、所定の値Ａ1より大きいか否かが判断される。Ａ１より大きくないと判断されると、ステップ６２０へ進み、Ａ１より大きいと判断されると、ステップ６４０に進む。
【００８１】
ステップ６２０では、鍵盤の押鍵速さが、所定の値Ａ２より小さいか否かが判断される。Ａ２より小さくないと判断されると、ステップ６３０へ進み、Ａ２より小さいと判断されると、ステップ６５０に進む。尚、Ａ１＞Ａ２である。
ステップ６３０では、鍵盤イベントに対応する区間内のノートデータの発音の音量が、それぞれのノートデータのベロシティＶに従って設定される。
【００８２】
一方、前記ステップ６１０にてＹＥＳと判断された場合は、ステップ６４０にて、鍵盤イベントに対応する区間内のノートデータの発音の音量が、それぞれのノートデータのベロシティＶを１．２倍した値に従って設定される。
また、前記ステップ６２０にてＹＥＳと判断された場合には、ステップ６５０にて、鍵盤イベントに対応する区間内のノートデータの発音の音量が、それぞれのノートデータのベロシティＶを０．７倍した値に従って設定される。
【００８３】
上記ステップ６１０〜６５０の処理により、演奏者は、押鍵の押鍵強度を変えることにより、その押鍵に対応する区間の自動演奏時の音量を変化させることができる。
ステップ４３０の終了後、ソングプレイ処理ルーチンがらリターンしてメインルーチン（図５）に戻る。
【００８４】
(v)メインルーチンのＭＩＤＩ受信処理（ステップ５０）は、ＭＩＤＩ端子を介して接続している外部装置（図示せず）から入力されるデータに基づいて、発音、消音、その他の処理が行われるものであるが、本発明とは直接関係しないので詳細は省略する。
【００８５】
また、メインルーチンのその他の処理（ステップ６０）は、音色選択処理、ボリューム設定処理等の処理を行うものであるが、本発明とは直接関係しないので詳細は省略する。
ｅ）次に本実施の形態１の電子楽器１００の奏する効果を説明する。
【００８６】
▲１▼本実施の形態１の電子楽器１００では、自動演奏データを、一拍に相当する区間ごとに区切り、鍵盤イベントを与える度に、その区間単位で自動演奏を進行させる。
そのため、演奏者は、一拍ごとに鍵盤イベントを与えるだけでよく、全てのノートデータに対して鍵盤イベントを与える必要がない。
【００８７】
その結果、演奏者は容易に自動演奏を行うことができる。
▲２▼この電子楽器１００では、鍵盤イベントの間隔を基にして、自動演奏のテンポが設定されるので、演奏者は、鍵盤イベントの間隔を変化させることにより、自動演奏のテンポを自由に変えることができる。
【００８８】
▲３▼この電子楽器１００では、鍵盤イベントのテンポに応じて、拍毎に自動演奏のテンポが変化するので、固定されたテンポで自動演奏が進行する場合に比べて、次の鍵盤イベントまでに発音しきれないノートデータが生じたり、逆に、ある区間の全てのノートデータを発音した後に、次の鍵盤イベントまでに不自然な間が生じてしまうような事態が起こりにくい。
（実施の形態２）
ａ）本実施の形態２における電子楽器の構成は、基本的には、前記実施の形態１の電子楽器１００と同様であるが、自動演奏データの構成において一部異なる。尚、以下では、前記実施の形態１の電子楽器１００と同様の記載は省略する。
【００８９】
図１３に示すように、この実施の形態２の電子楽器２００における自動演奏データは、先頭に位置するメロディーのノートデータ１つと、そのメロディーに後続する伴奏のノートデータとから成る区間により構成されている。
そのため、各区間の長さは一定ではなく、区間におけるクロック数の想定値であるTapClockは、各区間毎に、それぞれ異なる値が計算される。
【００９０】
また、メロディーのノートデータ及び伴奏のノートデータは、それぞれ、キーナンバＫ、ステップタイムＳ、ゲートタイムＧ、及びベロシティＶを含んでいる。
ｂ）次に、電子楽器２００の動作の概略を説明する。
【００９１】
電子楽器２００では、鍵盤イベントに応じて、自動演奏データの１区間を単位として自動演奏が進行する点では、前記実施の形態１の電子楽器１００と同様である。
また、鍵盤イベントがある毎に、次の鍵盤イベントまでのテンポを再設定する点でも、電子楽器１００と同様である。
【００９２】
ただし、上述したように、電子楽器２００では、自動演奏データを構成する区間が、メロディーのノートデータを基準とするものであるため、鍵盤イベントがある度に、メロディーのノートデータ単位で自動演奏が進行する。
つまり、１回目の鍵盤イベントに応じて、最初の区間の先頭にあるメロディーのノートデータから、そのメロディーに後続する伴奏のノートデータへと自動演奏が進行する。同様に、ｎ回目の鍵盤イベントに応じて、ｎ番目の区間の先頭にあるメロディーのノートデータから、そのメロディーに後続する伴奏のノートデータへと、自動演奏が進行する。
【００９３】
ｃ）電子楽器２００の自動演奏実行時の具体的な動作は、基本的には、前記実施の形態１の電子楽器１００の動作と同様である。
ただし、上述したように、自動演奏データの区間が、メロディーのノートデータに対応しており、各区間の長さ（tapClock）は一定ではない。
【００９４】
そのため、自動演奏データにおいては、各区間ごとに異なるTapClockがそれぞれ計算される。
具体的には、この電子楽器２００の自動演奏用イベント処理では、図１４に示す様に、ステップ７４０において、今発音しているメロディのノートデータのステップタイムＳと、次の区間のメロディーのノートデータのステップタイムＳとの差を、その区間のTapClockとする。
【００９５】
ｄ）本実施の形態２の電子楽器２００の奏する効果を説明する。
▲１▼本実施例２の電子楽器２００では、１つの鍵盤イベントを与える度に、メロディーと、そのメロディーに後続する伴奏が発音される。
そのため、演奏者は、メロディーのタイミングで鍵盤イベントを与えるだけでよく、伴奏のタイミングでは、鍵盤イベントを与える必要がない。
【００９６】
その結果、演奏者は容易に自動演奏を行うことができる。
▲２▼この電子楽器２００では、前記実施の形態１の電子楽器１００と同様に、鍵盤イベントのテンポを変えることにより、自動演奏のテンポを自由に変えることができる。
【００９７】
▲３▼この電子楽器２００では、前記実施の形態１の電子楽器１００と同様に、鍵盤イベントのテンポに応じて、自動演奏のテンポを設定するので、固定されたテンポで自動演奏が進行する場合に比べて、次の鍵盤イベントまでに発音しきれないノートデータが生じたり、逆に、その区間の全てのノートデータを発音した後に、次の鍵盤イベントまでに不自然な間が生じてしまうような事態が起こりにくい。
（実施の形態３）
ａ）本実施の形態３における電子楽器の構成及び動作は、基本的には前記実施の形態１の電子楽器１００と同様であるが、自動演奏のテンポの設定方法において異なる。尚、以下では、前記実施の形態１の電子楽器１００と同様の記載は省略する。
【００９８】
この実施の形態３の電子楽器３００では、自動演奏用イベント処理（図８）のテンポ検出（ステップ３２０）において、自動演奏のテンポ（NewTempo）を以下の式により設定する。
（NewTempo）＝α（OldTempo）＋（１−α）Ｆ
ここで、上記OldTempoとは、例えば、前回の外部イベントがあった際に、上記の式に従って設定したテンポをいう。また、自動演奏を開始してから最初のテンポ設定においては、例えば、曲データに予め記録された値とすることができる。
【００９９】
上記αは、０より大きく１未満の数値であり、例えば０．５とすることができる。このαを大きくした場合には、(NewTempo)におけるＦの寄与が小さくなるので、（NewTempo）の変化を緩やかにすることができ、逆に、αを小さくした場合には、（NewTempo）を、外部イベント間隔の変化に応じて、素早く変化させることができる。
【０１００】
ｂ）本実施の形態３の電子楽器３００の奏する効果を説明する。
▲１▼本実施例３の電子楽器３００では、前記実施の形態１の電子楽器１００と同様に、一拍毎に鍵盤イベントを与えるだけでよいので、演奏者は容易に自動演奏を行うことができる。
【０１０１】
▲２▼この電子楽器３００では、前記実施の形態１の電子楽器１００と同様に、鍵盤イベントのテンポを変えることにより、自動演奏のテンポを自由に変えることができる。また、固定されたテンポで自動演奏が進行する場合に比べて、次の鍵盤イベントまでに発音しきれないノートデータが生じたり、逆に、その区間の全てのノートデータを発音した後に、次の鍵盤イベントまでに不自然な間が生じてしまうような事態が起こりにくい。
【０１０２】
尚、本発明は上記の形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲で種々の形態で実施することができる。
【図面の簡単な説明】
【図１】  実施の形態１の電子楽器の全体構成を示す説明図である。
【図２】  実施の形態１の電子楽器における表示器の構成を示す説明図である。
【図３】  実施の形態１の電子楽器におけるＲＯＭ及びその周辺部の構成を示す説明図である。
【図４】  実施の形態１の電子楽器における自動演奏データの説明図である。
【図５】  実施の形態１の電子楽器における全体処理を示す説明図である。
【図６】  実施の形態１の電子楽器におけるパネルイベント処理を示す説明図である。
【図７】  実施の形態１の電子楽器における鍵盤イベント処理を示す説明図である。
【図８】  実施の形態１の電子楽器における自動演奏用イベント処理を示す説明図である。
【図９】実施の形態１の電子楽器におけるソングプレイ処理を示す説明図である。
【図１０】実施の形態１の電子楽器におけるテンポタイマー割り込み処理を示す説明図である。
【図１１】実施の形態１の電子楽器における自動演奏用クロック処理を示す説明図である。
【図１２】実施の形態１の電子楽器における音量設定処理を示す説明図である。
【図１３】実施の形態２の電子楽器における自動演奏データの説明図である。
【図１４】実施の形態２の電子楽器における自動演奏用イベント処理を示す説明図である。
【符号の説明】
１００、２００、３００・・・電子楽器
１０１・・・キースイッチ回路
１０２・・・パネルスイッチ回路
１０４・・・ＲＡＭ
１０５・・・ＲＯＭ
１０６・・・ＣＰＵ
１０７・・・楽音発生装置
１０８・・・鍵盤
１０９・・・操作パネル
１１５・・・テンポタイマー
【図１】
0004808868.tif 000002
【図２】
0004808868.tif 000003
【図３】
0004808868.tif 000004
【図４】
0004808868.tif 000005
【図５】
0004808868.tif 000006
【図６】
0004808868.tif 000007
【図７】
0004808868.tif 000008
【図８】
0004808868.tif 000009
【図９】
0004808868.tif 000010
【図１０】
0004808868.tif 000011
【図１１】
0004808868.tif 000012
【図１２】
0004808868.tif 000013
【図１３】
0004808868.tif 000014
【図１４】
0004808868.tif 000015