図1は、本発明の実施例による伴奏データ生成装置100のハードウェア構成の一例を表すブロック図である。
伴奏データ生成装置100のバス6には、RAM7、ROM8、CPU9、検出回路11、表示回路13、記憶装置15、波形メモリ音源18、通信インターフェイス(I/F)21が接続される。
RAM7は、再生バッファ等のバッファ領域、フラグ、レジスタ、各種パラメータ等を記憶するCPU9のワーキングエリアを有する。例えば、後述する自動伴奏データは、このRAM7内の所定領域にロードされる。
ROM8には、各種データファイル(例えば、後述する自動伴奏データAA)、各種パラメータ及び制御プログラム、又は本実施例を実現するためのプログラム等を記憶することができる。この場合、プログラム等を重ねて、記憶装置15に記憶する必要は無い。
CPU9は、ROM8又は、記憶装置15に記憶されている制御プログラム又は本実施例を実現するためのプログラム等に従い、演算又は装置の制御を行う。タイマ10が、CPU9に接続されており、基本クロック信号、割り込み処理タイミング等がCPU9に供給される。
ユーザは、検出回路11に接続される設定操作子12を用いて、各種入力及び設定、選択をすることができる。設定操作子12は、例えば、スイッチ、パッド、フェーダ、スライダ、ロータリーエンコーダ、ジョイスティック、ジョグシャトル、文字入力用キーボード、マウス等、ユーザの入力に応じた信号を出力できるものならどのようなものでもよい。また、設定操作子12は、カーソルスイッチ等の他の操作子を用いて操作する表示装置14上に表示されるソフトスイッチ等でもよい。
本実施例では、ユーザは、設定操作子12を操作することにより、記憶装置15又はROM8等に記録された又は通信I/F21を介して外部機器から取得(ダウンロード)する自動伴奏データAAの選択、自動伴奏の開始および停止指示及びその他の設定操作を行う。
表示回路13は、ディスプレイ14に接続され、各種情報をディスプレイ14に表示することができる。ディスプレイ14は、伴奏データ生成装置100の設定のための各種情報等を表示することができる。
記憶装置15は、ハードディスク、FD(フレキシブルディスク又はフロッピーディスク(登録商標))、CD(コンパクトディスク)、DVD(デジタル多目的ディスク)、フラッシュメモリ等の半導体メモリ等の記憶媒体とその駆動装置の組み合わせの少なくとも1つで構成される。記憶媒体は、着脱可能であってもよいし、内蔵されていてもよい。記憶装置15及び(または)ROM8には、好ましくは複数の自動伴奏データAA及び、本発明の各実施例を実現するためのプログラムや、その他の制御プログラムを記憶することができる。なお、本発明の各実施例を実現するためのプログラムや、その他の制御プログラムを記憶装置15に記憶する場合は、これらをROM8に合わせて記憶する必要はない。また、一部のプログラムのみを記憶装置15に記憶し、その他のプログラムをROM8に記憶するようにしてもよい。
音源18は、例えば、波形メモリ音源であり、少なくとも波形データ(フレーズ波形データ)から楽音信号を生成可能なハードウェアもしくはソフトウェア音源であり、記憶装置15、ROM8又はRAM7等に記録された自動伴奏データ、自動演奏データ又は演奏操作子(鍵盤)22あるいは通信インターフェイス21に接続された外部機器等から供給される演奏信号、MIDI信号、フレーズ波形データ等に応じて楽音信号を生成し、各種音楽的効果を付与して、DAC20を介して、サウンドシステム19に供給する。DAC20は、供給されるデジタル形式の楽音信号をアナログ形式に変換し、サウンドシステム19は、アンプ、スピーカを含み、DA変換された楽音信号を発音する。
通信インターフェイス21は、USBやIEEE1394等の汎用近距離有線I/F、Ethernet(登録商標)等の汎用ネットワークI/F等の通信インターフェイス、MIDI I/Fなどの汎用I/F、無線LANやBluetooth(登録商標)等の汎用近距離無線I/F等の通信インターフェイス及び音楽専用無線通信インターフェイスのうち少なくとも1つで構成され、外部機器、サーバ等との通信が可能である。
演奏操作子(鍵盤等)22は、検出回路11に接続され、ユーザの演奏動作に従い、演奏情報(演奏データ)を供給する。演奏操作子22は、ユーザの演奏を入力するための操作子であり、ユーザが操作した操作子に対応する音高で、該ユーザの操作子に対する操作開始タイミング及び終了タイミングをそれぞれキーオン及びキーオフ信号として入力する。また、ユーザの演奏操作に応じてベロシティ値等の各種パラメータを入力することが可能である。
なお、演奏操作子(鍵盤等)22により入力される演奏情報には、後述するコード情報もしくはコード情報を生成するための情報が含まれる。なお、コード情報の入力には、演奏操作子(鍵盤等)22以外にも、設定操作子12や通信インターフェイス21に接続される外部機器を用いることもできる。
図2は、本発明の実施例による自動伴奏データAAの構成の一例を表す概念図である。
自動伴奏データAAは、1又は複数のパート(トラック)を含んで構成され、各伴奏パートは、少なくとも一つの伴奏パターンデータAPを含んで構成される。伴奏パターンデータAPは、1つのルート波形データRWと複数の選択波形データSWを含んで構成される。自動伴奏データAAは、伴奏パターンデータAPのような実体データに加えて、当該自動伴奏データの伴奏スタイル名、拍子情報、テンポ情報(フレーズ波形データPWの録音(再生)テンポ)、各伴奏パートの情報等を含む当該自動伴奏データ全体の設定情報を含んでいる。また、複数のセクションで構成される場合は、各セクションのセクション名(イントロ、メイン、エンディング等)、小節数(例えば、1小節、4小節、8小節等)を含んで構成される。
本発明の実施例による自動伴奏データAAは、例えば、ユーザが図1の演奏操作子22を用いてメロディラインを演奏する場合に、それに合わせて、少なくとも一つの伴奏パート(トラック)の自動伴奏を行うためのデータである。
自動伴奏データAAは、ジャズ、ロック、クラッシック等の音楽ジャンルに対応するとともに各ジャンルごとに複数種類のものが用意されており、識別番号(ID番号)や、伴奏スタイル名等で識別される。本実施例では、複数の自動伴奏データAAが、例えば、図1の記憶装置15又はROM8等に記憶されており、各自動伴奏データAAには、ID番号が付されている(「0001」、「0002」等)。
各自動伴奏データAAは、通常、複数のリズム種類、音楽ジャンル、テンポ等の伴奏スタイル毎に用意される。また、それぞれの自動伴奏データAAには、イントロ、メイン、フィルイン、エンディング等の楽曲の場面に合わせた複数のセクションが用意される。さらに、それぞれのセクションは、コードトラック、ベーストラック、ドラム(リズム)トラックなどの複数のトラックで構成される。本実施例では、説明の便宜上、自動伴奏データAAは、任意の1つのセクションで構成され、当該セクションが少なくとも和音を用いた伴奏を行うコードトラックを含む複数の伴奏パート(伴奏パート1(トラック1)〜伴奏パートn(トラックn))を含んでいるものとする。
伴奏パターンデータAPは、所定の基準音高(コードルート)における複数のコードタイプに対応し、それらのコードタイプの構成音を含む1つのルート波形データRWと1又は複数の選択波形データSW(以下、ルート波形データRW及び選択波形データSWの任意の一方又は双方を指すときにはフレーズ波形データPWとする)を含んで構成される。また、伴奏パターンデータAPは、実体データであるフレーズ波形データPWに加えて、属性情報として、当該伴奏パターンデータAPの基準音高情報(コードルート情報)、録音テンポ(自動伴奏データAAで一括して定義される場合は省略可)、長さ(時間または小節数等)、識別子(ID)、名前、含まれるフレーズ波形データ数などを保持している。
ルート波形データRWは、伴奏パターンデータAPが対応しているコードルートを主に用いた1〜複数小節の長さの伴奏演奏による楽音をデジタルサンプリングして作成されるフレーズ波形データである。すなわち、ルート波形データRWは、ルート基準のフレーズ波形データである。なお、ルート波形データRWには、コードの構成音以外の音高(非和声音)も含まれる場合がある。
選択波形データSWは、伴奏パターンデータAPが対応しているコードルートに対して、それぞれ長3度、完全5度、長7度(4声目)の構成音のうちの一つのみを用いた1〜複数小節の長さの伴奏演奏による楽音をデジタルサンプリングして作成されるフレーズ波形データである。なお、必要に応じてテンションコード用の構成音である長9度、完全11度、長13度のみをそれぞれ用いた選択波形データSWを用意してもよい。
ルート波形データRW及び選択波形データSWは、いずれも同一の基準音高(コードルート)を基準に作成されている。本実施例では、音高Cを基準に作成されているが、これに限るものではない。
フレーズ波形データPW(ルート波形データRW及び選択波形データSW)には、当該フレーズ波形データPWを特定することが可能な識別子が付与されている。本実施例では、「自動伴奏データAAのID(スタイル番号)−伴奏パート(トラック)番号−コードルートを表す番号(コードルート情報)−構成音情報(当該フレーズ波形データに含まれるコード構成音を表す情報)」の形式で、各フレーズ波形データPWに識別子が付与されている。なお、上記のような識別子を用いる以外の方法で、属性情報を各フレーズ波形データPWに付与するようにしても良い。
なお、フレーズ波形データPWは、自動伴奏データAA内に記憶されていても良いし、自動伴奏データAAとは別に記憶して、自動伴奏データAA内には、フレーズ波形データPWへのリンク情報LKのみを記憶するようにしても良い。
なお、図2に示す例では、各フレーズ波形データPWはルート(根音)を「C」として用意されているが、コードルート(根音)は「C」以外でも良く、さらに、一つのコードタイプについて複数(2〜12)のコードルート(根音)のフレーズ波形データPWを用意するようにしても良い。例えば、図3に示すように、全てのコードルート(12音)につて、伴奏パターンデータAPを用意することもできる。
また、図2に示す例では、選択波形データSWとして、長3度(半音距離数4)、完全5度(半音距離数7)、長7度(半音距離数11)に対応したフレーズ波形データを用意したが、これらに代えて、他の度数、例えば、短3度(半音距離数3)、短7度(半音距離数10)に対応したものを用意するようにしてもよい。
図4は、本発明の実施例によるコードタイプ別半音距離数テーブルの一例を表す概念図である。
本実施例では、ユーザの演奏操作等により入力されるコード情報のコードルートに応じてルート波形データRWをピッチチェンジし、コードルートおよびコードタイプに応じて1又は複数の選択波形データSWをピッチチェンジして、該ピッチチェンジしたルート波形データRWと1又は複数の選択波形データSWを合成して、入力コード情報のコードタイプ及びコードルートを基準とした伴奏フレーズに対応するフレーズ波形データ(合成波形データ)を生成する。
本実施例では、選択波形データSWは、長3度(半音距離数4)、完全5度(半音距離数7)、長7度(半音距離数11)、(長9度、完全11度、長13度)のみに対応し、その他の構成音に対応させるためにはコードタイプに応じてピッチチェンジをする必要がある。したがって、コードルートおよびコードタイプに応じて1又は複数の選択波形データSWをピッチチェンジする際に、図4に示すコードタイプ別半音距離数テーブルを参照する。
コードタイプ別半音距離数テーブルは、コードタイプごとに、コードルートから、コードルート、3度、5度、4声目のコード構成音までの半音距離数を記録したテーブルである。例えば、メジャーコード(Maj)の場合は、コードルート、3度、5度の構成音のコードルートからの半音距離数はそれぞれ、0、4、7となる。この場合、本実施例の選択波形データSWは、長3度(半音距離数4)、完全5度(半音距離数7)に対応したものが用意されているのでコードタイプに応じたピッチチェンジは必要がないが、例えば、マイナーセブンス(m7)の場合は、コードルート、3度、5度、4声目(例えば、7度)の構成音のコードルートからの半音距離数は、それぞれ、0、3、7、10となるので、長3度(半音距離数4)及び長7度(半音距離数11)に対応した選択波形データSWのピッチ(音高)をそれぞれ1半音下げる必要があることが、コードタイプ別半音距離数テーブルを参照してわかる。
なお、テンションコード用の構成音に対応する選択波形データSWを利用する場合には、コードタイプ別半音距離数テーブルに9度、11度、13度の構成音のコードルートからの半音距離を含める必要がある。
図5は、本発明の実施例によるメイン処理を表すフローチャートである。このメイン処理は、本発明の実施例による伴奏データ生成装置100の電源投入と同時に起動する。
ステップSA1で、メイン処理を開始し、ステップSA2で初期設定を行う。ここでの初期設定は、自動伴奏データAAの選択、コード取得方法(ユーザ演奏による入力、ユーザの直接指定による入力、コード進行情報による自動入力等)の設定、演奏テンポの設定、調設定等であり、例えば、図1の設定操作子12を用いて行う。また、自動伴奏処理開始フラグRUNを初期化(RUN=0)するとともに、タイマ、その他のフラグ、レジスタ等を初期化する。
ステップSA3では、ユーザによる設定変更操作を検出したか否かを判断する。ここでの設定変更操作は、自動伴奏データAAの再選択等、現在の設定を初期化する必要のある設定であり、例えば、演奏テンポの設定変更等は含まれない。設定変更操作を検出した場合は、YESの矢印で示すステップSA4に進む。設定変更操作を検出しない場合は、NOの矢印で示すステップSA5に進む。
ステップSA4では、自動伴奏停止処理を行う。自動伴奏停止処理は、例えば、タイマを停止し、フラグRUNを0に設定(RUN=0)し、発音中の自動伴奏による楽音の消音処理を行う。その後、SA2に戻り、検出した変更操作に従い再度初期設定を行う。なお、自動伴奏中でない場合には、そのままステップSA2に戻る。
ステップSA5では、メイン処理の終了操作(伴奏データ生成装置100の電源切断等)を検出したか否かを判断する。終了操作を検出した場合は、YESの矢印で示すステップSA23に進みメイン処理を終了する。検出しない場合はNOの矢印で示すステップSA6に進む。
ステップSA6では、ユーザによる演奏操作を検出したか否かを判断する。ユーザによる演奏動作の検出は、例えば、図1の演奏操作子22の操作による演奏信号の入力または、通信I/F21を介した演奏信号の入力の有無を検出することにより行う。演奏操作を検出した場合は、YESの矢印で示すステップSA7に進む、検出した演奏動作に基づく発音又は消音処理を行い、ステップSA8に進む。演奏操作を検出しない場合はNOの矢印で示すステップSA8に進む。
ステップSA8では、自動伴奏の開始指示を検出したか否かを判断する。自動伴奏の開始指示は、例えば、ユーザが図1の設定操作子12を操作することにより行う。自動伴奏開始指示を検出した場合は、YESの矢印で示すステップSA9に進む。開始指示を検出しない場合は、NOの矢印で示すステップSA13に進む。
ステップSA9では、フラグRUNを1に設定(RUN=1)に設定し、ステップSA10では、ステップSA2又はステップSA3で選択された自動伴奏データAAを、例えば、図1の記憶装置15等からRAM7の所定領域内等にロードする。その後、ステップSA11で、直前コードと現在コード及び合成波形データをクリアし、ステップSA12でタイマを起動して、ステップSA13に進む。
ステップSA13では、自動伴奏の停止指示を検出したか否かを判断する。自動伴奏の停止指示は、例えば、ユーザが図1の設定操作子12を操作することにより行う。自動伴奏停止指示を検出した場合は、YESの矢印で示すステップSA14に進む。停止指示を検出しない場合は、NOの矢印で示すステップSA17に進む。
ステップSA14では、タイマを停止し、ステップSA15では、フラグRUNを0に設定(RUN=0)に設定する。その後、ステップSA16で、自動伴奏データの生成処理を停止し、ステップSA17に進む。
ステップSA17では、フラグRUNが1に設定されているか否かを判断する。RUNが1の場合(RUN=1)の場合は、YESの矢印で示すステップSA18に進む。RUNが0の場合(RUN=0)の場合は、NOの矢印で示すステップSA3に戻る。
ステップSA18では、コード情報の入力を検出(コード情報を取得)したか否かを判断する。コード情報の入力を検出した場合には、YESの矢印で示すステップSA19に進み、検出しない場合には、NOの矢印で示すステップSA22に進む。
コード情報の入力を検出しない場合には、すでに何らかのコード情報に基づき自動伴奏生成中の場合と、有効なコード情報がない場合が含まれる。有効なコード情報がない場合には、コード情報を必要としない、例えば、リズムパートのみ伴奏データを生成するようにしても良い。あるいは、有効なコード情報が入力されるまで、ステップSA22に進まずに、ステップSA18の処理を繰り返すようにして、有効なコード情報が入力されるまで伴奏データの生成を待つようにしてもよい。
なお、コード情報の入力は、ユーザの図1の演奏操作子22等を用いた演奏操作により入力される。ユーザの演奏からのコード情報の取得は、例えば、鍵盤等の演奏操作子22の一部の領域であるコード鍵域の押鍵組み合わせから検出(この場合は押鍵に対応する発音は行わない)してもよく、鍵盤の全鍵域における所定タイミング幅での押鍵状態から検出するようにしてもよい。その他、周知のコード検出技術を利用可能である。なお、コード情報の入力は、演奏操作子22を利用したものに限らず、設定操作子12を利用して行ってもよい。その場合、例えば、コード情報をコードルート(根音)を表す情報(文字や数字)とコードタイプを表す情報(文字や数字)の組み合わせで入力するようにしてもよく、使用可能なコード情報を記号や番号(例えば、図3のテーブル参照)で入力するようにしてもよい。さらに、コード情報をユーザの入力によらずに、あらかじめ記憶しておいたコードシーケンス(コード進行情報)を所定のテンポで読みだして取得するようにしてもよく、再生中の曲データ等からコード検出を行い取得してもよい。
ステップSA19では、「現在コード」に設定されているコード情報を「直前コード」にセットし、ステップSA18で検出(取得)したコード情報を「現在コード」にセットする。
ステップSA20では、「現在コード」に設定されているコード情報と「直前コード」に設定されているコード情報とが同一であるか否かを判断する。同一である場合はYESの矢印で示すステップSA22に進み、同一でない場合は、NOの矢印で示すステップSA21に進む。なお、初回コード情報検出時もステップSA21に進む。
ステップSA21では、ステップSA10でロードされた自動伴奏データAAに含まれる各伴奏パート(トラック)について、「現在コード」に設定されているコード情報のコードタイプとコードルートに適合する合成波形データを生成して、「現在の合成波形データ」とする。なお、合成波形データの生成処理については、図6を参照して後述する。
ステップSA22では、ステップSA10でロードされた自動伴奏データAAに含まれる各伴奏パート(トラック)について、ステップSA21でセットされた「現在の合成波形データ」からタイマに適合する位置のデータを設定された演奏テンポにあわせて読み出し、読み出したデータを基に伴奏データを生成して出力する。その後、ステップSA3に戻り、以降の処理を繰り返す。
なお、自動伴奏データAAは、ステップSA2においてユーザが自動伴奏開始前に選択するかもしくはステップSA3において自動伴奏中に選択するようにしたが、予め記憶しておいたコードシーケンスデータ等を再生する場合などは、コードシーケンスデータ等に自動伴奏データAAの指定情報を含ませるようにして、それを読み出して自動的に選択するようにしても良い。また、デフォルトとして予め自動伴奏データAAが選択されるようにしても良い。
なお、選択した自動伴奏データAAの再生の開始及び停止指示は、ステップSA8及びステップSA13においてユーザの操作を検出して行ったが、ユーザによる演奏操作子22を用いた演奏の開始及び終了を検出して、選択した自動伴奏データAAの再生の開始及び停止を自動的に行うようにしても良い。
また、ステップSA13において自動伴奏の停止指示を検出した際に、直ちに自動伴奏を停止するようにしても良いが、再生中のフレーズ波形データPWの最後もしくは区切れ目(音の切れるところなど)まで自動伴奏を継続してから停止するようにしても良い。
図6は、図5のステップSA21で実行される合成波形データの生成処理を表すフローチャートである。自動伴奏データAAに複数の伴奏パートが含まれる場合は、この処理を伴奏パート数分繰り返す。なお、ここでは、図2に示すデータ構造において、入力コード情報が「Dm7」である場合の伴奏パート1に対する処理を例に説明する。
ステップSB1で、合成波形データ生成処理を開始し、ステップSB2では、図5のステップSA10でロードされた自動伴奏データAAの現在処理対象となっている伴奏パートに対応付けられている伴奏パターンデータAPを抽出し、「現在の伴奏パターンデータ」とする。
ステップSB3では、現在処理対象となっている伴奏パートに対応する合成波形データをクリアする。
ステップSB4では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの基準音高情報(コードルート情報)と「現在コード」に設定されているコード情報のコードルートとの差分(半音距離数)からピッチチェンジ量を算出して「基本チェンジ量」とする。なお、「基本チェンジ量」はマイナスとなる場合もある。基本コード用伴奏パターンデータAPaのコードルートは「C」であり、コード情報のコードルートは「D」であるので、「基本チェンジ量」は「2(半音距離数)」である。
ステップSB5では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPのルート波形データRWをステップSB4で算出した「基本チェンジ量」ピッチチェンジして「合成波形データ」に書き込む。すなわち、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPのルート波形データRWのコードルートの音高を「現在コード」に設定されているコード情報のコードルートと等しいものにする。したがって、基本コード用伴奏パターンデータAPaのコードルートのピッチ(音高)を2半音分上げて「D」にピッチチェンジする。
ステップSB6では、「現在コード」に設定されているコード情報のコードタイプにコードルートに対して3度(短3度、長3度、完全4度)の構成音が含まれるか否かを判断する。3度の構成音が含まれる場合には、YES矢印で示すステップSB7に進み、含まれない場合は、NOの矢印で示すステップSB13に進む。ここでは、「現在コード」に設定されているコード情報のコードタイプは「m7」であり、3度(短3度)の構成音が含まれるのでステップSB7に進む。
ステップSB7では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの3度の選択波形データSWの基準音(コードルート)からの半音距離数(本実施例では長3度なので「4」)を取得して「パターンの3度」とする。
ステップSB8では、「現在コード」に設定されているコード情報のコードタイプにおける基準音(コードルート)からの半音距離数を、例えば、図4に示すコードタイプ別半音距離数テーブルを参照して取得し、「コードの3度」とする。ここで、「現在コード」に設定されているコード情報のコードタイプが「m7」であるとすると、3度(短3度)の構成音の半音距離数は「3」である。
ステップSB9では、ステップSB7でセットした「パターンの3度」とステップSB8でセットした「コードの3度」が同一であるか否かを判断する。同一である場合は、YESの矢印で示すステップSB10に進む。同一でない場合は、NOの矢印で示すステップSB11に進む。「現在コード」に設定されているコード情報のコードタイプが「m7」である場合は、「パターンの3度」は「4」であり、「コードの3度」は「3」であるのでNOの矢印に従いステップSB11に進む。
ステップSB10では、基本チェンジ量に0を加算したもの、すなわち基本チェンジ量を「シフト量」としてセット(「シフト量」=0+「基本チェンジ量」)し、ステップSB12に進む。
ステップSB11では、「コードの3度」から「パターンの3度」を減算したものに「基本チェンジ量」を加算して「シフト量」としてセット(「シフト量」=「コードの3度」−「パターンの3度」+「基本チェンジ量」)し、ステップSB12に進む。ここでは、「シフト量」=3−4+2=1となる。
ステップSB12では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの3度の選択波形データSWをステップSB10又はSB11でセットした「シフト量」分ピッチチェンジして、「合成波形データ」に書き込まれている基本波形データBWと合成して、新たな「合成波形データ」とする。その後ステップSB13に進む。ここでは、3度の選択波形データSWのピッチ(音高)を1半音上げる。
ステップSB13では、「現在コード」に設定されているコード情報のコードタイプにコードルートに対して5度(完全5度、減5度、増5度)の構成音が含まれるか否かを判断する。5度の構成音が含まれる場合には、YES矢印で示すステップSB7に進み、含まれない場合は、NOの矢印で示すステップSB20に進む。ここでは、「現在コード」に設定されているコード情報のコードタイプは「m7」であり、5度(完全5度)の構成音が含まれるのでステップSB14に進む。
ステップSB14では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの5度の選択波形データSWの基準音(コードルート)からの半音距離数(本実施例では完全5度なので「7」)を取得して「パターンの5度」とする。
ステップSB15では、「現在コード」に設定されているコード情報のコードタイプにおける基準音(コードルート)からの半音距離数を、例えば、図4に示すコードタイプ別半音距離数テーブルを参照して取得し、「コードの5度」とする。ここで、「現在コード」に設定されているコード情報のコードタイプが「m7」であるとすると、5度(完全5度)の構成音の半音距離数は「7」である。
ステップSB16では、ステップSB14でセットした「パターンの5度」とステップSB15でセットした「コード5度」が同一であるか否かを判断する。同一である場合は、YESの矢印で示すステップSB17に進む。同一でない場合は、NOの矢印で示すステップSB18に進む。「現在コード」に設定されているコード情報のコードタイプが「m7」である場合は、「パターンの5度」は「7」であり、「コードの5度」も「7」で同一であるのでYESの矢印に従いステップSB17に進む。
ステップSB17では、基本チェンジ量に0を加算したもの、すなわち基本チェンジ量を「シフト量」としてセット(「シフト量」=0+「基本チェンジ量」)し、ステップSB19に進む。ここでは、「シフト量」=0+2=2となる。
ステップSB18では、「コードの5度」から「パターンの5度」を減算したものに「基本チェンジ量」を加算して「シフト量」としてセット(「シフト量」=「コードの5度」−「パターンの5度」+「基本チェンジ量」)し、ステップSB19に進む。
ステップSB19では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの5度の選択波形データSWをステップSB10又はSB11でセットした「シフト量」分ピッチチェンジして、「合成波形データ」に書き込まれている基本波形データBWと合成して、新たな「合成波形データ」とする。その後ステップSB20に進む。ここでは、5度の選択波形データSWのピッチ(音高)を2半音上げる。
ステップSB20では、「現在コード」に設定されているコード情報のコードタイプにコードルートに対して4声目(長6度、短7度、長7度、減7度)の構成音が含まれるか否かを判断する。4声目の構成音が含まれる場合には、YES矢印で示すステップSB21に進み、含まれない場合は、NOの矢印で示すステップSB27に進み、合成波形データ生成処理を終了して図5のステップSA22に進む。ここでは、「現在コード」に設定されているコード情報のコードタイプは「m7」であり、4声目(短7度)の構成音が含まれるのでステップSB21に進む。
ステップSB21では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの4声目の選択波形データSWの基準音(コードルート)からの半音距離数(本実施例では長7度なので「11」)を取得して「パターンの4声目」とする。
ステップSB22では、「現在コード」に設定されているコード情報のコードタイプにおける4声目の構成音の基準音(コードルート)からの半音距離数を、例えば、図4に示すコードタイプ別半音距離数テーブルを参照して取得し、「コードの4声目」とする。ここで、「現在コード」に設定されているコード情報のコードタイプが「m7」であるとすると、4声目(短7度)の構成音の半音距離数は「10」である。
ステップSB23では、ステップSB21でセットした「パターンの4声目」とステップSB22でセットした「コードの4声目」が同一であるか否かを判断する。同一である場合は、YESの矢印で示すステップSB24に進む。同一でない場合は、NOの矢印で示すステップSB25に進む。「現在コード」に設定されているコード情報のコードタイプが「m7」である場合は、「パターンの4声目」は「11」であり、「コードの4声目」は「10」であるのでNOの矢印に従いステップSB25に進む。
ステップSB24では、基本チェンジ量に0を加算したもの、すなわち基本チェンジ量を「シフト量」としてセット(「シフト量」=0+「基本チェンジ量」)し、ステップSB26に進む。
ステップSB25では、「コードの4声目」から「パターンの4声目」を減算したものに「基本チェンジ量」を加算して「シフト量」としてセット(「シフト量」=「コードの4声目」−「パターンの4声目」+「基本チェンジ量」)し、ステップSB26に進む。ここでは、「シフト量」=10−11+2=1となる。
ステップSB26では、「現在の伴奏パターンデータ」にセットされている伴奏パターンデータAPの4声目の選択波形データSWをステップSB24又はSB25でセットした「シフト量」分ピッチチェンジして、「合成波形データ」に書き込まれている基本波形データBWと合成して、新たな「合成波形データ」とする。その後、ステップSB27に進み、合成波形データ生成処理を終了して図5のステップSA22に進む。ここでは、4声目の選択波形データSWのピッチ(音高)を1半音分上げる。
以上のように、ルート波形データRWは「基本チェンジ量」分ピッチチェンジを行い、選択波形データSWは「基本チェンジ量」にコードタイプに応じた値を加算(減算)した半音距離数分ピッチチェンジを行って、合成することにより、所望のコードルートおよびコードタイプを基準とした伴奏データを得ることができる。
なお、図3に示すように、全てのコードルート(12音)のフレーズ波形データPWを用意する場合には、ステップSB4における基本チェンジ量の算出処理、ステップSB5におけるルート波形データRWに対するピッチチェンジの処理は省略し、ステップSB110、ステップSB11、ステップSB17、ステップSB18、ステップSB24及びステップSB25において基本チェンジ量を加算しないようにする。また、一部のコードルートに対応したフレーズ波形データPWのみを用意する場合には、「現在コード」に設定されているコード情報との音高差が最も少ないコードルートに対応したフレーズ波形データPWを読み出して、当該音高差の分を「基本チェンジ量」とするようにすれば良い。
以上、本発明の実施例によれば、伴奏パターンデータAPに対応付けて、ルート波形データRWと選択波形データSWを用意して、選択波形データSWを適宜ピッチチェンジしたのちに、それらを合成することにより、複数のコードタイプに対応した合成波形データを生成することができるため、入力されるコードにあわせた自動伴奏が可能となる。
また、選択波形データSWとして、テンション音等を1音だけ含むフレーズ波形データを用意して、それをピッチチェンジしたのちに合成することが可能であるので、テンション音を含むコードが入力されても対応が可能である。また、コードチェンジに伴うコードタイプの変化にも追従可能である。
さらに、全てのコードルート音についてフレーズ波形データPWを用意すれば、ピッチチェンジによる音質の劣化を防ぐこともできる。
さらに、伴奏パターンをフレーズ波形データで用意するため、高音質での自動伴奏が可能となる。また、MIDI音源では発音が困難な特殊な楽器や特殊な音階を利用した伴奏も自動で行うことが可能となる。
なお、上述の実施例では、フレーズ波形データPWの録音テンポを自動伴奏データAAの属性情報として記憶したが、フレーズ波形データPWごとにここに記憶するようにしても良い。また、実施例では、1つの録音テンポについてのみフレーズ波形データPWを用意したが、複数種類のテンポについてフレーズ波形データPWを用意してもよい。
なお、本発明の実施例は、電子楽器の形態に限らず実施例に対応するコンピュータプログラム等をインストールした市販のコンピュータ等によって、実施させるようにしてもよい。
その場合には、各実施例に対応するコンピュータプログラム等を、CD−ROM等のコンピュータが読み込むことが出来る記憶媒体に記憶させた状態で、ユーザに提供してもよい。また、そのコンピュータ等が、LAN、インターネット、電話回線等の通信ネットワークに接続されている場合には、通信ネットワークを介して、コンピュータプログラムや各種データ等をユーザに提供してもよい。
以上実施例に沿って本発明を説明したが、本発明はこれらに制限されるものではない。例えば、種々の変更、改良、組み合わせ等が可能なことは当業者に自明であろう。以下に、本発明の実施例に変形例を示す。