(57)【特許請求の範囲】
【請求項１】
波形データの読み出し開始タイミングおよび波形データの読み出し停止タイミングを示す波形読み出し制御データを、時系列に複数記憶する波形読み出し制御データ記憶手段と、
前記波形読み出し制御データ記憶手段に記憶されている波形読み出し制御データを読み出す波形読み出し制御データ読み出し手段と、
前記波形読み出し制御データ読み出し手段により所定時間内に所定個数以上の波形データが読み出されるようになっているか否かを判別する判別手段と、
前記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、所定の警告を行う警告手段と
を有する波形読み出し制御データ処理装置。
【請求項２】
波形データの読み出し開始タイミングおよび波形データの読み出し停止タイミングを示す波形読み出し制御データを、時系列に複数記憶する波形読み出し制御データ記憶手段と、
前記波形読み出し制御データ記憶手段に記憶されている波形読み出し制御データを読み出す波形読み出し制御データ読み出し手段と、
波形データを記憶する波形データ記憶手段と、
前記波形読み出し制御データ読み出し手段により所定時間内に所定個数以上の波形データが読み出されるようになっているか否かを判別する判別手段と、
前記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、該所定個数以上の波形読み出し制御データのうちの少なくとも２つ以上の波形読み出し制御データを、１つの波形読み出し制御データに変換して、前記波形読み出し制御データ記憶手段に記憶する波形読み出し制御データ変換手段と、
前記波形読み出し制御データ変換手段によって１つの波形読み出し制御データに変換される対象となる前記少なくとも２つ以上の波形読み出し制御データにそれぞれ対応する波形データを、１つの波形データに変換して、前記波形データ記憶手段に記憶する波形データ変換手段と
を有し、
前記波形読み出し制御データ読み出し手段は、前記波形読み出し制御データ変換手段により変換され前記波形読み出し制御データ記憶手段に記憶された１つの波形読み出し制御データを、前記変換前の波形読み出し制御データの代わりに読み出し、それに基づき、前記波形データ変換手段により変換された前記波形データ記憶手段に記憶された１つの波形データを、前記変換前の波形データの代わりに読み出すようにするものである波形読み出し制御データ処理装置。
【請求項３】
請求項２に記載の波形読み出し制御データ処理装置において、
前記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、所定の警告を行う警告手段
を有する波形読み出し制御データ処理装置。
【請求項４】
請求項３に記載の波形読み出し制御データ処理装置において、
前記波形読み出し制御データ変換手段および前記波形データ変換手段に変換処理を行わせるか否かを指示する指示情報を入力する指示情報入力手段
を有する波形読み出し制御データ処理装置。
【請求項５】
請求項１、２、３または４のいずれか１項に記載の波形読み出し制御データ処理装置において、
前記判別手段は、波形読み出し制御データの示す読み出し停止タイミングから該波形読み出し制御データに続く所定個数後の波形読み出し制御データの示す読み出し開始タイミングまでの時間に基づいて判別するもの
である波形読み出し制御データ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、波形読み出し制御データ処理装置に関し、さらに詳細には、波形データの読み出し開始タイミングならびに読み出し停止タイミングを示す波形読み出し制御データを記憶しておき、記憶しておいた波形読み出し制御データの処理を改善した波形読み出し制御データ処理装置に関する。
【０００２】
【発明の背景】
波形データの読み出し開始タイミングおよび読み出し停止タイミングを示す波形読み出し制御データを記憶しておき、この波形読み出し制御データを当該波形読み出し制御データに規定されているタイミングに従って読み出して出力する、波形読み出し制御データ処理装置を備えた自動演奏装置と、磁気ディスクや光ディスクなどの大容量記憶媒体に予め波形データを記憶しておき、予め記憶している波形データを自動演奏装置から出力された波形読み出し制御データに従って読み出して楽音信号を生成する音源装置とを組み合せ、自動演奏装置から出力される波形読み出し制御データに従って波形データを読み出すことにより楽音信号を生成する装置が提案されている。
【０００３】
ここで、音源装置には、複数の波形データが記憶されている。そして、波形読み出し制御データには、当該波形読み出し制御データが音源装置に記憶された複数の波形データのなかのいずれの波形データに対応するものであるかを示す情報が含まれており、音源装置が波形データを読み出す際には、当該情報を参照して波形読み出し制御データに対応する波形データの読み出しが行われるものである。
【０００４】
ところで、磁気ディスクや光ディスクなどの大容量記憶媒体は記憶容量が大きいため、多くの種類、あるいは、長時間にわたる波形データを記憶しておくことが可能であるという利点がある。
【０００５】
しかしながら、磁気ディスクや光ディスクなどの大容量記憶媒体にあっては、波形データを読み出す際には低速な読み出ししか行うことができないため、波形データを読み出そうとしてから実際に波形データの読み出しが行われるまでにある程度の時間を要することが指摘されていた。
【０００６】
その一方で、こうした大容量記憶媒体は、その記憶領域が「クラスタ」と称される所定量の単位記憶容量を有する記憶領域に分割されて管理されており、１つのクラスタに記憶されている波形データは、ひとまとめに一括して読み出されるようになされている。
【０００７】
なお、大容量記憶媒体において、１つの波形データは１つあるいは複数のクラスタにわたって記憶されているが、１つのクラスタには１つの波形データのみが記憶されている。
【０００８】
従って、上記したような自動演奏装置と音源装置とを組み合わせたような装置においては、波形読み出し制御データを本来の読み出しタイミングよりも前に先読みする機能を自動演奏装置に付加するとともに、高速な読み出しが可能な半導体メモリによって構成され、かつ、それぞれが大容量記憶媒体のクラスタと同じ記憶容量を有する複数のバッファを音源装置に設けるようになされている。そして、先読みした波形読み出し制御データに従って、当該波形読み出し制御データに対応する波形データを大容量記憶媒体からバッファに予め転送しておき、バッファに転送された波形データを本来の読み出しタイミングで読み出された波形読み出し制御データに従って読み出すようになされている。
【０００９】
また、あるバッファからの波形データの読み出しが完了して、空いたバッファができた場合において、直前に先読みした波形読み出し制御データに対応する波形データが未だ大容量記憶媒体からバッファに全て転送されてしまっていない際には、バッファに転送されていない波形データの部分を空いたバッファに転送し、一方、直前に先読みした波形読み出し制御データに対応する波形データが大容量記憶媒体から全て転送されてしまっている際には、直前に先読みした波形読み出し制御データの次の波形読み出し制御データを先読みして、新たに先読みした波形読み出し制御データに従って当該波形読み出し制御データに対応する楽音波形データを、大容量記憶媒体から空いたバッファに転送するようになされている。
【００１０】
こうした処理を繰り返し行うことによって、波形読み出し制御データを読み出しつつ、読み出した波形読み出し制御データに対応する波形データを遅れることなく読み出して、読み出した波形データに対応する楽音信号を生成することができるものである。
【００１１】
しかしながら、磁気ディスクや光ディスクなどの大容量記憶媒体からバッファへのデータの転送にはある程度の時間がかかるため、大容量記憶媒体から空いたバッファへの新たな波形データの転送が完了する前に、当該新たな波形データの読み出し開始タイミングになってしまった場合には、当該新たな波形データの読み出しの処理を行うことができないために、楽音信号の生成が行われなくなってしまう恐れがあることが指摘されていた。
【００１２】
ここで、上記したような新たな波形データの読み出しを行うことができないために楽音信号の生成が行われなくなってしまうという恐れは、複数の波形読み出し制御データが短時間の間に出力されたときに生じるものであるので、再生を保証するために、波形読み出し制御データ設定装置においては、使用者がそのような複数の波形読み出し制御データを所定の短時間の間に設定することを禁止するようになされていた。
【００１３】
【発明が解決しようとする課題】
本発明は、波形読み出し制御データ処理装置において複数の波形読み出し制御データを所定の短時間の間に設定することを禁止していた点に鑑みてなされたものであり、その目的とするところは、複数の波形読み出し制御データを所定の短時間の間に設定することを許容するようにするとともに、当該所定の短時間の間に複数の波形読み出し制御データを設定する際に、使用者にその旨を知らしめるようにした波形読み出し制御データ処理装置を提供しようとするものである。
【００１４】
また、本発明は、波形読み出し制御データ処理装置において複数の波形読み出し制御データを所定の短時間の間に設定することを禁止していた点に鑑みてなされたものであり、その目的とするところは、複数の波形読み出し制御データを所定の短時間の間に設定することを許容するようにするとともに、当該所定の短時間の間に複数の波形読み出し制御データを設定する際に、当該設定される複数の波形読み出し制御データに基づいて波形データの読み出し処理を行うことができるようにして、楽音信号の生成が行われなくなる恐れを排除した波形読み出し制御データ処理装置を提供しようとするものである。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明のうち請求項１に記載の発明は、波形データの読み出し開始タイミングおよび波形データの読み出し停止タイミングを示す波形読み出し制御データを、時系列に複数記憶する波形読み出し制御データ記憶手段と、上記波形読み出し制御データ記憶手段に記憶されている波形読み出し制御データを読み出す波形読み出し制御データ読み出し手段と、上記波形読み出し制御データ読み出し手段により所定時間内に所定個数以上の波形データが読み出されるようになっているか否かを判別する判別手段と、上記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、所定の警告を行う警告手段とを有するようにしたものである。
【００１６】
従って、本発明のうち請求項１に記載の発明によれば、所定時間内に所定個数以上の波形データが読み出される場合には、所定の警告が行われることになり、使用者は所定時間内に所定個数以上の波形データが読み出されることを知ることができる。
【００１７】
また、本発明のうち請求項２に記載の発明は、波形データの読み出し開始タイミングおよび波形データの読み出し停止タイミングを示す波形読み出し制御データを、時系列に複数記憶する波形読み出し制御データ記憶手段と、上記波形読み出し制御データ記憶手段に記憶されている波形読み出し制御データを読み出す波形読み出し制御データ読み出し手段と、波形データを記憶する波形データ記憶手段と、上記波形読み出し制御データ読み出し手段により所定時間内に所定個数以上の波形データが読み出されるようになっているか否かを判別する判別手段と、上記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、該所定個数以上の波形読み出し制御データのうちの少なくとも２つ以上の波形読み出し制御データを、１つの波形読み出し制御データに変換して、上記波形読み出し制御データ記憶手段に記憶する波形読み出し制御データ変換手段と、上記波形読み出し制御データ変換手段によって１つの波形読み出し制御データに変換される対象となる上記少なくとも２つ以上の波形読み出し制御データにそれぞれ対応する波形データを、１つの波形データに変換して、上記波形データ記憶手段に記憶する波形データ変換手段とを有し、上記波形読み出し制御データ読み出し手段は、上記波形読み出し制御データ変換手段により変換され上記波形読み出し制御データ記憶手段に記憶された１つの波形読み出し制御データを、上記変換前の波形読み出し制御データの代わりに読み出し、それに基づき、上記波形データ変換手段により変換された上記波形データ記憶手段に記憶された１つの波形データを、上記変換前の波形データの代わりに読み出すようにしたものである。
【００１８】
従って、本発明のうち請求項２に記載の発明によれば、所定時間内に所定個数以上の波形データが読み出される場合には、所定個数以上の波形読み出し制御データのうちの少なくとも２つ以上の波形読み出し制御データが１つの波形読み出し制御データに変換され、１つの波形読み出し制御データに変換される対象となる少なくとも２つ以上の波形読み出し制御データにそれぞれ対応する波形データが１つの波形データに変換されることになるので、所定時間内の所定個数以上の波形読み出し制御データに基づき波形データの読み出し処理を行うことができるようになり、楽音信号の生成が行われなくなるということがない。
【００１９】
また、本発明のうち請求項３に記載の発明は、本発明のうち請求項２に記載の発明において、上記判別手段により所定時間内に所定個数以上の波形データが読み出されるようになっていると判別された場合に、所定の警告を行う警告手段を有するようにしたものである。
従って、本発明のうち請求項３に記載の発明によれば、所定時間内に所定個数以上の波形データが読み出される場合には、所定の警告が行われることになり、使用者は所定時間内に所定個数以上の波形データが読み出されることを知ることができる。
【００２０】
また、本発明のうち請求項４に記載の発明は、本発明のうち請求項３に記載の発明において、上記波形読み出し制御データ変換手段および上記波形データ変換手段に変換処理を行わせるか否かを指示する指示情報を入力する指示情報入力手段を有するようにしたものである。
従って、本発明のうち請求項４に記載の発明によれば、波形読み出し制御データ変換手段および波形データ変換手段に変換処理を行わせるか否かを選択的に指示することができる。
【００２１】
ここで、本発明のうち請求項１、２、３または４に記載の発明において、上記判別手段は、本発明のうち請求項５に記載の発明のように、波形読み出し制御データの示す読み出し停止タイミングから該波形読み出し制御データに続く所定個数後の波形読み出し制御データの示す読み出し開始タイミングまでの時間に基づいて判別するものとすることができる。
【００２２】
【発明の実施の形態】
以下、添付の図面を参照しながら、本発明による波形読み出し制御データ処理装置の実施の形態の一例を詳細に説明する。
【００２３】
図１には、本発明による波形読み出し制御データ処理装置を備えた電子楽器の全体構成を表すブロック構成図が示されている。
【００２４】
この電子楽器は、その全体の動作の制御を中央処理装置（ＣＰＵ）１０を用いて制御するようになされており、このＣＰＵ１０と、波形データを記憶する磁気あるいは光などを利用したディスク１２と、半導体メモリ１４と、再生器１６と、操作パネル１８と、デジタル／アナログ変換器（Ｄ／Ａ）２０とを有して構成されている。そして、この電子楽器においては、デジタル／アナログ変換器２０からアナログ信号たるオーディオ信号（楽音信号）が出力され、ＣＰＵ１０からＭＩＤＩデータが出力されるようになされている。
【００２５】
なお、この実施の形態においては、波形データを記憶するものとして磁気あるいは光などを利用したディスク１２を用いたが、大容量の波形データの記憶ができるものであれば、ディスク以外の記憶装置を用いてもよいことは勿論である。
半導体メモリ１４は、ディスク１２に比較して小容量の記憶容量のみを有するものであるが、高速なアクセスが可能なものである。この半導体メモリ１４は、波形データを記憶する領域やワーキング用（プレイリスト、各種設定）の領域などが設けられているランダム・アクセス・メモリ（ＲＡＭ）とＣＰＵ１０のプログラムを記憶しているリード・オンリ・メモリ（ＲＯＭ）とから構成されている。
【００２６】
再生器１６は、ＣＰＵ１０の制御の下に半導体メモリ１４に記憶された波形データを再生するものであり、再生された波形データはデジタル／アナログ変換器２０により楽音信号にＤ／Ａ変換されて出力される。
【００２７】
ここで、操作パネル１８には、図１上において数字１〜１６により示す１６個の押しボタンであるパッド２２（なお、パッド２２は、図１上における数字１〜１６に対応して１〜１６のパッド番号が付けられて管理されている。）と、開始位置指定操作子２４と、プラス（＋）操作子２６と、マイナス（−）操作子２８と、記憶（Ｒｅｃ）操作子３０と、再生（Ｐｌａｙ）操作子３２と、停止（Ｓｔｏｐ）操作子３４と、進め（ＦＦ）操作子３６と、戻し（ＲＥＷ）操作子３８と、現在時刻や上記した各種の操作子の操作による設定状態あるいは後述する「警告」に関する表示などを行う画面表示器４０とが設けられている。
【００２８】
次に、操作パネル１８に設けられた上記した各種の操作子の詳細について説明する。
【００２９】
まず、パッド２２は、後述するようにディスク１２に記憶された１〜１６のフレーズ番号により管理される「フレーズ」と称される波形データのフレーズ番号を指定する操作子である。１〜１６のフレーズ番号は、後述するようにパッド２２に付された１〜１６のパッド番号に対応しており、パッド番号１のパッド２２を操作するとフレーズ番号１のフレーズが指定され、パッド番号２のパッド２２を操作するとフレーズ番号２のフレーズが指定され、・・・、パッド番号１６のパッド２２を操作するとフレーズ番号１６のフレーズが指定される。
【００３０】
また、開始位置指定操作子２４は、最後に操作されたパッド２２により指定されたフレーズ番号のフレーズについて、読み出しの「開始位置」（図２参照）の変更処理を指示するための操作子である。
【００３１】
また、プラス（＋）操作子２６は、最後に操作されたパッド２２により指定されたフレーズ番号のフレーズについて、読み出しの開始位置の値を増加するための操作子である。
【００３２】
また、マイナス（−）操作子２８は、最後に操作されたパッド２２により指定されたフレーズ番号のフレーズについて、読み出しの開始位置の値を減少するための操作子である。
【００３３】
また、記憶（Ｒｅｃ）操作子３０は、パッド２２の操作の状態をＰＬＡＹリスト（図３を参照しながら後述する。）として半導体メモリ１４に記憶する記憶処理の開始を指示するための操作子である。
【００３４】
また、再生（Ｐｌａｙ）操作子３２は、記憶しておいたパッド２２の操作の状態を再生する再生処理の開始を指示するための操作子である。
【００３５】
また、停止（Ｓｔｏｐ）操作子３４は、記憶（Ｒｅｃ）操作子３０により開始された記憶処理ならびに再生（Ｐｌａｙ）操作子３２により開始された再生処理の停止を指示するための操作子である。
【００３６】
また、進め（ＦＦ）操作子３６は、ＰＬＡＹリストの再生開始小節を進めるための操作子である。
【００３７】
また、戻し（ＲＥＷ）操作子３８は、ＰＬＡＹリストの再生開始小節を戻すための操作子である。
【００３８】
なお、進め（ＦＦ）操作子３６と戻し（ＲＥＷ）操作子３８とを同時に押した場合には、ＰＬＡＹリストの再生開始小節を先頭に戻す。
【００３９】
そして、この電子楽器においては、操作パネル１８に設けられている各種の操作子の操作状態はＣＰＵ１０によって監視され、操作パネル１８に設けられている画面表示器４０の表示内容はＣＰＵ１０によって制御されるものである。画面表示器４０には、ＰＬＡＹリストの記憶開始時を基準とした音楽的時間を表す現在時刻や処理対象とされているフレーズのフレーズ番号ならびに開始位置の値などが表示される他に、警告に関する表示もなされる。なお、この電子楽器の通常の状態においては、画面表示器４０には現在時刻が表示されることになる。
【００４０】
次に、図２を参照しながら、ディスク１２に記憶されているフレーズと称される波形データのフォーマットを説明する。
【００４１】
即ち、ディスク１２は、フレーズと称されるデジタル・データたる１６種類の波形データを予め記憶したメモリである。ディスク１２に記憶された１６種類のフレーズは、操作パネル１８の１６個のパッド２２にそれぞれ対応しており、対応するパッドのパッド番号と同じ１〜１６のフレーズ番号が付けられて管理されている。
【００４２】
なお、ディスク１２に記憶されるフレーズとしては、様々な楽器をある程度の時間（例えば、ある楽曲の２小節分の時間）にわたって演奏して得られた楽器音や、管楽器を１回だけ鳴らした場合あるいは弦楽器を１回だけ弾弦した場合などに得られる楽器音や、歌声や掛け声などの音声や、雨音などの効果音などが挙げられる。即ち、フレーズとしてはどのような音のデータであってもよく、特に楽器の音である必要はない。
【００４３】
図２に示すように、ディスク１２上においては、各フレーズは複数のクラスタに跨って記憶されている（図２には、クラスタ番号１〜８により管理される８個のクラスタに跨ってフレーズが記憶されている例を示している。）。各フレーズは設定されている「開始位置」から再生が開始され、フレーズが再生される際の開始位置は、以下に示すような操作によって変更することができるようになされている。
【００４４】
即ち、開始位置指定操作子２４といずれかのパッド２２とを同時に押すと、画面表示器４０の表示が現在時刻から「Ｓｔ（フレーズの先頭から開始位置までの時間間隔）」の値を示す表示に切り換わり、プラス（＋）操作子２６あるいはマイナス（−）操作子２８を操作することによってＳｔの値を増減することができ、これにより開始位置を変更することができる。そして、その後に、再び開始位置指定操作子２４を押すと、画面表示器４０の表示が通常の現在時刻の表示に切り換わる。
【００４５】
また、再生（Ｐｌａｙ）操作子３２の操作により再生処理の開始を指示された場合には、各パッド２２のＰＬＡＹリストの開始位置情報の音楽的時刻とＳｔの値に基づいた開始位置とに従って、フレーズの再生を開始する。
【００４６】
なお、図２において、「Ｋｒｅａｄ」は読み出し対象のクラスタを示す変数であり、「ｋ」は開始位置を含むクラスタを示す変数である。
【００４７】
次に、図３を参照しながらＰＬＡＹリストについて説明すると、ＰＬＡＹリストとは、「フレーズ番号」、「開始位置情報」、「Ｓｔ」および「終了位置情報」の４つの情報から構成されるフレーズのシーケンス再生情報で、以後においては「イベント」と称する。各イベントには、インデックスとして「イベント番号」が付けられている。
【００４８】
ここで、イベント番号とは、開始位置情報の時間順に並んでいる順序を示す情報である。
【００４９】
また、フレーズ番号とは、開始位置情報の時刻にいずれのパッド２２のフレーズが指示されたかを示す情報である。
【００５０】
また、開始位置情報とは、「小節」、「拍」および「ティック」の３つの値からなるフレーズの再生の開始時刻を示す情報である。
【００５１】
また、Ｓｔは、フレーズの先頭から開始位置までの時間間隔の値を示す情報である。
【００５２】
また、終了位置情報とは、小節、拍、ティックの３つの値からなるフレーズの再生の終了時刻を示す情報である。
【００５３】
なお、ティックとは、音楽的時間の拍よりも短い単位であり、実際の長さ（物理時間上の長さ）はテンポに応じて変化する。
【００５４】
具体的には、
拍子の分母が「２」（２分音符）のときは、１拍は１９２ティックであり、
拍子の分母が「４」（４分音符）のときは、１拍は９６ティックであり、
拍子の分母が「８」（８分音符）のときは、１拍は４８ティックであり、
拍子の分母が「１６」（１６分音符）のときは、１拍は２４ティックである。
【００５５】
ここで、拍子の分母がいずれの場合であっても、テンポの基準は４分音符であるので、
６０秒／テンポ＝９６ティックの時間
となり、
１ティックの時間＝（６０／９６／テンポ）秒
となる。
【００５６】
なお、ＰＬＡＹリストの記憶開始時点を基準時間（第１小節の第１拍の第１ティック）として、現在の音楽的時間（小節、拍、ティック）を示すメイジャーカウンターが設けられており、開始位置情報、終了位置情報、小節数などは対応する時刻のメイジャーカウンターの内容が設定される。
【００５７】
また、再生器１６には、再生用に１つの再生チャンネルが設けられており、再生チャンネルにより半導体メモリ１４に設けられたＰＬＡＹバッファ（図４ならびに図５を参照しながら後述する。）の記憶内容を読み出し、楽音信号として再生することになる。再生器１６によりＰＬＡＹバッファの記憶内容を再生する際には、ＰＬＡＹバッファの各クラスタがクラスタ番号１〜４の順に読み出されることになり、クラスタ番号４のクラスタを読み終わると、次ぎにはクラスタ番号１のクラスタが読み出されるものである。
【００５８】
再生器１６は、独自にＰＬＡＹバッファのＫｐｌａｙクラスタを読み出すとともにＳｐｌａｙの値をインクリメントし、Ｑｐｌａｙの値をデクリメントする。そして、１つのクラスタの読み出しを終了した場合には、再生器１６は「クラスタ再生終了イベント」を発生する。また、１つのクラスタ内でフレーズの読み出しを終了した場合（Ｑｐｌａｙが０になった場合）には、再生器１６は「Ｑｐｌａｙ＝０イベント」を発生し、対象イベントの再生を停止する。
【００５９】
図４には、ディスクからフレーズが転送された状態におけるＰＬＡＹバッファの概念図が示されている。ここでは、第２クラスタからあるフレーズが転送された状態を示している。ここで、各フレーズはディスクより開始位置が設定されているクラスタ（先頭からＳｔの値に応じた分の時間だけずれたクラスタ）より読み込まれる。
【００６０】
図４において、「Ｓ（ｍ）」は、開始位置が設定されたクラスタ内での当該クラスタの先頭から開始位置までのアドレス数を示すものであり、
Ｓ（ｍ）＝Ｓｔ−（１クラスタのアドレス数）×（ｋ−１）
により求められる。なお、フレーズの各サンプルのデータは各アドレスに記憶されるものであり、「ｋ−１」は、開始位置が設定されているクラスタよりも前にありディスクから読み込まれなかったクラスタ数を示している。
【００６１】
また、図４において、「Ｑ（ｍ）」は、イベントの開始位置情報および終了位置情報から算出される再生対象のフレーズの再生部分の総アドレス数を示すものである。
【００６２】
「Ｓ（ｍ）＋Ｑ（ｍ）」が、フレーズの開始位置を含むクラスタの先頭からの当該フレーズの終了位置までのアドレス数を示す。
【００６３】
なお、「ｍ＝０、１、２、３」により、ＰＬＡＹバッファに設定される最大４つの将来再生されるフレーズを再生順序として認識している。
【００６４】
図５には、データ再生時におけるＰＬＡＹバッファの概念図が示されており、イベントの開始位置情報の時刻になりＰＬＡＹバッファに記憶されているフレーズが再生器１６で再生される場合には、Ｓ（０）の値をＳｐｌａｙに転送し、Ｑ（０）の値をＱｐｌａｙに転送する。そして、現在の再生対象クラスタＫｐｌａｙのＳｐｌａｙアドレスを再生器１６で再生する度に、Ｓｐｌａｙを増加するとともに、Ｑｐｌａｙを減少させる。そこで、現在の再生対象クラスタＫｐｌａｙの全データを再生し終わった場合には、現在の再生対象クラスタＫｐｌａｙの新たなデータの読み込みイベントを発生し、再生対象クラスタＫｐｌａｙを次のクラスタに切り換えて更新し、Ｓｐｌａｙをリセット、即ち、「Ｓｐｌａｙ＝０」とする。
【００６５】
次に、フローチャートを参照しながらこの電子楽器の動作について詳細に説明することとするが、以下の説明の理解を容易にするために、フローチャートにおいて使用される主なパラメータを示すこととする。
（１）ｎ：ＰＬＡＹリストチェックのイベント番号カウンタ
（２）Ｆｌ：再生および記憶動作フラグ（「０」で再生および記憶停止を示し、「１」で再生中あるいは記憶中であることを示す。後述するリアルタイムカウンターおよびメイジャーカウンターは、Ｆｌが「１」である場合にだけ更新される。）
（３）Ｆａ：発音動作フラグ（「０」で発音停止を示し、「１」で発音中を示す。再生器１６は、Ｆａが「１」である場合にだけフレーズの再生を行う。）
（４）Ｋｐｌａｙ：再生対象クラスタ
（５）Ｓｐｌａｙ：再生対象クラスタ内の再生アドレス
（６）Ｑｐｌａｙ：フレーズの再生対象部分の総アドレス数
（７）Ｃｐｌａｙ：ＰＬＡＹリスト上の再生イベントカウンタ（１〜）
（８）Ｃｒｅａｄ：ＰＬＡＹリスト上の読み出しイベントカウンタ（１〜）
（９）Ｔｒｅａｄ：予約再生イベント数カウンタ
（１０）Ｋｒｅａｄ：ＰＬＡＹリストのＣｒｅａｄイベントの読み出しクラスタ
（１１）ｋ：スタート位置クラスタ
（１２）Ｑ（０）：現在の再生イベントのアドレス数
（１３）Ｑ（１）：次回の再生イベントのアドレス数
（１４）Ｑ（２）：次次回の再生イベントのアドレス数
（１５）Ｑ（３）：次次次回の再生イベントのアドレス数
（１６）Ｓ（０）：現在の再生イベントスタートポイント
（１７）Ｓ（１）：次回の再生イベントスタートポイント
（１８）Ｓ（２）：次次回の再生イベントスタートポイント
（１９）Ｓ（３）：次次次回の再生イベントスタートポイント
（２０）Ｂ（１〜８）：ＭＩＤＩに物理的時間情報を送出するためのバッファ
（２１）Ｃ：Ｂ（）を示すカウンタ
はじめに、図６に示す時刻変更イベント処理ルーチンを参照しながら、電源投入時や進め（ＦＦ）操作子３６あるいは戻し（ＲＥＷ）操作子３８などを操作することによって、時刻が変更されたことを示す時刻変更イベントが発生された場合の処理について説明する。
【００６６】
図６に示す時刻変更イベント処理ルーチンにおいては、まず、ＰＬＡＹリストに従って、現在時刻以後において一番最初の開始位置情報の小節、拍、ティックを持つイベント番号をＣｒｅａｄ、Ｃｐｌａｙとして記憶する（ステップＳ６０２）。即ち、現在時刻以後で最初に再生されるべきイベントを探し、ＣｒｅａｄおよびＣｐｌａｙにセットするものである。
【００６７】
それから、Ｔｒｅａｄに０をセットして初期化し（ステップＳ６０４）、時刻変更イベント処理ルーチンのサブルーチンとして、開始クラスタ調査処理ルーチンを実行する（ステップＳ６０６）。この開始クラスタ調査処理ルーチンについては、図７に示す開始クラスタ調査処理ルーチンのフローチャートを参照しながら後述する。
【００６８】
ステップＳ６０６の開始クラスタ調査処理ルーチンを終了すると、Ｋｐｌａｙに１をセットしてＫｐｌａｙクラスタ読み込み要求イベントを発生し（ステップＳ６０８）、Ｋｐｌａｙに２をセットしてＫｐｌａｙクラスタ読み込み要求イベントを発生し（ステップＳ６１０）、Ｋｐｌａｙに３をセットしてＫｐｌａｙクラスタ読み込み要求イベントを発生し（ステップＳ６１２）、Ｋｐｌａｙに４をセットしてＫｐｌａｙクラスタ読み込み要求イベントを発生する（ステップＳ６１４）。
【００６９】
各ステップのＫｐｌａｙクラスタ読み込み要求イベントに応じて後述するＫｐｌａｙクラスタ要求イベント処理が行われ、該設定処理が終了すると次のステップに進む。Ｋｐｌａｙクラスタ要求イベント処理においては、指定されたイベントのフレーズのデータをディスク１２からＰＬＡｙバッファのＫｐｌａｙクラスタに転送する処理を行い、指定されたイベントのフレーズの再生部分を全て転送した場合には、次のイベントのフレーズの開始位置を含むクラスタを、クラスタのデータ転送対象にする。
【００７０】
即ち、ステップＳ６０８〜ステップＳ６１４においては、Ｋｐｌａｙのパラメータを１から４まで増加させながら、各クラスタの読み込み要求イベントを発生し、４クラスタを読み込み再生の初期状態を作る処理が行われる。
【００７１】
ステップＳ６１４の処理を終了すると、Ｋｐｌａｙに１をセットし、ＳｐｌａｙにＳ（０）をセットし、ＱｐｌａｙにＱ（０）をセットすることにより、Ｋｐｌａｙ、ＳｐｌａｙおよびＱｐｌａｙを初期化し（ステップＳ６１６）、この時刻変更イベント処理ルーチンを終了する。
【００７２】
即ち、時刻変更イベント処理ルーチンにおいては、変更された現在時刻以後に再生が予定される１または複数のフレーズの４クラスタ分のデータをディスク１２からＰＬＡＹバッファ転送し、第１クラスタを再生対象クラスタとする処理が行われる。
【００７３】
次に、図７に示す開始クラスタ調査処理ルーチンのフローチャートを参照しながら、開始クラスタ調査処理ルーチンを説明する。
【００７４】
図７に示す開始クラスタ調査処理ルーチンにおいては、まず、ｋに０をセットして初期化し（ステップＳ７０２）、その後にｋを１ずつインクリメントする（ステップＳ７０４）。
【００７５】
そして、Ｃｒｅａｄイベントのｋ番目クラスタに開始位置があるか否かを判別し（ステップＳ７０６）、Ｃｒｅａｄイベントのｋ番目クラスタに開始位置がないと判別された場合には、ステップＳ７０４へ戻って処理を行う。
【００７６】
一方、ステップＳ７０６において、Ｃｒｅａｄイベントのｋ番目クラスタに開始位置があると判別された場合には、Ｋｒｅａｄにｋをセットして、この開始クラスタ調査処理ルーチンを終了する。
【００７７】
即ち、この開始クラスタ調査処理ルーチンにおいては、Ｃｒｅａｄイベントのフレーズの開始位置が、Ｃｒｅａｄイベントによって指示されたフレーズのデータの何番目のクラスタに在るかを調べ、その結果をＫｒｅａｄにセットする処理がが行われている。Ｃｒｅａｄイベントのｋ番目クラスタに開始位置があるか否かは、「Ｓｔ値≦「１クラスタのアドレス数」×ｋ」が「否定（Ｎｏ）」の場合にはＣｒｅａｄイベントのｋ番目クラスタに開始位置がないと判別すし、「Ｓｔ値≦「１クラスタのアドレス数」×ｋ」が「肯定（Ｙｅｓ）」の場合にはＣｒｅａｄイベントのｋ番目クラスタに開始位置があると判別する。
【００７８】
次に、図８に示す再生開始イベント処理ルーチンを参照しながら、再生（Ｐｌａｙ）操作子３２の操作により再生開始イベントが発生された場合の処理について説明する。
【００７９】
この再生開始イベント処理ルーチンにおいては、まず、現在のメイジャーカウンター（音楽的時間）の内容からテンポマップに従って現在の物理的時間を計算してリアルタイムカウンター（物理的時間）へ転送し（ステップＳ８０４）、Ｆｌに１（再生開始）をセットしてメイジャーカウンター（音楽的時間）とリアルタイムカウンター（物理的時間）を始動させてから（ステップＳ８０６）、この再生開始イベント処理ルーチンを終了する。以後、メイジャーカウンターは、各ティック毎のタイミングで更新され、リアルタイムカウンターは各サブフレーム（１／３０００秒）タイミングで更新される。
【００８０】
即ち、この電子楽器においては、メイジャーカウンター（音楽的時間）と「リアルタイムカウンター（物理的時間）との二つの時間カウンターを有しており、両者をテンポマップ（後述する）により一致させた後に「フラグＦｌ＝１（再生開始）」として始動する。
【００８１】
次に、図９に示す再生停止イベント処理ルーチンを参照しながら、再生中における停止（Ｓｔｏｐ）操作子３４の操作により再生停止イベントが発生された場合の処理について説明する。この再生停止イベント処理ルーチンにおいては、再生停止イベントを検出以後の再生を止める動作が行われる。
【００８２】
即ち、まず、Ｆａに１がセットされたまま音が続くの避けるために、Ｆａに０（発音停止）をセットする（ステップＳ９０２）。
【００８３】
次に、Ｆｌに０（再生停止）をセットしてメイジャーカウンター（音楽的時間）とリアルタイムカウンター（物理的時間）とを停止させる（ステップＳ９０４）。
【００８４】
さらに、時刻変更イベントを発生させ、停止した時刻以後で再生されるイベントに対応するフレーズとＰＬＡＹバッファに転送してから（ステップＳ９０６）、この再生停止イベント処理ルーチンを終了する。
【００８５】
次に、図１０に示すＣｐｌａｙ発音イベント処理ルーチンのフローチャートを参照しながら、Ｃｐｌａｙ番イベントの開始位置情報（小節、拍、ティック）にさしかかると発生するＣｐｌａｙ発音イベントに関する処理について説明する。
即ち、Ｆｌに１（再生開始）をセットするとメイジャーカウンター（音楽的時間）が進み、ＰＬＡＹリストのＣｐｌａｙ番イベントの開始位置情報（小節、拍、ティック）にさしかかるとＣｐｌａｙ発音イベントが発生されることになる。
このＣｐｌａｙ発音イベント処理ルーチンにおいては、Ｆａに１（発音開始）をセットし、ＫｐｌａｙとＳｐｌａｙとに従って再生器１６にＰＬＡＹバッファの再生開始を指示してＣｐｌａｙ番イベントのフレーズを再生させる（ステップＳ１００２）。以後、再生器１６はサンプリング周波数毎に各フレーズの各サンプルを読み出し、Ｓｐｌａｙを増加させるとともにＱｐｌａｙを減少させる。
【００８６】
それから、Ｃｐｌａｙをインクリメントして次フレーズの再生のイベント発生に備え（ステップＳ１００４）、このＣｐｌａｙ発音イベント処理ルーチンを終了する。
【００８７】
次に、図１１に示すＫｐｌａｙクラスタ再生終了イベント処理ルーチンのフローチャートを参照しながら、Ｋｐｌａｙクラスタ再生終了イベントが発生された場合の処理について説明する。Ｋｐｌａｙクラスタ再生終了イベントは、Ｆａに１（発音開始）がセットされた状態でＫｐｌａｙとＳｐｌａｙとに従い再生されている状態において、Ｋｐｌａｙクラスタの再生が終了すると発生される。
【００８８】
このＫｐｌａｙクラスタ再生終了イベント処理ルーチンにおいては、まず、Ｋｐｌａｙクラスタ再生終了イベントが発生すると、Ｋｐｌａｙクラスタ読み込み要求イベントを発生する（ステップＳ１１０２）。
【００８９】
Ｋｐｌａｙクラスタ読み込み要求イベントに応じて、Ｋｐｌａｙクラスタ読み込み要求イベント処理が行われる。該処理においては、次の読み込み対象クラスタをディスク１２からＫｐｌａｙクラスタに転送処理を行う。
【００９０】
それから、Ｋｐｌａｙクラスタ再生終了イベント処理ルーチンのサブルーチンとして、再生ＰＬＡＹクラスタ移動処理ルーチンを実行する（ステップＳ１１０４）。この再生ＰＬＡＹクラスタ移動処理ルーチンについては、図１２に示す再生ＰＬＡＹクラスタ移動処理ルーチンのフローチャートを参照しながら後述する。
【００９１】
そして、再生ＰＬＡＹクラスタ移動処理ルーチンを終了すると、Ｓｐｌａｙに０をセットして（ステップＳ１１０６）、このＫｐｌａｙクラスタ再生終了イベント処理ルーチンを終了する。
【００９２】
即ち、このＫｐｌａｙクラスタ再生終了イベント処理ルーチンでは、再生の終了したクラスタに、フレーズのまだ転送されていない次の転送クラスタのデータを転送する処理を行っている。
【００９３】
次に、図１２に示す再生ＰＬＡＹクラスタ移動処理ルーチンのフローチャートを参照しながら、再生ＰＬＡＹクラスタ移動処理ルーチンについて説明する。
【００９４】
この再生ＰＬＡＹクラスタ移動処理ルーチンにおいては、まず、Ｋｐｌａｙを１ずつインクリメントし（ステップＳ１２０２）、それからＫｐｌａｙが５であるか否かを判別する（ステップＳ１２０４）。Ｋｐｌａｙを１ずつインクリメントすることにより、再生クラスタが１ずつ移動されることになる。
【００９５】
そして、ステップＳ１２０４において、Ｋｐｌａｙが５でないと判別された場合には、そのままこの再生ＰＬＡＹクラスタ移動処理ルーチンを終了する。
【００９６】
一方、ステップＳ１２０４において、Ｋｐｌａｙが５であると判別された場合には、Ｋｐｌａｙは４までの値しかとり得ないのでＫｐｌａｙに１をセットし（ステップＳ１２０６）、それからこの再生ＰＬＡＹクラスタ移動処理ルーチンを終了する。
【００９７】
従って、Ｋｐｌａｙクラスタ再生終了イベント処理ルーチンにおいては、再生クラスタを移動しながら再生が継続されることになる。
【００９８】
次に、図１３に示すＱｐｌａｙ＝０イベント処理ルーチンのフローチャートを参照しながら、このＱｐｌａｙ＝０イベントが発生された場合の処理について説明する。Ｑｐｌａｙ＝０イベントは、再生フレーズが終了時刻まできたときに発生される。
【００９９】
このＱｐｌａｙ＝０イベント処理ルーチンにおいては、まず、Ｆａに０（発音停止）をセットし（ステップＳ１３０２）、それから、現在ＰＬＡＹバッファの４クラスタに予約されているＱ（０〜３）、Ｓ（０〜３）をそれぞれずらして行き（ステップＳ１３０４）、Ｔｒｅａｄを１デクリメントして予約再生イベント数カウンタを減少する（ステップＳ１３０６）。
【０１００】
次に、Ｋｐｌａｙクラスタのデータは必要なくなるため、Ｋｐｌａｙクラスタ読み込み要求イベントを発生し（ステップＳ１３０８）、新たなデータの読み込みを行なう。
【０１０１】
さらに、再生ＰＬＡＹクラスタ処理ルーチン（図１２参照）を実行してＫｐｌａｙを更新し（ステップＳ１３１０）、ＳｐｌａｙにＳ（０）をセットするとともにＱｐｌａｙにＱ（０）をセットして、このＱｐｌａｙ＝０イベント処理ルーチンを終了する。
【０１０２】
即ち、Ｑｐｌａｙ＝０イベント処理ルーチンにおいては、フレーズを終了時刻まで再生することにより、空いたクラスタにまだ転送されていないフレーズの次のデータを転送し、次のクラスタを再生する準備を行っている。
【０１０３】
次に、図１４に示すＫｐｌａｙクラスタ読み込み要求イベント処理ルーチンのフローチャートを参照しながら、Ｋｐｌａｙクラスタ読み込み要求イベントが発生された場合の処理について説明する。
【０１０４】
このＫｐｌａｙクラスタ読み込み要求イベント処理ルーチンにおいては、まず、ＰＬＡＹリストのＣｒｅａｄイベントのフレーズ番号のフレーズの第Ｋｒｅａｄクラスタを、ＰＬＡＹバッファのＫｐｌａｙ番目のクラスタに転送する（ステップＳ１４０２）。
【０１０５】
次に、Ｋｒｅａｄがｋに一致するか否かを判別し（ステップＳ１４０４）、Ｋｒｅａｄがｋに一致すると判別された場合には、直前に「Ｋｒｅａｄ＝ｋ」がセットされてから更新（Ｋｒｅａｄ＝Ｋｒｅａｄ＋１）されていないということなので、読み込みクラスタ内に再生の開始位置があると判断し、Ｓ（Ｔｒｅａｄ）に再生の開始位置を設定するとともに、Ｑ（Ｔｒｅａｄ）に再生総アドレス数を設定し（ステップＳ１４０６）、ステップＳ１４０８へ進む。
【０１０６】
なお、Ｔｒｅａｄは、ＰＬＡＹバッファに記憶されているフレーズに対応するイベント数を示している。
【０１０７】
ここで、Ｓ（Ｔｒｅａｄ）は、「Ｓｔ値−「１クラスタのアドレス数」×（ｋ−１）」を求めて代入する。
【０１０８】
また、Ｑ（Ｔｒｅａｄ）は、テンポマップによって求められるＣｒｅａｄイベントの開始位置情報（小節、拍、ティック）に対応する物理時間と、テンポマップによって求められるＣｒｅａｄイベントの終了位置情報（小節、拍、ティック）に対応する物理時間との差によって求められる再生アドレス数を得て代入する。
【０１０９】
一方、ステップＳ１４０４において、Ｋｒｅａｄがｋに一致しないと判別された場合には、そのままステップＳ１４０８へ進む。
【０１１０】
ステップＳ１４０８においては、読み込みクラスタ内に再生終了位置があるか否かを判別する。具体的には、「Ｓ（Ｔｒｅａｄ）＋Ｑ（Ｔｒｅａｄ）≦「１クラスタのアドレス数」×（Ｋｒｅａｄ−ｋ＋１）」であるか否かを判別することになる。
【０１１１】
そして、ステップＳ１４０８において、読み込みクラスタ内に再生終了位置があると判別された場合には、Ｔｒｅａｄを１インクリメントして予約再生イベント数カウンタをカウントアップ（予約フレーズ数を１増加）するとともに、次回にクラスタ読み込み要求イベントが発生した場合のためにＣｒｅａｄを１インクリメントする（ステップＳ１４１０）。
【０１１２】
それから、開始クラスタ調査処理ルーチン（ステップＳ１４１２）を実行し、このＫｐｌａｙクラスタ読み込み要求イベント処理ルーチンを終了する。
【０１１３】
一方、ステップＳ１４０８において、読み込みクラスタ内に再生終了位置がないと判別された場合には、Ｋｒｅａｄを１インクリメントしてカウントアップし、このＫｐｌａｙクラスタ読み込み要求イベント処理ルーチンを終了する。
【０１１４】
即ち、Ｋｐｌａｙクラスタ読み込み要求イベント処理ルーチンにおいては、１クラスタのデータを、ディスク１２よりＰＬＡＹバッファのＫｐｌａｙクラスタに転送する処理が行われる。
【０１１５】
次に、図１５に示すリアルタイム２フレームイベント処理ルーチンのフローチャートを参照しながら、リアルタイム２フレームイベントが発生された場合の処理について説明する。リアルタイムカウンター（物理的時間）は１５ｔｉｍｅｓ／ｓｅｃ毎にリアルタイム２フレームイベントを発生し、それによりこのリアルタイム２フレームイベント処理ルーチンが実行される。
【０１１６】
このリアルタイム２フレームイベント処理ルーチンにおいては、リアルタイムカウンターの内容である物理時間情報を８つのバッファに分割して書き込む（ステップＳ１５０２）。
【０１１７】
それから、Ｃに１をセットして（ステップＳ１５０４）、このリアルタイム２フレームイベント処理ルーチンを終了する。
【０１１８】
次に、図１６に示すリアルタイムクォーターフレームイベント処理ルーチンを参照しながら、リアルタイムクォーターフレームイベントが発生された場合の処理について説明する。リアルタイムカウンター（物理的時間）は１２０ｔｉｍｅｓ／ｓｅｃ毎にリアルタイムクォーターフレームイベントを発生し、リアルタイムクォーターフレームイベント処理ルーチンが実行される。
【０１１９】
このリアルタイムクォーターフレームイベント処理ルーチンにおいては、まず、バッファＢ（Ｃ）をＭＩＤＩデータとして出力し（ステップＳ１６０２）、Ｃを１インクリメントしてから（ステップＳ１６０４）、このリアルタイムクォーターフレームイベント処理ルーチンを終了する。
【０１２０】
ここで、図１７にはバッファＢ（Ｃ）のデータ形式が概念的に示されており、図１７において「Ｂｃ（ｃは１から８）」は、物理時間情報をＭＩＤＩデータとして外部に送出するためのバッファである。
【０１２１】
リアルタイムカウンタ（物理的時間）が２フレーム毎（１フレームは１／３０秒）に２フレームイベントを発生し（１５回／秒）、物理時間情報を８個のデータブロック「Ｂｃ（ｃは１から８）」に分割して格納し、クオータフレーム毎に転送するためのカウンタＣを初期値１にする。
【０１２２】
そして、リアルタイムカウンタ（物理的時間）が１／４フレーム毎（１フレームは１／３０秒）にクオータフレームイベントを発生し（１２０回／秒）、物理時間情報を保持する８個のデータブロックのうちの１つ「Ｂ（Ｃ）」を外部に転送し、カウンタＣをカウントアップする。
【０１２３】
なお、２フレームイベント発生時（１５回／秒）は、必ずクオータフレームイベントを発生し（１２０回／秒）、その場合には、２フレームイベントを処理してからクオータフレームイベントの処理を行う。
【０１２４】
図１８には、図３に示すＰＬＡＹリストの例のイベント番号６、イベント番号７およびイベント番号８の音楽的時間に関する説明図が示されており、本実施の形態におけるようにＰＬＡＹバッファが４クラスタの場合には、図１９に示すようにその再生が問題になる場合がある。
【０１２５】
即ち、Ｏｆｆ（６）の時刻に第１クラスタ読み込み要求イベントが発生することになるが、Ｏｎ（８）の時刻までにこのイベントに応じた第１クラスタへのデータの転送処理を終えることができないと再生に支障をきたすことになる。
【０１２６】
この点について、図１９を図１８と同様に再生の開始／終了の実際の時間にそった図（横軸が時間のずれを示す。）に書き換えた図２０を参照しながら、詳細に説明する。
【０１２７】
図２０より、ＰＬＡＹバッファの第１クラスタをＰＬＡＹバッファの第１’クラスタとして書き換えることを、ＰＬＡＹバッファの第１クラスタの再生終了時刻からＰＬＡＹリストのイベント番号８の開始時刻（Ｏｎ（８））までの間に行われなければならないことが理解される。
【０１２８】
即ち、ＰＬＡＹバッファの第１のクラスタを第１’クラスタとして書き換える際に、「Ｏｎ（８）−Ｏｆｆ（６）」が１クラスタの書き換え時間（Ｌ）を下回る場合は、再生に支障をきたす可能性がある。
【０１２９】
本発明は、「１クラスタの書き換え時間（Ｌ）」以内に第ｎ番イベントから第ｎ＋２番イベントまでの３イベントがあるかを判別することにより、所定時間（Ｌ）内に所定個数（３）以上の波形データが読み出されるようになっていることを判断している。
【０１３０】
より詳細には、所定時間（Ｌ）と第ｎ番イベントの停止タイミングから第ｎ＋２番イベントの開始タイミングを比較し、こうした再生の際に支障が生じることがあること検出し、使用者に警告するか、または再生の際に支障が生じないように検出されたイベントの変換とイベントに応じたフレーズの変換を行うことを、以下に説明する処理によって行う。
【０１３１】
なお、以下の説明の理解を容易にするために、フローチャートにおいて使用される主なパラメータを示すこととする。
（１）Ｃｒｅｃ：ＰＬＡＹリスト上の書き込みイベントカウンタ（１〜）
（２）Ｐｏｎ：パッド保持番号（１〜１６）
（３）Ｆｏｎ：パッド保持フラグ（「０」で押されていない状態を示し、「１」で押されたままの状態を示す。）
（４）ｎ：ＰＬＡＹリストチェックのイベント番号カウンター
（５）ｍｆ：結合されるフレーズの番号を示すカウンター（１７〜）
（６）Ｌ：１クラスタの読み出し時間
（７）Ｅ（ｎ）：消去予定イベントフラグ
まず、図２１に示すシーケンス録音開始イベント処理ルーチンを参照しながら、シーケンス録音開始イベントが発生された場合の処理について説明する。シーケンス録音開始イベントは、記憶（Ｒｅｃ）操作子３０が操作されることにより発生する。
【０１３２】
このシーケンス録音開始イベント処理ルーチンにおいては、まず、メイジャーカウンター（音楽的時間）、およびリアルタイムカウンター（物理的時間）の内容を初期化する（ステップＳ２１０２）。即ち、録音開始イベントが発生すると、内部に持つ２つのカウンタ（時計）たる「メイジャーカウンター（音楽的時間）」と「リアルタイムカウンター（物理的時間）」とを合わせるために、メイジャーカウンターの現在時刻（小節、拍、ティック）とテンポマップとから、リアルタイムカウンターの現在時刻を算出しリアルタイムカウンターへ転送する処理を行うものである。
【０１３３】
次に、Ｃｒｅｃに１を設定して初期化するとともに、ＰＬＡＹリストを初期化し、さらにｍｆに１７を設定する（ステップＳ２１０４）。
【０１３４】
それから、Ｆｌ＝１として、「メイジャーカウンター（音楽的時間）」と「リアルタイムカウンター（物理的時間）」とを始動し（ステップＳ２０６）、このシーケンス録音開始イベント処理ルーチンを終了する。
【０１３５】
以後は、シーケンス録音終了イベントが発生されるまで、後述するパッドのＯＮイベント処理ルーチンやパッドのＯＦＦイベント処理ルーチンなどが行われる。
【０１３６】
次に、図２２に示すシーケンス録音終了イベント処理ルーチンを参照しながら、シーケンス録音中における停止（Ｓｔｏｐ）操作子３４の操作によりシーケンス録音終了イベントが発生された場合の処理について説明する。このシーケンス録音終了イベント処理ルーチンにおいては、シーケンス録音終了イベントを検出以後のシーケンス録音を止める動作が行われる。
【０１３７】
このシーケンス録音終了イベント処理ルーチンにおいては、まず、Ｆｏｎに１がセットされているか否かを判別し、最後に押されパッド２２がまだ押されているか否かを判別する（ステップＳ２２０２）。
【０１３８】
ステップＳ２２０２において、Ｆｏｎに１がセットされている、即ち、押されたままのパッド２２がある場合には、Ｐｏｎ番のパッドのＯＦＦイベントを発生して現在記録中のイベントを終わらせ（ステップＳ２２０４）、ステップＳ２２０６へ進む。
【０１３９】
なお、パッドのＯＦＦイベントの発生に応じて、後述するパッドのＯＦＦイベント処理が行われ、押されていたパッド２２に関するイベントの書き込みがなされる。
【０１４０】
一方、  ステップＳ２２０２において、Ｆｏｎに１がセットされていない、即ち、押されたままのパッド２２がない場合には、そのままステップＳ２２０６へ進む。
【０１４１】
ステップＳ２２０６においては、Ｆｌ＝０として、「メイジャーカウンター（音楽的時間）」と「リアルタイムカウンター（物理的時間）」とを停止し、このシーケンス録音終了イベント処理ルーチンのサブルーチンとしてのＰＬＡＹリストチェック処理ルーチンを実行する（ステップＳ２２０８）。このＰＬＡＹリストチェック処理ルーチンについては、図２５に示すＰＬＡＹリストチェック処理ルーチンのフローチャートを参照しながら後述する。
【０１４２】
そして、ＰＬＡＹリストチェック処理ルーチンを終了すると、このシーケンス録音終了イベント処理ルーチンを終了する。
【０１４３】
次に、図２３に示すパッドのＯＮイベント処理ルーチンのフローチャートを参照しながら、パッド２２のＯＮ（オン：押された状態）操作によりパッドのＯＮイベントが発生された場合の処理について説明する。
【０１４４】
このパッドのＯＮイベント処理ルーチンにおいては、まず、Ｆｏｎに１が１セットされているか否かを判別し（ステップＳ２３０２）、Ｆｏｎに１が１セットされていると判別された場合には、Ｐｏｎ番のパッドのＯＦＦイベントを発生させてから（ステップＳ２３０４）、ステップＳ２３０６へ進み、一方、Ｆｏｎに１が１セットされていないと判別された場合には、そのままステップＳ２３０６へ進む。
【０１４５】
なお、パッドのＯＦＦイベントの発生に応じて、後述するパッドのＯＦＦイベント処理が行われ、押されていたパッド２２に関するイベントの書き込みがなされる。
【０１４６】
ステップＳ２３０６においては、Ｆｏｎに１をセットするとともに、ＰｏｎにＯＮイベントは発生させたパッド２２のパッド番号をセットする。
【０１４７】
それから、ＰＬＡＹリストのイベントＣｒｅｃ番のフレーズ番号にＰｏｎを記録し、開始位置情報の小節、拍、ティックにメイジャーカウンターで示される現在時刻の小節、拍、ティックを記録し、ＳｔにＯＮイベントを発生させたパッド２２に対応するフレーズの開始位置を記録し、このパッドのＯＮイベント処理ルーチンを終了する。
【０１４８】
次に、図２４に示すパッドのＯＦＦイベント処理ルーチンのフローチャートを参照しながら、パッド２２のＯＦＦ（オフ：押されていない状態）操作によりパッドのＯＦＦイベントが発生された場合の処理について説明する。
【０１４９】
このパッドのＯＦＦイベント処理ルーチンにおいては、まず、ＯＦＦイベントを発生させたパッド２２と同じパッドのパッド番号がＰｏｎにセットされているか否かを判別し（ステップＳ２４０２）、Ｐｏｎに同じパッド番号がセットされていないと判別された場合には、そのままこのパッドのＯＦＦイベント処理ルーチンを終了する。
【０１５０】
一方、ステップＳ２４０２において、Ｐｏｎに同じパッド番号がセットされていると判別された場合には、ＰＬＡＹリストのイベントＣｒｅｃ番の終了位置情報の小節、拍、ティックにメイジャーカウンターで示される現在時刻の小節、拍、ティックを記録する（ステップＳ２４０４）。
【０１５１】
それから、Ｃｒｅｃを１インクリメントしてカウントアップし（ステップＳ２４０６）、Ｆｏｎに０をセットしてから（ステップＳ２４０８）、このパッドのＯＦＦイベント処理ルーチンを終了する。
【０１５２】
従って、シーケンス録音終了イベントが発生した時点では、Ｃｒｅｃは最後のイベントのイベント番号よりも１大きい値が記憶される。
【０１５３】
次に、図２５に示すＰＬＡＹリストチェック処理ルーチンのフローチャートを参照しながら、ＰＬＡＹリストチェック処理ルーチンを説明する。
【０１５４】
このＰＬＡＹリストチェック処理ルーチンにおいては、まず、カウンタｎに「録音開始イベント番号−２」をセットするものであるが、録音開始イベント番号が３未満である場合には、最小の値たる１をセットする（ステップＳ２５０２）。カウンタｎは、「録音開始イベント番号−２」から「録音終了イベント番号」までカウントアップされる。
【０１５５】
また、Ｌに「１クラスタの読み出し時間」をセットする（ステップＳ２５０２）。Ｌの値は、ディスク１２から１クラスタ分のデータを読み出してＰＬＡＹバッファに転送するのに要する時間であり、この実施の形態においては、Ｌと比較されるイベント時刻の差が音楽的時間により定義されているため、転送に要する時間を音楽的時間に変換してセットする。従って、Ｌの値はシーケンス録音の際のテンポの設定によって変化する。
【０１５６】
それから、Ｅ（１）〜Ｅ（Ｃｒｅｃ−１）に順次それぞれ０をセットして、Ｅ（１）〜Ｅ（Ｃｒｅｃ−１）を順次に初期化する（ステップＳ２５０４〜ステップＳ２５０６）。
【０１５７】
以下、第ｎ番イベント、第ｎ＋１番イベント、第ｎ＋２番イベントを、単にｎ、ｎ＋１、ｎ＋２と書き表す。
【０１５８】
次に、ｎ、ｎ＋１、ｎ＋２の３個のイベントに関してｎの再生終了時刻からｎ＋２の開始時刻までの時間がＬ（１クラスタの読み出し時間）よりも短いか否かを、再生開始時刻Ｏｎ（ｎ＋２）と再生終了時刻Ｏｆｆ（ｎ）との差と、Ｌとを比べることによって判別する（ステップＳ２５０８）。
【０１５９】
ステップＳ２５０８において、ｎ、ｎ＋１、ｎ＋２の３個のイベントに関してｎの再生終了時刻からｎ＋２の開始時刻までの時間がＬ（１クラスタの読み出し時間）よりも短いと判別された場合には、ｎ、ｎ＋１、ｎ＋２の３個のイベントに関してｎの再生終了時刻からｎ＋２の開始時刻までの時間がＬ（１クラスタの読み出し時間）よりも短いため、当該３個のイベントのうち後ろの２個のイベントに対応するフレーズの再生開始位置の設定によっては再生に支障を来す場合があるので（図２０参照）、画面表示器４０に「Ｉｎｔｅｒｖａｌ  Ｉｓ  ＴｏｏＮａｒｒｏｗ！」という文字列を表示して警告表示を行い（ステップＳ２５１０）、それからステップＳ２５１２以降のｎ、ｎ＋１、ｎ＋２の３個のうちの一部をまとめる変換処理へと進む。
【０１６０】
一方、ステップＳ２５０８において、ｎ、ｎ＋１、ｎ＋２の３個のイベントに関してｎの再生終了時刻からｎ＋２の開始時刻までの時間がＬ（１クラスタの読み出し時間）よりも長いと判別された場合には、ｎ、ｎ＋１、ｎ＋２の３個のイベントに関してｎの再生終了時刻からｎ＋２の開始時刻までの時間がＬ（１クラスタの読み出し時間）よりも長いため、当該３個のイベントのうち後ろの２個のイベントに対応するフレーズの再生開始位置がどのような設定であっても再生に支障を来す恐れがないので、そのままステップＳ２５２０へ進む。
【０１６１】
ステップＳ２５１２においては、ｎ、ｎ＋１、ｎ＋２の３個のイベントをひとまとめにする際に、ｎとｎ＋１とでひとまとめにするのとｎ＋１とｎ＋２とでひとまとめにするのとで、どちらがひとまとめにされた後の新に生成されるフレーズとしての長さが短く（即ち、データ量が少なく）て済むかを判別する（ステップＳ２５１２）。具体的は、ｎとｎ＋１とをひとまとめにした場合の長さは「Ｏｆｆ（ｎ＋１）−Ｏｎ（ｎ）」であり、ｎ＋１とｎ＋２とをひとまとめにした場合の長さは「Ｏｆｆ（ｎ＋２）−Ｏｎ（ｎ＋１）」であるので、これらを比べることによりどちらが新に生成されるフレーズの長さが短く（データ量が少なく）て済むかを判別することができる。
【０１６２】
ステップＳ２５１２において、「Ｏｆｆ（ｎ＋１）−Ｏｎ（ｎ）」の方が「Ｏｆｆ（ｎ＋２）−Ｏｎ（ｎ＋１）」よりも短い、即ち、ｎとｎ＋１とをひとまとめにした方がデータ量が少なくなると判別された場合には、ｎとｎ＋１とをまとめて１フレーズにする変換処理を行う（ステップＳ２５１４）。なお、ｎとｎ＋１とをまとめて１フレーズにする変換処理に関しては、このＰＬＡＹリストチェック処理ルーチンのサブルーチンとして図２６を参照しながら説明する。
【０１６３】
一方、ステップＳ２５１２において、「Ｏｆｆ（ｎ＋２）−Ｏｎ（ｎ＋１）」は「Ｏｆｆ（ｎ＋１）−Ｏｎ（ｎ）」以下である、即ち、ｎ＋１とｎ＋２とをひとまとめにした方がデータ量が少なくなると判別された場合には、ｎ＋１とｎ＋２とをまとめて１フレーズにする変換処理を行う（ステップＳ２５１６）。なお、ｎ＋１とｎ＋２とをまとめて１フレーズにする変換処理に関しては、このＰＬＡＹリストチェック処理ルーチンのサブルーチンとして図２７を参照しながら説明する。
【０１６４】
そして、ステップＳ２５１４あるいはステップＳ２５１６の処理を終了すると、ステップＳ２５１８へ進む。
【０１６５】
ステップＳ２５１８においては、Ｅ（ｎ）に１をセットしてイベントｎを消去予定イベントとして登録し、フレーズ番号ｍｆを使用済みと見なしてｍｆを１インクリメントし、ステップＳ２５２０へ進む。
【０１６６】
ステップＳ２５２０においては、ｎが録音終了イベントであるかを判別し、ｎが録音終了イベントでないと判別された場合には、ｎを１インクリメントし（ステップＳ２５２２）、それからステップＳ２５０８へ戻って、次の隣接する３個のイベントに対する処理を行う。
【０１６７】
一方、ステップＳ２５２０において、ｎが録音終了イベントであると判別された場合には、全ての隣接する３個のイベントに対しての判別の処理（ステップＳ２５０８、ステップＳ２５１２）が終わったものであるので、消去予定イベントとして登録されたイベントを消去し、それから残ったイベントを前に詰め（ステップＳ２５２４）、このＰＬＡＹリストチェック処理ルーチンの処理を終了する。
【０１６８】
なお、ｎが録音終了イベントでなくても、ｎ＋２以後のイベントがイベントリストに存在しないことを判別してもよいし、それら積を取って判別してもよい。
次に、図２６に示すｎとｎ＋１とをまとめて１フレーズにする変換処理ルーチンのフローチャートを参照しながら、ステップＳ２５１４におけるｎとｎ＋１とをまとめて１フレーズにする変換処理を説明する。
【０１６９】
この変換処理においては、まず、ＰＬＡＹリストを参照して、フレーズｍｆ番にイベントｎで指示されたフレーズの開始位置から該イベントｎの終了位置情報（Ｏｆｆ（ｎ））で示される該フレーズの終了位置までのデータをコピーし（ステップＳ２６０２）、フレーズｍｆ番にイベントｎで指示されたフレーズの終了位置の時刻からイベントｎ＋１で指示されたイベントの開始位置情報で示される時刻までの無音データ（長さは「Ｏｎ（ｎ＋１）−Ｏｆｆ（ｎ）」となる。）を書き込み（ステップＳ２６０４）、フレーズｍｆ番にイベントｎ＋１で指示されたフレーズの開始位置から該イベントｎの終了位置情報（Ｏｆｆ（ｎ））で示される該フレーズの終了位置までのデータをコピーする（ステップＳ２６０６）。これにより、フレーズｍｆ番には、イベントｎのデータとイベントｎ＋１のデータとをまとめて１フレーズとしたデータが書き込まれることになる。
【０１７０】
次に、イベントｎ＋１番の開始時刻情報へＰＬＡＹリストのイベントｎ番の開始時刻情報をコピーし（ステップＳ２６０８）、イベントｎ＋１番のＳｔへ０を書き込み（ステップＳ２６１０）、イベントｎ＋１番のフレーズ番号へフレーズｍｆを書き込んで（ステップＳ２６１２）、この変換処理を終了する。
【０１７１】
従って、この変換処理においては、イベントｎの示すフレーズのデータとイベントｎ＋１の示すフレーズのデータが１フレーズのデータに変換されてフレーズｍｆ番とされ、このフレーズｍｆ番のデータがイベントｎ＋１のデータとして記憶されることになる。フレーズｍｆ番は、１〜１６のフレーズと同様に、ディスク１２に記憶される。
【０１７２】
なお、ｎ、ｎ＋１、ｎ＋２のうちでｎとｎ＋１とをまとめてｎ＋１とし、ｎを空きイベントとするのは、それ以後のｎ＋３のイベントがｎ＋１やｎ＋２のイベントと隣接していた場合に、ｎをインクリメント（ｎ＝ｎ＋１）した後において、ステップＳ２５０８の判別を行うことを可能にするためである。
【０１７３】
次に、図２７に示すｎ＋１とｎ＋２とをまとめて１フレーズにする変換処理ルーチンのフローチャートを参照しながら、ステップＳ２５１６におけるｎ＋１とｎ＋２とをまとめて１フレーズにする変換処理を説明する。
【０１７４】
この変換処理においては、まず、ＰＬＡＹリストを参照して、フレーズｍｆ番にイベントｎ＋１で指示されたフレーズの開始位置から該イベントｎ＋１の終了位置情報（Ｏｆｆ（ｎ＋１））で示される該フレーズの終了位置までのデータをコピーし（ステップＳ２７０２）、フレーズｍｆ番にイベントｎ＋１で指示されたフレーズの終了位置の時刻からイベントｎ＋２で指示されたフレーズの開始位置の時刻までの無音データ（長さは「Ｏｎ（ｎ＋２）−Ｏｆｆ（ｎ＋１）」となる。）を書き込み（ステップＳ２７０４）、フレーズｍｆ番にイベントｎ＋２で指示されたフレーズの開始位置から該イベントｎ＋２の終了位置情報（Ｏｆｆ（ｎ＋２））で示される該フレーズの終了位置までのデータをコピーする（ステップＳ２７０６）。これにより、フレーズｍｆ番には、イベントｎ＋１のデータとイベントｎ＋２のデータとをまとめて１フレーズとしたデータが書き込まれることになる。
【０１７５】
次に、イベントｎ＋２番の開始時刻情報へＰＬＡＹリストのイベントｎ＋１番の開始時刻情報をコピーし（ステップＳ２７０８）、イベントｎ＋２番のＳｔへ０を書き込み（ステップＳ２７１０）、イベントｎ＋２番のフレーズ番号へフレーズｍｆを書き込み（ステップＳ２７１２）、ＰＬＡＹリストのイベントｎ番をイベントｎ＋１番に移動して（ステップＳ２７１４）、この変換処理を終了する。
【０１７６】
従って、この変換処理においては、イベントｎ＋１の示すフレーズのデータとイベントｎ＋２の示すフレーズのデータが１フレーズのデータに変換されてフレーズｍｆ番とされ、このフレーズｍｆ番のデータがイベントｎ＋２のデータとして記憶されることになる。
【０１７７】
なお、ｎ、ｎ＋１、ｎ＋２のうちでｎ＋１とｎ＋２とをまとめてｎ＋２とし、ｎをｎ＋１に移動してｎを空きイベントとするのは、それ以後のｎ＋３のイベントがｎ＋１やｎ＋２のイベントと隣接していた場合に、ｎをインクリメント（ｎ＝ｎ＋１）した後において、ステップＳ２５０８の判別を行うことを可能にするためである。
【０１７８】
上記した図２６ならびに図２７に示す処理により、イベントデータは３個数以上フレーズが期間Ｌで隣接してしないものとなる。
【０１７９】
なお、図２８には、図２６に示す変換処理によりイベントｎとイベントｎ＋１とをまとめて１フレーズに変換する動作の時間的配置を概念的に示した説明図が示されており、図２９には、図２７に示す変換処理によりイベントｎ＋１とイベントｎ＋２とをまとめて１フレーズに変換する動作の時間的配置を概念的に示した説明図が示されている。
【０１８０】
また、図３０には、イベントｎ、イベントｎ＋１、イベントｎ＋２およびイベントｎ＋３の４つのフレーズを、イベントｎ＋２およびイベントｎ＋３の２つのフレーズに変換する動作の時間的配置を概念的に示した説明図が示されている。即ち、ｎをインクリメントして上記した処理を続ける事により、ある特定の時間（１クラスタの読み出し時間）に４つのフレーズが隣接して存在する場合でも、２個のフレーズを１個にまとめる変換を２度繰り返すことにより、４個のフレーズを２個にまとめる変換を行うことができる。図３０に示す例は、イベントｎがイベントｎ＋３に対して長い場合を示しているが、イベントの長さに応じていずれのイベントがまとめられる変換が行われるか変化するが、４個のフレーズを２個にまとめる変換が行われることには変わりがない。
【０１８１】
さらに、図３１には、ｍ＋１個のフレーズを２個のフレーズに変換する動作の時間的配置を概念的に示した説明図が示されている。
【０１８２】
即ち、ｎをインクリメントし続け、ある特定の時間（１クラスタの読み出し時間）に複数個（ｍ＋１個）のフレーズが隣接して存在する場合には上記した変換処理を複数回（ｍ−１回）繰り返すことにより、ｍ＋１個のイベントを２個にまとめる変換を行うことができる。ｍ＋１個のイベントを２個にまとめる変換がいずれのイベントにわたって行われるかは、イベントの長さに応じて変化する。
が、４個のフレーズを２個にまとめる変換が行われることには変わりがない。
【０１８３】
なお、図３２には、簡単なテンポマップの例が示されており、図３３には、図３２に示すテンポマップのＴＭＡＰ１区間での音楽的時間と物理的時間との変換例を示している。
【０１８４】
また、ステップＳ２５０８において、特定の時間Ｌ（１クラスタの読み出し時間）と比較を行う際の対象は、イベントｎ、イベントｎ＋１、イベントｎ＋２の３つのフレーズがある場合には、「Ｏｎ（ｎ＋２）−Ｏｎ（ｎ）」（図３４参照）としてもよいし、「Ｏｆｆ（ｎ＋２）−Ｏｆｆ（ｎ）」（図３５参照）としてもよい。
【０１８５】
なお、波形データを読み出す際においては、図２６あるいは図２７に示す変換処理によって変換された波形読み出し制御データに従って読み出し、図２６あるいは図２７に示す変換処理と同様の処理により、複数の波形データを当該複数の波形データよりも少ない数の波形データに変換すればよい。
【０１８６】
なお、上記した実施の形態は、以下に示すように変形してもよい。
【０１８７】
（１）上記した実施の形態においては、フレーズを指定するパッド２２を操作することによりＰＬＡＹリストを作成し、該作成されたＰＬＡＹリストの中の任意の３個の連続するイベントが所定の時間間隔内に隣接して存在することを検知したときに、複数のイベントをまとめるとともに複数のイベントに応じたフレーズをまとめる処理を自動的に行ったが、任意の３個の連続するイベントが所定の時間間隔内に隣接して存在することを検知したときに画面表示器４０に再生の際に支障が生じる旨の警告を表示するとともに、画面表示器４０に複数のイベントをまとめるとともに複数のイベントに応じたフレーズをまめる処理を行なうか否かを使用者に問う表示を行い、使用者に（Ｙｅｓ／Ｎｏ）の指示入力を促し、（Ｙｅｓ）の指示に応じて、検出された複数のイベントをまとめるとともに複数のイベントに応じたフレーズをまとめる処理を行ってもよい。
【０１８８】
（２）上記した実施の形態においては、３個のフレーズ（ｎ、ｎ＋ｌ、ｎ＋２）が隣接して存在することを検知するために、「Ｏｎ（ｎ＋２）−Ｏｆｆ（ｎ）」を用いて判定したが、（Ｏｎ（ｎ＋２）−ｏｎ（ｎ＋１））≦（Ｏｎ（ｎ＋２）−Ｏｆｆ（ｎ））であるので、便宜的に（Ｏｎ（ｎ＋２）−ｏｎ（ｎ＋１））を使用してステップＳ２５０８における判別を行ってもよい。この場合には、フレーズの発音開始時刻のみで判断が行えるため、ＣＰＵ１０の負担が大幅に軽減され処理が楽になる。
【０１８９】
なお、この場合においては、「ある特定の時間にある個数以上フレーズが隣接している」状態とは、次の状態を考えるものとする。
【０１９０】
上記した実施の形態では、３個のフレーズ（ｎ、ｎ＋ｌ、ｎ＋２）が隣接して存在することを検知した場合に、３個のフレーズのうちからひとまとめにまとめる２個のフレーズ（「ｎ、ｎ＋１」あるいは「ｎ＋ｌ、ｎ＋２」）を選択する際に、まとめる２個はデータのサイズが小さくなる方が自動的に選択されるようにしたが、どちらか一方に固定するようにしてもよい。特に、「ｎ＋ｌ、ｎ＋２」に固定した場合には、
（Ｏｎ（ｎ＋２）−Ｏｎ（ｎ＋１））＜（Ｏｎ（ｎ＋２）−Ｏｆｆ（ｎ））＜「１クラスタの読み出し時間」
であるから、後から再生のテンポを変更した場合に、ひとまとめとされたフレーズのまとめる以前に後ろにあったイベントに対応するフレーズの発音タイミングのずれが小さくなる方が優先的に選択されるので、聴覚上無視できる程度となる。
【０１９１】
また、３個以上のフレーズの場合には、
（Ｏｎ（ｎ＋ｍ）−Ｏｎ（ｎ＋１））＜（Ｏｎ（ｎ＋ｍ）−Ｏｆｆ（ｎ））＜「１クラスタの読み出し時間」
となり、まとめられたフレーズの再生開始時刻は「１クラスタの読み出し時間」の中に収まることになるので、これは後から再生のテンポを変更した場合はｎ＋１からｎ＋ｍまでをひとまとめにした方が聴覚上の発音タイミングのずれが無視できる程度になる。
【０１９２】
（３）上記した実施の形態においては、３個のフレーズ（ｎ、ｎ＋ｌ、ｎ＋２）が隣接して存在することを検知した場合には、３個のフレーズのうちから２個のフレーズのみをひとまとめにしたが、３個のフレーズ全てをまとめてもよいし、また、シーケンス録音開始から終了までに記憶されたイベント全てに対応するフレーズをまとめてもよい。
【０１９３】
また、ＰＬＡＹリストの記憶後に再生テンポを変更した場合には、ＰＬＡＹリストの各イベントが再生されるタイミングが変更されることとなるが、フレーズそのものの再生速度は変更されないため、フレーズが時間間隔をおいた複数の楽器音から構成されている場合には、テンポを変更しても各楽器音の時間間隔は変更されずに再生されるため不自然な楽音となる。この場合には、変更後のテンポに応じてフレーズに対してタイムストレッチ処理（時間軸圧縮／伸長）を施し、変更後のテンポに合うよう、フレーズそのものの長さを変更するとよい。全てのフレーズをひとつにまとめる場合には、そのフレーズは時間間隔をおいた複数の楽器音から構成されるものとなるため、そのまとめられたフレーズの長さが変更後のテンポに合うようにタイムストレッチ処理を施すとよい。ひとつにまとめない場合は、時間間隔をおいた複数の楽器音から構成される各フレーズに対してそのフレーズの長さが変更後のテンポに合うようにタイムストレッチ処理を施す。
（４）上記した実施の形態においては、４クラスタのＰＬＡＹバッファを持ち、ある特定の時間（１クラスタの読み出し時間）に３個のフレーズ（ｎ、ｎ＋ｌ、ｎ＋２）が隣接して存在することを検知した場合に、２個のフレーズ「ｎ、ｎ＋１」または「ｎ＋ｌ、ｎ＋２」を１個にまとめる変換を行った。しかしながら、６クラスタのＰＬＡＹバッファを持つ場合においては、３フレーズが隣接した場合であっても何らの問題も無く再生することができる。
【０１９４】
ところが、６クラスタのＰＬＡＹバッファを持つ場合においても、４フレーズが図３６に示すように短時間の間に隣接している場合には、再生に支障を来す恐れがある。従って、図３６に示すような場合、即ち、ある特定の時間（１クラスタの読み出し時間）に４個のフレーズ（ｎ、ｎ＋ｌ、ｎ＋２、ｎ＋３）が隣接して存在する場合には、「Ｏｎ（ｎ＋３）−Ｏｆｆ（ｎ）」を判定し、２個のフレーズ「ｎ＋ｌ、ｎ＋２」を１個にまとめる変換を行ってもよい。
【０１９５】
即ち、
（Ｏｆｆ（ｎ＋２）−Ｏｎ（ｎ＋１））＜（Ｏｎ（ｎ＋３）−Ｏｆｆ（ｎ））＜「１クラスタの読み出し時間」
となり、この場合、変換されるフレーズのサイズは１クラスタの読み出し時間以下になるため、ディスクの総録音時間に対して十分小さいものとなる。また、これは後から再生のテンポを変更した場合において、聴覚上の発音タイミングのずれが無視できる程度となることを意味している。
【０１９６】
即ち、ある特定の時間（１クラスタの読み出し時間）にｍ＋１個のフレーズが隣接して存在する場合には、上記した変換処理をｍ−２回繰り返すことにより、ｍ＋１個のフレーズを３個にまとめ変換処理が行われることになる。つまり、
（Ｏｆｆ（ｎ＋ｍ−１）−Ｏｎ（ｎ＋１）＜（Ｏｎ（ｎ＋ｍ）−Ｏｆｆ（ｎ）＜「１クラスタの読み出し時間」
となる。従って、フレーズをひとまとめにしなかった場合には再生し難いような場合においても、上記した変換処理により生成されるフレーズのサイズは１クラスタの読み出し時間以下になるため、ディスクの総録音時間に対して十分小さいフレーズを用意することができ、確実な再生がを行うことが可能となる。また、これは後から再生のテンポを変更した場合において、聴覚上の発音タイミングのずれが無視できる程度となることを意味している。
【０１９７】
また、ＰＬＡＹバッファとして６個のクラスタを備える場合には、２個のフレーズ「ｎ＋ｌ、ｎ＋２」を１個にまとめるか否かの判別を行う際に、上記した説明によると「Ｏｎ（ｎ＋３）−Ｏｆｆ（ｎ）」を判別の対象として用いるようにしたが、
（Ｏｎ（ｎ＋３）−Ｏｎ（ｎ＋１））＜（Ｏｎ（ｎ＋３）−Ｏｆｆ（ｎ））
であるので、便宜的に「Ｏｎ（ｎ＋３）−Ｏｎ（ｎ＋１）」を使用して２個のフレーズ「ｎ＋ｌ、ｎ＋２」を１個にまとめるか否かの判別を行ってもよい。この場合、フレーズの発音開始時刻のみで判断が行えるため、ＣＰＵ１０の負担が大幅に軽減され処理が楽になる。また、変換処理により生成されるフレーズのサイズは１クラスタの読み出し時間以下になるため、ディスクの総録音時間に対して十分小さいものとなり問題とならない。
【０１９８】
なお、上記した点を一般化すると、複数のフレーズをまとめるか否かの判別を行う際には、Ｎ個（Ｎは自然数）のクラスタのＰＬＡＹバッファを持つ場合において、ｎイベントの終了時間と「ｎ＋ＩＮＴ（（Ｎ＋１）／２）」イベント開始時間と判別の対象とすることができる。なお、ＩＮＴ（（Ｎ＋１）／２）は、（Ｎ＋１）／２の整数部分を示す。
【０１９９】
（５）図３７には、フレーズの開始位置がクラスタの先頭と一致している場合の例を示している。ところで、上記した実施の形態においては、フレーズの開始位置を使用者が設定できるために、「１クラスタの読み出し時間」よりも短いフレーズを扱うのに２クラスタを必要とする場合がある。しかしながら、フレーズの開始位置がクラスタの先頭に固定される場合、フレーズの開始位置クラスタの先頭に変更した場合、あるいはフレーズの開始位置がクラスタの先頭になるようにフレーズのデータ全体を先頭方向に書き換える場合には、「１クラスタの読み出し時間」よりも短いフレーズを扱うのに１クラスタを用いればよいので、ＰＬＡＹバッファに４クラスタを備える場合において３フレーズが隣接したときには、全く問題無く再生することができる。ここで、４フレーズが隣接した場合まとめる処理を行うのは、「Ｏｎ（ｎ＋３）−Ｏｆｆ（ｎ）」を用いて判別するようにすればよい。
【０２００】
また、ＰＬＡＹバッファが一般にＮ個（Ｎは自然数）のクラスタ備える場合においては、Ｎ−１個のフレーズが隣接したときに問題無く再生することができるが、Ｎ個フレーズが隣接したときには、「Ｏｎ（ｎ＋（Ｎ−１））−Ｏｆｆ（ｎ）を用いて判別するようにすればよい。
【０２０１】
（６）上記した実施の形態においては、パッド２２を操作することにより作成されたＰＬＡＹリストに対して、複数のイベントをまとめるとともに複数のイベントに応じたフレーズをまとめる処理を行ったが、外部の他の機器より通信手段を介して供給されたＰＬＡＹリストや、あるいは外部の他の機器により作成記憶され記憶媒体を介して供給されたＰＬＡＹリストに対して、複数のイベントをまとめるとともに複数のイベントに応じたフレーズをまとめる処理を行なってもよい。また、外部からＰＬＡＹリストが供給されると同時に、該処理を自動的に行ってもよいし、所定の操作子の操作などによる使用者の指示により該処理を選択的に行わせるようにしてもよい。
【０２０２】
【発明の効果】
本発明は、以上説明したように構成されているので、複数の波形読み出し制御データを所定の短時間の間に出力することが許容されるとともに、当該所定の短時間の間に複数の波形読み出し制御データを出力する際に、使用者にその旨が知らされるようになるという優れた効果を奏する。
【０２０３】
また、  本発明は、以上説明したように構成されているので、複数の波形読み出し制御データを所定の短時間の間に出力することが許容されるとともに、当該所定の短時間の間に複数の波形読み出し制御データを出力する際に、当該出力される複数の波形読み出し制御データに基づいて波形データの読み出し処理が行われることになり、楽音信号の生成が行われなくなる恐れを排除することができるという優れた効果を奏する。
【図面の簡単な説明】
【図１】本発明による波形読み出し制御データ処理装置を備えた電子楽器の全体構成を表すブロック構成図である。
【図２】ディスクに記憶されているフレーズと称される波形データのフォーマットを概念的に示す説明図である。
【図３】半導体メモリに記憶されているＰＬＡＹリストのフォーマットを概念的に示す説明図である。
【図４】半導体メモリに記憶されているＰＬＡＹバッファのデータ転送時における概念図である。
【図５】半導体メモリに記憶されているＰＬＡＹバッファのデータ再生時における概念図である。
【図６】時刻変更イベント処理ルーチンのフローチャートである。
【図７】開始クラスタ処理ルーチンのフローチャートである。
【図８】再生開始イベント処理ルーチンのフローチャートである。
【図９】再生停止イベント処理ルーチンのフローチャートである。
【図１０】Ｃｐｌａｙ発音イベント処理ルーチンのフローチャートである。
【図１１】Ｋｐｌａｙクラスタ再生終了イベント処理ルーチンのフローチャートである。
【図１２】再生ＰＬＡＹクラスタ移動処理ルーチンのフローチャートである。
【図１３】Ｑｐｌａｙ＝０イベント処理ルーチンのフローチャートである。
【図１４】Ｋｐｌａｙクラスタ読み込む要求イベント処理ルーチンのフローチャートである。
【図１５】リアルタイム２フレームイベント処理ルーチンのフローチャートである。
【図１６】リアルタイムクォーターフレームイベント処理ルーチンのフローチャートである。
【図１７】バッファＢ（Ｃ）のデータ形式を概念的に示す説明図である。
【図１８】図３に示すＰＬＡＹリストのイベント番号６、イベント番号７およびイベント番号８の音楽的時間に関する説明図である。
【図１９】ＰＬＡＹバッファが４クラスタの場合における再生の例を示す説明図である。
【図２０】図１９を再生の開始／終了の実際の時間にそった図（横軸が時間のずれを示す。）に書き換えた説明図である。
【図２１】シーケンス録音開始イベント処理ルーチンのフローチャートである。
【図２２】シーケンス録音終了イベント処理ルーチンのフローチャートである。
【図２３】パッドのＯＮイベント処理ルーチンのフローチャートである。
【図２４】パッドのＯＦＦイベント処理ルーチンのフローチャートである。
【図２５】ＰＬＡＹリストチェック処理ルーチンのフローチャートである。
【図２６】ｎとｎ＋１とをまとめて１フレーズにする変換処理ルーチンのフローチャートである。
【図２７】ｎ＋１とｎ＋２をまとめて１フレーズにする変換処理ルーチンのフローチャートである。
【図２８】図２６に示す変換処理によりイベントｎとイベントｎ＋１とをまとめて１フレーズに変換する動作の時間的配置を概念的に示す説明図である。
【図２９】図２７に示す変換処理によりイベントｎ＋１とイベントｎ＋２とをまとめて１フレーズに変換する動作の時間的配置を概念的に示す説明図である。
【図３０】イベントｎ、イベントｎ＋１、イベントｎ＋２およびイベントｎ＋３の４つのフレーズを、イベントｎ＋２およびイベントｎ＋３の２つのフレーズに変換する動作の時間的配置を概念的に示す説明図である。
【図３１】ｍ＋１個のフレーズを２個のフレーズに変換する動作の時間的配置を概念的に示す説明図である。
【図３２】テンポマップの一例を示す説明図である。
【図３３】図３２に示すテンポマップのＴＭＡＰ１区間での音楽的時間と物理的時間との変換マップの作成例を示しす説明図である。
【図３４】イベントｎ、イベントｎ＋１、イベントｎ＋２およびイベントｎ＋３の４つのフレーズがある場合において、特定の時間Ｌ（１クラスタの読み出し時間）と比較を行う際の対象が「Ｏｎ（ｎ＋３）−Ｏｎ（ｎ＋１）」である場合を示す説明図である。
【図３５】イベントｎ、イベントｎ＋１、イベントｎ＋２およびイベントｎ＋３の４つのフレーズがある場合において、特定の時間Ｌ（１クラスタの読み出し時間）と比較を行う際の対象が「Ｏｆｆ（ｎ＋２）−Ｏｆｆ（ｎ）」である場合を示す説明図である。
【図３６】４フレーズが隣接している場合の例を示す、図１９に対応する説明図である。
【図３７】フレーズの開始位置が必ずクラスタと一致している場合の例を示す、図１９に対応する説明図である。
【符号の説明】
１０          中央処理装置（ＣＰＵ）
１２          ディスク
１４          半導体メモリ
１６          再生器
２８          操作パネル
２０          デジタル／アナログ変換器（Ｄ／Ａ）
２２          パッド
２４          開始位置指定操作子
２６          プラス（＋）操作子
２８          マイナス（−）操作子
３０          記憶（Ｒｅｃ）操作子
３２          再生（Ｐｌａｙ）操作子
３４          停止（Ｓｔｏｐ）操作子
３６          進め（ＦＦ）操作子
３８          戻し（ＲＥＷ）操作子
４０          画面表示器
【図１】
0004094114.tif 000002
【図２】
0004094114.tif 000003
【図３】
0004094114.tif 000004
【図４】
0004094114.tif 000005
【図５】
0004094114.tif 000006
【図６】
0004094114.tif 000007
【図７】
0004094114.tif 000008
【図８】
0004094114.tif 000009
【図９】
0004094114.tif 000010
【図１０】
0004094114.tif 000011
【図１１】
0004094114.tif 000012
【図１２】
0004094114.tif 000013
【図１３】
0004094114.tif 000014
【図１４】
0004094114.tif 000015
【図１５】
0004094114.tif 000016
【図１６】
0004094114.tif 000017
【図１７】
0004094114.tif 000018
【図１８】
0004094114.tif 000019
【図１９】
0004094114.tif 000020
【図２０】
0004094114.tif 000021
【図２１】
0004094114.tif 000022
【図２２】
0004094114.tif 000023
【図２３】
0004094114.tif 000024
【図２４】
0004094114.tif 000025
【図２５】
0004094114.tif 000026
【図２６】
0004094114.tif 000027
【図２７】
0004094114.tif 000028
【図２８】
0004094114.tif 000029
【図２９】
0004094114.tif 000030
【図３０】
0004094114.tif 000031
【図３１】
0004094114.tif 000032
【図３２】
0004094114.tif 000033
【図３３】
0004094114.tif 000034
【図３４】
0004094114.tif 000035
【図３５】
0004094114.tif 000036
【図３６】
0004094114.tif 000037
【図３７】
0004094114.tif 000038