(57)【特許請求の範囲】
【請求項１】
複数の演奏パターンデータを記憶するパターンデータ記憶手段と、
前記パターンデータ記憶手段の中のいずれかを指定する指定データと曲の進行に従って変化する演奏データとを含むソングデータを記憶するソングデータ記憶手段と、
前記ソングデータの中から前記演奏データを曲の進行に従って読み出す第１の演奏手段と、
前記ソングデータの中の前記指定データにて指定される演奏パターンデータを前記パターンデータ記憶手段から繰り返し読み出し、該読み出した演奏パターンデータに基づく楽音を前記演奏データに応じて変換して発生する第２の演奏手段と
を備えた自動演奏装置。
【請求項２】
前記ソングデータ記憶手段は複数曲分のソングデータを記憶し、前記第１及び第２の演奏手段は複数曲分のソングデータを連続して読み出す請求項１に記載の自動演奏装置。
【請求項３】
前記指定データは、前記連続して読み出されるソングデータにおいて該ソングデータが切り替わるときに該切り替わりの直前のソングデータの前記指定データが指定する演奏パターンデータと同じものを選択することを意味するコンティニューデータを含む請求項２に記載の自動演奏装置。
【請求項４】
前記演奏データは曲の進行に従った和音進行データを有し、前記演奏パターンデータは音高情報を含み、前記第２の演奏手段は曲の進行に従って読み出した前記和音進行データにもとづいて前記演奏パターンデータ中の音高情報を修正する請求項１に記載の自動演奏装置。
【請求項５】
複数の第１の演奏パターンデータと第２の演奏パターンデータとを記憶するパターンデータ記憶手段と、
第１の演奏パートに関して前記パターンデータ記憶手段の中の第１の演奏パターンデータを指定しかつ曲の進行に従ってこの指定が変化する第１の指定データと第２の演奏パートに関して前記パターンデータ記憶手段の中の第２の演奏パターンデータのいずれかを指定する第２の指定データとを含むソングデータを記憶するソングデータ記憶手段と、
前記ソングデータの中から前記第１の指定データを曲の進行に従って読み出し該第１の指定データにて指定される第１の演奏パターンデータを前記パターンデータ記憶手段から読み出し、該読み出した第１の演奏パターンデータに基づく第１の演奏パートの楽音を発生する第１の演奏手段と、
前記ソングデータの中の前記第２の指定データにて指定される第２の演奏パターンデータを前記パターンデータ記憶手段から繰り返し読み出し、該読み出した演奏パターンデータに基づく楽音を発生する第２の演奏手段と
を備えた自動演奏装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はシーケンサ等の自動演奏装置あるいは自動リズム演奏装置に係り、特に複数の演奏パターンデータを適宜組み合わせて１曲分の演奏データを作成するソング機能を有する自動演奏装置に関する。
【０００２】
【従来の技術】
自動演奏装置は、それぞれ複数の演奏パートからなる複数の演奏パターンデータを記憶しており、この演奏パターンデータをソングデータに基づいて各演奏パート毎に順番に読み出し、読み出された演奏パターンデータに応じて１曲分の演奏を行う。演奏パートにはリズムパート、ベースパート及びコードパートなどがあり、これら複数の演奏パートを１組としてパターン番号が付与されている。ソングデータは、どの演奏パターンデータに基づいて演奏を行うのか、その演奏パターンデータを指定するパターン番号を曲の進行に従って順番に記憶している。なお、リズムパート以外のベースパート及びコードパートは、曲の進行に従って別途記憶されている和音進行データに基づきその和音に適した音に変換されるようになっている。
【０００３】
【発明が解決しようとする課題】
従来の自動演奏装置において、ソングデータはパターン番号を曲の進行に従って順番に記憶している。すなわち、ソングデータは、曲の進行に従って、リズムパート、ベースパート及びコードパートの組を指定するためのパターン番号をシーケンシャルに記憶したシーケンスデータから構成される。従って、例えばリズムパートのみが曲の進行に従って変化し、その他のパートに関しては変化しないような曲を演奏させる場合、リズムパートに関しては単なるパターンを記憶し、その他のパートに関しては同一のパターンを記憶した複数組の演奏パターンデータを予め作成しておき、これらの演奏パターンのパターン番号を曲の進行に従って順番に記憶させることになる。従って、リズムパート以外のパートについては同一の演奏パターンを記憶しているにもかかわらず、異なるパターン番号を付与し、異なる演奏パターンとして記憶させておかなければならないため、メモリを無駄に使用していた。
【０００４】
この発明は、このような従来技術の欠点に鑑み、入力操作が容易で、かつ、自動演奏データの容量増大を抑制し、メモリを有効に利用することのできる自動演奏装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】この発明に係る自動演奏装置は、複数の演奏パターンデータを記憶するパターンデータ記憶手段と、前記パターンデータ記憶手段の中のいずれかを指定する指定データと曲の進行に従って変化する演奏データとを含むソングデータを記憶するソングデータ記憶手段と、前記ソングデータの中から前記演奏データを曲の進行に従って読み出す第１の演奏手段と、前記ソングデータの中の前記指定データにて指定される演奏パターンデータを前記パターンデータ記憶手段から繰り返し読み出し、該読み出した演奏パターンデータに基づく楽音を前記演奏データに応じて変換して発生する第２の演奏手段とを備えるものである。
【０００６】
この発明において、パターンデータ記憶手段は、各演奏パート（ベースパート、コードパート）に対応した演奏パターンデータを複数記憶している。この演奏パターンデータは指定データによって指定される。ソングデータ記憶手段はこの指定データと曲の進行に従って変化する演奏データとからなるソングデータを記憶している。演奏データは１つの曲の演奏に関してその曲の進行に従って演奏されるデータを曲の進行順に記憶している。指定データはパターンデータ記憶手段の中の演奏パターンデータのいずれかを指定するものであり、演奏パート毎に記憶されている。従って、第１の演奏手段はソングデータの中から演奏データを曲の進行に従って順番に読み出して演奏する。このとき、第２の演奏手段はソングデータの中の指定データを演奏開始前に読み出し、この指定データにて指定される演奏パターンデータを第１の演奏手段の演奏中にパターンデータ記憶手段から繰り返し読み出し、該読み出した演奏パターンデータに基づく楽音を前記演奏データに応じて変換して発生することで演奏を行う。これによって、同じ演奏パターンデータを繰り返し読み出して、それに基づく楽音は曲の進行に従って変化する演奏データ（和音進行データ）に応じて変換して発生させるようにできる演奏パート（ベースパートやコードパート）のものについては、該演奏パターンデータを指定する指定データだけを記憶すればよいので、ソングデータの入力操作が容易となり、自動演奏データの容量増大を抑制し、メモリを有効に利用することができるようになる。
この発明の別の観点に従う自動演奏装置は、複数の第１の演奏パターンデータと第２の演奏パターンデータとを記憶するパターンデータ記憶手段と、第１の演奏パートに関して前記パターンデータ記憶手段の中の第１の演奏パターンデータを指定しかつ曲の進行に従ってこの指定が変化する第１の指定データと第２の演奏パートに関して前記パターンデータ記憶手段の中の第２の演奏パターンデータのいずれかを指定する第２の指定データとを含むソングデータを記憶するソングデータ記憶手段と、前記ソングデータの中から前記第１の指定データを曲の進行に従って読み出し該第１の指定データにて指定される第１の演奏パターンデータを前記パターンデータ記憶手段から読み出し、該読み出した第１の演奏パターンデータに基づく第１の演奏パートの楽音を発生する第１の演奏手段と、前記ソングデータの中の前記第２の指定データにて指定される第２の演奏パターンデータを前記パターンデータ記憶手段から繰り返し読み出し、該読み出した演奏パターンデータに基づく楽音を発生する第２の演奏手段とを備える。例えば、リズムパートのみを曲の進行に従って変化させていき、その他のパートは変化させたくないような曲を作りたい場合には、リズムパートの演奏パターンデータの指定データを曲の進行に従って変化する第１の指定データとして含み、その他のパートの演奏パターンデータの指定データを第２の指定データとして含むソングデータをソングデータ記憶手段内に記憶するだけでよい。これによって、リズムパート以外のパートに関してはそれぞれ１つの指定データだけを記憶すればよいので、ソングデータの入力操作が容易となり、自動演奏データの容量増大を抑制し、メモリを有効に利用することができるようになる。
【０００７】
【実施例】
以下、添付図面を参照してこの発明の一実施例を詳細に説明する。
図１はこの発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。この実施例においては、マイクロプロセッサユニット（ＣＰＵ）１、プログラムメモリ２、ワーキングメモリ３を含むマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。
この実施例では１つのＣＰＵ１によって自動演奏処理等を行う電子楽器を例に説明する。
【０００８】
ＣＰＵ１は、この電子楽器全体の動作を制御するものである。このＣＰＵ１に対して、データ及びアドレスバス１５を介してプログラムメモリ２、ワーキングメモリ３、演奏情報メモリ４、押鍵検出回路５、表示回路６、スイッチ検出回路７及び音源回路８が接続されている。
【０００９】
プログラムメモリ２はＣＰＵ１のシステムプログラムや自動演奏や楽音に関する各種パラメータや各種データを格納するものであり、リードオンリーメモリ（ＲＯＭ）で構成されている。
ワーキングメモリ３は、ＣＰＵ１がプログラムを実行する際に発生する各種の演奏データや各種のデータを一時的に記憶するものであり、ランダムアクセスメモリ（ＲＡＭ）の所定のアドレス領域がそれぞれ割り当てられ、レジスタやフラグ等として利用される。
【００１０】
演奏情報メモリ４は、複数曲分のソングデータ及び複数の演奏パターンデータを記憶しており、所望の曲に対応するソングデータ及び演奏パターンデータをワーキングメモリ３に転送して、その曲の演奏を行えるようにする。
【００１１】
図２はこの演奏情報メモリ４に記憶されているソングデータ及び演奏パターンデータの構成例を示す図である。
演奏情報メモリ４は、図２（Ａ）に示すようなソング番号１からソング番号ＬまでのＬ曲分（Ｌは任意の整数）のソングデータと、図２（Ｂ）及び図２（Ｃ）に示すような演奏パターンデータとを記憶している。図２（Ｂ）はリズムパートのデータ構成を、図２（Ｃ）はリズムパート以外のバッキングパート（コード１パート、コード２パート及びベースパート）のデータ構成をそれぞれ示す。
【００１２】
図２（Ａ）に示すように、１曲分のソングデータはヘッダデータ、バッキング指定データ、パターンシーケンスデータ及びコードシーケンスデータから構成される。
ヘッダデータには、ソングの名称やテンポなどのデータが記憶される。
バッキング指定データには、図２（Ｃ）のどの演奏パターンデータに基づいてリズムパート以外のバッキングパート（コード１パート、コード２パート及びベースパート）のバッキング演奏を行うのか、そのバッキングパートを指定するパターン番号が記憶されている。なお、このバッキング指定データには、パターン番号以外にバッキング演奏の中止を示すオフデータ、及び前の曲のバッキング演奏を継続することを示すコンティニューデータが記憶されることもある。
【００１３】
パターンシーケンスデータには、図２（Ｂ）のどの演奏パターンデータに基づいてリズムパートのバッキング演奏を行うのか、そのリズムパートのパターン番号が曲の進行に従ってシーケンシャルに記憶されている。
コードシーケンスデータにはリズムパート以外のバッキングパート（コード１パート、コード２パート及びベースパート）の音を曲の進行に従って変換するためのデータが記憶されている。このコードシーケンスデータに記憶されているデータはデュレーションデータとコードデータとの組であり、曲の進行に従って順番に記憶されている。デュレーションデータは、イベント（コード）の発生間隔を示すタイミングデータである。コードデータは和音の根音を示すルートデータと和音の種類を示すタイプデータで構成される。
【００１４】
図２（Ｂ）に示すように、リズムパートの演奏パターンデータは、パターン１からパターンＭまでのＭ個のパターンで構成される。各演奏パターンデータは、ヘッダデータ、デュレーションデータ、イベントデータ及びエンドデータから構成される。ヘッダデータにはドラムセットの種類などが記憶される。イベントデータには打楽器の種類を示すノートナンバやベロシティなどが記憶される。
【００１５】
図２（Ｃ）に示すように、バッキングパートの演奏パターンデータは、パターン１からパターンＮまでのＮ個のパターンで構成される。各演奏パターンデータは、リズムパート以外のコード１パート、コード２パート及びベースパートに関するデータで構成される。各パートのデータ構成はリズムパートのものと同じであり、ヘッダデータ、デュレーションデータ、イベントデータ及びエンドデータから構成される。ヘッダデータには音色などが記憶される。イベントデータにはノートオン、ノートオフ、音高、ベロシティなどが記憶される。
【００１６】
鍵盤９は、発音すべき楽音の音高を選択するための複数の鍵を備えており、各鍵に対応したキースイッチを有しており、また必要に応じて押圧力検出装置等のタッチ検出手段を有している。鍵盤９は音楽演奏のための基本的な操作子であり、これ以外の演奏操作子でもよいことはいうまでもない。
【００１７】
押鍵検出回路５は、発生すべき楽音の音高を指定する鍵盤９のそれぞれの鍵に対応して設けられたキースイッチ回路を含むものである。この押鍵検出回路５は、鍵盤９の離鍵状態から押鍵状態への変化を検出してキーオンイベントを出力し、押鍵状態から離鍵状態への変化を検出してキーオフイベントを出力すると共にそれぞれのキーオンイベント及びキーオフイベントに関する鍵の音高を示すキーコード（ノートナンバ）を出力する。押鍵検出回路５は、この他にも鍵押し下げ時の押鍵操作速度や押圧力等を判別してベロシティデータやアフタタッチデータとして出力する。
【００１８】
スイッチ検出回路７は、パネルスイッチ１１に設けられた各々の操作子（スイッチ）に対応して設けられており、各々の操作子の操作状況に応じた操作データをイベント情報として出力する。
パネルスイッチ１１は、ソングデータや演奏パターンデータを作成するためのスイッチや自動演奏のスタート／ストップを指定するスイッチや、発生すべき楽音の音色、音量、音高、効果等を選択、設定、制御するための各種の操作子を含むものである。
【００１９】
音源回路８は、複数のチャンネルで楽音信号の同時発生が可能であり、データ及びアドレスバス１５を経由して与えられた演奏データ（ＭＩＤＩ規格に準拠したデータ）を入力し、この演奏データに基づき楽音信号を発生する。
音源回路８における楽音信号発生方式はいかなるものを用いてもよい。例えば、発生すべき楽音の音高に対応して変化するアドレスデータに応じて波形メモリに記憶した楽音波形サンプル値データを順次読み出すメモリ読み出し方式、又は上記アドレスデータを位相角パラメータデータとして所定の周波数変調演算を実行して楽音波形サンプル値データを求めるＦＭ方式、あるいは上記アドレスデータを位相角パラメータデータとして所定の振幅変調演算を実行して楽音波形サンプル値データを求めるＡＭ方式等の公知の方式を適宜採用してもよい。
【００２０】
音源回路８から発生される楽音信号は、デジタル−アナログ変換器（ＤＡＣ）１２及びサウンドシステム１３（アンプ及びスピーカからなる）を介して発音される。
タイマ１４は時間間隔を計数したり、自動演奏のテンポを設定したりするためのテンポクロックパルスを発生するものであり、このテンポクロックパルスの周波数はパネルスイッチ１１上のテンポスイッチ（図示していない）によって調整される。発生したテンポクロックパルスはＣＰＵ１に対してインタラプト命令として与えられ、ＣＰＵ１はインタラプト処理により自動演奏の各種処理を実行する。この実施例においてはテンポクロックパルスは４分音符につき９６回発生されるものとする。
【００２１】
次に、ＣＰＵ１によって実行される電子楽器の処理の一例を図３から図１１のフローチャートに基づいて説明する。
図３は、図１の電子楽器のＣＰＵ１が処理するメインルーチンの一例を示す図である。
まず、電源が投入されると、ＣＰＵ１はＲＯＭ２に格納されている制御プログラムに応じた処理を開始する。「イニシャライズ処理」では、ＲＡＭ３内の各種レジスタ及びフラグを初期化する。その後に、ＣＰＵ１は、「スイッチ処理」及び「その他の処理」をイベントの発生に応じて繰り返し実行する。
【００２２】
図４は図３の「スイッチ処理」の一例を示すものであり、図４（Ａ）はパネルスイッチ１１上のスタートスイッチが操作された場合の「スタートスイッチ処理」を示し、図４（Ｂ）はストップスイッチが操作された場合の「ストップスイッチ処理」を示す。
まず、「スタートスイッチ処理」では、「ソング初期処理」を行い、走行状態フラグＲＵＮに『１』をセットする。ソング処理処理は、図２（Ａ）のソングデータを読み出し、各種フラグやレジスタなどの初期設定を行うものであり、その詳細は図５に示されている。
「ストップスイッチ処理」では、音源回路の発音中の音に対し、ノートオフを出力し、走行状態フラグＲＵＮに『０』をセットする。
走行状態フラグＲＵＮは『１』の時に自動演奏走行状態を示し、『０』の時に自動演奏停止状態を示す。
【００２３】
図５は図４（Ａ）の「ソング初期処理」の詳細を示す図である。このソング初期処理は次のようなステップで順番に実行される。なお、このソング初期処理は図１１のチェイン・リピート処理でも実行されるものである。
ステップ５１：選択されているソングデータのヘッダデータを読み出して設定する。例えば、図２（Ａ）のソングデータの中のソング１が選択されている場合には、そのソング１のヘッダデータを読み出し、そのソング１のテンポなどを設定する。
【００２４】
ステップ５２：選択されているソングデータのバッキング指定データを読み出す。バッキング指定データには、前述のようにバッキングパートのパターン番号、オフデータ又はコンティニューデータのいずれか１つが記憶されている。
ステップ５３：前ステップ５２で読み出されたバッキング指定データがオフデータかどうかを判定し、オフデータ（ＹＥＳ）の場合は次のステップ５４に進み、オフデータ以外のバッキングパートのパターン番号又はコンティニューデータ（ＮＯ）の場合はステップ５５に進む。
【００２５】
ステップ５４：前ステップ５３でバッキング指定データがバッキング演奏の中止を示すオフデータだと判定されたので、ここでは、それに応じてバッキングオフフラグＢＡＣＯＦＦに『１』をセットする。このバッキングオフフラグＢＡＣＯＦＦが『１』の場合はコード１パート、コード２パート及びベースパートによるバッキング演奏を行わないことを示し、『０』の場合はこれらのバッキング演奏を行うことを示す。
【００２６】
ステップ５５：バッキング指定データに記憶されているデータがオフデータではないと前ステップ５３で判定されたので、ここでは、バッキキングオフフラグＢＡＣＯＦＦに『０』をセットし、以後、コード１パート、コード２パート及びベースパートによるバッキング演奏が行われるようにする。
ステップ５６：前ステップ５２で読み出されたバッキング指定データがコンティニューデータかどうかを判定し、コンティニューデータ（ＹＥＳ）の場合はステップ５８に進み、そうでない（ＮＯ）場合はステップ５７に進む。
【００２７】
ステップ５７：ステップ５２で読み出されたバッキング指定データがオフデータでもコンティニューデータでもないとステップ５３及びステップ５６で判定されたということは、ステップ５２で読み出されたバッキング指定データがバッキングパートのパターン番号を示すデータということになるので、ここではバッキングパターンレジスタＢＡＣＫＩＮＧにそのバッキングパートのパターン番号を格納する。
ステップ５８：バッキングパターンレジスタＢＡＣＫＩＮＧに格納されているパターン番号で指定されるバッキングパートの演奏パターンデータの各パートのヘッダ情報（音色など）を読み出して各パート毎に音色情報などを設定する。
【００２８】
ステップ５９：バッキングパートの各パート（コード１パート、コード２パート及びベースパート）の読み出しポインタを各パートの先頭データ（最初のデュレーションデータ）のアドレス位置にセットする。
ステップ５Ａ：ステップ５９でセットされた各パートの読み出しポインタのアドレス位置から先頭データ（デュレーションデータ）を読み出し、それぞれのパートのデュレーションレジスタ（コード１用デュレーションレジスタＤＵＲ３、コード２用デュレーションレジスタＤＵＲ４及びベース用デュレーションレジスタＤＵＲ５）に、対応するパートのデュレーションデータを格納する。
【００２９】
ステップ５Ｂ：選択されているソングデータのパターンシーケンスデータの先頭データ（リズムパートのパターン番号）を読み出す。
ステップ５Ｃ：前ステップ５Ｂで読み出されたリズムパートのパターン番号に基づいたリズム初期処理を実行する。このリズム初期処理は、図２（Ｂ）のリズムパートのパターンデータからヘッダ情報及びデュレーションデータを読み出し、各種フラグやレジスタなどへの設定を行うものであり、その詳細は図６に示されている。
【００３０】
ステップ５Ｄ：選択されているソングデータのコードシーケンスデータの先頭データ（デュレーションデータ）を読み出し、それをコード進行用デュレーションレジスタＤＵＲ２に格納する。
ステップ５Ｅ：前ステップ５Ｄでコードシーケンスデータの先頭データが読み出されたので、コード進行読み出しポインタを次のデータ読み出し位置に進める。
【００３１】
図６は図５のステップ５Ｃの「リズム初期処理」の詳細を示す図である。このリズム初期処理は次のように実行される。なお、このリズム初期処理は図８のリズム読み出し処理でも実行されるものである。
まず、リズム初期処理では、リズム読み出しポインタをパターン番号で指定されるリズムパターンの先頭アドレスにセットする。
その先頭アドレスから先頭データ（デュレーションデータ）を読み出し、それをリズム用デュレーションレジスタＤＵＲ１に格納する。
次のデータ読み出しに備えて、リズム読み出しポインタを次のデータ読み出し位置に進める。
【００３２】
図７は４分音符当たり９６回の割り込みで実行されるタイマ割り込み処理である。このタイマ割り込み処理は次のように実行される。
まず、走行状態フラグＲＵＮが『１』かどうかを判定し、『１』（ＹＥＳ）の場合は次のステップ以下に進み、「リズム読み出し処理」、「コード読み出し処理」、「バッキング読み出し処理」及び「チェイン・リピート処理」を順番に実行し、『０』（ＮＯ）の場合はリターンし、次の割り込みタイミングまで待機する。
【００３３】
図８は図７の「リズム読み出し処理」の詳細を示すフローチャート図である。このリズム読み出し処理は次のようなステップで順番に実行される。
ステップ８１：リズム用デュレーションレジスタＤＵＲ１の格納値が『０』かどうかを判定し、『０』（ＹＥＳ）の場合は次のステップ８２に進み、『０』でない（ＮＯ）場合はステップ８９にジャンプする。
ステップ８２：図２（Ｂ）のリズムパートの演奏パターンデータの中の、指定されたパターン番号に対応するリズムパターンにおけるリズム読み出しポインタの示すアドレス位置からデータを読み出す。
【００３４】
ステップ８３：前ステップ８２で読み出されたデータがリズムパターンのエンドデータかどうかを判定し、エンドデータの場合は次のステップ８Ａに進み、そうでない（ＮＯ）場合はステップ８４に進む。
ステップ８４：前ステップ８２で読み出されたデータがデュレーションデータであるかどうかを判定し、デュレーションデータ（ＹＥＳ）の場合はステップ８７に進み、そうでない場合はステップ８５に進む。
【００３５】
ステップ８５：読み出されたデータがエンドデータでもデュレーションデータでもなく、イベントデータであると前ステップ８３及びステップ８４で判定されたので、ここでは、そのイベントデータを音源回路８に出力する。
ステップ８６：リズム読み出しポインタを次のデータ読み出し位置に進め、その位置からデータを読み出してステップ８３にリターンする。
【００３６】
ステップ８７：読み出されたデータがデュレーションであると前ステップ８４で判定されたので、ここでは、そのデュレーションデータをリズム用デュレーションレジスタＤＵＲ１に格納する。
ステップ８８：リズム読み出しポインタを次のデータ読み出し位置に進める。ステップ８９：リズム用デュレーションレジスタＤＵＲ１の格納値を１だけデクリメント処理する。
【００３７】
ステップ８Ａ：読み出されたデータがリズムパターンのエンドデータであると前ステップ８３で判定されたので、こんどはパターンシーケンスデータの読み出しポインタを進め、その位置のデータを読み出す。
ステップ８Ｂ：前ステップ８Ａで読み出されたデータがパターンシーケンスの終わりを示すエンドデータかどうかを判定し、エンドデータ（ＹＥＳ）の場合はステップ８Ｃに進み、そうでない（ＮＯ）場合はステップ８Ｄに進む。
【００３８】
ステップ８Ｃ：前ステップ８Ａで読み出されたパターンシーケンスデータがエンドデータだと前ステップ８Ｂで判定されたので、ここでは、エンドフラグに『１』をセットし、図９の「コード読み出し処理」を実行するために、リターンする。エンドフラグは『１』の場合に１曲分のソングデータの自動演奏処理が終了したことを示し、『０』の場合にはそのソングデータに対する自動演奏処理中であることを示す。
【００３９】
ステップ８Ｄ：図６のリズム初期処理を行う。すなわち、読み出されたデータがリズムパターンのエンドデータであると前ステップ８３で判定され、ステップ８Ｂでパターンシーケンスデータは未だエンドデータでないと判定されたということは、図２（Ｂ）のある特定のパターン番号のリズム読み出し処理が終了し、パターンシーケンスデータに従って今度は別のパターン番号に対してリズム読み出し処理を行わなければならないことを意味する。従って、ここでは、図６のリズム初期処理を行い、パターンシーケンスデータのパターン番号で指定されるリズムパターンの先頭アドレスにリズム読み出しポインタをセットし、対応するリズムパターンのデュレーションデータを読み出して、それをリズム用デュレーションレジスタＤＵＲ１に格納し、図９の「コード読み出し処理」を実行するために、リターンする。
【００４０】
図９は図７の「コード読み出し処理」の詳細を示すフローチャート図である。このコード読み出し処理は次のようなステップで順番に実行される。
ステップ９１：コード進行用デュレーションレジスタＤＵＲ２の格納値が『０』かどうかを判定し、『０』（ＹＥＳ）の場合は次のステップ９２に進み、『０』でない（ＮＯ）場合はステップ９７にジャンプする。
ステップ９２：図２（Ａ）のコードシーケンスデータにおけるコード進行読み出しポインタの示すアドレス位置からデータを読み出す。
ステップ９３：ステップ９２で読み出されたデータがコードシーケンスのエンドデータかどうかを判定し、エンドデータでない（ＮＯ）場合は次のステップ９４に進み、エンドデータ（ＹＥＳ）の場合は図１０のバッキング読み出し処理を実行するためにリターンする。
ステップ９４：読み出されたデータがエンドデータでないと前ステップ９３で判定されたということは、コードデータが読み出されたことを意味するので、ここでは、その和音の根音を示すルートデータをルートレジスタＲＯＯＴに格納し、和音の種類を示すタイプデータをタイプレジスタＴＹＰＥに格納する。
【００４１】
ステップ９５：コード進行読み出しポインタを次のデータ読み出し位置に進め、そこからデュレーションデータを読み出し、それをコード進行用デュレーションレジスタＤＵＲ２に格納する。
ステップ９６：コード進行読み出しポインタを次のデータ読み出し位置に進める。
ステップ９７：コード進行用デュレーションレジスタＤＵＲ２を１だけデクリメント処理して、図１０のバッキング読み出し処理を実行するためにリターンする。
【００４２】
図１０は図７の「バッキング読み出し処理」の詳細を示すフローチャート図である。このバッキング読み出し処理は次のようなステップで順番に実行される。
ステップ１０１：バッキングオフフラグＢＡＣＯＦＦが『０』かどうかを判定し、『０』（ＹＥＳ）の場合は次のステップ１０２に進み、『１』（ＮＯ）の場合はリターンし、図１１の「チェイン・リピート処理」を実行する。
ステップ１０２：コード１用デュレーションレジスタＤＵＲ３の格納値が『０』かどうかを判定し、『０』（ＹＥＳ）の場合は次のステップ１０２に進み、『０』でない（ＮＯ）場合はステップ１０Ａにジャンプする。
【００４３】
ステップ１０３：図２（Ａ）のバッキング指定データで指定されたバッキングパートのパターン番号に対応するコード１パートの演奏パターンデータにおけるコード１読み出しポインタのアドレス位置からデータを読み出す。
ステップ１０４：前ステップ１０３で読み出されたデータがコード１パートの演奏パターンデータのエンドデータかどうかを判定し、エンドデータの場合は次のステップ１０Ｂに進み、そうでない（ＮＯ）場合はステップ１０５に進む。
ステップ１０５：前ステップ１０３で読み出されたデータがデュレーションデータかどうかを判定し、デュレーションデータ（ＹＥＳ）の場合はステップ１０８に進み、そうでない場合はステップ１０６に進む。
【００４４】
ステップ１０６：読み出されたデータがエンドデータでもデュレーションデータでもなく、イベントデータであるとステップ１０４及びステップ１０５で判定されたので、ここでは、その読み出されたイベントデータのノートナンバをルートレジスタＲＯＯＴ内のルートデータ及びタイプレジスタＴＹＰＥ内のタイプデータで修正してから音源回路８に出力する。
ステップ１０７：コード１読み出しポインタを次のデータ読み出し位置に進め、その位置のデータを読み出してステップ１０４にリターンする。以後、このステップ１０４〜１０７の処理をデュレーションデータ又はエンドデータが読み出されるまで繰り返し実行する。
【００４５】
ステップ１０８：読み出されたデータがデュレーションであるとステップ１０５で判定されたので、ここでは、そのデュレーションデータをコード１用デュレーションレジスタＤＵＲ３に格納する。
ステップ１０９：コード１読み出しポインタを次のデータ読み出し位置に進める。
ステップ１０Ａ：コード１用デュレーションレジスタＤＵＲ３の値を１だけデクリメント処理する。
【００４６】
ステップ１０Ｂ：読み出されたデータがコード１パートの演奏パターンデータのエンドデータであるとステップ１０４で判定されたので、コード１読み出しポインタをそのコード１パートの先頭アドレスにセットする。
ステップ１０Ｃ：コード１読み出しポインタの示すコード１パートの演奏パターンデータの先頭データ（デュレーションデータ）を読み出し、それをコード１用デュレーションレジスタＤＵＲ３に格納する。
ステップ１０Ｄ：コード１読み出しポインタを次のデータ読み出し位置に進め、ステップ１０Ｅに進む。
【００４７】
ステップ１０Ｅ：このステップは、上述のステップ１０１〜１０Ｄと同様な処理をコード２パートの演奏パターンデータの読み出し処理に対して行うものであり、その詳細は省略してある。
ステップ１０Ｆ：このステップも、上述のステップ１０１〜１０Ｄと同様な処理をベースパートの演奏パターンデータの読み出し処理に対して行うものであり、その詳細は省略してある。
【００４８】
図１１は図７の「チェイン・リピート処理」の詳細を示すフローチャート図である。このチェイン・リピート処理は自動演奏の演奏モードとして２種類存在するチェインモードとリピートモードに対応した処理である。
ここでチェインモードとは、ソング番号の連続している複数のソングを連続して演奏するモードであり、１つのソングに対する演奏が終了した時点で次のソング番号のソングに対する演奏を行う。
また、リピートモードとは、所定のソングに対する演奏を停止指示があるまで繰り返し行うことである。このとき、演奏モードがリピートモードだけの時は、１つのソングに対する演奏を繰り返し行い、演奏モードがリピートモードとチェインモードの両モードの場合には、チェイングループを構成するソングに対する演奏を繰り返し行う。
【００４９】
例えば、ソングデータが図２（Ａ）のソング１、ソング２、ソング３、ソング４、ソング６、ソング７、ソング８に記憶され、ソング５に記憶されていない場合に、演奏モードがチェインモードになると、電子楽器はソング１からソング４までのソング番号の連続したグループを第１のチェイングループとし、ソング６からソング８までを第２のチェイングループとして、チェインモードによる演奏を行う。従って、このような場合に、ソング１から演奏を開始すると、電子楽器はソング１の演奏が終了した時点で、次のソング２の演奏を開始し、以後順番にソング３、ソング４の演奏を行い、ソング４の演奏が終了した時点で演奏を終える。また、ソング３から演奏を開始すると、電子楽器はソング３の演奏が終了した時点で次のソング４の演奏を行い、ソング４の演奏が終了した時点で演奏を終える。さらに、このとき、演奏モードがリピートモードとチェインモードの両モードの場合には、ソング４の演奏が終了した時点で、再びそのチェイングループの先頭に戻り、ソング１から順番にソング２、ソング３、ソング４の演奏を繰り返し行う。
このようなチェイン・リピート処理は次のようなステップで順番に実行される。
【００５０】
ステップ１１１：エンドフラグが『１』かどうかを判定し、『１』（ＹＥＳ）の場合は次のステップ１１２に進み、『０』（ＮＯ）の場合は図７にリターンし、次の割り込みタイミングまで待機する。
ステップ１１２：前ステップ１１１でエンドフラグが『１』だと判定されたので、ここでは、以降の処理に備えてエンドフラグを『０』にリセットする。
ステップ１１３：演奏モードがチェインモードかどうかを判定し、チェインモード（ＹＥＳ）の場合はステップ１１７に進み、そうでない（ＮＯ）場合はステップ１１４に進む。
【００５１】
ステップ１１４：前ステップ１１３で現在の演奏モードがチェインモードでないと判定されたので、ここでは、リピートモードかどうかを判定し、リピートモードでない（ＮＯ）場合はステップ１１５に進み、リピートモード（ＹＥＳ）の場合は１１６に進む。
ステップ１１５：前ステップ１１３及びステップ１１４で現在の演奏モードがチェインモードでもリピートモードでもない通常の演奏モードであると判定されたので、演奏を停止するために走行状態フラグＲＵＮを『０』にリセットしてリターンする。従って、これ以降は、タイマ割り込み処理の最初のステップで走行状態フラグＲＵＮが『０』だと判定されるようになるので、図７のリズム読み出し処理、コード読み出し処理、バッキング読み出し処理、チェイン・リピート処理のいずれも実行されなくなり、演奏停止状態となる。
【００５２】
ステップ１１６：前ステップ１１３及びステップ１１４で現在の演奏モードがリピートモードだと判定されたので、現在演奏中のソングを繰り返し演奏するために、同じソングデータを選択する。これによって、次のステップ１１Ｃで同じソングデータに対するソング初期処理が行われる。
ステップ１１７：前ステップ１１３で現在の演奏モードがチェインモードだと判定されたので、次の番号のソングが有るか、すなわちソング番号が連続しており、現在演奏中のソングがチェイングループで最も大きなソング番号かどうかを判定し、次のソング有り（ＹＥＳ）の場合はステップ１１８に進み、次のソング無し（ＮＯ）の場合はステップ１１９に進む。
【００５３】
ステップ１１８：前ステップ１１７で次のソング有り、すなわち現在演奏中のソングがチェイングループの途中だと判定されたので、ここでは、次のソングデータを選択する。これによって、次のステップ１１Ｃで次のソングデータに対するソング初期処理が行われる。
ステップ１１９：前ステップ１１３で現在の演奏モードがチェインモードだと判定され、前ステップ１１７で次のソング無し、すなわち現在演奏中のソングがチェイングループの中で最も大きなソング番号だと判定されたので、ここでは、現在の演奏モードがリピートモードかどうかを判定し、リピートモードでない（ＮＯ）場合はステップ１１Ｄに進み、リピートモード（ＹＥＳ）の場合は１１Ａに進む。
【００５４】
ステップ１１Ａ：前ステップ１１３、ステップ１１７及びステップ１１９によって現在の演奏モードがチェインモードとリピートモードの両モードであり、現在演奏中のソングがチェイングループの中で最も大きいソング番号だと判定されたので、現在演奏中のソング番号よりも１つ前の番号のソングが存在するかどうかを判定し、１つ前の番号のソング無し（ＮＯ）の場合は次のステップ１１Ｂに進み、１つ前の番号のソング有り（ＹＥＳ）の場合は、そのソング番号を一時的に記憶しておき、さらにステップ１１Ａの判定を１つ前の番号のソング無し（ＮＯ）と判定されるまで繰り返し実行する。このステップ１１Ａによって、チェイングループの中で最も小さなソング番号が特定されるようになる。
【００５５】
ステップ１１Ｂ：前ステップ１１Ａの判定を経ることによって、チェイングループの中で最も小さなソング番号を特定できたので、その番号の該ソングデータを選択する。これによって、次のステップ１１Ｃで該ソングデータに対するソング初期処理が行われる。
ステップ１１Ｃ：図５のソング初期処理をステップ１１６、ステップ１１８又はステップ１１Ｂで選択されたソングに対して実行する。
【００５６】
ステップ１１Ｄ：前ステップ１１３、ステップ１１７及びステップ１１９によって現在の演奏モードがチェインモードであるがリピートモードではなく、演奏中のソングがチェイングループの中で最も大きいソング番号だと判定されたので、チェインモードによる演奏を停止するために走行状態フラグＲＵＮを『０』にリセットしてリターンする。従って、これ以降は、タイマ割り込み処理の最初のステップで走行状態フラグＲＵＮが『０』だと判定されるようになるので、図７のリズム読み出し処理、コード読み出し処理、バッキング読み出し処理、チェイン・リピート処理のいずれも実行されなくなり、演奏停止状態となる。
【００５７】
このチェイン・リピート処理を利用することによって、より効果的な演奏を行うことができる。例えば、曲の途中でバッキングパート（コード１パート、コード２パート及びベースパート）のバッキング演奏を変化したい場合には、ソング１とソング２とからなるチェイングループで１曲分のソングデータを構成し、ソング１のバッキング指定データにコンティニューデータを記憶しておき、ソング２のバッキング指定データにバッキングパターン２を記憶しておく。そして、予めパネルスイッチ１１でバッキングパターン１を選択し、さらに演奏モードをリピートモード及びチェインモードの両モードに設定しておいて、ソング１の演奏を開始する。すると、バッキングパターン１に基づいたソング１の演奏が始まり、このソング１の演奏が終了すると、チェインモードによって今度はバッキングパターン２に基づいたソング２の演奏が始まる。ソング２の演奏が終了すると、今度はリピートモードによってソング１が再び演奏されるようになる。このとき、ソング１のバッキング指定データはコンティニューなので、ソング１はバッキングパターン２に基づいて演奏されるようになる。すなわち、バッキングパターン１によるソング１の演奏、バッキングパターン２によるソング２の演奏、バッキングパターン２によるソング１の演奏という具合に、ソング１のバッキングパターンを曲の途中で変更することができる。
【００５８】
なお、上述の実施例では、演奏モードがチェインモードの場合に、ソング番号の順に複数曲を連続演奏するようにしたが、任意の順序で演奏できるようにしてもよい。例えば、ソングの演奏順序を予めテーブルとして記憶しておき、その順序に従って演奏するようにしてもよい。また、各ソング毎に次に演奏する曲を設定し、記憶しておくようにしてもよい。繰り返しについても、予めどのように繰り返し演奏するかを設定し、記憶しておくようにしてもよい。例えば、ソング１を２回繰り返し、その次にソング２を４回繰り返し、といった具合に設定する。
【００５９】
また、上述の実施例では自動演奏装置を内蔵した電子楽器について説明したが、自動演奏処理を行うシーケンサモジュールと、音源回路からなる音源モジュールとがそれぞれ別々に構成され、各モジュール間のデータの授受を周知のＭＩＤＩ規格で行うように構成されたものにも同様に適用できることは言うまでもない。
さらに、上述の実施例では、本発明を自動演奏に適用した場合について説明したが、これに限らず自動リズム演奏、自動伴奏にも適用してもよいことは言うまでもない。
【００６０】
上述の実施例では、曲の進行に従って変化する演奏パートとしてリズムパートを、曲の進行に従って変化しない演奏パートとしてベースパート、コード１パート及びコード２パートの３つのパートを演奏する自動演奏装置について説明したが、これに限らず、曲の進行に従って変化する演奏パートとしてメロディ演奏に関するパートを１又は複数設けてもよいことはいうまでもない。このとき、リズムパートは有ってもなくてもよい。また、曲の進行に従って変化しない演奏パートは上記の３つのパートに限らず、これらの内の１又は２つであってもよく、これら以外のパートの演奏であってもよい。また、鍵盤９から演奏情報をメロディパートの演奏として発音処理してもよい。
【００６１】
また、上述の実施例ではベースパート、コード１パート及びコード２パートの３つのパートを１つの組とし、パターン番号を指定することによって３つのパートを全て指定するようにしたが、それぞれ別々のパターン番号を付与し、各演奏パート独立してパターン番号を指定するようにしてもよい。また、パターンの番号にてパターンを指定するものに限らず、パターン名称等にてパターンを指定するようにしてもよい。
【００６２】
【発明の効果】
この発明によれば、入力操作が容易で、かつ、自動演奏データの容量増大を抑制し、メモリを有効に利用することができるという効果がある。
【図面の簡単な説明】
【図１】この発明に係る自動演奏装置を適用した電子楽器の一実施例を示すハード構成ブロック図である。
【図２】図１の演奏情報メモリに記憶されているソングデータ及び演奏パターンデータの構成例を示す図である。
【図３】図１の電子楽器のＣＰＵが処理するメインルーチンの一例を示す図である。
【図４】図３の「スイッチ処理」の一例を示す図であり、図４（Ａ）はパネルスイッチ上のスタートスイッチが操作された場合の「スタートスイッチ処理」を示し、図４（Ｂ）はストップスイッチが操作された場合の「ストップスイッチ処理」を示す。
【図５】図４（Ａ）又は図１１の「ソング初期処理」の詳細を示す図である。
【図６】図５又は図８の「リズム初期処理」の詳細を示す図である。
【図７】４分音符当たり９６回の割り込みで実行されるタイマ割り込み処理の一例を示す図である。
【図８】図７の「リズム読み出し処理」の詳細を示すフローチャート図である。
【図９】図７の「コード読み出し処理」の詳細を示すフローチャート図である。
【図１０】図７の「バッキング読み出し処理」の詳細を示すフローチャート図である。
【図１１】図７の「チェイン・リピート処理」の詳細を示すフローチャート図である。
【符号の説明】
１…ＣＰＵ、２…プログラムメモリ、３…ワーキングメモリ、４…演奏情報メモリ、５…押鍵検出回路、６…表示回路、７…スイッチ検出回路、８…音源回路、９…鍵盤、１０…表示部、１１…パネルスイッチ、１２…デジタル−アナログ変換器、１３…サウンドシステム、１４…タイマ、１５…データ及びアドレスバス
【図１】
0003557667.tif 000002
【図２】
0003557667.tif 000003
【図３】
0003557667.tif 000004
【図４】
0003557667.tif 000005
【図７】
0003557667.tif 000006
【図５】
0003557667.tif 000007
【図６】
0003557667.tif 000008
【図９】
0003557667.tif 000009
【図８】
0003557667.tif 000010
【図１０】
0003557667.tif 000011
【図１１】
0003557667.tif 000012