(57)【特許請求の範囲】
【請求項１】
曲を形成する各音毎の音高および発音タイミングを表す音符データを予め記憶手段に記憶しておき、この音符データを演奏操作子のオン操作に応じて記憶手段から読み出して再生する演奏装置において、
テンポ値に従ったタイミングで前記記憶手段から次に発音すべき音符データを読み出す読出し手段と、
この読出し手段によって読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出する予測タイミング算出手段と、
前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新するテンポ更新手段と、
前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作され、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い場合には前記読出し手段が読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い場合には前記読出し手段が読み出しておいた音符データを再生せずに、さらに次の音符データを前記記憶手段から読み出して再生する再生手段と
を具備することを特徴とする演奏装置。
【請求項２】
曲を形成する各音毎の音高および発音タイミングを表す音符データを予め記憶手段に記憶しておき、この音符データを演奏操作子のオン操作に応じて記憶手段から読み出して再生する演奏方法において、
テンポ値に従ったタイミングで前記記憶手段から次に発音すべき音符データを読み出す読出し過程と、
この読出し過程にて読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出する予測タイミング算出過程と、
前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新するテンポ更新過程と、
前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作され、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い場合には前記読出し過程にて読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い場合には前記読出し過程にて読み出しておいた音符データを再生せずに、さらに次の音符データを前記記憶手段から読み出して再生する再生過程と
を具備することを特徴とする演奏方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子楽器等に用いて好適な演奏装置および演奏方法に関する。
【０００２】
【従来の技術】
従来より、「ワンキープレイ」あるいは「エニイキープレイ」と呼ばれ、半自動的な演奏を実現する演奏装置が知られている。例えば「ワンキープレイ」とは、「ワンキープレイ」用に設けられた専用の演奏操作子が操作される度に、一音づつ発音させて楽曲を演奏するものである。
このような演奏装置は、楽曲を形成する各音符の音高および符長を表わす音符データをメモリに記憶しておき、演奏操作子が操作される度に、メモリに記憶しておいた音符データを一音づつ読み出して発音するように構成されている。
なお、「エニイキープレイ」とは、鍵盤のいずれかの鍵を演奏操作子と見做して、上記「ワンキープレイ」と同様に鍵盤のいずれかの鍵が押鍵される度に、メモリ記憶された音符データを一音づつ読み出して発音する態様を言う。
【０００３】
【発明が解決しようとする課題】
ところで、上述した従来の演奏装置では、どのようなタイミングで演奏操作子を操作しても一意的に発音されてしまう為、例えば幼児向けの音楽教習用などには好適であるが、音楽に慣れ親しもうとする大人の初心者をユーザ対象とするには演奏を練習するという要素に欠け、物足りないものとなっている。
そこで、演奏を練習するという要素を取り入れるべく、楽譜どおりのテンポで演奏操作した時にだけ発音させる形態とすると、今度は逆に初心者にとっては演奏操作するタイミングが難しくなり過ぎ、やはり演奏練習には不向きになってしまうという欠点がある。
つまり、以上の内容を言い換えれば、従来の演奏装置ではユーザ好みのテンポで「ワンキープレイ」や「エニイキープレイ」の演奏を練習することができない、という問題がある。
本発明はこのような事情に鑑みてなされたもので、ユーザ好みのテンポで演奏練習することができる演奏装置および演奏方法を提供することを目的としている。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、曲を形成する各音毎の音高および発音タイミングを表す音符データを予め記憶手段に記憶しておき、この音符データを演奏操作子のオン操作に応じて記憶手段から読み出して再生する演奏装置において、テンポ値に従ったタイミングで前記記憶手段から次に発音すべき音符データを読み出す読出し手段と、この読出し手段によって読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出する予測タイミング算出手段と、前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新するテンポ更新手段と、前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作され、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い場合には前記読出し手段が読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い場合には前記読出し手段が読み出しておいた音符データを再生せずに、さらに次の音符データを前記記憶手段から読み出して再生する再生手段とを具備することを特徴とする。
【０００６】
請求項２に記載の発明では、曲を形成する各音毎の音高および発音タイミングを表す音符データを予め記憶手段に記憶しておき、この音符データを演奏操作子のオン操作に応じて記憶手段から読み出して再生する演奏方法において、テンポ値に従ったタイミングで前記記憶手段から次に発音すべき音符データを読み出す読出し過程と、この読出し過程にて読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出する予測タイミング算出過程と、前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新するテンポ更新過程と、前記予測タイミングの前後の所定範囲内で演奏操作子がオン操作され、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い場合には前記読出し過程にて読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い場合には前記読出し過程にて読み出しておいた音符データを再生せずに、さらに次の音符データを前記記憶手段から読み出して再生する再生過程とを具備することを特徴とする。
【０００８】
本発明では、テンポ値に従ったタイミングで記憶手段から次に発音すべき音符データを読み出し、読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出しておき、この予測タイミングの前後の所定範囲内で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新すると共に、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い時には読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い時には読み出しておいた音符データを再生せずに、さらに次の音符データを記憶手段から読み出して再生する。したがって、ユーザが演奏操作子をオン操作する間隔で演奏テンポが決り、なおかつ予測タイミング前後の所定範囲内であって、しかも予測タイミングと同時もしくは早くオン操作した時にだけ正しく音符データが再生されるから、ユーザ好みのテンポで演奏練習することが可能になっている。
【０００９】
【発明の実施の形態】
本発明による演奏装置は、周知の電子楽器はもとより、パーソナルコンピュータ等を用いたＤＴＭ（デスク・トップ・ミュージック）装置等に適用され得る。以下では、本発明の実施の一形態による演奏装置を搭載した電子楽器を実施例とし、これについて図面を参照して説明する。
【００１０】
Ａ．実施例の構成
図１は本発明による一実施例の構成を示すブロック図である。この図において、１はワンキープレイ用の演奏操作子であり、押下操作（以下、これをオン操作と称す）に応じたイベントを発生する。２は押離鍵操作に応じたキーオン／キーオフイベント、ノートナンバおよび押鍵速度（強度）に対応したベロシティ等の演奏情報を発生する鍵盤である。なお、「エニイキープレイ」モード下では鍵盤２のいずれかの鍵が演奏操作子としても用いられる。
【００１１】
３は装置パネル面上に配設される各種スイッチから構成されるパネルスイッチである。このパネルスイッチ３の内には、例えば電源をオンオフする電源スイッチの他、押離鍵操作に応じた楽音を発生させる「通常」モード、「ワンキープレイ」モードおよび「エニイキープレイ」モードのいずれかを選択するモードスイッチＭＳおよびワンキープレイ／エニイキープレイの開始・停止を指示するスタート／ストップスイッチＳＳ等が設けられている。
【００１２】
４は主にパネルスイッチ３から供給されるスイッチイベントに応じて楽器各部を制御する一方、「通常」モード下では鍵盤２から供給される演奏情報に応じて生成した楽音パラメータに基づき後述する音源７に楽音発生を指示したり、「ワンキープレイ」モードおよび「エニイキープレイ」モード下では演奏操作子１のオン操作（もしくは鍵盤２のいずれかの鍵の押鍵操作）に応じて音源７に楽音発生を指示するものであり、その特徴的な処理動作については追って詳述する。
【００１３】
５はＣＰＵ４にロードされる各種制御プログラムの他、ワンキープレイ用の曲データＳＤを記憶するＲＯＭである。ＲＯＭ５に記憶される曲データＳＤとは、図２に図示するように、ワンキープレイ（あるいはエニイキープレイ）開始当初のテンポを指定する初期テンポ値ＩＴＤ、ワンキープレイ開始時点の待ち時間に相当する初期ステップタイムＩＳＴ、楽曲を形成する各音符データとその終わりを表すＥＮＤデータから構成される。なお、各音符データは発音すべき音高を指定する音高データＰＤ、発音タイミングを表すステップタイムＳＴおよび符長に相当するデータであって、消音タイミングを表すゲートタイムＧＴからなる。
【００１４】
６はＣＰＵ４のワークエリアとして用いられるＲＡＭであり、各種レジスタ・フラグデータが一時記憶される。７は周知の波形メモリ読み出し方式により構成される音源である。この音源７は、各種音色の波形データを記憶しており、ＣＰＵ４の制御の下に、指定された音色の波形データを、当該ＣＰＵ４から与えられる楽音パラメータに従って楽音形成してなる楽音波形を出力する。８は音源７から出力される楽音波形をアナログ形式の楽音信号にＤ／Ａ変換した後、それを増幅してスピーカより放音させるサウンドシステムである。
【００１５】
Ｂ．実施例の動作
次に、図３〜図１１を参照して上記構成による実施例の動作について説明する。以下では、まず最初に図３を参照して概略動作を示すメインルーチンの処理について述べた後、続いてメインルーチンからコールされる各処理ルーチンの動作について順次説明し、その後に具体的な全体動作について述べる。
【００１６】
（１）メインルーチンの動作（概略動作）
上記構成による実施例に電源が投入されると、ＣＰＵ４はＲＯＭ５から所定の制御プログラムを読み出してロードし、図３に示すメインルーチンを実行してステップＳＡ１に処理を進める。ステップＳＡ１では、ＲＡＭ６に格納される各種レジスタ／フラグをゼロリセットしたり初期値をセットする他、音源７に対して各種レジスタ／フラグ類の初期化指示を与える等のイニシャライズ処理を行う。次いで、ステップＳＡ２では、前述したワンキープレイ用の演奏操作子１のオン操作に応じて音源７に再生指示を与えたり、パネルスイッチ２の各スイッチ操作に応じた処理、例えばモードスイッチＭＳの操作に応じて動作モードを設定する他、スタート／ストップスイッチＳＳの操作によりワンキープレイ（あるいはエニイキープレイ）を開始／停止させる等のスイッチ処理を実行する。
【００１７】
次に、ステップＳＡ３では、設定された動作モードに従った鍵盤処理を行う。すなわち、通常モード下であれば押離鍵操作に応じた発音／消音指示を発生して音源７に供給し、一方、エニイキープレイモード下であると、鍵盤２のいずれかの鍵の押鍵に応じて曲データＳＤ中の音符データを読み出す処理を実行する。続いて、ステップＳＡ４では、ワンキープレイ（あるいはエニイキープレイ）下の処理タイミングに応じて、曲データＳＤ中から音符データを読み出したり、音源７に消音を指示する等の読出し処理を行う。そして、ステップＳＡ５では、例えば発生した楽音に効果を付与する等の、その他の処理を実行し、以後、電源スイッチがオフされる迄、上述したステップＳＡ２〜ＳＡ５を繰り返し実行する。
【００１８】
（２）スイッチ処理の動作
次に、図４を参照してスイッチ処理の動作について述べる。上述したステップＳＡ２を介してスイッチ処理ルーチンが実行されると、ＣＰＵ４は図４に示すステップＳＢ１〜ＳＢ４を経てモードスイッチ処理、ワンキー処理、スタートストップスイッチ処理およびその他のスイッチ処理を実行する。以下、本発明の要旨に係わる「モードスイッチ処理」、「ワンキー処理」および「スタートストップスイッチ処理」の各動作について説明する。
【００１９】
▲１▼モードスイッチ処理の動作
ステップＳＢ１を介してモードスイッチ処理が実行されると、ＣＰＵ４は図５に示すステップＳＣ１に処理を進め、モードスイッチＭＳがオン操作されたかどうかを判断し、オン操作されていない場合には判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
一方、モードスイッチＭＳがオン操作された場合には判断結果が「ＹＥＳ」となり、次のステップＳＣ２に処理を進め、オン操作に応じて選択されるモード値をレジスタＭＯＤＥにストアする。
なお、モードスイッチＭＳのオン操作に応じて「通常」モードが選択された場合にはレジスタＭＯＤＥにモード値「０」が、「ワンキープレイ」モードではモード値「１」が、「エニイキープレイ」モードではモード値「２」がそれぞれストアされるようになっている。
【００２０】
▲２▼ワンキー処理の動作
上述したステップＳＢ２を介してワンキー処理が実行されると、ＣＰＵ４は図６に示すステップＳＤ１に処理を進め、ワンキープレイ用の演奏操作子１がオン操作されたか否かを判断する。演奏操作子１がオン操作されなければ、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、オン操作された場合には判断結果が「ＹＥＳ」となり、次のステップＳＤ２に進み、レジスタＭＯＤＥに格納されるモード値が「１」、つまり、「ワンキープレイ」モードに設定されているかどうかを判断する。ここで、「ワンキープレイ」モードに設定されていなければ、判断結果は「ＮＯ」となり、本ルーチンを完了させて演奏操作子１のオン操作を無効にする。
一方、「ワンキープレイ」モード下にあると、判断結果は「ＹＥＳ」となり、次のステップＳＤ３に処理を進め、フラグＳＴＯＰを「０」にセットしてプレイ停止を解除し、続くステップＳＤ４では、演奏操作子１のオン操作に応じて音源７に発音指示を与える再生処理（後述する）を実行してから本ルーチンを完了させる。
【００２１】
▲３▼スタート／ストップスイッチ処理の動作
上述したステップＳＢ３を介してスタート／ストップスイッチ処理が実行されると、ＣＰＵ４は図７に示すステップＳＥ１に処理を進め、スタート／ストップスイッチＳＳがオン操作されたか否かを判断する。スタート／ストップスイッチＳＳがオン操作されなければ、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、オン操作されると、判断結果が「ＹＥＳ」となり、ステップＳＥ２に進む。ステップＳＥ２では、レジスタＭＯＤＥに格納されるモード値が「０」でないか否か、つまり、「ワンキープレイ」モードもしくは「エニイキープレイ」モードのいずれかに設定されているかどうかを判断する。
【００２２】
ここで、「通常」モード下にあれば、判断結果は「ＮＯ」となり、本ルーチンを完了させてスタート／ストップスイッチＳＳのオン操作を無効する。これに対し、「ワンキープレイ」モードもしくは「エニイキープレイ」モードのいずれかに設定されていると、判断結果が「ＹＥＳ」となり、次のステップＳＥ３に処理を進め、スタートフラグＳＴＦを反転する。
スタートフラグＳＴＦは「１」の時にプレイ開始を表し、「０」の時にプレイ停止を表す。つまり、スタート／ストップスイッチＳＳはオン操作される毎に、交互にプレイ開始もしくはプレイ停止を表すように設定される所謂トグルスイッチなので、オン操作される毎にスタートフラグＳＴＦの値を反転する。
【００２３】
次いで、ステップＳＥ４では、反転されたスタートフラグＳＴＦの値が「１」、すなわち、プレイ開始を表しているかどうかを判断する。ここで、その値が「０」であれば、プレイ停止を表しているので、判断結果は「ＮＯ」となり、ステップＳＥ５に進み、発音中にある全ての楽音について消音するよう音源７に指示した後、本ルーチンを完了させる。
一方、反転されたスタートフラグＳＴＦの値が「１」であると、プレイ開始を表しているので、判断結果は「ＹＥＳ」となり、ステップＳＥ６〜ＳＥ１０にて「ワンキープレイ」もしくは「エニイキープレイ」の開始に必要な初期設定を行う。
【００２４】
すなわち、ステップＳＥ６では、ＲＯＭ５に記憶される曲データＳＤ中から初期テンポ値ＩＴＤを読み出してレジスタＴＥＭＰＯにストアし、続くステップＳＥ７では、プレイ開始当初の待ち時間に相当する初期ステップタイムデータＩＳＴを曲データＳＤ中から読み出してレジスタＳＴＥＰＴＩＭＥにストアする。
次いで、ステップＳＥ８では、「６０」を初期テンポ値ＩＴＤで除算してテンポクロック当りの秒数を求め、それをレジスタＳＴＥＰＴＩＭＥに格納された初期ステップタイムデータＩＳＴに乗算することによって時間換算される予測タイミングをレジスタＹＴＩＭＥにストアする。
この予測タイミングとは、ワンキープレイ用の演奏操作子１をオン操作すべき（もしくはエニイキープレイ時に鍵盤２のいずれかの鍵を押鍵すべき）タイミングであり、以後の説明ではレジスタＹＴＩＭＥの値を予測タイミングＹＴＩＭＥと記す。
【００２５】
次に、ステップＳＥ９では、レジスタＳＴＩＭＥ，ＴＩＭＥ，ＧＴＩＭＥ，ＭＡＸＴＩＭＥをゼロリセットし、続くステップＳＥ１０ではＲＯＭ５に記憶される曲データＳＤから先頭の音符データを読み出し、読み出した音符データを形成する音高データＰＤ、ステップタイムＳＴおよびゲートタイムＧＴを、それぞれレジスタＢＵＦＦＥＲ，ＳＴＥＰＴＩＭＥ，ＧＡＴＥＴＩＭＥにストアする。
なお、上記ステップＳＥ９にてゼロリセットされるレジスタＳＴＩＭＥ，ＧＴＩＭＥ，ＭＡＸＴＩＭＥは、テンポクロックを累算するカウンタとして用いられるものであり、これらが意図するところについては追って述べる。また、レジスタＴＩＭＥは、後述するように、テンポ値から時間換算される現タイミングを格納するものである。
【００２６】
（３）鍵盤処理の動作
次に、図８を参照して鍵盤処理の動作について説明する。前述したメインルーチン（図３参照）のステップＳＡ３を介して鍵盤処理が実行されると、ＣＰＵ４は図８に示すステップＳＦ１に処理を進め、鍵イベントを検出すべく鍵盤２の各鍵を走査し、続くステップＳＦ２では、この鍵走査により鍵変化の有無、つまり鍵イベントを検出したか否かを判断する。
ここで、押離鍵操作がなされず、鍵変化が無い場合には何も処理せずに本ルーチンを完了させるが、押鍵操作に応じたオンイベントを検出した場合には、ステップＳＦ３に進む。ステップＳＦ３では、レジスタＭＯＤＥに格納されるモード値が「２」ではないか、つまり、「エニイキープレイ」モードに設定されているかどうかを判断する。
【００２７】
「エニイキープレイ」モードに設定されている場合には、判断結果が「ＮＯ」となり、ステップＳＦ４に進み、フラグＳＴＯＰを「０」にセットしてプレイ停止を解除し、続くステップＳＦ５では、押鍵操作に応じて音源７に発音指示を与える再生処理（後述する）を実行してから本ルーチンを完了させる。
これに対し、「エニイキープレイ」モードに設定されていない場合には、上記ステップＳＦ３の判断結果は「ＹＥＳ」となり、ステップＳＦ６に進み、押鍵された鍵のノートナンバを音源７に送出し、続くステップＳＦ７では音源７に対して発音を指示する。これにより、音源７では、押鍵された鍵のノートナンバに対応した音高の楽音を発音する。
さて一方、上記ステップＳＦ２において離鍵操作に応じたオフイベントを検出した場合には、ステップＳＦ８に進み、離鍵された鍵のノートナンバを音源７に送出し、続くステップＳＦ９では音源７に対して消音を指示する。これにより、音源７では、離鍵された鍵のノートナンバに対応した音高の楽音を消音する。
【００２８】
（４）読出し処理の動作
次に、図９〜図１０を参照して読出し処理の動作について説明する。前述したメインルーチン（図３参照）のステップＳＡ４を介して読出し処理が実行されると、ＣＰＵ４は図９に示すステップＳＧ１に処理を進め、レジスタＭＯＤＥに格納されるモード値が「０」でないか、つまり、「ワンキープレイ」モードもしくは「エニイキープレイ」モードのいずれかに設定されているかどうかを判断する。
ここで、「通常」モード下にあれば、判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、「ワンキープレイ」モードもしくは「エニイキープレイ」モードのいずれかに設定されていると、判断結果は「ＹＥＳ」となり、ステップＳＧ２に進む。
【００２９】
ステップＳＧ２では、スタートフラグＳＴＦの値がプレイ開始を表す「１」にセットされ、しかもフラグＳＴＯＰの値がプレイ停止解除を表す「０」にセットされているか否かを判断する。そして、両フラグＳＴＦ，ＳＴＯＰが共にその条件に合致していれば、判断結果は「ＹＥＳ」となり、次のステップＳＧ３に処理を進めるが、そうでない場合には判断結果が「ＮＯ」となり、何も処理せずに本ルーチンを完了させる。
次いで、ステップＳＧ３では、レジスタＴＥＭＰＯに格納されるテンポ値に対応した最小単位時間が経過したか否か、つまり、ＣＰＵ４ではタイマ割込み処理（不図示）によって、レジスタＴＥＭＰＯに格納されるテンポ値（プレイ開始当初は初期テンポ値ＩＴＤ）に応じたテンポクロックを発生しており、このテンポクロック１周期分の時間（最小単位時間）が経過したかどうかを判断する。
【００３０】
テンポクロック分の時間が経過していなければ、判断結果は「ＮＯ」となり、一旦、本ルーチンを完了させるが、テンポクロック分の時間が経過すると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＧ４に処理を進める。ステップＳＧ４では、レジスタＳＴＩＭＥ，ＧＴＩＭＥおよびＭＡＸＴＩＭＥの値を１インクリメントして歩進させる。
次いで、ステップＳＧ５では、「６０」をレジスタＴＥＭＰＯに格納されるテンポ値（ワンキープレイ／エニイキープレイ開始当初では初期テンポ値ＩＴＤになる）で除算して１テンポクロック当りの秒数を求め、これに歩進されたレジスタＳＴＩＭＥの値を乗算して時間換算される現タイミングをレジスタＴＩＭＥにストアする。なお、以後の説明では、レジスタＴＩＭＥの値を現タイミングＴＩＭＥと記す。
【００３１】
そして、ステップＳＧ６以降では、どのような処理タイミングにあるかを判断して対応する処理を実行する。以下では、「発音タイミングの場合」、「消音タイミングの場合」、「現タイミングＴＩＭＥが許容範囲を超えた場合」および「所定時間演奏操作されない場合」の各ケースに分けて動作説明する。
【００３２】
▲１▼発音タイミングの場合
発音タイミングになると、上記ステップＳＧ４にて歩進されたレジスタＳＴＩＭＥの値がレジスタＳＴＥＰＴＩＭＥに格納されるステップタイムＳＴ（ワンキープレイ／エニイキープレイ開始当初では初期ステップタイムＩＳＴになる）に一致するので、ステップＳＧ６の判断結果が「ＹＥＳ」となり、ステップＳＧ７に処理を進めて、ＲＯＭ５に記憶される曲データＳＤ中から次に発音すべき音符データを読み出し、続くステップＳＧ８〜ＳＧ１０では読み出した音符データを形成する音高データＰＤ、ステップタイムＳＴおよびゲートタイムＧＴを、レジスタＢＵＦＦＥＲ、レジスタＳＴＥＰＴＩＭＥおよびレジスタＧＡＴＥＴＩＭＥにそれぞれストアする。そして、ステップＳＧ１１では、レジスタＳＴＩＭＥ，ＴＩＭＥ，ＧＴＩＭＥおよびＭＡＸＴＩＭＥをゼロリセットする。
【００３３】
▲２▼消音タイミングの場合
消音タイミングになると、上記ステップＳＧ４にて歩進されたレジスタＧＴＩＭＥの値がレジスタＧＡＴＥＴＩＭＥに格納されるゲートタイムＧＴに一致するので、図１０に示すステップＳＧ１２の判断結果が「ＹＥＳ」となり、ステップＳＧ１３に進む。ステップＳＧ１３では、次の発音に備え、既にレジスタＢＵＦＦＥＲに格納済みの音高データＰＤを音源７に送出し、続くステップＳＧ１４では現在発音中の楽音を消音するよう音源７に指示する。
【００３４】
▲３▼現タイミングＴＩＭＥが許容範囲を超えた場合
現タイミングＴＩＭＥが許容範囲を超える場合とは、予測タイミングＹＴＩＭＥをＭＡＸ分超えた（ＹＴＩＭＥ＋ＭＡＸ）時点であっても、未だにワンキープレイ用の演奏操作子１がオン操作されない（あるいはエニイキープレイ下での押鍵操作が行われない）状況を指す。
このような状況にあると、ステップＳＧ１５の判断結果が「ＹＥＳ」となり、ステップＳＧ１６に進む。ステップＳＧ１６では、「６０」をレジスタＴＥＭＰＯに格納されるテンポ値で除算して１テンポクロック当りの秒数を求め、これにレジスタＳＴＥＰＴＩＭＥに格納される次音符データのステップタイムＳＴを乗算して時間換算される遅延タイミングを、現在の予測タイミングＹＴＩＭＥに加算して新たな予測タイミングＹＴＩＭＥを求める。
つまり、演奏操作子１のオン操作（あるいは押鍵操作）が予測より遅れ、これにより現タイミングＴＩＭＥが許容範囲を超えると、次に発音すべき音符データのステップタイムＳＴ分だけ、これまでの予測タイミングＹＴＩＭＥを遅延させて新たな予測タイミングＹＴＩＭＥに更新するのである。
【００３５】
▲４▼所定時間演奏操作されない場合
「ワンキープレイ」モード（もしくは「エニイキープレイ」モード）実行中のままワンキープレイ用の演奏操作子１（あるいはエニイキープレイ下では鍵盤２のいずれかの鍵）が所定時間演奏操作されないと、本ルーチンが繰り返し実行され、これにより繰り返し歩進されるレジスタＭＡＸＴＩＭＥの値が所定値を超えてしまうと、ステップＳＧ１７の判断結果が「ＹＥＳ」となり、ステップＳＧ１８に進み、フラグＳＴＯＰを「１」にセットして自動的にプレイ停止させる。
【００３６】
（５）再生処理の動作
次に、図１１を参照して再生処理の動作について説明する。前述したように、「ワンキープレイ」モード下で演奏操作子１をオン操作した場合もしくは「エニイキープレイ」モード下で鍵盤２のいずれかの鍵を押鍵した場合には、図６に図示したステップＳＤ４もしくは図８に図示したステップＳＦ５を介して再生処理が実行され、これにてＣＰＵ４は図１１に示すステップＳＨ１に処理を進める。ステップＳＨ１では、スタートフラグＳＴＦが「１」、つまり、プレイ開始状態であるかを判断する。ここで、プレイ停止状態であれば、判断結果は「ＮＯ」となり、何も処理せずに本ルーチンを完了させるが、プレイ開始状態であると、判断結果が「ＹＥＳ」となり、次のステップＳＨ２に処理を進める。
【００３７】
ステップＳＨ２では、上述の読出し処理（図９参照）にて求めた現タイミングＴＩＭＥを、ワンキープレイ用の演奏操作子１がオン操作されたタイミング（あるいはエニイキープレイ下で押鍵操作されたタイミング）としてレジスタＯＮＴＩＭＥにセットする。以後、レジスタＯＮＴＩＭＥの値をオンタイミングＯＮＴＩＭＥと記す。
次いで、ステップＳＨ３では、このオンタイミングＯＮＴＩＭＥが予測タイミングＹＴＩＭＥから所定範囲内（±α）に収まっているか否かを判断する。ここで、オンタイミングＯＮＴＩＭＥが予測タイミングＹＴＩＭＥから所定範囲内（±α）に収まっていない場合には、判断結果が「ＮＯ」となり、本ルーチンを完了させる。
つまり、予測タイミングＹＴＩＭＥから所定範囲内（±α）でワンキープレイ用の演奏操作子１がオン操作されない（あるいはエニイキープレイ下で押鍵操作が行われない）場合、曲データＳＤの読み出しは行われないようになっている。
【００３８】
一方、予測タイミングＹＴＩＭＥから所定範囲内（±α）でワンキープレイ用の演奏操作子１がオン操作されると（あるいはエニイキープレイ下で押鍵操作が行われると）、上記ステップＳＨ３の判断結果が「ＹＥＳ」となり、ステップＳＨ４に進む。ステップＳＨ４では、予測タイミングＹＴＩＭＥとオンタイミングＯＮＴＩＭＥとの比を、レジスタＴＥＭＰＯに格納されるテンポ値に乗算し、その結果をレジスタＴＥＭＰＯにストアしてテンポ値を更新する。
つまり、ユーザがワンキープレイ用の演奏操作子１をオン操作するタイミング（あるいはエニイキープレイ下で押鍵操作するタイミング）が予測タイミングＹＴＩＭＥより早ければアップテンポ、予測タイミングＹＴＩＭＥより遅ければテダウンテンポになるようテンポ値が更新される。
【００３９】
次いで、ステップＳＨ５では、オンタイミングＯＮＴＩＭＥが予測タイミングＹＴＩＭＥ以下であるか否かを判断する。ここで、予測タイミングＹＴＩＭＥとオンタイミングＯＮＴＩＭＥとが一致するかあるいは予測タイミングＹＴＩＭＥよりオンタイミングＯＮＴＩＭＥが早いと、判断結果は「ＹＥＳ」となり、次のステップＳＨ６に進み、先読み出しにてレジスタＢＵＦＦＥＲに既に格納されている次音符データの音高データＰＤを音源７に送出し、続くステップＳＨ７では、先に音源７へ送出済みの音高データＰＤについて発音するよう音源７に指示する。そして、ステップＳＨ８では、「６０」をレジスタＴＥＭＰＯに格納されるテンポ値で除算して１テンポクロック当りの秒数を求め、これをレジスタＳＴＥＰＴＩＭＥに格納される次音符データのステップタイムＳＴに乗算して予測タイミングＹＴＩＭＥを更新した後、本ルーチンを完了させる。
【００４０】
一方、予測タイミングＹＴＩＭＥよりオンタイミングＯＮＴＩＭＥが遅いと、上記ステップＳＨ５の判断結果は「ＮＯ」となり、ステップＳＨ９に進む。ステップＳＨ９では、ＲＯＭ５に記憶される曲データＳＤ中から次の音符データを読み出し、続くステップＳＨ１０では読み出した音符データが曲の終わりを表すＥＮＤデータか否かを判断する。ＥＮＤデータであると、判断結果は「ＹＥＳ」となり、次のステップＳＨ１１に進み、スタートフラグＳＴＦをゼロリセットしてプレイ停止状態に設定する。そして、ステップＳＨ１２に進み、現在発音中の楽音を消音するよう音源７に指示してから本ルーチンを完了させる。
【００４１】
これに対し、読み出した音符データが曲の終わりを表すＥＮＤデータでなければ、上記ステップＳＨ１０の判断結果が「ＮＯ」となり、ステップＳＨ１３に処理を進め、レジスタＳＴＩＭＥ，ＴＩＭＥ，ＧＴＩＭＥおよびＭＡＸＴＩＭＥをゼロリセットする。
次いで、ステップＳＨ１４〜ＳＨ１６では読み出した音符データを形成する音高データＰＤ、ステップタイムＳＴおよびゲートタイムＧＴを、レジスタＢＵＦＦＥＲ、レジスタＳＴＥＰＴＩＭＥおよびレジスタＧＡＴＥＴＩＭＥにそれぞれストアする。この後、上述したステップＳＨ６〜ＳＨ８を経て本ルーチンを完了させる。
【００４２】
（６）具体的動作
次に、前述した各処理にて実現される具体的な動作について説明する。ユーザがモードスイッチＭＳにて「ワンキープレイ」モードに設定した後、スタート／ストップスイッチＳＳを操作してプレイ開始状態に設定したとする。
そうすると、図７に図示したスタート／ストップスイッチ処理が実行される。スタート／ストップスイッチ処理では、まず曲データＳＤから初期テンポ値ＩＴＤおよび初期ステップタイムＩＳＴを読み出す。読み出した初期テンポ値ＩＴＤおよび初期ステップタイムＩＳＴに基づきプレイ開始当初のテンポ値ＴＥＭＰＯと、このテンポ値ＴＥＭＰＯおよび初期ステップタイムＩＳＴから演奏操作子１をオン操作すべきタイミングを表す予測タイミングＹＴＩＭＥを設定する。次に、曲データＳＤ中の先頭の音符データ（音高データＰＤ、ステップタイムＳＴおよびゲートタイムＧＴ）を読み出してレジスタセットする。
この後、図９に図示した読出し処理にてテンポクロックを累算してなる現タイミングＴＩＭＥを生成する。
【００４３】
そして、ユーザが演奏操作子１をオン操作すると、図１１に示す再生処理が実行される。再生処理では、そのオン操作された時の現タイミングＴＩＭＥ、つまりオンタイミングＯＮＴＩＭＥが予測タイミングＹＴＩＭＥ近傍の所定時間以内でなされたものかどうかを判断する。所定時間以内であったならば、オンタイミングＯＮＴＩＭＥと予測タイミングＹＴＩＭＥとの比に応じてテンポ値ＴＥＭＰＯを更新する一方、オンタイミングＯＮＴＩＭＥと予測タイミングＹＴＩＭＥとの前後関係に応じた下記▲１▼項または▲２▼項の処理を行う。
【００４４】
▲１▼オンタイミングＯＮＴＩＭＥ≦予測タイミングＹＴＩＭＥの場合
この場合、既にレジスタセットされている音高データＰＤを音源７に送出して発音を指示する。これにより、先頭の音符データが即座に再生される。この後、更新されたテンポ値ＴＥＭＰＯとレジスタセットされているステップタイムＳＴとに基づき次の音符データに対応する予測タイミングＹＴＩＭＥを更新する。
こうして、最初のオン操作に対応して、曲データＳＤ中の先頭の音符データが発音している時に、この先頭の音符データの発音タイミングになると、図９に図示した読出し処理にて次の音符データが先読み出しされてレジスタセットされる。
さらに、当該先頭の音符データの消音タイミングになると、そのレジスタセットされた音高データＰＤを音源７に送出した後、現在発音されている先頭の音符データの楽音を消音させる。
【００４５】
▲２▼オンタイミングＯＮＴＩＭＥ＞予測タイミングＹＴＩＭＥの場合
一方、オン操作が予測タイミングＹＴＩＭＥより遅い場合には、既にレジスタセットされている音高データＰＤ、つまり、先頭の音符データの発音を取り止め、次の音符データ（音高データＰＤ、ステップタイムＳＴおよびゲートタイムＧＴ）をレジスタセットし、このレジスタセットされた音高データＰＤを音源７に送出して発音を指示する。これにより、先頭の音符データを再生せずに次の音符データが再生される。
この後、上記▲１▼項の場合と同様、更新されたテンポ値ＴＥＭＰＯとレジスタセットされているステップタイムＳＴとに基づき次の音符データに対応する予測タイミングＹＴＩＭＥを更新する。
こうして、最初のオン操作に対応して、先頭の次の音符データが発音している時に、その音符データの発音タイミングになると、図９に図示した読出し処理にてさらにその次の音符データが先読み出しされてレジスタセットされる。そして、消音タイミングになると、そのレジスタセットされた音高データＰＤを音源７に送出した後、現在発音されている先頭の次の音符データを消音させる。
【００４６】
以後、ユーザ好みのタイミングで演奏操作子１をオン操作して行くと、オンタイミングＯＮＴＩＭＥと予測タイミングＹＴＩＭＥとの比に応じてテンポ値ＴＥＭＰＯがユーザ好みのテンポに調整され、それに応じて予測タイミングＹＴＩＭＥも更新されて行く。
そして、こうした過程でオンタイミングＯＮＴＩＭＥが予測タイミングＹＴＩＭＥより早かったり、遅かったりすると、上記▲１▼項あるいは▲２▼項で説明したのと同様な処理に従って音符データの読み出し、発音および消音指示が行われる。
【００４７】
このように、上述した実施例によれば、テンポ値に従ったタイミングでＲＯＭ５に記憶される曲データＳＤ中から次に発音すべき音符データを読み出し、この読み出された音符データが示す発音タイミング（ステップタイム）とテンポ値とに応じて演奏操作子１をオン操作すべきタイミングを表す予測タイミングＹＴＩＭＥを算出する。
この予測タイミングＹＴＩＭＥ近傍の所定時間以内にユーザが演奏操作子１をオン操作すると、そのオン操作がなされたオンタイミングＯＮＴＩＭＥと予測タイミングＹＴＩＭＥとの比に応じてテンポ値を更新すると共に、オンタイミングＯＮＴＩＭＥと予測タイミングＹＴＩＭＥとの前後関係を判断し、予測タイミングＹＴＩＭＥと同時もしくは早くオン操作された場合には読み出しておいた音符データを再生し、一方、予測タイミングＹＴＩＭＥより遅れてオン操作された場合には読み出しておいた音符データを再生せずに、さらに次の音符データを読み出して再生する。
【００４８】
したがって、ユーザが演奏操作子１をオン操作する間隔で演奏テンポが決り、なおかつ予測タイミングＹＴＩＭＥ近傍の所定時間以内であって、しかも予測タイミングＹＴＩＭＥと同時もしくは早くオン操作した時にだけ正しく音符データが再生されるから、ユーザ好みのテンポで演奏練習することが可能になっている。
【００４９】
なお、本実施例では、演奏操作子１を一定期間オン操作しないと、フラグＳＴＯＰが「１」にセットされて自動的にプレイ停止状態になり、その状態で演奏操作子１が再びオン操作されると、プレイ停止状態が解除されて演奏再開するようになっているので、演奏練習を途中で止めたり、途中で止めた演奏練習を即座に再開することも可能にしている。
【００５０】
【発明の効果】
請求項１，２に記載の発明によれば、テンポ値に従ったタイミングで記憶手段から次に発音すべき音符データを読み出し、読み出された音符データが示す発音タイミングと前記テンポ値とに応じて演奏操作子をオン操作すべき予測タイミングを算出しておき、この予測タイミングの近傍で演奏操作子がオン操作された場合、そのオン操作されたタイミングと予測タイミングとに応じて前記テンポ値を更新すると共に、そのオン操作されたタイミングが当該予測タイミングと同時もしくは早い時には読み出しておいた音符データを再生し、一方、オン操作されたタイミングが当該予測タイミングより遅い時には読み出しておいた音符データを再生せずに、さらに次の音符データを記憶手段から読み出して再生する。したがって、ユーザが演奏操作子をオン操作する間隔で演奏テンポが決り、なおかつ予測タイミング近傍であって、しかも予測タイミングと同時もしくは早くオン操作した時にだけ正しく音符データが再生されるから、ユーザ好みのテンポで演奏練習することができる。
【図面の簡単な説明】
【図１】本発明による一実施例の構成を示すブロック図である。
【図２】曲データＳＤの構成を示す図である。
【図３】メインルーチンの動作を示すフローチャートである。
【図４】スイッチ処理ルーチンの動作を示すフローチャートである。
【図５】モードスイッチ処理ルーチンの動作を示すフローチャートである。
【図６】ワンキー処理ルーチンの動作を示すフローチャートである。
【図７】スタート／ストップスイッチ処理ルーチンの動作を示すフローチャートである。
【図８】鍵盤処理ルーチンの動作を示すフローチャートである。
【図９】読出し処理ルーチンの動作を示すフローチャートである。
【図１０】読出し処理ルーチンの動作を示すフローチャートである。
【図１１】再生処理ルーチンの動作を示すフローチャートである。
【符号の説明】
１  演奏操作子
２  鍵盤
３  パネルスイッチ
４  ＣＰＵ
５  ＲＯＭ
６  ＲＡＭ
７  音源
８  サウンドシステム
【図１】
0003931551.tif 000002
【図２】
0003931551.tif 000003
【図３】
0003931551.tif 000004
【図４】
0003931551.tif 000005
【図５】
0003931551.tif 000006
【図６】
0003931551.tif 000007
【図７】
0003931551.tif 000008
【図８】
0003931551.tif 000009
【図９】
0003931551.tif 000010
【図１０】
0003931551.tif 000011
【図１１】
0003931551.tif 000012