(57)【特許請求の範囲】
【請求項１】
制御シーケンスデータにしたがって所定の時間長からなる伴奏シーケンスデータを複数組み合わせて伴奏パターンデータを作成するデータ作成手段と、
前記制御シーケンスデータに含まれている演奏操作情報と同一の演奏操作情報が、前記制御シーケンスデータの進行中における指定された期間内において入力されたか否かを判別する入力情報判別手段と、
前記制御シーケンスデータの演奏操作情報と入力された演奏操作情報とが一致したことを前記入力情報判別手段が判別したときは、当該演奏操作情報によって指定されている伴奏シーケンスデータを前記データ作成手段によって作成された伴奏パターンデータに合成させるデータ合成手段と、
を有することを特徴とする自動伴奏装置。
【請求項２】
前記入力情報判別手段は、前記指定された期間内において、指定された回数だけ入力される演奏操作情報を受け付けることを特徴とする請求項１記載の自動伴奏装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演奏パターンデータにしたがって自動伴奏を行う自動伴奏装置に関する。
【０００２】
【従来の技術】
従来の自動伴奏装置においては、複数の伴奏パターンデータをメモリに用意しておき、設定された伴奏パターンに応じて１つの伴奏パターンデータを選択し、これを繰り返しループ演奏することにより、自動伴奏を行っていた。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来の自動伴奏装置では、最近のように多様な伴奏パターンが要求されるようになると、伴奏パターンデータを記憶させるメモリの容量も増加することになる。また、メモリに記憶された固定の伴奏パターンをループ演奏するだけでは伴奏演奏が単調になるため、豊かな音楽性をもつ演奏が得られないという問題がある。
本発明の課題は、伴奏パターンデータのためのメモリの容量を低減するとともに、音楽性豊かな伴奏演奏を実現することである。
【０００４】
【課題を解決するための手段】
本発明は、制御シーケンスデータにしたがって所定の時間長からなる伴奏シーケンスデータを複数組み合わせて伴奏パターンデータを作成するデータ作成手段と、制御シーケンスデータに含まれている演奏操作情報と同一の演奏操作情報が、制御シーケンスデータの進行中における指定された期間内において入力されたか否かを判別する入力情報判別手段と、制御シーケンスデータの演奏操作情報と入力された演奏操作情報とが一致したことを入力情報判別手段が判別したときは、その演奏操作情報によって指定されている伴奏シーケンスデータをデータ作成手段によって作成された伴奏パターンデータに合成させるデータ合成手段と、を有する構成になっている。
本発明によれば、ある伴奏パターンを自動演奏する場合には、複数の伴奏シーケンスデータを自在に組み合わせてその伴奏パターンを構築し、しかも、演奏者の特定の演奏操作に応じて、その演奏操作によって指定されている伴奏シーケンスデータを初めに構築した伴奏パターンにさらに合成する。
【０００５】
【発明の実施の形態】
以下、本発明の自動伴奏装置の第１〜第３実施形態を図を参照して説明する。
図１は各実施形態に共通する自動伴奏装置のシステムを示すブロック図である。鍵盤等からなる演奏子（以下、「鍵盤」という）１は、操作に応じて演奏操作情報を入力する。スイッチパネル２は、音色や音量その他、伴奏パターンの設定等、発生する楽音の条件を設定するスイッチである。ＣＰＵ３は、ＲＯＭ及びＲＡＭ（いずれも図示せず）を内蔵したワンチップマイコンで構成され、ＲＯＭのプログラムの鍵盤処理、スイッチ処理にしたがって、鍵盤１及びスイッチパネル２から入力されたコマンドやデータをＲＡＭに一時的にストアして処理する。表示回路４は、この装置の状態や操作についてのメッセージ等をＣＰＵ３の表示処理によって表示する。
【０００６】
伴奏パターンメモリ５は、自動演奏する伴奏パターンデータそのものではなく、所定の時間長（例えば、１小節）からなる伴奏シーケンスデータを多数記憶している。ＣＰＵ３は、スイッチパネル２からの伴奏パターンの設定に応じて、複数の伴奏シーケンスデータを伴奏パターンメモリ５から読み出して組み合わせ、例えば２小節の伴奏パターンデータを作成するためのコントロールシーケンスデータを生成する。作成される伴奏パターンは、ドラムパート、ベースパート、コードパートの複数のパートで構成される。なお、この実施形態においては、１音１音をデータ入力するステップ入力によってコントロールシーケンスデータが構成されている。また、各パートの複数のトラックは、すべて動作状態にする必要はなく、動作状態であるアライブ（ＡＬＩＶＥ）又は非動作状態であるデッド（ＤＥＡＤ）が動作モードによって設定される。
【０００７】
ＣＰＵ３のＲＡＭ内には、コントロールシーケンスデータに対応するコントロールシーケンストラックのレジスタ、及び、複数のパートからなる伴奏シーケンスデータに対応する伴奏シーケンストラックのレジスタが設けられている。各トラックの処理については後述する。そして、音源６は、伴奏シーケンストラックに応じたＣＰＵ３の発音処理に応じて、図示しない音響システムに対して伴奏信号を送出する。
【０００８】
次に、各実施形態の動作について、ＣＰＵ３のフローチャートを参照して説明する。図２〜図７に関しては、各実施形態に共通の動作を示すフローである。図２は、メインフロー及びタイマインタラプト（ＴＩＣＫ）のフローである。メインフローにおいては、初期化処理（ステップＳ１）を行った後、ステップＳ２〜ステップＳ７のループ処理を実行する。すなわち、鍵盤１の押鍵・離鍵、押鍵の強弱を検出する鍵盤処理（ステップＳ２）、スイッチパネル２の各スイッチの操作状態を検出するスイッチ処理（ステップＳ３）、表示回路４を制御する表示処理（ステップＳ４）、伴奏パターンデータに関する処理を行う伴奏制御処理（ステップＳ５）、発音・消音の制御を行う発音処理（ステップＳ６）、及び、その他の処理（ステップＳ７）を繰り返し行う。また、一定時間ごとに発生するタイマインタラプトに応じて、シーケンスタイマインタラプト処理を実行する（ステップＳ８）。
【０００９】
図３は、図２のメインフローのステップＳ５における伴奏制御処理のフローである。この処理では、スイッチ処理で何らかのスイッチがオンされたイベントがあるか否かを判別する（ステップＳ９）。イベントがない場合にはこのフローを終了するが、イベントがあった場合には、スタートスイッチがオンされたか否かを判別する（ステップＳ１０）。このスイッチがオンされた場合には、伴奏スタート処理を行う（ステップＳ１１）。そして、このフローを終了する。
【００１０】
ステップＳ１０において、スタートスイッチがオンでない場合には、ストップスイッチがオンされたか否かを判別する（ステップＳ１２）。このスイッチがオンされた場合には、伴奏ストップ処理を行う（ステップＳ１３）。そして、このフローを終了する。
【００１１】
ステップＳ１２において、ストップスイッチがオンされない場合には、フィルインスイッチがオンされたか否かを判別する（ステップＳ１４）。このスイッチがオンされた場合には、フィルイン処理を行う（ステップＳ１５）。そして、このフローを終了する。
【００１２】
ステップＳ１４においてフィルインスイッチがオンされない場合には、伴奏番号値スイッチ（ACCOMP NUMBER VALUE SW）がオンされたか否かを判別する（ステップＳ１６）。このスイッチがオンされた場合には、伴奏番号変更処理を行う（ステップＳ１７）。
【００１３】
ステップＳ１６において伴奏番号値スイッチがオンされない場合には、オンされたその他のスイッチに応じた処理を行う（ステップＳ１８）。そして、このフローを終了する。
【００１４】
図４は、図３のステップＳ１１における伴奏スタート処理のフローである。この処理では、伴奏パートのドラムパート、ベースパート、コードパートのいずれかを指定するポインタＰを「１」にセットし（ステップＳ１９）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数のコントロールトラックのいずれかを指定するポインタＣＴを「１」にセットする（ステップＳ２０）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールシーケンストラックの伴奏スタート処理を行う。
【００１５】
ＣＴで指定したコントロールシーケンストラックにおいて、まず、コントロールトラックをアサインする（ステップＳ２１）。次に、アサインしたコントロールトラックに、スイッチパネルで設定された伴奏パターンであるバリエーション（この場合、バリエーション１）のコントロールシーケンスデータの開始アドレスを設定する（ステップＳ２２）。そして、次に実行するコマンドまでのステップタイム、及び実行するコマンドをシーケンスデータから読み出して、あらかじめコントロールトラックに設定する（ステップＳ２３）。次に、コントロールシーケンストラックの動作モードをアライブにする（ステップＳ２４）。
【００１６】
この後、ポインタＣＴをインクリメントして（ステップＳ２５）、次のコントロールシーケンストラックを指定する。そして、指定したコントロールシーケンストラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ２６）。最大数以下である場合には、ステップＳ２１に移行して、ＣＴで指定したコントロールシーケンストラックをアサインする。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するまで、ＣＴをインクリメントしながら、ステップＳ２１〜ステップＳ２６の処理を繰り返す。
【００１７】
ステップＳ２６において、コントロールシーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ２７）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ２８）。最大数以下である場合には、ステップＳ２０に移行して、そのパートの最初のトラック（ＣＴ＝１）からステップＳ２１〜ステップＳ２６の処理を繰り返す。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ２７においてＰをインクリメントする。
【００１８】
ステップＳ２８において、指定したパートが最大パート数を超えた場合には、伴奏モードを伴奏スタート(ACCOMP START )にセットする（ステップＳ２９）。そして、このフローを終了する。
【００１９】
図５は、図３のステップＳ１３における伴奏ストップ処理のフローである。この処理では、伴奏によって発音した全てのノート（音）をオフにして（ステップＳ３０）、全てのコントロールシーケンストラックを初期化して、動作モードをデッドすなわち非動作にする（ステップＳ３１）。また、全ての伴奏シーケンストラックを初期化して、動作モードをデッドにする（ステップＳ３２）。次に、伴奏モードを伴奏ストップ（ACCOMP STOP ）にセットする（ステップＳ３３）。そして、このフローを終了する。
【００２０】
図６は、図３のステップＳ１５におけるフィルイン処理のフローである。この処理では、伴奏によって発音した全てのノートをオフにし（ステップＳ３４）、全てのコントロールシーケンストラックを初期化して、動作モードをデッドにする（ステップＳ３５）。また、全ての伴奏シーケンストラックを初期化して、動作モードをデッドにする（ステップＳ３６）。
【００２１】
次に、伴奏パートを指定するポインタＰを「１」にセットする（ステップＳ３７）。また、その指定したパートのコントロールシーケンストラックのポインタＣＴを「１」にセットする（ステップＳ３８）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールシーケンストラックのフィルイン処理を行う。
【００２２】
ＣＴで指定したコントロールシーケンストラックにおいて、まず、コントロールシーケンストラックをアサインする（ステップＳ３９）。次に、アサインしたコントロールシーケンストラックに、スイッチパネルで設定されたフィルインのコントロールシーケンスデータの開始アドレスを設定する（ステップＳ４０）。次に、コントロールシーケンストラックの動作モードをアライブにする（ステップＳ４１）。
【００２３】
この後、ポインタＣＴをインクリメントして（ステップＳ４２）、次のコントロールシーケンストラックを指定する。そして、指定したコントロールシーケンストラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ４３）。最大数以下である場合には、ステップＳ３９に移行して、ＣＴで指定したコントロールシーケンストラックをアサインする。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するまで、ＣＴをインクリメントしながら、ステップＳ３９〜ステップＳ４３の処理を繰り返す。
【００２４】
ステップＳ４３において、コントロールシーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ４４）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ４５）。最大数以下である場合には、ステップＳ３８に移行して、そのパートの最初のトラック（ＣＴ＝１）からステップＳ３９〜ステップＳ４３の処理を繰り返す。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ４４においてＰをインクリメントする。
【００２５】
ステップＳ４５において、指定したパートが最大パート数を超えた場合には、現在演奏すべき時点まで強制的にコントロールシーケンスデータ及び伴奏シーケンスデータを進める（ステップＳ４６）。そして、伴奏モードをフィルイン(ACCOMP FILLIN )にセットする（ステップＳ４７）。そして、このフローを終了する。
【００２６】
図７は、図２のステップＳ８におけるシーケンスタイマインタラプト処理のフローである。この処理では、コントロールシーケンストラックの処理（ステップＳ４８）、伴奏シーケンストラックのゲートタイム処理（ステップＳ４９）、伴奏シーケンストラックの処理（ステップＳ５０）、ノートのゲートタイム処理（ステップＳ５１）を実行する。
【００２７】
次に、図８〜図１８を参照して、各実施形態ごとに図７におけるシーケンスタイマインタラプト処理の動作を説明する。
まず、図８〜図１５を参照して第１実施形態を説明する。図８は、図７のステップＳ４８における第１実施形態のコントロールシーケンストラックの処理のフローである。この処理では、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ５２）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数のコントロールシーケンストラックのいずれかを指定するポインタＣＴを「１」にセットする（ステップＳ５３）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールシーケンストラックの処理を行う。
【００２８】
ＣＴで指定したコントロールシーケンストラックのモードはアライブであるか否かを判別し（ステップＳ５４）、アライブである場合には、コントロールシーケンストラックにおける次の実行コマンドまでの残りステップタイムは「０」であるか否かを判別する（ステップＳ５５）。残りステップタイムが「０」でない場合には、そのステップタイムをデクリメントする（ステップＳ５６）。
【００２９】
ステップＳ５５のデクリメントの後、又は、ステップＳ５４においてコントロールシーケンストラックがアライブでなくデッドの場合には、ポインタＣＴをインクリメントして（ステップＳ５７）、次のコントロールトラックを指定する。そして、指定したコントロールトラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ５８）。最大数以下である場合には、ステップＳ５４に移行して、ＣＴで指定したコントロールシーケンストラックの動作モードを判別する。
【００３０】
コントロールシーケンストラックの動作モードがアライブの場合に、ステップＳ５５において残りステップタイムが「０」である場合には、次の実行コマンドを判別する（ステップＳ５９）。実行コマンドがトラックオンである場合には、コントロールシーケンスデータ中の番号の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する（ステップＳ６０）。一方、実行コマンドがジャンプである場合には、コントロールシーケンスデータ中のラベルにジャンプする（ステップＳ６１）。
【００３１】
ステップＳ６０において伴奏シーケンストラックを生成した後、又は、ステップＳ６１においてジャンプした後は、次のコントロールシーケンスデータを読み出し、コントロールシーケンストラックにセットするとともに、次のコントロールシーケンスデータまでのステップタイムをコントロールシーケンストラックにセットする（ステップＳ６２）。そして、ステップＳ５５に移行して、残りステップタイムを判別する。
【００３２】
そして、コントロールシーケンストラックがそのパートの最大トラック数に達するまで、ＣＴをインクリメントしながら、ステップＳ５４以降の処理を繰り返す。ステップＳ５８において、コントロールシーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ６３）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ６４）。最大数以下である場合には、ステップＳ５３に移行して、新たに指定したパートの最初のコントロールシーケンストラックについて上記処理を繰り返す。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ６３においてＰをインクリメントする。ステップＳ６４において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００３３】
図９は、図７のステップＳ４９における第１実施形態の伴奏シーケンストラックのゲートタイム処理のフローである。この処理では、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ６５）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数の伴奏シーケンストラックのいずれかを指定するポインタＳＴを「１」にセットする（ステップＳ６６）。そして、ＳＴをインクリメントしながら、Ｐで指定したパートの各伴奏シーケンストラックの処理を行う。
【００３４】
ＳＴで指定した伴奏シーケンストラックの動作モードはアライブであるか否かを判別し（ステップＳ６７）、アライブである場合には、伴奏シーケンストラックにおける残りゲートタイムが「０」であるか否かを判別する（ステップＳ６８）。残りゲートタイムが「０」でない場合には、そのゲートタイムをデクリメントする（ステップＳ６９）。
【００３５】
ステップＳ６９においてステップタイムをデクリメントした後、又は、ステップＳ６７において伴奏シーケンストラックがデッドである場合には、ＳＴをインクリメントして（ステップＳ７０）、次の伴奏シーケンストラックを指定する。そして、指定した伴奏シーケンスラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ７１）。最大数以下である場合には、ステップＳ６７に移行して、ＳＴで指定した伴奏シーケンストラックの動作モードを判別する。そして、伴奏シーケンストラックがそのパートの最大トラック数に達するまで、ＳＴをインクリメントしながら、ステップＳ６７〜ステップＳ７１の処理を繰り返す。
【００３６】
ステップＳ６８において、残りゲートタイムが「０」になった場合には、この伴奏シーケンストラックによって発音した全てのノートをオフにする（ステップＳ７２）。また、この伴奏シーケンストラックを初期化して、動作モードをデッドにする（ステップＳ７３）。そして、ステップＳ７０に移行して、ＳＴをインクリメントする。
【００３７】
ステップＳ７１において、伴奏シーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ７４）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ７５）。最大数以下である場合には、ステップＳ６６に移行して、新たに指定したパートの最初の伴奏シーケンストラックについて、ステップＳ６７以降の処理を実行する。そして、伴奏シーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ７４においてＰをインクリメントする。ステップＳ７５において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００３８】
図１０は、図７のステップＳ５０における第１実施形態の伴奏シーケンストラックの処理のフローである。この処理では、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ７６）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの伴奏シーケンストラックを指定するポインタＳＴを「１」にセットする（ステップＳ７７）。そして、ＳＴをインクリメントしながら、Ｐで指定したパートの伴奏シーケンストラックの処理を行う。
【００３９】
ＳＴで指定した伴奏シーケンストラックの動作モードはアライブであるか否かを判別し（ステップＳ７８）、アライブである場合には、伴奏シーケンストラックにおける次の実行コマンドまでの残りステップタイムは「０」であるか否かを判別する（ステップＳ７９）。残りステップタイムが「０」でない場合には、伴奏シーケンストラックのステップタイムをデクリメントする（ステップＳ８０）。
【００４０】
ステップＳ８０におけるデクリメントの後、又は、ステップＳ７８において伴奏シーケンストラックがアライブでなくデッドの場合には、ポインタＳＴをインクリメントして（ステップＳ８１）、次の伴奏シーケンストラックを指定する。そして、指定した伴奏シーケンストラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ８２）。最大数以下である場合には、ステップＳ７８に移行して、ＳＴで指定した伴奏シーケンストラックの動作モードを判別する。ステップＳ７８において、伴奏シーケンストラックの動作モードがアライブの場合において、ステップＳ７９において次の実行コマンドまでの残りステップタイムが「０」になった場合には、その実行コマンドを判別する（ステップＳ８３）。
【００４１】
実行コマンドがトラックエンドの場合には、この伴奏シーケンストラックの動作モードをデッドにする（ステップＳ８４）。そして、ステップＳ８１に移行して、ＳＴをインクリメントして次の伴奏シーケンストラックを指定する。
【００４２】
一方、ステップＳ８３において、実行コマンドがノート番号ｎのノートオンコマンドである場合には、ノート番号ｎのノートを伴奏シーケンスデータ中のベロシティ及びゲートタイムでセットしてオンにする（ステップＳ８５）。また、次の伴奏シーケンスデータを読み出して伴奏シーケンストラックにセットするとともに、次の伴奏シーケンスデータまでのステップタイムを伴奏シーケンストラックにセットする（ステップＳ８６）。この後、ステップＳ７９に移行して、残りステップタイムを判別する。そして、ステップＳ８２において、伴奏シーケンストラックがそのパートの最大トラック数に達するまで、ＳＴをインクリメントしながら、ステップＳ７８〜ステップＳ８２の処理を繰り返す。
【００４３】
ステップＳ８２において、伴奏シーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ８７）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ８８）。最大数以下である場合には、ステップＳ７７に移行して、新たに指定したパートの最初の伴奏シーケンストラックについてステップＳ７８以降の処理を繰り返す。そして、伴奏シーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ８７においてＰをインクリメントする。ステップＳ８８において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００４４】
図１１は、ドラムパートを例に採った場合の第１実施形態におけるコントロールトラックの処理を示す図である。図１１（１）は、ドラムコントロールシーケンストラック「００」にセットされた伴奏シーケンスデータである。データの第１行目は、ステップタイム「０００」で伴奏シーケンストラック番号「０１」をゲートタイム「１９２（１小節）」の間だけオンにするトラック１を生成することを示している。したがって、図８のステップＳ５５において、残りステップタイムが「０」であり、ステップＳ５９において実行コマンドがトラックオンであるので、直ちにステップＳ６０において、伴奏シーケンストラック番号「０１」の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する。
【００４５】
図１１（１）のデータの第２行目は、ステップタイム「０００」で、伴奏シーケンストラック番号「２５」をゲートタイム「１９２（１小節）」の間だけオンにするトラック２を生成することを示している。したがって、図８のステップＳ５５において、残りステップタイムが「０」であり、ステップＳ５９において実行コマンドがトラックオンであるので、直ちにステップＳ６０において、伴奏シーケンストラック番号「２５」の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する。
【００４６】
図１１（１）のデータの第３行目は、ステップタイム「１９２」後に（すなわち１小節後に）、伴奏シーケンストラック番号「６４」をゲートタイム「１９２（１小節）」の間だけオンにするトラック３を生成することを示している。したがって、図８のステップＳ５５において、残りステップタイムが「１９２」であり、ステップＳ５６においてステップタイムをデクリメントする。そして、１９２ステップ経過後に残りステップタイムが「０」になると、ステップＳ５９において実行コマンドがトラックオンであるので、ステップＳ６０において、伴奏シーケンストラック番号「６４」の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する。
【００４７】
図１１（２）は、図１１（１）に基づいて、コントロールシーケンストラックの制御による伴奏シーケンストラックの生成の状態を示している。すなわち、初めの１小節では伴奏シーケンストラック番号「０１」を実行するトラック１及び伴奏シーケンストラック番号「２５」を実行するトラック２を生成し、後の１小節では伴奏シーケンストラック番号「６４」を実行するトラック３を生成する。そして、この２小節の伴奏パターンを繰り返し演奏する。
【００４８】
図１２は、図１１の場合におけるドラムパートの３つの伴奏シーケンストラックの処理を示す図である。この場合、伴奏シーケンストラック番号「０１」はバス、伴奏シーケンストラック番号「２５」はスネア、伴奏シーケンストラック番号「６４」はハイハットである。
【００４９】
バストラックの第１行目は、ステップタイム「０００」で、ノート番号「３６」をベロシティ９６で４８ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「０」であり、ステップＳ８３において実行コマンドがノート番号オンであるので、直ちにステップＳ８５において、ノート番号「３６」のノート（バス）をベロシティ９６及びゲートタイム４８の時間だけオンにする伴奏シーケンストラックを生成する。
【００５０】
第２行目は、ステップタイム「０９６」で、ノート番号「３６」をベロシティ８５で４８ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「９６」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、９６ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがノート番号オンであるので、ステップＳ８５において、ノート番号「３６」のノート（バス）をベロシティ８５及びゲートタイム４８の時間だけオンにする伴奏シーケンストラックを生成する。
【００５１】
第３行目は、ステップタイム「０９６」で、トラックエンドになることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「９６」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、９６ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがトラックエンドであるので、ステップＳ８４において、この伴奏シーケンストラックの動作モードをデッドにする。
【００５２】
この結果、トラック１のバスは、図１２（２）に示すように、１小節の１／４拍目及び３／４拍目に強弱をつけた２拍子の伴奏シーケンスを形成する。
【００５３】
スネアトラックの第１行目は、ステップタイム「０４８」で、ノート番号「３８」をベロシティ８０で４８ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「４８」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、４８ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがノート番号オンであるので、ステップＳ８５において、ノート番号「３８」のノート（スネア）をベロシティ８０及びゲートタイム４８の時間だけオンにする伴奏シーケンストラックを生成する。
【００５４】
第２行目は、ステップタイム「１４４」で、ノート番号「３８」をベロシティ６９で４８ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「１４４」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、１４４ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがノート番号オンであるので、ステップＳ８５において、ノート番号「３８」のノート（スネア）をベロシティ６９及びゲートタイム４８の時間だけオンにする伴奏シーケンストラックを生成する。
【００５５】
第３行目は、ステップタイム「１９２」で、トラックエンドになることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「１９２」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、１９２ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがトラックエンドであるので、ステップＳ８４において、この伴奏シーケンストラックの動作モードをデッドにする。
【００５６】
この結果、トラック２のスネアは、図１２（２）に示すように、１小節の２／４拍目及び４／４拍目に強弱をつけた２拍子の伴奏シーケンスを形成する。
【００５７】
ハイハットトラックの第１行目は、ステップタイム「０００」で、ノート番号「４２」をベロシティ８０で２４ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「０」であり、ステップＳ８３において実行コマンドがノート番号オンであるので、直ちにステップＳ８５において、ノート番号「４２」のノート（ハイハット）をベロシティ８０及びゲートタイム２４の時間だけオンにする伴奏シーケンストラックを生成する。
【００５８】
第２行目〜第８行目は、ステップタイム「０２４」〜「１６８」で、ノート番号「４２」をベロシティ８０で２４ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「２４」〜「１６８」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、２４〜１６８ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがノート番号オンであるので、ステップＳ８５において、ノート番号「４２」のノート（ハイハット）をベロシティ８０及びゲートタイム２４の時間だけオンにする伴奏シーケンストラックを生成する。
【００５９】
第９行目は、ステップタイム「１９２」で、トラックエンドになることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「１９２」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、１９２ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがトラックエンドであるので、ステップＳ８４において、この伴奏シーケンストラックの動作モードをデッドにする。
【００６０】
この結果、トラック３のハイハットは、図１２（２）に示すように、１小節の１／８拍目ごとに同じ強さの８拍子の伴奏シーケンスを形成する。
【００６１】
図１３は、図１１の場合におけるドラムパートの３つの伴奏シーケンストラックの処理のうちハイハットの伴奏シーケンストラックのみを伴奏シーケンストラック番号「６４」から伴奏シーケンストラック番号「７０」に変更したものである。
【００６２】
図１３（１）において、ハイハットトラックの第１行目は、ステップタイム「０００」で、ノート番号「４２」をベロシティ８０で１２ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「０」であり、ステップＳ８３において実行コマンドがノート番号オンであるので、直ちにステップＳ８５において、ノート番号「４２」のノート（ハイハット）をベロシティ８０及びゲートタイム１２の時間だけオンにする伴奏シーケンストラックを生成する。
【００６３】
第２行目〜第１６行目は、ステップタイム「０１２」〜「１８０」で、ノート番号「４２」をベロシティ８０で１２ステップのゲートタイムの時間だけオンにすることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「１２」〜「１８０」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、１２〜１８０ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがノート番号オンであるので、ステップＳ８５において、ノート番号「４２」のノート（ハイハット）をベロシティ８０及びゲートタイム１２の時間だけオンにする伴奏シーケンストラックを生成する。
【００６４】
第１７行目は、ステップタイム「１９２」で、トラックエンドになることを示している。したがって、図１０のステップＳ７９において、残りステップタイムが「１９２」であり、ステップＳ８０においてステップタイムをデクリメントする。そして、１９２ステップタイムが経過して残りステップタイムが「０」になると、ステップＳ８３において実行コマンドがトラックエンドであるので、ステップＳ８４において、この伴奏シーケンストラックの動作モードをデッドにする。
【００６５】
この結果、トラック３のハイハットは、図１３（２）に示すように、１小節の１／１６拍目ごとに同じ強さの１６拍子の伴奏シーケンスを形成する。
【００６６】
このように、図１に示した伴奏パターンメモリ５に、自動演奏する一連の伴奏パターンデータそのものではなく、伴奏パターンデータを構成する所定の時間長の多数の伴奏シーケンスデータを個々に記憶させて、これらの組合せによって自動演奏する一連の伴奏パターンデータをその都度作成する。したがって、伴奏パターンデータのためのメモリの容量を低減することができる。
【００６７】
図１４は、図８に示したコントロールシーケンスの処理の変形例を示している。この処理では、複数の伴奏シーケンスデータの組合せで構成された伴奏パターンデータに対して、演奏者の特定の演奏操作情報の入力に応じた他の伴奏シーケンスデータをさらに加味する。具体的には、特定の演奏操作情報（例えば、コードチェンジ情報）を待って、その対象となる演奏操作情報が起こった（入力された）なら、コントロールシーケンスデータで指定したサブトラックを実行する。サブトラックについては後述する。
【００６８】
図１４において、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ８９）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数のコントロールトラックのいずれかを指定するポインタＣＴを「１」にセットする（ステップＳ９０）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールトラックの処理を行う。
【００６９】
ＣＴで指定したコントロールシーケンストラックの動作モードはアライブであるか否かを判別し（ステップＳ９１）、アライブである場合には、コントロールシーケンストラックにおける次の実行コマンドまでの残りステップタイムは「０」であるか否かを判別する（ステップＳ９２）。残りステップタイムが「０」でない場合には、そのステップタイムをデクリメントする（ステップＳ９３）。
【００７０】
ステップＳ９３のデクリメントの後、又は、ステップＳ９１においてコントロールシーケンストラックがアライブでなくデッドの場合には、ポインタＣＴをインクリメントして（ステップＳ９４）、次のコントロールトラックを指定する。そして、指定したコントロールトラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ９５）。最大数以下である場合には、ステップＳ９１に移行して、ＣＴで指定したコントロールシーケンストラックの動作モードを判別する。
【００７１】
コントロールシーケンストラックがアライブの場合に、ステップＳ９２において残りステップタイムが「０」である場合には、次の実行コマンドを判別する（ステップＳ９６）。実行コマンドがトラックオンである場合には、コントロールシーケンスデータ中の番号の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する（ステップＳ９７）。ステップＳ９６において、実行コマンドがジャンプである場合には、コントロールシーケンスデータ中のラベルにジャンプする（ステップＳ９８）。ステップＳ９６において、実行コマンドが、演奏者の特定の演奏操作情報の入力に応じた他の伴奏シーケンスデータをさらに加味するウェイト（WAITn ；ｎはサブトラックの番号）である場合には、ウェイトの待ちの対象である特定の演奏操作情報が今回起こったなら、コントロールシーケンスデータで指定した番号ｎのサブトラックを実行する（ステップＳ９９）。
【００７２】
ステップＳ９７において伴奏シーケンストラックを生成した後、ステップＳ９８においてジャンプした後、又は、ステップＳ９９においてサブトラックを実行した後若しくは待ちの対象が起らなかった場合には、次のコントロールシーケンスデータを読み出し、コントロールシーケンストラックにセットするとともに、次のコントロールシーケンスデータまでのステップタイムをコントロールシーケンストラックにセットする（ステップＳ１００）。そして、ステップＳ９２に移行して、残りステップタイムを判別する。
【００７３】
そして、コントロールシーケンストラックがそのパートの最大トラック数に達するまで、ＣＴをインクリメントしながら、ステップＳ９２以降の処理を繰り返す。ステップＳ９５において、コントロールシーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ１０１）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ１０２）。最大数以下である場合には、ステップＳ９０に移行して、新たに指定したパートの最初のコントトールシーケンストラックについて上記処理を繰り返す。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ１０１においてＰをインクリメントする。ステップＳ１０２において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００７４】
図１５は、図１１のドラムパートを例に採った場合において、サブトラックを実行するコントロールトラックの処理を示す図である。図１５におけるコントロールシーケンストラック（Drum CTRL00）は、図１１におけるコントロールトラックと同じである。したがって、図１５（２）に示すように、ドラムコントロールトラック１の制御によって、初めの１小節では伴奏シーケンストラック番号「０１」を実行するトラック１及び伴奏シーケンストラック番号「２５」を実行するトラック２を生成し、後の１小節では伴奏シーケンストラック番号「６４」を実行するトラック３を生成する。そして、この２小節の伴奏パターンを繰り返し演奏する。
【００７５】
一方、図１５（１）のコントロールシーケンストラック（Drum CTRL01）においては、第１行目は、ステップタイム「０００」で、ウェイトコマンド（WAIT1 ）を実行することを示している。この実行コマンドは、鍵盤から入力された演奏操作情報がコントロールシーケンスデータに設定されている演奏操作情報（Match 00）と一致したときに、サブトラックを実行するコマンドである。サブトラックの第４行目は、ステップタイム「０００」で、伴奏シーケンストラック番号「７２」をゲートタイム「１９２」の間だけオンにするトラック４を生成することを示している。サブトラックの第５行目は、ステップタイム「１９２」で、トラックエンドになることを示している。
【００７６】
したがって、図１５（２）に示すように、設定されている演奏操作情報（Match 00）と一致した演奏操作情報が入力されると、直ちに伴奏シーケンストラック番号「７２」の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する。この場合において、サブトラックを実行させるための演奏操作情報としては、例えば、コードチェンジ情報が考えられる。この場合には、演奏者がコードチェンジをすると同時にサブトラックを実行する。
【００７７】
このように、上記第１実施形態によれば、図１におけるＣＰＵ３は、制御シーケンスデータにしたがって所定の時間長からなる伴奏シーケンスデータを複数組み合わせて伴奏パターンデータを作成するデータ作成手段と、制御シーケンスデータ（コントロールシーケンスデータ）に含まれている演奏操作情報と同一の演奏操作情報が入力されたか否かを判別する入力情報判別手段と、制御シーケンスデータの演奏操作情報と入力された演奏操作情報とが一致したことを入力情報判別手段が判別したときは、その演奏操作情報によって指定されている伴奏シーケンスデータをデータ作成手段によって作成された伴奏パターンデータに合成させるデータ合成手段とを構成する。
【００７８】
そして、ある伴奏パターンを自動演奏する場合には、複数の伴奏シーケンスデータを自在に組み合わせてその伴奏パターンを構築し、しかも、演奏者の特定の演奏操作に応じて、その演奏操作によって指定されている伴奏シーケンスデータを初めに構築した伴奏パターンにさらに合成する。したがって、伴奏パターンデータのためのメモリの容量を低減するとともに、音楽性豊かな伴奏演奏を実現することができる。
【００７９】
次に、第２実施形態について、図１６及び図１７を参照して説明する。この第２実施形態においては、待ち対象の演奏操作情報が入力されたとき、直ちにサブトラックを実行するのではなく、動作モードがウェイトの場合にサブトラックを実行する。
【００８０】
図１６は、図７のステップＳ４８における第２実施形態のコントロールトラックの処理のフローである。この処理では、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ１０３）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数のコントロールトラックのいずれかを指定するポインタＣＴを「１」にセットする（ステップＳ１０４）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールトラックの処理を行う。
【００８１】
ＣＴで指定したコントロールシーケンストラックの動作モードはアライブであるか否かを判別し（ステップＳ１０５）、アライブである場合には、コントロールシーケンストラックにおける次の実行コマンドまでの残りステップタイムは「０」であるか否かを判別する（ステップＳ１０６）。残りステップタイムが「０」でない場合には、動作モードはウェイトであるか否かを判別する（ステップＳ１０７）。動作モードがウェイトでない場合には、コントロールシーケンストラックのステップタイムをデクリメントする（ステップＳ１０８）。
【００８２】
ステップＳ１０８のデクリメントの後、又は、ステップＳ１０５においてコントロールシーケンストラックの動作モードがアライブでなくデッドの場合には、ポインタＣＴをインクリメントして（ステップＳ１０９）、次のコントロールトラックを指定する。そして、指定したコントロールトラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ１１０）。最大数以下である場合には、ステップＳ１０５に移行して、ＣＴで指定したコントロールシーケンストラックの動作モードを判別する。
【００８３】
コントロールシーケンストラックの動作モードがアライブの場合に、ステップＳ１０６において残りステップタイムが「０」である場合には、動作モードをアライブにする（ステップＳ１１１）。そして、次の実行コマンドを判別する（ステップＳ１１２）。実行コマンドがトラックオンである場合には、コントロールシーケンスデータ中の番号の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する（ステップＳ１１３）。ステップＳ１１２において、実行コマンドがジャンプである場合には、コントロールシーケンスデータ中のラベルにジャンプする（ステップＳ１１４）。ステップＳ１１２において、実行コマンドがウェイトである場合には、動作モードをウェイトにする（ステップＳ１１５）。
【００８４】
ステップＳ１１３において伴奏シーケンストラックを生成した後、ステップＳ１１４においてジャンプした後、又は、ステップＳ１１５において動作モードをウェイトにした後は、次のコントロールシーケンスデータを読み出し、コントロールシーケンストラックにセットするとともに、次のコントロールシーケンスデータまでのステップタイムをコントロールシーケンストラックにセットする（ステップＳ１１６）。そして、ステップＳ１０６に移行して、残りステップタイムを判別する。
【００８５】
ステップＳ１０６において残りステップタイムが「０」でない場合に、ステップＳ１０７において動作モードがウェイトの場合には、入力された演奏操作情報が待ち対象の情報と一致しているか否かを判別する（ステップＳ１１７）。一致したときは、待ち対象が今回起こったので、コントロールシーケンスデータで指定したサブトラックを実行する（ステップＳ１１８）。サブトラックを実行した後、又は、入力された演奏操作情報が待ち対象の情報と一致していない場合には、ステップＳ１０８に移行して、コントロールシーケンストラックのステップタイムをデクリメントする。そして、ステップＳ１０９において、ＣＴをインクリメントする。
【００８６】
インクリメントした結果、ステップＳ１１０において、コントロールトラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ１１９）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ１２０）。最大数以下である場合には、ステップＳ１０４に移行して、新たに指定したパートの最初のコントロールシーケンストラックについてステップＳ１０５以降の処理を実行する。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ１１９においてＰをインクリメントする。ステップＳ１２０において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００８７】
図１７は、ドラムパートを例に採った場合において、サブトラックを実行するコントロールトラックの処理を示す図である。図１７におけるコントロールシーケンストラック（Drum CTRL00）は、第１実施形態の図１１におけるコントロールトラックと同じである。したがって、図１７（２）に示すように、ドラムコントロールトラック１の制御によって、初めの１小節では伴奏シーケンストラック番号「０１」を実行するトラック１及び伴奏シーケンストラック番号「２５」を実行するトラック２を生成し、後の１小節では伴奏シーケンストラック番号「６４」を実行するトラック３を生成する。そして、この２小節の伴奏パターンを繰り返し演奏する。
【００８８】
一方、図１７（１）のコントロールシーケンストラック（Drum CTRL01）においては、ステップタイム「０００」で、ウェイトコマンド（WAIT1 ）を実行することを示している。この実行コマンドは、鍵盤から入力された演奏操作情報がコントロールシーケンスデータで設定されている演奏操作情報（Match 00）と一致したときに、サブトラックを実行するコマンドである。また、ステップタイム「０００」で、伴奏シーケンストラック番号「７２」をゲートタイム「１９２」の間だけオンにするトラック４を生成することを示している。さらに、ステップタイム「１９２」で、トラックエンドになることを示している。ただし、図１６のフローに示したように、設定されている演奏操作情報が入力された場合でも、動作モードがウェイトのときに、サブトラックを実行する。
【００８９】
したがって、図１７（２）に示すように、ドラムコントロールトラック２がウェイトのときにのみ、設定されている演奏操作情報（Match 00）と一致した演奏操作情報が入力されると、伴奏シーケンストラック番号「７２」の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する。例えば、動作モードがウェイトのときに、演奏者がコードチェンジをすると、同時にサブトラックを実行する。
【００９０】
このように、上記第２実施形態によれば、ＣＰＵ３は、コントロールシーケンスデータの進行中における指定された範囲内に入力される演奏操作情報のみを受け付ける。したがって、演奏者の操作や装置の状態によりインタラクティブに伴奏データが変化し、多彩な伴奏演奏が所定のタイミング間において可能になる。
【００９１】
次に、第３実施形態について図１８を参照して説明する。この第３実施形態においても、第２実施形態と同様に、待ち対象の演奏操作情報が入力されたとき、直ちにサブトラックを実行するのではなく、動作モードがウェイトの場合にサブトラックを実行する。さらに、サブトラックの実行コマンドがワンショット実行コマンドである場合には、「一度だけ」サブトラックを実行する。
【００９２】
図１８は、図７のステップＳ４８における第３実施形態のコントロールシーケンストラックの処理のフローである。この処理では、伴奏パートを指定するポインタＰを「１」にセットし（ステップＳ１２１）、Ｐをインクリメントしながらループ処理を行う。Ｐで指定したパートにおいて、そのパートの複数のコントロールトラックのいずれかを指定するポインタＣＴを「１」にセットする（ステップＳ１２２）。そして、ＣＴをインクリメントしながら、Ｐで指定したパートの各コントロールトラックの処理を行う。
【００９３】
ＣＴで指定したコントロールシーケンストラックの動作モードはアライブであるか否かを判別し（ステップＳ１２３）、アライブである場合には、コントロールシーケンストラックにおける次の実行コマンドまでの残りステップタイムは「０」であるか否かを判別する（ステップＳ１２４）。残りステップタイムが「０」でない場合には、動作モードはウェイトであるか否かを判別する（ステップＳ１２５）。動作モードがウェイトでない場合には、コントロールシーケンストラックのステップタイムをデクリメントする（ステップＳ１２６）。
【００９４】
ステップＳ１２６のデクリメントの後、又は、ステップＳ１２３においてコントロールシーケンストラックの動作モードがアライブでなくデッドの場合には、ポインタＣＴをインクリメントして（ステップＳ１２７）、次のコントロールトラックを指定する。そして、指定したコントロールトラックがそのパートの最大トラック数を超えたか否かを判別する（ステップＳ１２８）。最大数以下である場合には、ステップＳ１２３に移行して、ＣＴで指定したコントロールシーケンストラックの動作モードを判別する。
【００９５】
コントロールシーケンストラックの動作モードがアライブの場合に、ステップＳ１２４において残りステップタイムが「０」である場合には、動作モードをアライブにする（ステップＳ１２９）。そして、次の実行コマンドを判別する（ステップＳ１３０）。実行コマンドがトラックオンである場合には、コントロールシーケンスデータ中の番号の伴奏シーケンスデータを演奏する伴奏シーケンストラックを生成する（ステップＳ１３１）。ステップＳ１３０において、実行コマンドがジャンプである場合には、コントロールシーケンスデータ中のラベルにジャンプする（ステップＳ１３２）。ステップＳ１３０において、実行コマンドがウェイトである場合には、動作モードをウェイトにする（ステップＳ１３３）。
【００９６】
ステップＳ１３１において伴奏シーケンストラックを生成した後、ステップＳ１３２においてジャンプした後、又は、ステップＳ１３３において動作モードをウェイトにした後は、次のコントロールシーケンスデータを読み出し、コントロールシーケンストラックにセットするとともに、次のコントロールシーケンスデータまでのステップタイムをコントロールシーケンストラックにセットする（ステップＳ１３４）。そして、ステップＳ１２４に移行して、残りステップタイムを判別する。
【００９７】
ステップＳ１２４において残りステップタイムが「０」でない場合に、ステップＳ１２５において動作モードがウェイトの場合には、入力された演奏操作情報が待ち対象の情報と一致しているか否かを判別する（ステップＳ１３５）。一致したときは、待ち対象が今回起こったので、コントロールシーケンスデータで指定したサブトラックを実行する（ステップＳ１３６）。サブトラックを実行した後、その実行コマンドがワンショットウェイトであるか否かを判別する（ステップＳ１３７）。ワンショットウェイトである場合には、動作モードをアライブにする（ステップＳ１３８）。アライブにした後、又は、ステップＳ１３５において入力された演奏操作情報が待ち対象の情報と一致していない場合、若しくは、ステップＳ１３７において実行コマンドがワンショットウェイトでない場合には、ステップＳ１２６に移行して、コントロールシーケンストラックのステップタイムをデクリメントする。そして、ステップＳ１２７において、ＣＴをインクリメントする。
【００９８】
インクリメントした結果、ステップＳ１２８において、コントロールシーケンストラックがそのパートの最大トラック数を超えた場合には、ポインタＰをインクリメントして（ステップＳ１３９）、次のパートを指定する。そして、指定したパートが最大数を超えたか否かを判別する（ステップＳ１４０）。最大数以下である場合には、ステップＳ１２２に移行して、新たに指定したパートの最初のコントロールシーケンストラックからステップＳ１２３以降の処理を実行する。そして、コントロールシーケンストラックがそのパートの最大トラック数に達するたびに、ステップＳ１３９においてＰをインクリメントする。ステップＳ１４０において、指定したパートが最大パート数を超えた場合には、このフローを終了する。
【００９９】
このように、上記第３実施形態によれば、ＣＰＵ３は、コントロールシーケンスデータの進行中における指定された範囲内に入力される演奏操作情報のみを受け付ける。さらにこの場合において、実行コマンドがワンショットウェイトの場合には、その範囲内に一度だけ演奏操作情報を受け付ける。したがって、演奏者の操作や装置の状態によりインタラクティブに伴奏データが変化し、多彩な伴奏演奏が所定のタイミング間において一度だけ可能になる。
【０１００】
なお、上記第３実施形態において、所定の範囲内に一度だけ演奏操作情報を受け付けるようにしたが、任意の回数を設定することにより、その設定した回数だけサブトラックを実行することも可能である。
【０１０１】
また、上記各実施形態においては、図７のシーケンスタイマインタラプトの処理において、全てのパート及び全てのコントロールシーケンストラックについて処理を行う構成にしたが、処理対象のコントロールシーケンストラックの番号をレジスタ等にストアして、処理対象のコントロールシーケンストラックだけについて処理を行う構成にしてもよい。この場合には、処理対象でないコントロールシーケンストラックについては指定しないので、全てのパート及び全てのコントロールシーケンストラックについて指定して処理を行う場合に比較して、処理時間を短縮することができる。
【０１０２】
【発明の効果】
本発明によれば、ある伴奏パターンを自動演奏する場合には、複数の伴奏シーケンスデータを自在に組み合わせてその伴奏パターンを構築し、しかも、演奏者の特定の演奏操作に応じて、その演奏操作によって指定されている伴奏シーケンスデータを初めに構築した伴奏パターンにさらに合成する。したがって、伴奏パターンデータのためのメモリの容量を低減するとともに、音楽性豊かな伴奏演奏を実現することができる。
【図面の簡単な説明】
【図１】各実施形態における自動伴奏装置のシステムを示すブロック図。
【図２】ＣＰＵによって実行されるメイン及びタイマインタラプトのフローチャート。
【図３】図２における伴奏制御処理のフローチャート。
【図４】図３における伴奏スタート処理のフローチャート。
【図５】図３における伴奏ストップ処理のフローチャート。
【図６】図３におけるフィルイン処理のフローチャート。
【図７】図２におけるシーケンスタイマインタラプト処理のフローチャート。
【図８】第１実施形態における図７のコントロールシーケンストラック処理のフローチャート。
【図９】第１実施形態における図７の伴奏シーケンストラックのゲートタイム処理のフローチャート。
【図１０】第１実施形態における図７の伴奏シーケンストラック処理のフローチャート。
【図１１】ドラムパートを例に採った場合の第１実施形態におけるコントロールシーケンストラックの処理を示す図。
【図１２】図１１における伴奏シーケンストラックの処理を示す図。
【図１３】図１１における伴奏シーケンストラックの処理を示す図。
【図１４】第１実施形態における図７のコントロールシーケンストラック処理のフローチャート。
【図１５】ドラムパートを例に採った場合の第１実施形態におけるコントロールシーケンストラックの処理を示す図。
【図１６】第２実施形態における図７のコントロールシーケンストラック処理のフローチャート。
【図１７】ドラムパートを例に採った場合の第２実施形態におけるコントロールシーケンストラックの処理を示す図。
【図１８】第３実施形態における図７のコントロールシーケンストラック処理のフローチャート。
【符号の説明】
１  鍵盤
２  スイッチパネル
３  ＣＰＵ
４  表示回路
５  伴奏パターンメモリ
６  音源
【図１】
0003744190.tif 000002
【図２】
0003744190.tif 000003
【図３】
0003744190.tif 000004
【図４】
0003744190.tif 000005
【図５】
0003744190.tif 000006
【図６】
0003744190.tif 000007
【図７】
0003744190.tif 000008
【図８】
0003744190.tif 000009
【図９】
0003744190.tif 000010
【図１０】
0003744190.tif 000011
【図１１】
0003744190.tif 000012
【図１２】
0003744190.tif 000013
【図１３】
0003744190.tif 000014
【図１４】
0003744190.tif 000015
【図１５】
0003744190.tif 000016
【図１６】
0003744190.tif 000017
【図１７】
0003744190.tif 000018
【図１８】
0003744190.tif 000019