(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【0016】
図1は、この発明に係る自動演奏装置を適用した電子楽器のハードウエア構成例を示すブロック図である。本実施形態に示す電子楽器は、マイクロプロセッサユニット(CPU)1、リードオンリメモリ(ROM)2、ランダムアクセスメモリ(RAM)3からなるマイクロコンピュータの制御の下に各種の処理が実行されるようになっている。CPU1は、この電子楽器全体の動作を制御するものである。このCPU1に対して、データ及びアドレスバス1Dを介してROM2、RAM3、記憶装置4、演奏操作子5、パネル操作子6、表示部7、オーディオ再生部8、MIDI音源部9、楽音制御部10、インタフェース11がそれぞれ接続されている。
【0017】
更に、CPU1には、タイマ割込み処理(インタラプト処理)における割込み時間や各種時間を計時するタイマ1Aが接続されている。例えば、タイマ1Aは、楽音を自動演奏する際の演奏テンポや、オーディオデータのタイムストレッチ制御を行う際の周波数などを設定するためのテンポクロックパルスを発生する。タイマ1AからのテンポクロックパルスはCPU1に対して処理タイミング命令として与えられたり、あるいはCPU1に対してインタラプト命令として与えられたりする。CPU1は、これらの命令に従って各種処理を実行する。
【0018】
ROM2は、CPU1により実行あるいは参照される各種制御プログラムや各種データ等を格納する。RAM3は、CPU1が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。RAM3の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、テンポラリメモリなどとして利用される。
【0019】
記憶装置4には、複数のセクションデータで構成されるスタイルデータ(後述する
図2参照)などの各種データ等を多数記憶することが可能な内蔵データベースが構成される。また、これらの他に、CPU1が実行する各種制御プログラム等を記憶するようにしてもよい。なお、上述したROM2に制御プログラムが記憶されていない場合、この記憶装置4(例えばハードディスク)に制御プログラムを記憶させておき、それをRAM3に読み込むことにより、ROM2に制御プログラムを記憶している場合と同様の動作をCPU1に実行させることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【0020】
なお、記憶装置4はハードディスク(HD)に限られず、フレキシブルディスク(FD)、コンパクトディスク(CD‐ROM・CD‐RAM)、光磁気ディスク(MO)、あるいはDVD(Digital Versatile Disk)等の様々な形態の記憶媒体を利用する記憶装置であればどのようなものであってもよい。あるいは、フラッシュメモリなどの半導体メモリであってもよい。
【0021】
演奏操作子5は、例えば楽音の音高を選択するための複数の鍵を備えた鍵盤等のようなものであり、各鍵に対応してキースイッチを有しており、この演奏操作子5は演奏者自身の手弾きによるマニュアル演奏のために使用できるのは勿論のこと、コードを入力する入力手段などとして使用することもできる。勿論、演奏操作子5は鍵盤等の形態に限らず、楽音の音高を選択するための弦を備えたネック等のような形態のものなど、どのようなものであってもよい。すなわち、この自動演奏装置を電子楽器に適用する場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。
【0022】
パネル操作子(スイッチ等)6は、例えばスタイルデータを選択する選択スイッチ、スタイルデータを構成するいずれかのセクションデータへの切り替えを指示するセクション切り替えスイッチ、演奏テンポを設定するテンポ設定スイッチ、自動演奏の開始/停止を指示する再生/停止ボタン、コードを入力する入力操作子、音色・効果などのパラメータを設定する設定スイッチ等、各種の操作子を含んで構成される。勿論、音高、音色、効果等を選択・設定・制御するための数値データ入力用のテンキーや文字データ入力用のキーボード、あるいは表示部7に表示された各種画面の位置を指定するポインタを操作するマウスなどの各種操作子を含んでいてもよい。
【0023】
表示部7は、例えば液晶表示パネル(LCD)やCRT等から構成されるディスプレイであって、上記スイッチ操作に応じて各種画面(図示を省略したが、例えばスタイル選択画面や演奏テンポ設定画面やセクション切り替え画面など)を表示するのは勿論のこと、スタイルデータの内容などの各種情報あるいはCPU1の制御状態などを表示することもできる。演奏者は該表示部7に表示されるこれらの各種情報を参照することで、スタイルデータの選択や演奏テンポの設定さらにはセクションの切り替えなどの操作を容易に行うことができる。
【0024】
オーディオ再生部8は、複数のトラック(パート)毎に再生波形信号の同時発生が可能であり、データ及びアドレスバス1Dを経由して与えられるオーディオデータに基づいて再生波形信号を生成し出力する。このとき、オーディオデータの音高を変えることなく再生時間を短くしたり長くしたりする時間軸の調整を行うことができる。このオーディオデータの時間軸の調整を行うタイムストレッチ制御の方法には種々の方法があるが、それらは公知であることからここでの詳細な説明は省略する。さらに、本実施形態において、オーディオ再生部8は、MIDIデータに基づき発生される楽音に同期した再生波形信号を生成し出力する。
【0025】
MIDI音源部9は、複数のトラック(パート)毎に再生波形信号の同時発生が可能であり、データ及びアドレスバス1Dを経由して与えられるMIDIデータを入力し、このMIDIデータに含まれる各種のイベント情報に基づいて再生波形信号を生成し出力する。MIDI音源部9はコンピュータを用いて構成されており、そこにおいてMIDIデータに基づく自動演奏制御は、コンピュータが所定のアプリケーションプログラムを実行することにより実施される。
【0026】
なお、MIDI音源部9はコンピュータプログラムの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。さらに、MIDI音源部9の楽音合成方式は波形メモリ方式に限らず、FM方式、物理モデル方式、高調波合成方式、フォルマント合成方式等を採用してもよく、またこれらの各種楽音合成方式のいずれを単独または複数を組み合わせてもよい。
【0027】
上記オーディオ再生部8及びMIDI音源部9は共に楽音制御部10に接続されており、楽音制御部10ではそれらから発生された再生波形信号に所定のディジタル信号処理を施して効果を付与するとともにこれらを混合(加算)し、スピーカなどのサウンドシステム10Aに出力する。すなわち、ここに示す楽音制御部10は図示を省略したが、信号混合(加算)回路、D/A変換回路、音量制御回路などを含んで構成されてなる。
【0028】
インタフェース11は、当該装置と図示しない外部機器との間でスタイルデータやオーディオデータさらにはMIDIデータなどの各種データ、制御プログラムなどの各種情報を送受信するためのインタフェースである。このインタフェース11は、例えばMIDIインタフェース,LAN,インターネット,電話回線等であってよく、また有線あるいは無線のものいずれかでなく双方を具えていてよい。
【0029】
なお、演奏操作子5や表示部7あるいはMIDI音源部9などを1つの装置本体に内蔵したものに限らず、それぞれが別々に構成され、MIDIインタフェースや各種ネットワーク等の通信手段を用いて各装置を接続するように構成されたものであってもよいことは言うまでもない。
なお、本発明に係る自動演奏装置は電子楽器に限らず、パーソナルコンピュータ、PDA(携帯情報端末)や携帯電話等の携帯通信端末、あるいはゲーム装置など、少なくともオーディオデータに基づいて楽音の自動演奏を行うことのできるものであればどのような形態の装置・機器に適用してもよい。
【0030】
図2は、電子楽器に構成されたデータベースに記憶されるスタイルデータのデータ構成を示す概念図である。スタイルデータは、予め電子楽器内に記憶されている(つまり電子楽器のメーカが作成した)ものに限らず、ユーザが新規に作成したものを追加記憶する、メーカやその他の利用者が新規に作成し外部機器(例えばサーバ装置など)に記憶したものを取得して、既存のデータと差し替えあるいは追加記憶することもできるようになっている。
【0031】
スタイルデータは、複数セクション(メイン、フィルイン、イントロ、エンディング等)の各セクションにつき、複数パート(コードバッキング、べース、リズム等)毎に用意された基本となる伴奏パターンデータを有する。メインセクションは1〜数小節の決まったパターンが繰り返し再生されるセクションであり、それ以外のセクションは決まったパターンが1回のみ再生されるセクションである。自動演奏制御時において、イントロセクションやフィルインセクションを再生終了した場合には自動的にメインセクションに戻って自動演奏は続けられるが、エンディングセクションを再生終了した場合にはその時点で自動演奏は終了される。ユーザは1曲の中で、選択済みの1つのスタイルデータ内のセクションを任意に切り替えながら自動演奏を実行する。典型的には、イントロセクションから自動演奏を開始し、演奏する曲長分だけメインセクションを繰り返した後にエンディングセクションに切り替えることにより自動演奏を終了する。また、メインセクションの再生中には、曲の盛り上がりや曲調の切り替わりに合わせてフィルインセクションを挿入する。なお、伴奏パターンデータはセクションごとに異なる1〜複数小節の長さであってよい。
【0032】
スタイルデータは、伴奏パターンデータとして複数パート(又はトラック)の全てにMIDIデータを割り当ててあるMIDIスタイルと、少なくとも1つのパート(主にリズムパート)にオーディオデータを、残りのパートにMIDIデータを割り当ててあるオーディオスタイルとに分けられる。
図2に示す「スタイル1」はMIDIパートのみで構成されるMIDIスタイル、「スタイルl」はオーディオパート1つを含むオーディオスタイルの例である。MIDIデータは音符イベント及び発音タイミング等のMIDI形式のイベント列からなる楽音制御信号であり、オーディオデータは実際の楽器演奏や人の声あるいは自然音などをサンプリングした楽音波形信号である(
図3参照)。
【0033】
MIDIデータは所定のコードに基づいて作成されており、演奏時に指定されるコードに従ってコード変換される。例えば、所定のコードはCメジャーであり、演奏時にユーザによってコードが指定されると、伴奏パターンデータ中のノートの音高が指定のコードに合うように変換される。MIDIパート制御情報は個々のスタイルに付随される情報であり、こうしたコード変換のルールなど、MIDIデータに基づき自動演奏を制御するための制御パラメータである。
【0034】
オーディオパート制御情報は個々のオーディオデータ毎に付随される情報であり、例えばオーディオデータ記録時のテンポ情報(基本テンポ)、拍情報(基準位置情報)、シンクポイント情報(補正位置情報)、アタック情報、オンセット情報(切替位置情報)などを含む。これらのオーディオパート制御情報は対応するオーディオデータを解析することによって得られ、個々のオーディオデータに対応付けられて予めスタイルデータに記憶される。自動演奏時には、このオーディオパート制御情報が参照されることによりオーディオデータに基づく自動演奏の制御が行われる。このオーディオパート制御情報の詳細について、
図3を参照しながら説明する。
【0035】
図3(a)は、オーディオスタイルのオーディオパートである1小節分のオーディオデータ(楽音波形信号)を拍情報(sb1〜sb4)及びシンクポイント情報(ss1〜ss4)の位置で分割して、分割後の各波形に対し時系列にw1から順にw8までの記号を付したものを示している。これらの波形w1〜W8に含まれる多数のサンプリング波形には、時系列順に昇順又は降順のサンプリング波形番号が付されている。拍情報(sb1〜sb4)は、オーディオデータの1小節の中で何拍目の位置に相当するかを表す再生タイミング情報(基準タイミング)であり、MIDIデータとオーディオデータの同期の基準となる位置として参照される。具体的には、オーディオデータの1小節内において複数の音楽的な拍に対応する各位置にあるサンプリング波形を示す情報(例えばサンプリング波形番号など)である。シンクポイント情報(ss1〜ss4)は波形を補正するための補正位置を示す情報であり、より具体的には振幅の小さいあるいは自己相関性の高いサンプリング波形、言い換えればタイミングずれを補正して再生波形信号を生成するときに音質劣化の生じ難い波形接続を行い得るサンプリング波形を示す情報である。この実施例では、例えば
図3(a)に示すように、各拍で区切られた区間ごとに最も振幅レベルの小さい波形位置をシンクポイント情報としている。また、アタック情報(At1,At4等)は、分割後の各波形(w1〜w8)において音鳴り開始からピーク位置までのうちユーザに最も音として認識されやすい波形位置、例えば振幅レベルの変化量の最も大きい波形位置を示す情報である。この実施例では、最も振幅レベルが大きくなるピーク位置をアタック情報としている。
【0036】
図3(b)では、上段にメインセクション及びフィルインセクションの各1小節分のオーディオデータ(楽音波形信号)を示し、下段にオンセット情報を示してある。オンセット情報は、メインセクションとフィルインセクションを切り替える際の切り替えタイミングを制御する際に参照される情報である。
図3(b)に示す例では、オーディオデータに含まれる複数の各音(各ピーク波形)の立ち上がり位置がオンセット情報として定義されている。メインセクションは6つのピーク波形を有し、フィルインセクションは9つのピーク波形を有している。したがって、メインセクションにおけるピーク波形を含む6つの各波形の立ち上がり位置にある記号Mo1〜Mo6を付した各サンプリング波形が、メインセクションの当該オーディオデータのオンセット情報とされる。一方、フィルインセクションにおけるピーク波形を含む9つの各波形の立ち上がり位置にある記号Fo1〜Fo9を付した各サンプリング波形が、フィルインセクションの当該オーディオデータのオンセット情報とされる。
【0037】
なお、スタイルデータの構成は、上述の形態に限定されない。例えば、スタイルデータの記憶場所とオーディオデータやMIDIデータの記憶場所とが異なっており、スタイルデータ内に個々のオーディオデータやMIDIデータの記憶場所を指し示す情報が記憶されていてもよい。また、MIDIパート制御情報やオーディオパート制御情報についても、各スタイル内に含まれているのではなく、別の場所で管理されていてもよい。例えば、個々のMIDIデータ、オーディーデータ、MIDIパート制御情報、オーディオパート制御情報を記憶装置4だけでなく、ROM2やRAM3あるいはインタフェース11を通じて接続されたサーバ装置などの別々の場所に記憶しておき、再生時にそれぞれの記憶場所からRAM3に読み込むことで本実施例と同様の機能を実現するようにしてもよい。
【0038】
次に、CPU1が実行する「自動演奏処理」について説明する。
図4は、自動演奏処理の一実施例を示すフローチャートである。当該処理は、多数のスタイルデータの中から任意のオーディオスタイルが選択された状態で且つユーザにより自動演奏開始指示がなされた場合に開始され、ユーザによる自動演奏終了指示がなされた場合あるいはエンディングセクションの再生を終了した場合に終了される。
【0039】
ステップS1は、初期化処理を実行する。初期化処理としては、例えばユーザ操作に応じた演奏テンポの設定や、選択済みのスタイルデータをMIDIデータ及びオーディオデータと共にROM2や記憶手段4等から読み出してRAM3に記憶する処理などがある。ステップS2は、選択済みのスタイルデータのうち再生用に指定された任意の1つのセクションにおいて伴奏パターンデータとしてMIDIデータが割り当てられているパート(MIDIパートと呼ぶ)について、設定した演奏テンポに応じてRAM3からのMIDIデータの読み出しを開始する。これに応じて、MIDIデータに基づく楽音が再生される。
【0040】
ステップS3は、設定した演奏テンポに応じて伴奏パターンデータとしてオーディオデータが割り当てられているパート(オーディオパートと呼ぶ)の再生を開始する。このとき、設定した演奏テンポが基本テンポと異なっていれば、オーディオデータのタイムストレッチ制御を行うことによって演奏テンポにあった楽音を生成するように、RAM3に記憶したオーディオデータに基づく自動演奏の制御が行われる。これにより、オーディオデータに基づく楽音が再生される。上記ステップS2及びS3の処理によって、MIDIパートとオーディオパートのそれぞれがユーザによって設定された演奏テンポで再生される、すなわちスタイルデータの全パートが同時に再生される。
【0041】
ステップS4は、ユーザ指示の受付の有無を判定する。ユーザ指示がないと判定した場合には(ステップS4のNO)、ステップS2の処理に戻ってMIDIパートとオーディオパートの再生を続けながらユーザ指示を待つ。ユーザ指示があると判定した場合には(ステップS4のYES)、ユーザ指示に従う各種処理を行う(ステップS5,S9,S12)。この実施例では、ユーザ指示が「メインセクションからフィルインセクションへのセクション変更指示」(ステップS5)、「演奏テンポの変更指示」(ステップS9)、自動演奏の終了指示(ステップS12)である場合に分けて、各指示に対応した処理を実行する。
【0042】
ユーザ指示が「メインセクションからフィルインセクションへのセクション変更指示」である場合には(ステップS5のYES)、ステップS6〜S8の処理を行い、その後にステップS2の処理に戻る。なお、メインセクションからフィルインセクションへのセクション変更指示とは、メインセクションが再生されている状態のときにユーザがパネル操作子6などの操作によってフィルインセクションを再生するよう指定したことを指す。ステップS6は、切り替え先のフィルインセクションのオーディオデータやオーディオデータ制御情報をロード、つまり記憶装置4に記憶されているそれらのデータをRAM3に読み込む。ステップS7は、切り替え先のフィルインセクションのオーディオパート制御情報よりオンセット情報を取得する。ステップS8は、取得したオンセット情報のうち再生中のメインセクションのオーディオデータの現在の再生位置以降で最も近い(次の)オンセット情報を「セクション切り替えタイミング」としてセットする。
【0043】
ユーザ指示が「演奏テンポの変更指示」である場合には(ステップS9のYES)、ステップS10〜S11の処理を行い、その後にステップS2の処理に戻る。ステップS10は、オーディオデータの基本テンポと設定された演奏テンポとの変化率を求める。ステップS11は、前記求めたテンポ変化率に応じてオーディオデータのタイムストレッチ制御(時間軸伸縮制御)を実行する。この際、オーディオパート制御情報のアタック情報を参照することで、音質劣化を少なくすることができる。タイムストレッチ制御については公知であるので説明を省略する。
【0044】
ユーザ指示が「自動演奏の終了指示」である場合には(ステップS12のYES)、指示に応じた終了制御を行って本自動演奏処理を終了する。例えば「自動演奏の終了指示」がメインセクションからエンディングセクションへのセクション切り替え指示である場合には、当該指示タイミングの次小節からメインセクションのデータ再生に変えてエンディングセクションのデータ再生を開始し、当該データを最後まで再生する制御を行った後に本自動演奏処理を終了する。一方、「自動演奏の終了指示」が再生/停止ボタン操作による自動演奏の停止指示である場合には、当該停止指示がなされた時点で強制的にデータ再生終了制御を行うことにより本自動演奏処理を終了する。
【0045】
ユーザ指示が上記した何れの指示でもない場合には(ステップS5,S9,S12のいずれもがNO)、ユーザ指示に応じた「その他の処理」を実行する。その他の処理を実行するユーザ指示としては、例えばメインセクションからフィルインセクション又はエンディングセクション以外へのセクション切り替え指示、再生中のパートのうち任意のパートの再生をミュート/ミュート解除する指示、スタイルデータを変更する指示、音色変更や音量変更の指示などがある。
【0046】
次に、「割り込み処理」について説明する。
図5は、割り込み処理の一実施例を示すフローチャートである。当該割り込み処理は自動演奏の開始から終了まで、クロックに応じた所定の時間間隔毎に繰り返し起動される。ここで、演奏テンポに応じてクロックあたりの時間長は変わることから、ユーザによる演奏テンポの変更指示に応じて当該処理を繰り返し起動する時間間隔(つまり割り込み処理タイミング)は当然に変わる。
【0047】
ステップS21は、再生カウンタの値を「+1」つまりは自動演奏の開始にあわせてカウントが開始されるクロックカウント値を、本処理を起動するたびに「1」加算する。ステップS22は、再生カウンタ値がセクション切り替えタイミングに到達したか否かを判定する。ここで、再生カウンタの値がセクション切り替えタイミングに到達したと判定される場合をいくつか挙げると、再生カウンタの値が「セクション切り替えタイミング」としてセットされたタイミング(
図4のステップS8参照)に到達したとき、自動的にメインセクションへの切り替えが行われるときつまりはイントロセクションやフィルインセクションの再生が終わったとき、メインセクションから別のメインセクション又はエンディングセクションへの切り替え指示がなされたあとに、切り替え前のメインセクションの再生位置が小節区切りの位置まで到達したときなどがある。
【0048】
再生カウンタの値がセクション切り替えタイミングに到達したと判定した場合には(ステップS22のYES)、読み出し対象のオーディオデータを切り替え先のセクションのオーディオデータに切り替える(ステップS23)。つまり、ユーザがメインからフィルインへのセクション切り替え指示を行なった際(
図4のステップS5でYES)には、ユーザ操作に応じてすぐに切り替え先セクションであるフィルインセクションのデータが読み出されるのではなく、ステップS8でセットされたセクション切り替えタイミングに到達した際にフィルインセクションのデータ読み出しが開始される。この切り替え制御には、ユーザによるセクション間の切り替えタイミングに関わらず、ノイズの発生を低減する効果がある。
【0049】
セクション間におけるオーディオデータの切り替え制御について説明する。
図6及び
図7は、セクション間におけるオーディオデータの切り替え制御の一実施例を説明するための概念図である。なお、ここでは
図3(b)に示したメインセクションからフィルインセクションへのセクション切り替え時におけるオーディオデータの切り替え制御を例に説明する。
【0050】
まず、
図6を参照しながら、図中において点線で示す1拍目の真ん中あたりのタイミングで、ユーザがセクション切り替え指示操作を行った場合について説明する。この場合、ユーザ操作に応じて即座にメインセクションのオーディオデータからフィルインセクションのオーディオデータへの切り替え制御が行われてしまうと、
図3(b)に示すフィルインセクションの2つ目の波形(立ち上がり位置がFo2である波形、以下Fo2波形)の途中から再生を開始することになるが(
図6上段図参照)、1つの波形途中からの再生音はノイズとなって現れるので都合が悪い。
【0051】
上述したように、オーディオ制御データのオンセット情報には、フィルインセクションのオーディオデータに含まれる各波形の立ち上がり位置(Fo1〜Fo9)が設定されている(
図3(b)参照)。そこで、このケースでは、ユーザ操作タイミングにあわせてすぐにセクション間におけるオーディオデータの切り替え制御を行うのではなく、ユーザ操作タイミングの直後にある切り替え先(フィルインセクション)のオンセット情報「Fo3」に従って、再生カウンタ値が「Fo3」になるまでは切り替え前のメインセクションのMo1波形の再生を維持し、再生カウンタ値が「Fo3」になるタイミングでFo3波形の先頭からフィルインセクションのオーディオデータの再生を開始するように切り替え制御を行う(
図6下段図参照)。
【0052】
これにより、切り替え後のフィルインセクションにおいては、Fo2波形の途中からではなくFo3波形の先頭から再生が開始されるので、波形途中からの再生に伴うノイズが生ずることがない。なお、実際の装置では、セクション切り替え指示操作後に切り替え先のフィルインセクションのオーディオデータのロードが開始され、そのオーディオデータのロードには時間がかかることから、再生カウンタ値がオーディオデータのロード完了後以降にある最も近いオンセット情報になるタイミングでオーディオデータの切り替えが行われる。
【0053】
次に、
図7に示すように、図中において点線で示すFo8波形の直前のタイミングで、ユーザがセクション切り替え指示操作を行った場合について説明する。この場合、ユーザ操作に応じて即座にメインセクションのオーディオデータからフィルインセクションのオーディオデータへの切り替え制御が行われてしまうと、メインセクションのMo5波形のアタック(振幅レベルが最も高い箇所)が鳴った直後にフィルインセクションのFo8波形が鳴り始めることから(
図7上段図参照)、短時間の間に2つのアタック音が発生する所謂「二度鳴り」現象が生じてしまうので都合が悪い。
【0054】
このケースにおいて、
図6に示したケースと同様に、「ユーザ操作後の最初の波形立ち上がり位置でセクション間におけるオーディオデータの切り替えを行う」場合について考える。すなわち、
図7中段図に示すように、ユーザ操作タイミングの直後にある切り替え先(フィルインセクション)のオンセット情報「Fo8」に従って、再生カウンタ値が「Fo8」になるまでは切り替え前のメインセクションのMo5波形の再生を維持し、再生カウンタ値が「Fo8」になるタイミングでFo8波形の先頭からフィルインセクションのオーディオデータの再生を開始するように切り替え制御を行うようにする。しかし、このケースではフィルインセクションの波形立ち上がり位置である「Fo8」のタイミングで、メインセクションからフィルインセクションへのオーディオデータの切り替えを行なったとしても、Mo5波形とFo8波形それぞれのアタックが短時間に再生されることにはかわりないので「二度鳴り」現象が起こってしまう。
【0055】
したがって、このケースでは、オーディオ制御データのオンセット情報に、フィルインセクションのオーディオデータに含まれる各波形の立ち上がり位置(Fo1〜Fo9)ではなく、
図7下段図に示すように、それらの立ち上がり位置よりも少し前の任意の波形位置「Fo1'〜Fo9'」を設定しておく。具体的には、メインセクションのMo5波形の立ち上がり位置とFo8'の位置とがほぼ同じになるよう、オンセット情報をFo8ではなくからFo8'に変更するように設定する。他のオンセット情報(Fo1、Fo2、・・・)についても、各セクションのオーディオデータに含まれる各波形を比較して、最適な位置(Fo1'、Fo2'、・・・)を設定するとよい。すなわち、オーディオ制御データのオンセット情報は波形の立ち上がり位置に設定されることに限らない。この設定によれば、上記したユーザ操作タイミングの直後にある切り替え先(フィルインセクション)のオンセット情報が「Fo8」ではなく「Fo9'」になるので、このオンセット情報「Fo9'」に従って、再生カウンタ値が「Fo9'」になるまでは切り替え前のメインセクションのMo5波形の再生を維持し、再生カウンタ値が「Fo9'」になるタイミングでフィルインセクションのオーディオデータの再生を開始するように切り替え制御を行う。こうすることにより、上記のような二度鳴りの問題を解決することができる。
【0056】
図5の説明に戻って、ステップS24は、再生カウンタの値が所定の計測タイミング(ここでは一例として1拍毎の拍タイミング)に達したか否かを判定する。再生カウンタの値が計測タイミングに達したと判定した場合には(ステップS24のYES)、現時点のオーディオデータの再生位置とオーディオ制御データの拍情報とに基づいて、MIDIデータの再生位置とオーディオデータの再生位置とのタイミングずれを計測する(ステップS25)。すなわち、オーディオ制御情報は拍情報を含むことから、この拍情報によって「本来の拍タイミングで再生すべき波形位置はどのサンプリング波形であるか」がわかる。そこで、この実施形態では、拍タイミングをずれを計測するための基準タイミングとみなし、この拍タイミング毎に「実際に再生されている波形位置(サンプリング波形番号)」と拍情報に基づく「本来再生すべき波形位置(サンプリング波形番号)」とを比較することによって、MIDIデータの再生位置とオーディオデータの再生位置とのタイミングずれを計測するようにしている。ここで計測されたずれの量は、RAM3に一時記憶される。
【0057】
ステップS26は、現在のオーディオデータの再生位置を取得する。ステップS27は、取得したオーディオデータ再生位置がオーディオ制御データのシンクポイントのタイミングつまりはオーディオ制御データのシンクポイント情報で特定される波形位置の再生タイミングと一致するか否かを判定する。オーディオデータ再生位置がシンクポイントのタイミングであると判定した場合には(ステップS27のYES)、直前の計測タイミングで計測されたずれ量に応じてオーディオデータの再生位置を変更することにより、MIDIデータの再生位置とオーディオデータの再生位置とのタイミングずれを補正する(ステップS28)。例えば、MIDIデータの再生位置よりもオーディオデータの再生位置が遅れた場合において、遅れを検出した計測タイミング以降の最初のシンクポイント情報で特定される波形位置にて、現在のオーディオデータの再生位置を遅れた分に対応するサンプリング波形の数だけずらし、ずらした以降のサンプリング波形からオーディオデータの再生を開始することによりタイミングずれを補正する(詳しくは後述する
図8参照)。ステップS29は、各パートの発音処理を実行する。つまり、現在のタイミングにMIDIイベントがあればそれに基づき楽音の発音や消音さらにはその他の楽音制御処理を行う。
【0058】
ここで、MIDIデータの再生位置とオーディオデータの再生位置とのタイミングずれ補正について説明する。
図8は、再生位置のタイミングずれ補正を説明するための概念図である。なお、ここでは
図3(a)に示した1小節分のオーディオデータのタイムストレッチ制御を行って再生波形信号を生成する場合を例に説明する。したがって、
図8に示したオーディオパートの各波形w1〜w8は時間軸伸縮した後の再生波形信号を表す。
【0059】
上述したように、本実施形態では、各拍においてMIDIデータの再生位置とオーディオデータの再生位置のずれを計測し、ずれを計測した場合には次のシンクポイント情報に従う波形再生時において、計測したずれ量の分だけオーディオデータの再生位置を変更することによってMIDIデータの再生位置とオーディオデータの再生位置とのタイミングずれを補正するようにしている。つまり、MIDIデータはユーザの指定した演奏テンポで正確に読み出されて再生されるが、オーディオデータはタイムストレッチ処理による誤差の影響などを受けて必ずしも指定した演奏テンポで再生されるとは限らないために、MIDIデータの再生を基準信号として、オーディオデータの再生位置を基準としたMIDIデータの再生位置に合うよう調整することで、オーディオデータとMIDIデータの同期再生を図っている。
図8に示すように、第1小節の1拍目のタイミング(MIDIデータの再生位置を基準に示し、図中では「1-1」と記す)においては、基準としたMIDIデータの再生位置と拍情報(sb1)に基づくオーディオデータの再生位置とに「ずれ」が発生していない。したがって、次のシンクポイント情報ss1において、オーディオデータの再生位置を変更してのタイミングずれ補正は行われない。
【0060】
第1小節の2拍目(1-2)のタイミングでは、MIDIデータの再生位置とオーディオデータの再生位置とに「ずれ」が発生している。つまり、第1小節の2拍目(1-2)のタイミングでは、拍情報(sb2)に基づくオーディオデータの再生位置が本来波形w3の開始位置となるはずであるが、図示の例ではまだ時間軸伸縮された波形w2を引き続き再生中であって波形w3の開始位置に至っていない。そこで、第1小節の2拍目(1-2)のタイミングにおいては、拍情報(sb2)に基づく本来の波形w3の再生位置と現時点で再生中の波形w2の再生位置とのずれ量(Δt1と記す)を計測する(ステップS24及びS25参照)。このずれ量(Δt1)はサンプリング波形の数で表される(例えば690個など)。
【0061】
第1小節の2拍目(1-2)のタイミング以降の最初のシンクポイント情報(ss2)で特定される波形w4の先頭波形の再生タイミングになると、当該波形w4に関して前記ずれ量(Δt1)だけ再生位置の変更を行う(ステップS26及びS27参照)。ただし、この時点における波形w4の先頭波形の再生タイミング(ss2)は既に遅れが発生しており、本来の再生タイミング(便宜的にss2´と記す)でない。そこで、波形w4の先頭波形の再生タイミング(ss2)では、波形w3に引き続き波形w4の先頭波形からフェードアウト制御しながら再生を開始する一方で、空きトラックを利用して波形w4の先頭波形から前記ずれ量(Δt1)だけずれた(ジャンプした)位置にあるサンプリング波形からフェードイン制御しながら再生を開始する。すなわち、各トラック毎に再生される波形をクロスフェード制御により接続することで(図中において斜線で記した箇所)、楽音が自然に遷移するようにしている。このようにして、別の空きトラックを利用してタイミングが遅れた分に対応する数のサンプリング波形の再生を飛ばして(図中において黒く塗りつぶした箇所)、再生を飛ばした以降のサンプリング波形から再生を開始させる。こうすることにより、再生タイミング(ss2)においてタイミングずれが解消されて、波形w4の再生位置が演奏テンポに応じた再生位置に戻る。
【0062】
さらに、この例では第1小節の3拍目(1-3)でも再度「ずれ」が発生している。このずれ量をΔt2とする。この場合、第1小節の3拍目(1-3)のタイミング以降の最初のシンクポイント情報(ss3)にて、上記と同様にして、波形w6の先頭波形の再生タイミング(ss3)では、波形w5に引き続き波形w6の先頭波形からフェードアウト制御しながら再生を開始する一方で、別の発音チャンネルを利用して波形w6の先頭波形から前記ずれ量(Δt2)だけずれた(ジャンプした)位置にあるサンプリング波形からフェードイン制御しながら再生を開始することにより、再生タイミング(ss3)において波形w6の再生位置を本来の再生位置に戻す。以降についても同様であるので、ここでの説明を省略する。なお、この例ではオーディオ再生がMIDI再生よりも遅れる場合の補正方法について説明したが、オーディオ再生がMIDI再生よりも早くなってしまった場合でも同様に補正を行う。すなわち、シンクポイント情報で特定される波形位置に到達した際に、再生中の波形をフェードアウト再生する一方で、直前に計測されたずれの量だけ遅らせた波形を別のチャンネルにてフェードイン再生するようにするとよい。
【0063】
なお、ここでは説明を簡単にするため、直前に計測したずれをシンクポイント情報(
図2参照)に従う再生タイミングの到来にあわせて補正する方法を説明したが、補正の仕方はこれに限定されない。例えば、直前とさらにその1つ前に計測したずれの平均値を補正するようにしてもよい。また、ずれの計測頻度や計測の精度に応じて、シンクポイントにおいて補正する量を適宜変更するのが好ましい。
なお、シンクポイント情報と計測ポイントの対応は1対1でなくてもよい。つまり、拍ごとに1箇所のシンクポイント情報を設定しておく必要はない。所定の基準を満たす位置(例えば振幅レベルが所定値以下)をすべてシンクポイント情報として設定しておいてもよい。
なお、シンクポイント情報は、サンプリング波形の位置で定義するのではなく、何らかの条件で定義しておいてもよい。例えば、振幅レベルが所定値以下になっ た時点をシンクポイント情報とみなすようにしておき、再生時に振幅レベルを随時計測し、振幅レベルが所定値以下になったことを検出すればその時点でずれを補正するようにしてもよい。
【0064】
以上のように、本発明に係る自動演奏装置によると、基
本テンポに従って演奏された楽音波形信号と共に、当該楽音波形信号のうち所定の基準タイミング(上記例では1拍)毎に演奏されるべき波形位置を示す拍情報(基準位置情報)を予め記憶しておく。また、当該楽音波形信号を解析することによって得られる波形位置であって、タイミングずれを補正して再生波形信号を生成するときに音質劣化の生じ難い波形接続を行い得るサンプリング波形の波形位置を示すシンクポイント情報(補正位置情報)も記憶しておく。設定された演奏テンポに応じた再生波形信号の生成時において、前記基準タイミングにおいて、当該タイミング時に生成した再生波形信号の波形位置と、前記記憶した楽音波形信号における当該基準タイミングに演奏されるべき波形位置とのずれを、前記記憶しておいた拍情報に従って求める。例えば、拍情報が「1260」であるにも関わらず、生成した再生波形信号の波形位置が「940」であるような場合には、タイミングずれが生じたものと判断し、計測されるずれ量は「320」(1260-940)となる。
【0065】
そして、前記求めた波形位置のずれを補正する補正位置が前記記憶したシンクポイント情報に従って特定され、該特定した補正位置に該当する再生波形信号を生成するタイミング時に前記求めたずれ量「320」だけ前記波形位置を補正する。このように、基準タイミングその時々のタイミングずれの程度(ずれ量)に従って、基準タイミング時ではなく前記シンクポイント情報に従って特定される補正位置を再生するタイミングにおいて、ずれを補正した再生波形信号を生成することにより、楽音波形信号に基づく楽音との発生タイミングにずれが生じることによる楽音の質の低下を防止することができる。すなわち、基準タイミングにおいてずれを計測した場合のみに、ずれを計測した基準タイミングに後続するタイミングの到来を待ってずれを補正するようにしたために、従来のように聴感上の違和感が無視できないほどの楽音の音質劣化を引き起こす恐れがない。
【0066】
以上、図面に基づいて実施形態の一例を説明したが、本発明はこれに限定されるものではなく、様々な実施形態が可能であることは言うまでもない。例えば、上述した実施例では、オーディオデータとMIDIデータの同期再生を例に示したが、 オーディオデータとMIDIデータの同期再生に限らず、オーディオデータ同士の同期再生にも応用できる。例えば、複数のオーディオデータを扱うDJ用途や、複数の機器間でオーディオ再生の同期を取る際にも応用できる。
なお、同期再生するデータ同士を同時に再生開始する必要はない。一方のデータ(例えばMIDIデータ)を先に再生開始しておき、後からもう一方(例えばオーディオデータ)を再生させてもよい。その際には、小節単位に同じ拍同士で同期させる(それぞれの1拍目同士を同期させる等)ことに限らず、例えば一方のデータの2拍目と他方のデータの1拍目を同期させるなど、異なる拍位置で同期させるようにしてもよい。
なお、誤差の計測は上述した拍単位に限定されず、八分音符単位や、各拍のウラ単位など、基準の楽音(MIDI)の再生位置とオーディオデータに基づく楽音の再生位置とのずれが計測できさえすればどこであってもよい。その場合、オーディオパート制御情報には、オーディオデータの1小節内において複数の八分音符や各拍のウラに対応する各位置にあるサンプリング波形を示す情報を記憶するのは勿論である。