JP3876896B2 - 波形生成方法及び装置 - Google Patents
波形生成方法及び装置 Download PDFInfo
- Publication number
- JP3876896B2 JP3876896B2 JP2004174691A JP2004174691A JP3876896B2 JP 3876896 B2 JP3876896 B2 JP 3876896B2 JP 2004174691 A JP2004174691 A JP 2004174691A JP 2004174691 A JP2004174691 A JP 2004174691A JP 3876896 B2 JP3876896 B2 JP 3876896B2
- Authority
- JP
- Japan
- Prior art keywords
- rendition style
- waveform
- performance
- event
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
また、上述の全波形の波形データを記憶する方式では、自然楽器固有の各種奏法(若しくはアーティキュレーション)による音色変化を忠実に表現することが可能であるが、記憶した波形データの通りしか楽音を再生することができないので、制御性に乏しく、また、編集性にも乏しかった。例えば、所望の奏法(若しくはアーティキュレーション)に対応する波形データを演奏データに応じた時間軸制御等の特性制御を行うことが非常に困難であった。
〔ハードウエア構成例〕
図1は、この発明の一実施例において利用可能な装置のハードウエア構成例を示すブロック図である。ここに示されたハードウエア構成例はコンピュータを用いて構成されており、そこにおいて、波形生成処理は、コンピュータがこの発明に係る波形生成処理を実現する所定のプログラム(ソフトウエア)を実行することにより実施される。勿論、この波形生成処理はコンピュータソフトウエアの形態に限らず、DSP(ディジタル・シグナル・プロセッサ)によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。また、この波形生成装置は、電子楽器あるいはカラオケ装置又は電子ゲーム装置又はその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっていてよい。
上述のハードディスク109あるいはその他適宜の記憶媒体を用いて構成される奏法波形データベースにおいては、種々の奏法(すなわちアーティキュレーション)の要素に対応する波形を再生するための多数のモジュールデータ(これを「奏法モジュール」という)とそれに関連するデータ群を記憶している。1つの「奏法モジュール」とは、奏法波形合成システムにおいて1つのかたまりとして処理できる奏法波形の単位である。別の言い方をすると、「奏法モジュール」とは、1つのイベントとして処理できる奏法波形の単位である。例えば、種々有る奏法モジュールの中には、演奏音の奏法的特徴に応じて、アタックやボディあるいはリリース等の音の部分的区間に対応して定義されているものもあれば、また、スラーのような音と音のつなぎの区間(ジョイント部)に対応して定義されているものもあり、ビブラートのような音の特殊演奏部分に対応して定義されているものもある。また、フレーズのように複数音符に対応して定義されているものがあってもよい。
1)「ノーマル・エントランス」(略称NE): (無音状態からの)音の立ち上がり部分(つまり「アタック」部分)を受け持つ奏法モジュール。
2)「ノーマル・フィニッシュ」(略称NF): (無音状態への)音の立ち下がり部分(つまり「リリース」部分)を受け持つ奏法モジュール。
3)「ノーマル・ジョイント」(略称NJ): 2つの音を(無音状態を経由せずに)接続する部分(つまり「ジョイント」部分)を受け持つ奏法モジュール。
4)「ノーマル・ショート・ボディ」(略称NSB): ビブラートのかからない、音の立ち上がり以降から立ち下がり以前までの部分(つまり「ボディ」部分)の短い部分を受け持つ奏法モジュール。
5)「ビブラート・ロング・ボディ」(略称VLB): ビブラートのかかった、音の立ち上がり以降から立ち下がり以前までの部分(つまり「ボディ」部分)を受け持つ奏法モジュール。
上記5種類の分類法は、明細書での説明のための一例にすぎず、他の分類法を採用してもよいし、更に多くの種類が存在してよい。また、奏法モジュールは、楽器種類等のオリジナル音源別にも分類されるのは勿論である。
1)調和成分の波形(Timbre)ベクトル: 調和成分の波形構成要素のうち、ピッチと振幅をノーマライズした波形形状のみの特徴を抽出したもの。
2)調和成分の振幅(Amplitude)ベクトル: 調和成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
3)調和成分のピッチ(Pitch)ベクトル: 調和成分の波形構成要素のうち、ピッチ特性を抽出したもの(例えば或る基準ピッチを基準にした時間的ピッチ変動特性を示すもの)。
4)調和外成分の波形(Timbre)ベクトル: 調和外成分の波形構成要素のうち、振幅をノーマライズした波形形状(ノイズ的波形)のみの特徴を抽出したもの。
5)調和外成分の振幅(Amplitude)ベクトル: 調和外成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
上記のほかに、更に別の種類のベクトル(例えば波形の時間軸の進行を示す時間ベクトル)が含まれていてもよいが、便宜上、本実施例ではその説明を省略する。
データ1:奏法モジュールのサンプル長。
データ2:ノートオンタイミングの位置。
データ3:調和成分の振幅(Amplitude)要素のベクトルIDと代表点値列。
データ4:調和成分のピッチ(Pitch)要素のベクトルIDと代表点値列。
データ5:調和成分の波形(Timbre)要素のベクトルID。
データ6:調和外成分の振幅(Amplitude)要素のベクトルIDと代表点値列。 データ7:調和外成分の波形(Timbre)要素のベクトルID。
データ8:調和成分の波形(Timbre)要素の塊部の開始位置。
データ9:調和成分の波形(Timbre)要素の塊部の終了位置(調和成分の波形(Timbre)要素のループ部の開始位置)。
データ10:調和外成分の波形(Timbre)要素の塊部の開始位置。
データ11:調和外成分の波形(Timbre)要素の塊部の終了位置(調和外成分の波形(Timbre)要素のループ部の開始位置)。
データ12:調和外成分の波形(Timbre)要素のループ部の終了位置。
図3は、当該奏法モジュールに対応する実波形区間を構成する各成分及び要素の一例を模式的に示す図であり、上から当該区間における調和成分の振幅(Amplitude)要素、調和成分のピッチ(Pitch)要素、調和成分の波形(Timbre)要素、調和外成分の振幅(Amplitude)要素、調和外成分の波形(Timbre)要素の一例を示す。なお、図に示している数字は上記各データの番号に対応するように付してある。
1は、当該奏法モジュールに該当する波形のサンプル長(波形区間長)である。例えば、当該奏法モジュールの基となったオリジナル波形データの全体の時間長さに対応している。2はノートオンタイミングの位置であり、当該奏法モジュールのどの時間位置にも可変に設定することが可能である。原則的には、このノートオンタイミングの位置から当該波形に従った演奏音の発音が開始されるが、ベンドアタックなどの奏法によってはノートオンタイミングよりも波形成分の立ち上がり開始時点が先行する場合がある。例えば、バイオリンでは実際に音が出る前から弓による弦の擦りが始められているので、そのような発音開始前の奏法波形の出始めを正確にシミュレートすることに適している。3は、コードブックに記憶された調和成分の振幅(Amplitude)要素のベクトルデータを指し示すためのベクトルID及び代表点値列を示す(図において、黒く塗りつぶした正方形で示す2点が代表点を示す)。4は、調和成分のピッチ(Pitch)要素のベクトルデータを指し示すためのベクトルID及び代表点値列を示す。
この実施例においては、所望の曲の自動演奏データ(曲ファイル)の中に奏法波形を再生するための演奏イベントデータが含まれており、自動演奏シーケンスの進行に伴って読み出される演奏イベントデータに基づき奏法波形が生成される。自動演奏データ(曲ファイル)は、基本的に、SMF(スタンダードMIDIファィル)形式からなり、通常のMIDIデータとAEM(アーティキュレーション・エレメント・モデリング)演奏イベントデータ(換言すれば奏法イベントデータ)とが混在する演奏データからなる。例えば、1つの曲の自動演奏データが複数トラックの演奏データからなり、そのうちの1又は複数トラックがAEM演奏イベント(奏法イベント)を含むAEM演奏シーケンスのトラックであり、他のトラックが通常のMIDI演奏シーケンスのトラックである。また、1トラック内でMIDIデータとAEM演奏イベント(奏法イベント)データとが混在していてもよい。その場合は、AEM演奏イベント(奏法イベント)データは、基本的にMIDIフォーマットで記述され、MIDIチャンネルのいずれか1又は複数がAEM演奏データのために割り当てられる。また、1トラック全体がAEM演奏データのために割り当てられている場合でも、データは基本的にはMIDIDフォーマットで記述されていてよい。つまり、MIDIフォーマットの中で、AEM演奏イベント(奏法イベント)であることを示す識別子を付加しておけばよい。勿論、MIDI以外のデータフォーマットを使用してもよい。各トラックの演奏データは別々の演奏パートの演奏データを構成する。また、1つのトラックの演奏データ内に複数のMIDIチャンネルの演奏データが混在しうるので、1トラックの演奏データにおいても各MIDIチャンネル毎に別々の演奏パートの演奏データを構成しうる。例えば、或る1又は複数の演奏パートの演奏音が、AEM演奏データに基づく奏法波形合成によって、再生される。例えば、バイオリンのパートと、ピアノのパート、というように、複数の演奏パートでそれぞれAEM演奏データに基づく奏法波形合成を行うことができる。
1つの奏法イベントは、前記図2に示した第1階層のデータ、つまり、当該イベントに対応して再生すべき「奏法モジュール」を示す「奏法ID」と、それに関連する「奏法パラメータ」とを含む。前述のように、「奏法パラメータ」の全部又は一部がこの段階で含まれていなくてもよい。
図1に示す波形生成装置において、通常の楽音波形及び奏法波形の合成は、コンピュータが通常の音源プログラム及び本実施例に係る奏法波形生成プロセスを実現する所定のプログラム等を実行することにより実施される。この奏法波形生成プロセスを構成する大まかな処理ブロックは、図5に示すように、イージー・プレーヤー部20、奏法シーケンス部21、パート部22、奏法合成部23、波形合成部24からなる。図6は、この奏法波形生成プロセスを構成する各処理ブロックが受け持つ処理の時間関係を大まかに示す概略タイミングチャートである。図6において並列的に示されたブロック30,31,32,33,34は、奏法波形生成プロセスにおけるそれぞれの処理ブロック(イージー・プレーヤー部20、奏法シーケンス部21、パート部22、奏法合成部23、波形合成部24)が自己が受け持つ動作を実行する時間帯をおおまかに示すものである。図6において各ブロック30,31,32,33,34が並列的に図示されているのは、各ブロックの処理が並列的に行われることを意味する。
イージー・プレーヤー部20は、再生しようとする任意の曲の自動演奏データ(曲ファイル)を記憶した記憶媒体から該自動演奏データ(曲ファイル)を読み込む機能、該再生しようとする曲等に関する入力操作子を介した各種の設定操作(移調量設定、音量調整、その他)及び指示操作(再生開始指示、再生停止指示、その他)を受け付ける機能、再生中の再生位置(時間)表示を含む各種表示を制御する機能、後述する必要情報補充機能、などを実行する。
図6における時間ブロック30がイージー・プレーヤー部20による処理が行われる時間帯を略示している。自動演奏の再生プログラムが起動されたときから終了するまでの間、イージー・プレーヤー部20が動作する。再生開始指示「PLAY」が与えられると、イージー・プレーヤー部20では、図6のブロック301で示すようなタイミングで、再生しようとする曲の自動演奏データ(曲ファイル)を読み込み、その解釈を行う。勿論、「PLAY」指示の以前に、所望の曲ファイルが選択された時点で、再生しようとする曲の自動演奏データ(曲ファイル)の読み込みが開始されてもよい。
更に、イージー・プレーヤー部20で行う機能の一つとして、読み込んだ自動演奏データ(曲ファイル)におけるAEM演奏イベントデータ(奏法イベント)の中に、必要な奏法パラメータが含まれていなかった場合、これを補充する機能がある。例えば、或る奏法イベントの奏法IDの種類が「ビブラート・ロング・ボディ」の場合、ビブラート深さなどの制御パラメータが設定されないと、どの程度のビブラートで奏法波形を合成してよいのか判らない、という不都合がある。そのため、奏法モジュールの種類によっては、奏法イベントには奏法IDのみならず、必要なパラメータも付属されていなければならないものがある。そこで、イージー・プレーヤー部20では、読み込んだ自動演奏データの中の各奏法イベントにおいてそのような必要なパラメータが含まれているかどうかをチェックし、含まれていない場合は、必要なパラメータを自動的に補充する。この情報補充機能は図6におけるブロック302のタイミングで実行される。イージー・プレーヤー部20から奏法シーケンス部21に送付される前記奏法イベント列オブジェクトにおいては、そのように補充されたパラメータを含む。必要なパラメータの自動補充の仕方としては、奏法モジュールの各種類毎に、各種のパラメータ毎の所定のデフォルト値(標準値)を用意しておき、このデフォルト値を使用すればよい。デフォルト値の決め方としては、それぞれ所定の固定値を予め用意しておいてもよいし、あるいは、当該パラメータに関する前回使用した値(直前使用値)をバッファしておき、バッファされた直前使用値をデフォルト値として使用するようにしてもよく、その他、適宜の手段を採用してよい。
奏法シーケンス部21は、イージー・プレーヤー部20から与えられるタイムスタンプ付きの奏法イベント列オブジェクト(つまり奏法イベントデータ列)をバッファし、これをタイムスタンプの時刻つまり再生時刻に従って、順次に読み出す。この順次読出しは、任意に設定される「送り出し頻度」に相当する時間ε毎にバッチ処理で行われる。図6において、時間εの間隔が例示されている。
・パート管理:
奏法波形の合成は演奏パート別に並列的に行われるので、奏法シーケンス部21の最初の仕事は、今回の曲演奏においてAEM演奏パートがどれだけあるかを事前に(シーケンス再生開始指示の受理前に)解釈し、必要な数のAEM演奏の再生パート数を設定するようパート部22を開設する指示を行うことである。そして、イージー・プレーヤー部20から与えられるタイムスタンプ付きの奏法イベント列オブジェクト(つまり奏法イベントデータ列)を解釈して、これをパート別にセット(バッファ)しておく。よって、シーケンス再生開始指示の受理後の、奏法イベント列オブジェクト(つまり奏法イベントデータ列)の順次読出しは、各パート毎に行われる。よって、以下の説明で、「或るイベントの次のイベントを先読みする」というような場合、同じパートにおける奏法イベントデータ列を対象してイベントの前後を論じているのである。以下、単に「パート」という言うが、これは「AEM演奏パート」のことである。
上記パート管理以外の事前処理として、奏法シーケンス部21においては、各種の動作時間遅れを考慮した時間パラメータに応じた処理を行う。この種の時間パラメータには次のようなものがある。
「奏法シーケンス部での送り出し頻度の時間ε」…これは、前述の通り、奏法シーケンス部21がどの程度の頻度で演奏イベントデータをパート部22以降の処理に送り出すかを設定するデータである。すなわち、或る送り出し時点(現在時刻)において、この時間εの幅内に存在する演奏イベントデータを一括して次段に送り出す。なお、この実施例では、奏法シーケンス部21は現在時刻の演奏イベント(詳しくは現在処理すべき時間εの幅内に存在するイベント)のみならず、それよりも先の(未来の)1又は複数の演奏イベントをも先行して読み出して、パート部22に与えるようになっている。これについては追って詳しく説明する。パート部22以降の処理では、この時間ε毎に与えられる演奏イベントデータに基づき奏法波形再生に必要な処理を行う。
「発音潜伏(latency)時間β」…これは、再生開始時の動作遅延時間に見合った時間である。再生開始シーケンス位置よりもこの発音潜伏(latency)時間βだけ手前に、波形合成部24における動作開始時刻をみかけ上設定する(つまり再生開始シーケンス位置を遅らせる)。再生開始時においては、上記送り出し頻度の時間εの幅分の演奏イベントのみならず上記先送り時間γ分の演奏イベントについても奏法波形合成処理を一挙に行う必要があるため、その負荷を考慮して、それに相当する遅れ時間を発音潜伏(latency)時間βとして、再生開始時にオフセット設定することで、再生開始時の動作遅れを調整する。
「オーディオデバイスへの出力潜伏(latency)時間δ」…これは、波形合成部24が、出力用オーディオデバイスの時刻よりもどれだけ手前の時刻から合成処理を行うかを設定する時間である。奏法シーケンス部21では、この出力潜伏(latency)時間δのデータを波形合成部24にセットする。例えば、波形合成部24では、合成した波形データを、この出力潜伏(latency)時間分だけ先の時刻で使用される出力バッファに書き込むように制御する。
上記各時間パラメータは、それぞれ所定値に固定されていてもよいし、あるいは、ユーザによって可変設定できてもよい。ユーザが時間パラメータを設定する場合は、イージー・プレーヤー部20での設定処理によってこれを行う。
奏法シーケンス部21で取り扱うメモリ内にバッファされた或る1パートの奏法イベント列オブジェクトが図7の(a)のようであるとする。EV1,EV2,…が各イベントを示し、Ts1,Ts2,…がそれぞれに対応するタイムスタンプを示す。このメモリの読出しポインタの初期値は、初期時点t0に対応しているものとする。
図7の(b)は、奏法シーケンス部21によるイベント処理タイミングを略示するタイミングチャートである。最初のイベント処理タイミングは、イージー・プレーヤー部20からシーケンス再生開始指示が与えられたとき到来する。これを初期時点t0とする。以後のイベント処理タイミングは、送り出し頻度の時間εが経過する毎に到来する。これらを時点t1,t2,…とする。初期時点t0での処理において、基本的に、時間ε分の時間帯(現在時間帯)に存在するイベント(現在イベント)をそのタイムスタンプと共に図7(a)のメモリから読み出す。もちろん、前述の通り、1つのイベントには奏法IDと奏法パラメータ等が含まれているので、当該イベントについてのこれらのデータ全てがワンセットで読み出される。図7(b)の例では、最初のイベント(EV1,EV2)が最初の時間ε分の時間帯に存在している例を示している。なお、最初のイベントは通常、アタック部の奏法イベント(EV1)であり、これは前述の通りノートオンイベント(EV2)と対になって一緒に処理される。もちろん、現在時間帯にイベントが存在しない場合もありうる。なお、各イベントEV1,EV2,…が存在する時間位置は、それぞれのタイムスタンプTs1,Ts2,…から判明する。
図6において、ブロック311a,311b,311c…が、奏法シーケンス部21による上述のイベント読み出し処理(現在イベントと未来イベントの読み出しを含む)が実行されるタイミングを例示している。
パート部22は、奏法シーケンス部21から送付された奏法イベント(タイムスタンプ付き)を記憶し、これに基づき所定の「リハーサル」処理を行うと共に、次段の奏法合成部23における処理を管理する。これらの処理も各パート毎にそれぞれ行われる。図6において、ブロック321a,321b,321c…が、パート部22において「リハーサル」処理等が実行されるタイミングを例示している。
・リハーサル処理:
「リハーサル」処理とは、奏法合成後の時間的に相前後する各波形構成要素(Timbre, Amplitude, Pitch等)同士の始点や終点についての時刻やレベル値が滑らかにつながるように、実際の奏法合成を行なう前に、奏法イベントに応じたベクトルIDや代表点値例やその他パラメータなどをリハーサルで読み出し、これに基づき模擬的な奏法合成を行い、各奏法モジュールの始点や終点についての時刻やレベル値を制御するパラメータを適切に設定する処理である。この「リハーサル」処理に基づいて設定されたパラメータを用いて、奏法合成部23で奏法合成処理を行うことにより、時間的に相前後する奏法波形が各構成要素(Timbre, Amplitude, Pitch等)毎に滑らかに接続されることになる。すなわち、合成済みの奏法波形若しくは波形構成要素を調整・制御してそれらの奏法波形若しくは波形構成要素同士が滑らかに接続されるようにするのではなく、個々の奏法波形若しくは波形構成要素を合成する直前における「リハーサル」処理によって模擬的に奏法波形若しくは波形構成要素を合成する処理を行ない、始点や終点等の時刻やレベルなどについての最適なパラメータを設定し、これらの最適なパラメータを用いて奏法波形若しくは波形構成要素の合成を行なうことにより結果的に奏法波形若しくは波形構成要素同士が滑らかに接続されるようにするのである。
〈アタック(エントランス)部モジュール〉
図9(a)は、現在イベントがアタック(エントランス)部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップS1aでは、今回処理すべき奏法イベント(現在イベント)(図8の例ではEV1,EV2)を奏法合成部23に渡し、その奏法ID(特定のアタック奏法モジュールを指示する)に応じたベクトルID及び代表点値列(Shape)及びその他パラメータを、奏法合成部23の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部22が受け取り、これに基づき次のようにレベルや時刻等のパラメータ(制御データ)を決定若しくは調整する処理を行なう。
ステップS3aでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ(レベルと時刻)を決定する処理を行なう。前ステップS1a,S2aでは、ここでの処理のために必要なデータを奏法テーブルから読み出せばよい。ここでのリハーサル処理の内容例を説明するために、図10(a),(b),(c),(d)を参照する。
図10(c)は、ボディ部の奏法モジュールにおける調和成分用の各ベクトル例を示し、「HA」は調和成分振幅ベクトルの代表点値列(一例として0,1の2点からなる)、「HP」は調和成分ピッチベクトルの代表点値列(一例として0,1の2点からなる)、「HT」は調和成分波形ベクトルの一例(ただし波形は黒塗した矩形で略示している)を示す。なお、ボディ部の調和成分波形ベクトルHTは、図で黒塗したN個の矩形部分(0、1、……N−1)にそれぞれ対応するN個のループ波形からなり、これらのループ波形を順次にループ読み出しながら順次切り替えて接続していくことで所定の時間長のボディ部波形が生成される。ボディ部の時間長を少しだけ短縮又は伸張したい場合は、各ループ部のループ時間を短縮/伸張すればよい。また、ボディ部の時間長をそれ以上に短縮したい場合は、該N個のループ波形のうちの任意の1乃至複数を適宜間引いて読み出せばよい。一方、ボディ部の時間長をそれ以上に伸張したい場合は、該N個のループ波形のうちの任意の複数を所定の順序であるいはランダムに該N個のループ波形の間に挿入すればよい。
同様に、調和成分ピッチベクトルについても、次の奏法イベントに係るボディ部の奏法モジュールの調和成分ピッチベクトルHPの始点(図10(c)のHPの0位置)のピッチ値データを奏法テーブルから取得する。そして、奏法テーブルから取得したピッチ値データにピッチ制御値を加味して、ボディ部の奏法モジュールの調和成分ピッチベクトルHPの始点の実際のピッチを算出し、これを、現在の奏法イベントに係るアタック部奏法モジュールの調和成分ピッチベクトルの終点(図10(a)のHPの2位置)のレベル(ピッチ値)として設定する。
図9(a)のステップS2aにおいては、調和外成分振幅ベクトルについても、次の奏法イベントに係るボディ部の奏法モジュールの調和外成分振幅ベクトルNHAの始点(図10(d)のNHAの0位置)のレベルデータを奏法テーブルから取得する。そして、次のステップS3aにおいて、奏法テーブルから取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和外成分振幅ベクトルNHAの始点の実際のレベルを算出し、これを、現在の奏法イベントに係るアタック部奏法モジュールの調和外成分振幅ベクトルの終点(図10(b)のNHAの1位置)のレベル(振幅値)として設定する。
図9(b)は、現在イベントがボディ部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップS1bでは、今回処理すべき奏法イベント(現在イベント)(例えば図8のEV3又はEV6)を奏法合成部23に渡し、その奏法ID(特定のボディ部の奏法モジュールを指示する)に応じたベクトルID及び代表点値列(Shape)及びその他パラメータを、奏法合成部23の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部22が受け取り、これに基づき次のようにレベルや時刻等のパラメータ(制御データ)を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。
ステップS3b、S5bでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ(時刻とレベル)を決定若しくは調整する処理を行なう。ステップS4bにおいては、今回の奏法イベントに係るボディ部奏法モジュールの合成を開始する指示を、奏法合成部23に対して与える。
ボディ部の奏法モジュールの調和成分及び調和外成分の各開始時刻は、その前の奏法イベント(例えば前述したアタック部奏法モジュールのイベント)でのリハーサル処理によって既に決定されているので、ここでは求める必要がない。
ボディ部の奏法モジュールの調和成分及び調和外成分の各終了時刻を決定するために、次の奏法モジュール(リリース部又はジョイント部)をステップS2bでリハーサルして、その調和成分及び調和外成分の各開始時刻を求める。そして、ステップS3bでは、上記求めた次の奏法モジュール(リリース部又はジョイント部)の調和成分及び調和外成分の各開始時刻を、今回のボディ部の奏法モジュールの調和成分及び調和外成分の各終了時刻として決定する。
参考のために、次の奏法モジュールとなりうるジョイント部奏法モジュールにおける調和成分用の各ベクトル例を図11(a)に示し、同ジョイント部奏法モジュールにおける調和外成分用の各ベクトル例を図11(b)に示す。HA,HP,HT,NHA,NHT等の符号の意味は、図10におけるものと同様である。図11(a)において、調和成分の開始時刻を定義するパラメータ“preTimeH”は、ジョイント部でのノートオンイベント発生時点(図8の例ではEV5)と、ジョイント部の調和成分の波形発生開始時点とのずれを規定するものである。このリハーサルによって、更にその次のイベントであるノートオンイベント(図8の例ではEV5)のタイムスタンプを取得して、実際の発音開始時刻(図11(a)における“noteOnTime”)を把握し、これと“preTimeH”との差“noteOnTime−preTimeH”を調和成分のジョイント部奏法モジュール開始時刻として設定する。こうして、リハーサルで設定された調和成分のジョイント部奏法モジュール開始時刻を、ボディ部の奏法モジュールの調和成分の終了時刻として決定する。図11(b)における調和外成分の開始時刻を定義するパラメータ“preTimeNH”についても同様にリハーサル処理することで、調和外成分のジョイント部奏法モジュール開始時刻を設定し、ボディ部の奏法モジュールの調和外成分の終了時刻として決定する。
よって、ここでは、ボディ部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルを、次の奏法イベント(未来イベント)に係る奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルとして決定する(ステップS5b)。
調和外成分振幅ベクトルについても同様に、現在の奏法イベントに係るボディ部の奏法モジュールの調和外成分振幅ベクトルNHAの終点(図10(d)のHAの1位置)のレベルデータを奏法テーブルから取得し、取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和外成分振幅ベクトNルHAの終点の実際のレベルを算出し、これを、次の奏法イベントに係る奏法モジュールの調和外成分振幅ベクトルの始点(図11(b)のNHAの0位置)のレベル(振幅値)として設定する。
図9(c)は、現在イベントがジョイント部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップS1cでは、今回処理すべき奏法イベント(現在イベント)(例えば図8のEV4,EV5)を奏法合成部23に渡し、その奏法ID(特定のジョイント部の奏法モジュールを指示する)に応じたベクトルID及び代表点値列(Shape)及びその他パラメータを、奏法合成部23の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部22が受け取り、これに基づき次のようにレベルや時刻等のパラメータ(制御データ)を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。
ステップS3c、S5cでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ(時刻とレベル)を決定若しくは調整する処理を行なう。ステップS4cにおいては、今回の奏法イベントに係るジョイント部奏法モジュールの合成を開始する指示を、奏法合成部23に対して与える。
ジョイント部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルのデータは、前の奏法イベントのリハーサル処理によって(図9(b)のステップS5b)既に決定されているので、それを用いる。よって、ステップS3cでは、主に、ジョイント部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルとして、後続するボディ部奏法モジュール(例えば図8のEV6)の各始点のレベルに見合った値に決定するよう、ステップS2cで取得した次のボディ部奏法モジュールのリハーサル結果を利用して処理を行なう。これは、具体的には、図9(a)のステップS3aにおける処理と同様の手法で行なえばよいため、その詳細説明は省略する。
また、ジョイント部の奏法モジュールの終了時刻については、図11(a)に示すように、調和成分の終了時刻を定義するパラメータ“postTimeH”がジョイント部でのノートオンイベント発生時点(図8の例ではEV5)と、ジョイント部の調和成分の波形発生終了時点とのずれを規定しているので、その次のイベントであるノートオンイベント(図8の例ではEV5)時刻“noteOnTime”にこれを加算して、“noteOnTime+postTimeH”を調和成分のジョイント部奏法モジュール終了時刻として決定する。ステップS5cでは、こうして、リハーサルで設定された調和成分のジョイント部奏法モジュール終了時刻を、次のボディ部の奏法モジュールの調和成分の開始時刻として設定する。図11(b)における調和外成分の終了時刻を定義するパラメータ“postTimeNH”についても同様にリハーサル処理することで、調和外成分のジョイント部奏法モジュール終了時刻を決定し、次のボディ部の奏法モジュールの調和外成分の開始時刻として設定する。
図9(d)は、現在イベントがリリース(フィニッシュ)部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップS1dでは、今回処理すべき奏法イベント(現在イベント)(例えば図8のEV7,EV8)を奏法合成部23に渡し、その奏法ID(特定のジョイント部の奏法モジュールを指示する)に応じたベクトルID及び代表点値列(Shape)及びその他パラメータを、奏法合成部23の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部22が受け取り、これに基づき次のようにレベルや時刻等のパラメータ(制御データ)を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。通常、前の奏法イベントのときに、既に今回処理すべき奏法イベントについて必要なデータはリハーサル済みであるから、このステップS1dは実際には省略可能である。
また、リリースの奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルは、先行するボディ部奏法モジュール(例えば図8のEV6)の各終点のレベルに合わせる。これも、その前の奏法イベントであるボディ部奏法モジュールのリハーサル処理(図9(b)のステップS5b)において既に求められているので、それを用いることができる。
なお、図9(a)(b)(c)における各ステップS5a,S5b,S5cの処理は、パート部22によるリハーサル処理で行なわずに、次の奏法合成部23で実際に奏法合成を行なうときに行なうようにしてもよい。
図5において、奏法合成部23は、パート部22から送付された奏法イベント(タイムスタンプ付き)とリハーサル結果データを受けて所定の奏法合成処理を行なう。この奏法合成処理では、所定の奏法アルゴリズムに従い、奏法イベントの奏法ID及びパラメータあるいは制御データを解釈して処理し、これに基づき奏法テーブルから各ベクトルIDと代表点値列及び各種パラメータを読み出し、これらを修飾又は加工もしは変更する。そして、奏法イベントに対応するこれらの各ベクトルIDと代表点値列及び各種パラメータ等と前記リハーサルによって決定された時刻及びレベル等のパラメータ(制御データ)などをパケット化して時間順に従うストリームデータとして出力する。図6において、ブロック331a,331b,331c…が、奏法合成部23において奏法合成処理等が実行されるタイミングを例示している。また、図6のブロック330は上記パケット化されたストリームデータの出力処理部分を例示し、その中のブロック330a,330b,330c…が各ストリームデータの出力タイミングを例示している。
図5において、波形合成部24は、各ベクトルIDと代表点値列等の上記パケット化されたストリームデータを奏法合成部23から受け取り、現在時刻より前記プリフェッチ時間αだけ前の時刻に、ベクトルIDに応じて波形データベース内のコードブックから波形テンプレートデータ等を読み出し、また、現在時刻より前記出力潜伏(latency)時間δだけ前の時刻に、代表点値列とパラメータ等に基づき振幅ベクトル及びピッチベクトルのエンベロープ波形形状を生成し、これらに基づき奏法波形の調和成分波形と調和外成分波形をそれぞれ形成する。そして、奏法波形の調和成分波形と調和外成分波形をそれぞれの時刻データに応じて所定の時刻位置に貼り付けて、最終的にこれらを加算合成し、奏法波形の合成を行なう。ここで確立される再生時刻(つまり現在時刻)データがイージー・プレーヤー部20に与えられ、再生位置(時刻)のリアルタイム表示に用いられる。図6において、ブロック341,342,343,…は、波形合成部24において波形データベース内のコードブックに対するプリフェッチのタイミングを例示している。なお、波形合成部24において前記波形テンプレートデータ及び振幅ベクトル及びピッチベクトルのエンベロープ波形形状等に基づき奏法波形データを生成する手法としては、例えば「ソフトウェア音源」として知られた手法を適宜採用することができる。波形合成部24で合成された奏法波形データは、出力バッファ(図1の波形出力部108に含まれる)に与えられる。該出力バッファに記憶された奏法波形データが所定の再生サンプリング周期で読み出されて、サウンドシステム108A(図1)を経由して空間的に発音される。
102 ROM
103 RAM
104 パネルスイッチ
105 パネル表示器
108 波形出力部108
109 ハードディスク
20 イージー・プレーヤー部20
21 奏法シーケンス部
22 パート部
23 奏法合成部
24 波形合成部
Claims (7)
- 奏法波形を記述する奏法モジュールにおいて、所定の演奏イベントにタイミング合わせすべき位置を示す位置情報を該奏法波形の時間軸の途中に含んでおり、生成すべき奏法波形についての奏法モジュールを演奏イベントと共に指定するステップと、
指定された奏法モジュールにおける前記位置情報と指定された演奏イベントに応じて、該奏法モジュールにおける所定の楽音特性の制御タイミングを決定するとともに、前後の奏法モジュールが滑らかにつながるように先行する奏法モジュールと後続する奏法モジュールの少なくとも一方の楽音特性を修正するステップと、
前記決定された制御タイミングに応じて前記所定の楽音特性を制御し、該制御された楽音特性及び前記修正された楽音特性に従い前記奏法モジュールに対応する楽音を合成するステップと
を具備する波形生成方法。 - 前記奏法モジュールの種類には、アタック部奏法モジュール、ボディ部奏法モジュール、ジョイント部奏法モジュール、リリース部奏法モジュールとがあり、先行する奏法モジュールの種類と後続する奏法モジュールの種類とに応じて楽音特性の修正が行われることを特徴とする請求項1に記載の波形生成方法。
- 前記所定の演奏イベントは、発音開始タイミングを指示するイベントである請求項1又は2に記載の波形生成方法。
- 前記所定の演奏イベントは、消音開始タイミングを指示するイベントである請求項1又は2に記載の波形生成方法。
- 請求項1乃至4のいずれか記載の波形生成方法をコンピュータに実行させるためのプログラム。
- 請求項5に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
- 奏法波形を記述する奏法モジュールにおいて、所定の演奏イベントにタイミング合わせすべき位置を示す位置情報を該奏法波形の時間軸の途中に含んでおり、生成すべき奏法波形についての奏法モジュールを演奏イベントと共に指定する手段と、
指定された奏法モジュールにおける前記位置情報と指定された演奏イベントに応じて、該奏法モジュールにおける所定の楽音特性の制御タイミングを決定するとともに、前後の奏法モジュールが滑らかにつながるように先行する奏法モジュールと後続する奏法モジュールの少なくとも一方の楽音特性を修正する手段と、
前記決定された制御タイミングに応じて前記所定の楽音特性を制御し、該制御された楽音特性及び前記修正された楽音特性に従い前記奏法モジュールに対応する楽音を合成する手段と
を具備する波形生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004174691A JP3876896B2 (ja) | 2004-06-11 | 2004-06-11 | 波形生成方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004174691A JP3876896B2 (ja) | 2004-06-11 | 2004-06-11 | 波形生成方法及び装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001091187A Division JP3613191B2 (ja) | 2001-03-27 | 2001-03-27 | 波形生成方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004287463A JP2004287463A (ja) | 2004-10-14 |
JP3876896B2 true JP3876896B2 (ja) | 2007-02-07 |
Family
ID=33297139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004174691A Expired - Fee Related JP3876896B2 (ja) | 2004-06-11 | 2004-06-11 | 波形生成方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3876896B2 (ja) |
-
2004
- 2004-06-11 JP JP2004174691A patent/JP3876896B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004287463A (ja) | 2004-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7259315B2 (en) | Waveform production method and apparatus | |
JP3975772B2 (ja) | 波形生成装置及び方法 | |
US6687674B2 (en) | Waveform forming device and method | |
JP4702160B2 (ja) | 楽音合成装置及びプログラム | |
JP2001100760A (ja) | 波形生成方法及び装置 | |
JP3601371B2 (ja) | 波形生成方法及び装置 | |
JP3654079B2 (ja) | 波形生成方法及び装置 | |
JP3654083B2 (ja) | 波形生成方法及び装置 | |
US7816599B2 (en) | Tone synthesis apparatus and method | |
JP4561636B2 (ja) | 楽音合成装置及びプログラム | |
JP3915807B2 (ja) | 奏法自動判定装置及びプログラム | |
JP3654080B2 (ja) | 波形生成方法及び装置 | |
JP3829780B2 (ja) | 奏法決定装置及びプログラム | |
JP3654082B2 (ja) | 波形生成方法及び装置 | |
JP3654084B2 (ja) | 波形生成方法及び装置 | |
JP4407473B2 (ja) | 奏法決定装置及びプログラム | |
JP3552675B2 (ja) | 波形生成方法及び装置 | |
JP3613191B2 (ja) | 波形生成方法及び装置 | |
JP3876896B2 (ja) | 波形生成方法及び装置 | |
JP3552676B2 (ja) | 波形生成方法及び装置 | |
JP3933162B2 (ja) | 波形生成方法及び装置 | |
JP4007374B2 (ja) | 波形生成方法及び装置 | |
JP3674527B2 (ja) | 波形生成方法及び装置 | |
JP3933161B2 (ja) | 波形生成方法及び装置 | |
JP3829707B2 (ja) | 波形生成装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040805 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060523 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060530 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060731 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061023 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101110 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101110 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111110 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111110 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121110 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121110 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131110 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |