(57)【特許請求の範囲】
【請求項１】
調和成分の要素と調和外成分の要素とを含む奏法モジュールを順次指定するステップと、
前記指定に従い、先行する奏法モジュールの少なくとも終端特性に関する終端情報と後続する奏法モジュールの少なくとも先端特性に関する先端情報とを、調和成分及び調和外成分の各要素毎に、取得するステップと、
取得した終端情報と先端情報に基づいて、前記先行する奏法モジュールと後続する奏法モジュールの少なくとも一方の特性を、前記調和成分及び調和外成分の各要素毎に、修正するステップであって、当該修正の方法は、前記先行する奏法モジュールの種類と前記後続する奏法モジュールの種類とに応じて定められているものと、
前記指定された奏法モジュールに対応する波形を前記修正に従う特性で合成するステップと
を具える波形生成方法。
【請求項２】
前記終端情報と先端情報は、時刻情報とレベル情報の少なくとも一方を含む請求項１に記載の波形生成方法。
【請求項３】
請求項１又は２に記載の波形生成方法をコンピュータに実行させるためのプログラム。
【請求項４】
請求項３に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項５】
調和成分の要素と調和外成分の要素とを含む奏法モジュールを順次指定する手段と、
前記指定に従い、先行する奏法モジュールの少なくとも終端特性に関する終端情報と後続する奏法モジュールの少なくとも先端特性に関する先端情報とを、調和成分及び調和外成分の各要素毎に、取得する手段と、
取得した終端情報と先端情報に基づいて、前記先行する奏法モジュールと後続する奏法モジュールの少なくとも一方の特性を、前記調和成分及び調和外成分の各要素毎に、修正する手段であって、当該修正の方法は、前記先行する奏法モジュールの種類と前記後続する奏法モジュールの種類とに応じて定められているものと、
前記指定された奏法モジュールに対応する波形を前記修正に従う特性で合成する手段と
を具える波形生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、波形メモリ等からの波形データの読み出し等に基づき、楽音あるいは音声若しくはその他任意の音の波形を生成する方法及び装置に関し、特に、自然楽器固有の各種奏法若しくはアーティキュレーションによる音色変化を忠実に表現した波形を生成することができるものに関する。この発明は、電子楽器は勿論のこと、自動演奏装置、コンピュータ、電子ゲーム装置その他のマルチメディア機器等、楽音あるいは音声若しくはその他任意の音を発生する機能を有するあらゆる分野の機器若しくは装置または方法において広範囲に応用できるものである。なお、この明細書において、楽音波形という場合、音楽的な音の波形に限るものではなく、音声あるいはその他任意の音の波形を含んでいてもよい意味合いで用いるものとする。
【０００２】
【従来の技術】
波形メモリにおいて、ＰＣＭ（パルス符号変調）あるいはＤＰＣＭ（差分ＰＣＭ）又はＡＤＰＣＭ（適応差分ＰＣＭ）等の任意の符号化方式で符号化した波形データ（つまり波形サンプルデータ）を記憶しておき、これを所望の音楽ピッチに対応して読み出すことにより、楽音波形を形成するようにした、いわゆる「波形メモリ読み出し」技術は既に公知であり、また、様々なタイプの「波形メモリ読み出し方式」技術が知られている。従来知られた「波形メモリ読み出し方式」技術のほとんどは、発音開始から終了までの１つの音の波形を発生するためのものである。一例として、発音開始から終了までの１音の全波形の波形データを記憶する方式がある。また、別の例として、変化の複雑なアタック部などについてはその全波形の波形データを記憶し、変化のあまりないサステイン部などについては所定のループ波形を記憶する方式がある。なお、本明細書において、「ループ波形」とは繰り返し読出し（ループ読出し）される波形という意味で用いるものとする。
【０００３】
ところで、従来の発音開始から終了までの１音の全波形の波形データを記憶する方式やアタック部などの波形の一部において全波形の波形データを記憶する方式の「波形メモリ読み出し方式」技術においては、各種奏法（若しくはアーティキュレーション）に対応する様々な波形データを多数記憶しておかなければならず、この多数の波形データを記憶するために大きな記憶容量が必要であった。
また、上述の全波形の波形データを記憶する方式では、自然楽器固有の各種奏法（若しくはアーティキュレーション）による音色変化を忠実に表現することが可能であるが、記憶した波形データの通りしか楽音を再生することができないので、制御性に乏しく、また、編集性にも乏しかった。例えば、所望の奏法（若しくはアーティキュレーション）に対応する波形データを演奏データに応じた時間軸制御等の特性制御を行うことが非常に困難であった。
【０００４】
【発明が解決しようとする課題】
これらの点に鑑みて、自然楽器固有の各種奏法（すなわちアーティキュレーション）のリアルな再現とその制御を容易にした技術が、ＳＡＥＭ（Ｓｏｕｎｄ  Ａｒｔｉｃｕｌａｔｉｏｎ  Ｅｌｅｍｅｎｔ  Ｍｏｄｅｌｉｎｇ）技術と称して、特開２０００−１２２６６５号公報その他に示されている。そのようなＳＡＥＭ技術においては、複数の奏法波形モジュールを時系列的に組み合わせて接続することで一連の音波形を作成する場合に、不自然さを伴うことなく奏法波形モジュール同士の接続を行うことが望まれる。
本発明は上述の点に鑑みてなされたもので、様々な奏法（若しくはアーティキュレーション）に対応する高品質な波形データを容易かつ簡便にまた制御性豊かに生成することのできる波形生成方法及び装置を提供しようとするものであり、更には、その場合に、不自然さを伴うことなく奏法モジュール同士の接続を行うことができるようにした波形生成方法及び装置を提供しようとするものである。
【０００５】
【課題を解決するための手段】
本発明に係る波形生成方法は、調和成分の要素と調和外成分の要素とを含む奏法モジュールを順次指定するステップと、前記指定に従い、先行する奏法モジュールの少なくとも終端特性に関する終端情報と後続する奏法モジュールの少なくとも先端特性に関する先端情報とを、調和成分及び調和外成分の各要素毎に、取得するステップと、取得した終端情報と先端情報に基づいて、前記先行する奏法モジュールと後続する奏法モジュールの少なくとも一方の特性を、前記調和成分及び調和外成分の各要素毎に、修正するステップであって、当該修正の方法は、前記先行する奏法モジュールの種類と前記後続する奏法モジュールの種類とに応じて定められているものと、前記指定された奏法モジュールに対応する波形を前記修正に従う特性で合成するステップとを具える。
【０００６】
本発明によれば、先行する奏法モジュールに対応する波形を実際に合成する前に、該先行する奏法モジュールの少なくとも終端特性に関する終端情報とそれに後続する奏法モジュールの少なくとも先端特性に関する先端情報とを取得する（リハーサルによる取得）。こうしてリハーサルとして取得した先行する奏法モジュールの少なくとも終端情報と後続する奏法モジュールの少なくとも先端情報の関係から両者が滑らかに接続されるように、少なくとも一方の特性を、該奏法モジュールに含まれる調和成分及び調和外成分の各要素毎に修正し、修正した特性をパラメータ若しくは制御データとして保持する。このように修正された特性に従い、奏法モジュールに対応する波形を実際に合成する。従って、相前後する奏法モジュールに基づく奏法波形同士が円滑に、かつ、調和成分及び調和外成分の各要素毎に独立に、接続されるようにすることができる。
【０００７】
本発明は、方法の発明として構成し実施することができるのみならず、装置の発明として構成し実施することができる。また、本発明は、コンピュータまたはＤＳＰ等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【０００８】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
〔ハードウエア構成例〕
図１は、この発明の一実施例において利用可能な装置のハードウエア構成例を示すブロック図である。ここに示されたハードウエア構成例はコンピュータを用いて構成されており、そこにおいて、波形生成処理は、コンピュータがこの発明に係る波形生成処理を実現する所定のプログラム（ソフトウエア）を実行することにより実施される。勿論、この波形生成処理はコンピュータソフトウエアの形態に限らず、ＤＳＰ（ディジタル・シグナル・プロセッサ）によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。また、この波形生成装置は、電子楽器あるいはカラオケ装置又は電子ゲーム装置又はその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっていてよい。
【０００９】
図１に示されたハードウエア構成例においては、コンピュータのメイン制御部としてのＣＰＵ１０１に対して、バスラインＢＬ（データあるいはアドレスバス等）を介してリードオンリメモリ（ＲＯＭ）１０２、ランダムアクセスメモリ（ＲＡＭ）１０３、パネルスイッチ１０４、パネル表示器１０５、ドライブ１０６、波形取込部１０７、波形出力部１０８、ハードディスク１０９、通信インタフェース１１１がそれぞれ接続されている。ＣＰＵ１０１は、奏法波形生成処理や通常の楽音合成（ソフトウエア音源）等の各種の処理を、所定のプログラムに基づいて実行する。これらのプログラムは、通信インタフェース１１１を介したネットワークあるいはドライブ１０６に装着されたＣＤやＭＯ等の外部記憶メディア１０６Ａ等から供給されてハードディスク１０９に記憶される。そして、実行時にハードディスク１０９からＲＡＭ１０３にロードされる。あるいは、ＲＯＭ１０２にプログラムが記録されていてもよい。ＲＯＭ１０２は、ＣＰＵ１０１により実行あるいは参照される各種プログラムや各種データ等を格納するものである。ＲＯＭ１０３は、演奏に関する各種情報やＣＰＵ１０１がプログラムを実行する際に発生する各種データを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリとして使用される。ＲＡＭ１０３の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。パネルスイッチ１０４は、各種の演奏条件や波形生成条件等の設定情報を入力したり、波形データ等のエディットや各種情報の入力等を行うための各種の操作子を含んで構成される。例えば、数値データ入力用のテンキーや文字データ入力用のキーボード、あるいはパネルスイッチ等である。この他にも音高、音色、効果等を選択・設定・制御するための各種操作子を含んでいてよい。パネル表示器１０５は、パネルスイッチ１０４により入力された各種情報やサンプリングされた波形データ等を表示する、例えば液晶表示パネル（ＬＣＤ）やＣＲＴ等のディスプレイである。
【００１０】
波形取込部１０７はＡ／Ｄ変換器を内蔵し、外部波形入力（例えば、マイクロフォンなどからの入力）されたアナログ楽音信号をデジタルデータに変換（サンプリング）してＲＡＭ１０３あるいはハードディスク１０９に該デジタル波形データとして取り込むものである。取り込んだ波形データを基にして奏法波形データベースの作成を行うことができるが、その詳細説明は省略する。また、ＣＰＵ１０１による波形生成処理によって生成された波形データはバスラインＢＬを介して波形出力部１０８に与えられ、適宜バッファ記憶される。波形出力部１０８ではバッファ記憶された波形データを所定の出力サンプリング周波数にしたがって出力し、これをＤ／Ａ変換してサウンドシステム１０８Ａに送出する。こうして、波形出力部１０８から出力された楽音信号は、サウンドシステム１０８Ａを介して発音される。ハードディスク１０９は、奏法に応じた波形を合成するためのデータ（後述する奏法テーブル、コードブック等のデータ）や通常の波形データ、各種音色パラメータ等からなる音色データなどのような演奏に関する複数種類のデータを記憶したり、前記ＣＰＵ１０１が実行する各種プログラム等の制御に関するデータを記憶するデータベースとして機能する。
【００１１】
ドライブ１０６は、奏法に応じた波形を合成するためのデータ（後述する奏法テーブル、コードブック等の各種データ）や通常の波形データ、多種多様な音色パラメータ等からなる音色データなどのような演奏に関する複数種類のデータを記憶したり、前記ＣＰＵ１０１が実行する各種プログラム等の制御に関するデータを記憶したりするための着脱可能なディスク（外部記憶メディア１０６Ａ）をドライブするものである。なお、前記ドライブ１０６によりドライブされる外部記憶メディア１０６Ａはフロッピーディスク（ＦＤ）の他に、コンパクトディスク（ＣＤ−ＲＯＭ・ＣＤ−ＲＡＭ）、光磁気ディスク（ＭＯ）、あるいはＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略）等の着脱自在な様々な形態の記憶メディアであってよい。制御プログラムを記憶した外部記憶メディア１０６Ａをドライブ１０６にセットし、その内容（制御プログラム）をハードディスク１０９に落とさずに、ＲＡＭ１０３に直接ロードしてもよい。なお、外部記憶メディア１０６Ａを用いて、あるいはネットワークを介して制御プログラムを提供するやり方は、制御プログラムの追加やバージョンアップ等を容易に行うことができるので好都合である。
【００１２】
通信インタフェース１１１は、例えばＬＡＮやインターネット、電話回線等の通信ネットワーク（図示せず）に接続されており、該通信ネットワークを介して、サーバコンピュータ等（図示せず）と接続され、当該サーバコンピュータ等から制御プログラムや各種データあるいは演奏情報などを波形生成装置側に取り込むためのものである。すなわち、ＲＯＭ１０２やハードディスク１０９に制御プログラムや各種データが記憶されていない場合に、サーバコンピュータから制御プログラムや各種データをダウンロードするために用いられる。クライアントとなる波形生成装置は、通信インターフェース１１１を介してサーバコンピュータへと制御プログラムや各種データのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求された制御プログラムやデータなどを通信インタフェース１１１を介してハードディスク１０９に蓄積することにより、ダウンロードが完了する。更に、ＭＩＤＩインタフェースを含み、ＭＩＤＩの演奏情報を受け取るようにしてもよいのは勿論である。また、音楽演奏用キーボードや演奏操作機器をバスラインＢＬに接続し、リアルタイム演奏によって演奏情報を供給するようにしてもよいのは言うまでもない。勿論、所望の音楽曲の演奏情報を記憶した外部記憶メディア１０６Ａを使用して、演奏情報を供給するようにしてもよい。
【００１３】
〔奏法モジュールの概略説明〕
上述のハードディスク１０９あるいはその他適宜の記憶媒体を用いて構成される奏法波形データベースにおいては、種々の奏法（すなわちアーティキュレーション）の要素に対応する波形を再生するための多数のモジュールデータ（これを「奏法モジュール」という）とそれに関連するデータ群を記憶している。１つの「奏法モジュール」とは、奏法波形合成システムにおいて１つのかたまりとして処理できる奏法波形の単位である。別の言い方をすると、「奏法モジュール」とは、１つのイベントとして処理できる奏法波形の単位である。例えば、種々有る奏法モジュールの中には、演奏音の奏法的特徴に応じて、アタックやボディあるいはリリース等の音の部分的区間に対応して定義されているものもあれば、また、スラーのような音と音のつなぎの区間（ジョイント部）に対応して定義されているものもあり、ビブラートのような音の特殊演奏部分に対応して定義されているものもある。また、フレーズのように複数音符に対応して定義されているものがあってもよい。
【００１４】
奏法モジュールは、奏法の特徴若しくは演奏の時間的部位又は区間等に基づき、大きくいくつかの種類に分類することができる。その例を示すと、次の５種類を挙げることができる。
１）「ノーマル・エントランス」（略称ＮＥ）：  （無音状態からの）音の立ち上がり部分（つまり「アタック」部分）を受け持つ奏法モジュール。
２）「ノーマル・フィニッシュ」（略称ＮＦ）：  （無音状態への）音の立ち下がり部分（つまり「リリース」部分）を受け持つ奏法モジュール。
３）「ノーマル・ジョイント」（略称ＮＪ）：  ２つの音を（無音状態を経由せずに）接続する部分（つまり「ジョイント」部分）を受け持つ奏法モジュール。
４）「ノーマル・ショート・ボディ」（略称ＮＳＢ）：  ビブラートのかからない、音の立ち上がり以降から立ち下がり以前までの部分（つまり「ボディ」部分）の短い部分を受け持つ奏法モジュール。
５）「ビブラート・ロング・ボディ」（略称ＶＬＢ）：  ビブラートのかかった、音の立ち上がり以降から立ち下がり以前までの部分（つまり「ボディ」部分）を受け持つ奏法モジュール。
上記５種類の分類法は、明細書での説明のための一例にすぎず、他の分類法を採用してもよいし、更に多くの種類が存在してよい。また、奏法モジュールは、楽器種類等のオリジナル音源別にも分類されるのは勿論である。
【００１５】
この実施例において、１つの奏法モジュールに対応する１つの奏法波形のデータは、そのままデータベースに記憶されているのではなく、複数の波形構成要素の集合からなるものとしてデータベースに記憶されている。この波形構成要素を、以下、「ベクトル」という。１つの奏法モジュールに対応するベクトルの種類には一例として下記のようなものがある。なお、調和成分及び調和外成分とは、対象たるオリジナル奏法波形をピッチ調和成分からなる波形ととそれ以外の残りの波形成分とに分離することで定義されるものである。
１）調和成分の波形（Ｔｉｍｂｒｅ）ベクトル：  調和成分の波形構成要素のうち、ピッチと振幅をノーマライズした波形形状のみの特徴を抽出したもの。
２）調和成分の振幅（Ａｍｐｌｉｔｕｄｅ）ベクトル：  調和成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
３）調和成分のピッチ（Ｐｉｔｃｈ）ベクトル：  調和成分の波形構成要素のうち、ピッチ特性を抽出したもの（例えば或る基準ピッチを基準にした時間的ピッチ変動特性を示すもの）。
４）調和外成分の波形（Ｔｉｍｂｒｅ）ベクトル：  調和外成分の波形構成要素のうち、振幅をノーマライズした波形形状（ノイズ的波形）のみの特徴を抽出したもの。
５）調和外成分の振幅（Ａｍｐｌｉｔｕｄｅ）ベクトル：  調和外成分の波形構成要素のうち、振幅エンベロープ特性を抽出したもの。
上記のほかに、更に別の種類のベクトル（例えば波形の時間軸の進行を示す時間ベクトル）が含まれていてもよいが、便宜上、本実施例ではその説明を省略する。
【００１６】
なお、奏法波形の合成に際しては、これらのベクトルデータに対して制御データに応じた加工処理を適宜施して時間軸上に配置することで、奏法波形の各構成要素に対応する波形若しくはエンベロープを演奏音の再生時間軸に沿ってそれぞれ構築し、このようにして時間軸上に配置された各ベクトルデータに基づいて所定の波形合成処理を行うことで、奏法波形を生成する。例えば、調和波形ベクトルに調和ピッチベクトルに応じたピッチ及びその時間変化特性を付与すると共に調和振幅ベクトルに応じた振幅及びその時間変化特性を付与することで調和成分の波形を合成し、調和外波形ベクトルに調和外振幅ベクトルに応じた振幅及びその時間変化特性を付与することで調和外成分の波形を合成し、調和成分の波形と調和外成分の波形とを加算合成することで、最終的な所定の奏法的特徴を示す演奏音波形つまり奏法波形を生成することができる。
【００１７】
奏法モジュールのデータ形式の一例について図２を参照して説明する。一例として、１つの奏法モジュールは図２に示したような階層的なデータ構造によって特定される。第１階層では、１つの奏法モジュールは「奏法ＩＤ」（奏法識別情報）と「奏法パラメータ」の組み合わせによって特定される。「奏法ＩＤ」は、当該奏法モジュールを識別する情報であり、これによって個々の奏法モジュールを特定するものであり、データベースから必要なベクトルデータを読み出すための情報の１つとして機能しうる。「奏法ＩＤ」は、例えば「楽器情報」と「モジュールパーツ名」との組み合わせで分類されることが可能である。楽器情報とは、当該奏法モジュールが適用される楽器名（バイオリン、あるいはアルト・サックス、あるいはピアノなど）を示す情報である。「モジュールパーツ名」とは、当該奏法モジュールの種類をその性格と共に示す情報（例えば「ノーマル・エントランス」や「ベンド・エントランス」など）である。このような「楽器情報」と「モジュールパーツ名」の情報を、「奏法ＩＤ」の情報の中に含んでいてもよい。あるいは、「奏法ＩＤ」に付加してこれらの「楽器情報」と「モジュールパーツ名」の情報を持たせるようにし、或る「奏法ＩＤ」がどのような性格の奏法モジュールに関わるものであるかを、これらの「楽器情報」と「モジュールパーツ名」の情報からユーザが知得できるようにしてもよい。
【００１８】
「奏法パラメータ」は、当該奏法モジュールに係る波形の時間やレベルなどを制御するためのパラメータである。「奏法パラメータ」には、各奏法モジュールの性格に応じて適宜異なる１又は複数種類のパラメータが含まれていてよい。例えば、Ｖｉｏｌｉｎ  ［ＮｏｒｍａｌＥｎｔｒａｎｃｅ］  という楽器情報とモジュールパーツ名との組み合わせで特定可能な所定モジュールの場合には、Ｅｎｔｒａｎｃｅ直後の絶対音高やＥｎｔｒａｎｃｅ直後の音量などの種類の奏法パラメータが含まれていてよいし、Ｖｉｏｌｉｎ  ［ＢｅｎｄＵｐＥｎｔｒａｎｃｅ］  という楽器情報とモジュールパーツ名との組み合わせで特定可能な別の所定モジュールの場合には、ＢｅｎｄＵｐＥｎｔｒａｎｃｅ終了時の絶対音高、ＢｅｎｄＵｐＥｎｔｒａｎｃｅ時のＢｅｎｄ深さの初期値、ＢｅｎｄＵｐＥｎｔｒａｎｃｅ開始（ノートオンタイミング）〜終了までの時間、Ｅｎｔｒａｎｃｅ直後の音量、あるいはＢｅｎｄＵｐＥｎｔｒａｎｃｅ中のデフォルトのカーブの時間的な伸縮などの種類の奏法パラメータが含まれていてよい。また、Ｖｉｏｌｉｎ  ［ＮｏｒｍａｌＳｈｏｒｔＢｏｄｙ］  という楽器情報とモジュールパーツ名との組み合わせで特定可能な更に別の所定モジュールの場合には、当該モジュールの絶対音高、ＮｏｒｍａｌＳｈｏｒｔＢｏｄｙの終了時刻−開始時刻、ＮｏｒｍａｌＳｈｏｒｔＢｏｄｙ開始時のダイナミクス、ＮｏｒｍａｌＳｈｏｒｔＢｏｄｙ終了時のダイナミクスなどの種類の奏法パラメータが含まれていてよい。この「奏法パラメータ」は、奏法ＩＤと共にメモリ等によって予め記憶されていてもよいし、あるいはユーザの入力操作によって入力するようにしたり、あるいは既存のパラメータをはユーザの操作によって適宜変更できるようになっていたりしてもよい。また、奏法波形の再生に際して、奏法ＩＤのみが与えられ、奏法パラメータが与えられなかったような場合には、当該奏法ＩＤにとって標準的な奏法パラメータを自動的に付加するようにしてもよい。また、処理の過程で、適宜のパラメータが自動的に生成されて付加されるようになっていてもよい。
【００１９】
第２階層のデータは、奏法ＩＤによって特定されるベクトルＩＤ等のデータからなる。奏法波形のデータベースにおいて「奏法テーブル」と称するテーブル若しくはメモリ部が含まれており、この奏法テーブルにおいて、各奏法ＩＤに対応して、当該奏法ＩＤに関わる奏法モジュールを構成するための複数の波形構成要素つまり上述の各ベクトルの識別情報（つまりベクトルＩＤ）が記憶されている。つまり、奏法ＩＤに応じて奏法テーブルを読み出すことにより、これらのベクトルＩＤ等のデータを取得することができる。なお、奏法テーブルに記憶されている第２階層のデータは、上記ベクトルＩＤのデータに限らず、他の必要なデータが含まれていてよい。例えば、代表点値列データ（複数サンプル列の中の補正のための代表的サンプル点を指示するデータ）が含まれていてもよい。例えば、振幅ベクトルやピッチベクトルのようなエンベロープ波形形状のデータは、いくつかの代表点値のデータを持っていれば、その形状を再現可能であるので、エンベロープ波形形状のデータをテンプレートとしてそっくり記憶しておくことなく、代表点値列データとして記憶していればよい。以下、代表点値列データを「シェープ」（Ｓｈａｐｅ）データともいう。更には、各成分要素毎のベクトルデータ（波形要素、ピッチ要素（ピッチエンベロープ）、振幅要素（振幅エンベロープ））の開始時間位置や終了時間位置などの情報等を奏法テーブルに記憶していてもよい。あるいは、これらの時間位置等のデータの全部又は一部は、前記「奏法パラメータ」に含まれていてもよい。換言すれば、「奏法パラメータ」の一部がベクトルＩＤと共に奏法テーブルに記憶されていてもよい。
【００２０】
第３階層のデータは、各ベクトルＩＤによって特定される個々のベクトルデータからなる。奏法波形のデータベースにおいて「コードブック」と称するメモリ部が含まれており、このコードブックにおいて、各ベクトルＩＤに対応して、当該ベクトルＩＤに関わる具体的なベクトルデータ（例えばＴｉｍｂｒｅ波形のテンプレートなど）が記憶されている。つまり、ベクトルＩＤに応じて「コードブック」から具体的なベクトルデータを読み出すことができる。
【００２１】
奏法テーブルに記憶される「ベクトルＩＤ」及び「ｓｈａｐｅ」（代表点値列）等のデータを含む、１つの奏法モジュールのための、具体的な各種データの一例を説明すると、次の通りである。
データ１：奏法モジュールのサンプル長。
データ２：ノートオンタイミングの位置。
データ３：調和成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素のベクトルＩＤと代表点値列。
データ４：調和成分のピッチ（Ｐｉｔｃｈ）要素のベクトルＩＤと代表点値列。
データ５：調和成分の波形（Ｔｉｍｂｒｅ）要素のベクトルＩＤ。
データ６：調和外成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素のベクトルＩＤと代表点値列。  データ７：調和外成分の波形（Ｔｉｍｂｒｅ）要素のベクトルＩＤ。
データ８：調和成分の波形（Ｔｉｍｂｒｅ）要素の塊部の開始位置。
データ９：調和成分の波形（Ｔｉｍｂｒｅ）要素の塊部の終了位置（調和成分の波形（Ｔｉｍｂｒｅ）要素のループ部の開始位置）。
データ１０：調和外成分の波形（Ｔｉｍｂｒｅ）要素の塊部の開始位置。
データ１１：調和外成分の波形（Ｔｉｍｂｒｅ）要素の塊部の終了位置（調和外成分の波形（Ｔｉｍｂｒｅ）要素のループ部の開始位置）。
データ１２：調和外成分の波形（Ｔｉｍｂｒｅ）要素のループ部の終了位置。
【００２２】
上記データ１〜１２について、図３を参照して説明する。
図３は、当該奏法モジュールに対応する実波形区間を構成する各成分及び要素の一例を模式的に示す図であり、上から当該区間における調和成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素、調和成分のピッチ（Ｐｉｔｃｈ）要素、調和成分の波形（Ｔｉｍｂｒｅ）要素、調和外成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素、調和外成分の波形（Ｔｉｍｂｒｅ）要素の一例を示す。なお、図に示している数字は上記各データの番号に対応するように付してある。
【００２３】
１は、当該奏法モジュールに該当する波形のサンプル長（波形区間長）である。例えば、当該奏法モジュールの基となったオリジナル波形データの全体の時間長さに対応している。２はノートオンタイミングの位置であり、当該奏法モジュールのどの時間位置にも可変に設定することが可能である。原則的には、このノートオンタイミングの位置から当該波形に従った演奏音の発音が開始されるが、ベンドアタックなどの奏法によってはノートオンタイミングよりも波形成分の立ち上がり開始時点が先行する場合がある。例えば、バイオリンでは実際に音が出る前から弓による弦の擦りが始められているので、そのような発音開始前の奏法波形の出始めを正確にシミュレートすることに適している。３は、コードブックに記憶された調和成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素のベクトルデータを指し示すためのベクトルＩＤ及び代表点値列を示す（図において、黒く塗りつぶした正方形で示す２点が代表点を示す）。４は、調和成分のピッチ（Ｐｉｔｃｈ）要素のベクトルデータを指し示すためのベクトルＩＤ及び代表点値列を示す。
【００２４】
６は、調和外成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素のベクトルデータを指し示すためのベクトルＩＤ及び代表点値列を示す。代表点値列データはベクトルＩＤによって指示されるベクトルデータ（複数サンプル列からなる）を変更制御するためのデータであり、代表的サンプル点のいくつかを指示（特定）するものである。特定された代表的サンプル点に関してその時間位置（横軸）とレベル軸（縦軸）を変更若しくは補正することにより、他の残りのサンプル点も連動して変更し、もってベクトルの形状を変更する。例えば、そのサンプル数より少ない数の分散的サンプルを示すデータであるが、勿論これに限らず、代表点値列データはサンプルとサンプルの間の中間位置のデータであってもよいし、あるいは所定の範囲（連続的な複数サンプル）にわたるデータであってもよい。また、サンプル値そのものでなく、差分や乗数等のデータであってもよい。この代表点を横軸及び／又は縦軸（時間軸）に移動することによって、各ベクトルデータの形状を変えることができる。つまり、エンベロープ波形の形状を変えることができる。５は、調和成分の波形（Ｔｉｍｂｒｅ）要素のベクトルデータを指し示すためのベクトルＩＤである。７は、調和外成分の波形（Ｔｉｍｂｒｅ）要素のベクトルデータを指し示すためのベクトルＩＤである。８は、調和成分の波形（Ｔｉｍｂｒｅ）要素の波形の塊部の開始位置である。９は、調和成分の波形（Ｔｉｍｂｒｅ）要素の波形の塊部の終了位置（あるいは、調和成分の波形（Ｔｉｍｂｒｅ）要素の波形のループ部の開始位置）である。すなわち、８から開始する三角形は特徴のある波形形状が連続的に記憶されているノンループ波形の部分を示し、その後に続く９から開始する長方形は繰り返し読み出しすることのできるループ波形の部分を示す。ノンループ波形は、奏法（若しくはアーティキュレーション）等の特徴を有する高品質な波形である。ループ波形は、１周期または適当な複数周期分の波形からなる比較的単調な音部分の単位波形である。
【００２５】
１０は、調和外成分の波形（Ｔｉｍｂｒｅ）要素の波形の塊部の開始位置である。１１は、調和外成分の波形（Ｔｉｍｂｒｅ）要素の波形の塊部の終了位置（あるいは、調和外成分の波形（Ｔｉｍｂｒｅ）要素の波形のループ部の開始位置）である。１２は、調和外成分の波形（Ｔｉｍｂｒｅ）要素の波形のループ部の終了位置である。上記データ３〜データ７は各成分要素毎にコードブックに記憶されているベクトルデータを指し示すための識別情報のデータであり、上記データ２及びデータ８〜データ１２はベクトルデータから元の（分離前の）波形を組み立てるための時間情報のデータである。このように、奏法モジュールのデータはベクトルデータを指し示すためのデータと時間情報のデータとから構成される。このような奏法テーブルに記憶されている奏法モジュールのデータを使用することにより、コードブックに記憶されている波形の素材（ベクトルデータ）を使って、波形を自由に組み立てることができることになる。つまり、奏法モジュールは、奏法（若しくはアーティキュレーション）に応じて生成する波形の挙動を表すデータである。なお、奏法モジュールのデータの種類や数は各奏法モジュール毎に異なっていてよい。また、上述したデータ以外にも他の情報等を具えていてよい。例えば、波形の時間軸を伸長／圧縮制御するためのデータなどを持っていてもよい。
【００２６】
また、上述の例では説明を理解しやすくするために、１つの奏法モジュールが調和成分の各要素（波形、ピッチ、振幅）及び調和外成分の各要素（波形、振幅）の全てを具備している例について説明したが、これに限らず、奏法モジュールが調和成分の各要素（波形、ピッチ、振幅）や調和外成分の各要素（波形、振幅）の１つからなっていてもよいのは勿論である。例えば、奏法モジュールが調和成分の波形（Ｔｉｍｂｒｅ）要素、調和成分のピッチ（Ｐｉｔｃｈ）要素、調和成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素、調和外成分の波形（Ｔｉｍｂｒｅ）要素、調和外成分の振幅（Ａｍｐｌｉｔｕｄｅ）要素のいずれか１つの要素からなっていてもよい。こうすると、各成分毎に奏法モジュールを自由に組み合わせて使用することができることになり好ましい。
【００２７】
〔演奏データの一例の説明〕
この実施例においては、所望の曲の自動演奏データ（曲ファイル）の中に奏法波形を再生するための演奏イベントデータが含まれており、自動演奏シーケンスの進行に伴って読み出される演奏イベントデータに基づき奏法波形が生成される。自動演奏データ（曲ファイル）は、基本的に、ＳＭＦ（スタンダードＭＩＤＩファィル）形式からなり、通常のＭＩＤＩデータとＡＥＭ（アーティキュレーション・エレメント・モデリング）演奏イベントデータ（換言すれば奏法イベントデータ）とが混在する演奏データからなる。例えば、１つの曲の自動演奏データが複数トラックの演奏データからなり、そのうちの１又は複数トラックがＡＥＭ演奏イベント（奏法イベント）を含むＡＥＭ演奏シーケンスのトラックであり、他のトラックが通常のＭＩＤＩ演奏シーケンスのトラックである。また、１トラック内でＭＩＤＩデータとＡＥＭ演奏イベント（奏法イベント）データとが混在していてもよい。その場合は、ＡＥＭ演奏イベント（奏法イベント）データは、基本的にＭＩＤＩフォーマットで記述され、ＭＩＤＩチャンネルのいずれか１又は複数がＡＥＭ演奏データのために割り当てられる。また、１トラック全体がＡＥＭ演奏データのために割り当てられている場合でも、データは基本的にはＭＩＤＩＤフォーマットで記述されていてよい。つまり、ＭＩＤＩフォーマットの中で、ＡＥＭ演奏イベント（奏法イベント）であることを示す識別子を付加しておけばよい。勿論、ＭＩＤＩ以外のデータフォーマットを使用してもよい。各トラックの演奏データは別々の演奏パートの演奏データを構成する。また、１つのトラックの演奏データ内に複数のＭＩＤＩチャンネルの演奏データが混在しうるので、１トラックの演奏データにおいても各ＭＩＤＩチャンネル毎に別々の演奏パートの演奏データを構成しうる。例えば、或る１又は複数の演奏パートの演奏音が、ＡＥＭ演奏データに基づく奏法波形合成によって、再生される。例えば、バイオリンのパートと、ピアノのパート、というように、複数の演奏パートでそれぞれＡＥＭ演奏データに基づく奏法波形合成を行うことができる。
【００２８】
図４（ａ）は、１つの曲の自動演奏データの全体的構成例を示し、ヘッダと各トラック１，２，３，……毎の演奏データ列からなる。図４（ｂ）は、ＡＥＭ演奏データを含むトラック（例えばトラック２）における演奏データ列の一例を示す。この演奏データ列の構成は、通常の演奏シーケンスデータにおいてよく知られているように、時間差データ（デュレーションデータ）とイベントデータとからなり、時間順にイベントデータを配列してなるものである。公知のように、時間差データ（デュレーションデータ）は、前のイベント時点から次のイベント時点までの時間差を示している。
１つの奏法イベントは、前記図２に示した第１階層のデータ、つまり、当該イベントに対応して再生すべき「奏法モジュール」を示す「奏法ＩＤ」と、それに関連する「奏法パラメータ」とを含む。前述のように、「奏法パラメータ」の全部又は一部がこの段階で含まれていなくてもよい。
【００２９】
図４（ｂ）の例では、「奏法イベント（１）」はアタック部（エントランス部）の「奏法モジュール」を指示する「奏法ＩＤ」を含んでおり、これと対になって、発音開始を指示する「ノートオンイベント」が配置されている。この「奏法イベント（１）」によって指示されるアタック部（エントランス部）の奏法波形の発音開始時点は、それと対で与えられる「ノートオンイベント」によって指定されるようになっている。アタック部の「奏法イベント（１）」とそれに対応する「ノートオンイベント」は一緒のイベントとして処理される。よって、アタック部（エントランス部）に対応する「奏法イベント（１）」の到来時刻は、アタック部（エントランス部）の奏法波形を生成する準備を開始すべきことを示しているだけであり、その発音開始時刻を指示するものではない。なお、後述するように、このアタック部（エントランス部）の奏法波形は、その発音が開始される以前から波形生成開始できるような仕様となっており、生成されたアタック部（エントランス部）の奏法波形の先頭からではなく、それと対を成すノートオンイベントの発生時点に対応する途中の時点からその発音を開始させることができるようになっている。これは、楽器の種類によっては演奏操作の始まり（例えばバイオリンの弓の擦り始め）では、その操作に応じた振動が人の耳に聞こえるほどの振動音としては発生されていないような状況をシミュレートすることに役立つ。また、そうでない場合でも、波形生成の自由度と制御性を高めるのに役立つ。
【００３０】
更に図４（ｂ）の例では、「奏法イベント（２）」はボディ部の「奏法モジュール」を指示する「奏法ＩＤ」を含み、「奏法イベント（３）」はジョイント部の「奏法モジュール」を指示する「奏法ＩＤ」を含み、「奏法イベント（４）」は別のボディ部の「奏法モジュール」を指示する「奏法ＩＤ」を含む。ジョイント部の「奏法モジュール」は、先行する音の発音を消音させることなく後続する音の発音へとつなげるときに（例えばタイやスラーの奏法のときに）使用される「つなぎ」用の奏法波形である。よって、このジョイント部の「奏法イベント（３）」も、前記アタック部の奏法イベント（１）と同様に、「ノートオンイベント」（これは後続音の発音開始タイミングを示す）と対になって与えられるようになっており、図示のように、「奏法イベント（３）」の次に「ノートオンイベント」が発生する。ジョイント部の「奏法イベント（３）」とそれに対応する「ノートオンイベント」も一緒のイベントとして処理される。「奏法イベント（４）」は前記ジョイント部を介して接続される後続音のボディ部の奏法モジュールを指示するものである。「奏法イベント（５）」はリリース部（フィニッシュ部）の「奏法モジュール」を指示する「奏法ＩＤ」を含んでおり、これと対になって、消音開始（リリース）を指示する「ノートオフイベント」が配置されている。リリース部の「奏法イベント（５）」とそれに対応する「ノートオフイベント」も一緒のイベントとして処理される。ノートオンイベントの場合と同様に、リリース部（フィニッシュ部）の奏法波形は、その消音処理（ノートオフイベント）が開始される以前から波形生成開始できるような仕様となっており、生成されたリリース部（フィニッシュ部）の奏法波形の先頭からではなく、それと対を成すノートオフイベントの発生時点に対応する途中の時点からその消音処理を開始させることができるようになっている。これも上記と同じ理由であり、楽器の種類によって演奏操作の終わりの状況をシミュレートすることに役立ち、また、そうでない場合でも、波形生成の自由度と制御性を高めるのに役立つ。
【００３１】
〔奏法波形生成処理の説明〕
図１に示す波形生成装置において、通常の楽音波形及び奏法波形の合成は、コンピュータが通常の音源プログラム及び本実施例に係る奏法波形生成プロセスを実現する所定のプログラム等を実行することにより実施される。この奏法波形生成プロセスを構成する大まかな処理ブロックは、図５に示すように、イージー・プレーヤー部２０、奏法シーケンス部２１、パート部２２、奏法合成部２３、波形合成部２４からなる。図６は、この奏法波形生成プロセスを構成する各処理ブロックが受け持つ処理の時間関係を大まかに示す概略タイミングチャートである。図６において並列的に示されたブロック３０，３１，３２，３３，３４は、奏法波形生成プロセスにおけるそれぞれの処理ブロック（イージー・プレーヤー部２０、奏法シーケンス部２１、パート部２２、奏法合成部２３、波形合成部２４）が自己が受け持つ動作を実行する時間帯をおおまかに示すものである。図６において各ブロック３０，３１，３２，３３，３４が並列的に図示されているのは、各ブロックの処理が並列的に行われることを意味する。
【００３２】
（１）イージー・プレーヤー部２０
イージー・プレーヤー部２０は、再生しようとする任意の曲の自動演奏データ（曲ファイル）を記憶した記憶媒体から該自動演奏データ（曲ファイル）を読み込む機能、該再生しようとする曲等に関する入力操作子を介した各種の設定操作（移調量設定、音量調整、その他）及び指示操作（再生開始指示、再生停止指示、その他）を受け付ける機能、再生中の再生位置（時間）表示を含む各種表示を制御する機能、後述する必要情報補充機能、などを実行する。
図６における時間ブロック３０がイージー・プレーヤー部２０による処理が行われる時間帯を略示している。自動演奏の再生プログラムが起動されたときから終了するまでの間、イージー・プレーヤー部２０が動作する。再生開始指示「ＰＬＡＹ」が与えられると、イージー・プレーヤー部２０では、図６のブロック３０１で示すようなタイミングで、再生しようとする曲の自動演奏データ（曲ファイル）を読み込み、その解釈を行う。勿論、「ＰＬＡＹ」指示の以前に、所望の曲ファイルが選択された時点で、再生しようとする曲の自動演奏データ（曲ファイル）の読み込みが開始されてもよい。
【００３３】
イージー・プレーヤー部２０は、前述のとおり通常のＭＩＤＩデータとＡＥＭ演奏データとが複数トラック間で又は１トラック内で混在している自動演奏データを取り扱うことができるように構成されている。更に、イージー・プレーヤー部２０では、読み込んだ自動演奏データ（曲ファイル）に含まれるＡＥＭ演奏データに関して基本的な解釈を行い、各奏法イベントデータをタイムスタンプ付きの奏法イベント列オブジェクトとして再構成する。この基本的な解釈とは、例えば、各イベント間に存在する時間差データを累積してこれに基づき各イベント毎のタイムスタンプ（一連の曲中の絶対時間情報）を作成することなどを含む。再構成したタイムスタンプ付きの奏法イベント列オブジェクトは、奏法シーケンス部２１に送付される（つまり奏法シーケンス部２１が取り扱うメモリ内に書き込まれる）。この演奏データ解釈とこれに基づく奏法イベント列オブジェクトの再構成処理は、図６におけるブロック３０１，３０２の時間帯が終了するまでに行われる。
【００３４】
このように、イージー・プレーヤー部２０は、基本的には、既存の自動演奏シーケンスデータと類似構成からなる（図４に示したような）ＡＥＭ演奏データを、奏法シーケンス部２１で容易に取り扱うのに適したデータ列に変換する。なお、通常のＭＩＤＩ演奏データは、イージー・プレーヤー部２０内に含まれるＭＩＤＩ用の公知の演奏シーケンサ（ＭＩＤＩプレーヤー）で処理されるが、この点については公知技術であるため詳しく説明しない。なお、ＡＥＭ演奏データに基づく奏法波形生成プロセスの処理には相応の遅れ時間があるのに対して、ＭＩＤＩプレーヤーによる通常のＭＩＤＩ演奏データの処理には実質的な時間遅れは生じない。そこで、ＭＩＤＩプレーヤーによる通常のＭＩＤＩ演奏データの処理を、ＡＥＭ演奏データに基づく奏法波形生成プロセスの処理における遅れ時間に合わせて、適宜遅延させることにより、両者の再生音の正確な同期をとるようにしている。
【００３５】
・省略されている必要情報を補充する機能：
更に、イージー・プレーヤー部２０で行う機能の一つとして、読み込んだ自動演奏データ（曲ファイル）におけるＡＥＭ演奏イベントデータ（奏法イベント）の中に、必要な奏法パラメータが含まれていなかった場合、これを補充する機能がある。例えば、或る奏法イベントの奏法ＩＤの種類が「ビブラート・ロング・ボディ」の場合、ビブラート深さなどの制御パラメータが設定されないと、どの程度のビブラートで奏法波形を合成してよいのか判らない、という不都合がある。そのため、奏法モジュールの種類によっては、奏法イベントには奏法ＩＤのみならず、必要なパラメータも付属されていなければならないものがある。そこで、イージー・プレーヤー部２０では、読み込んだ自動演奏データの中の各奏法イベントにおいてそのような必要なパラメータが含まれているかどうかをチェックし、含まれていない場合は、必要なパラメータを自動的に補充する。この情報補充機能は図６におけるブロック３０２のタイミングで実行される。イージー・プレーヤー部２０から奏法シーケンス部２１に送付される前記奏法イベント列オブジェクトにおいては、そのように補充されたパラメータを含む。必要なパラメータの自動補充の仕方としては、奏法モジュールの各種類毎に、各種のパラメータ毎の所定のデフォルト値（標準値）を用意しておき、このデフォルト値を使用すればよい。デフォルト値の決め方としては、それぞれ所定の固定値を予め用意しておいてもよいし、あるいは、当該パラメータに関する前回使用した値（直前使用値）をバッファしておき、バッファされた直前使用値をデフォルト値として使用するようにしてもよく、その他、適宜の手段を採用してよい。
【００３６】
イージー・プレーヤー部２０で費やされる前記ブロック３０１，３０２の処理時間として所定時間が予め確保されており、「ＰＬＡＹ」指示がなされたときから該所定時間内でこれらのブロック３０１，３０２の処理が行われる。ユーザは、「ＰＬＡＹ」指示を行う前に、奏法波形生成プロセスにおける各種の処理時間情報を設定したり、その他の種々の設定操作を行うことができるが、この点についての説明は省略する。イージー・プレーヤー部２０は、時間ブロック３０２の最後で、奏法シーケンス部２１に対して、シーケンス再生開始指示を与える。実際の演奏が開始された後は、波形合成部２４から再生演奏の現在時間（現在の再生位置）を示す情報をイージー・プレーヤー部２０で受け取り、この再生演奏の現在時間を表示する。図６におけるブロック３０３ａ，３０３ｂ，３０３ｃ，…は、定期的な割込み処理として実行される表示変更処理（再生演奏の現在時間を表示する処理）のタイミングを示している。
【００３７】
（２）奏法シーケンス部２１
奏法シーケンス部２１は、イージー・プレーヤー部２０から与えられるタイムスタンプ付きの奏法イベント列オブジェクト（つまり奏法イベントデータ列）をバッファし、これをタイムスタンプの時刻つまり再生時刻に従って、順次に読み出す。この順次読出しは、任意に設定される「送り出し頻度」に相当する時間ε毎にバッチ処理で行われる。図６において、時間εの間隔が例示されている。
・パート管理：
奏法波形の合成は演奏パート別に並列的に行われるので、奏法シーケンス部２１の最初の仕事は、今回の曲演奏においてＡＥＭ演奏パートがどれだけあるかを事前に（シーケンス再生開始指示の受理前に）解釈し、必要な数のＡＥＭ演奏の再生パート数を設定するようパート部２２を開設する指示を行うことである。そして、イージー・プレーヤー部２０から与えられるタイムスタンプ付きの奏法イベント列オブジェクト（つまり奏法イベントデータ列）を解釈して、これをパート別にセット（バッファ）しておく。よって、シーケンス再生開始指示の受理後の、奏法イベント列オブジェクト（つまり奏法イベントデータ列）の順次読出しは、各パート毎に行われる。よって、以下の説明で、「或るイベントの次のイベントを先読みする」というような場合、同じパートにおける奏法イベントデータ列を対象してイベントの前後を論じているのである。以下、単に「パート」という言うが、これは「ＡＥＭ演奏パート」のことである。
【００３８】
・他の事前処理：
上記パート管理以外の事前処理として、奏法シーケンス部２１においては、各種の動作時間遅れを考慮した時間パラメータに応じた処理を行う。この種の時間パラメータには次のようなものがある。
「奏法シーケンス部での送り出し頻度の時間ε」…これは、前述の通り、奏法シーケンス部２１がどの程度の頻度で演奏イベントデータをパート部２２以降の処理に送り出すかを設定するデータである。すなわち、或る送り出し時点（現在時刻）において、この時間εの幅内に存在する演奏イベントデータを一括して次段に送り出す。なお、この実施例では、奏法シーケンス部２１は現在時刻の演奏イベント（詳しくは現在処理すべき時間εの幅内に存在するイベント）のみならず、それよりも先の（未来の）１又は複数の演奏イベントをも先行して読み出して、パート部２２に与えるようになっている。これについては追って詳しく説明する。パート部２２以降の処理では、この時間ε毎に与えられる演奏イベントデータに基づき奏法波形再生に必要な処理を行う。
【００３９】
「奏法シーケンス部での先送り時間γ」…これは、奏法シーケンス部２１がどの程度先の情報まで先行して処理するかを設定する時間である。
「発音潜伏（ｌａｔｅｎｃｙ）時間β」…これは、再生開始時の動作遅延時間に見合った時間である。再生開始シーケンス位置よりもこの発音潜伏（ｌａｔｅｎｃｙ）時間βだけ手前に、波形合成部２４における動作開始時刻をみかけ上設定する（つまり再生開始シーケンス位置を遅らせる）。再生開始時においては、上記送り出し頻度の時間εの幅分の演奏イベントのみならず上記先送り時間γ分の演奏イベントについても奏法波形合成処理を一挙に行う必要があるため、その負荷を考慮して、それに相当する遅れ時間を発音潜伏（ｌａｔｅｎｃｙ）時間βとして、再生開始時にオフセット設定することで、再生開始時の動作遅れを調整する。
【００４０】
「コードブックデータアクセスでのプリフェッチ時間α」…これは、波形合成部２４が、現在時刻よりもどの程度先のデータまでをハードディスク（その中のコードブック）からＲＡＭ内に読み込むか（プリフェッチするか）を設定する時間である。奏法シーケンス部２１では、このプリフェッチ時間αのデータを波形合成部２４にセットする。
「オーディオデバイスへの出力潜伏（ｌａｔｅｎｃｙ）時間δ」…これは、波形合成部２４が、出力用オーディオデバイスの時刻よりもどれだけ手前の時刻から合成処理を行うかを設定する時間である。奏法シーケンス部２１では、この出力潜伏（ｌａｔｅｎｃｙ）時間δのデータを波形合成部２４にセットする。例えば、波形合成部２４では、合成した波形データを、この出力潜伏（ｌａｔｅｎｃｙ）時間分だけ先の時刻で使用される出力バッファに書き込むように制御する。
上記各時間パラメータは、それぞれ所定値に固定されていてもよいし、あるいは、ユーザによって可変設定できてもよい。ユーザが時間パラメータを設定する場合は、イージー・プレーヤー部２０での設定処理によってこれを行う。
【００４１】
・未来イベントの先読み処理：
奏法シーケンス部２１で取り扱うメモリ内にバッファされた或る１パートの奏法イベント列オブジェクトが図７の（ａ）のようであるとする。ＥＶ１，ＥＶ２，…が各イベントを示し、Ｔｓ１，Ｔｓ２，…がそれぞれに対応するタイムスタンプを示す。このメモリの読出しポインタの初期値は、初期時点ｔ０に対応しているものとする。
図７の（ｂ）は、奏法シーケンス部２１によるイベント処理タイミングを略示するタイミングチャートである。最初のイベント処理タイミングは、イージー・プレーヤー部２０からシーケンス再生開始指示が与えられたとき到来する。これを初期時点ｔ０とする。以後のイベント処理タイミングは、送り出し頻度の時間εが経過する毎に到来する。これらを時点ｔ１，ｔ２，…とする。初期時点ｔ０での処理において、基本的に、時間ε分の時間帯（現在時間帯）に存在するイベント（現在イベント）をそのタイムスタンプと共に図７（ａ）のメモリから読み出す。もちろん、前述の通り、１つのイベントには奏法ＩＤと奏法パラメータ等が含まれているので、当該イベントについてのこれらのデータ全てがワンセットで読み出される。図７（ｂ）の例では、最初のイベント（ＥＶ１，ＥＶ２）が最初の時間ε分の時間帯に存在している例を示している。なお、最初のイベントは通常、アタック部の奏法イベント（ＥＶ１）であり、これは前述の通りノートオンイベント（ＥＶ２）と対になって一緒に処理される。もちろん、現在時間帯にイベントが存在しない場合もありうる。なお、各イベントＥＶ１，ＥＶ２，…が存在する時間位置は、それぞれのタイムスタンプＴｓ１，Ｔｓ２，…から判明する。
【００４２】
この実施例では、そのような現在の奏法イベントの読出しに加えて、その次に存在する１又は複数の奏法イベント（未来イベント）も読み出す。図７（ｂ）の例では、次の奏法イベントＥＶ３が現在の奏法イベント（ＥＶ１，ＥＶ２）の読み出し時に一緒に読み出される。こうして、読み出された現在及び未来の奏法イベントＥＶ１，ＥＶ２，ＥＶ３が、それぞれタイムスタンプを伴って、次のパート部２２に渡される。この処理は各パート毎にそれぞれ行われる。これらの処理が終わると奏法シーケンス部２１は待機状態となる。
【００４３】
このように現在の奏法イベントのみならず、その先の（未来の）奏法イベントをも取得して、パート部２２に与えるようにしたことにより、パート部２２以降の処理において現在の奏法イベントに対応する奏法モジュールの波形合成を行うときに、時間的に相前後する演奏イベントに基づく奏法モジュールの相互関係を考慮に入れて波形合成を行うことができる。たとえば、相前後する演奏イベントに基づく奏法モジュールに基づく奏法波形同士が円滑に接続されるように適切な加工を施すことができるようになる。
【００４４】
図７の例において、次の処理時点ｔ１が到来すると、奏法シーケンス部２１の前記処理が再開される。イベントが存在しない場合は何も処理されない。処理時点ｔｎが到来して奏法シーケンス部２１の前記処理が再開されたとき、該処理時点ｔｎにおける現在時間帯に奏法イベントＥＶ３が存在する場合、時間ε分の時間帯（現在時間帯）に存在するイベント（現在イベント）を読み出すと共にその次に存在するイベント（未来イベント）を先読みする処理を行う。なお、パート部２２において、受け取ったイベントを記憶しておき、そのイベント処理が行なわれるまで保存しておくようにするので、既に読み出し済みのイベントはもう読み出さなくてよい。例えば、図７（ｂ）の例では、処理時点ｔｎにおける現在時間帯にはイベントＥＶ３が存在するが、これは前回読み出し時において未来イベントとして読み出されているので、もう読み出さなくてもよい。一方、更に次のイベントＥＶ４がそれに先行するイベントＥＶ３（現在イベント）の処理にとって必要であれば、これはタイムスタンプと共に読み出してパート部２２に供給する。この場合、パート部２２では、既に受け取り済みの現在イベントＥＶ３と今回受け取った未来イベントＥＶ４とから、それぞれに対応する奏法モジュールの相互接続関係を調整する。
図６において、ブロック３１１ａ，３１１ｂ，３１１ｃ…が、奏法シーケンス部２１による上述のイベント読み出し処理（現在イベントと未来イベントの読み出しを含む）が実行されるタイミングを例示している。
【００４５】
（３）パート部２２
パート部２２は、奏法シーケンス部２１から送付された奏法イベント（タイムスタンプ付き）を記憶し、これに基づき所定の「リハーサル」処理を行うと共に、次段の奏法合成部２３における処理を管理する。これらの処理も各パート毎にそれぞれ行われる。図６において、ブロック３２１ａ，３２１ｂ，３２１ｃ…が、パート部２２において「リハーサル」処理等が実行されるタイミングを例示している。
・リハーサル処理：
「リハーサル」処理とは、奏法合成後の時間的に相前後する各波形構成要素（Ｔｉｍｂｒｅ，  Ａｍｐｌｉｔｕｄｅ，  Ｐｉｔｃｈ等）同士の始点や終点についての時刻やレベル値が滑らかにつながるように、実際の奏法合成を行なう前に、奏法イベントに応じたベクトルＩＤや代表点値例やその他パラメータなどをリハーサルで読み出し、これに基づき模擬的な奏法合成を行い、各奏法モジュールの始点や終点についての時刻やレベル値を制御するパラメータを適切に設定する処理である。この「リハーサル」処理に基づいて設定されたパラメータを用いて、奏法合成部２３で奏法合成処理を行うことにより、時間的に相前後する奏法波形が各構成要素（Ｔｉｍｂｒｅ，  Ａｍｐｌｉｔｕｄｅ，  Ｐｉｔｃｈ等）毎に滑らかに接続されることになる。すなわち、合成済みの奏法波形若しくは波形構成要素を調整・制御してそれらの奏法波形若しくは波形構成要素同士が滑らかに接続されるようにするのではなく、個々の奏法波形若しくは波形構成要素を合成する直前における「リハーサル」処理によって模擬的に奏法波形若しくは波形構成要素を合成する処理を行ない、始点や終点等の時刻やレベルなどについての最適なパラメータを設定し、これらの最適なパラメータを用いて奏法波形若しくは波形構成要素の合成を行なうことにより結果的に奏法波形若しくは波形構成要素同士が滑らかに接続されるようにするのである。
【００４６】
リハーサル処理では、処理対象である奏法モジュールの種類若しくは性格に応じて必要な処理を行なう。なお、リハーサル処理の対象となるのは主に奏法イベントであるが、ノートオンイベントやノートオフイベントの発生時刻も考慮される。参考のために、発音開始から終了に至るまでの奏法モジュールの組み合わせ状態の一例を図８に示す。図８におけるイベントの並び順は、（１）アタック（エントランス）モジュールを指定する奏法イベントＥＶ１、（２）ノートオンイベントＥＶ２、（３）ボディモジュールを指定する奏法イベントＥＶ３、（４）ジョイントモジュールを指定する奏法イベントＥＶ４、（５）ノートオンイベントＥＶ５、（６）ボディモジュールを指定する奏法イベントＥＶ６、（７）リリース（フィニッシュ）モジュールを指定する奏法イベントＥＶ７、（８）ノートオフイベントＥＶ８、である。
【００４７】
図８の例において、現在イベントである奏法イベントＥＶ１及びノートオンイベントＥＶ２によって指定されるアタック部（エントランス部）の奏法モジュールに従う奏法波形を合成するときに、前述のようにその次の奏法イベントＥＶ３が未来イベントとして先読みして与えられ、リハーサル処理では、両者が滑らかに接続されるように必要なパラメータを決定する。次に、その後、奏法イベントＥＶ３を現在イベントとしてそれによって指定されるボディ部の奏法モジュールに従う奏法波形を合成するときに、その次のジョイント部の奏法イベントＥＶ４及びそれと対を成すノートオンイベントＥＶ５が未来イベントとして先読みして与えられ、リハーサル処理では、両者が滑らかに接続されるように必要なパラメータを決定する。同様に、奏法イベントＥＶ４及びノートオンイベントＥＶ５を現在イベントとしてそれによって指定されるジョイント部の奏法モジュールに従う奏法波形を合成するときに、前述のようにその次の奏法イベントＥＶ６が未来イベントとして先読みして与えられ、リハーサル処理では、両者が滑らかに接続されるように必要なパラメータを決定する。なお、この例では、最初のノートオンイベントＥＶ２で発音される音と次のノートオンイベントＥＶ５で発音される音とをジョイント部の奏法波形を用いて接続している。同様に、更にその次の奏法イベントＥＶ６を現在イベントとしてそれによって指定されるボディ部の奏法モジュールに従う奏法波形を合成するときに、その次のリリース部の奏法イベントＥＶ７及びそれと対を成すノートオフイベントＥＶ８が未来イベントとして先読みして与えられ、リハーサル処理では、両者が滑らかに接続されるように必要なパラメータを決定する。更に奏法イベントＥＶ７及びノートオフイベントＥＶ８を現在イベントとしてそれによって指定されるリリース部（フィニッシュ部）の奏法モジュールに従う奏法波形を合成するときには、消音でその奏法波形が終るが故に、次の波形との接続を考慮する必要がないので、次の奏法イベントを考慮したリハーサル処理は行なわれない。
【００４８】
次に、いくつかの種類の奏法モジュールに関する「リハーサル」処理の具体例につき説明する。
〈アタック（エントランス）部モジュール〉
図９（ａ）は、現在イベントがアタック（エントランス）部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップＳ１ａでは、今回処理すべき奏法イベント（現在イベント）（図８の例ではＥＶ１，ＥＶ２）を奏法合成部２３に渡し、その奏法ＩＤ（特定のアタック奏法モジュールを指示する）に応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。
【００４９】
ステップＳ２ａでは、次の奏法イベント（先読みによって得た未来イベント）（図８の例ではＥＶ３）を奏法合成部２３に渡し、その奏法ＩＤ（特定のボディ部の奏法モジュールを指示する）に応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。
ステップＳ３ａでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ（レベルと時刻）を決定する処理を行なう。前ステップＳ１ａ，Ｓ２ａでは、ここでの処理のために必要なデータを奏法テーブルから読み出せばよい。ここでのリハーサル処理の内容例を説明するために、図１０（ａ），（ｂ），（ｃ），（ｄ）を参照する。
【００５０】
図１０（ａ）は、アタック奏法モジュールにおける調和成分用の各ベクトル例を示し、「ＨＡ」は調和成分振幅ベクトルの代表点値列（一例として０，１，２の３点からなる）、「ＨＰ」は調和成分ピッチベクトルの代表点値列（一例として０，１，２の３点からなる）、「ＨＴ」は調和成分波形ベクトルの一例（ただし波形をそのエンベロープのみで略示している）を示す。ちなみに、調和成分波形ベクトルＨＴは、基本的には音の立ち上がり部の全波形のサンプルデータからなり、その最後の部分にループ波形を含んでいる。このループ波形は後続波形と接続するときのクロスフェード合成のためにループ読み出しされるものである。アタック奏法モジュールにおける調和成分の開始時刻を定義するパラメータ“ｐｒｅＢｌｏｃｋＴｉｍｅＥ”は、実際の発音開始時点と、アタック波形の調和成分の波形発生開始時点とのずれを規定するパラメータである。開始時刻の設定は、これと対を成すノートオンイベント（図８の例ではＥＶ２）のタイムスタンプを取得して、実際の発音開始時刻（図１０における“ｎｏｔｅＯｎＴｉｍｅ”）を把握し、これと“ｐｒｅＢｌｏｃｋＴｉｍｅＥ”との差“ｎｏｔｅＯｎＴｉｍｅ−ｐｒｅＢｌｏｃｋＴｉｍｅＥ”を調和成分のアタック奏法モジュール開始時刻“ｓｔａｒｔＴｉｍｅＨ”として設定する。
【００５１】
アタック奏法モジュールにおける調和成分の終了時刻を定義するパラメータのうち、“ｐｏｓｔＢｌｏｃｋＴｉｍｅＥ”は、実際の発音開始時点とアタック波形の調和成分の本体波形終了時点とのずれを規定するパラメータであり、“ｆａｄｅＴｉｍｅＥ”は、アタック波形の末尾のクロスフェード時間幅を規定するパラメータである。従って、末尾のクロスフェード部分を含めたアタック奏法モジュールにおける調和成分の終了時刻“ｅｎｄＴｉｍｅＨ”は、“ｎｏｔｅＯｎＴｉｍｅ＋（ｐｏｓｔＢｌｏｃｋＴｉｍｅＥ＋ｆａｄｅＴｉｍｅＥ）”として求まる。この終了時刻“ｅｎｄＴｉｍｅＨ”が、次の奏法イベント（図８の例ではＥＶ３）の調和成分のモジュール開始時刻を規定するデータとして奏法合成部２３に返される。こうして、調和成分の終了時刻“ｅｎｄＴｉｍｅＨ”に応じて次の奏法モジュールの調和成分の開始時刻を設定するリハーサル処理が行なわれる。
【００５２】
図１０（ｂ）は、アタック奏法モジュールにおける調和外成分用の各ベクトル例を示し、「ＮＨＡ」は調和外成分振幅ベクトルの代表点値列（一例として０，１の２点からなる）、「ＮＨＴ」は調和外成分波形ベクトルの一例（ただし波形をそのエンベロープのみで略示している）を示す。アタック奏法モジュールにおける調和外成分の開始時刻を定義するパラメータ“ｐｒｅＴｉｍｅＮＨ”は、実際の発音開始時点と、アタック波形の調和外成分の波形発生開始時点とのずれを規定するパラメータである。調和外成分の開始時刻の設定も、前述の調和成分の場合と同様に、それと対を成すノートオンイベント（図８の例ではＥＶ２）のタイムスタンプを取得して、実際の発音開始時刻（図１０における“ｎｏｔｅＯｎＴｉｍｅ”）を把握し、これと“ｐｒｅＴｉｍｅＮＨ”との差“ｎｏｔｅＯｎＴｉｍｅ−ｐｒｅＴｉｍｅＮＨ”を調和外成分のアタック奏法モジュール開始時刻“ｓｔａｒｔＴｉｍｅＮＨ”として設定する。
【００５３】
アタック奏法モジュールにおける調和外成分の終了時刻を定義するパラメータ“ｐｏｓｔＴｉｍｅＮＨ”は、実際の発音開始時点とアタック波形の調和外成分の終了時点とのずれを規定するパラメータである。アタック奏法モジュールにおける調和外成分の終了時刻“ｅｎｄＴｉｍｅＮＨ”は、“ｎｏｔｅＯｎＴｉｍｅ＋ｐｏｓｔＴｉｍｅＮＨ”として求まる。この終了時刻“ｅｎｄＴｉｍｅＮＨ”が、次の奏法イベント（図８の例ではＥＶ３）の調和外成分のモジュール開始時刻を規定するデータとして奏法合成部２３に返される。こうして、調和外成分の終了時刻“ｅｎｄＴｉｍｅＮＨ”に応じて次の奏法モジュールの調和外成分の開始時刻を設定するリハーサル処理が行なわれる。このように、調和外成分の時刻合わせは、調和成分とは独立に行なわれる。
【００５４】
レベルについてのリハーサル処理は、現在の奏法イベントに係るアタック部奏法モジュールの振幅ベクトルの終点（図１０（ａ）のＨＡの２位置）のレベル（振幅値）とピッチベクトルの終点（図１０（ａ）のＨＰの２位置）のレベル（ピッチの値）を、次の奏法イベントに係るボディ部奏法モジュールの振幅ベクトルの始点（図１０（ｃ）のＨＡの０位置）のレベル（振幅値）とピッチベクトルの始点（図１０（ｃ）のＨＰの０位置）のレベル（ピッチの値）に合わせることを行なう。
図１０（ｃ）は、ボディ部の奏法モジュールにおける調和成分用の各ベクトル例を示し、「ＨＡ」は調和成分振幅ベクトルの代表点値列（一例として０，１の２点からなる）、「ＨＰ」は調和成分ピッチベクトルの代表点値列（一例として０，１の２点からなる）、「ＨＴ」は調和成分波形ベクトルの一例（ただし波形は黒塗した矩形で略示している）を示す。なお、ボディ部の調和成分波形ベクトルＨＴは、図で黒塗したＮ個の矩形部分（０、１、……Ｎ−１）にそれぞれ対応するＮ個のループ波形からなり、これらのループ波形を順次にループ読み出しながら順次切り替えて接続していくことで所定の時間長のボディ部波形が生成される。ボディ部の時間長を少しだけ短縮又は伸張したい場合は、各ループ部のループ時間を短縮／伸張すればよい。また、ボディ部の時間長をそれ以上に短縮したい場合は、該Ｎ個のループ波形のうちの任意の１乃至複数を適宜間引いて読み出せばよい。一方、ボディ部の時間長をそれ以上に伸張したい場合は、該Ｎ個のループ波形のうちの任意の複数を所定の順序であるいはランダムに該Ｎ個のループ波形の間に挿入すればよい。
【００５５】
図９（ａ）のステップＳ２ａにおいては、調和成分振幅ベクトルについては、次の奏法イベントに係るボディ部の奏法モジュールの調和成分振幅ベクトルＨＡの始点（図１０（ｃ）のＨＡの０位置）のレベルデータを奏法テーブルから取得する。そして、次のステップＳ３ａにおいて、奏法テーブルから取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和成分振幅ベクトルＨＡの始点の実際のレベルを算出し、これを、現在の奏法イベントに係るアタック部奏法モジュールの調和成分振幅ベクトルの終点（図１０（ａ）のＨＡの２位置）のレベル（振幅値）として設定する。
同様に、調和成分ピッチベクトルについても、次の奏法イベントに係るボディ部の奏法モジュールの調和成分ピッチベクトルＨＰの始点（図１０（ｃ）のＨＰの０位置）のピッチ値データを奏法テーブルから取得する。そして、奏法テーブルから取得したピッチ値データにピッチ制御値を加味して、ボディ部の奏法モジュールの調和成分ピッチベクトルＨＰの始点の実際のピッチを算出し、これを、現在の奏法イベントに係るアタック部奏法モジュールの調和成分ピッチベクトルの終点（図１０（ａ）のＨＰの２位置）のレベル（ピッチ値）として設定する。
【００５６】
図１０（ｄ）は、ボディ部の奏法モジュールにおける調和外成分用の各ベクトル例を示し、「ＮＨＡ」は調和外成分振幅ベクトルの代表点値列（一例として０，１の２点からなる）、「ＮＨＴ」は調和外成分波形ベクトルの一例を略記して示す。調和外成分波形ベクトルＮＨＴは３つのブロックからなり、第１のブロックは所定の期間“ＮＨＢｌｏｃｋＴｉｍｅ０”分の調和外成分波形の全波形からなり、第２のブロックはループ用の調和外成分波形（Ｌｏｏｐ）からなり、第３のブロックは所定の期間“ＮＨＢｌｏｃｋＴｉｍｅ１”分の調和外成分波形の全波形からなる。ボディ部の自感知用に応じた調和外成分波形の時間長の調節は、第２のブロックのループ用の調和外成分波形（Ｌｏｏｐ）をループ再生する時間長を調節することで行なう。
図９（ａ）のステップＳ２ａにおいては、調和外成分振幅ベクトルについても、次の奏法イベントに係るボディ部の奏法モジュールの調和外成分振幅ベクトルＮＨＡの始点（図１０（ｄ）のＮＨＡの０位置）のレベルデータを奏法テーブルから取得する。そして、次のステップＳ３ａにおいて、奏法テーブルから取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和外成分振幅ベクトルＮＨＡの始点の実際のレベルを算出し、これを、現在の奏法イベントに係るアタック部奏法モジュールの調和外成分振幅ベクトルの終点（図１０（ｂ）のＮＨＡの１位置）のレベル（振幅値）として設定する。
【００５７】
上記の処理が終了すると、図９（ａ）のステップＳ４ａにおいて、現在の奏法イベントに係るアタック部奏法モジュールの合成を開始する指示を、奏法合成部２３に対して与える。次のステップＳａ５では、上記のようにして決定された今回の奏法イベント（図８の例ではＥＶ１）の調和成分及び調和外成分の終了時刻“ｅｎｄＴｉｍｅＨ”、“ｅｎｄＴｉｍｅＮＨ”を、次の奏法イベント（図８の例ではＥＶ３）の調和成分及び調和外成分のモジュール開始時刻を規定するデータとして設定する。リハーサル処理が終了すると、図５のフローは奏法合成部２３の処理に移行する。奏法合成部２３の処理については追って説明することとし、次に、更に別のモジュールについてのリハーサル処理について説明する。
【００５８】
〈ボディ部モジュール〉
図９（ｂ）は、現在イベントがボディ部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップＳ１ｂでは、今回処理すべき奏法イベント（現在イベント）（例えば図８のＥＶ３又はＥＶ６）を奏法合成部２３に渡し、その奏法ＩＤ（特定のボディ部の奏法モジュールを指示する）に応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。
【００５９】
ステップＳ２ｂでは、次の奏法イベント（先読みによって得た未来イベント）を奏法合成部２３に渡し、その奏法ＩＤに応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルから引き出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。ボディ部の次の来る奏法イベントは、リリース部の奏法イベントかジョイント部の奏法イベントである。図８では、ボディ部奏法イベントＥＶ３の次にジョイント部奏法イベントＥＶ４及びそれと対を成すノートオンイベントＥＶ５が来ており、ボディ部奏法イベントＥＶ６の次にリリース部奏法イベントＥＶ７及びそれと対を成すノートオフイベントＥＶ８が来ている。
ステップＳ３ｂ、Ｓ５ｂでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ（時刻とレベル）を決定若しくは調整する処理を行なう。ステップＳ４ｂにおいては、今回の奏法イベントに係るボディ部奏法モジュールの合成を開始する指示を、奏法合成部２３に対して与える。
【００６０】
ボディ部の奏法モジュールについては、基本的に、その開始時刻はそれに先行する奏法モジュールの終了時刻に合わせ、その終了時刻はそれに後続する奏法モジュールの開始時刻に合わせるようにし、また、調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベル及び終点のレベルは、ボディ部奏法モジュールのものを使用する。つまり、先行する奏法モジュールの終点のレベルをボディ部奏法モジュールの始点のレベルに合わせ、後続する奏法モジュールの始点のレベルをボディ部奏法モジュールの終点のレベルに合わせるように、リハーサル処理を行なう。
ボディ部の奏法モジュールの調和成分及び調和外成分の各開始時刻は、その前の奏法イベント（例えば前述したアタック部奏法モジュールのイベント）でのリハーサル処理によって既に決定されているので、ここでは求める必要がない。
ボディ部の奏法モジュールの調和成分及び調和外成分の各終了時刻を決定するために、次の奏法モジュール（リリース部又はジョイント部）をステップＳ２ｂでリハーサルして、その調和成分及び調和外成分の各開始時刻を求める。そして、ステップＳ３ｂでは、上記求めた次の奏法モジュール（リリース部又はジョイント部）の調和成分及び調和外成分の各開始時刻を、今回のボディ部の奏法モジュールの調和成分及び調和外成分の各終了時刻として決定する。
【００６１】
このような時刻決定処理の詳細は、アタック部奏法モジュールに関連して既に説明したやり方に準じたやり方で行なえばよい。
参考のために、次の奏法モジュールとなりうるジョイント部奏法モジュールにおける調和成分用の各ベクトル例を図１１（ａ）に示し、同ジョイント部奏法モジュールにおける調和外成分用の各ベクトル例を図１１（ｂ）に示す。ＨＡ，ＨＰ，ＨＴ，ＮＨＡ，ＮＨＴ等の符号の意味は、図１０におけるものと同様である。図１１（ａ）において、調和成分の開始時刻を定義するパラメータ“ｐｒｅＴｉｍｅＨ”は、ジョイント部でのノートオンイベント発生時点（図８の例ではＥＶ５）と、ジョイント部の調和成分の波形発生開始時点とのずれを規定するものである。このリハーサルによって、更にその次のイベントであるノートオンイベント（図８の例ではＥＶ５）のタイムスタンプを取得して、実際の発音開始時刻（図１１（ａ）における“ｎｏｔｅＯｎＴｉｍｅ”）を把握し、これと“ｐｒｅＴｉｍｅＨ”との差“ｎｏｔｅＯｎＴｉｍｅ−ｐｒｅＴｉｍｅＨ”を調和成分のジョイント部奏法モジュール開始時刻として設定する。こうして、リハーサルで設定された調和成分のジョイント部奏法モジュール開始時刻を、ボディ部の奏法モジュールの調和成分の終了時刻として決定する。図１１（ｂ）における調和外成分の開始時刻を定義するパラメータ“ｐｒｅＴｉｍｅＮＨ”についても同様にリハーサル処理することで、調和外成分のジョイント部奏法モジュール開始時刻を設定し、ボディ部の奏法モジュールの調和外成分の終了時刻として決定する。
【００６２】
また、ボディ部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルを、その前の奏法イベントの奏法モジュール（例えば前述したアタック部奏法モジュール）の調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルとしてそれぞれ設定することは、前の奏法イベントでのリハーサル処理によって既に済んでいる。
よって、ここでは、ボディ部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルを、次の奏法イベント（未来イベント）に係る奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルとして決定する（ステップＳ５ｂ）。
【００６３】
このようなレベル決定処理の詳細も、アタック部奏法モジュールに関連して既に説明したやり方に準じたやり方で行なえばよい。調和成分振幅ベクトルについては、現在の奏法イベントに係るボディ部の奏法モジュールの調和成分振幅ベクトルＨＡの終点（図１０（ｃ）のＨＡの２位置）のレベルデータを奏法テーブルから取得する。そして、奏法テーブルから取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和成分振幅ベクトルＨＡの終点の実際のレベルを算出し、これを、次の奏法イベントに係る奏法モジュールの調和成分振幅ベクトルの始点（図１１（ａ）のＨＡの０位置）のレベル（振幅値）として設定する。また、同様に、調和成分ピッチベクトルについても、現在の奏法イベントに係るボディ部の奏法モジュールの調和成分ピッチベクトルＨＰの終点（図１０（ｃ）のＨＰの２位置）のピッチ値データを奏法テーブルから取得する。そして、奏法テーブルから取得したピッチ値データにピッチ制御値を加味して、ボディ部の奏法モジュールの調和成分ピッチベクトルＨＰの終点の実際のピッチを算出し、これを、次の奏法イベントに係る奏法モジュールの調和成分ピッチベクトルの始点（図１１（ａ）のＨＰの０位置）のレベル（ピッチ値）として設定する。
調和外成分振幅ベクトルについても同様に、現在の奏法イベントに係るボディ部の奏法モジュールの調和外成分振幅ベクトルＮＨＡの終点（図１０（ｄ）のＨＡの１位置）のレベルデータを奏法テーブルから取得し、取得したレベルデータにベロシティ値やボリューム設定値などを加味して、ボディ部の奏法モジュールの調和外成分振幅ベクトＮルＨＡの終点の実際のレベルを算出し、これを、次の奏法イベントに係る奏法モジュールの調和外成分振幅ベクトルの始点（図１１（ｂ）のＮＨＡの０位置）のレベル（振幅値）として設定する。
【００６４】
〈ジョイント部モジュール〉
図９（ｃ）は、現在イベントがジョイント部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップＳ１ｃでは、今回処理すべき奏法イベント（現在イベント）（例えば図８のＥＶ４，ＥＶ５）を奏法合成部２３に渡し、その奏法ＩＤ（特定のジョイント部の奏法モジュールを指示する）に応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。
【００６５】
ステップＳ２ｃでは、次の奏法イベント（先読みによって得た未来イベント）を奏法合成部２３に渡し、その奏法ＩＤに応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルから引き出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。ジョイント部の次の来る奏法イベントは、２番目のボディ部の奏法イベント（例えば図８のＥＶ６）である。
ステップＳ３ｃ、Ｓ５ｃでは、取得した今回及び次回の奏法イベントについての各データに基づき、今回の奏法イベントに係る奏法モジュールについての所定のデータ（時刻とレベル）を決定若しくは調整する処理を行なう。ステップＳ４ｃにおいては、今回の奏法イベントに係るジョイント部奏法モジュールの合成を開始する指示を、奏法合成部２３に対して与える。
【００６６】
ジョイント部の奏法モジュールについては、基本的に、調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルは、先行するボディ部奏法モジュール（例えば図８のＥＶ３）の各終点のレベルに合わせるようにし、調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルは、後続するボディ部奏法モジュール（例えば図８のＥＶ６）の各始点のレベルに合わせるように、リハーサル処理を行なう。
ジョイント部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルのデータは、前の奏法イベントのリハーサル処理によって（図９（ｂ）のステップＳ５ｂ）既に決定されているので、それを用いる。よって、ステップＳ３ｃでは、主に、ジョイント部の奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各終点のレベルとして、後続するボディ部奏法モジュール（例えば図８のＥＶ６）の各始点のレベルに見合った値に決定するよう、ステップＳ２ｃで取得した次のボディ部奏法モジュールのリハーサル結果を利用して処理を行なう。これは、具体的には、図９（ａ）のステップＳ３ａにおける処理と同様の手法で行なえばよいため、その詳細説明は省略する。
【００６７】
ジョイント部の奏法モジュールの開始時刻については、図１１（ａ）を参照して前述したように、次のイベントであるノートオンイベント（図８の例ではＥＶ５）のタイムスタンプを取得して、実際の発音開始時刻（図１１（ａ）における“ｎｏｔｅＯｎＴｉｍｅ”）を把握し、これと“ｐｒｅＴｉｍｅＨ”との差“ｎｏｔｅＯｎＴｉｍｅ−ｐｒｅＴｉｍｅＨ”を調和成分のジョイント部奏法モジュール開始時刻として設定する。調和外成分のジョイント部奏法モジュール開始時刻も、図１１（ｂ）を参照して前述した通りの手法で求める。これらは、ステップＳ１ｃのリハーサルのときに求めればよい。
また、ジョイント部の奏法モジュールの終了時刻については、図１１（ａ）に示すように、調和成分の終了時刻を定義するパラメータ“ｐｏｓｔＴｉｍｅＨ”がジョイント部でのノートオンイベント発生時点（図８の例ではＥＶ５）と、ジョイント部の調和成分の波形発生終了時点とのずれを規定しているので、その次のイベントであるノートオンイベント（図８の例ではＥＶ５）時刻“ｎｏｔｅＯｎＴｉｍｅ”にこれを加算して、“ｎｏｔｅＯｎＴｉｍｅ＋ｐｏｓｔＴｉｍｅＨ”を調和成分のジョイント部奏法モジュール終了時刻として決定する。ステップＳ５ｃでは、こうして、リハーサルで設定された調和成分のジョイント部奏法モジュール終了時刻を、次のボディ部の奏法モジュールの調和成分の開始時刻として設定する。図１１（ｂ）における調和外成分の終了時刻を定義するパラメータ“ｐｏｓｔＴｉｍｅＮＨ”についても同様にリハーサル処理することで、調和外成分のジョイント部奏法モジュール終了時刻を決定し、次のボディ部の奏法モジュールの調和外成分の開始時刻として設定する。
【００６８】
〈リリース（フィニッシュ）部モジュール〉
図９（ｄ）は、現在イベントがリリース（フィニッシュ）部の奏法モジュールの場合のリハーサル処理の一手順例を示すフロー図である。
ステップＳ１ｄでは、今回処理すべき奏法イベント（現在イベント）（例えば図８のＥＶ７，ＥＶ８）を奏法合成部２３に渡し、その奏法ＩＤ（特定のジョイント部の奏法モジュールを指示する）に応じたベクトルＩＤ及び代表点値列（Ｓｈａｐｅ）及びその他パラメータを、奏法合成部２３の処理によって、前記奏法テーブルからリハーサルとして読み出して、これらをパート部２２が受け取り、これに基づき次のようにレベルや時刻等のパラメータ（制御データ）を決定若しくは調整する処理を行なう。なお、前回の奏法イベントのリハーサル処理のときに既に調整・変更されているパラメータは、調整・変更されているものを用いる。通常、前の奏法イベントのときに、既に今回処理すべき奏法イベントについて必要なデータはリハーサル済みであるから、このステップＳ１ｄは実際には省略可能である。
【００６９】
参考のために、リリース部奏法モジュールにおける調和成分用の各ベクトル例を図１１（ｃ）に示し、同奏法モジュールにおける調和外成分用の各ベクトル例を図１１（ｄ）に示す。ＨＡ，ＨＰ，ＨＴ，ＮＨＡ，ＮＨＴ等の符号の意味は、図１０と同様である。図１１（ｃ）において、調和成分の開始時刻を定義するパラメータのうち、“ｆａｄｅＴｉｍｅＦ”は前の奏法モジュールの末尾波形とリリース部の先頭波形とをクロスフェード合成するための時間を示し、“ｐｒｅＢｌｏｃｋＴｉｍｅＦ”はクロスフェード終了時から次のイベントであるノートオフイベントの発生時点（図８の例ではＥＶ８）との時間差を示す。リリース部奏法モジュールの調和成分の開始時刻は、ノートオフイベントの発生時刻“ｎｏｔｅＯｆｆＴｉｍｅ”を基準にして、“ｎｏｔｅＯｆｆＴｉｍｅ−（ｆａｄｅＴｉｍｅＦ＋ｐｒｅＢｌｏｃｋＴｉｍｅＦ）”で決定される。また、リリース部奏法モジュールの調和外成分の開始時刻は、“ｎｏｔｅＯｆｆＴｉｍｅ−ｐｒｅＴｉｍｅＮＨ”で決定される。これらの開始時刻は、その前の奏法イベントであるボディ部奏法モジュールのリハーサル処理（図９（ｂ）のステップＳ２ｂ，Ｓ３ｂ）において既に求められているので、それを用いることができる。
また、リリースの奏法モジュールの調和成分及び調和外成分の各振幅ベクトル及び調和成分のピッチベクトルにおける各始点のレベルは、先行するボディ部奏法モジュール（例えば図８のＥＶ６）の各終点のレベルに合わせる。これも、その前の奏法イベントであるボディ部奏法モジュールのリハーサル処理（図９（ｂ）のステップＳ５ｂ）において既に求められているので、それを用いることができる。
【００７０】
このように、発音を終了させる奏法モジュールであるリリース（フィニッシュ）部については、それ以前に必要なリハーサルが済んでいる筈であるので、ステップＳ１ｄによるリハーサルは、実際には不要である。ステップＳ４ｄでは、今回の奏法イベントに係るリリース部奏法モジュールの合成を開始する指示を、奏法合成部２３に対して与える。
なお、図９（ａ）（ｂ）（ｃ）における各ステップＳ５ａ，Ｓ５ｂ，Ｓ５ｃの処理は、パート部２２によるリハーサル処理で行なわずに、次の奏法合成部２３で実際に奏法合成を行なうときに行なうようにしてもよい。
【００７１】
（４）奏法合成部２３
図５において、奏法合成部２３は、パート部２２から送付された奏法イベント（タイムスタンプ付き）とリハーサル結果データを受けて所定の奏法合成処理を行なう。この奏法合成処理では、所定の奏法アルゴリズムに従い、奏法イベントの奏法ＩＤ及びパラメータあるいは制御データを解釈して処理し、これに基づき奏法テーブルから各ベクトルＩＤと代表点値列及び各種パラメータを読み出し、これらを修飾又は加工もしは変更する。そして、奏法イベントに対応するこれらの各ベクトルＩＤと代表点値列及び各種パラメータ等と前記リハーサルによって決定された時刻及びレベル等のパラメータ（制御データ）などをパケット化して時間順に従うストリームデータとして出力する。図６において、ブロック３３１ａ，３３１ｂ，３３１ｃ…が、奏法合成部２３において奏法合成処理等が実行されるタイミングを例示している。また、図６のブロック３３０は上記パケット化されたストリームデータの出力処理部分を例示し、その中のブロック３３０ａ，３３０ｂ，３３０ｃ…が各ストリームデータの出力タイミングを例示している。
【００７２】
（５）波形合成部２４
図５において、波形合成部２４は、各ベクトルＩＤと代表点値列等の上記パケット化されたストリームデータを奏法合成部２３から受け取り、現在時刻より前記プリフェッチ時間αだけ前の時刻に、ベクトルＩＤに応じて波形データベース内のコードブックから波形テンプレートデータ等を読み出し、また、現在時刻より前記出力潜伏（ｌａｔｅｎｃｙ）時間δだけ前の時刻に、代表点値列とパラメータ等に基づき振幅ベクトル及びピッチベクトルのエンベロープ波形形状を生成し、これらに基づき奏法波形の調和成分波形と調和外成分波形をそれぞれ形成する。そして、奏法波形の調和成分波形と調和外成分波形をそれぞれの時刻データに応じて所定の時刻位置に貼り付けて、最終的にこれらを加算合成し、奏法波形の合成を行なう。ここで確立される再生時刻（つまり現在時刻）データがイージー・プレーヤー部２０に与えられ、再生位置（時刻）のリアルタイム表示に用いられる。図６において、ブロック３４１，３４２，３４３，…は、波形合成部２４において波形データベース内のコードブックに対するプリフェッチのタイミングを例示している。なお、波形合成部２４において前記波形テンプレートデータ及び振幅ベクトル及びピッチベクトルのエンベロープ波形形状等に基づき奏法波形データを生成する手法としては、例えば「ソフトウェア音源」として知られた手法を適宜採用することができる。波形合成部２４で合成された奏法波形データは、出力バッファ（図１の波形出力部１０８に含まれる）に与えられる。該出力バッファに記憶された奏法波形データが所定の再生サンプリング周期で読み出されて、サウンドシステム１０８Ａ（図１）を経由して空間的に発音される。
【００７３】
なお、上記実施例では、現在の奏法イベントの読み出しとそれに対応する未来の奏法イベントの先読みを、所定時間ε毎に行っているが、これに限らず、随時行うようにしてもよい。
【００７４】
【発明の効果】
以上の通り、この発明によれば、指定された奏法モジュールに対応する波形を実際に合成する前に、先行する奏法モジュールの少なくとも終端特性に関する終端情報と後続する奏法モジュールの少なくとも先端特性に関する先端情報とを取得する（リハーサルする）ことで、取得した終端情報と先端情報の関係から両者が滑らかに接続されるように、少なくとも一方の特性を修正することができる。このように修正された特性に従い、奏法モジュールに対応する波形を合成することで、相前後する奏法モジュールに基づく奏法波形同士が円滑に接続されるようにすることができる。
【図面の簡単な説明】
【図１】この発明の一実施例において利用可能な装置のハードウエア構成例を示すブロック図。
【図２】奏法モジュールのデータ形式の一例を説明する図。
【図３】或る奏法モジュールに対応する実波形区間を構成する各成分及び要素の一例を模式的に示す図。
【図４】１つの曲の自動演奏データ（曲ファイル）の構成例を説明する図。
【図５】同実施例に係る奏法波形生成プロセスの大まかな手順を示すフローチャート。
【図６】同実施例に係る奏法波形生成プロセスを構成する各処理ブロックが受け持つ処理の時間関係を大まかに示す概略タイミングチャート。
【図７】（ａ）は奏法イベント列オブジェクトの一例を示す図、（ｂ）は現在の奏法イベントの処理タイミングを規定する送り出し頻度とそれ後続する奏法イベントを先読みして送り出す先送り時間との関係を例示するタイミングチャート。
【図８】発音開始から終了に至るまでの奏法モジュールの組み合わせ状態の一例を示すタイミングチャート。
【図９】各種の奏法モジュールに対応するリハーサル処理の例を示すフローチャート。
【図１０】（ａ）及び（ｂ）はアタック部の奏法モジュールにおける調和成分及び調和外成分用の各ベクトル例を示す図、（ｃ）及び（ｄ）はボディ部の奏法モジュールにおける調和成分及び調和外成分用の各ベクトル例を示す図。
【図１１】（ａ）及び（ｂ）はジョイント部の奏法モジュールにおける調和成分及び調和外成分用の各ベクトル例を示す図、（ｃ）及び（ｄ）はリリース部の奏法モジュールにおける調和成分及び調和外成分用の各ベクトル例を示す図。
【符号の説明】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  パネルスイッチ
１０５  パネル表示器
１０８  波形出力部１０８
１０９  ハードディスク
２０  イージー・プレーヤー部２０
２１  奏法シーケンス部
２２  パート部
２３  奏法合成部
２４  波形合成部
【図１】
0003613191.tif 000002
【図２】
0003613191.tif 000003
【図３】
0003613191.tif 000004
【図４】
0003613191.tif 000005
【図５】
0003613191.tif 000006
【図６】
0003613191.tif 000007
【図７】
0003613191.tif 000008
【図８】
0003613191.tif 000009
【図９】
0003613191.tif 000010
【図１０】
0003613191.tif 000011
【図１１】
0003613191.tif 000012