(57)【特許請求の範囲】
【請求項１】
鍵盤の操作によって発生された演奏データをシーケンスデータとして記録するシーケンサ部と、
自動伴奏データに基づいて自動伴奏音を発生する自動伴奏部と、
前記シーケンサ部による前記シーケンスデータの記録中に前記自動伴奏部の動作開始が指示された際に、前記シーケンサ部の動作と前記自動演奏部の動作とを小節の区切りで同期させるためのリセットＢＡＲマークを生成し、前記リセットＢＡＲマークが示す生成時点が小節の先頭となるように、拍をカウントし直して前記シーケンスデータとして記録し、且つ前記シーケンサ部の動作と前記自動演奏部の動作とを同期させる制御部、
とを備えた電子楽器。
【請求項２】
前記制御部は、更に、
前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＡＲマークを検出した場合は、前記シーケンサ部の動作と前記自動演奏部の動作とを同期させる、
請求項１に記載の電子楽器。
【請求項３】
前記シーケンサ部は、更に、拍及び小節の進行状態を示す表示を備え、
前記制御部は、前記自動伴奏部で発生される自動伴奏音と前記表示器による表示とを同期させる、
請求項２に記載の電子楽器。
【請求項４】
前記リセットＢＡＲマークは、前記自動伴奏部の動作開始の指示のタイミングを規定するステップタイムを含み、
前記制御部は、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＡＲマークを検出した場合は、前記ステップタイムに基づいて前記シーケンサ部の動作と前記自動演奏部の動作とを同期させる、
請求項３に記載の電子楽器。
【請求項５】
前記シーケンサ部は、前記シーケンスデータとして、拍を発生するタイミングを変更するリセットＢＥＡＴマークを更に含む、
請求項１乃至４の何れか１項に記載の電子楽器。
【請求項６】
前記リセットＢＥＡＴマークは、前記拍を発生するタイミングを規定するステップタイムを含み、
前記制御部は、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＥＡＴマークを検出した場合は、前記ステップタイムに基づいて前記拍の発生タイミングを変更する、
請求項５に記載の電子楽器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動伴奏部及びシーケンサ部を有する電子楽器に関し、特に鍵盤操作により発生された演奏データを自動伴奏音に同期させてシーケンサ部に記録する技術に関する。
【０００２】
【従来の技術】
従来、自動伴奏部及びシーケンサ部を有する電子楽器が知られている。この電子楽器における自動伴奏部は、数小節のシーケンスデータから成るパターンデータがメモリから繰り返し読み出される。そして、手鍵盤及び／又は足鍵盤の操作に応じて検出されたコードに従って、上記読み出されたパターンデータで指定された音の高さを変化させ、以て自動伴奏を行う。
【０００３】
また、この電子楽器におけるシーケンサ部は、鍵盤操作により発生された演奏データを記録すると同時に、自動伴奏の開始、停止及び変更を表すデータ、鍵盤操作に応じて検出されたコードデータ等を記憶することにより、自動伴奏を伴った鍵盤演奏の記録及び再生を可能にしている。このシーケンサ部で記録する際の拍子は、その時点で選択されている自動伴奏曲の拍子に従い、拍は記録開始時から連続的に一定間隔でカウントされる。
【０００４】
図２８は、シーケンサ部で使用されるシーケンスデータの一例を示す。「ヘッダデータ」は、当該シーケンスデータの属性を規定する。「ＴＯＰマーク」は、曲の先頭（記録及び再生の開始位置）を表す。「ＢＥＡＴ（拍）マーク」は、拍位置を表す。このＢＥＡＴマークは、１拍が例えば９６ステップから成る場合は、９６ステップの間隔を規定する。「ＢＡＲ（小節）マーク」は、予め決められている拍子における小節位置を表し、例えば４／４拍子であれば４拍の間隔を規定する。ＢＡＲマークは、小節の先頭、つまり１拍目に相当する位置に置かれる。「ＥＮＤマーク」は、曲の終わり（記録及び再生の終了位置）を表す。「第１トラック：ノート」及び「第２トラックノート」は、それぞれ第１トラック及び第２トラックに記録されるノートデータを表す。
【０００５】
図２９は、シーケンスデータに含まれるＢＡＲマークの構成例を示す。このＢＡＲマークは、２バイトのデータから成り、第１バイト目は固定値「ＦＡｈ」（末桁のｈは先行する記号が１６進数であることを表す。以下においても同じ）であり、当該データがＢＡＲマークであることを表す。第２バイト目のビット６−５は音符長Ｍを表し、「００」で２分音符、「０１」で４分音符、「１０」で８分音符及び「１１」で１６分音符をそれぞれ表す。第２バイト目のビット４−０は拍子Ｂを表し、「０〜３１」で、それぞれ０〜３１拍子を表す。また、ＢＥＡＴマークは１バイトの固定値から構成されている。従来のＢＥＡＴマーク及びＢＡＲマークは上記のように構成されており、自身を有効にするタイミング情報を含んでいないので、拍及び小節は予め決められた間隔で発生される。
【０００６】
なお、シーケンサに記録する技術として、特開平６−８３３５７号公報は、和音データの記録時に発生する自動伴奏音と記録済みの和音データの再生時に発生する自動伴奏音とのズレを解消できるようにした自動演奏装置を開示している。この自動演奏装置は、和音記録モードにおいて演奏手段による伴奏音の自動演奏を進行させながら所望の和音をリアルタイムで指定して記録する際、自動演奏される伴奏音は、指定された和音に応じて直ちに修正されるのではなく、和音データの記録タイミングに同期して修正される。これにより、和音データの記録時に発生する自動伴奏音と記録済みの和音データの再生時に発生する自動伴奏音とを一致させることができる。
【０００７】
【発明が解決しようとする課題】
ところで、演奏者は、曲の導入部分ではリズムを伴うことなくフリーに演奏し、このフリーな演奏の途中から自動伴奏を開始させ、以後この自動伴奏に合わせてメロディを弾くという形態で演奏することが多い。このような演奏をシーケンサ部で記録する場合、従来の電子楽器では、シーケンサ部の拍及び小節の表示と自動伴奏部で発生される自動伴奏音の拍及び小節とがズレる場合が発生する。
【０００８】
図３０は、このような従来の電子楽器の動作を説明するための図である。シーケンサ部による記録がスタートされると、例えば４／４表示の場合、シーケンサ部の拍表示は、予め決められたステップ（例えば９６ステップ）が経過する毎に「１→２→３→４→１→・・・」と変化する。また、シーケンサ部の小節表示は、拍表示が「１」になる毎に「１→２→３→４→・・・」と変化する。
【０００９】
今、図３０に示すように、自動伴奏曲の先頭（top）から３拍目の途中で自動伴奏のスタートが指示されたと仮定すると、３拍目のＢＥＡＴマークの後ろに自動伴奏スタートコマンドが記録され、自動伴奏がスタートする。従って、自動伴奏と拍表示及び小節表示とがズレたまま記録が進行する。また、このようにして記録されたシーケンスデータを再生する場合も、自動伴奏と拍表示及び小節表示とがズレたまま再生される。この問題は、拍及び小節が予め決められた長さでしか記録できないことに起因する。
【００１０】
また、上述した問題とは別に、自動伴奏のある部分のみの拍の長さを変えたいという要請もある。しかしながら、従来の電子楽器では、拍及び小節が予め決められた長さでしか記録できないため、この要請に応えることができない。
【００１１】
本発明は、上述した問題を解消し且つ要請に応えるためになされたものであり、その目的は、記録の途中で自動伴奏の開始、停止、変更を行っても、自動伴奏と拍表示及び小節表示とがズレることがなく、且つ同期を保って記録及び再生できる電子楽器を提供することにある。
【００１２】
本発明の他の目的は、予め決められた拍の長さを自由に変えることのできる電子楽器を提供することにある。
【００１３】
【課題を解決するための手段】
本発明の第１の態様に係る電子楽器は、上記目的を達成するために、鍵盤の操作によって発生された演奏データをシーケンスデータとして記録するシーケンサ部と、自動伴奏データに基づいて自動伴奏音を発生する自動伴奏部と、前記シーケンサ部による前記シーケンスデータの記録中に前記自動伴奏部の動作開始が指示された際に、前記シーケンサ部の動作と前記自動演奏部の動作と小節の区切りで同期させるためのリセットＢＡＲマークを生成して前記シーケンスデータとして記録し、且つ前記シーケンサ部の動作と前記自動演奏部の動作とを同期させる制御部、とを備えている。
【００１４】
この第１の態様に係る電子楽器における前記制御部は、更に、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＡＲマークを検出した場合は、前記シーケンサ部の動作と前記自動演奏部の動作とを同期させるように構成できる。
【００１５】
また、この第１の態様に係る電子楽器における前記シーケンサ部は、更に、拍及び小節の進行状態を示す表示を備え、前記制御部は、前記自動伴奏部で発生される自動伴奏音と前記表示器による表示とを同期させるように構成できる。
【００１６】
更に、この第１の態様に係る電子楽器において、前記リセットＢＡＲマークは、前記自動伴奏部の動作開始の指示のタイミングを規定するステップタイムを含み、前記制御部は、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＡＲマークを検出した場合は、前記ステップタイムに基づいて前記シーケンサ部の動作と前記自動演奏部の動作とを同期させるように構成できる。
【００１７】
また、本発明の第２の態様に係る電子楽器は、上記他の目的を達成するために、前記第１の態様に係る電子楽器において、前記リセットＢＥＡＴマークは、前記拍を発生するタイミングを規定するステップタイムを含み、前記制御部は、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＥＡＴマークを検出した場合は、前記ステップタイムに基づいて前記拍の発生タイミングを変更するように構成されている。
【００１８】
この第２の態様に係る電子楽器においては、前記リセットＢＥＡＴマークは、前記拍を発生するタイミングを規定するステップタイムを含み、前記制御部は、前記シーケンサ部で前記シーケンスデータを再生中に前記リセットＢＥＡＴマークを検出した場合は、前記ステップタイムに基づいて前記拍の発生タイミングを変更するように構成できる。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態に係る電子楽器を、図面を参照しながら詳細に説明する。なお、以下では、シーケンサとして機能するように構成されているハードウェア及びソフトウェアの部分をシーケンサ部と呼び、自動伴奏装置として機能するように構成されているハードウェア及びソフトウェアの部分を自動伴奏部と呼ぶ。
【００２０】
図１は、本発明の実施の形態に係る電子楽器の構成を示すブロック図である。この電子楽器は、バス３０で相互に接続された中央処理装置（以下、「ＣＰＵ」という）１０、プログラムメモリ１１、データメモリ１２、ワークメモリ１３、鍵盤１４、パネルスイッチ１５、表示器１６、ＭＩＤＩインタフェース１７、外部記憶装置１８及び音源１９から構成されている。この電子楽器の操作パネルは、図２に示すように、パネルスイッチ１５と表示器１６とから構成されている。
【００２１】
ＣＰＵ１０は、プログラムメモリ１１に記憶されている制御プログラムに従って電子楽器の全体を制御する。このＣＰＵ１０による処理の内容は、後にフローチャートを参照しながら詳細に説明する。
【００２２】
プログラムメモリ１１は、リードオンリメモリ（以下、「ＲＯＭ」という）から構成できる。このプログラムメモリ１１は、上述した制御プログラムを格納する。データメモリ１２は、ＲＯＭから構成できる。このデータメモリ１２は、自動伴奏音を発生させるための自動伴奏データ、複数の音色にそれぞれ対応した複数の音色パラメータ、ＣＰＵ１０によって参照される種々の固定データ等を格納する。各音色パラメータは、音色を決定するための、例えば波形アドレス、周波数データ、エンベロープデータ、フィルタ係数等から構成されている。
【００２３】
ワークメモリ１３は、ランダムアクセスメモリ（以下、「ＲＡＭ」という）から構成できる。このワークメモリ１３は、当該電子楽器を制御するための種々のデータを一時的に記憶する。このワークメモリ１３には、バッファ、レジスタ、カウンタ、フラグ等が定義されている。これらの詳細は、以下の記述において出現する都度説明する。
【００２４】
鍵盤１４は複数の鍵を有し、発音及び消音を指示するために使用される。鍵盤１４に含まれるキースキャン回路（図示は省略する）は、ＣＰＵ１０からの指令に応答して各鍵をスキャンし、このスキャンにより得られた各鍵のオン／オフ状態を示す信号に基づいてキーデータを作成する。キーデータは、各鍵を１ビットに対応させたビット列で成り、各ビットは、「１」で押鍵中、「０」で離鍵中であることを表す。この作成されたキーデータは、バス３０を介してＣＰＵ１０に送られ、鍵盤イベントが発生したかどうかを判断するために使用される。
【００２５】
パネルスイッチ１５は、図２に示すように、自動伴奏スタート／ストップスイッチ４０、シーケンサレコードスイッチ４１、シーケンサ再生／停止スイッチ４２及びＭＩＤＩ−自動伴奏モードスイッチ４３から構成されている。
【００２６】
自動伴奏スタート／ストップスイッチ４０は、自動伴奏曲のスタート及びストップを指示するために使用される。この自動伴奏スタート／ストップスイッチ４０は、押される毎にスタートとストップとが反転する。この自動伴奏スタート／ストップスイッチ４０の状態は、ワークメモリ１３に設けられた自動伴奏再生中フラグに記憶される。
【００２７】
シーケンサレコードスイッチ４１は、シーケンサへ記録（以下においては、「録音」ということもある）を開始させるために使用される。シーケンサ再生／停止スイッチ４２は、シーケンサ部の再生動作の開始及びその停止を指示するために使用される。ＭＩＤＩ−自動伴奏モードスイッチ４３は、電子楽器の動作モードを、ＭＩＤＩインタフェース１７からのＭＩＤＩデータに基づいて自動伴奏を行わせる動作モードに移行させるために使用される。
【００２８】
なお、この電子楽器には、上記以外に、音量を決定するための音量スイッチ、音色を決定するための音色スイッチ、自動伴奏の進行をリバースさせるためのリワインドスイッチ、自動伴奏を早送りするためのフォワードスイッチ、自動伴奏曲を選択するための選曲スイッチ、値を入力するためのアップダウンスイッチ等が設けられているが、図示及び詳細な説明は省略する。
【００２９】
パネルスイッチ１５に含まれるパネルスキャン回路（図示を省略する）は、ＣＰＵ１０からの指令に応答して各スイッチをスキャンし、このスキャンにより得られた各スイッチのオン／オフ状態を示す信号に基づいて、各スイッチを１ビットに対応させたパネルデータを作成する。各ビットは、「１」でオン、「０」でオフ状態を表す。このパネルデータは、バス３０を介してＣＰＵ１０に送られ、パネルイベントが発生したかどうかを判断するために使用される。
【００３０】
表示器１６は、例えばＬＣＤ５０、拍表示器５１及び小節表示器５２から構成されている。このＬＣＤ５０は、電子楽器の状態、各種ガイド等を表示させるために使用される。拍表示器５１は、例えば８セグメントのＬＥＤから構成され、シーケンスデータの記録及び再生時の拍の進行状態を表示し、小節表示器５２は、シーケンスデータの記録及び再生時の小節の進行状態を表示する。
【００３１】
ＭＩＤＩインタフェース１７は、図示しない外部装置からＭＩＤＩデータを受信すると共に、この電子楽器で発生された演奏データをＭＩＤＩデータに変換して外部装置に送信する。
【００３２】
外部記憶装置１８は、例えばフロッピーディスク装置から構成されており、シーケンスデータを記憶する。シーケンスデータの記録及び再生は、この外部記憶装置１８に対して行われる。なお、上記データメモリ１２に記憶される自動伴奏データの全部又は一部は、この外部記憶装置１８に記憶するように構成してもよい。この場合、自動伴奏開始の指示に応答して、外部記憶装置１８から自動伴奏データが一旦ワークメモリ１３に読み出され、このワークメモリ１３上の自動伴奏データに基づいて自動伴奏音を発生するように構成できる。
【００３３】
音源１９は、ＣＰＵ１０からの指示に応答してデジタル楽音信号を発生し、Ｄ／Ａ変換器（ＤＡＣ）２０に送る。Ｄ／Ａ変換器２０は、受け取ったデジタル楽音信号をアナログ楽音信号に変換して増幅器２１に送る。増幅器２１は、Ｄ／Ａ変換器２０からの信号を増幅してスピーカ２２に送る。これにより、スピーカ２２から楽音が発生される。
【００３４】
次に、この電子楽器で使用されるシーケンスデータを図３を参照しながら説明する。このシーケンスデータには、図２８を参照して説明した従来の電子楽器で使用されるシーケンスデータを構成するデータの他に、リセットＢＡＲマーク及びリセットＢＥＡＴマークが追加されて構成されている。
【００３５】
図４は、シーケンスデータのヘッダデータの構成を示す。図４において、ｐ及びＰはプロテクトコード、Ｔはオリジナルテンポ＝４０〜２５０、ｔはタイムベース（２４×ｎ）＝１〜１０（２４〜２４０）、Ｕは機種番号、Ｑはブロック数＝０〜３１（１〜３２パート）、ｓ及びＳはデータサイズ（セクタ数）、ＣＣはレジストカテゴリ番号（０−Ａ）、ＶＶはレジストバリエーション番号（０−７）、ｅｘｐはエクスプレッションペダル初期値、ｃｄはコードルート初期値、ｔｐはコードタイプ初期値、ｂｓはベースルート初期値である。
【００３６】
図５は、リセットＢＡＲマークの構成を示す。このリセットＢＡＲマークは、４バイトのデータから成り、第１バイト目は固定値「ＦＢｈ」であり、当該データがリセットＢＡＲマークであることを表す。第２バイト目のビット６−５は音符長Ｍを表し、「００」で２分音符、「０１」で４分音符、「１０」で８分音符及び「１１」で１６分音符をそれぞれ表す。第２バイト目のビット４−０は拍子Ｂを表し、「０〜３１」で、それぞれ０〜３１拍子を表す。第３バイト目は不使用（not use）である。第４バイト目のビット６−０は、ステップタイム値（step time）を記憶する。この電子楽器で使用されるステップタイムの分解能が９６であれば、０〜９５の値がセットされる。
【００３７】
シーケンスデータの記録及び再生中に、このリセットＢＡＲマークが出現すると、このリセットＢＡＲマークのステップタイムで指定されたタイミングで、拍のカウントが「１」にリセットされ、拍表示も「１」にリセットされる。
【００３８】
図６は、リセットＢＥＡＴマークの構成を示す。このリセットＢＥＡＴマークは、４バイトのデータから成る。第１バイト目は固定値「Ｆ６ｈ」であり、当該データがリセットＢＥＡＴマークであることを表す。第２バイト目は不使用（not use）である。第３バイト目のビット６−０は、上位側のステップタイム値（step time MSB）、第４バイト目のビット６−０は、下位側のステップタイム値（step time LSB）である。この電子楽器におけるステップタイムの分解能が９６であれば、第３及び第４バイト目に、０〜９５の値がセットされる。
【００３９】
シーケンスデータの記録及び再生中に、このリセットＢＥＡＴマークが出現すると、このリセットＢＥＡＴマークのステップタイムで指定されたタイミングで、拍を規定するステップタイムが初期化され、拍表示が次の拍に更新される。
【００４０】
次に、この電子楽器で使用される動作を規定するためのメッセージを図７を参照しながら説明する。図５において、１ｓｔは第１バイト目、２ｎｄは第２バイト目、３ｒｄは第３バイト目、４ｔｈは第４バイト目、５ｔｈ〜は第５バイト目以降を表す。第１バイト目と特に「ステータス」と呼ぶ。第１バイト目の「ｎ」はトラック番号を表し、「１」はメロディトラック、「２」はコードトラック、「３」はペダルトラック、「４」はサブメロディにそれぞれ定められている。
【００４１】
ステータスが「８ｎｈ」のデータは、消音を指示するノートオフのメッセージであり、第２バイト目には鍵番号（keyno.）、第３バイト目にはベロシティ（velo）、第４バイト目にはステップタイム（step）がそれぞれ格納される。ステータスが「９ｎｈ」のデータは、発音を指示するノートオンのメッセージであり、第２バイト目には鍵番号（keyno.）、第３バイト目にはベロシティ（velo）、第４バイト目にはステップタイム（step）がそれぞれ格納される。ステータスが「Ｂｎｈ」のデータは、制御変更を指示するためのコントロールチェンジのメッセージであり、第２バイト目には制御番号（contNo.）、第３バイト目には制御値（value）、第４バイト目にはステップタイム（step）がそれぞれ格納される。
【００４２】
ステータスが「Ｃｎｈ」のデータは、音色変更を指示するプログラムチェンジのメッセージであり、第２バイト目には音色番号（progNo.）、第３バイト目には不使用（NC）、第４バイト目にはステップタイム（step）がそれぞれ格納される。ステータスが「Ｄｎｈ」のデータは、アフタータッチを指示するためのチャネルプレッシャのメッセージであり、第２バイト目にはプレッシャ値（value）、第３バイト目には不使用（NC）、第４バイト目にはステップタイム（step）がそれぞれ格納される。ステータスが「Ｅｎｈ」のデータは、ピッチベンドを指示するためのベンダーのメッセージであり、第２バイト目にはピッチベンドの下位側の値（LSB）、第３バイト目には上位側の値（MSB）、第４バイト目にはステップタイム（step）がそれぞれ格納される。
【００４３】
ステータスが「Ｆ１ｈ」のデータは、先頭データを表すＴＯＰマークのメッセージであり、第２バイト目以降は不使用である。ステータスが「Ｆ２ｈ」のデータは、自動伴奏パターンを指示するためのメッセージであり、第２バイト目にはスタイル番号の下位側の値（stlNo.(L)）、第３バイト目にはスタイル番号の上位側の値（stlNo.(H)）、第４バイト目にはステップタイム（step）、第５バイト目にはパターン番号（ptrnNo.）がそれぞれ格納される。スタイル番号は伴奏曲を指定するために使用され、０〜の値を有する。パターン番号は、伴奏パターンを指定するために使用され、「１」はイントロ、「１」はエンディング、「２」はベーシック、「３」はフィルイン、「４」は停止と決められている。
【００４４】
ステータスが「Ｆ３ｈ」のデータは、コードを指示するためのメッセージであり、第２バイト目にはコードルート（CdRoot）、第３バイト目にはコードタイプ（CdType）、第４バイト目にはステップタイム（step）、第５バイト目には  ベースルート（BsRoot）がそれぞれ格納される。コードルートは０−１１、コードタイプは０−６３、ベースルートは０−１１及び７Ｆｈ（ＯＦＦ）の値を有する。ステータスが「Ｆ４ｈ」のデータは、エンドデータを表すＥＮＤマークのメッセージであり、第２バイト目以降は不使用である。
【００４５】
ステータスが「Ｆ５ｈ」のデータは、ＢＥＡＴマークのメッセージであり、第２バイト目以降は不使用である。ステータスが「Ｆ６ｈ」のデータは、リセットＢＥＡＴマークのメッセージであり、第２バイト目以降は図６を参照して説明した通りである。ステータスが「ＦＡｈ」のデータは、ＢＡＲマークのメッセージであり、第２バイト目以降は図２８を参照して説明した通りである。ステータスが「ＦＢｈ」のデータは、リセットＢＡＲマークのメッセージであり、第２バイト目以降は図５を参照して説明した通りである。ステータスが「ＦＥｈ」のデータは、テンポを指示するためのメッセージであり、第２バイト目にはテンポ値の下位側の値（LSB）、第３バイト目には上位側の値（MSB）、第４バイト目にはステップタイム（step）がそれぞれ格納される。ステータスが「ＦＦｈ」のデータは、エクスクルーシブのメッセージであり、第２バイト目以降は任意に定められる。
【００４６】
次に、上記のように構成される本発明の実施の形態に係る電子楽器の動作を説明する。
【００４７】
先ず、本発明の実施の形態に係る電子楽器の動作の概要を図８及び図９を参照しながら説明する。図８は、リセットＢＡＲマークが使用される場合の動作例を説明するための図である。シーケンサ部による記録がスタートされると、例えば４／４表示の場合、シーケンサ部の拍表示は、予め決められたステップ（例えば９６ステップ）が経過する毎に「１→２→３→４→１→・・・」と変化する。また、シーケンサ部の小節表示は、拍表示が「１」になる毎に、「１→２→３→４→・・・」と変化する。
【００４８】
今、図８に示すように、自動伴奏曲の先頭（top）から３拍目の途中で自動伴奏のスタートが指示されたと仮定すると、３拍目のリセットＢＥＡＴマークの後ろに自動伴奏スタートコマンドが記録され、自動伴奏がスタートする。この際、このリセットＢＡＲマークのステップタイムで指定されたタイミングで、拍のカウントが「１」にリセットされ、拍表示も「１」にリセットされる。従って、以後は、自動伴奏と拍表示及び小節表示とが同期して記録が進行する。
【００４９】
図９は、リセットＢＥＡＴマークが使用される場合の動作例を説明するための図である。通常は、図９（Ａ）に示すように、シーケンサ部による記録がスタートされると、例えば４／４表示の場合、シーケンサ部の拍表示は、予め決められたステップ（例えば９６ステップ）が経過する毎に「１→２→３→４→１→・・・」と変化する。また、シーケンサ部の小節表示は、拍表示が「１」になる毎に、「１→２→３→４→・・・」と変化する。
【００５０】
シーケンスデータの記録及び再生中に、図９（Ｂ）に示すようにステップタイム４８を有するリセットＢＥＡＴマークが出現すると、このリセットＢＥＡＴマークのステップタイムで指定されたタイミングで、拍を規定するステップタイムが初期化され、拍表示が次の拍に更新される。即ち、２拍目はステップタイム４８のタイミングで打ち切られ、そのステップタイム４８のタイミングから次の３拍目が開始される。
【００５１】
また、シーケンスデータの記録及び再生中に、図９（Ｃ）に示すようにステップタイム１４４を有するリセットＢＥＡＴマークが出現すると、このリセットＢＥＡＴマークのステップタイムで指定されたタイミングで、拍を規定するステップタイムが初期化され、拍表示が次の拍に更新される。即ち、２拍目はステップタイム１４４のタイミングまで引き延ばされ、そのステップタイム１４４のタイミングから次の３拍目が開始される。
【００５２】
このように、リセットＢＥＡＴマークのステップタイムを所望の値に設定することにより、１拍の長さを任意に短縮又は伸長することができる。
【００５３】
次に、上述したような動作を実現するための、本発明の実施の形態に係る電子楽器の動作の詳細を、フローチャートを参照しながら説明する。
【００５４】
（Ａ）メイン処理
図１０は本発明の実施の形態に係る電子楽器のメイン処理を示すフローチャートである。このメイン処理ルーチンは電源の投入により起動される。電源が投入されると、先ず、初期化処理が行われる（ステップＳ１０）。この初期化処理では、ＣＰＵ１０の内部のハードウェアが初期状態に設定されると共に、ワークメモリ１３に定義されているバッファ、レジスタ、カウンタ、フラグ等に初期値が設定される。
【００５５】
次いで、パネル処理が行われる（ステップＳ１１）。このパネル処理では、操作パネル上のパネルスイッチ１５の操作に応じた処理が行われる。このパネル処理の詳細は後述する。
【００５６】
次いで、鍵盤処理が行われる（ステップＳ１２）。この鍵盤処理では、押鍵に応じて発音処理、離鍵に応じて消音処理がそれぞれ行われる。この鍵盤処理の詳細は後述する。
【００５７】
次いで、シーケンサ／自動伴奏処理が行われる（ステップＳ１３）。このシーケンサ／自動伴奏処理では、シーケンスデータの記録及び再生処理、並びに、自動伴奏音を発生させるための処理が行われる。
【００５８】
次いで、ＭＩＤＩ処理が行われる（ステップＳ１４）。このＭＩＤＩ処理では、外部装置からＭＩＤＩインタフェース１７を介して受信されたＭＩＤＩデータに基づく発音や、そのＭＩＤＩデータの記録処理、この電子楽器で生成された演奏データをＭＩＤＩデータに変換して外部装置に送信する処理等が行われる。このＭＩＤＩ処理の詳細は後述する。
【００５９】
次いで、その他の処理が行われる（ステップＳ１５）。この「その他の処理」では、例えば図示しないペダルが押された場合の音量変更処理が行われる。その後、シーケンスはステップＳ１１に戻り、以下同様の処理が繰り返される。このステップＳ１１〜Ｓ１５の繰り返し実行の過程で、鍵盤１４、パネルスイッチ１５、ペダル、ＭＩＤＩ入力といったイベントが発生すると、それらに応じた処理が行われ、以て電子楽器としての各種機能が発揮される。
【００６０】
（Ｂ）テンポタイマ割り込み処理
次に、テンポタイマ割り込み処理を図１１に示すフローチャートを参照しながら説明する。このテンポタイマ割り込み処理では、図示しないテンポタイマからテンポに応じた間隔で発生される割り込み信号をクロックとして、ワークメモリ１３に設けられたテンポカウンタの内容をインクリメント（＋１）する（ステップＳ２０）。その後、シーケンスは割り込まれた位置にリターンする。自動伴奏処理やシーケンスデータの記録及び再生処理は、このテンポカウンタの内容に従って進められる。
【００６１】
（Ｃ）パネル処理
次に、メイン処理ルーチンのステップＳ１１で行われるパネル処理を、図１２〜図１４に示すフローチャートを参照しながら説明する。このパネル処理では、先ず、パネルスキャンが行われる（ステップＳ３０）。即ち、ＣＰＵ１０は、パネルスイッチ１５に含まれるパネルスキャン回路（図示を省略する）に指令を送出することにより、該パネルスキャン回路からパネルデータを得る。
【００６２】
次いで、自動伴奏スタート／ストップスイッチ４０のオンイベントがあるかどうかが調べられる（ステップＳ３１）。これは、パネルデータ中の自動伴奏スタート／ストップスイッチ４０に対応するビットが「０」から「１」に変化したかどうかを調べることにより行われる。なお、以下に説明する他のスイッチのイベントの有無も同様の方法で調べられる。
【００６３】
ここで、自動伴奏スタート／ストップスイッチ４０のオンイベントがあることが判断されると、自動伴奏再生中であるかどうかが調べられる（ステップＳ３２）。これは、ワークメモリ１３に設けられた自動伴奏再生中フラグがセットされているかどうかを調べることにより行われる。ここで、自動伴奏再生中でないことが判断されると、自動伴奏再生中フラグがセットされ、自動伴奏スタート処理が行われる（ステップＳ３３及びＳ３４）。これにより、自動伴奏が開始される。一方、自動伴奏再生中であることが判断されると、自動伴奏再生中フラグがクリアされ、自動伴奏ストップ処理が行われる（ステップＳ３５及びＳ３６）。これにより、再生中の自動伴奏が停止される。
【００６４】
次いで、シーケンサレコードスイッチ４１のオンイベントがあるかどうかが調べられる（ステップＳ３７）。ここで、オンイベントがあることが判断されると、レコード待機中であるかどうかが調べられる（ステップＳ３８）。これは、ワークメモリ１３に設けられたレコード待機中フラグを調べることにより行われる。ここで、レコード待機中でないことが判断されるとレコード待機処理が行われ（ステップＳ３９）、レコード待機中フラグがセットされる。一方、レコード待機中であることが判断されるとレコード待機解除処理が行われ（ステップＳ４０）、レコード待機中フラグがクリアされる。
【００６５】
次いで、シーケンサ再生／停止スイッチ４２のオンイベントがあるかどうかが調べられる（ステップＳ４１）。ここで、オンイベントがないことが判断されるとシーケンスはステップＳ６４に分岐する。一方、オンイベントがあることが判断されると、レコード待機中であるかどうかが調べられ（ステップＳ４２）、レコード待機中でないことが判断されるとシーケンスはステップＳ４８に分岐する。一方、レコード待機中であることが判断さるとレコードスタート処理が行われる（ステップＳ４３）。これにより、シーケンスデータの記録が開始される。次いで、パートレコードが指定されているかどうかが調べられる（ステップＳ４４）。ここで、パートレコードが指定されていることが判断されると、指定されているパート以外のパートのシーケンスデータを再生する再生スタート処理が行われ、次いで、ワークメモリ１３に設けられた再生中フラグがセットされ、その後、パートレコード、ＥＮＤマーク終了フラグがクリアされる（ステップＳ４５、Ｓ４６及びＳ４７）。一方、パートレコードが指定されていないことが判断されると、シーケンスはステップＳ４８に分岐する。
【００６６】
ステップＳ４８では、レコード中であるかどうかが調べられ（ステップＳ４８）、レコード中でないことが判断されるとシーケンスはステップＳ５５に分岐する。一方、レコード中であることが判断されると、パートレコードが指定されているかどうかが調べられ（ステップＳ４９）、指定されていることが判断されると、次いで、ＥＮＤマーク終了であるかどうかが調べられる（ステップＳ５０）。ここで、ＥＮＤマーク終了であることが判断されると、再生残りデータ書き込み処理が行われ（ステップＳ５１）、そうでないことが判断されると、ステップＳ５１の処理はスキップされる。次いで、再生停止処理が行われた後、再生中フラグがセットされ、レコード終了処理が行われる（ステップＳ５２、Ｓ５３及びＳ５４）。上記ステップＳ４９でパートレコードが指定されていないことが判断されると、レコード終了処理（ステップＳ５４）が行われた後に、シーケンスはステップＳ５５に進む。
【００６７】
ステップＳ５５では、シーケンサ再生中であるかどうかが調べられ、再生中でないことが判断されると再生を開始するための再生開始処理が行われた後に再生中フラグがセットされる（ステップＳ５６及びＳ５７）。一方、シーケンサ再生中であることが判断されると再生を停止するための再生停止処理が行われた後に再生中フラグがクリアされる（ステップＳ５８及びＳ５９）。
【００６８】
次いで、ＭＩＤＩ−自動伴奏モードスイッチ４３のオンイベントがあるかどうかが調べられる（ステップＳ６０）。そして、オンイベントがないことが判断されると、シーケンスはステップＳ６４に分岐する。一方、オンイベントがあることが判断されると、次いで、ＭＩＤＩ−自動伴奏モードであるかどうかが調べられる（ステップＳ６１）。ここで、ＭＩＤＩ−自動伴奏モードでないことが判断されると、ＭＩＤＩ−自動伴奏モードがオフにされ（ステップＳ６２）、ＭＩＤＩ−自動伴奏モードであることが判断されると、ＭＩＤＩ−自動伴奏モードがオンにされる（ステップＳ６３）。ＭＩＤＩ−自動伴奏モードのオン及びオフは、ワークメモリ１３に設けられたＭＩＤＩ−自動伴奏モードフラグを変更することにより行われる。次いで、その他のスイッチ処理が行われる（ステップＳ６４）。この「その他のスイッチ処理」では上述したスイッチ以外のイベントに対する処理が行われる。その後、シーケンスはメイン処理ルーチンにリターンする。
【００６９】
（Ｄ）鍵盤処理
次に、メイン処理ルーチンのステップＳ１２で行われる鍵盤処理を、図１５に示すフローチャートを参照しながら説明する。この鍵盤処理では、先ず、鍵盤スキャンが行われる（ステップＳ７０）。即ち、ＣＰＵ１０は、鍵盤１４に含まれる鍵盤スキャン回路（図示を省略する）に指令を送出することにより、該キースキャン回路からキーデータを得る。
【００７０】
次いで、ＣＰＵ１０は、鍵盤１４から受け取ったキーデータに基づいて鍵盤イベントの有無を調べる（ステップＳ７１）。ここで、鍵盤イベントがないことが判断されると、シーケンスはメイン処理ルーチンにリターンする。
【００７１】
一方、鍵盤イベントが発生したことが判断されると、発音／消音処理が行われ、次いで、コード検出関連処理が行われる（ステップＳ７２及びＳ７３）。コード検出関連処理には、例えばチャタリング除去のためのカウンタのセット処理等が含まれる。次いで、録音中であるかどうかが調べられ（ステップＳ７４）、録音中でないことが判断されるとシーケンスはメイン処理ルーチンにリターンする。一方、録音中であることが判断されると鍵盤イベントを記録する処理が行われ（ステップＳ７５）、その後、シーケンスはメイン処理ルーチンにリターンする。
【００７２】
（Ｅ）シーケンサ／自動伴奏処理
次に、メイン処理ルーチンのステップＳ１３で行われるシーケンサ／自動伴奏処理を、図１６に示すフローチャートを参照しながら説明する。このシーケンサ／自動伴奏処理では、先ず、前回の処理か今回の処理に至るまでのクロック増加分が抽出され、処理クロックとしてワークメモリ１３に設けられた所定のレジスタに記憶される（ステップＳ８０）。次いで、コード検出処理が行われ（ステップＳ８１）、検出されたコードが確定したかどうかが調べられる（ステップＳ８２）。ここで、コードが確定したことが判断されると、リトリガ処理要求がセットされる（ステップＳ８３）。これは、ワークメモリ１３に設けられたリトリガ処理要求フラグをセットすることにより行われる。一方、コードが確定していないことが判断されると、ステップＳ８３の処理はスキップされる。
【００７３】
次いで、処理クロックが残っているかどうかが調べられ（ステップＳ８４）、残っていないことが判断されると、リトリガ処理要求がセットされているかどうかが調べられる（ステップＳ９２）。ここで、リトリガ処理要求がセットされていないことが判断されると、シーケンスはメイン処理ルーチンにリターンする。一方、リトリガ処理要求がセットされていることが判断されると、リトリガ音の発音処理を行った後に、シーケンスはメイン処理ルーチンにリターンする。
【００７４】
上記ステップＳ８４で、処理クロックが残っていることが判断されると、自動伴奏ゲートカウント／消音処理が行われる（ステップＳ８５）。この処理では、自動伴奏音のゲートタイムをデクリメントし、ゼロになったら自動伴奏音を消音する処理が行われる。次いで、シーケンサ再生中であるかどうかが調べられる（ステップＳ８６）。ここで、再生中であることが判断されると、シーケンサデータ読み出し処理が行われ（ステップＳ８７）、そうでないことが判断されると、ステップＳ８７の処理はスキップされる。シーケンサデータ読み出し処理の詳細は後述する。
【００７５】
次いで、自動伴奏再生中であるかどうかが調べられる（ステップＳ８８）。ここで、自動伴奏再生中であることが判断されると、自動伴奏データ読み出し処理が行われ（ステップＳ８９）、そうでなければステップＳ８９の処理はスキップされる。次いで、ステップカウント／小節・拍の処理が行われる（ステップＳ９０）。このステップカウント／小節・拍の処理の詳細は後述する。次いで、処理クロックがデクリメントされ（ステップＳ９１）、シーケンスはステップＳ８４に戻って再度同様の処理が繰り返される。
【００７６】
（Ｅ−１）シーケンサデータ読み出し処理
次に、シーケンサ／自動伴奏処理のステップＳ８７で行われるシーケンサデータ読み出し処理を、図１７〜図２０を参照しながら説明する。
【００７７】
このシーケンサデータ読み出し処理では、先ず、シーケンサデータが読み出される（ステップＳ１００）。次いで、読み出されたシーケンサデータがＭＩＤＩコマンド又は自動伴奏データであるかどうかが調べられ（ステップＳ１０１）、ＭＩＤＩコマンド又は自動伴奏データでないことが判断されるとシーケンスはステップＳ１１１に分岐する。一方、ＭＩＤＩコマンド又は自動伴奏データであることが判断されると、次いで、ワークメモリ１３に設けられたステップタイムカウンタでカウントされているステップタイムがシーケンスデータに含まれるステップタイムデータ以上であるかどうかが調べられ（ステップＳ１０２）、そうでないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。
【００７８】
一方、ステップタイムがステップタイムデータ以上であることが判断されると、次いで、ポインタが更新され（ステップＳ１０３）、次いで、ミュートが指定されているかどうかが調べられる（ステップＳ１０４）。そして、ミュートが指定されていることが判断されると、シーケンスはステップＳ１００に戻る。一方、ミュートが指定されていないことが判断されると、次いで、録音中のレコードパートであるかどうかが調べられ（ステップＳ１０５）、録音中のレコードパートであることが判断されるとシーケンスはステップＳ１００に戻る。一方、録音中のレコードパートでないことが判断されると、次いで、各コマンドに対する処理が行われる（ステップＳ１０６）。次いで、コード変更が有るかどうかが調べられ（ステップＳ１０７）、コード変更があることが判断されるとリトリガ処理要求がセットされ（ステップＳ１０８）、コード変更がないことが判断されるとステップＳ１０８の処理はスキップされる。次いで、録音中であるかどうかが調べられ（ステップＳ１０９）、録音中でないことが判断されるとシーケンスはステップＳ１００に戻る。一方、録音中であることが判断されると再生データを記録（ステップＳ１１０）した後に、シーケンスはステップＳ１００に戻る。
【００７９】
ステップＳ１１１では、読み出されたデータがリセットＢＡＲマークであるかどうかが調べられ、リセットＢＡＲマークでないことが判断されるとシーケンスはステップＳ１１８に分岐する。一方、リセットＢＡＲマークであることが判断されると、ステップタイムカウンタでカウントされているステップタイムがリセットＢＡＲマークに含まれるステップタイムデータ以上であるかどうかが調べられ（ステップＳ１１２）、そうでないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。
【００８０】
一方、ステップタイムがステップタイムデータ以上であることが判断されると、ポインタが更新された後に拍子がセットされ、次いで、小節カウント処理が行われる（ステップＳ１１３、Ｓ１１４及びＳ１１５）。次いで、録音中であるかどうかが調べられ（ステップＳ１１６）、録音中でないことが判断されるとシーケンスはステップＳ１００に戻る。一方、録音中であることが判断されると再生データが記録（ステップＳ１１７）された後に、シーケンスはステップＳ１００に戻る。
【００８１】
ステップＳ１１８では、読み出されたシーケンサデータがリセットＢＥＡＴマークであるかどうかが調べられ、リセットＢＥＡＴマークでないことが判断されるとシーケンスはステップＳ１２６に分岐する。一方、リセットＢＥＡＴマークであることが判断されると、ワークメモリ１３に設けられたＢＥＡＴ処理待機フラグがセットされ（ステップＳ１１９）、ステップタイムカウンタでカウントされているステップタイムがリセットＢＥＡＴマークに含まれるステップタイムデータ以上であるかどうかが調べられる（ステップＳ１２０）。ここで、ステップタイムがリセットＢＥＡＴマークに含まれるステップタイムデータ以上でないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。
【００８２】
一方、ステップタイムがステップタイムデータ以上であることが判断されると、次いで、ポインタが更新された後に拍カウント処理が行われ、次いで、ＢＥＡＴ処理待機フラグがクリアされる（ステップＳ１２１、Ｓ１２２及びＳ１２３）。次いで、録音中であるかどうかが調べられ（ステップＳ１２４）、録音中でないことが判断されるとシーケンスはステップＳ１００に戻る。一方、録音中であることが判断されると再生データが記録（ステップＳ１２５）された後に、シーケンスはステップＳ１００に戻る。
【００８３】
ステップＳ１２６では、読み出されたシーケンサデータがＢＡＲマークであるかどうかが調べられ、ＢＡＲマークでないことが判断されるとシーケンスはステップＳ１３０に分岐する。一方、ＢＡＲマークであることが判断されると、ステップタイムカウンタでカウントされているステップタイムがＢＡＲマークに含まれるステップタイムデータ以上であるかどうかが調べられ（ステップＳ１２７）、そうでないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。一方、ステップタイムがステップタイムデータ以上であることが判断されると、ポインタが更新され、次いで拍子がセットされる（ステップＳ１２８及びＳ１２９）。その後、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。
【００８４】
ステップＳ１３０では、読み出されたシーケンサデータがＢＥＡＴマークであるかどうかが調べられ、ＢＥＡＴマークでないことが判断されるとシーケンスはステップＳ１３４に分岐する。一方、ＢＥＡＴマークであることが判断されると、ＢＥＡＴ処理待機フラグを参照することによりＢＥＡＴ処理待機中であるかどうかが調べられ（ステップＳ１３１）、ＢＥＡＴ処理待機中であることが判断されるとシーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。一方、ＢＥＡＴ処理待機中でないことが判断されると、ステップタイムカウンタでカウントされているステップタイムがＢＥＡＴマークに含まれるステップタイムデータ以上であるかどうかが調べられ（ステップＳ１３２）、そうでないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。一方、ステップタイムがステップタイムデータ以上であることが判断されると、ポインタが更新され（ステップＳ１３３）、その後、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。
【００８５】
ステップＳ１３４では、読み出されたシーケンサデータがＥＮＤマークであるかどうかが調べられ、ＥＮＤマークであることが判断されるとシーケンスはステップＳ１３６に分岐する。一方、ＥＮＤマークでないことが判断されると、ポインタがインクリメント（＋１）され（ステップＳ１３５）、その後、シーケンスはステップＳ１００に戻る。
【００８６】
ステップＳ１３６では、ステップタイムカウンタでカウントされているステップタイムが最大ステップ以上になったかどうかが調べられ、最大ステップ以上になっていないことが判断されると、シーケンスは、シーケンサ／自動伴奏処理ルーチンにリターンする。一方、最大ステップ以上になったことが判断されると、シーケンス再生中フラグがクリアされ（ステップＳ１３７）、次いで、録音中であるかどうかが調べられる（ステップＳ１３８）。
【００８７】
ここで、録音中であることが判断されると、パートレコード、ＥＮＤマーク終了フラグがセットされ（ステップＳ１４３）、その後、シーケンスは、シーケンサ／自動伴奏処理ルーチンにリターンする。一方、録音中でないことが判断されると、最大小節数がワークメモリ１３の所定領域に保管された後、全ての音が消音される（ステップＳ１３９及びＳ１４０）。次いで、頭出し処理及び再生終了時のパネル処理が行われる（ステップＳ１４１及びＳ１４２）。その後、シーケンスは、シーケンサ／自動伴奏処理ルーチンにリターンする。
【００８８】
（Ｅ−２）ステップカウント／小節・拍の処理
次に、シーケンサ／自動伴奏処理のステップＳ９０で行われるステップカウント／小節・拍の処理の詳細を、図２１及び図２２を参照しながら説明する。
【００８９】
このステップカウント／小節・拍の処理では、先ず、シーケンサ再生中であるかどうかが調べられ（ステップＳ１５０）、シーケンサ再生中であることが判断されるとシーケンスはステップＳ１５２に分岐する。一方、シーケンサ再生中でないことが判断されると、次いで、自動伴奏の演奏中であるかどうかが調べられる（ステップＳ１５１）。ここで、自動伴奏の演奏中でないことが判断されると、シーケンスはステップＳ１６３に分岐する。一方、自動伴奏の演奏中であることが判断されると、シーケンスはステップＳ１５２に進む。
【００９０】
ステップＳ１５２では、ステップタイムがカウントアップされる（ステップＳ１５２）。次いで、リセットマーク（リセットＢＥＡＴマーク及びリセットＢＡＲマーク）による拍処理待機中であるかどうかが調べられ（ステップＳ１５３）、拍処理待機中であることが判断されると、シーケンスはステップＳ１６３に分岐する。一方、拍処理待機中でないことが判断されると、次いで、ステップタイムカウンタでカウントされているステップタイムが最大ステップ以上になったかどうかが調べられ（ステップＳ１５４）、最大ステップ以上になっていないことが判断されると、シーケンスは、ステップＳ１６３に分岐する。
【００９１】
一方、ステップタイムが最大ステップ以上になったことが判断されると、次いで、自動伴奏パターンの全パートに対する処理が終了したかどうかが調べられる（ステップＳ１５５）。ここで、全パートに対する処理が終了したことが判断されると、自動伴奏パターン終了処理が行われ（ステップＳ１５６）、そうでないことが判断されると、自動伴奏小節頭の処理が行われる（ステップＳ１５７）
【００９２】
次いで、ステップタイムカウンタの内容がゼロにクリアされ、拍がカウントアップされる（ステップＳ１５８及びＳ１５９）。次いで、拍が最大拍以上であるかどうかが調べられ（ステップＳ１６０）、拍が最大拍以上でないことが判断されるとシーケンスはステップＳ１６３に分岐する。一方、拍が最大拍以上であることが判断されると、拍がゼロにクリアされた後に小節がカウントアップされ（ステップＳ１６１及びＳ１６２）、その後、シーケンスはステップＳ１６３に進む。
【００９３】
ステップＳ１６３では、シーケンサ録音中であるかどうかが調べられ、シーケンサ記録中でないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。一方、シーケンサ記録中であることが判断されると、次いで、拍のカウントアップがあるかどうかが調べられ（ステップＳ１６４）、拍のカウントアップがないことが判断されると、シーケンスはシーケンサ／自動伴奏処理ルーチンにリターンする。一方、拍のカウントアップがあることが判断されると、次いで、小節のカウントアップがあるかどうかが調べられる（ステップＳ１６５）。ここで、小節のカウントアップがあることが判断されるとＢＡＲマークが記録され、その後、シーケンスは、シーケンサ／自動伴奏処理ルーチンにリターンする。一方、小節のカウントアップがないことが判断されるとＢＥＡＴマークが記録され、その後、シーケンスは、シーケンサ／自動伴奏処理ルーチンにリターンする。
【００９４】
（Ｆ）ＭＩＤＩ受信割り込み処理
次に、ＭＩＤＩ受信割り込み処理を図２３に示すフローチャートを参照しながら説明する。このＭＩＤＩ受信割り込み処理は、ＭＩＤＩインタフェース１７でＭＩＤＩデータを受信した時に、ＣＰＵ１０による処理に割り込んで実行される。
【００９５】
このＭＩＤＩ受信割り込み処理では、先ず、受信エラーが発生したかどうかが調べられる（ステップＳ１７０）。ここで、受信エラーが発生したことが判断されると、エラー処理要求がセットされ（ステップＳ１７１）、その後、シーケンスは割り込まれた位置にリターンする。一方、受信エラーが発生しなかったことが判断されると、受信データの読み込みが行われる（ステップＳ１７２）。次いで、受信データがクロック（Ｆ８ｈ）であるかどうかが調べられ（ステップＳ１７３）、クロックであることが判断されると外部クロック処理が行われる（ステップＳ１７４）。次いで、アクティブセンスを受信済みであるかどうかが調べられ（ステップＳ１７５）、受信済みでないことが判断されると、シーケンスは割り込まれた位置にリターンする。一方、受信済みであることが判断されると、ワークメモリ１３に設けられたアクティブセンスカウンタセットが行われ（ステップＳ１７６）、その後、シーケンスは割り込まれた位置にリターンする。
【００９６】
上記ステップＳ１７３で、クロックでないことが判断されると、受信データがアクティブセンス（ＦＦｈ）であるかどうかが調べられ（ステップＳ１７７）、アクティブセンスであることが判断されると、アクティブセンスカウンタセットが行われ（ステップＳ１７８）、その後、シーケンスは割り込まれた位置にリターンする。一方、アクティブセンスでないことが判断されると、受信データがワークメモリ１３に設けられた受信リングバッファへ書き込まれ（ステップＳ１７９）、その後、シーケンスは割り込まれた位置にリターンする。
【００９７】
（Ｇ）ＭＩＤＩ処理
次に、メイン処理ルーチンのステップＳ１４で行われるＭＩＤＩ処理を、図２４〜図２６に示すフローチャートを参照しながら説明する。
【００９８】
このＭＩＤＩ処理では、先ず、エラー処理要求があるかどうかが調べられる（ステップＳ１８０）。ここで、エラー処理要求があることが判断されると、エラー処理が実行され（ステップＳ１８１）。その後、シーケンスはメイン処理ルーチンにリターンする。一方、エラー処理要求がないことが判断されると、次いで、エクスクルーシブメッセージを受信中であるかどうかが調べられ（ステップＳ１８２）、エクスクルーシブメッセージを受信中でないことが判断されると、シーケンスはステップＳ１９２に分岐する。一方、エクスクルーシブメッセージを受信中であることが判断されると、次いで、データであるかどうか、つまり値が１２７以下であるかどうかが調べられ（ステップＳ１８３）、データでないことが判断されると、シーケンスはステップＳ１８７に分岐する。
【００９９】
一方、データであることが判断されると、次いで、サイズオーバーであるかどうかが調べられ（ステップＳ１８４）、サイズオーバーでないことが判断されると、そのデータがエクスクルーシブデータとしてワークメモリ１３の所定領域に保管される（ステップＳ１８５）。一方、サイズオーバーであることが判断されると、エクスクルーシブ受信を終了する処理が行われる（ステップＳ１８６）。次いで、ＥＯＸ（Ｆ７ｈ）であるかどうかが調べられ（ステップＳ１８７）、ＥＯＸでないことが判断されると、エクスクルーシブ受信を終了する処理が行われ（ステップＳ１９１）、その後、シーケンスはステップＳ１９２に分岐する。一方、ＥＯＸであることが判断されると、次いで、サイズオーバーであるかどうかが調べられ（ステップＳ１８８）、サイズオーバーであることが判断されると、エクスクルーシブ受信を終了する処理が行われ（ステップＳ１９１）、その後、シーケンスはステップＳ１９２に分岐する。上記ステップＳ１８８で、サイズオーバーでないことが判断されると、そのデータがＥＯＸ（Ｆ７ｈ）としてワークメモリ１３の所定領域に保管され、次いで、エクスクルーシブ処理が行われる（ステップＳ１８９及びＳ１９０）。
【０１００】
ステップＳ１９２では、データがＴＯＸ（Ｆ０ｈ）であるかどうかが調べられ、ＴＯＸでないことが判断されると、シーケンスはステップＳ１９５に分岐する。一方、ＴＯＸであることが判断されると、エクスクルーシブの受信が開始され、そのＴＯＸ（Ｆ０ｈ）がワークメモリ１３の所定領域に保管される（ステップＳ１９３及びＳ１９４）。次いで、データがステータスであるかどうか、つまり１２８以上であるかどうかが調べられ（ステップＳ１９５）、ステータスでないことが判断されると、シーケンスはステップＳ１９８に分岐する。一方、ステータスであることが判断されると、１バイト目（ステータス）がワークメモリ１３の所定領域に保管され、第２バイト目の受信が開始される（ステップＳ１９６及びＳ１９７）。
【０１０１】
次いで、第２バイト目であるかどうかが調べられる（ステップＳ１９８）。ここで、第２バイト目でないことが判断されると、シーケンスはステップＳ２０５に分岐する。一方、第２バイト目であることが判断されると、プログラムチェンジのメッセージ（Ｃｎｈ）であるかどうかが調べられ、プログラムチェンジのメッセージであることが判断されると、プログラムチェンジ処理、つまり音色変更処理が行われ、第２バイト目（ランニングステータス）の受信へ移る（ステップＳ２００及びＳ２０１）。その後、シーケンスはステップＳ２０５に進む。
【０１０２】
上記ステップＳ１９９で、プログラムチェンジのメッセージでないことが判断されると、次いで、チャネルプレッシャーのメッセージ（Ｄｎｈ）であるかどうかが調べられ（ステップＳ２０２）、チャネルプレッシャーのメッセージでないことが判断されると、３バイト目の受信へ移り（ステップＳ２０４）、その後、シーケンスはステップＳ２０５に分岐する。一方、チャネルプレッシャーのメッセージであることが判断されると、チャネルプレッシャー処理が行われ、第２バイト目の受信へ移る（ステップＳ２０３及びＳ２０１）。その後、シーケンスはステップＳ２０５に進む。
【０１０３】
ステップＳ２０５では、第３バイト目であるかどうかが調べられる。ここで、第３バイト目でないことが判断されると、シーケンスはメイン処理ルーチンにリターンする。一方、第３バイト目であることが判断されると、ノートオフ（８ｎｈ）のメッセージであるかどうかが調べられ（ステップＳ２０６）、ノートオフのメッセージであることが判断されると、ノートオフ処理（ステップＳ２０７）が行われた後に、シーケンスはステップＳ２０８に分岐する。
【０１０４】
ステップＳ２０８では、ノートオン（９ｎｈ）のメッセージであるかどうかが調べられ、ノートオンのメッセージであることが判断されると、ノートオン処理（ステップＳ２０９）が行われた後に、シーケンスはステップＳ２１０に分岐する。ステップＳ２１０では、キープレッシャ（Ａｎｈ）のメッセージであるかどうかが調べられ、キープレッシャのメッセージであることが判断されると、キープレッシャ処理（ステップＳ２１１）が行われた後に、シーケンスはステップＳ２１２に分岐する。
【０１０５】
ステップＳ２１２では、コントロールチェンジ（Ｂｎｈ）のメッセージであるかどうかが調べられ、コントロールチェンジのメッセージであることが判断されると、コントロールチェンジ処理（ステップＳ２１３）が行われ、次いで、ＭＩＤＩ−自動伴奏モードであるかどうかが調べられる（ステップＳ２１４）。ここで、ＭＩＤＩ−自動伴奏モードでないことが判断されると、シーケンスはステップＳ２１６に分岐し、ＭＩＤＩ−自動伴奏モードであることが判断されると、自動伴奏コントロール処理（ステップＳ２１５）が行われた後にシーケンスはステップＳ２１６に分岐する。自動伴奏コントロール処理の詳細は後述する。
【０１０６】
ステップＳ２１６では、ベンダー（Ｅｎｈ）のメッセージであるかどうかが調べられ、ベンダーのメッセージであることが判断されると、ベンダー処理（ステップＳ２１７）が行われ、その後、シーケンスはメイン処理ルーチンにリターンする。
【０１０７】
次に、上記ステップＳ２１５で行われる自動伴奏コントロール処理の詳細を、図２７に示したフローチャートを参照しながら説明する。
【０１０８】
この自動伴奏コントロール処理では、先ず、コントロールチェンジメッセージに含まれるコントロールナンバが＃５５、つまりコードルートであるかどうかが調べられる（ステップＳ２２０）。ここで、コントロールナンバが＃５５であることが判断されると、コードルートがワークメモリ１３の所定領域に保管され（ステップＳ２２１）、その後、シーケンスはステップＳ２２２に分岐する。
【０１０９】
ステップＳ２２２では、コントロールナンバが＃５６、つまりコードタイプであるかどうかが調べられる。ここで、コントロールナンバが＃５６であることが判断されると、コードタイプがワークメモリ１３の所定領域に保管され（ステップＳ２２３）、その後、シーケンスはステップＳ２２４に分岐する。
【０１１０】
ステップＳ２２４では、コントロールナンバが＃５７、つまりベースルートであるかどうかが調べられる。ここで、コントロールナンバが＃５７であることが判断されると、コードルートが保管されているかどうかが調べられ（ステップＳ２２５）、保管されていないことが判断されると、シーケンスはステップＳ２２９に分岐する。一方、コードルートが保管されていることが判断されると、次いで、コードタイプが保管されているかどうかが調べられ（ステップＳ２２６）、保管されていないことが判断されると、シーケンスはステップＳ２２９に分岐する。一方、コードタイプが保管されていることが判断されると、次いで、コード確定処理が行われる（ステップＳ２２７）。次いで、コードルート／コードタイプがクリアされ（ステップＳ２２８）、その後、シーケンスはステップＳ２２９に分岐する。
【０１１１】
ステップＳ２２９では、コントロールナンバが＃５８、つまり自動伴奏を開始するコマンドであるかどうかが調べられる。ここで、コントロールナンバが＃５８であることが判断されると、自動伴奏スタート／ストップ処理が行われ（ステップＳ２３０）、その後、シーケンスはステップＳ２３１に分岐する。
【０１１２】
ステップＳ２３０は、コントロールナンバが＃５９、つまり拍子データであるかどうかが調べられる。ここで、コントロールナンバが＃５９であることが判断されると、拍子をセットする処理が行われ（ステップＳ２３２）、その後、シーケンスはステップＳ２３３に分岐する。
【０１１３】
ステップＳ２３３では、コントロールナンバが＃６０、つまり拍カウントの開始／停止のコマンドであるかどうかが調べられる。ここで、コントロールナンバが＃６０であることが判断されると、表示用の拍のカウントが停止していれば、そのカウントを開始させる処理が行われ、表示用の拍のカウントが開始されていれば、そのカウントを停止させる処理が行われる（ステップＳ２３４）。その後、シーケンスはステップＳ２３５に分岐する。
【０１１４】
ステップＳ２３５では、コントロールナンバが＃６１、つまりリセットＢＡＲマークであるかどうかが調べられる。ここで、コントロールナンバが＃６１でないことが判断されると、シーケンスはＭＩＤＩ処理ルーチンにリターンする。一方、コントロールナンバが＃６１であることが判断されると、拍子がセットされ（ステップＳ２３６）、次いで、小節カウント処理が行われる（ステップＳ２３７）。その後、シーケンスはＭＩＤＩ処理ルーチンにリターンする。
【０１１５】
以上説明したように、本発明の実施の形態によれば、１拍内のステップタイムを有するリセットＢＥＡＴマーク及びリセットＢＡＲマークを追加し、記録中の自動伴奏開始時、自動伴奏開始コマンドと共に、リセットＢＡＲマークを記録し、再生時には、リセットＢＡＲマークを読み出したら、そのステップ位置で強制的に小節をカウントし、自動伴奏をスタートさせることで、シーケンサと自動伴奏の同期をとっている。これにより、記録の途中で自動伴奏の開始、停止、変更を行っても、自動伴奏と拍表示及び小節表示とがズレることがなく、且つ同期を保って記録及び再生できる
【０１１６】
また、ある部分の拍の長さを短くしたい場合には、所望のタイミングのステップタイムを持ったリセットＢＥＡＴマーク、最終拍ならリセットＢＡＲマークを挿入する。再生時、リセットＢＥＡＴマークを読み出したら、そのステップ位置で強制的に拍をカウント、リセットＢＡＲマークを読み出したら、そのステップ位置で強制的に小節をカウントし、ある部分の拍の長さを短くする。
【０１１７】
ある部分の拍を長くしたい場合は、リセットＢＥＡＴマークを読み出したらＢＥＡＴ処理待機フラグを立て、フラグが立っている間は、ＢＥＡＴマークは処理せず、ステップが予め指定された拍の位置に来ても拍カウントしないようにした上で、リセットＢＥＡＴマークのステップ位置で拍をカウントすることで、拍の長さを長くすることが可能になる。通常、ステップデータは、分解能が９６である場合、７ビット長で管理しているが、拍の長さの調整の幅によっては、このリセットＢＥＡＴマーク、リセットＢＡＲマークに関しては１４ビット長等に拡張して持つようにする。このような場合、拍の長さを長くするためのマークを別に設定してもよい。これにより、予め決められた拍の長さを自由に変えることができる。
【０１１８】
更に、本発明の実施の形態に係る電子楽器によれば、シーケンサ部の動作と自動伴奏部の動作とが必ず同期するように構成することによりステップ管理の処理を一元化して、簡略化することができる。
【０１１９】
【発明の効果】
以上詳述したように、本発明によれば、記録の途中で自動伴奏の開始、停止、変更を行っても、自動伴奏と拍表示及び小節表示とがズレることがなく、且つ同期を保って記録及び再生できる電子楽器を提供できる。また、予め決められた拍の長さを自由に変えることのできる電子楽器を提供できる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る電子楽器の構成を示すブロック図である。
【図２】本発明の実施の形態に係る電子楽器に搭載される操作パネルの一例を示す図である。
【図３】本発明の実施の形態に係る電子楽器で使用されるシーケンスデータの例を示す図である。
【図４】図３に示したシーケンスデータのヘッダデータの構成を示す図である。
【図５】本発明の実施の形態に係る電子楽器で使用されるリセットＢＡＲマークの構成を示す図である。
【図６】本発明の実施の形態に係る電子楽器で使用されるリセットＢＥＡＴマークの構成を示す図である。
【図７】本発明の実施の形態に係る電子楽器で使用される動作を規定するためのメッセージを説明するための図である。
【図８】本発明の実施の形態に係る電子楽器でリセットＢＡＲマークが使用される場合の動作例を説明するための図である。
【図９】本発明の実施の形態に係る電子楽器でリセットＢＥＡＴマークが使用される場合の動作例を説明するための図である。
【図１０】本発明の実施の形態に係る電子楽器のメイン処理を示すフローチャートである。
【図１１】本発明の実施の形態に係る電子楽器のテンポタイマ割り込み処理を示すフローチャートである。
【図１２】本発明の実施の形態に係る電子楽器のパネル処理（その１）を示すフローチャートである。
【図１３】本発明の実施の形態に係る電子楽器のパネル処理（その２）を示すフローチャートである。
【図１４】本発明の実施の形態に係る電子楽器のパネル処理（その３）を示すフローチャートである。
【図１５】本発明の実施の形態に係る電子楽器の鍵盤処理を示すフローチャートである。
【図１６】本発明の実施の形態に係る電子楽器のシーケンサ／自動伴奏処理を示すフローチャートである。
【図１７】図７に示したシーケンサデータ読み出し処理の詳細（その１）を示すフローチャートである。
【図１８】図７に示したシーケンサデータ読み出し処理の詳細（その２）を示すフローチャートである。
【図１９】図７に示したシーケンサデータ読み出し処理の詳細（その３）を示すフローチャートである。
【図２０】図７に示したシーケンサデータ読み出し処理の詳細（その４）を示すフローチャートである。
【図２１】図７に示したステップカウント／小節・拍の処理の詳細（その１）を示すフローチャートである。
【図２２】図７に示したステップカウント／小節・拍の処理の詳細（その２）を示すフローチャートである。
【図２３】本発明の実施の形態に係る電子楽器のＭＩＤＩ受信割り込み処理を示すフローチャートである。
【図２４】本発明の実施の形態に係る電子楽器のＭＩＤＩ処理（その１）を示すフローチャートである。
【図２５】本発明の実施の形態に係る電子楽器のＭＩＤＩ処理（その２）を示すフローチャートである。
【図２６】本発明の実施の形態に係る電子楽器のＭＩＤＩ処理（その３）を示すフローチャートである。
【図２７】図２６に示した自動伴奏コントロール処理の詳細を示すフローチャートである。
【図２８】従来の電子楽器のシーケンサ部で用いられるシーケンスデータの一例を示す図である。
【図２９】図２８に示すシーケンスデータに含まれるＢＡＲマークの構成を示す図である。
【図３０】従来の電子楽器の動作を説明するための図である。
【符号の説明】
１０  ＣＰＵ
１１  プログラムメモリ
１２  データメモリ
１３  ワークメモリ
１４  鍵盤
１５  パネルスイッチ
１６  表示器
１７  ＭＩＤＩインタフェース
１８  音源
２０  Ｄ／Ａ変換器
２１  増幅器
２２  スピーカ
４０  自動伴奏スタート／ストップスイッチ
４１  シーケンサレコードスイッチ
４２  シーケンサ再生／停止スイッチ
４３  ＭＩＤＩ−自動伴奏モードスイッチ
５０  ＬＣＤ
５１  拍表示器
５２  小節表示器
【図１】
0004305893.tif 000002
【図２】
0004305893.tif 000003
【図３】
0004305893.tif 000004
【図４】
0004305893.tif 000005
【図５】
0004305893.tif 000006
【図６】
0004305893.tif 000007
【図７】
0004305893.tif 000008
【図８】
0004305893.tif 000009
【図９】
0004305893.tif 000010
【図１０】
0004305893.tif 000011
【図１１】
0004305893.tif 000012
【図１２】
0004305893.tif 000013
【図１３】
0004305893.tif 000014
【図１４】
0004305893.tif 000015
【図１５】
0004305893.tif 000016
【図１６】
0004305893.tif 000017
【図１７】
0004305893.tif 000018
【図１８】
0004305893.tif 000019
【図１９】
0004305893.tif 000020
【図２０】
0004305893.tif 000021
【図２１】
0004305893.tif 000022
【図２２】
0004305893.tif 000023
【図２３】
0004305893.tif 000024
【図２４】
0004305893.tif 000025
【図２５】
0004305893.tif 000026
【図２６】
0004305893.tif 000027
【図２７】
0004305893.tif 000028
【図２８】
0004305893.tif 000029
【図２９】
0004305893.tif 000030
【図３０】
0004305893.tif 000031