(57)【特許請求の範囲】
【請求項１】
演奏情報を供給する演奏情報供給手段と、
特性変化カーブを表すセグメントテンプレートを供給するセグメントテンプレート供給手段と、
前記演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの前記特性変化カーブを変更する変更手段と、
前記演奏情報に基づき基本エンベロープを生成し、前記変更手段により変更された前記特性変化カーブを該基本エンベロープに組み合わせることによって合成エンベロープを形成するエンベロープ合成手段と、
形成された合成エンベロープを用いて、前記演奏情報に対応する楽音を生成する楽音生成手段と
を具える楽音生成装置。
【請求項２】
前記セグメントテンプレートは複数種の楽音要素についての特性変化カーブをセットで持ち、前記エンベロープ合成手段は、該複数種の楽音要素についての前記演奏情報に基づく基本エンベロープをそれぞれ生成し、生成した各基本エンベロープとそれに対応する楽音要素についての各特性変化カーブとをそれぞれ合成することで、該複数種の楽音要素についての前記合成エンベロープをそれぞれ形成することを特徴とする請求項１に記載の楽音生成装置。
【請求項３】
前記変更手段は、前記複数種の各楽音要素についての各特性変化カーブ毎に、レベル大きさあるいは時間長を変更することが可能であることを特徴とする請求項２に記載の楽音生成装置。
【請求項４】
前記セグメントテンプレートの特性変化カーブは、演奏情報に含まれるノートオンあるいはノートオフタイミングに基づき時間軸上に配置されることを特徴とする請求項１乃至３のいずれかに記載の楽音生成装置。
【請求項５】
前記セグメントテンプレート供給手段は、音のアタック部分に対応するセグメントテンプレートとリリース部分に対応するセグメントテンプレートの少なくとも一方を供給し、
前記変更手段は、供給されたセグメントテンプレートの特性変化カーブのレベル大きさあるいは時間長を変更することによって、エンベロープのアタック区間又はリリース区間を制御することを特徴とする請求項１に記載の楽音生成装置。
【請求項６】
前記変更手段は、前記特性変化カーブの振幅レベル又は時間長を変更することを特徴とする請求項１に記載の楽音生成装置。
【請求項７】
前記変更手段は、前記セグメントテンプレートに含まれる前記位置情報が示す時間軸上の位置の前後においてそれぞれ独立に前記特性変化カーブの時間長を拡大又は縮小することにより、前記特性変化カーブの時間長を変更することを特徴とする請求項６に記載の楽音生成装置。
【請求項８】
演奏情報を供給するステップと、
特性変化カーブを表すセグメントテンプレートを供給するステップと、
前記演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの前記特性変化カーブを変更するステップと、
前記演奏情報に基づき基本エンベロープを生成し、前記変更された前記特性変化カーブを該基本エンベロープに組み合わせることによって合成エンベロープを形成するステップと、
形成された合成エンベロープを用いて、前記演奏情報に対応する楽音を生成するステップと
を具える楽音生成方法。
【請求項９】
コンピュータによって実行される楽音生成プログラムであって、
演奏情報を供給するステップと、
特性変化カーブを表すセグメントテンプレートを供給するステップと、
前記演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの前記特性変化カーブを変更するステップと、
前記演奏情報に基づき基本エンベロープを生成し、前記変更された前記特性変化カーブを該基本エンベロープに組み合わせることによって合成エンベロープを形成するステップと、
形成された合成エンベロープを用いて、前記演奏情報に対応する楽音を生成するステップと
を具える楽音生成プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、楽音あるいは音声若しくはその他任意の音の楽音を生成する楽音生成装置及び方法に関する。特に、波形データの各種エンベロープを奏法に対応して制御させることにより、表現力豊かな楽音波形を生成する楽音生成装置及び方法に関する。この発明は、電子楽器は勿論のこと、自動演奏装置、コンピュータ、電子ゲーム装置その他のマルチメディア機器等、楽音あるいは音声若しくはその他任意の音を発生する機能を有するあらゆる分野の機器若しくは装置または方法において広範囲に応用できるものである。なお、この明細書において、楽音波形という場合、音楽的な音の波形に限るものではなく、音声あるいはその他任意の音の波形を含んでいてもよい意味合いで用いるものとする。
【０００２】
【従来の技術】
ＰＣＭ（パルス符号変調）あるいはＤＰＣＭ（差分ＰＣＭ）又はＡＤＰＣＭ（適応差分ＰＣＭ）等の任意の符号化方式で符号化した1又は複数周期の波形データを波形メモリに記憶しておき、これを所望のピッチに対応して繰り返し読み出すことによって適宜の楽音波形を生成するようにした、いわゆる「波形メモリ読み出し」技術は既に公知であり、また、様々なタイプの「波形メモリ読み出し」技術が知られている。こうした「波形メモリ読み出し」技術を用いた音源においては、単にメモリに記憶した波形データをそのまま読み出したものを楽音として出力するだけでなく、読み出した波形データを音高、音量、音色などの楽音要素毎に制御することによって、表現力豊かな楽音波形を生成することが従来から行われている。こうした音源において波形制御を行うものとして、例えば音源に内蔵されるピッチＥＧやアンプ（振幅）ＥＧあるいはフィルタＥＧなどの各種ＥＧ（Envelope Generator）がある。ピッチＥＧは音高（つまりピッチ）に関するピッチエンベロープを制御するものであり、任意のピッチエンベロープに従って波形データの読み出し速度を適宜に変更することによって、ピッチが経時変化する楽音波形を生成する。アンプＥＧは音量に関する所要のエンベロープ波形（つまり音量振幅エンベロープ）を形成し、読み出した波形データに該音量振幅エンベロープを付与することによって、発音開始から終了までの音量を制御する。また、フィルタＥＧは音色制御用のフィルタ特性を制御するものであり、読み出した波形データをその特性がフィルタＥＧで制御されたフィルタにより処理することによって、音色が経時変化する楽音波形を生成する。
【０００３】
上述した各種ＥＧ以外に波形制御を行うものとして、曲中で演奏の抑揚（例えば、expression（エクスプレッション）、Pitch bend（ピッチベンド）、Modulation depth（モジュレーションデプス）、Modulation Speed（モジュレーションスピード）など）を変化させたい適宜の時間にユーザがその都度所定の操作子等（例えば、expression pedal（イクスプレッションペダル）、bend wheel（ベンドホイール）、modulation wheel（モジュレーションホイール）など）を操作することによって、音高・音量・音色等を連続的に変化するように制御を行うコンティニュアス・コントロールが従来から知られている。このコンティニュアス・コントロールにより設定された各種の制御値はシーケンサに記憶することができ、また記憶した各種の制御値をシーケンサ上で適宜に編集することができる。この他にも、シーケンサが独自機能として提供する奏法テンプレート機能による波形制御が従来から知られている。これは、音楽記号を指定すると、予め用意されている各音楽記号に対応するマクロパターンデータ（若しくは奏法テンプレートとも呼ぶ）を楽曲データに付加することによって、音高・音量・音色等を制御するものである。奏法テンプレートが用意される音楽記号としては、例えば強弱記号（例えばクレッシェンド、ディミニュエンド、ピアノ、メゾ・フォルテなど）や終止記号（例えばフェルマータなど）や速度変化記号（例えばアッチェレランド、リタルダンドなど）、あるいは演奏・奏法記号（例えばグリッサンド、ポルタメント、チョーキング、トレモロ、スタッカート、アクセントなど）などがある。さらに波形制御を行うものとして、１音の立ち上がりから立下りまでの全発音期間にわたる楽音のピッチ変調波形を予め複数記憶しておき（例えばアタックピッチ、ビブラート、ポルタメントなどに関してのピッチ変調波形）、オンされているピッチ変調波形のみを合成して、合成されたピッチ変調波形に基づき楽音の音高（つまりピッチ）を変更することによって制御を行うようにしたものが、本出願人により既に出願済みである（特開昭60−60693号）。
【０００４】
【発明が解決しようとする課題】
しかし、上述したような各種の波形制御に従って楽音波形を生成するものは、以下の点においてそれぞれ問題がある。すなわち、各種ＥＧによる波形制御においては、１音の立ち上がり立下りなどの１音単位の制御を行うのが普通であるために、フレーズ単位（例えば１小節単位など）における波形の緩やかな変化等をうまく制御することができない、という問題点がある。コンティニュアス・コントロールによる波形制御においては、コンティニュアス・コントロールは演奏される音符とは独立した制御であるために、音のアタック部といった所定の部分区間についてのみ制御を行ったり、１音や１つのフレーズについてのみ制御を行ったりすることが困難である、という問題点がある。シーケンサの奏法テンプレート機能による波形制御においては、全ての奏法テンプレートが同じ時間長さを持つものである（つまり、時間長さで階層化されたテンプレートを複数用いて変化カーブを合成するようなものではない）ために、所望の部分区間毎に表現を変えたいような場合に用いることができず柔軟性がない、という問題点がある。また、奏法テンプレートはコンティニュアス・コントロールを生成するものであるため、複数エレメントからなるボイス（音色波形）を制御する場合にはエレメント毎に個性ある奏法を付与することができない、という問題点もある。全発音期間にわたる楽音のピッチ変調波形による波形制御においては、オンオフできるピッチ変調波形はそれぞれ１音の立ち上がりから立下りまでの１音全体について制御を行うものであり、アタック部だけの制御とかフレーズにわたっての制御を行うことができない、という問題点がある。
このように、従来知られた音源のほとんどは１音内の所定区間毎に多くの変化をする楽音を生成するための波形制御や、複数の音にわたって適宜に変化する楽音を生成するための波形制御を行うことは非常に難しいことであった。
【０００５】
本発明は上述の点に鑑みてなされたもので、１音単位での波形制御だけでなく、１音内における部分的区間に対しての波形制御、あるいは複数の音にわたっての波形制御を簡単に行いながら楽音を生成することのできる楽音生成装置及び方法を提供しようとするものである。例えば、１フレーズ内あるいは１音内における一部区間に付与すべき特性変化カーブからなるテンプレートを選択的に用いて合成したエンベロープに従って楽音波形を生成する際に、選択された各テンプレートの特性変化カーブの形状をレベルや時間長さなどにより変更できるようにすることで、ユーザが一部区間毎に楽音波形を適宜にコントロールしながら生成できるようにした楽音生成装置及び方法に関する。
【０００６】
【課題を解決するための手段】
本発明に係る楽音生成装置は、演奏情報を供給する演奏情報供給手段と、特性変化カーブを表すセグメントテンプレートを供給するセグメントテンプレート供給手段と、前記演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの前記特性変化カーブを変更する変更手段と、前記演奏情報に基づき基本エンベロープを生成し、前記変更手段により変更された前記特性変化カーブを該基本エンベロープに組み合わせることによって合成エンベロープを形成するエンベロープ合成手段と、形成された合成エンベロープを用いて、前記演奏情報に対応する楽音を生成する楽音生成手段とを具える。
【０００７】
この発明によれば、演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの特性変化カーブを変更することができ、該変更した特性変化カーブを演奏情報に基づく基本エンベロープに組み合わせることによって合成エンベロープを形成し、この合成エンベロープを用いて楽音を生成するようにした。これにより、ユーザは特性変化カーブを変更するだけで、予め用意された特性変化カーブに固定されることなく、簡単により細かな制御が行われている楽音波形を生成することができるようになる。このように特性変化カーブを変更できるようにすることにより、変化に富んだ細かなエンベロープ制御を容易に行なうことができる。また、セグメントテンプレートに含まれる位置情報に従って該セグメントテンプレートを時間軸上に配置するので、該位置情報に基づき時間軸上へのセグメントテンプレートの配置を容易に行うことができる。更には、セグメントテンプレート毎に格別に位置情報を含むようになっているが故に、個々のセグメントテンプレートにつき、その特性変化カーブにおける任意の中間位置に対応付けて位置情報をもたせることができ、従来にない、多様な態様で、合成エンベロープを形成することができる。
【０００８】
本発明は、装置の発明として構成し実施することができるのみならず、方法の発明として構成し実施することができる。また、本発明は、コンピュータまたはＤＳＰ等のプロセッサのプログラムの形態で実施することができるし、そのようなプログラムを記憶した記憶媒体の形態で実施することもできる。
【０００９】
【発明の実施の形態】
以下、この発明の実施の形態を添付図面に従って詳細に説明する。
【００１０】
図１は、この発明に係る楽音生成装置のハードウエア構成例を示すブロック図である。ここに示されたハードウエア構成例はコンピュータを用いて構成されており、そこにおいて、楽音生成処理は、コンピュータがこの発明に係る楽音生成処理を実現する所定のソフトウエア・プログラムを実行することにより実施される。勿論、この楽音生成処理はコンピュータソフトウエアの形態に限らず、ＤＳＰ（Digital Signal Processor）によって処理されるマイクロプログラムの形態でも実施可能であり、また、この種のプログラムの形態に限らず、ディスクリート回路又は集積回路若しくは大規模集積回路等を含んで構成された専用ハードウエア装置の形態で実施してもよい。また、この楽音生成装置は、電子楽器あるいはカラオケ装置又は電子ゲーム装置又はその他のマルチメディア機器又はパーソナルコンピュータ等、任意の製品応用形態をとっていてよい。
なお、上記した楽音生成装置はこれら以外のハードウェアを有する場合もあるが、ここでは必要最小限の資源を用いた場合について説明する。
【００１１】
図１に示されたハードウエア構成例においては、コンピュータのメイン制御部としてのＣＰＵ１に対して、バスラインＢＬ（データあるいはアドレスバス等）を介してリードオンリメモリ（ＲＯＭ）２、ランダムアクセスメモリ（ＲＡＭ）３、入力装置４、表示装置５、ドライブ６、波形取込部７、音源部８、ハードディスク９、入出力インターフェース１０がそれぞれ接続されている。ＣＰＵ１は、「楽音生成処理」（後述する図２参照）などの各種処理を所定のプログラムに基づいて実行する。これらのプログラムは、入出力インターフェース１０を介した通信ネットワークに接続された外部の電子楽器、あるいはドライブ６に装着されたＣＤやＭＯ等の外部記憶メディア６Ａ等から供給されてハードディスク９に記憶される。そして、実行時にハードディスク９からＲＡＭ３にロードされる。あるいは、ＲＯＭ２にプログラムが予め記録されていてもよい。
【００１２】
ＲＯＭ２は、ＣＰＵ１により実行あるいは参照される各種プログラムや各種データ等を格納するものである。ＲＡＭ３は、ＣＰＵ１がプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを記憶するメモリとして使用されるものである。ＲＡＭ３の所定のアドレス領域がそれぞれの機能に割り当てられ、レジスタやフラグ、テーブル、メモリなどとして利用される。入力装置４は、楽音をサンプリングする指示やサンプリングされた波形データのエディット（つまり波形制御）や該波形制御の際に用いる各種セグメント・テンプレートの選択（詳しくは後述する）、あるいは各種情報の入力等を行うための各種の操作子を含んで構成される。例えば、各種セグメント・テンプレート選択用のスイッチや、数値データ入力用のテンキー、文字データ入力用のキーボード、あるいはマウス等のポインティングデバイスなどである。この他にも音高、音色、効果等を選択・設定・制御するための各種操作子を含んでいてよい。表示装置５は、入力装置４により入力された各種情報、サンプリングされた波形データや波形制御後の波形データ、あるいは各種セグメント・テンプレート等を表示する、例えば液晶表示パネル（ＬＣＤ）やＣＲＴ等のディスプレイである。
【００１３】
波形取込部７は図示しないＡ／Ｄ変換器を内蔵し、例えばマイクロフォンなどから外部波形入力されたアナログ楽音信号をサンプリングしてデジタルデータに変換し、該デジタルデータをオリジナル波形データ（つまり、生成すべき楽音波形の素材となる波形データ）としてハードディスク９上に取り込む。該取り込まれたオリジナル波形データは、所定の処理に従ってベクトルデータ及び奏法モジュールとして、それぞれ「波形データベース」と「奏法データベース」に記憶される。ベクトルデータは取り込んだオリジナル波形データをそのままではなく、取り込んだオリジナル波形の形状を代表する一部の波形（例えば、アタック部波形、ボディ部波形、リリース部波形、ジョイント部波形など）毎に、階層的な圧縮手法を用いてデータ圧縮した形で波形データベースに記憶したものである。奏法モジュールは、ベクトルデータを指定するためのデータと、圧縮された形で記憶されたベクトルデータを元の波形形状の波形データに戻すために必要なデータなどを具える。したがって、奏法モジュールは、Entrance（エントランス）系モジュール、Finish（フィニッシュ）系モジュール、Joint（ジョイント）系モジュール、Body（ボディ）系モジュールのいずれかとして奏法データベースに記憶される。すなわち、Entrance系モジュールはアタック部のような１音における立ち上がりの演奏区間を表すベクトルデータを指し示すものであって、Finish系モジュールはリリース部のような１音における立下りの演奏区間を表すベクトルデータを指し示すものであって、Joint系モジュールは音と音とをつなぐ演奏区間を表すベクトルデータを指し示すものであって、Body系モジュールは前記Entrance系モジュールと前記Finish系モジュールとの間の演奏区間を表すベクトルデータを指し示すものである。Entrance系、Finish系、Joint系の各奏法モジュールは奏法（若しくはアーティキュレーション）等の特徴を有する高品質な波形から生成されたベクトルデータを指し示すものであり、Body系モジュールはNSB（Normal Short Body：ノーマルショートボディ）やVB（Vibrato Body：ビブラートボディ）などといった１周期または適当な複数周期分の波形からなる比較的単調な音部分の単位波形（つまりループ波形）から生成されたベクトルデータを指し示すものである。なお、波形を形成するためのベクトルデータは、波形（timbre）ベクトル、振幅（amplitude）エンベロープベクトル、ピッチ（pitch）エンベロープベクトル、時間（time）ベクトル、などの要素で構成される。
【００１４】
音源部８は、「波形データベース」から読み出したベクトルデータを複数接続して波形合成することで一連の楽音波形を生成することができ、生成した楽音波形をサウンドシステム８Ａに送出する。この楽音生成の際に、音源部８は「セグメントデータベース」から読み出した各種セグメント・テンプレート（後述する）を用いて、１音内における一部区間に対する楽音波形の制御を行うことができるようになっている。これについての詳細は後述することから、ここでの説明を省略する。サウンドシステム８Ａでは、音源部８から出力された楽音信号をＤ／Ａ変換してアナログ信号に変換して外部に出力する。勿論、複数の楽音信号の同時出力が可能である。ハードディスク９は、各種奏法モジュールを蓄積した奏法データベースや各種セグメント・テンプレートを蓄積したセグメントデータベースやベクトルデータを蓄積した波形データベースなどの各種データベースや、前記ＣＰＵ１が実行する各種プログラム等などを記憶する記憶装置である。
なお、前記音源部８は、ソフトウエアにより楽音を生成するいわゆるソフトウエア音源により実現するようにしてもよいことは言うまでもない。
【００１５】
ドライブ６は、各種奏法モジュールや各種セグメント・テンプレートなどの各種データや、前記ＣＰＵ１が実行する各種プログラム等を記憶するための着脱可能な外部記憶メディア６Ａを駆動するものである。該ドライブ６により駆動される外部記憶メディア６Ａは、フレキシブルディスク（ＦＤ）、コンパクトディスク（ＣＤ−ＲＯＭ・ＣＤ−ＲＷ）、光磁気ディスク（ＭＯ）、あるいはＤＶＤ（Digital Versatile Disk）等の着脱自在な様々な形態の外部記憶媒体を利用するメディアであればどのようなものであってもよい。若しくは、半導体メモリなどであってもよい。各種プログラムを記憶した外部記憶メディア６Ａをドライブ６にセットした場合、その記憶内容（つまりプログラム）をハードディスク９に落とすことなく直接ＲＡＭ３にロードするようにしてもよい。なお、外部記憶メディア６Ａを用いて、あるいは入出力インターフェース１０を介してプログラムを提供するやり方は、プログラムの追加やバージョンアップ等を容易に行うことができるので好都合である。
【００１６】
入出力インターフェース１０は、例えばＬＡＮやインターネット、電話回線等の通信ネットワーク（図示せず）に接続されており、該通信ネットワークを介してサーバコンピュータ等（図示せず）と接続され、当該サーバコンピュータ等からプログラムや各種奏法モジュールや各種セグメント・テンプレート、あるいは演奏情報などを楽音生成装置側に取り込むための通信インターフェースである。すなわち、ＲＯＭ２やハードディスク９にプログラムや各種奏法モジュールや各種セグメント・テンプレートなどが記憶されていない場合に、サーバコンピュータからプログラムや各種奏法モジュールや各種セグメント・テンプレートなどをダウンロードするために用いられる。クライアントとなる楽音生成装置は、入出力インターフェース１０を介してサーバコンピュータへとプログラムや各種奏法モジュールや各種セグメント・テンプレートなどのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムや各種奏法モジュールや各種セグメント・テンプレートなどを入出力インターフェース１０を介してハードディスク９に蓄積することにより、ダウンロードが完了する。なお、入出力インターフェース１０はＭＩＤＩインターフェースであってもよく、そうした場合にはシーケンサや電子楽器などの外部ＭＩＤＩ機器との間でＭＩＤＩ演奏情報の入出力を行う。また、ＭＩＤＩインターフェースとした場合には、音楽演奏用キーボードや演奏操作機器を接続して、これらを用いてＭＩＤＩ演奏情報をリアルタイムに該楽音生成装置に対して供給するようにしてもよい。
【００１７】
上述の図１に示した楽音生成装置において、楽音生成はコンピュータが楽音生成処理を実現する所定のソフトウエア・プログラムを実行することにより実施される。あるいは、こうしたプログラムの形態に限らず、楽音生成処理を専用ハードウエア装置の形態で実施するようにしてもよい。そこで、本発明に係る楽音生成装置で実行する楽音生成処理について、図２を用いて説明する。図２は、楽音生成処理を専用ハードウエア装置の形態で構成した場合の一実施例を示すブロック図である。この図２を用いて、楽音生成処理全体の動作概要について簡単に説明する。
【００１８】
曲データ再生部１Ａは、奏法記号付き曲データの再生処理を行う。すなわち、まず最初に曲データ再生部１Ａは奏法記号付き曲データ（つまり演奏情報）を受信する。通常の楽譜においては、そのままではＭＩＤＩデータとすることができないような強弱記号（例えばクレッシェンドやデクレッシェンド等）、テンポ記号（例えばアレグロやリタルダンド等）、スラー記号、テヌート記号、アクセント記号等の音楽記号が付されている。そこで、これらの音楽記号を「奏法記号」としてデータ化する。この「奏法記号」を含むＭＩＤＩ曲データが「奏法記号付き曲データ」であり、曲データ再生部１Ａはこのような奏法記号付き曲データを受信する。楽譜解釈部（プレーヤー）１Ｂでは、楽譜解釈処理を行う。具体的には、受信した奏法記号付き曲データに含まれるＭＩＤＩデータと上記「奏法記号」を所定の奏法指定情報（例えば、奏法ＩＤと奏法パラメータ）に変換し、時刻情報とともに奏法合成部（アーティキュレーター）１Ｃに出力する。楽譜解釈部（プレーヤー）１Ｂでは奏法指定情報を生成する際に、演奏情報に基づくオリジナルなエンベロープ（これを「入力エンベロープ」または「基本エンベロープ」ということにする）を生成し、かつ、ユーザ選択あるいは自動選択処理に従ってセグメントデータベースから読み出された各種セグメント・テンプレートとこの「入力エンベロープ」（すなわち「基本エンベロープ」）とを加算して合成エンベロープを生成し、該生成した合成エンベロープを奏法合成部（アーティキュレーター）１Ｃに奏法パラメータとして出力する。一般的に、同じ音楽記号でも演奏者や楽器により該音楽記号の解釈が異なって、演奏者毎や楽器毎に異なった演奏方法（すなわち、奏法若しくはアーティキュレーション）で演奏が行われることがある。あるいは、音符の並び方等によっても、演奏者毎や楽器毎に異なった演奏方法で演奏が行われることもある。そこで、そのような楽譜上の記号（音楽記号や音符の並び方等）を解釈する知識をエキスパートシステム化したものが楽譜解釈部１Ｂであり、楽譜解釈部１Ｂは所定の基準に従った解釈を楽譜に対して行う。この際に、楽譜解釈部１Ｂは、ユーザからのプレーヤー指定（例えば、誰の演奏かあるいはどの楽器かなどの指定）に応じて、楽譜の解釈方法を異ならせて楽譜を解釈する。こうした複数プレーヤーに対応した異なる楽譜解釈方法の１つとして、セグメントデータベースに複数の各種セグメント・テンプレートが蓄積されており、楽譜解釈部１Ｂはユーザからのプレーヤー指定あるいは楽器指定に応じて用いるべきセグメント・テンプレートを決定する。
【００１９】
奏法合成部（アーティキュレーター）１Ｃは楽譜解釈部（プレーヤー）１Ｂにより変換された所定の奏法指定情報（奏法ＩＤと奏法パラメータ）に基づいて奏法データベースを参照して、該奏法指定情報に応じたパケットストリーム及び奏法パラメータに応じた該ストリームに関するベクトルパラメータを生成し、波形合成部１Ｄに供給する。パケットストリームとして波形合成部１Ｄに供給されるデータは、ベクトルＩＤ、時刻情報等である。この際に、奏法合成部（アーティキュレーター）１Ｃでは、所定の奏法指定情報に基づき奏法データベースから奏法モジュールを読み出し、該奏法モジュールを時間軸上に配置してパケットストリームを生成し、時間軸上に配置した奏法モジュールに対して楽譜解釈部（プレーヤー）１Ｂにより生成された合成エンベロープを配分する。奏法モジュールはハードディスク９上の「奏法データベース」に記憶されており、例えば１つの奏法モジュールは「奏法ＩＤ」によって特定される。「奏法ＩＤ」に応じて特定された所定の奏法モジュールの内容は、該奏法モジュールに対応する波形データを特徴付ける若しくは制御する奏法パラメータとして与えられる。波形合成部１Ｄは生成されたパケットストリームに応じて波形データベースからベクトルデータを順次に取り出し、該ベクトルデータをベクトルパラメータに応じて変形し、変形した各ベクトルデータを波形接続し、該接続した一連のベクトルデータに基づいて任意の楽音波形を生成する。サウンドシステム８Ａでは、生成した楽音波形に基づき楽音を出力する。
【００２０】
ここで、上述した楽譜解釈部（プレーヤー）１Ｂが入力エンベロープを合成する際に用いるセグメント・テンプレートについて、図３を参照しながら説明する。図３はセグメント・テンプレートのデータ構成の一実施例を示した概念図であり、図３（ａ）はNote（ノート）セグメント・テンプレートを示す。図３（ｂ）はEntranceセグメント・テンプレートを指定するテーブル、図３（ｃ）はFinishセグメント・テンプレートを指定するテーブルの一実施例を示したものである。これらの各セグメント・テンプレートは、テーブル化された「セグメントデータベース」としてそれぞれハードディスク９などに予め記憶されている。勿論、これらの実施例は一例であり、これに限られないことは言うまでもない。
【００２１】
Noteセグメント・テンプレート（以下、単にNoteセグメントと呼ぶ）は１音全体の抑揚を表現するために用いる制御データであり、図３(ａ)に示すように、Noteセグメントはハードディスク９上にテーブル化されて構成される。テーブルを構成する１つ１つのNoteセグメントは、１音全体に付与すべき特性変化カーブからなる。すなわち、１つ１つのNoteセグメントは所定のテーブル番号毎に所定形状の特性変化カーブを持つデータである。各Noteセグメントは、それぞれが持つ特性変化カーブの形状にあわせていくつかのタイプ別に分類される。例えば、この実施例では大きく６つのタイプ別に分類されている。すなわち、テーブル番号０〜７まではほぼ真っ直ぐな形状の特性変化カーブを持つNoteセグメント、テーブル番号８〜１５までは右肩上がりの形状の特性変化カーブを持つNoteセグメント、テーブル番号１６〜２３までは右肩下がりの形状の特性変化カーブを持つNoteセグメント、テーブル番号２４〜３１までは山型の形状の特性変化カーブを持つNoteセグメント、テーブル番号３２〜３９までは谷型の形状の特性変化カーブを持つNoteセグメント、テーブル番号４０〜４７までは飛ばし型の形状の特性変化カーブを持つNoteセグメントである。
【００２２】
こうしたタイプ別に分類された各々のNoteセグメントは、それぞれのタイプに属する特徴的な形状の特性変化カーブをもつ。例えば、右肩上がりタイプに分類されたテーブル番号８のNoteセグメントは一定の傾きで右肩上がりの特性変化カーブを持つデータであるし、テーブル番号９のNoteセグメントは前半部分の傾斜に比較して後半部分から傾斜が急に右肩上がりとなる特性変化カーブを持つデータである。また、山型タイプに分類されたテーブル番号２４のNoteセグメントは前半部分に山型のピークがある特性変化カーブを持つデータであるし、テーブル番号２５のNoteセグメントは中央部分に山型のピークがある特性変化カーブを持つデータである。なお、この実施例におけるテーブル番号０のNoteセグメントはデフォルトで用いられるデータとして設定されるものであり、該Noteセグメントはその形状が完全なフラット形状である。つまり、テーブル番号０のNoteセグメントを入力エンベロープを変更する際に用いた場合には、オリジナルの入力エンベロープ波形が再現されることになる。
なお、図示しないPhraseセグメント・テンプレートは１つのフレーズ（例えば、１小節など）の抑揚を表現するために用いる制御データであり、上記Noteセグメント・テンプレートとは時間長が異なるだけのものであって、その他のデータ構成及び特性変化カーブ形状などは上記Noteセグメント・テンプレートと類似であることから説明を省略する。
【００２３】
他方、Entranceセグメント・テンプレート及びFinishセグメント・テンプレート（以下、単にEntranceセグメント及びFinishセグメント）は、上述のNoteセグメント・テンプレートと比較してその時間長が短いデータであり、Entranceセグメントは１音の鳴り始め部分の所定区間における抑揚を表現するため、Finishセグメントは１音の鳴り終わり部分の所定区間における抑揚を表現するために用いる制御データであり、Entranceセグメント及びFinishセグメントは上述したNoteセグメントと同様にハードディスク９上にテーブル化されて構成される。テーブルを構成する１つ１つのEntranceセグメントは、１音内における鳴り初めの所定区間に付与すべき特性変化カーブと位置データ（詳しくはノートオンタイミング）とからなるデータである。一方、テーブルを構成する１つ１つのFinishセグメントは、１音内における鳴り終わりの所定区間に付与すべき特性変化カーブと位置データ（詳しくはノートオフタイミング）とからなるデータである。すなわち、１つ１つのEntranceセグメント及びFinishセグメントは、所定のテーブル番号毎に所定形状の特性変化カーブ（図示省略）を持つデータである。前記位置データは、Entranceセグメント及びFinishセグメントにおける各特性変化カーブの形状に応じた位置に設定されるデータである。例えば、Entranceセグメントにおいて、立ち上がりがゆっくりである音の場合における位置データはEntranceセグメントの後半よりの適宜の位置に設定されるし、立ち上がりが急である音の場合における位置データはEntranceセグメントの前半よりの適宜の位置に設定される。このように位置データを設定すると、Entranceセグメント及びFinishセグメントをそれぞれノートオン付近やノートオフ付近の時間軸上に配置することができ（後述する図６に示す各セグメント・テンプレートの時間軸上への配置参照）、これによりユーザがアタック音やリリース音などを感じる適切な位置でアタック音やリリース音などを発生させることができるようになっている。
【００２４】
Entranceセグメントが持つ特性変化カーブは、Entranceセグメントにおいては音価（４分音符以下・２分音符以下・全音符以下・全音符以上）、前音との関係（Finish・Joint）及び引っ掛けの強さ（強・中・弱・スラー）によって指定される。引っ掛けの強さとは、バイオリンなどの弦楽器でいえば弓を弾き始める時に弦の上に弓を置く強さ、サックスなどの管楽器でいえばタンギングの強さ、ピアノなどの鍵盤楽器でいえば押鍵の強さを表す。図３（ｂ）に示した実施例において、例えばEntranceセグメントを適用する対象となる音価が「４分音符以下」であり、前音との関係が「Joint」であり、引っ掛けの強さが「中」であるような場合には、テーブル番号６８のEntranceセグメントが適用するEntranceセグメントとして選択されることになる。一方、Finishセグメントが持つ特性変化カーブは、音価（４分音符以下・２分音符以下・全音符以下・全音符以上）、後音との関係（Entrance・Joint）及びタイプ（ねっとり・ふつう・あっさり・スラー）によって指定される。図３(ｃ)に示した実施例において、例えばFinishセグメントを適用する対象となる音価が「全音符以下」であり、後音との関係が「Entrance」であり、タイプが「あっさり」であるような場合には、テーブル番号４８のFinishセグメントが適用するFinishセグメントとして選択されることになる。なお、Noteセグメント・テンプレートと同様に、Entranceセグメント・テンプレート及びFinishセグメント・テンプレートにおいても、それらテーブル番号０のEntrance及びFinishセグメントはデフォルトで用いられるデータとして設定されるものであり、該テーブル番号０のEntrance及びFinishセグメントを入力エンベロープを変更する際に用いた場合には、オリジナル波形が再現されることになる。
【００２５】
これらPhrase／Note／Entrance／Finishの各セグメント・テンプレートは、dynamics（持続的演奏強度）／Pitch（ピッチ）／vibrato depth（ビブラートデプス）／vibrato Speed（ビブラートスピード）の各特性変化カーブをセットで持つ。ただし、上述した実施例では説明を簡単にするために、代表としてdynamicsに関してのセグメント・テンプレートのみを示した。すなわち、図３（ａ）はdynamicsを制御する特性変化カーブを例示的に示したものであり、このdynamicsに関する各セグメント・テンプレートに対応するようにして、各テーブル番号毎に図示を省略したPitch／vibrato depth／vibrato Speedに関する各セグメント・テンプレートが予めテーブル化されてハードディスク９上に記憶されている。Phrase／Note／Entrance／Finishの各セグメント・テンプレートがそれぞれdynamics／Pitch／vibrato depth／vibrato Speedの各特性変化カーブの計４種をセットで持つことによって、dynamicsを徐々に上げながらPitchを下げるといった、異なる楽音要素のエンベロープを相互に関連づけながら制御すること、を同時に行うことができるようになっている。こうしたdynamics／Pitch／vibrato depth／vibrato Speedに関する各特性変化カーブをセットで持つPhrase／Note／Entrance／Finishの各セグメント・テンプレートを、この実施例ではＳＡＴ（Segment Articulation Template）と呼び、こうしたＳＡＴを１奏者毎あるいは１楽器毎にそれぞれセグメントデータベースに記憶する。こうすると、同じテーブル番号のＳＡＴを指定しても奏者毎あるいは楽器毎に異なるＳＡＴを用いることができるし、また、Phrase／Note／Entrance／Finishの各セグメント・テンプレートを指定するだけでdynamics／Pitch／vibrato depth／vibrato Speedの各特性変化カーブを全て同時に指定することができることから、１つ１つをわざわざ指定しなくてよく便利である。
【００２６】
上述したように、Phrase／Note／Entrance／Finishの各セグメント・テンプレートは時間長毎に階層的に構成されているデータであり、これらの各セグメント・テンプレートを適宜に組み合わせて、演奏情報が所持するオリジナルなエンベロープである入力エンベロープと合成することで、フレーズ毎や１音毎における細やかなエンベロープ制御を行うことができる。すなわち、本発明に係る楽音生成装置では、Phraseセグメント及びNoteセグメントを重ねて用いることによって各特性変化カーブを入力エンベロープと合成し、該合成エンベロープに基づいてフレーズ毎及び１音１音毎に波形制御を行い任意の楽音波形を生成する。また、EntranceセグメントをNoteセグメントの開始部分の所定区間に、FinishセグメントをNoteセグメントの終了部分の所定区間にそれぞれ重ねて用いることによって各特性変化カーブを入力エンベロープと合成し、該合成エンベロープに基づいて１音内における所定の部分区間毎に波形制御を行い任意の楽音波形を生成する。すなわち、異なる時間長さからなる階層的構造のセグメント・テンプレートを適宜に組み合わせて用いることで、フレーズ毎及び１音１音毎に、あるいは１音内における所定区間毎に波形制御を行うことができ、これにより微妙な変化のある楽音波形を生成することができるようになっている。そこで、こうしたセグメント・テンプレートによる波形制御について、具体例を用いて説明する。
【００２７】
まず、各セグメント・テンプレートの決定処理について説明する。Phrase及びNoteセグメント・テンプレートは、ユーザ選択に従って決定される。Phraseセグメント・テンプレートの場合、Phraseセグメント・テンプレートを使用する指定があった後の所定演奏区間毎における最初（同時刻を含む）のノートオンイベントデータから始まる所定演奏区間に対してのみ該Phraseセグメント・テンプレートは有効であることから、ユーザは各演奏区間毎に用いるべきPhraseセグメント・テンプレートを適宜に選択する。こうした選択が行われなかった所定演奏区間に対しては、デフォルトとして予め決められたPhraseセグメント・テンプレートを使用する。一方、Noteセグメント・テンプレートの場合、Noteセグメント・テンプレートを使用する指定があった後の最初（同時刻を含む）のノートオンイベントデータから始まる１音に対してのみ該Noteセグメント・テンプレートは有効であることから、ユーザは１音１音の各音毎に用いるべきNoteセグメント・テンプレートを適宜に選択する。こうした選択が行われなかった１音に対しては、デフォルトとして予め決められたNoteセグメント・テンプレートを使用する。例えば、上述の図３(ａ)に示すようなテーブル番号０の完全なフラット形状の特性変化カーブを持つNoteセグメント・テンプレートがデフォルトとして決められている場合には、該Noteセグメント・テンプレートを使用する。
【００２８】
他方、Entrance及びFinishセグメント・テンプレートは１音毎に、ユーザ選択が行われている場合には該選択に従って決定され、ユーザ選択が行われていない場合には所定の処理に従って自動的に決定される。そこで、こうしたEntrance及びFinishセグメント・テンプレートの決定処理について、図４及び図５を用いて説明する。Entranceセグメント・テンプレートを決定する処理について、図４を用いて説明する。図４は、「Entranceセグメント・テンプレート自動決定処理」の一実施例を示すフローチャートである。
【００２９】
ステップＳ１では、Entranceセグメント・テンプレートがテーブル番号等により選択的に指定されているか否かを判定する。Entranceセグメント・テンプレートが指定されている場合には（ステップＳ１のＹＥＳ）、指定されたテーブル番号等に従うEntranceセグメント・テンプレートに決定する（ステップＳ２）。Entranceセグメント・テンプレートが指定されていない場合には（ステップＳ１のＮＯ）、該NoteにおいてEntranceセグメント・テンプレートが必要でないか否か、つまり音の立ち上がり区間に対する制御を行う必要がないか否かを判定する（ステップＳ３）。Entranceセグメント・テンプレートが必要でない、つまり該NoteにおいてEntranceセグメント・テンプレートによる波形制御を行う必要がない場合には（ステップＳ３のＮＯ）、テーブル番号０のEntranceセグメント・テンプレート（つまりＳＡＴなし）に決定する（ステップＳ４）。すなわち、この場合には特性変化カーブが「フラット」であるEntranceセグメント・テンプレートに決定することから、音の立ち上がり区間に対する制御が行われないこととなる。一方、Entranceセグメント・テンプレートが必要である、つまり該NoteにおいてEntranceセグメント・テンプレートによる波形制御を行う必要がある場合には（ステップＳ３のＹＥＳ）、Entranceセグメント・テンプレートの自動選択を実行するように設定されたか否かを判定する（ステップＳ５）。自動選択を実行するように設定されていなかった場合には（ステップＳ５のＮＯ）、テーブル番号０のEntranceセグメント・テンプレート（つまりＳＡＴなし）に決定する（ステップＳ４）。自動選択を実行するように設定されていた場合には（ステップＳ５のＹＥＳ）、前の音（Note）との関係がジョイントであるか否かを判定する（ステップＳ６）。前の音との関係がジョイントでない場合には（ステップＳ６のＮＯ）、テーブルにおける前音との関係を「Finish」に設定する（ステップＳ９）。前の音との関係がジョイントである場合には（ステップＳ６のＹＥＳ）、さらに前の音との関係がスラーであるか否かを判定する（ステップＳ７）。前の音との関係がスラーでない場合には（ステップＳ７のＮＯ）、テーブルにおける前音との関係を「Joint」に設定する（ステップＳ１０）。前の音との関係がスラーである場合には（ステップＳ７のＹＥＳ）、テーブル番号１のEntranceセグメント・テンプレート（つまり、スラー制御を行うデータ）に決定する（ステップＳ８）。
【００３０】
ステップＳ１１では、Entranceセグメント・テンプレートの引っ掛けが自動選択であるか否かを判定する。Entranceセグメント・テンプレートの引っ掛けが自動選択である場合には（ステップＳ１１のＹＥＳ）、演奏強度（特にMIDIデータの場合には音のベロシティ）に従ってEntranceセグメント・テンプレートの引っ掛けを決定する（ステップＳ１３）。Entranceセグメント・テンプレートのタイプが自動選択でない場合には（ステップＳ１１のＮＯ）、予めユーザが選択したEntranceセグメント・テンプレートの引っ掛けに決定する（ステップＳ１４）。ステップＳ１２では、Entranceセグメント・テンプレートの長さが自動選択であるか否かを判定する。Entranceセグメント・テンプレートの長さが自動選択である場合には（ステップＳ１２のＹＥＳ）、音の長さに従ってEntranceセグメント・テンプレートの長さを決定する（ステップＳ１５）。Entranceセグメント・テンプレートの長さが自動選択でない場合には（ステップＳ１２のＮＯ）、予めユーザが選択したEntranceセグメント・テンプレートの長さに決定する（ステップＳ１６）。こうして決定されたテーブルにおける前音との関係（ステップＳ９及びＳ１０参照）、Entranceセグメント・テンプレートのタイプ（ステップＳ１３及びＳ１４参照）、Entranceセグメント・テンプレートの長さ（ステップＳ１５及びＳ１６参照）に従い、上述の図３（ｂ）に示したようなEntranceセグメント・テンプレートに関するテーブルを参照することで、各Noteにおける音の立ち上り区間の波形制御に用いるべきEntranceセグメント・テンプレートを決定する。
【００３１】
Finishセグメント・テンプレートを決定する処理について、図５を用いて説明する。図５は、「Finishセグメント・テンプレート自動決定処理」の一実施例を示すフローチャートである。
【００３２】
ステップＳ２１では、ユーザによりFinishセグメント・テンプレートがテーブル番号で選択的に指定されているか否かを判定する。Finishセグメント・テンプレートが指定されている場合には（ステップＳ２１のＹＥＳ）、指定されたテーブル番号に従うFinishセグメント・テンプレートに決定する（ステップＳ２２）。Finishセグメント・テンプレートが指定されていない場合には（ステップＳ２１のＮＯ）、該NoteにおいてFinishセグメント・テンプレートが必要でないか否か、すなわち音の立下り区間に対する制御を行う必要がないか否かを所定パラメータに従って判定する（ステップＳ２３）。Finishセグメント・テンプレートが必要でない、つまり該NoteにおいてFinishセグメント・テンプレートによる波形制御を行う必要がない場合には（ステップＳ２３のＮＯ）、テーブル番号０のFinishセグメント・テンプレート（つまりＳＡＴなし）に決定する（ステップＳ２４）。すなわち、この場合には特性変化カーブが「フラット」であるFinishセグメント・テンプレートに決定することから、音の立下り区間に対する制御が行われないこととなる。一方、Finishセグメント・テンプレートが必要である、つまり該NoteにおいてFinishセグメント・テンプレートによる波形制御を行う必要がある場合には（ステップＳ２３のＹＥＳ）、Finishセグメント・テンプレートの自動選択を実行するように設定されているか否かを判定する（ステップＳ２５）。自動選択を実行するように設定されていない場合には（ステップＳ２５のＮＯ）、テーブル番号０のFinishセグメント・テンプレート（つまりＳＡＴなし）に決定する（ステップＳ２４）。自動選択を実行するように設定されている場合には（ステップＳ２５のＹＥＳ）、次の音（Note）との関係がジョイントであるか否かを判定する（ステップＳ２６）。次の音との関係がジョイントでない場合には（ステップＳ２６のＮＯ）、テーブルにおける後音との関係を「Entrance」に設定する（ステップＳ２９）。次の音との関係がジョイントである場合には（ステップＳ２６のＹＥＳ）、次の音との関係がスラーであるか否かを判定する（ステップＳ２７）。次の音との関係がスラーでない場合には（ステップＳ２７のＮＯ）、テーブルにおける後音との関係を「Joint」に設定する（ステップＳ３０）。次の音との関係がスラーである場合には（ステップＳ２７のＹＥＳ）、テーブル番号１のFinishセグメント・テンプレート（つまり、スラー制御を行うデータ）に決定する（ステップＳ２８）。
【００３３】
ステップＳ３１では、Finishセグメント・テンプレートのタイプが自動選択であるか否かを判定する。Finishセグメント・テンプレートのタイプが自動選択である場合には（ステップＳ３１のＹＥＳ）、音のベロシティに従ってFinishセグメント・テンプレートのタイプを決定する（ステップＳ３３）。Finishセグメント・テンプレートのタイプが自動選択でない場合には（ステップＳ３１のＮＯ）、予めユーザが選択したFinishセグメント・テンプレートのタイプに決定する（ステップＳ３４）。ステップＳ３２では、Finishセグメント・テンプレートの長さが自動選択であるか否かを判定する。Finishセグメント・テンプレートの長さが自動選択である場合には（ステップＳ３２のＹＥＳ）、音の長さに従ってFinishセグメント・テンプレートの長さを決定する（ステップＳ３５）。Finishセグメント・テンプレートの長さが自動選択でない場合には（ステップＳ３２のＮＯ）、予めユーザが選択したFinishセグメント・テンプレートの長さに決定する（ステップＳ３６）。こうして決定されたテーブルにおける前音との関係（ステップＳ２９及びＳ３０参照）、Finishセグメント・テンプレートのタイプ（ステップＳ３３及びＳ３４参照）、Finishセグメント・テンプレートの長さ（ステップＳ３５及びＳ３６参照）に従い、上述の図３（ｃ）に示したようなFinishセグメント・テンプレートに関するテーブルを参照することで、各Noteにおける音の立下り区間の波形制御に用いるべきFinishセグメント・テンプレートを決定する。
【００３４】
以上のように、Entrance／Finishの各セグメント・テンプレートはユーザによる指定が行われていない場合には、前後の隣り合う音（Note）との接続シーケンス関係を基準として、あるいは該セグメント・テンプレートを適用する区間における強度を基準として、あるいは該セグメント・テンプレートを適用する区間における音長を基準として自動的に選択される。なお、セグメント・テンプレートの自動選択基準はこれらに限定されることなく、そのセグメント・テンプレートを適用する区間における音高を基準としてもよい。このように、ユーザがセグメント・テンプレートを選択していない場合には波形制御に用いるべきセグメント・テンプレートを自動的に決定するようにしたことから、ユーザはわざわざ曲全体にわたって１音１音毎にEntrance／Finishの各セグメント・テンプレートを選択しなくてもよい。これにより、ユーザは効率的な波形制御を行うことができるようになる。
【００３５】
上述のようにして、ユーザ選択あるいは自動処理により波形制御に用いるべき各セグメント・テンプレートが決定されると、次に、該決定された各セグメント・テンプレートを時間軸上に配置し、配置した各セグメント・テンプレートと入力エンベロープとを合成する。そして、合成した結果のエンベロープを各モジュールに適用することによって波形制御を行い、任意の楽音波形を生成する。そこで、上記決定済みの各セグメント・テンプレートの時間軸上への配置及び配置した各セグメント・テンプレートに基づいて行われる入力エンベロープの合成について、図６及び図７を用いて説明する。ただし、以下の説明では、１音（Note）に対してのEntrance／Finish／Noteの各セグメント・テンプレートの配置及び入力エンベロープとの合成について説明する。すなわち、こうした処理は各音毎に行われるものである。
【００３６】
まず、各セグメント・テンプレートの時間軸上への配置について説明する。図６は、各セグメント・テンプレートの時間軸上への配置について説明するための概念図である。図６（ａ）はEntranceセグメント・テンプレート及びFinishセグメント・テンプレートの時間軸上への配置について説明するための概念図であり、図６（ｂ）はNoteセグメント・テンプレートの時間軸上への配置について説明するための概念図である。
【００３７】
図６（ａ）に示すように、まずEntranceセグメント・テンプレート及びFinishセグメント・テンプレートを時間軸上に配置する。Entranceセグメント・テンプレートに予め設定されているノートオンタイミングをノートオンイベント（Note On）に一致させることによって、Entranceセグメント・テンプレートをノートオン付近の時間軸上に配置する。一方、Finishセグメント・テンプレートに予め設定されているノートオフタイミングをノートオフイベント（Note Off）に一致させることによって、Finishセグメント・テンプレートをノートオフ付近の時間軸上に配置する。この際に、Entrance／Finishの各セグメント・テンプレートの時間長を所定のタイムコントロールパラメータなどを用いて拡大縮小することにより、各セグメント・テンプレートにおける特性変化カーブの形状を時間軸方向に伸ばしたり縮めたりすることができる。このタイムコントロールパラメータなどを用いてのEntrance／Finishの各セグメント・テンプレートの時間長の拡大縮小は、ノートオンタイミングあるいはノートオフタイミングを中心として拡大縮小する。例えば、Entrance／Finishの各セグメント・テンプレートにおけるノートオンタイミングあるいはノートオフタイミングよりも前半部分をプレタイム（Pre Time）、後半部分をポストタイム（Post Time）とした場合には、こうしたプレタイム及びポストタイムを別々にコントロールするようにして、Entrance／Finishの各セグメント・テンプレートの前半部分又は後半部分を別々に拡大縮小することができる。このようにユーザが時間長を適宜に編集できるようにすることにより、配置した各セグメント・テンプレートを時間軸方向にカスタマイズして、ユーザ所望の区間に対してEntrance／Finishの各セグメント・テンプレートを適用することができるようになる。
【００３８】
Entrance及びFinishの各セグメント・テンプレートの時間軸上への配置が終了すると、次に、図６（ｂ）に示すように、既に配置されたEntrance及びFinishの各セグメント・テンプレートに基づいてNoteセグメント・テンプレートを配置する。このNoteセグメント・テンプレートの配置は、Noteセグメント・テンプレートの開始位置をEntranceセグメント・テンプレートの開始点に、Noteセグメント・テンプレートの終了位置をFinishセグメント・テンプレートの終了点にそれぞれ一致するようにして行われる。すなわち、Noteセグメント・テンプレートに対しては、既に配置されたEntranceセグメント・テンプレートの開始点からFinishセグメント・テンプレートの終了点までの時間長にあわせて時間長の拡大縮小が行われる。こうして、Entrance及びFinishの各セグメント・テンプレートとNoteセグメント・テンプレートとが互いに重なり合うようにして時間軸上に配置される。
【００３９】
次に、各セグメント・テンプレートを組み合わせて行われるエンベロープ合成について説明する。図７は、各セグメント・テンプレートを組み合わせて行われるエンベロープ合成について説明するための概念図である。この実施例では、dynamics／Pitch／vibrato depth／vibrato Speedの４種の楽音要素についてのエンベロープセグメントのうちのdynamics（振幅）を例にあげて説明する。すなわち、図７に示した各図は上から順に、MIDI入力に基づき生成される入力エンベロープ（基本エンベロープ）のdynamics値カーブ、該MIDI入力に基づく該dynamics値カーブから算出される入力dB値カーブ、Noteセグメント・テンプレートのdynamicsのdB値カーブ、Entrance及びFinishセグメント・テンプレートのdynamicsのdB値カーブ、合成された結果の入力dB値カーブをそれぞれ示すものである。
【００４０】
MIDI情報の入力に基づくdynamics値カーブ（つまり入力エンベロープ又は基本エンベロープ）は、そのNoteのキー番号に従い、楽譜解釈部（プレーヤー）にアサインされているDynamicsスケールデータを用いてdB値に変換される（これを入力dB値カーブと呼ぶ）。この変換により算出された入力dB値カーブに対して、上述のようにして時間軸上に配置されたNote／Entrance／Finishの各セグメント・テンプレートを加算する。その際に、Note／Entrance／Finishの各セグメント・テンプレートの各レベルを所定のレベルコントロールパラメータにより拡大縮小することにより、各セグメント・テンプレートにおける特性変化カーブの形状をレベル方向に変化することができる。こうしたレベルコントロールパラメータの指定は、所定位置（例えば、予め決められた特性変化カーブの形状を特徴付ける代表点）において、ユーザが直接数値入力することによって指定するようにしてもよいし、あるいは表示装置５上に表示した特性変化カーブ上の前記代表点をユーザがマウスなどを用いて上下に動かすことによって指定するようにしてもよい。このようにレベルをユーザが編集することにより、各セグメント・テンプレートをレベル方向にカスタマイズすることができる。そして、入力dB値カーブに対してNote／Entrance／Finishの各セグメント・テンプレートを加算すると、各セグメント・テンプレートが相対的に合成されて特徴ある合成dB値カーブを生成する。生成された合成dB値カーブは、例えばAmplitude Shiftとして、あるいはDynamicsとして奏法合成部（アーティキュレーター）に入力される。
【００４１】
勿論、上記dynamicsにおけるエンベロープの合成と同様にして、その他のPitch／vibrato depth／vibrato Speedにおいても、所定の入力エンベロープに対してNote／Entrance／Finishの各セグメント・テンプレートを演算することにより合成エンベロープが生成される。また、上記dynamicsにおけるエンベロープに対するレベルコントロールと同様に、その他のPitch／vibrato depth／vibrato Speedにおけるエンベロープに対するレベルコントロールをそれぞれ行うことができることは言うまでもない。
このように、Note／Entrance／Finish（あるいはPhrase）の各セグメント・テンプレートは、入力エンベロープに対して各々が相対的に作用することによって１つの合成エンベロープを生成するようになっている。
【００４２】
楽譜解釈部（プレーヤー）１Ｂにより生成された合成エンベロープ、つまり入力エンベロープに対してNote／Entrance／Finishなどの各セグメント・テンプレートを演算することによって算出された合成エンベロープは奏法合成部（アーティキュレーター）１Ｃに対して奏法パラメータとして出力される。そして、奏法合成部１Ｃでは、所定の奏法指定情報（奏法ＩＤと奏法パラメータ）に基づいて奏法データベースから奏法モジュールを読出し、該読み出した各々の奏法モジュールに対して楽譜解釈部１Ｂで生成された合成エンベロープを配分したパケットストリームを生成する（図２参照）。ここで、奏法合成部１Ｃによるパケットストリーム作成の際における各奏法モジュールの時間軸上への配置と各奏法モジュールに対する合成エンベロープの配分について、図８を用いて説明する。図８は、パケットストリーム作成の際における各奏法モジュールの時間軸上への配置と各奏法モジュールに対する合成エンベロープの配分について説明するための概念図である。図８（ａ）はEntrance系モジュール及びFinish系モジュールの時間軸上への配置について説明するための概念図であり、図８（ｂ）はBody系モジュール若しくはJoint系モジュールの時間軸上への配置及び合成エンベロープの配分について説明するための概念図である。
【００４３】
図８（ａ）に示すように、まず奏法合成部１Ｃは所定の奏法指定情報（奏法ＩＤと奏法パラメータ）に基づいて奏法データベースからEntrance系モジュール及びFinish系モジュールを読出し、時間軸上の所定時間位置に配置する。Entranceセグメント・テンプレートの始点にEntrance系モジュールのサウンドオン・タイミングを一致させることによって、Entrance系モジュールを時間軸上の所定時間位置に配置する。ここでいうサウンドオン・タイミングとは、Entrance系モジュール内にその奏法モジュールの先頭からの時間として記録されているものである。一方、Finishセグメント・テンプレートの終点にFinish系モジュールのサウンドオフ・タイミングを一致させることによって、Finish系モジュールを時間軸上の所定時間位置に配置する。このサウンドオフ・タイミングとは、Finish系モジュール内にその奏法モジュールの先頭からの時間として記録されているものである。次に、図８（ｂ）に示すように、時間軸上の所定時間位置に配置されたEntrance系モジュールとFinish系モジュールとの間にBody系モジュールを配置する。Entrance系モジュールとFinish系モジュールとの間が所定の規定値以下の時間間隔である場合にはBody系モジュールとしてNSB（Normal Short Body）を配置し、所定の規定値以上の時間間隔である場合にはBody系モジュールとしてVB（Vibrato Body）を配置する。ただし、既に配置されたEntrance系モジュールとFinish系モジュールとの間にBody系モジュールが入らない場合には、Body系モジュールを配置することなく省略してよい。そして、次のノートオフとノートオンとの間隔が所定の規定値以下の時間間隔である場合は、Body系モジュールと次のBody系モジュールとの間をジョイント化し、Joint系モジュールを挿入する。こうして各奏法モジュールを時間軸上に順次に配置する。なお、ユーザにより直接使用すべきモジュールが選択されているような場合には、それを使用してよいことは言うまでもない。
【００４４】
そして、図８（ｂ）から理解できるように、配置された各奏法モジュールの位置にあわせて、楽譜解釈部１Ｂにより生成された合成エンベロープ、つまり入力エンベロープに対してNote／Entrance／Finishなどの各セグメント・テンプレートを演算することによって算出された合成エンベロープを取得し、取得した合成エンベロープを各奏法モジュールに配分することによりパケットストリームを生成する。こうして生成されたパケットストリームは波形合成部１Ｄに供給され、波形合成部１Ｄでは該パケットストリームに基づき波形データベースから取り出したベクトルデータ（つまり、奏法モジュールが表す波形）を合成エンベロープに応じて変形することができ、こうして変形した個々の奏法モジュールが表す波形を波形接続することによって任意の楽音波形を生成することができる。すなわち、各奏法モジュールに配分された合成エンベロープに応じて各奏法モジュールを変形し、該変形した各奏法モジュールを波形接続することによって、セグメントテンプレートとして付与される各特性変化カーブに従う形状の楽音波形を生成することができるようになっている。
【００４５】
なお、奏法合成部１Ｃは、上述のように楽譜解釈部１Ｂで生成された合成エンベロープをパケットストリームに反映するだけでなく、ベクトルデータとして反映するようにしてもよい。すなわち、奏法合成部１Ｃではベクトルパラメータを生成する際に、時間軸上の所定時間位置に配置した奏法モジュールに対して楽譜解釈部１Ｂにより生成された合成エンベロープを配分したベクトルパラメータを生成するようにしてもよい。こうした場合、波形合成部１Ｄは生成されたパケットストリームに応じて波形データベースからベクトルデータを順次に取り出し、該ベクトルデータをベクトルパラメータに応じて変形し、変形した各ベクトルデータを波形接続することで、dynamicsエンベロープが反映された音を生成することができる。勿論、Pitch／vibrato depth／vibrato Speedにおいても、dynamicsエンベロープと同様にして、各エンベロープが反映された音を生成することができる。
【００４６】
以上のように、この実施例に示す楽音生成装置においては、Phrase／Note／Entrance／Finishセグメント・テンプレートといった時間長が異なる階層的なテンプレートを用いてフレーズ単位や１音単位での楽音表現を部分的に変更することが可能となることから、特に１音内におけるアタック部やリリース部などの一部区間において複雑な変化形状を持つ楽音波形を生成することが簡単にできるようになる。これらの各セグメント・テンプレートで表されるdynamicsについてのエンベロープを合成し、さらに１音毎に有するエンベロープと合成することで全体のdynamicsについてのエンベロープが形成される。また、上記Phrase／Note／Entrance／Finishの各セグメント・テンプレートは各々がdynamics／Pitch／vibrato depth／vibrato Speedに関する特性変化カーブ（つまりエンベロープカーブ）をセットで持つ構成とすることで、ユーザは奏法を指定するだけでdynamicsに加え、Pitch／vibrato depth／vibrato Speedに関しての波形制御も同時に行うことができるようになる。
なお、演奏情報に基づくオリジナルの入力エンベロープ（基本エンベロープ）を生成せずに、セグメントテンプレートの組合せのみに基づいてエンベロープを合成するようにすることも可能である。
【００４７】
なお、上述したような楽音生成装置を電子楽器に用いた場合、電子楽器は鍵盤楽器の形態に限らず、弦楽器や管楽器、あるいは打楽器等どのようなタイプの形態でもよい。また、その場合に、曲データ再生部１Ａ、楽譜解釈部１Ｂ、奏法合成部１Ｃ、波形合成部１Ｄ等を１つの電子楽器本体内に内蔵したものに限らず、それぞれが別々に構成され、ＭＩＤＩインターフェースや各種ネットワーク等の通信手段を用いて各構成部を接続するように構成されたものにも同様に適用できることはいうまでもない。また、パソコンとアプリケーションソフトウェアという構成であってもよく、この場合処理プログラムを磁気ディスク、光ディスクあるいは半導体メモリ等の記憶メディアから供給したり、ネットワークを介して供給するものであってもよい。さらに、自動演奏ピアノのような自動演奏装置などにも適用してよい。
【００４８】
【発明の効果】
本発明によれば、演奏情報で特定される演奏タイミングを基準とする時間軸上にセグメントテンプレートを該セグメントテンプレートに含まれる位置情報に従って配置し、配置したセグメントテンプレートの特性変化カーブを変更することができ、該変更したセグメントテンプレートの特性変化カーブを演奏情報に基づく基本エンベロープに組み合わせることによって合成エンベロープを形成し、この合成エンベロープを用いて楽音を生成するようにしたので、変化に富んだ細かなエンベロープ制御を行なうことができる。従って、ユーザは特性変化カーブを変更するだけで、予め用意された特性変化カーブに固定されることなく、ユーザは簡単に一部区間でエンベロープをより細かにコントロールしながら楽音波形を生成することができる、という優れた効果を奏する。また、セグメントテンプレートに含まれる位置情報に従って該セグメントテンプレートを時間軸上に配置するので、該位置情報に基づき時間軸上へのセグメントテンプレートの配置を容易に行うことができる。更には、セグメントテンプレート毎に格別に位置情報を含むようになっているが故に、個々のセグメントテンプレートにつき、その特性変化カーブにおける任意の中間位置に対応付けて位置情報をもたせることができ、従来にない、多様な態様で、合成エンベロープを形成することができる。
【図面の簡単な説明】
【図１】  この発明に係る楽音生成装置のハードウエア構成例を示すブロック図である。
【図２】  楽音生成処理を専用ハードウエア装置の形態で構成した場合の一実施例を示すブロック図である。
【図３】  セグメント・テンプレートのデータ構成の一実施例を示した概念図である。
【図４】  「Entranceセグメント・テンプレート自動決定処理」の一実施例を示すフローチャートである。
【図５】  「Finishセグメント・テンプレート自動決定処理」の一実施例を示すフローチャートである。
【図６】  各セグメント・テンプレートの時間軸上への配置について説明するための概念図である。
【図７】  各セグメント・テンプレートを組み合わせて行われるエンベロープ合成について説明するための概念図である。
【図８】  パケットストリーム作成の際における各奏法モジュールの時間軸上への配置と各奏法モジュールに対する合成エンベロープの配分について説明するための概念図である。
【符号の説明】
１...ＣＰＵ、２...リードオンリメモリ（ＲＯＭ）、３...ランダムアクセスメモリ（ＲＡＭ）、４...入力装置、５...表示装置、６...ドライブ、６Ａ...外部記憶メディア、７...波形取込部、８...音源部、８Ａ...サウンドシステム、９...ハードディスク、１０...通信インターフェース、ＢＬ...バスライン、１Ａ...曲データ再生部、１Ｂ...楽譜解釈部（プレーヤー）、１Ｃ...奏法合成部（アーティキュレーター）、１Ｄ...波形合成部
【図１】
0003832419.tif 000002
【図２】
0003832419.tif 000003
【図３】
0003832419.tif 000004
【図４】
0003832419.tif 000005
【図５】
0003832419.tif 000006
【図６】
0003832419.tif 000007
【図７】
0003832419.tif 000008
【図８】
0003832419.tif 000009