(57)【特許請求の範囲】
【請求項１】
楽音情報を記億し、又記憶された楽音情報を読み出すことにより、楽音を録音再生する録音再生装置において、
楽音情報を順次入力する楽音情報入力手段と、
前記楽音情報入力手段により入力された楽音情報を記憶する楽音情報記憶手段と、
時間軸上にループ区間を指定するループ区間指定手段と、
前記ループ区間指定手段によりループ区間が指定されている場合に現在時刻がループ区間の終点に達したことを検出する終点検出手段とを備え、
前記楽音情報記憶手段は前記ループ区間に対し連続して繰り返し記憶するものであり、
楽音情報記憶手段が、前記終点検出手段によりループ区間の終点が検出される前に入力された楽音情報と、該終点が検出された後に入力された楽音情報とを、該ループ区間に関する相互に独立した楽音情報として記憶するものであることを特徴とする録音再生装置。
【請求項２】
前記ループ区間指定手段により指定されたループ区間の情報を記憶するループ区間情報記憶手段と、
前記ループ区間情報記億手段に記憶された情報に基づいて、前記楽音情報記憶手段に記憶された楽音情報のうち、同じループ区間に関する楽音情報に関して、再生する楽音情報を選択する選択手段と、
前記楽音情報記憶手段に記憶された楽音情報を時間軸に従って再生する場合に、ループ区間については前記選択手段によって選択された楽音情報を再生する楽音情報再生手段と
をさらに備えたことを特徴とする請求項１記載の録音再生装置。
【請求項３】
文字または図形で楽音情報を画面上に表示可能な表示手段と、
前記ループ区間情報記憶手段に記憶したループ区間情報に基づいて、楽音情報を時間軸上に配置して前記表示手段に表示するとともに、同じループ区間に関する楽音情報を時間軸方向とは直交する位置に表示して、前記選択手段により選択された楽音情報の表示態様を選択されていない楽音情報の表示態様と異ならせて表示する表示制御手段とを備えることを特徴とする請求項２項記載の録音再生装置。
【請求項４】
前記ループ区間指定手段により所定のループ区間が指定されて楽音情報を記憶している途中で該ループ区間の指定の解除を指示するループ区間解除指示手段をさらに備え、
一つの操作子が、前記ループ区間指定手段と前記ループ区間解除指示手段とを兼ねていることを特徴とする請求項１から３のうちいずれか１項記載の録音再生装置。
【請求項５】
前記楽音情報記憶手段は、前記楽音情報入力手段により入力された楽音情報を、該楽音情報が入力された、前記時間軸上のタイミングを表すタイミング情報を付して記憶するものであって、
前記楽音情報入力手段により入力される楽音情報に付されるタイミング情報を時間の進行に伴って更新するとともに、前記ループ区間指定手段によりループ区間が指定されている場合は、前記終点検出手段が該ループ区間の終点に達したことに起因して該楽音情報に付されるタイミング情報をループ区間の始点のタイミングに更新するタイミング情報更新手段を備えることを特徴とする請求項１から４のうちいずれか１項記載の録音再生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音情報を記憶しておき記憶された楽音情報を読み出して楽音を再生する録音再生装置に関する。
【０００２】
【従来の技術】
従来より、曲の区間を指定し、指定された区間を繰り返し演奏することにより生成される演奏データを録音するリアルタイムループレコーディング方法を有する自動演奏装置が知られている。このリアルタイムループレコーディング方法には、大別して２種類の方式がある。第１の方式は、前回の演奏により録音された演奏データに、今回の演奏による演奏データを重ねて録音するというオーバーダビング方式である。この第１の方式は、例えばドラムパターン（ドラムパートの演奏データ）を作成するのに適しており、例えば先ずバスドラのパターンを入力し、次にハイハットのパターンをそのバスドラのパターンに重ねて入力するという具合に、次々に演奏データを重ね合わせて録音することによりドラムパターンを容易に作成することができる。
【０００３】
第２の方式は、今回の演奏による演奏データの録音にあたり、前回の演奏により既に録音されている演奏データをキャンセルして、今回の演奏による演奏データだけを録音するという上書き録音方式である。この第２の方式は、例えばあるフレーズの演奏データを録音する際に、演奏者が所望の演奏データを得られるまでそのフレーズの演奏データを繰り返し録音するのに適している。
【０００４】
【発明が解決しようとする課題】
しかし、第１の方式であるオーバーダビング方式では、指定された区間の繰り返し演奏にあたり、次々と演奏データを重ねて録音するものであるため、例えば前回の演奏により録音したバスドラのパターンが演奏者にとって所望のパターンでなく、このためこのバスドラのパターンを別のバスドラのパターンに変更したいという場合、録音状態を解除して前回の演奏により録音したバスドラのパターンを消去し、もう一度録音状態にして別のバスドラのパターンを録音するといった手間が必要である。この手間は、演奏者が所望の演奏データを得られるまで繰り返す必要がある。
【０００５】
また、第２の方式である上書き録音方式では、前回の演奏による演奏データが所望の演奏データであってもその演奏データはキャンセルされているため、その前回の演奏による演奏データを再度録音するといった手間が必要である。
本発明は、上記事情に鑑み、楽音情報を記憶しておき記憶された楽音情報を読み出して楽音を再生するにあたり、所望の楽音情報が容易に得られる録音再生装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成する本発明の録音再生装置は、楽音情報を記億し、又記憶された楽音情報を読み出すことにより、楽音を録音再生する録音再生装置において、
楽音情報を順次入力する楽音情報入力手段と、
前記楽音情報入力手段により入力された楽音情報を記憶する楽音情報記憶手段と、
時間軸上にループ区間を指定するループ区間指定手段と、
前記ループ区間指定手段によりループ区間が指定されている場合に現在時刻がループ区間の終点に達したことを検出する終点検出手段とを備え、
前記楽音情報記憶手段は前記ループ区間に対し連続して繰り返し記憶するものであり、
楽音情報記憶手段が、前記終点検出手段によりループ区間の終点が検出される前に入力された楽音情報と、該終点が検出された後に入力された楽音情報とを、該ループ区間に関する相互に独立した楽音情報として記憶するものであることを特徴とする。
ここで、本発明の録音再生装置は、
前記ループ区間指定手段により指定されたループ区間の情報を記憶するループ区間情報記憶手段と、
前記ループ区間情報記億手段に記憶された情報に基づいて、前記楽音情報記憶手段に記憶された楽音情報のうち、同じループ区間に関する楽音情報に関して、再生する楽音情報を選択する選択手段と、
前記楽音情報記憶手段に記憶された楽音情報を時間軸に従って再生する場合に、ループ区間については前記選択手段によって選択された楽音情報を再生する楽音情報再生手段と
をさらに備えることが好ましい。
この場合に、さらに、
文字または図形で楽音情報を画面上に表示可能な表示手段と、
前記ループ区間情報記憶手段に記憶したループ区間情報に基づいて、楽音情報を時間軸上に配置して前記表示手段に表示するとともに、同じループ区間に関する楽音情報を時間軸方向とは直交する位置に表示して、前記選択手段により選択された楽音情報の表示態様を選択されていない楽音情報の表示態様と異ならせて表示する表示制御手段とを備えることがさらに好ましい。
また、本発明の録音再生装置における、上記のいずれの態様においても、前記ループ区間指定手段により所定のループ区間が指定されて楽音情報を記憶している途中で該ループ区間の指定の解除を指示するループ区間解除指示手段をさらに備え、一つの操作子が、前記ループ区間指定手段と前記ループ区間解除指示手段とを兼ねていることが好ましい。
さらに、本発明の録音再生装置における、上記いずれかの態様においても、前記楽音情報記憶手段は、前記楽音情報入力手段により入力された楽音情報を、該楽音情報が入力された、前記時間軸上のタイミングを表すタイミング情報を付して記憶するものであって、
前記楽音情報入力手段により入力される楽音情報に付されるタイミング情報を時間の進行に伴って更新するとともに、前記ループ区間指定手段によりループ区間が指定されている場合は、前記終点検出手段が該ループ区間の終点に達したことに起因して該楽音情報に付されるタイミング情報をループ区間の始点のタイミングに更新するタイミング情報更新手段を備えることが好ましい。
【００１３】
【発明の実施の形態】
以下、本発明を自動演奏装置に適用した実施の形態について説明する。
図１は、本発明の一実施形態の自動演奏装置のブロック図である。
図１に示すＣＰＵ１１は、ＲＯＭ１３に格納されたプログラムを、データバス１９を経由して読み出して、必要な処理を実行する。
【００１４】
ＲＡＭ１２には、後述する鍵盤１４やＭＩＤＩインターフェース１５からの演奏データを格納するための演奏データメモリ等が備えられている。
ＲＯＭ１３には、この図１に示す自動演奏装置全体の制御を行なうためのプログラムが格納されている。
鍵盤１４は、演奏者により演奏操作されることにより演奏データを生成する。
【００１５】
ＭＩＤＩインターフェース１５は、鍵盤１４の操作により生成された演奏データを外部機器に出力し、あるいは外部機器からの演奏データを入力する。入力された演奏データは、ＲＡＭ１２に格納され、あるいは音源１８に送られる。
パネル１６には、演奏データの録音や再生のために操作されるボタン等や演奏データ等を表示する表示器が備えられている。
【００１６】
タイマ１７は、所定の値で設定された周期でＣＰＵ１１に割込みをかけ、後述するタイマ割込ルーチンを実行する。このタイマ１７は、１小節の演奏時間内に１９２回の割込み信号（クロック）が発生するように設定されており、例えば「演奏の速さ」＝１２０とすると、タイマ１７の周波数ｆは９６Ｈｚ（（１２０×１９２／４）／６０…４拍子の場合）に設定される。
【００１７】
音源１８は、送られてきた演奏データを楽音信号に変換して出力する。音源１８から出力された楽音信号は、図示しないアンプやスピーカを経由して楽音として空間に放音される。
図２は、図１に示すパネルを示す図である。
図２に示すパネル１６には、「演奏速さ選択ボタン」２１、「拍の長さ選択ボタン」２２、モードボタン２３、スタートボタン２４、ストップボタン２５、ループスタートボタン２６、ループエンドボタン２７、カーソルキー２８、決定ボタン２９、および表示装置３０が備えられている。
【００１８】
演奏速さ選択ボタン２１は、演奏の速さを選択するためのものであり、４種類の演奏の速さ（１５０，１２０等）に対応する４つのボタンが備えられている。
拍の長さ選択ボタン２２は、録音モードの際に発音されるメトロノーム音の拍の長さを設定するためのものであり、４種類の拍の長さ（４８（１９２／４＝４拍子）、６４（１９２／３＝３拍子）等）に対応する４つのボタンが備えられている。例えば、拍の長さ４８に対応するボタンを選択した場合は４／４拍子になり、録音中に「チーン、カッ、カッ、カッ」という具合に発音される。
【００１９】
モードボタン２３は、録音モードと再生モードを交互に切り替えるためのものであり、例えば、録音モードになっていた場合は再生モードに切り替え、再生モードになっていた場合は録音モードに切り替える。
スタートボタン２４は、録音モードにおいては録音開始を指示するためのボタンとして機能し、再生モードにおいては演奏データの再生開始を指示するためのボタンとして機能する。また、このスタートボタン２４が押された場合は、タイマ１７が初期化し、割り込みのためのカウントがスタートするとともに、繰り返し演奏のための区間（以下、ループ区間と記述する。このループ区間は、曲の演奏の進行を表わす時間軸上に指定されるものであり、本実施形態では、複数の小節から構成される。）の最初の小節の先頭が、開始時刻（ループスタートタイム）に設定される。
【００２０】
ストップボタン２５は、録音や再生をストップさせたり、タイマ１７のカウントをストップさせたりするためのものである。
ループスタートボタン２６は、録音モードにおいては、ループ区間の開始時刻を指定するためのボタンとして機能し、このループスタートボタン２６が押された場合には、現在演奏されているループ区間とは異なる次のループ区間の先頭の小節の先頭をループスタートタイムに指定するためのボタン（最初のループスタートタイムはスタートボタン２４により最初の小節の先頭に設定される）として機能し、再生モードにおいては、ループスタートボタン２６が押された際に再生しているループ区間を繰り返し再生させるためのボタンとして機能する。
【００２１】
ループエンドボタン２７は、録音モードにおいては、ループ区間の終了時刻（ループエンドタイム）を指定するためのボタンとして機能し、このループエンドボタン２７が押された時点の小節の最後がループエンドタイムに設定される。この小節の最後の時刻は、ループエンドボタン２７が押された際に次の計算で求める。演奏データの先頭から現在までの経過時間を現在時刻ｔとする。
【００２２】
小節の最後の時刻＝１９２（１＋［ｔ／１９２］）−１
ここで、［］はガウス記号であり、［］の内容が整数化される。
一方、ループエンドボタン２７は、再生モードにおいては、同一のループ区間の演奏データを繰り返し再生するループ再生を解除するためのボタンとして機能する。
【００２３】
カーソルキー２８は、上下キーおよび左右キーを有し、詳細は後述するが、１つのループ区間についての複数の演奏データ列の中から、１つの演奏データ列を、楽音再生用に選択するために操作される。
決定ボタン２９は、カーソルキー２８で選択された１つのループ区間についての複数の演奏データ列のうち、カーソルキー２８により選択された１つの演奏データ列を除く他の演奏データ列を消去するためのボタンである。これにより所望の演奏データのみが残り、これらの演奏データに基づいて所望の曲が作成される。
【００２４】
本実施形態では、詳細は後述するが、先ず、スタートボタン２４により指定されたループスタートタイムからループエンドボタン２７により指定されたループエンドタイムまでの複数の小節からなるループ区間を繰り返し演奏し、その繰り返し演奏による演奏データを順次録音し、例えば所望する演奏データが得られた場合、ループスタートボタン２６により新たなループ区間のループスタートタイムを指定し、またループエンドボタン２７によりループエンドタイムを指定し、さらにその新たなループ区間を繰り返し演奏して演奏データを録音するというように、複数のループ区間それぞれについて繰り返し演奏を行ない、それら繰り返し演奏による演奏データを録音しておき、曲の作成にあたり、録音された演奏データのなかから所望の演奏データを選択をするものである。ここで、本発明にいうループ区間指定手段とは、ループスタートタイムを指定するスタートボタン２４（録音を開始した一番最初だけ），ループスタートボタン２６，ループエンドタイムを指定するループエンドボタン２７のことをいう。また、本発明にいう楽音情報とは、音響信号・音声信号そのものであってもよいし、音源を制御するための情報であっても良い。
【００２５】
図３は、図２に示すパネルの表示装置を示す図である。
図３に示す表示装置３０には、再生モードを示す文字「ＰＬＡＹ」や、録音モードを示す文字「ＲＥＣ」が示されている。また、モードボタン２３の操作により文字「ＰＬＡＹ」の位置もしくは文字「ＲＥＣ」の位置に交互に移動するモード表示用のカーソル３１が示されている。図３では、文字「ＰＬＡＹ」の位置にモード表示用のカーソル３１が移動しており、これにより現在のモードが再生モードであることが表示されている。
【００２６】
またこの表示装置３０には、１つのループ区間について繰り返し演奏が３回行なわれて生成された３段の演奏データ列３２、およびその繰り返し演奏とは演奏開始時刻が異なる他のループ区間について繰り返し演奏が２回行なわれて生成された２段の演奏データ列３３が表示されている。これら演奏データ列３２，３３のうち、カーソルキー２８で選択された１つの演奏データ列が反転表示（図３に示す斜線部）されている。さらに、現在再生（演奏）されている演奏データの位置を示す演奏位置表示用のカーソル３４も表示されている。
【００２７】
図４に示すのは、ＲＡＭ１２内に設けられ、録音時および再生時に使用されるテンポラリメモリである。
本実施形態では、１小節の時間内に、図１に示すタイマ１７からのタイマ割込みが１９２回行なわれる。このテンポラリメモリには、小節を管理するために、１小節の、タイマ割込みにより１９２に分割される位置を示す時刻Ｔ（以下、１小節内の時刻Ｔと記述する。尚、この１小節内の時刻Ｔは、１小節毎にクリアされる）が格納される。また曲の先頭の時刻から数えて現在時刻までの演奏経過位置を示す時刻ｔ（以下、現在時刻ｔと記述する）も格納される。さらに、ループ区間の開始時刻を示すループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ、およびループ区間の終了時刻を示すループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥも格納される。また、演奏データを読み出すための、再生ポインタで指定されるアドレスを示すループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤも格納される。また、ループ区間を繰り返し録音した回数を示すループナンバーＬ＿ＮＵＭＢＥＲも格納される。
【００２８】
図５は、ＲＡＭに設けられた、複数のループ区間それぞれの情報を格納したり読み出したりするためのループデータテーブルを示す図である。
このループデータテーブルには、録音中のループ区間に関する情報が格納される。またこのループデータテーブルから、再生中のループ区間に関する情報が読み出される。尚、ＴＩＭＥ（時刻）と表示されている欄には、全て時刻に対応する、タイマ１７によるクロック数が格納される。
【００２９】
図５に示す左端の各番号１，２，３，…は、各ループ区間の各１回の演奏に対応して付されている。
ループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤには、ループ区間の先頭アドレスが格納される。またループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥには、ループ区間の開始時刻が格納される。さらにループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥには、ループ区間の終了時刻が格納される。またループナンバーＬ＿ＮＵＭＢＥＲには、同一のループ区間の演奏（演奏開始時刻が同じ繰り返し演奏）のうちの何回目かを示す回数が格納される。また選択フラグには、そのループ区間の演奏データが選択されたか否かを示すフラグ（選択されている場合は１、選択されていない場合は０）が格納される。
【００３０】
繰り返し演奏による演奏データの録音にあたっては、ループデータテーブルの番号１，２，３，…のうちの、テーブルポインタで指し示す番号に対応する位置に、上述した種々の情報が格納され、各ループ区間の終了毎に１つづつテーブルポインタがインクリメントする。これにより、ループデータテーブルに、上述した種々の情報が順次格納される。一方、演奏データの再生にあたっては、ループデータテーブルの、再生したいループ区間に対応する位置の番号を指し示す再生ポインタの移動制御が行なわれ、これによりその再生ポインタで指し示された番号に対応するループ区間に関する情報が読み出され、この情報に基づいて演奏データの再生が行なわれる。
【００３１】
図６は、ＲＡＭに設けられた、演奏データを録音するための演奏データメモリを示す図である。
演奏データの録音にあたり、演奏データメモリの、図６に示すアドレス０，１，２，…が録音ポインタで指定され、指定されたアドレスに鍵盤やＭＩＤＩインターフェースからの演奏データと、その演奏データが送られた時の現在時刻ｔが演奏データメモリに格納される。
【００３２】
次に、演奏データを録音し、録音された演奏データに基づいて所望の演奏データを再生する手順について、図７，８を参照して、箇条書きで説明する。
図７は、演奏データを録音し、録音された演奏データに基づいて所望の演奏データを再生する手順の前半部を示す図、図８は、図７に示す手順の後半部を示す図である。
【００３３】
１．モードボタンを押して録音モードにする。
２．スタートボタンを押す。１小節内の時刻Ｔ及び現在時刻ｔにそれぞれ「０」を入れてタイマを初期化するとともに、テンポラリメモリとループデータテーブルの初期化が行われる。テンポラリメモリの初期化は、小節内の時刻Ｔ、現在時刻ｔ、ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥにそれぞれ「０」を格納し、ループナンバーＬ＿ＮＵＭＢＥＲに「１」を格納し、ループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに演奏データメモリの先頭アドレスする処理のことである。ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が格納されている状態はループエンドタイムがまだ設定されていない状態を表す。ループデータテーブルの初期化はテーブルポインタをテーブルの先頭に移動し、ループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤ、ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥにそれぞれ「０」を格納し、ループナンバーＬ＿ＮＵＭＢＥＲおよび選択フラグに「１」を格納する処理のことである。次にタイマをスタートさせ、メトロノームが発音されるとともに、鍵盤あるいはＭＩＤＩインターフェイスからの演奏データの録音が開始される。さらに、図７（ｂ）に示すように現在演奏されている小節Ａ，Ｂ，Ｃ等の演奏データが順次録音される。尚、このときのメトロノーム音は録音されない。
【００３４】
３．ループエンドボタンを押す。ここでは、図７（ｂ）に示すように先頭から４つ目の小節Ｄの途中で押されたものとする。すると、現在演奏中の小節Ｄの最後の時刻がテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに設定される。この時はループデータテーブルの変更はない。これによりそのループ区間の最後が設定される。
【００３５】
４．図７（ｃ）に示すように、タイマ１７による現在時刻ｔが、テンポラリメモリに設定されたループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥになると、ループデータテーブル内にループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥが格納され、テンポラリメモリのループナンバーＬ＿ＮＵＭＢＥＲをインクリメントする。またテーブルポインタも更新される。さらに、図７（ｄ）に示すように、現在時刻ｔがテンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥまで戻る。
【００３６】
５．すると、現在録音ポインタのあるアドレスがループデータテーブルのループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに格納され、テンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ、ループナンバーＬ＿ＮＵＭＢＥＲがループデータメモリのそれぞれ対応する箇所に格納され、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が格納され、テーブルポインタの示すテーブルの選択フラグに「１」を格納し、同じループ区間の選択フラグにすべて「０」を格納する。
【００３７】
６．パネルのボタン操作がない場合は、上述の４、５の処理を繰り返し、ループ区間（ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥ）が同じである演奏データが複数録音される。
７．図７（ｅ）に示すように、演奏者にとって満足できる演奏データ（ここでは小節Ｅ，Ｆ，Ｇ，Ｈからなるループ区間の演奏データ）が入力された場合は、ループスタートボタンを押す。すると、今までループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに設定され繰り返し演奏されていたループ区間の４小節目（Ｌ）の次の小節Ｍの最初の時刻がテンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥに格納され、テンポラリーメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥがループデータテーブルのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに格納され、またテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥがクリアされる。
【００３８】
８．さらに、上述の３〜７の処理が行なわれ、図７（ｆ）、図７（ｇ）のようにして新たなループ区間の演奏データが録音されていく。
９．ストップボタンが押された場合は録音モードが終了し、再生モードに切り替わる。
１０．再生モードに切り替わるとループデータテーブルが参照され、これにより表示装置３０に演奏データが表示される。図８（ｈ）には、表示装置３０の画面の一部が示されており、１小節目から８小節目までが３回繰り返し演奏され生成された演奏データからなる演奏データ列Ｒ１１，Ｒ１２，Ｒ１３が図の上下方向に表示されている。同様にして、９小節目から１６小節目までの演奏データからなる演奏データ列Ｒ２１，Ｒ２２，Ｒ２３、１７小節目から２０小節目までの演奏データからなる演奏データ列Ｒ３１，Ｒ３２、および２１小節目から２８小節目までの演奏データからなる演奏データ列Ｒ４１，Ｒ４２，Ｒ４３，Ｒ４４も表示されている。ここで、それぞれ、一番最後に入力された演奏データ列Ｒ１３，Ｒ２３，Ｒ３２，Ｒ４４が仮に選択（仮選択）されており、画面上に反転表示（斜線部）されている。また演奏位置表示用のカーソル３４および１つの演奏データ列を選択するためのカーソル７１が示されている。
【００３９】
１１．再生モードにおいて、スタートボタンが押されると、各ループ区間ごとにループデータテーブルの選択フラグに「１」が格納されている行を参照し、その行のループスタートアドレスに対応する演奏データを読み出すようになっている。したがって、このとき、仮選択されている演奏データ列Ｒ１３，Ｒ２３，Ｒ３２，Ｒ４４のみが連続的に再生される。
【００４０】
１２．仮選択されている演奏データ列の演奏データが気に入らない場合は、カーソルキー２８のうちの上下キーや左右キーでカーソル７１を、図の上下や左右に移動して所望の演奏データ列を選択して、例えば図８（ｉ）に示すように演奏データ列Ｒ１３，Ｒ２２，Ｒ３２，Ｒ４２を選択する。このカーソルキー８１によるカーソル７１の移動は演奏データの録音が停止中であっても、演奏データの再生中であっても行なうことができる。ただし、カーソルキー２８のうちの上下キーでカーソル７１を移動させた際に、移動させる前の演奏データ列の演奏データが現在演奏中の場合は、その演奏データ列の演奏データがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥになってから、そのカーソル７１で示された演奏データ列が仮選択される。
【００４１】
１３．現在再生している演奏データ列の演奏データを繰り返し演奏するループ演奏を行なう場合は、ループスタートボタンを押す。このループ演奏はループエンドボタンを押すことによって解除される。
１４．上述の１２と１３の操作を繰り返すことにより、仮選択した演奏データ列の演奏データが満足できるか否かを十分検討することができる。満足できるようであれば、決定ボタンを押す。すると、図８（ｊ）に示すように仮選択されている演奏データ列（ここではＲ１３，Ｒ２２，Ｒ３２，Ｒ４２）以外の演奏データ列が消去される。
【００４２】
以上、大まかに説明してきたところで、本願クレームと本実施の形態との対応を明確にしておく、
請求項１における各構成要件は以下のように対応する。
楽音情報入力手段：ＭＩＤＩインターフェース１５
楽音情報記憶手段：演奏データメモリ（ＲＡＭ）
ループ区間：ループデータメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ及びループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥ
ループ区間指定手段：ループスタートボタン及びループエンドボタン
選択手段：再生時に演奏データを選択する選択手段はカーソルキー２８で、録音時に演奏データを選択する選択手段はＣＰＵ、プログラム。（ＣＰＵはプログラムに従って各ループ区間において最後に演奏された演奏データ列を選択する。選択フラグはカーソルキー２８あるいはＣＰＵによって制御され、選択フラグによって選択されている演奏データ列を判断するようになっている。）
選択手段によって選択されている楽音情報のみを再生する手段：ＣＰＵ、プログラム（ＲＯＭ）
請求項２における各構成要件は以下のように対応する。
【００４３】
ループ区間解除指示手段：ループスタートボタン（ループスタートボタンが押されると現在記憶中のループ区間を解除して、そのループ区間の次の区間の先頭をループスタートに設定するようになっている。録音時におけるループスタートボタンはループ区間指定手段とループ区間解除指示手段を兼ねている。）
ループ区間解除指示手段によりループ区間の指定が解除されたことに起因して、前記ループ区間指定手段による次のループ区間の指定が可能となるようにする手段：ＣＰＵ、プログラム（次のループ区間のループエンドを設定可能にする。）
請求項３における各構成要件は以下のように対応する。
【００４４】
検出手段：ＣＰＵ、プログラム、ＲＡＭのテンポラリテーブル
検出手段によりループ区間の終点が検出される前に入力された楽音情報と、終点が検出された後に入力された楽音情報は該ループ区間に関するそれぞれ独立した楽音情報として記憶手段に記憶する手段：ＲＡＭの演奏データメモリ、ＣＰＵ、プログラム
請求項４における各構成要件は以下のように対応する。
【００４５】
タイミング情報：現在時刻ｔ
検出手段：ＣＰＵ、プログラム、ＲＡＭのテンポラリテーブル
タイミング情報更新手段：タイマー１７、ＣＰＵ１１、プログラム、ＲＡＭのテンポラリテーブル
請求項５における各構成要件は以下のように対応する。
【００４６】
表示手段：表示装置３０
表示制御手段：ＣＰＵ、プログラム、ループデータテーブル（ＲＡＭ）
図９は、図１に示す自動演奏装置のメインルーチンを示すフローチャートである。
図１に示す自動演奏装置に電源が投入されると、このメインルーチンが起動する。先ず、ステップＳ１０１において、ＲＡＭ内に設けられたタイムメモリ（図４参照）の初期化、ループデータテーブル（図５参照）の初期化、演奏データメモリ（図６参照）の初期化、各種フラグの初期化、およびその他の必要な初期化を行なう。次にステップＳ１０２において、「演奏速さ選択ボタン」が操作されたか否かが判断される。「演奏速さ選択ボタン」が操作されたと判断された場合は、ステップＳ１０３に進み、操作された「演奏速さ選択ボタン」に対応する周波数をタイマに設定し、ステップＳ１０４に進む。一方、「演奏速さ選択ボタン」が操作されていないと判断された場合はそのままステップＳ１０４に進む。
【００４７】
ステップＳ１０４では、「拍の長さ選択ボタン」が操作されたか否かが判断される。「拍の長さ選択ボタン」が操作されたと判断された場合はステップＳ１０５に進み、操作された「拍の長さ選択ボタン」に対応する係数、例えば４拍子を表わす係数４８を、テンポラリバッファＢに代入し、選択された拍の長さに対応する周波数をタイマに設定してステップＳ１０６に進む。テンポラリバッファＢの内容は、メトロノーム音を発音するために後述する録音割込サブルーチンで読み出される。一方、ステップＳ１０４において、「拍の長さ選択ボタン」が操作されていないと判断された場合はそのままステップＳ１０６に進む。電源投入時における「拍の長さ」及び「演奏速さ」の初期設定は「拍の長さ＝４８」及び「演奏速さ＝１２０」が設定されるようになっている。
【００４８】
ステップＳ１０６では、モードボタンが押されたか否かが判断される。モードボタンが押されたと判断された場合は、ステップＳ１０７に進む。ステップＳ１０７では、この自動演奏装置が録音モードになっていた場合は、再生モードに切り替え、逆に、再生モードになっていた場合は録音モードに切り替える。このように、モードボタンが押されたと判断された場合は、録音モードと再生モードが交互に切り替えられる。次にステップＳ１０８に進み、表示処理を行なう。この表示処理では、切り替えられたモードが録音モードの場合は、表示装置に録音モードの表示を行ない、また切り替えられたモードが再生モードの場合は、表示装置に再生モードの表示を行ないステップＳ１０９に進む。一方、モードボタンが操作されていないと判断された場合は、そのままステップＳ１０９に進む。
【００４９】
ステップＳ１０９では、録音モードか再生モードかが判断される。録音モードであると判断された場合は、ステップＳ１１０に進み、後述する録音モードサブルーチンを実行してステップＳ１０２に戻る。一方、再生モードであると判断された場合はステップＳ１１１に進み、後述する再生モードサブルーチンを実行してステップＳ１０２に戻る。このような処理が、自動演奏装置の電源が遮断されるまで繰り返し実行される。
【００５０】
図１０は、タイマ割込ルーチンを示すフローチャートである。
タイマ１７（図１参照）からの、「演奏速さ選択ボタン」で設定された周期（１／周波数）でＣＰＵに割込みがかかると、このルーチンが起動する。
先ず、ステップＳ２０１において、プレイフラグがオンかオフかが判断される（プレイフラグは、録音開始もしくは再生開始のためにスタートボタンが押されるとオンになり、ストップボタンが押されるとオフになる）。プレイフラグがオフであると判断された場合は録音中もしくは再生中のいずれでもないため、何もせずそのままメインルーチンに戻る。一方、プレイフラグがオンであると判断された場合は録音中もしくは再生中のいずれかであるため、ステップＳ２０２に進む。ステップＳ２０２では、録音モードか再生モードかが判断される。録音モードであると判断された場合はステップＳ２０３に進み、後述する録音割込サブルーチンを実行してメインルーチンに戻る。一方、再生モードにあると判断された場合はステップＳ２０４に進み、後述する再生割込サブルーチンを実行してメインルーチンに戻る。
【００５１】
図１１は、演奏データが入力された場合に実行される演奏データ入力割込ルーチンを示すフローチャートである。
演奏データが入力されるとＣＰＵにインタラプトがかかりこのルーチンが実行される。先ずステップＳ３０１において、録音モードか再生モードかが判断される。再生モードであると判断された場合は、ステップＳ３０５に進み、音源に演奏データを送り楽音を発音してメインルーチンに戻る。
【００５２】
一方、録音モードであると判断された場合は、ステップＳ３０２に進む。ステップＳ３０２では、プレイフラグがオンかオフかが判断される。プレイフラグがオフであると判断された場合は録音モードであっても演奏データを録音しないため、ステップＳ３０５に進み、音源に演奏データを送り楽音を発音してメインルーチンに戻る。
【００５３】
一方、プレイフラグがオンであると判断された場合は、録音の開始が指示されたためステップＳ３０３に進む。ステップＳ３０３では、演奏データメモリの、録音ポインタで指し示されたアドレスに、演奏データが入力された時の現在時刻ｔと演奏データ（図６参照）を格納する。次にステップＳ３０４において、録音ポインタを進める。さらに、ステップＳ３０５において、音源に演奏データを送り楽音を発音してメインルーチンに戻る。
【００５４】
図１２は、図９に示すメインルーチンにおける録音モードサブルーチンのフローチャートである。
先ず、ステップＳ４０１において、スタートボタンが操作されたか否かが判断される。スタートボタンが操作されたと判断された場合はステップＳ４０２に進み、録音の開始を示すプレイフラグをオンにしてステップＳ４０３に進む。ステップＳ４０３では、１小節内の時刻Ｔおよび現在時刻ｔに０を代入して初期化するとともに、テンポラリメモリを初期化する。テンポラリメモリの初期化はループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥにそれぞれ「０」を格納し、ループナンバーＬ＿ＮＵＭＢＥＲに「１」を格納することにより行われる。次にステップＳ４０４に進み、プレイフラグ以外のフラグの初期化やループデータテーブルの初期化等を行なう。ループデータテーブルの初期化では、ループデータテーブルの最初にテーブルポインタを設定し、またループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに演奏データメモリの先頭アドレスを格納する。さらに、ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥに「０」を格納し、ループエンドタイムに「０」を格納し、ループナンバーＬ＿ＮＵＭＢＥＲに「１」を格納し、また選択フラグに「１」を格納し、ステップＳ４０５においてタイマ１７をスタートさせる。
【００５５】
一方、ステップＳ４０１において、スタートボタンが操作されていないと判断された場合はそのままステップＳ４０６に進む。
ステップＳ４０６では、ループスタートボタンが操作されたか否かが判断される。ループスタートボタンが操作されたと判断された場合は、気に入った演奏データが録音されたためステップＳ４０７に進む。ステップＳ４０７では、テンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が設定されているか否かが判断される。ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が設定されている場合はループエンドタイムが設定されていないことを意味し、なにもせずステップＳ４１０に移行する。ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」以外の値が設定されている場合は、演奏者によってループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥの更新する旨の指示が行われた場合でありこの場合はステップＳ４０８に移行する。ステップＳ４０８では、ループデータテーブルのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥにテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥを格納し、テンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥにテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥ＋１を格納することにより次の新たな繰り返し演奏のためのループ区間の小節の最初をループスタートタイムに設定する。次にテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」を格納してループエンドタイムをクリアし、テンポラリメモリのループナンバーＬ＿ＮＵＭＢＥＲに「１」を格納する。これにより前回のループ区間におけるループナンバＬ＿ＮＵＭＢＥＲが、例えば３であったものが、今回の、新たな繰り返し演奏のためのループ区間におけるループナンバＬ＿ＮＵＭＢＥＲが最初であることを示す１が設定される。次にステップＳ４０９にて、テーブルポインタを進めてステップＳ４１０に移行する。
【００５６】
一方ステップＳ４０６において、ループスタートボタンが操作されていないと判断された場合、及びステップＳ４０７においてループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が設定されている場合もステップＳ４１０に移行する。
ステップＳ４１０では、ループエンドボタンが操作されたか否かが判断される。ループエンドボタンが操作されたと判断された場合はステップＳ４１１に進む。ステップＳ４１１では、テンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」が設定されているか否かを判断する。「０」が設定されている場合は次にステップＳ４１２において、現在時刻ｔがテンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥより大きいか否かを判断する。すなわち現在時刻ｔがループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥを経過しているか否かを判断する。この判断は、あるループ区間の演奏データを録音中にループスタートボタンが押され、さらに同じループ区間においてループエンドボタンが押された場合、このループスタートタイムは次のループ区間の最初に設定されるため、ループスタートタイムがループエンドタイムより後になってしまうという矛盾を防ぐためのものであり、現在時刻ｔがテンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥの時刻を経過しないとループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥが設定されないようになっている。ステップＳ４１２での判断が肯定の場合はステップＳ４１３に移行する。ステップＳ４１３では、録音中のループ区間における小節の最後の時刻１９２（１＋［ｔ／１９２］）−１（ここで、［］はガウス記号であり、［］の内容は整数化される）をテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに設定する。次にステップＳ４１３において、ループエンド設定許可フラグをオフにしてステップＳ４１４に進む。一方、ステップＳ４１０において、ループエンドボタンが操作されていないと判断された場合はそのままステップＳ４１４に進む。またステップＳ４１１においてテンポラリメモリのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに「０」以外が設定されていた場合、ステップＳ４１２において現在時刻ｔがループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥを経過していない場合もステップＳ４１４に移行する。
【００５７】
ステップＳ４１４では、ストップボタンが操作されたか否かが判断される。ストップボタンが操作されたと判断された場合はステップＳ４１５に進む。ステップＳ４１５ではプレイフラグをオフにし、ループデータテーブルに基づいて表示装置に演奏データを時系列に並べて表示する。このとき同じループ区間（ループスタートが同じ）の演奏データは時系列の方向とは直交する方向に配置するようになっており、更に各ループ区間について選択フラグがオンの演奏データは表示形態を異ならせて表示するようになっている。この処理が終了すると、再生モードに切り替えてメインルーチンに戻る。
【００５８】
図１３は、図１０に示すタイマ割込ルーチンにおける録音割込サブルーチンのフローチャートである。
先ず、ステップＳ５０１において、現在時刻ＴをインクリメントしてステップＳ５０２に進む。ステップＳ５０２では、１小節内の時刻Ｔが１９２か否か、即ち演奏時刻が小節の最後（次の小節の最初）であるか否かが判断される。小節の最後（次の小節の最初）でないと判断された場合は、現在時刻ｔがテンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥになることもないため、ステップＳ５０３に進む。ステップＳ５０３では、１小節内の時刻Ｔが「拍の長さ選択スイッチ」で選択した拍の長さ（テンポラリバッファＢに代入された値）の倍数になった否かが判断される。１小節内の時刻Ｔが「拍の長さ選択スイッチ」で選択した拍の長さの倍数になったと判断された場合は、ステップＳ５０４に進み、録音中にメトロノーム音のうちの「カッ」の音を発音するように音源に指示してステップＳ５０５に進む。一方、１小節内の時刻Ｔが「拍の長さ選択スイッチ」で選択した拍の長さの倍数になっていないと判断された場合は、そのままステップＳ５０５に進む。ステップＳ５０５では、現在時刻ｔをインクリメントして、後述する、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥを判断するためのステップＳ５１２に進む。
【００５９】
一方、ステップＳ５０２において、１小節内の時刻Ｔが１９２であると判断された場合はその小節の演奏が終了し次の小節の最初になったことを意味しているためステップＳ５０６に進み、録音中にメトロノーム音のうちの「チーン」の音を発音するように音源に指示してステップＳ５０７に進む。ステップＳ５０７では、１小節内の時刻Ｔを「０」にし、さらにステップＳ５０８において、現在時刻ｔをインクリメントしてステップＳ５０９に進む。
【００６０】
ステップＳ５０９では、現在時刻ｔが、テンポラリメモリに設定されたループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥになったか否かが判断される。ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥになったと判断された場合は、次の繰り返し演奏におけるループ区間を設定するためにステップＳ５１０に進む。ステップＳ５１０では、演奏データメモリの、録音ポインタで指し示すアドレスを、ループデータテーブルの、テーブルポインタで指し示す番号（図５参照）に対応するループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに格納する。また現在時刻ｔも、同じくループデータテーブルの、その番号に対応するループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥに格納する。さらに、テンポラリメモリのループナンバーＬ＿ＮＵＭＢＥＲも、同じくループデータテーブルの、その番号に対応するループナンバーＬ＿ＮＵＭＢＥＲに格納する。次にステップＳ５１１に進み、ループデータテーブルの、テーブルポインタが指し示す、やはり同じ番号に対応する選択フラグをオン（「１」）にする。この選択フラグは、１つのループ区間についての複数の演奏データ列のうち、１つの演奏データ列に対してのみオンすることができ、また最後にオンされたループ区間に対する選択フラグが有効になり、他のループ区間に対する選択フラグは全てオフ（「０」）される。
【００６１】
一方、ステップＳ５０９において、現在時刻ｔがループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥになっていないと判断された場合はそのままステップＳ５１２に進む。
ステップＳ５１２では、現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥであるか否かが判断される。現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥであると判断された場合はそのループ区間が終了したためステップＳ５１３に進み、ループデータテーブルの、テーブルポインタで指し示す番号に対応するループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに現在時刻ｔを入れ、１つのループ区間に対する情報を完成させ、ステップＳ５１４においてテンポラリメモリのループナンバーＬ＿ＮＵＭＢＥＲをインクリメントする。次にステップＳ５１５に進み、次のループ区間に演奏データを格納するためにテーブルポインタを進める。さらにステップＳ５１６において、現在時刻ｔにタイムメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥから１を引き算した値であるループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥー１を代入してメインルーチンに戻る。
【００６２】
一方、ステップＳ５１２において、現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥでないと判断された場合は、そのままメインルーチンに戻る。
図１４は、図９に示すメインルーチンにおける再生モードサブルーチンのフローチャートである。
先ずステップＳ６０１において、カーソルキーのうちの左右キーが操作されたか否かが判断される。左右キーが操作されたと判断された場合は、ステップＳ６０２に進み、１つのループ区間についての複数の演奏データ列のうち、１つの演奏データ列を選択するためのカーソル７１（図８参照）を、左右キーの操作に応じて左もしくは右に移動表示させてステップＳ６０３に進む。一方、左右キーが操作されていないと判断された場合は、そのままステップＳ６０３に進む。ステップＳ６０３では、カーソルキーのうちの上下キーが操作されたか否かが判断される。上下キーが操作されたと判断された場合はステップＳ６０４に進み、上下キーの操作に応じてカーソル７１を上もしくは下に移動表示させ、カーソル移動によって選択された演奏データ列に対応する選択フラグをオンにし、同じループ区間の他の選択フラグを全てオフにしてステップＳ６０５に進む。ステップＳ６０５では、カーソル７１で表示された演奏データ列の演奏データが再生中であるか否が判断される。その演奏データ列の演奏データが再生中であると判断された場合は、即座にその演奏データ列の演奏データを切り替えることはせずループエンドタイムになってから行なうために、ステップＳ６０７において切替フラグをオンにしておきステップＳ６０８に進む。一方ステップＳ６０５において、カーソル７１で表示された演奏データ列の演奏データが再生中でないと判断された場合はステップＳ６０６に進み、カーソル７１で表示された演奏データ列を選択するための選択フラグをオンにしてステップＳ６０８に進む（このとき、演奏開始時刻が同じ繰り返し演奏による他の演奏データ列に対応する選択フラグはオフされる）。
【００６３】
またステップＳ６０３において、カーソルキーのうちの上下キーが操作されていないと判断された場合はそのままステップＳ６０８に進む。
ステップＳ６０８では、決定ボタンが操作されたか否かが判断される。決定ボタンが操作されたと判断された場合はステップＳ６０９に進み、１つのループ区間毎に１つづつ選択された演奏データ列以外の演奏データ列を消去してステップＳ６１０に進む。ステップＳ６１０では、表示装置に各ループ区間毎に選択された演奏データ列を表示してステップＳ６１１に進む。一方、ステップＳ６０８において、決定ボタンが操作されていないと判断された場合はそのままステップＳ６１１に進む。尚、ここでは選択された演奏データ列以外の演奏データ列を消去するものであるが、これらの演奏データ列を削除することなく、選択された演奏データ列のみを別の記憶領域に移動したりコピーしたりして表示してもよい。
【００６４】
次にステップＳ６１１において、スタートボタンが操作されたか否かが判断される。スタートボタンが押されたと判断された場合はステップＳ６１２に進み、プレイフラグをオンにしてステップＳ６１３に進む。ステップＳ６１３では、１小節内の時刻Ｔおよび現在時刻ｔに０を入れて初期化し、ループデータテーブルを参照して最初のループ区間で選択されているループデータのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥをテンポラリメモリのループデータのループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥにコピーして、タイマをスタートさせる。次にステップＳ６１４に進み、プレイフラグ以外の必要なフラグの初期化（ループフラグ、切り替えフラグなど）、再生ポインタの初期化、テーブルポインタの初期化、およびタイムメモリの初期化等を行ないステップＳ６１５に進む。一方、ステップＳ６１１において、スタートボタンが操作されていないと判断された場合はそのままステップＳ６１５に進む。
【００６５】
ステップＳ６１５では、ストップボタンが操作されたか否かが判断される。ストップボタンが操作されたと判断された場合はステップＳ６１６に進み、プレイフラグをオフにしてステップＳ６１７に進む。一方、ストップボタンが操作されていないと判断された場合はそのままステップＳ６１７に進む。
ステップＳ６１７では、ループスタートボタンが押されたか否かが判断される。ループスタートボタンが押されたと判断された場合は、演奏者によりループ再生が指示されたためステップＳ６１８に進む。ステップＳ６１８では、ループデータテーブルを参照し、演奏中のループ区間で選択されているループデータテーブルのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥとループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥを、テンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥとループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥにそれぞれコピーする。次にステップＳ６１９において、ループフラグをオンにする。このループフラグはループ再生が行われる場合はオンにされ、通常再生が行われる場合はオフにされる。次にステップＳ６２０に進む。
【００６６】
一方、ステップＳ６１７において、ループスタートボタンが操作されていないと判断された場合はそのままステップＳ６２０に進む。
ステップＳ６２０では、ループエンドボタンが操作されたか否かが判断される。ループエンドボタンが操作されたと判断された場合はループ再生が解除されたため、ステップＳ６２１において、ループフラグをオフにしてメインルーチンに戻る。一方、ループエンドボタンが操作されていないと判断された場合はそのままメインルーチンに戻る。
【００６７】
図１５は、図１０に示すタイマ割込ルーチンにおける再生割込サブルーチンのフローチャートである。
先ずステップＳ７０１において、現在時刻ｔをインクリメントし、ステップＳ７０２に進む。ステップＳ７０２では、演奏データメモリの、再生ポインタで指し示す演奏データの時刻が現在時刻ｔと同じか否かが判断される。これらの時刻が一致したと判断された場合は、その演奏データを再生するべき時刻がやってきたためステップＳ７０３に進み、再生ポインタで指し示す演奏データを音源に送る。さらにステップＳ７０４において、再生ポインタを、演奏データメモリの次のアドレスに進めてステップＳ７０２に戻る。時刻が一致する演奏データがある限りこのルーチンが繰り返される。ステップＳ７０２において、時刻が一致しないと判断された場合はステップＳ７０５に進み、現在時刻ｔがテンポラリメモリに設定されているループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥと一致するか否かが判断される。現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥと一致した場合、即ちループエンドタイムになったと判断された場合はステップＳ７０６に進む。ステップＳ７０６では、ループフラグがオンかオフかが判断され、ループフラグがオフであると判断された場合はステップＳ７０７に進む。ステップＳ７０７では、ループデータテーブルを参照し、次に選択されている、ループ区間の演奏（選択フラグが１）に対応するループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤおよびループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥを、それぞれテンポラリメモリのループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤおよびループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに設定する。次にステップＳ７０８に進み、再生ポインタをテンポラリメモリのループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに移動してステップＳ７０９に進む。一方、ステップＳ７０５において、現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥと一致していないと判断された場合はそのままステップＳ７０９に進む。
【００６８】
以下に説明するステップＳ７０９からステップＳ７１２までの処理は表示装置において演奏中に、図８に示す演奏位置表示表示用のカーソルを移動させるための処理である。
先ず、ステップＳ７０９において、１小節内の時刻Ｔをインクリメントする。次にステップＳ７１０において、１小節内の時刻Ｔが１９２か否かが判断される。１小節内の時刻Ｔ＝１９２であると判断された場合は、小節の最初（前の小節の最後）であるためステップＳ７１１に進み、演奏位置表示用のカーソル３４を次の小節に移動し、ステップＳ７１２において、１小節内の時刻Ｔを０にして初期化しメインルーチンに戻る。１小節内の時刻Ｔが１９２でないと判断された場合は、そのままメインルーチンに戻る。
【００６９】
前述したステップＳ７０６において、ループフラグがオンであると判断された場合は、ステップＳ７１３に進み、テンポラリメモリのループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥ−１を現在時刻ｔに入れ、ステップＳ７１４に進む。ステップＳ７１４では切替フラグがオンであるかオフであるかが判断される。切替フラグがオンであると判断された場合は、ステップＳ７１５に進み、ループ区間の演奏データの切替処理を行なうために、ループデータテーブルを参照し、選択表示されるループ区間の演奏データに対応するループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤをテンポラリメモリのループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤに入れ、ステップＳ７１６にて切り替えフラグをオフにしてステップＳ７１７に進む。
【００７０】
一方、ステップＳ７１４において、切替フラグがオフであると判断された場合は、そのままステップＳ７１７に進む。ステップＳ７１７では、再生ポインタをテンポラリメモリのループスタートアドレスＬ＿ＳＴＡＲＴ＿ＡＤの位置に移動しステップＳ７１８に進む。ステップＳ７１８では、演奏位置用のカーソル３４をループ区間の先頭に移動してステップＳ７１２に進む。ステップＳ７１２では、前述したように１小節内の時刻Ｔを０にして初期化しメインルーチンに戻る。
【００７１】
尚、本実施形態では、１パートのみの再生について説明したが、複数パートを同時再生してもよく、その場合これら複数パートを現在時刻ｔに同期させ、また録音パート以外の他のパートはループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥになったら再生ポインタをループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥの位置に戻すようにすればよい。またその場合は、録音パートを切り替え可能にしておき、録音パートが選択されたら今まで録音していたパートを再生しつつ、新たに選択されたパートに演奏情報を格納すればよい。
【００７２】
また、本実施形態では、録音／再生は演奏データの先頭からの現在時刻ｔにより制御したが、例えば演奏情報と演奏情報との時間差分を演奏データとともに格納し、これらに基づいて再生制御してもよい。
さらに、本実施形態では、時刻はタイマ割込みによるクロック数で表わしたが、タイマ自身のカウント値で録音／再生の制御を行なってもよい。
【００７３】
また、本実施形態では、どのループ区間の演奏データも必ず繰り返し録音するようになっているが、ある一部のループ区間だけ繰り返し録音を解除して通常の録音（１回）をするようにしてもよい。
また、本実施形態では、繰り返し録音にあたり、ループスタートボタンを押すと、ループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥに設定された小節の次の小節の最初がループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥに設定されるようになっているが、ループスタートタイムＬ＿ＳＴＡＲＴ＿ＴＩＭＥの位置を自在に設定するようにしてもよい。
【００７４】
また、本実施形態では、ループ区間の演奏データの再生時には、選択されている演奏データ列の演奏データのみを読み出して音源に送っているが、同じ繰り返し演奏により生成された全て或はその中の一部の複数の演奏データ列の演奏データを全て読み出し、選択されている演奏データ列の演奏データのみを音源に送るようにしてもよい。また全て或はその中の一部の複数の演奏データ列の演奏データを音源に送り、選択されている演奏データ列の演奏データ以外の演奏データに対応する音量を０にしてもよい。
【００７５】
また、演奏データはメモリ領域に連続的に格納してもよく、あるいはトラックのような、異なるメモリ領域にそれぞれ分割して格納してもよい。
尚、楽音情報とは楽音そのものであってもよいし、音を発音消音させるための情報であってもよい。その場合は入力された楽音信号をメモリに順次記憶するようにすればよい。本願実施形態では入力したタイミングの情報を演奏情報とともに記憶するようになっているが楽音そのものを録音する場合はタイミング情報は必須ではない。
【００７６】
また、本実施の形態では録音再生の制御、ループスタート、ループエンドの時間の管理を演奏の先頭からの絶対時刻ｔに基づいて行っているがこれに限らず、入力された演奏データを１つ前の演奏データからの経過時間（相対時間）と共に記憶するようにしてもよい。その場合、ループ区間を指定して録音を行っている場合は、ループエンドになったときに発音中である演奏データを強制的に消音する演奏データをループエンドの時刻に記憶しておいてもよい。
【００７７】
さらに録音は絶対時間により時間管理して演奏データメモリに記憶しておき、録音終了時に相対時間により時間管理することが可能な形式に変換するようにしてもよい。
各ループ区間についての複数の楽音情報のうち、前記選択手段によって選択された楽音情報を除く他の楽音情報を消去するようにしてもよい。また各ループ区間についての複数の楽音情報のうち、前記選択手段によって選択された楽音情報のみをメモリの別領域に記憶するようにしてもよい。
【００７８】
本願は、録音の際に現在時刻ｔがループエンドタイムＬ＿ＥＮＤ＿ＴＩＭＥになる度に現在時刻をループスタートＬ＿ＳＴＡＲＴ＿ＴＩＭＥに更新し、次のループの際に更新された現在時刻ｔを演奏情報と共に記憶するようにしているが、この更新を行わず、録音時にループ区間の情報とそのループ区間で何回演奏したのかを記憶することで、時系列的につながる演奏データであるのかループ区間で繰り返された演奏データであるのかを知ることが可能であるので、再生時には特殊な読み出し方をすれば本願と同等の効果を得ることができる。
【００７９】
例えば、最初のループ区間で３回目のループの演奏データが録音され、次のループ区間で５回のループの演奏データが録音されたとする。最初のループ区間で２番目の演奏データを読み出し、次のループ区間で４番目の演奏データを読み出す場合は、現在時刻ｔにループ区間１回分の長さ分だけ加算する。すると２番目の演奏データを再生することができる。次のループ区間に移る場合は、最初のループ区間の直前になった時に、現在時刻ｔに次のループ区間の先頭の時刻になる時間分だけ加算する。例の場合は３回録音して２番目の演奏データを演奏していたので最初のループ区間の長さ１回分の時間を時刻ｔに加算する。次のループ区間では４番目の演奏データが選択されているので次のループ区間の長さ３回分の時間を時刻ｔに加算する。本願クレームはこのように特殊な読み出しかたをする場合ももちろん含まれる。
【００８０】
【発明の効果】
以上説明したように、本発明によれば、楽音情報を記憶しておき記憶された楽音情報を読み出して楽音を再生するにあたり、所望の楽音情報を曲データとして容易に選択できる。従って、所望の曲を容易に作成することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態の自動演奏装置のブロック図である。
【図２】図１に示すパネルを示す図である。
【図３】図２に示すパネルの表示装置を示す図である。
【図４】ＲＡＭに設けられた、録音時および再生時に使用されるテンポラリメモリを示す図である。
【図５】ＲＡＭに設けられた、複数のループ区間それぞれの情報を格納したり読み出したりするためのループデータテーブルを示す図である。
【図６】ＲＡＭに設けられた、演奏データを格納するための演奏データメモリを示す図である。
【図７】演奏データを録音し、録音された演奏データに基づいて所望の演奏データを再生する手順の前半部を示す図である。
【図８】図７に示す手順の後半部を示す図である。
【図９】図１に示す自動演奏装置のメインルーチンを示すフローチャートである。
【図１０】タイマ割込ルーチンを示すフローチャートである。
【図１１】演奏データが入力された場合に実行される演奏データ入力割込ルーチンを示すフローチャートである。
【図１２】図９に示すメインルーチンにおける録音モードサブルーチンのフローチャートである。
【図１３】図１０に示すタイマ割込ルーチンにおける録音割込サブルーチンのフローチャートである。
【図１４】図９に示すメインルーチンにおける再生モードサブルーチンのフローチャートである。
【図１５】図１０に示すタイマ割込ルーチンにおける再生割込サブルーチンのフローチャートである。
【符号の説明】
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＲＯＭ
１４  鍵盤
１５  ＭＩＤＩインターフェース
１６  パネル
１７  タイマ
１８  音源
１９  データバス
２１  演奏速さ選択ボタン
２２  拍の長さ選択ボタン
２３  モードボタン
２４  スタートボタン
２５  ストップボタン
２６  ループスタートボタン
２７  ループエンドボタン
２８  カーソルキー
２９  決定ボタン
３０  表示装置
３１，３４，７１  カーソル
３２，３３  演奏データ列
【図１】
0003827820.tif 000002
【図２】
0003827820.tif 000003
【図３】
0003827820.tif 000004
【図４】
0003827820.tif 000005
【図５】
0003827820.tif 000006
【図６】
0003827820.tif 000007
【図７】
0003827820.tif 000008
【図８】
0003827820.tif 000009
【図９】
0003827820.tif 000010
【図１０】
0003827820.tif 000011
【図１１】
0003827820.tif 000012
【図１２】
0003827820.tif 000013
【図１３】
0003827820.tif 000014
【図１４】
0003827820.tif 000015
【図１５】
0003827820.tif 000016