図1は、本発明に係る自動伴奏データ生成方法の一実施例を実現するための装置(以下、自動伴奏データ生成装置と言う)のハードウェア構成ブロック図である。この自動伴奏データ生成装置は、必ずしも自動伴奏データ生成のための専用装置として構成されている必要はなく、パーソナルコンピュータ、携帯端末装置、電子楽器など、コンピュータ機能を持つ任意の装置又は機器において、本発明に係る自動伴奏データ生成用のアプリケーションプログラムをインストールしてなるものであればよい。この自動伴奏データ生成装置のハードウェア構成は、コンピュータにおいて周知の構成、例えば、CPU(中央処理ユニット)1、ROM(リードオンリメモリ)2、RAM(ランダムアクセスメモリ)3、文字及び記号等を入力するためのキーボート及びマウスを含む入力装置4、ディスプレイ5、プリンタ6、不揮発的な大容量メモリであるハードディスク7、USBメモリ等の可搬媒体8のためのメモリインターフェイス(I/F)9、音源回路ボード10、スピーカ等のサウンドシステム11、外部の通信ネットワークに接続するための通信インターフェイス(I/F)12などを含む。ROM2及び/又はハードディスク7には、本発明に係る自動伴奏データ生成用のアプリケーションプログラム及びその他のアプリケーションプログラム並びに制御プログラムが非一過的に記憶される。
図1において、自動伴奏データ生成装置は、さらに、ユーザによるリアルタイムの音楽演奏を可能にするための適宜の演奏操作子13(例えば音楽演奏用鍵盤)を含む。この演奏操作子13は、該自動伴奏データ生成装置に常備されている形態からなるものに限らず、外部装置として構成され、該演奏操作子13から発生される演奏情報が有線又は無線式で該自動伴奏データ生成装置に与えられるようになっていてもよい。例えば、演奏操作子13が該自動伴奏データ生成装置に常備されている場合は、該演奏操作子13を用いてユーザが演奏した楽音が音源回路ボード10及びサウンドシステム11を介して該自動伴奏データ生成装置から発生可能であり、図2を参照して説明する一実施例においてはそのように構成されている。一方、演奏操作子13が外部装置として構成される場合は、該演奏操作子13を用いてユーザが演奏した楽音は、該外部装置が持つ音源及びサウンドシステムから発生されるようになっていてもよいし、あるいは、該演奏操作子13から有線又は無線式で該自動伴奏データ生成装置に与えられた演奏情報に基づいて該自動伴奏データ生成装置の音源回路ボード10及びサウンドシステム11を介して発生されるようになっていてもよい。また、本発明の一実施例に従って生成される自動伴奏データに基づく自動伴奏音は、典型的には、該自動伴奏データ生成装置の音源回路ボード10及びサウンドシステム11を介して発生されるが、これに限らず、別の装置の音源及びサウンドシステムから発生されるようになっていてもよい。
本発明の一実施例の詳細な説明を行なう前に、その特徴を要約して説明すると、該実施例においては、主たる音楽演奏に対して既存の伴奏パターンデータに基づく自動伴奏が付加されることを基本的構成としているが、その際に、伴奏パターンデータ通りの自動伴奏データを生成するのではなく、該主たる音楽演奏のアクセント位置に合うように、該自動伴奏のリズム感(アクセント)がリアルタイムに制御されるように、発音タイミングが調整された自動伴奏データを生成することを特徴としている。
図2は、CPU1による制御の下で実行される本発明の一実施例に係る処理のフローチャートである。ステップS1〜S5においては、ユーザによって行われる各種の事前設定処理を受け付ける。ステップS1においては、主たる音楽演奏に対して付加される自動伴奏の基となる伴奏パターンデータの選択を、ユーザから受け付ける。ユーザは、これから提供しようとする主たる音楽演奏のジャンルやリズムなどを考慮して、該主たる音楽演奏にふさわしい伴奏パターンデータを、既存のデータベースの中から選択する。なお、図2に示す実施例においては、主たる音楽演奏に対して付加される自動伴奏の基となる伴奏パターンデータは、音高調整の必要のないドラムパートのパターンデータからなるものであるとする。多数の既存の伴奏パターンデータ(テンプレート)が、内部のデータベース(例えばハードディスク7又は可搬媒体8)あるいは外部のデータベース(例えばインターネット上のサーバ)に記憶されており、ユーザは、これから提供しようとする主たる音楽演奏のジャンルやリズムなどを考慮して、該データベースから所望の伴奏パターンデータ(テンプレート)を選択する。なお、主たる音楽演奏の楽曲の全体を通じて同じ伴奏パターンデータを選択する(取得する)必要はなく、何小節分かの区間に分けて異なる伴奏パターンデータを選択する(取得する)ようにしてよい。また、同時に演奏される複数種類の伴奏パターンデータの組み合わせを同時に取得してもよい。
なお、一実施例において、既存の伴奏パターンデータのソースとして、公知の伴奏スタイルデータ(自動伴奏データ)のバンクを利用してよい。公知の伴奏スタイルデータ(自動伴奏データ)のバンクにおいては、各カテゴリー(Pop&Rock、あるいはCountry&Blues、Standard&Jazzなど)別に複数セットの伴奏スタイルデータを記憶しており、各1セットの伴奏スタイルデータは、イントロセクション、メインセクション、フィルインセクション、エンディングセクション等の各セクション別に伴奏データセットを含んでおり、1セクション分の伴奏データセットは、リズム1、リズム2、ベース、リズミック和音1、リズミック和音2、フレーズ1、フレーズ2等の複数パートの伴奏パターンデータ(テンプレート)を含んでいる。このような公知の伴奏スタイルデータ(自動伴奏データ)のバンクにおける最下位層のパート別の伴奏パターンデータ(テンプレート)が、前記ステップS1において取得される伴奏パターンデータである。この実施例において、ステップS1では、ある1セクション分の伴奏データセットのうちドラムパート(リズム1又はリズム2)のみの伴奏パターンデータを選択して取得する。なお、伴奏パターンデータ(テンプレート)の実体は、MIDI規格等に従って分散的に符号化されたデータであってもよいし、オーディオ波形データのような時間軸に沿うデータであってもよい。後者の場合、伴奏パターンデータ(テンプレート)には、実体的な波形データのみならず、発音タイミングを特定するための情報(管理データ)を少なくとも含むものとする。公知のように、1セクションを構成する各伴奏パターンデータは1以上の所定小節数からなっており、再生演奏時において該所定小節数の伴奏パターンデータを1又は複数サイクルだけループ再生(繰り返し再生)することにより、所望の小節数からなる該伴奏パターンに対応する伴奏音が生成される。
ステップS2においては、ユーザによる演奏設定(演奏操作子13を用いてリアルタイムに演奏しようとする主たる音楽演奏に関する音色、音量、演奏テンポ等、各種音楽要素について設定)を受け付ける。なお、ここで設定される演奏テンポは、前記伴奏パターンデータに基づく自動伴奏の演奏テンポとなる。また、ここで設定される音量とは、主たる音楽演奏のトータル音量及び/又は自動伴奏のトータル音量及び/又は主たる音楽演奏と自動伴奏の音量バランス等を含む。
ステップS3においては、前記ステップS1で選択された1または複数の伴奏パターンデータの伴奏イベントをそれぞれ1サイクル分展開することにより、伴奏予定音の時系列的なリストを作成する。このリスト内に含まれる各伴奏イベント(伴奏予定音)は、当該伴奏イベントに係る伴奏音の発音タイミングを特定する情報を少なくとも含み、さらに、発音タイミングの移動を制御するためのフラグである移動フラグを含み、必要に応じて当該伴奏イベントに係る伴奏音の音色(打楽器種類)を特定する情報等を含んでいてもよい。該移動フラグの値は"0"に初期設定され、発音タイミングが移動されていないことを示す。
ステップS4においては、主たる音楽演奏におけるアクセント位置を判定するためのルールの、ユーザによる設定を受け付ける。そのような判定ルールの一例は、アクセント位置を判定するための計量的基準となる閾値、アクセント位置を判定するための時間的基準となる音符分解能などであり、それらをユーザにより設定可能である。
ステップS5においては、伴奏音を調整するためのルールの、ユーザによる設定を受け付ける。そのような伴奏音調整ルールの一例は、伴奏イベントの発音タイミングを、主たる音楽演奏のアクセント位置に合うように、移動するための条件を設定すること(条件1)、あるいは、主たる音楽演奏のアクセント位置に合うような発音タイミングで伴奏イベントを追加生成するための条件を設定すること(条件2)、などからなる。例えば、そのような条件の設定は、ユーザが所望の確率値を設定することからなる。
ステップS6においては、ユーザによる、演奏開始指示を受け付ける。次のステップS7においては、ユーザによる演奏開始指示がなされたことを条件に、自動伴奏の再生時刻を前記ステップS2で設定したテンポに従って管理するためのタイマを起動する。ユーザは、演奏開始指示を行うと同時に、例えば演奏操作子13を用いて、主たる音楽のリアルタイム演奏を開始する。なお、この主たる音楽演奏は、前記ステップS2で設定したテンポに従い行うものとする。同時に、前記タイマの起動に応じて、前記伴奏予定音リストに基づく自動伴奏処理が主たる音楽演奏と同じテンポに従って開始される。一実施例として、図2においては、ユーザによる主たる音楽演奏に応じた楽音の発生と自動伴奏処理に応じた伴奏音の発生とが、以後のステップS8〜S19の処理によって制御される。
ステップS8においては、ユーザによる、演奏終了指示がなされたかを判断する。まだ演奏終了指示がなされていないならばステップS9に進む。ステップS9では、演奏操作子13を用いて行われているユーザによる主たる音楽演奏の演奏情報(以下、主演奏情報という)を取得し、現在の主演奏情報が或る音高の楽音の発音開始を指示するノートオンイベントであるか否かを判定する。ノートオンイベントであれば、ステップS10に進み、該ノートオンイベントに係る楽音(主たる音楽演奏の楽音)の発音を開始するための処理を行う。すなわち、前記音源回路ボード10及びサウンドシステム11等を介して、該ノートオンイベントに係る楽音が生成されるようにする。ステップS9がNOの場合、又はステップS10の後、ステップS11に進み、現在の主演奏情報が或る音高の楽音の発音終了を指示するノートオフイベントであるか否かを判定する。ノートオフイベントであれば、ステップS12に進み、該ノートオフイベントに係る楽音の発音を終了するための処理(公知の発音終了処理)を行う。
ステップS11がNOの場合、又はステップS12の後、ステップS13に進む。ステップS13においては、前記伴奏予定音リスト内において、前記タイマの現カウント値によって特定される現時点に発音タイミングを持つ(つまり、現時点で発音開始すべき)伴奏イベントが存在するか否かを判定する。YESであれば、ステップS14及びS15の処理を行う。ステップS14では、該現時点に発音タイミングを持つ伴奏イベントの移動フラグが"0"であれば、該伴奏イベントに基づき伴奏データを生成する。該生成された伴奏データに応じて、該伴奏データによって特定されるドラム音の波形データ(伴奏音)が前記音源回路ボード10及びサウンドシステム11等を介して発生される。
ステップS15では、該現時点に発音タイミングを持つ伴奏イベントの移動フラグが"1"であれば、該伴奏イベントに基づく伴奏データを生成することなく、該移動フラグを"0"にリセットする。なお、移動フラグが"0"であることは、当該伴奏イベントの発音タイミングが移動されていないことを示し、移動フラグが"1"であることは、後述するように、当該伴奏イベントの発音タイミングが現時点よりも前のアクセント位置に対応する時点に移動されたことを示す。すなわち、移動フラグが"1"である伴奏イベントについては、その発音タイミングが現時点よりも前のアクセント位置に対応する時点に移動されたことにより、既にそれに対応する伴奏データを生成済であるため、ステップS15では、再度伴奏データを生成することを行なわず、移動フラグを"0"にリセットすることのみを行なう。
ステップS13がNOの場合、又はステップS15の後、ステップS16に進む。ステップS16においては、前記主演奏情報に基づき、前記主たる音楽演奏のアクセント位置を抽出するための処理を実行し、現時点が前記主たる音楽演奏のアクセント位置に該当するか否かを判断する。
ステップS16において行なうアクセント位置を抽出するための具体的な手法(アルゴリズム)は、特定の手法(アルゴリズム)に限られるものではなく、何らかの基準に従って多少なりともアクセント位置を抽出できるものであればどのような手法(アルゴリズム)を採用してよい。アクセント位置を抽出するための手法(アルゴリズム)のいくつかの例を示すと次の通りである。例示したこれらの手法(アルゴリズム)から、1つのみを採用してもよく、あるいは、複数を組み合わせて採用してもよい。なお、主演奏情報の音楽的パート構成は、任意であってよく、例えば、メロディパートのみからなっていてもよいし、ピアノ演奏のように右手パート(メロディパート)と左手パート(伴奏又は和音パート)とからなっていてもよいし、メロディパートと和音バッキング、アルペジオ及びベース等の複数の伴奏パートとからなっていてもよい。
(1)主演奏情報が和音パートを含む場合、和音パート(若しくは和音パートとメロディパートを含めて)において各発音タイミング毎に同時に発音される音数を求め、該音数が所定の閾値以上の発音タイミング(つまり時間位置若しくは拍位置)を、アクセント位置として抽出する。すなわち、現時点で同時に発音される音数が所定の閾値以上であれば、現時点がアクセント位置であると判断する。これは、特にピアノ演奏などの場合、強調される箇所ほど同時に弾かれる音数が多い、という特性を考慮したものである。
(2)主演奏情報内にアクセント記号が存在する場合、該アクセント記号が存在する発音タイミング(時間位置)を、アクセント位置として抽出する。すなわち、現時点において該アクセント記号が存在するならば、現時点がアクセント位置であると判断する。
(3)主演奏情報がMIDIファイルである場合、ベロシティ値が所定閾値以上であるノートオンイベントの発音タイミング(時間位置)を、アクセント位置として抽出する。すなわち、現時点におけるノートオンイベントのベロシティ値が所定閾値以上であれば、現時点がアクセント位置であると判断する。
(4)主演奏情報(例えばメロディ)中の1フレーズにおける音の位置を考慮してアクセント位置として抽出する。例えば、1フレーズにおける最初の音あるいは最後の音は、アクセントが強いと思われるので、それらの音の発音タイミング(時間位置)を、アクセント位置として抽出する。あるいは、1フレーズ中で音高が最大又は最小の音も、アクセントが強いと思われるので、それらの音の発音タイミング(時間位置)を、アクセント位置として抽出する。すなわち、このようにして現時点において発生する主演奏情報に基づく楽音がアクセント位置として抽出されるならば、現時点がアクセント位置であると判断する。
(5)主演奏情報中のメロディ進行において、直前の音よりも音高が所定閾値以上高音側又は低音側に大きく変化している音は、アクセントが強いと思われるので、それらの音の発音タイミング(時間位置)を、アクセント位置として抽出する。すなわち、このようにして現時点において発生する主演奏情報に基づく楽音がアクセント位置として抽出されるならば、現時点がアクセント位置であると判断する。
(6)主演奏情報中のメロディ(あるいは伴奏)の各音を1小節内の拍位置を考慮して重み付けし、その重み付け値が所定閾値以上の音の発音タイミング(時間位置)を、アクセント位置として抽出する。例えば、1小節内の1拍目の音に最大の重みを与え、2拍目以降の表拍(オンビート)の音に2番目の重みを与え、裏拍(オフビート)の音にその音価に応じた重みを与える(例えば8分音符に3番目の重み、16分音符に4番目の重み)。すなわち、このようにして現時点において発生する主演奏情報に基づく楽音がアクセント位置として抽出されるならば、現時点がアクセント位置であると判断する。
(7)主演奏情報中のメロディ(あるいは伴奏)の各音の音価又はデュレーションを重み付けし、その重み付け値が所定閾値以上の音の発音タイミング(時間位置)を、アクセント位置として抽出する。すなわち、発音時間が長い音が、短い音よりも、よりアクセントが強いとみなす。すなわち、このようにして現時点において発生する主演奏情報に基づく楽音がアクセント位置として抽出されるならば、現時点がアクセント位置であると判断する。
ステップS16においては、主たる音楽演奏全体からアクセント位置を抽出してもよいし、主たる音楽演奏に含まれる個別の演奏パートに対応づけてアクセント位置を抽出してもよい。例えば、主たる音楽演奏に含まれる和音パートの演奏情報のみを対象にして、該和音パートに特有のアクセント位置を抽出するようにしてよい。例えば、主たる音楽演奏において所定音高よりも高音域において2以上の所定数の異なる音高が同時に演奏されるタイミングを和音パートのアクセント位置として抽出することが可能である。あるいは、主たる音楽演奏に含まれるベースパートの演奏情報のみを対象にして、該ベースパートに特有のアクセント位置を抽出するようにしてよい。例えば、主たる音楽演奏において所定音高よりも低音域の音高が演奏されるタイミングをベースパートのアクセント位置として抽出することが可能である。
現時点がアクセント位置であると判断されなかった場合、ステップS16のNOからステップS8に戻る。現時点がアクセント位置であると判断された場合、ステップS16のYESからステップS17に進む。ステップS17においては、現時点に後続する所定時間区間内において発音タイミングが到来する伴奏イベントを前記伴奏予定音リスト(選択された伴奏パターンデータ)の中から抽出する。この所定時間とは、例えば4分音符長未満の時間長のような、比較的短い時間である。次のステップS18においては、前記ステップS17において抽出された伴奏イベントがあれば、該抽出された伴奏イベントに基づき伴奏データを生成し、かつ、前記伴奏予定音リストに記憶する該伴奏イベントの前記移動フラグを"1"にセットする。該生成された伴奏データに応じて、該伴奏データによって特定されるドラム音の波形データ(伴奏音)が前記音源回路ボード10及びサウンドシステム11等を介して発生される。こうして、ステップS17及びS18によれば、現時点がアクセント位置であるとき、それよりも時間的後方の近傍(所定時間区間内)にある伴奏イベントの発音タイミングを現時点(アクセント位置)まで移動させ、該移動した伴奏イベントに基づく伴奏データ(伴奏音)を現時点(アクセント位置)に同期して生成することができる。これにより、順次進行する主音楽演奏のアクセント位置に合うように、該主音楽演と共に演奏される自動伴奏のリズム感(アクセント)をリアルタイムに制御することができ、伴奏パターンデータを用いた自動伴奏のアレンジをリアルタイムで行うことができる。なお、オプションとして、ステップS18の処理を、前記伴奏予定音リストにおいて現時点に対応する伴奏イベントが存在しておらず(前記ステップS13がNO)、かつ、前記ステップS17において抽出された伴奏イベントがあれば、該抽出された伴奏イベントに基づき伴奏データを生成し、かつ、前記伴奏予定音リストに記憶する該伴奏イベントの前記移動フラグを"1"にセットする、というように変形してもよい。
次のステップS19においては、前記伴奏予定音リストにおいて現時点に対応する伴奏イベントが存在しておらず(前記ステップS13がNO)、かつ、前記ステップS17において抽出された伴奏イベントがなければ、追加の伴奏データを生成する。該生成された追加の伴奏データに応じて、該伴奏データによって特定されるドラム音の波形データ(伴奏音)が前記音源回路ボード10及びサウンドシステム11等を介して発生される。こうして、ステップS19によれば、現時点がアクセント位置であるとき、現時点にも、それよりも時間的後方の近傍(所定時間区間内)にも、伴奏イベントが存在しなければ、追加の(新たな)伴奏データ(伴奏音)を現時点(アクセント位置)に同期して生成することができる。これによっても、順次進行する主音楽演奏のアクセント位置に合うように、該主音楽演と共に演奏される自動伴奏のリズム感(アクセント)をリアルタイムに制御することができ、伴奏パターンデータを用いた自動伴奏のアレンジをリアルタイムで行うことができる。なお、ステップS19は、オプションとして設けることができる処理であり、省略可能である。その後、処理はステップS8に戻る。
なお、前述したステップS16において主たる音楽演奏中の特定の演奏パートに応じてアクセント位置を抽出する場合は、該抽出されたアクセント位置の演奏パートに対応する特定の楽器のパートのみの伴奏イベントを伴奏予定音リストから抽出するように、前記ステップS17の処理を変形してもよい。例えば、和音パートのアクセント位置を抽出した場合は、スネアパートのみの伴奏イベントを伴奏予定音リストから抽出するようにしてよい。その場合は、ステップS18の処理において、スネアパートの伴奏イベントの発音タイミングを移動するようにしてよく、あるいは、ステップS19の処理において、スネアパートの伴奏データを追加生成するようにしてよい。また、ベースパートのアクセント位置を抽出した場合は、バスドラムパートのみの伴奏イベントを伴奏予定音リストから抽出するようにしてよい。その場合は、ステップS18の処理において、バスドラムパートの伴奏イベントの発音タイミングを移動するようにしてよく、あるいは、ステップS19の処理において、バスドラムパートの伴奏データを追加生成するようにしてよい。そのほか、伴奏パターンデータにおけるライドシンバルやクラッシュシンバル等他の打楽器の伴奏イベントを、移動又は追加生成するようにしてよい。更に、上述のように前記特定の演奏パートのアクセント位置に応じて前記特定のドラム楽器のパートの伴奏イベントを移動又は追加生成することに限らず、該特定の演奏パートのアクセント位置に応じて、その他の楽器の演奏パートの伴奏イベントを移動又は追加生成するようにしてもよい。例えば、前記特定の演奏パートのアクセント位置に応じて、上記例のように特定のドラム楽器のパートの伴奏イベントを移動又は追加生成することに加えて、メロディパートあるいはベースパート等において、ユニゾン音若しくはハーモニー音等を追加するようにしてよい。この場合、前記特定の演奏パートがメロディパートであれば、メロディパートにおいてユニゾン若しくはハーモニーとして音イベントを追加するようにしてよく、また、前記特定の演奏パートがベースパートであれば、ベースパートにおいてユニゾン若しくはハーモニーとして音イベントを追加するようにしてよい。
ステップS8〜S19のルーチンを繰り返す間に、前記タイマのカウント値は順次増加され、現在時点が順次進行し、これに伴い、自動伴奏が順次進行する。やがて、演奏を終了するためにユーザにより演奏終了指示がなされると、ステップS8はYESと判定し、ステップS20に進む。ステップS20では、前記タイマを停止し、現在発音中のすべての演奏音を減衰するために必要な消音処理を行なう。
なお、前記伴奏予定音リストに展開した1サイクル分の各伴奏パターンデータに関連して、該伴奏パターンデータを繰り返すべきサイクル数をそれぞれ記憶しておくようにしてもよい。自動伴奏の進行に伴って、該リスト内の該1伴奏パターンデータを該記憶したサイクル数分だけ繰り返し再生するように処理し、その後、次の伴奏パターンデータの繰り返し再生に移行するように処理すればよいが、これらの繰り返し及び移行処理の詳細については、図2では省略してある。なお、該伴奏パターンデータを繰り返すべきサイクル数を特に記憶しておくことなく、適宜の1又は複数サイクル数だけ繰り返したときに、任意にユーザが移行指示を与えることにより、該リスト内の次の伴奏パターンデータに再生が切り換わるように構成してもよく、そのための詳細についても図示を省略する。さらに別の例として、前記伴奏予定音リストにおいて、各伴奏パターンデータを、1サイクルに限らず、それぞれ必要サイクル数だけ繰り返して展開するようにしてもよい。
以上の構成において、CPU1がステップS9,S11の処理を実行するとき、主たる音楽の演奏情報を順次取得する手段として機能する。また、CPU1がステップS16の処理を実行するとき、取得した前記演奏情報に基づき、現時点が前記主たる音楽のアクセント位置に該当するか否かを判断する手段として機能する。また、CPU1がステップS1の処理を実行するとき、前記主たる音楽演奏と一緒に演奏されるべき自動伴奏の伴奏パターンデータを取得する手段として機能する。また、CPU1がステップS13,S14,S15,S17,S18の処理を実行するとき、前記取得した伴奏パターンデータに基づき自動伴奏を進行させ、現時点に発音タイミングを持つ前記伴奏パターンデータ中の伴奏イベントに基づき自動伴奏データを生成する手段として機能し、かつ、現時点が前記アクセント位置に該当すると判断されたとき、現時点に後続する所定時間区間内において発音タイミングが到来する伴奏イベントを前記伴奏パターンデータから抽出し、該抽出した伴奏イベントの発音タイミングを現時点に移動し、該移動した伴奏イベントに基づき前記自動伴奏データを生成する手段として機能する。さらに、CPU1がステップS19の処理を実行するとき、現時点がアクセント位置に該当すると判断されたとき、現時点及び現時点に後続する所定時間区間内において発音タイミングが到来する伴奏イベントが前記伴奏パターンデータ内に存在しないならば、現時点を発音タイミングとする自動伴奏データを追加生成する手段として機能する。
次に図3を参照して自動伴奏データ生成の具体例を説明する。図3(a)は、図2の前記ステップS1で選択された伴奏パターンデータの一例を示し、ハイハット、スネア、バスドラムの3種の打楽器音のパターンからなっている。図3(b)は、1小節分の主演奏情報の一例及びそれに基づき抽出されるアクセント位置の一例を示す。図3(b)は、主演奏情報における和音パートとベースパートのそれぞれに対応づけてアクセント位置を抽出する例を示している。この例においては、図2の前記ステップS16において、主演奏情報において所定音高(例えば中央の"ド")以上の高音域で3以上の異なる音高が同時に存在するタイミングを和音パートのアクセント位置として抽出するようにしており、図中、A1及びA2のタイミングが和音パートのアクセント位置として抽出される。また、図2の前記ステップS16において、主演奏情報において所定音高(例えば中央の"ド")よりも低音域で演奏音が存在するタイミングをベースパートのアクセント位置として抽出するようにしており、図中、A3及びA4のタイミングがベースパートのアクセント位置として抽出される。図3(c)は、図3(b)のようにして抽出されたアクセント位置に応じて、図3(a)に示された伴奏パターンデータに基づき生成される伴奏データの発音タイミングが移動される様子を示し、また、追加の伴奏データが新規に生成される様子を示す。
A1のタイミングで和音パートのアクセント位置が抽出されたとき、現時点に後続する所定時間区間内(例えば4分音符長未満)にスネアパートの伴奏イベントが存在しないので、前記ステップS17の処理においては、そのようなスネアパートの伴奏イベントが伴奏予定音リストから抽出されない。かつ、現時点においてもスネアパートの伴奏イベントが存在していないので、前記ステップS19の処理により、スネアパートの伴奏データを追加生成する。このようにして追加生成されるスネアパートの伴奏データが、図3(c)におけるB1のタイミングに示されている。
また、A2のタイミングで和音パートのアクセント位置が抽出されたとき、現時点においてもスネアパートの伴奏イベントが存在しているので、前記ステップS13のYESから前記ステップS14に至る処理により、該伴奏イベントに基づきスネアパートの伴奏データが生成される。このようにして生成されるスネアパートの伴奏データが、図3(c)におけるB2のタイミングに示されている。
また、A3のタイミングでベースパートのアクセント位置が抽出されたとき、現時点に後続する所定時間区間内(例えば4分音符長未満)にバスドラムパートの伴奏イベントが存在するので、前記ステップS17の処理においては、そのようなバスドラムパートの伴奏イベントが伴奏予定音リストから抽出される。従って、前記ステップS18の処理により、バスドラムパートの該伴奏イベントを現時点に移動し、該伴奏イベントに基づく伴奏データを現時点(A3のタイミング)で生成する。このようにして生成されるバスドラムパートの伴奏データが、図3(c)におけるB3のタイミングに示されている。
また、A4のタイミングでベースパートのアクセント位置が抽出されたとき、現時点に後続する所定時間区間内(例えば4分音符長未満)にベースパートの伴奏イベントが存在しないので、前記ステップS17の処理においては、そのようなベースパートの伴奏イベントが伴奏予定音リストから抽出されない。かつ、現時点においてもベースパートの伴奏イベントが存在していないので、前記ステップS19の処理により、ベースパートの伴奏データを追加生成する。このようにして追加生成されるベースパートの伴奏データが、図3(c)におけるB4のタイミングに示されている。
前記ステップS5で設定する伴奏音調整ルールの一例について説明する。前記ステップS18の処理において常に伴奏イベントの発音タイミングを移動することを行なう、又は、前記ステップS19の処理において常に追加の伴奏データを生成することを行なう、のではなく、前記ステップS5で設定された伴奏音調整ルールに従う条件が成立したときにのみ、それらの移動処理又は追加生成処理を行なうようにしている。例えば、自動伴奏音の各パート(スネア、バスドラム、ライドシンバル、クラッシュシンバル等)毎に、前記移動処理又は追加生成処理を行なう確率を、前記ステップS5で設定するようにしてよい。そして、各ステップS18、S19では、該設定された確率(条件)に従って、前記移動処理又は追加生成処理を行なうようにすればよい。
なお、上記実施例では、主たる音楽演奏は、演奏操作子13等を用いたユーザによるリアルタイム演奏として行われる例を説明した。しかし、これに限らず、例えば、通信ネットワークを介して外部からリアルタイムで送信されてくる演奏情報を、主たる音楽演奏の情報(主演奏情報)として使用するようにしてもよく、あるいは、この自動伴奏データ生成装置においてメモリに記録されている任意の楽曲の演奏情報を自動的に再生し、該再生された演奏情報を主たる音楽演奏の情報(主演奏情報)として使用するようにしてもよい。
また、上記実施例では、前記ステップS14,S18,S19等で生成した伴奏データに基づく伴奏音を、前記音源回路ボード10及びサウンドシステム11等を介して、音響的に発生するようにしている。しかし、これに限らず、伴奏音を即座に音響的に発生することなく、前記ステップS14,S18,S19等で生成した伴奏データを自動伴奏シーケンスデータとしてメモリに一旦記憶しておき、別の任意の機会に、該記憶した自動伴奏シーケンスデータに基づき自動伴奏音を音響的に発生するようにしてもよい。
上記実施例では、音楽演奏における強いアクセント位置を判定し、この強いアクセント位置に応じて伴奏イベントの移動及び/又は追加を行っている。しかし、これに限らず、音楽演奏における弱いアクセント位置を判定し、この弱いアクセント位置に応じて伴奏イベントの移動及び/又は消去若しくは減衰を制御するようにしてもよい。例えば、取得した音楽演奏情報に基づき、現時点が前記音楽の弱いアクセント位置に該当するか否かを判断し、現時点が弱いアクセント位置に該当すると判断されたとき、現時点及びそれより後の所定時間範囲内において発音タイミングが到来する伴奏イベントを前記伴奏パターンデータから抽出し、該抽出した伴奏イベントの発音タイミングを現時点から前記所定時間範囲より後に移動する、若しくは、該抽出した伴奏イベントを消去する、若しくは、該抽出した伴奏イベントの音量を減衰させる、等の制御を行うようにしてよい。これにより、伴奏演奏も弱いアクセント位置に同調して弱いアクセントを示すように制御できる。