以下、この発明の実施の形態を添付図面に従って詳細に説明する。
図1は、本発明の特徴点である波形データの切替動作を説明する概念図である。図1において、縦に並べた2つの帯状図形は、それぞれ波形データ20,20´を示している。丸付数字「1」、「2」、「3」、「4」は小節内の拍数を示しており、図面横方向が波形データ20,20´の再生時間軸に対応する。波形データ20は2小節の時間長を持ち、20´は1小節の時間長を持つものとする。図1では、2小節分の時間長を持つ波形データ20に対応付けるために、波形データ20´については同じ波形を2つ並べて記載してある。
各波形データ20,20´には、それぞれ波形データ上の1以上の潜在的な切替位置(以下、「潜在的切替位置」とする。「オンセット情報」とも呼ぶ)を特定する切替位置情報が対応付けられている。各潜在的切替位置は、再生中の或る波形データ20を別の波形データ20´に切り替える際に、その切替タイミング、すなわち、切替元の(再生中の)波形データを終了する終了タイミング、又は、切替先の波形データを開始する開始タイミング、として設定可能な、波形データ20、20´上の位置である。例えば、図面上側に描く波形データ20(後述するメインセクション200に対応付けられた波形データ)は、10個の潜在的切替位置「Mo_1」、「Mo_2」・・・「Mo_10」を持つ。また、図面下側に描く波形データ20´(後述するフィルインセクション210に対応付けられた波形データ)は、8個の潜在的切替位置「Fo_1」、「Fo_2」・・・「Fo_8」を持つ。
本発明の特徴点は、1つの波形データ20の再生中に、再生対象の波形データを別の波形データ20´に切り替える指示が行われたとき、少なくともその指示を受け付けたタイミングに基づいて、再生中の波形データ20の切替位置情報及び別の波形データ20´の切替位置情報を参照して、指示された別の波形データ20´上の1つの潜在的切替位置(「Fo_1」、「Fo_2」・・・「Fo_8」)、又は、再生中の波形データ20上の1つの潜在的切替位置(「Mo_1」、「Mo_2」・・・「Mo_10」)のいずれか一方で、該再生中の波形データ20の再生を終了することにある。切り替えるタイミングを設定するための処理や、切り替える動作などの詳細は後述する。
図2は、この発明を適用した電子楽器100のハードウエア構成例を示すブロック図である。電子楽器100は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。CPU1は、この電子楽器100全体の動作を制御するものである。このCPU1に対して、通信バス12を介してROM2、RAM3、記憶装置4、演奏操作子5、パネル操作子6、表示部7、オーディオ再生部8、MIDI音源部9、楽音制御部10、インタフェース11がそれぞれ接続されている。
更に、CPU1には、タイマ割込み処理(インタラプト処理)における割込み時間や各種時間を計時するタイマ13が接続されている。例えば、タイマ13は、楽音を自動演奏する際の演奏テンポや、波形データのタイムストレッチ制御を行う際の周波数などを設定するためのテンポクロックパルスを発生する。タイマ13からのテンポクロックパルスはCPU1に対して処理タイミング命令として与えられたり、あるいはCPU1に対してインタラプト命令として与えられたりする。CPU1は、これらの命令に従って各種処理を実行する。
ROM2は、CPU1により実行あるいは参照される各種プログラムや各種データ等を格納する。RAM3は、CPU1が各種プログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。
記憶装置4には、複数の伴奏パターンデータ(後述する図3参照)などの各種データ等を多数記憶することが可能な内蔵データベースが構成される。また、記憶装置4は、CPU1が実行する各種プログラム等を記憶してもよい。上述したROM2にプログラムが記憶されていない場合、この記憶装置4(例えばハードディスク)にプログラムを記憶させておき、それをRAM3に読み込むことにより、ROM2にプログラムを記憶している場合と同様の動作をCPU1に実行させることができる。このようにすると、プログラムの追加やバージョンアップ等が容易に行える。
記憶装置4は、例えば、ハードディスク(HD)、フレキシブルディスク(FD)、コンパクトディスク(CD‐ROM・CD‐RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等、どのような記憶媒体を利用する記憶装置でもよい。また、記憶装置4はフラッシュメモリなどの半導体メモリで構成されてもよい。
演奏操作子5は、例えば楽音の音高を選択するための複数の鍵を備えた鍵盤により構成され、各鍵に対応してキースイッチを有する。演奏者は、演奏操作子5を手弾きによるマニュアル演奏のために使用したり、自動伴奏機能に用いる和音(コード)を指定するために使用したりできる。なお、演奏操作子5の形態は、鍵盤型に限らず、例えば弦楽器型(ギター型)、管楽器型、打楽器型など、どのよう形態でもよい。
パネル操作子6は、電子楽器100の操作パネルに設けられた各種操作子であり、例えば後述するセクションの切り替えを指示するセクション切り替えスイッチ、演奏テンポを設定するテンポ設定スイッチ、自動演奏の開始/停止を指示する再生/停止ボタン等、各種の操作子を含む。
表示部7は、例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイであって、パネル操作子6の操作に応じた各種画面(例えば伴奏パターンデータ選択画面、演奏テンポ設定画面、或いはセクション切り替え画面など)を表示したり、あるいは、選択中の伴奏パターンデータの内容など各種情報あるいはCPU1の制御状態を表示したりする。演奏者は該表示部7に表示されるこれらの各種情報を参照することで、伴奏パターンデータ選択、演奏テンポの設定、更にはセクションの切り替えなどの各種操作を容易に行うことができる。
オーディオ再生部8は、通信バス12を経由して与えられる波形データに基づいて波形信号を生成し出力する。MIDI音源部9は、通信バス12を経由して与えられるMIDIデータに基づいて波形信号を生成し出力する。
上記オーディオ再生部8及びMIDI音源部9は楽音制御部10に接続されている。楽音制御部10は、信号混合(加算)回路、D/A変換回路、音量制御回路などを含んで構成され、オーディオ再生部8及びMIDI音源部9から発生された波形信号にディジタル信号処理を施して効果を付与するとともにこれらを混合(加算)して、例えばスピーカなどのサウンドシステム14に出力する。サウンドシステム14は、楽音制御部10から出力された波形信号に対応する楽音を発音する。
インタフェース11は、当該電子楽器100と図示しない外部機器との間で、各種データや制御プログラムなどの各種情報を送受信するためのインタフェースである。電子楽器100は、例えばMIDI規格に準拠するMIDIインタフェースや、イーサネット(登録商標)規格に準拠するネットワークインターフェース等、1又は複数種類のインタフェース11を備えてよく、それらインタフェース11の接続形式は有線及び無線のいずれでもよい。
図3は、電子楽器100に構成されたデータベースに記憶される伴奏パターンデータのデータ構成を示す概念図である。データベースは、例えば記憶装置4に構成される。図3に示す通り、データベース内には、複数の伴奏パターンデータ200、210、220、230・・・が記憶されている。これら伴奏パターンデータ200、210、220、230・・・は、それぞれメインセクション、フィルインセクション、イントロセクション、エンディングセクション・・・等のセクションに対応付られている。各セクションは、それぞれ、1曲分の伴奏を構成する部分である。
各伴奏パターンデータ200、210、220、230・・・は、それぞれ伴奏パターンデータとして用いる波形データ20と、該波形データ20に対応付けられた波形再生制御情報22とからなる。波形データ20は、実際の楽器演奏や人の声あるいは自然音などをサンプリングした楽音波形データ(オーディオ波形データ)である。各セクション200、210、220、230・・・毎の波形データ20は、それぞれ1小節分以上の時間長さを持ち、それぞれ対応するセクションに適した楽器演奏を内容として持つ。そのデータ形式は、例えばWAV,AIFF、MP3など、どのような形式でもよい。
波形再生制御情報22は、対応する波形データ20に対して設定された1以上の潜在的切替位置(オンセット情報)を特定する切替位置情報25を含んでいる。波形再生制御情報22は、その他にも、該波形データ20の録音時のテンポを示す基本テンポ、波形データ20の1小節内における各拍のタイミングを示す拍情報などを含んでよい。
切替位置情報25は、前記図1に示す通り、対応する波形データ20上の1以上の潜在的切替位置(オンセット情報)を特定する情報であり、後述するセクション切り替えタイミングを決定するために参照される。切替位置情報25を含む波形再生制御情報22中の各種情報は、それぞれ対応する波形データ20を解析することによって得られる。自動演奏時には、CPU1は、波形再生制御情報22を参照することにより、波形データ20の再生処理に用いる各種パラメータを制御する。
図4(a),(b)は、前記図1に示す波形データ20、20´と、それらに対応付けられた切替位置情報25とを詳細に説明する図である。一例として、波形データ20は、メインセクションの伴奏パターンデータ200に対応付られたもの、波形データ20´は、フィルインセクション210の伴奏パターンデータ200に対応付られたものとする。(a),(b)において、丸付数字「1」、「2」、「3」、「4」は小節内の拍数であり、図面横方向が波形データ20、20´の再生時間軸に対応する。また、波形データ20、20´は、一例として、ドラム演奏を内容とするもの(すなわちドラムパート用の伴奏パターンデータ)を想定する。なお、本明細書では、各セクションの伴奏パターンデータ(メインセクションの伴奏パターンデータ200、フィルインセクションの伴奏パターンデータ210・・・)のことを、メインセクション200、フィルインセクション210という具合に、そのセクション名で表記することもある。
図4(a)は、メインセクション200及びフィルインセクション210に対応付けられた各波形データ20、20´が持つ演奏内容を、楽譜により表す。図4(a)に示す通り、メインセクション200は、2小節分の時間長を持つ。その演奏内容は、1小節内において、ハイハットを四分音符で刻みつつ、1拍目に四分音符でバスドラムを1回、2拍目に四分音符でスネアドラムを1回、3拍目から8音符でバスドラムを2回、4拍目に四分音符でスネアドラムを1回演奏する、というものである。一方、フィルインセクション210は、1小節分の時間長を持ち、8つの8分音符でハイタム、ミドルタム、フロアタム、バスドラム及びスネアドラムを叩く演奏(ドラムロール)を内容とする。
図4(b)は、メインセクション200に対応付けられた波形データ20及びフィルインセクション210に対応付けられた波形データ20´それぞれの波形形状と、それぞれに対応付けられた切替位置情報25を説明する図である。波形データ20、20´それぞれの波形形状は、録音された楽器演奏音の音量変化を表す。メインセクション200に対応付けられた波形データ20は、(a)の楽譜に基づく2小節分のドラム演奏音の録音物である。伴奏パターンデータを用いた自動伴奏技術において周知のように、メインセクション200は、2小節分の波形データ20が繰り返し再生されることを想定して作成されている。
一方、フィルインセクション210に対応付けられた波形データ20´は、(a)の楽譜に基づく1小節分のドラム演奏の録音物である。このフィルインセクション210は、メインセクション200のループ再生中に、ユーザ操作に応じて、1小節分の波形データを少なくとも1回再生して、メインセクション200の再生に戻ること(つまり、メインセクション200のループ再生中に挿入されること)を想定して作成されている。なお、図4(及び図1)では、2小節分の時間長を持つメインセクション200に対応付けるために、フィルインセクション210の波形データを時間軸に沿って2つ並べ、符号210a,210bで示している。
波形データ20及び20´のそれぞれには、その波形データとして記録された音に含まれる1以上のアタック部(図4(b)に示す波形の“山”の部分)のそれぞれに対して、潜在的切替位置(オンセット情報)が設定される。具体的には、各アタック部の開始位置(波形の立ち上がり位置)が、各アタック部に対応する潜在的切替位置(オンセット情報)として設定されている。切替位置情報25は、これら1以上のアタック部(図4(b)に示す波形の“山”の部分)のそれぞれに対応する潜在的切替位置(オンセット情報)を特定する情報である。例えば、図1及び図4に示すメインセクション200の切替位置情報25は、波形データ20上の10箇所のアタック部に対応する10個のオンセット情報「Mo_1」、「Mo_2」・・・「Mo_10」を特定するデータである。また、図1及び図4に示すフィルインセクション210の切替位置情報25は、波形データ20´上の8箇所のアタック部に対応する8個のオンセット情報「Fo_1」、「Fo_2」・・・「Fo_8」を特定するデータである。
例えば、メインセクション200の1小節目の1拍目には、ハイハットとバスドラムが演奏される(図4(a)の楽譜を参照)。この場合、ハイハットとバスドラムとが同じ拍位置で叩かれるので、波形データ上では、これら楽器の演奏音に対応するアタック部20aは1つである。この場合、このアタック部20aの先頭位置に、1つのオンセット情報「Mo_1」が設定される。
ここで、波形データ20、20´は、それぞれ、図4(a)の楽譜に示す演奏内容を、人がドラムセットを用いて実際に演奏した演奏音をサンプリング(録音)したものである。人間の演奏にはある程度のばらつきがあるため、波形データ20、20´として記録された各音の位置は、正確な拍位置(タイミング)からわずかにずれるのが一般的である。このため、各オンセット情報の位置は、図4(a)の楽譜上に示された音符の拍位置からわずかに前後にずれた位置となる。。
例えば、メインセクション200の2小節目の1拍目のハイハットとバスドラムに対応する演奏音20bは、録音時に早めのタイミングで演奏されたため、図4(b)に示す通り、波形データ20上では1小節目の末尾に録音されている。したがって、この演奏音20bに対応するオンセット情報「Mo_6」は、2小節目の1拍目の位置ではなく、1小節目の末尾(具体的には演奏音20bのアタック部の先頭位置)に設定される。
次に、前述した伴奏パターンデータを用いた「自動演奏処理」について説明する。ユーザは、図3に示すメインセクション200、フィルインセクション210、イントロセクション220、エンディングセクション230・・・の各伴奏パターンデータを選択的に切り替えつつ、電子楽器100に自動演奏を実行させる。図5は、電子楽器100のCPU1が実行する自動演奏処理の一実施例を示すフローチャートである。ユーザが自動演奏の開始指示を行った場合に、CPU1は当該処理を開始する。なお、以下の自動演奏処理においては、一具体例として、メインセクション200に対応付られた波形データ20をループ再生している最中に、ユーザのセクション切替指示に応じて、フィルインセクション210に対応付けられた波形データ20´が挿入され、その後メインセクション200の波形データ20の再生に戻る、というセクション切り替えが行われることを想定する。なお、本明細書において、「セクション切り替え」とは、切替元である再生中の波形データの再生を終了して、切替先に指定された別の波形データの再生を開始することを言う。
ステップS1において、CPU1は、初期化処理を実行する。初期化処理は、例えばユーザ操作に応じた演奏テンポの設定や、選択された伴奏パターンデータをデータベース(記憶装置4)から読み出してRAM3にロードする処理などである。本実施例では、メインセクション200が選択されていることを想定しており、CPU10は、該メインセクション200に対応付けられた波形データ20及び波形再生制御情報22(切替位置情報25を含む)を記憶装置4からRAM3にロードする。
ステップS2において、CPU1は、現在設定されている演奏テンポに従って、メインセクション200に対応付けられた波形データ20の再生を開始する。すなわち、CPU1は、RAM3から選択されているメインセクション200に対応付けられた波形データ20の読み出しを開始する。オーディオ再生部8は、読み出された波形データ20に基づいて波形信号を生成し出力する。なお、CPU10は、当該自動演奏の開始にあわせて、再生カウンタを開始する。再生カウンタのカウント値は、演奏テンポに応じた所定の周期毎に歩進する。再生カウンタは、波形データ再生の時間経過(再生タイミング)を計時するものである。なお、現在設定されている演奏テンポと、波形データ20に対応付けられた基本テンポとが異なる場合、CPU1及びオーディオ再生部8は、周知のタイムストレッチ制御を行うことにより、音高変化を来すことなく任意の演奏テンポで、波形データ20の楽音を発生することができる。
ステップS3において、CPU1は、ユーザ指示の受付の有無を判定する。ユーザ指示がない場合(ステップS3のNO)、CPU1は、ステップS2〜ステップS3の処理をループする。これにより、CPU1及びオーディオ再生部8は、1つのメインセクション200に対応付けられた2小節分の波形データ20全体を繰り返し再生する。CPU1によって実行される前記ステップS2等の処理及びオーディオ再生部8が、時間経過に伴い、前記記憶部に記憶された前記複数の波形データのいずれか1つを再生するステップとして、或いは、時間経過に伴い、前記記憶部に記憶された前記複数の波形データのいずれか1つを再生するよう構成された再生部として、機能する。
前記ステップS2及びS3による波形データ20のループ再生中に何らかユーザ指示があった場合(ステップS3のYES)、CPU1は、そのユーザ指示に従う各種処理を行う(ステップS4,S8)。この実施例では、ユーザ指示として、再生対象の波形データをメインセクション200からフィルインセクション210に切り替える「セクション切替指示」(ステップS4)、自動演奏の終了指示(ステップS8)及び、その他の指示、を想定している。前記「セクション変更指示」のユーザ指示を受け付けるためのパネル操作子6の操作及びCPU1によって実行される前記ステップS4の処理は、前記再生部によって或る1つの波形データが再生されているときに、別の波形データを指定するステップ、或いは、前記再生部によって或る1つの波形データが再生されているときに、別の波形データを指定する指定部として機能する。
「セクション切替更指示」があった場合(ステップS4のYES)、CPU1は、切替先として指定されたフィルインセクション210に対応付けられた波形データ20´及び波形再生制御情報22をデータベース(記憶装置4)からRAM3にロードし(ステップS5)、RAM3から該フィルインセクション210に対応付けられた切替位置情報25(図4(b)のオンセット情報「Fo_1」〜「Fo_8」)を取得するとともに、現在再生中のメインセクション200に対応付けられた切替位置情報25(図4(b)のオンセット情報「Mo_1」〜「Mo_10」)を取得する(ステップS6)。CPU1によって実行される前記ステップS6の処理が、再生中の前記或る1つの波形データと前記指定された別の波形データとのそれぞれについて、その波形データ上の1以上の切替位置を特定する切替位置情報を取得するステップ、或いは、再生中の前記或る1つの波形データと前記指定された別の波形データとのそれぞれについて、その波形データ上の1以上の切替位置を特定する切替位置情報を取得する取得部として機能する。
ステップS7において、CPU1は、セクション切替指示のタイミングと、今回変更先に指定されたフィルインセクション210の波形データ20´上のオンセット情報(潜在的切替位置)と、現在再生中のメインセクション200の波形データ20上のオンセット情報(潜在的切替位置)との位置関係に基づいて、詳細は後述する「セクション切り替えタイミング」を設定する処理を行う。このステップS7で「セクション切り替えタイミング」を設定した後、処理はステップS2の処理に戻る。
一方、ユーザ指示が「自動演奏の終了指示」である場合(ステップS4のNO、ステップS8のYES)、CPU1は指示に応じた終了制御を行って本自動演奏処理を終了する。例えば「自動演奏の終了指示」がメインセクション200からエンディングセクション230へのセクション切替指示によりなされた場合、CPU1は当該指示タイミングの次小節でメインセクション200の再生を終了し、メインセクション200に替えてエンディングセクション230の再生を開始し、そのエンディングセクション230を最後まで再生した後に、本自動演奏処理を終了する。また、「自動演奏の終了指示」が再生/停止ボタン操作によりなされた場合、CPU1は、当該停止指示がなされた時点で再生終了制御を行って、本自動演奏処理を終了する。
また、ユーザ指示が上記の何れでもない場合には(ステップS4,S8のいずれもがNO)、CPU1は、ユーザ指示に応じた「その他の処理」を実行する。その他の指示は、例えば上述したメインセクション200からフィルインセクション210への切り替え又はエンディングセクションへの切り替え以外のセクション切り替え、ミュートオン/オフ指示、音色変更指示、或いは、音量変更の指示などである。
次に、前記S7におけるセクション切替タイミングの設定処理について詳細に説明する。図6〜図8は、セクション切替タイミングの設定処理を示すフローチャートである。CPU1は、前記図5の処理が前記ステップS7に進んだとき(すなわちメインセクションからフィルインセクションへの切り替え指示に応じて)、図6の処理を起動する。
ステップS11において、CPU1は、セクション切替指示を受け付けたタイミングが、小節区切り直前であるかどうか判断する。小節区切りは、音楽的な区切り位置の一例であり、1つの小節と後続の小節との区切り部分である。例えば、図4(b)の例では、メインセクション200に対応付けられた波形データ20における1小節目の末尾と2小節目の先頭との接合部、及び、ループ再生時の2小節目の末尾と1小節目の先頭との接合部が小節区切りである。CPU1は、セクション切替指示を受け付けた時点の波形データ再生位置と小節区切り位置との関係を、前述した再生カウント値に基づく拍数から特定できる。小節区切り直前かどうかの判断は、例えば、セクション切替指示タイミングが、現在再生中の小節末尾直前の所定区間(例えば50ミリ秒)以内の範囲であるか否か、あるいは、現在再生中の小節の4拍半の位置以降であるか否かといった条件により行うことができる。
セクション切替指示を受け付けたタイミングが小節区切り直前以外である場合(ステップS11のNO)、CPU1は図7に示す「小節内でのセクション切替タイミング設定処理」を行う(ステップS12)。一方、セクション切替指示を受け付けたタイミングが、小節区切り直前である場合(ステップS11のYES)、CPU1は図8に示す「小節区切りでのセクション切替タイミング設定処理」を行う(ステップS13)。
次に、前述した図1の概念図と、図6、図7及び図8のフローチャートとを参照して、「ケースA」、「ケースB」及び「ケースC」の3つのケースを中心に、セクション切替指示タイミング別の「セクション切替タイミング設定処理」を説明する。
図1において矢印50aで示す「ケースA」は、ユーザが第1小節3拍目の直前で、フィルインセクション210への切替指示を行った場合である。この場合、CPU1は、前記ステップS11をNOに分岐して、ステップS12の「小節内でのセクション切替タイミング設定処理」に処理を進める。また、図1において矢印50bで示す「ケースB」は、ユーザが第1小節4拍目の直前で、フィルインセクション210への切替指示を行った場合であり、この場合も、CPU1は、前記ステップS11をNOに分岐して、ステップS12の「小節内でのセクション切替タイミング設定処理」に処理を進める。
「小節内でのセクション切替タイミング設定処理」の場合、図7に示す通り、CPU1は、ステップS14において、前記ステップS6で取得したフィルインセクション210のオンセット情報「Fo_1」〜「Fo_8」のうち、セクション切替指示のタイミングの直後に存在する1つのオンセット情報「Fo_x」(なお、xは1〜8のいずれか1つ)を取得する。ステップS15において、CPU1は、現在再生中のメインセクション200の全オンセット情報「Mo_1」〜「Mo_10」を調べて、前記ステップS14で取得したフィルインセクション210のオンセット情報「Fo_x」の直前の所定区間以内に、現在再生中のメインセクション200のオンセット情報「Mo_y」(なお、「y」は1〜10のいずれか1つ)が存在するかどうか判断する。
前記所定区間の時間長は、例えば50ミリ秒である。この所定区間の時間長は、セクションをメインセクション200からフィルインセクション210に切り替える時に、切替直前の変更元(メインセクション200)の発音と、切替直後の変更先(フィルインセクション210)の発音とが時間的に近すぎることにより生じる「2度鳴り」を防ぐために必要な長さであることが望ましい。この点、(1)2度鳴りは、波形データとして記録した各音の位置が、音符の示す拍位置からズレている場合(典型的には、記録された音が音符の示す拍位置よりも早い「前ノリ」で演奏されている場合)に生じ易いこと、(2)伴奏パターンデータとして用いる波形データとして記録した各音の位置と、音符のタイミング(拍数の示す基準タイミング)のズレ幅が概ね「50ミリ秒」以内と想定できること、(3)50ミリ秒以内ならば1拍分の時刻内の音とみなし得ること(言い換えれば50ミリ秒以上離れていれば、別の拍(タイミング)の音とみなし得ること)、といった理由から、「50ミリ秒」という時間長は、好ましい一例である。
例えば、ケースAの場合、セクション切替指示のタイミング(矢印50a)の直後に存在するフィルインセクション210のオンセット情報は、「Fo_5」であり、「Fo_5」よりも前には、メインセクション200のオンセット情報は存在しない(「Fo_5」の直前のメインセクション200のオンセット情報は「Mo_2」であるが、「Mo_2」よりもあとにセクション切り替え指示が行われているため、セクション切り替え指示から「Fo_5」までの間にはメインセクション200のオンセット情報「Mo_y」は存在しない:ステップS15のNO)。その場合、CPU1は、ステップS16において、セクション切替指示のタイミングの直後に存在するフィルインセクション210のオンセット情報「Fo_x」(ケースAでは、「Fo_5」)を、現在再生中のメインセクション200の終了タイミングとして設定し、且つ、当該フィルインセクション210のオンセット情報「Fo_x」(ケースAでは、「Fo_5」)を、今回切替指示されたフィルインセクション210の再生を開始する開始タイミングとしてセットする。
一方、ケースBの場合、セクション切替指示のタイミング(矢印50b)の直後に存在するフィルインセクション210のオンセット情報は「Fo_7」であり、この「Fo_7」よりも前に存在するメインセクション200のオンセット情報は「Mo_5」である。ここで「Mo_5」が「Fo_7」から所定区間(例えば50ミリ秒)以内に存在するものとする。そうすると、仮に、フィルインセクション210のオンセット情報「Fo_7」の位置でセクションを切り替えたとすると、「Mo_5」に相当するアタック部分を発音した直後(50ミリ秒以内)に、「Fo_7」のアタック部が発音されてしまい、いわゆる「2度鳴り」が起こってしまう。
そこで、ケースBのように、セクション切替指示のタイミングの直後に存在するフィルインセクション210のオンセット情報「Fo_x」の直前の所定区間以内に、現在再生中のメインセクション200のオンセット情報「Mo_y」が存在する場合(ステップS15のYES)、CPU1は、ステップS17において、セクション切替指示のタイミングの直後に存在するフィルインセクション210のオンセット情報「Fo_x」(ケースBでは、「Fo_7」)の直前の所定区間内に存在するメインセクション200のオンセット情報「Mo_y」(ケースBでは、「Mo_5」)を、現在再生中のメインセクション200の終了タイミングとして設定し、且つ、当該メインセクション200のオンセット情報「Mo_y」(ケースBでは、「Mo_5」)を、切替指示されたフィルインセクション210の再生を開始する開始タイミングとして設定する。このように設定することで、メインセクションの「Mo_5」が発音する前にメインセクションの再生が終わり、フィルインセクションの再生が始まるので、2度鳴りを防ぐことができる。
前記ステップS16又はS17の後、CPU1は、図7の処理を終了する。
一方、矢印50cで示す「ケースC」は、ユーザが第1小節4拍目以降に、フィルインセクション210への切替指示を行った場合である。この場合、CPU1は、前記ステップS11をYESに分岐して、ステップS13の「小節区切りでのセクション切替タイミング設定処理」に処理を進める。
小節区切りでのセクション切替タイミング設定処理の場合、CPU1は、図8に示す通り、ステップS18において、現在再生中の小節末尾直前の所定区間以内に、現在再生中のメインセクション200のオンセット情報「Mo_z」(zは「1」〜「10」のいずれか)が存在するか否かを判断する。前記所定区間の時間長は、前記ステップS15で説明したのと同様の趣旨で「2度鳴り」を防ぐべく、例えば50ミリ秒に設定される。
ケースCの場合、セクション切替指示のタイミング(矢印50c)は第1小節末尾の直前である。ここで第1小節末尾の直前に存在するメインセクション200のオンセット情報は「Mo_6」である。この「Mo_6」が1小節末尾から所定区間(例えば50ミリ秒)以内に存在するものとする。そうすると、仮に、第1小節末尾で、若しくは、「セクション切替指示のタイミング直後のフィルインセクション210のオンセット情報「Fo_1」の位置でセクションを切り替えたとすると、「Mo_6」のアタック部分を発音した直後(50ミリ秒以内)に、「Fo_1」のアタック部分が発音されてしまい、「2度鳴り」が起こってしまう。
そこで、ケースCのように、小節末尾の直前にセクション切替指示がなされ、且つ、その小節末尾直前の所定区間(例えば50ミリ秒)以内に、現在再生中のメインセクション200のオンセット情報「Mo_z」が存在する場合(ステップS18のYES)、CPU1は、ステップS19において、小節末尾直前のメインセクション200のオンセット情報「Mo_z」(ケースCでは、「Mo_6」)の位置を、現在再生中のメインセクション200の終了タイミングとして設定するとともに、ステップS20において、現在再生中の小節の区切り位置(ケースCでは、第1小節末尾、言い換えれば、第2小節先頭)を、切替指示されたフィルインセクション210の再生を開始する開始タイミングとして設定する。
一方、小節末尾の直前にセクション切り替え指示がなされたが、その小節末尾直前の所定区間(例えば50ミリ秒)以内に、メインセクション200のオンセット情報「Mo_z」が存在しない場合(ステップS18のNO)、CPU1は、前記ステップS20において、現在再生中の小節の区切り位置を、切替指示されたフィルインセクション210の再生開始タイミングとして設定するとともに、該小節の区切り位置を再生中のメインセクション200の終了タイミングとして設定する。なお、小節区切り位置でセクション切替を行うこと自体は、例えばMIDIデータを用いた伴奏パターンデータのセクション切り替え制御として一般的に行われている。
前記ステップS20の後、CPU1は、図8の処理を終了する。CPU1によって実行される前記ステップS7,S16,S17,S19の処理が、少なくとも前記指定を受け付けたタイミングに基づいて、前記取得した再生中の波形データの切替位置情報および前記取得した別の波形データの切替位置情報を参照して、前記別の波形データ上の1つの切替位置、又は、前記再生中の波形データ上の1つの切替位置のいずれか一方を、該再生中の波形データの再生を終了する終了タイミングとして設定するステップとして、或いは、少なくとも前記指定を受け付けたタイミングに基づいて、前記取得した再生中の波形データの切替位置情報および前記取得した別の波形データの切替位置情報を参照して、前記別の波形データ上の1つの切替位置、又は、前記再生中の波形データ上の1つの切替位置のいずれか一方を、該再生中の波形データの再生を終了する終了タイミングとして設定する設定部として、機能する。
前記図6〜図8の処理(すなわち前記ステップS7)によりセクション切替タイミングを設定した後、処理は、ステップS2に戻る。そして、CPU1は、ステップS2及びS3によりメインセクション200の波形データのループ再生を行いつつ、現在再生しているメインセクション200の再生位置が、前記設定したセクション切替タイミングに到達したときに、再生対象の波形データをメインセクション200の波形データ20からフィルインセクション210の波形データ20´に切り替える。
図9は、CPU1が実行するセクション切替処理のフローチャートである。この処理は、自動演奏処理の実行中に、波形読み出しクロックに応じた所定の時間間隔毎に起動する割り込み処理である。ステップS21において、CPU1は、現在再生しているメインセクション200の再生位置が、前記ステップS16、S17又はS19で設定された終了タイミングに到達したか否かを判定する。そして、現在再生しているメインセクション200の再生位置が前記終了タイミングに到達することに応じて(ステップS21のYES)、CPU1は、ステップS22において、メインセクション200の波形データ20の読み出しを終了する。これに応じて、オーディオ再生部8は、メインセクション200の波形データ20の再生を終了する。
ステップS23において、CPU1は、現在再生しているメインセクション200の再生位置が、前記ステップS16、S17又はS20で設定された開始タイミングに到達したか否かを判定する。そして現在再生しているメインセクション200の再生位置が、前記設定された開始タイミングに到達することに応じて(ステップS23のYES)、CPU1は、ステップS24において、フィルインセクション210の波形データ20´の読み出しを開始する。これに応じて、オーディオ再生部8は、フィルインセクション210の波形データ20´の再生を開始する。一方、現在再生しているメインセクション200の再生位置が、終了タイミング又は開始タイミングに到達しないうちは(ステップS21,S23のNO)、そのつど、処理を終了する。そして、当該割り込み処理の起動機会毎に、CPU1は、終了タイミング乃至開始タイミングが到達するのを待つ。
例えば、ケースAのように、セクション切替指示が小節内で行われ、且つ、切替指示の直後のフィルインセクションのオンセット情報「Fo_5」の直前の所定区間内にメインセクションのオンセット情報「Mo_y」が存在しない場合(前記ステップS15のNO)、現在再生しているメインセクション200の再生位置が、「Fo_5」に対応する位置に到達したとき(前記ステップS21,S23のYES)、CPU1及びオーディオ再生部8は、メインセクション200の波形データ20の再生を終了し、且つ、フィルインセクション210の波形データ20´の再生を開始する(前記ステップS22,S24)。この場合、「Fo_5」の直前の所定区間内にメインセクション側に不所望な音(アタック部)が存在せず、且つ、フィルインセクション210の波形データを、「Fo_5」のアタック部から再生開始できるので、2度鳴りによるノイズも、1つの音(1つの波形の“山”)の途中から再生開始することにるノイズも、確実に防ぐことができる。
また、ケースBのように、セクション切替指示が小節内で行われ、且つ、切替指示の直後のフィルインセクション210のオンセット情報「Fo_7」直前の所定区間内にメインセクションのオンセット情報「Mo_5」が存在する場合(前記ステップS15のYES)、現在再生しているメインセクションの再生位置が、「Mo_5」に対応する位置に到達したとき(前記ステップS21,S23のYES)、CPU1及びオーディオ再生部8は、メインセクション200の波形データ20の再生を終了し、且つ、フィルインセクション210の波形データ20´の再生を開始する (前記ステップS22,S24)。この場合、「Mo_5」の位置でメインセクション200の波形データの再生を終了することにより、当該「Mo_5」のアタック部の発音を回避する。そして、「Mo_5」からフィルインセクション210の波形データ20´の再生を開始すると、フィルインセクション210側の発音は「Fo_7」から始まる。したがって、この場合も、2度鳴りによるノイズ発生も、1つの音(1つの波形の“山”)の途中から再生開始することにるノイズ発生も、確実に防ぐことができる。
また、ケースCのように、セクション切替指示が小節区切りで行われ、且つ、小節末尾直前の所定区間内にメインセクションのオンセット情報「Mo_6」が存在する場合(前記ステップS18のYES)、現在再生しているメインセクションの再生位置が、「Mo_6」に対応する位置に到達したとき(前記ステップS21のYES)、CPU1及びオーディオ再生部8は、メインセクション200の波形データ20の再生を終了する(前記ステップS22)。そして、現在の再生タイミングが小節区切りの位置に到達したとき(前記ステップS23のYES)、CPU1及びオーディオ再生部8は、フィルインセクション210の波形データ20´の再生を開始する(前記ステップSS24)。この場合、「Mo_6」の位置でメインセクション200の波形データ20の再生を終了することにより、当該「Mo_6」のアタック部の発音を回避できるので、「2度鳴り」によるノイズの発生を確実に防ぐことができる。
また、例えば、セクション切替指示が小節区切りで行われ、且つ、小節末尾直前の所定区間内にメインセクションのオンセット情報「Mo_z」が存在しない場合(前記ステップS18のNO)、CPU1は、現在再生しているメインセクションの再生位置が小節区切り位置に到達したとき(前記ステップS21、S23のYES)、CPU1及びオーディオ再生部8は、メインセクション200の波形データ20の再生を終了し、且つ、フィルインセクション210の波形データ20´の再生を開始する(前記ステップS22,S24)。
CPU1によって実行される前記ステップS22による処理が、前記別の波形データの指定に応じて、前記再生するステップにより再生される波形データを前記再生中の波形データから前記別の波形データへ切り替える制御を行うステップであって、前記再生するステップによる波形データの再生タイミングが、前記設定された終了タイミングに到達することに応じて、少なくとも前記再生中の波形データの再生を終了させる制御を行うステップ、或いは、前記別の波形データの指定に応じて、前記再生部が再生する波形データを前記再生中の波形データから前記別の波形データへ切り替える制御を行うステップであって、前記再生するステップによる波形データの再生タイミングが、前記設定された終了タイミングに到達することに応じて、少なくとも前記再生中の波形データの再生を終了させる制御を行う制御部として機能する。
前記図9の処理により、再生対象がフィルインセクション210の波形データ20´に切り替わると、CPU1及びオーディオ再生部8は、前記図4のステップS2,S3の処理により、フィルインセクション210の波形データ20´を1小節末尾まで少なくとも1回再生した後、フィルインセクション210の波形データ20´の再生を終了する。そして、CPU1及びオーディオ再生部8は、再生対象をメインセクション200に戻して、メインセクション200に対応付けられた波形データ20をループ再生する。
以上説明した通り、本実施形態の自動演奏処理によれば、再生中の波形データをメインセクション200からフィルインセクション210へ切り替える際、波形途中から再生することによるノイズや「2度鳴り」によるノイズ発生を確実に防ぎつつ、任意のタイミングで、波形データを切り替えることができるという優れた効果を奏する。
なお、本実施例では、各アタック部の開始位置を潜在的切替位置としたが、潜在的切替位置はこれに限らない。例えば、波形データのレベルが所定値よりも小さい箇所、あるいはそのような状態が一定時間連続する箇所などを潜在的切替位置として設定するように構成してもよい。
また、本実施例では、前記ステップS6において、各波形データ20及び20´に対応付けられた波形再生制御情報22に記憶された切替位置情報25を参照することにより、各波形データ20及び20´についてオンセット情報「Mo_1」〜「Mo8」と「Fo1」〜「Fo8」とを取得する構成を例示したが、前記ステップS6で取得する切替位置情報25は予め記憶されたものに限らず、例えば、再生中に再生中の波形データ20と、切替先として指定されたフィルインセクション210に対応付けられた波形データ20´とを、リアルタイムで解析して算出したものであってもよい。
なお、前記ステップS11は、処理分岐の判断条件となる音楽的区切りの一例として1小節の区切り位置を用いる構成であったが、4小節あるいは8小節といった、複数小節単位の区切り位置を、処理分岐の判断条件となる音楽的区切りとして用いるように構成されてもよい。また、別の例として、前記ステップS11は、例えば、拍数或いはクロック数を、処理分岐の判断条件となる音楽的区切りとして用いるように構成されてもよい。
なお、例えばケースA,Bのように、1箇所のオンセット情報(「Fo_X」又は「Mo_y」)の位置でメインセクション200の波形データ20の再生を終了して、且つ、フィルインセクション210の波形データ20´の再生を開始する場合、オーディオ再生部8は、セクション切替時に適宜の時間幅(例えば5.8ミリ秒程度)で、メインセクション200のの波形データ20とフィルインセクション210の波形データ20´とをクロスフェード処理するとよい。また、ケースCのように、メインセクション200の波形データ20の再生を「Mo_z」の位置で終了する場合、オーディオ再生部8は、「Mo_z」時点でメインセクション200の波形データ20が無音になるように、フェードアウト処理するとよい。
なお、実施例では、図9のセクション切替処理において、オーディオ再生部8が、メインセクション200波形データ20の再生を終了して(前記ステップS22)、フィルインセクション210の波形データ20´の再生を開始する(前記ステップS24)ことを説明したが、前記ステップS22の処理は、メインセクション200の波形データの再生を終了(停止)するのでなく、メインセクション200の波形データ20に従う演奏音をミュートする処理でもよい。
なお、上記の実施例では、セクション切替の一例として、再生中の波形データをメインセクション200からフィルインセクション210へ切り替える場合を説明したが、これに限らず、例えば、メインセクション200からエンディングセクション230への切り替えや、フィルインセクション210からエンディングセクション230への切り替えなど、任意のセクションの組み合わせによるセクション切り替えに本願発明は適用できる。要するに、セクション切替処理は、或る伴奏パターンデータの波形データから別の伴奏パターンデータの波形データへ切り替える処理でさえあればよい。
なお、上記の実施例では、1つの演奏パート(例えばドラムパート)で用いる伴奏パターンデータ200、210、220、230・・・を説明したが、データベースは、更に、図示外の複数のパート(例えば、コードバッキングパート、べースパート等)のそれぞれに対応して、セクション毎の伴奏パターンデータを用意してよい。更に、データベースには、ジャズ、ポップス、ロック、ブルースなど多彩なジャンルに対応する複数通りの伴奏パターンデータ200、210、220、230・・・が用意されよい。
なお、電子楽器100は、更に、MIDIデータで作成された伴奏パターンデータをデータベース(記憶装置4)に記憶し、該MIDIデータで作成された伴奏パターンデータを用いた自動演奏を行うことができるように構成されてもよい。自動演奏は、MIDIデータで作成された伴奏パターンデータのパートと、波形データで作成された伴奏パターンデータのパートとが併存していてもよい。
なお、データベース(記憶装置4)に記憶される伴奏パターンデータ200、210、220、230・・・は、例えば電子楽器100のメーカが作成して予めデータべースに記憶したものである。それに限らず、当該電子楽器のユーザが、自身で新規に作成(録音)した伴奏パターンデータをデータベースに追加記憶できてもよいし、メーカやその他の利用者が新規に作成した伴奏パターンデータを、外部機器(例えばインターネットを経由して接続されたサーバ装置など)から取得して、データベースに既存のデータと差し替えたり、あるいは、データベースに追加記憶したり、できてもよい。また、時間経過に伴い、前記記憶部に記憶された前記複数の波形データのいずれか1つを再生するステップ乃至再生部は、当該電子楽器100に備わる記憶装置4に記憶された伴奏パターンデータ200、210、220、230・・・のいずれか1つに対応付けられた波形データを再生することに限らず、例えば、前記外部機器から波形データを取得しつつ再生することにより構成されてもよい。
なお、電子楽器100は、演奏操作子5、表示部7、オーディオ再生部8、MIDI音源部9、楽音制御部10など、各機能モジュールを1つの装置筺体に内蔵したものに限らず、1以上の機能モジュール毎に個別の装置を、MIDIインタフェース等の接続して構成構成されたものであってもよい。
なお、本発明に係る波形再生装置は電子楽器100に限らず、パーソナルコンピュータ、PDA(携帯情報端末)や携帯電話等の携帯通信端末、あるいはゲーム装置など、少なくとも波形データに基づいて楽音の自動演奏を行うことのできるものであればどのような形態の装置・機器に適用してもよい。