(57)【特許請求の範囲】
【請求項１】
時間軸上の一連の音響信号データを格納した音響信号記憶手段と、
インパルス応答特性を表す時間軸上の値であるインパルス応答係数を含むインパルス応答データを記憶するインパルス応答データ記憶手段と、
前記インパルス応答係数の時間軸上において指定された、前記インパルス応答係数の繰り返しの始点に相当するループポイントと、前記インパルス応答係数の時間軸上の最後尾であるエンドポイントとで確定される区間を繰り返す際に、前記エンドポイントと前記ループポイントとの間でクロスフェードを行なうクロスフェード区間の始点に相当するクロスフェードポイントと、前記ループポイントとに基づいて、前記クロスフェードポイントと前記エンドポイントとで画定される前記クロスフェード区間における新たな補正されたインパルス応答係数を算出して、インパルス応答データ記憶手段に格納するインパルス応答係数補正手段と、
前記音響信号記憶手段から前記音響信号データを読み出し、かつ、前記インパルス応答データ記憶手段から前記クロスフェード区間における補正されたインパルス応答係数を含むインパルス応答係数を読み出して、前記音響信号データと対応する前記インパルス応答係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算手段と、
を備えたことを特徴とするＦＩＲフィルタ装置。
【請求項２】
前記インパルス応答係数補正手段が、
前記時間軸上で、当該ループポイントよりクロスフェード区間に相当する時間長だけ遡った区間における位置のインパルス応答係数に、当該遡った区間において増加するような増加関数にしたがった重みを乗じて第１の重み付け係数を算出するとともに、
前記クロスフェード区間における位置のインパルス応答係数に、前記クロスフェード区間において減少するような減少関数にしたがった重みを乗じて第２の重み付け係数を算出し、
前記第１の重み付け係数と第２の重み付け係数との加算結果を、前記クロスフェード区間における新たな補正されたインパルス応答係数とすることを特徴とする請求項１に記載のＦＩＲフィルタ装置。
【請求項３】
前記積和演算手段が、
前記音響信号記憶手段に記憶された音響信号データを遅延させる遅延手段と、
前記音響信号記憶手段の所定の音響信号データを所定の減衰率にて乗算し、当該乗算された音響信号データをフィードバックさせて、前記ループポイントに対応するインパルス応答係数と乗算すべき他の音響信号データに加算する帰還手段と、を有することを特徴とする請求項１または２に記載のＦＩＲフィルタ装置。
【請求項４】
請求項１ないし３の何れか一項に記載のＦＩＲフィルタ装置と、
時間軸上の一連の音響信号を生成して、前記ＦＩＲフィルタ装置の音響信号記憶手段に出力する音響信号発生装置と、
前記音響信号発生装置により生成された音響信号データと、前記ＦＩＲフィルタ装置から出力された共鳴音データとを加算する加算装置と、を備えたことを特徴とする音響装置。
【請求項５】
時間軸上の一連の音響信号データを格納した音響信号記憶装置と、
インパルス応答特性を表す時間軸上の値であるインパルス応答係数を含むインパルス応答データを記憶するインパルス応答データ記憶装置と、を備えたコンピュータに、
前記インパルス応答係数の時間軸上において指定された、前記インパルス応答係数の繰り返しの始点に相当するループポイントと、前記インパルス応答係数の時間軸上の最後尾であるエンドポイントとで確定される区間を繰り返す際に、前記エンドポイントと前記ループポイントとの間でクロスフェードを行なうクロスフェード区間の始点に相当するクロスフェードポイントと、前記ループポイントとに基づいて、前記クロスフェードポイントと前記エンドポイントとで画定される前記クロスフェード区間における新たな補正されたインパルス応答係数を算出して、インパルス応答データ記憶手段に格納するインパルス応答係数補正ステップと、
前記音響信号記憶装置から前記音響信号データを読み出し、かつ、前記インパルス応答データ記憶装置から前記クロスフェード区間における補正されたインパルス応答係数を含むインパルス応答係数を読み出して、前記音響信号データと対応する前記インパルス応答係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算ステップと、
を実行させることを特徴とするＦＩＲフィルタプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＩＲ（有限インパルス応答）フィルタのインパルス応答係数を算出し、算出されたインパル応答係数を用いたフィルタリング処理を行なうＦＩＲフィルタ装置、当該ＦＩＲフィルタ装置を備えた音響装置、および、ＦＩＲフィルタプログラムに関する。
【背景技術】
【０００２】
電子楽器やオーディオ機器からの音響信号に共鳴音を付加する種々の装置が知られている。ここに、共鳴音には、ホールなど楽音が発生される場所における残響音や、楽器自体の共鳴音などが含まれる。
【０００３】
共鳴音を発生するためには、共鳴音付加装置は、ディジタルの音響信号データを受け入れて、音響信号データにディジタルフィルタによるフィルタ処理を施すのが一般的である。フィルタ処理においては、ＦＩＲ（有限インパルス応答：Finite Impulse Response）フィルタ或いはＩＩＲ（無限インパルス応答：Infinite Impulse
Response）フィルタが利用される。
【０００４】
ＦＩＲフィルタを利用する場合には、入力された音響信号データｘ（ｎ−ｋ）と、音楽ホールの残響特性などから得たインパルス応答ｈｎ（ｋ）を畳み込み演算することで、共鳴音ｙ（ｎ）＝Σｘ（ｎ−ｋ）×ｈｎ（ｋ）のデータを得ることができる。しかしながら、ＦＩＲフィルタにおいては、インパルス応答データの数、つまり、フィルタの次数を高くすることにしたがって、より理想的なフィルタ特性に近づけることができる。その一方、フィルタの次数を上げるにしたがって、演算量も多量となるという問題点がある。
【特許文献１】特開２０００−１６３０８６号公報
【特許文献２】特開２００６−１０１４６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
たとえば、特許文献１には、ＦＩＲフィルタにおいて少ないパラメータで多数の反射音を生成するための技術が開示されている。特許文献１においては、ＦＩＲフィルタを縦列に接続して、前段のＦＩＲフィルタには、比較的まばら、つまり、時間的に間隔をおいて、かつ、長時間にわたるようなパラメータ（フィルタ係数）が用いられる。その一方、後段のＦＩＲフィルタには、密になるように、狭い時間間隔となるようなパラメータ（フィルタ係数）が用いられる。また、特許文献２においても、同様に、特性の異なる２つのＦＩＲフィルタを設け、前段のＦＩＲフィルタの出力を、後段のＦＩＲフィルタに入力させることが開示されている。
【０００６】
上述したようにＦＩＲフィルタを直列に接続させることで、より多くの反射音など共鳴音を得ることができる。しかしながら、２つ分のフィルタ係数およびフィルタ回路を持つ必要があり、回路規模やデータ量は依然として大きいという問題点があった。
【０００７】
本発明は、回路規模やデータ量を小さくしつつ、自然な共鳴音を得ることができるようなＦＩＲフィルタ装置、音響装置およびＦＩＲフィルタプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的は、時間軸上の一連の音響信号データを格納した音響信号記憶手段と、
インパルス応答特性を表す時間軸上の値であるインパルス応答係数を含むインパルス応答データを記憶するインパルス応答データ記憶手段と、
前記インパルス応答係数の時間軸上において指定された、前記インパルス応答係数の繰り返しの始点に相当するループポイントと、前記インパルス応答係数の時間軸上の最後尾であるエンドポイントで確定される区間を繰り返す際に、前記エンドポイントと前記ループポイントとの間でクロスフェードを行なうクロスフェード区間の始点に相当するクロスフェードポイントと、前記ループポイントとに基づいて、前記クロスフェードポイントと前記エンドポイントとで画定される前記クロスフェード区間における新たな補正されたインパルス応答係数を算出して、インパルス応答データ記憶手段に格納するインパルス応答係数補正手段と、
前記音響信号記憶手段から前記音響信号データを読み出し、かつ、前記インパルス応答データ記憶手段から前記クロスフェード区間における補正されたインパルス応答係数を含むインパルス応答係数を読み出して、前記音響信号データと対応する前記インパルス応答係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算手段と、
を備えたことを特徴とするＦＩＲフィルタ装置により達成される。
【０００９】
好ましい実施態様においては、前記インパルス応答係数補正手段が、
前記時間軸上で、当該ループポイントよりクロスフェード区間に相当する時間長だけ遡った区間における位置のインパルス応答係数に、当該遡った区間において増加するような増加関数にしたがった重みを乗じて第１の重み付け係数を算出するとともに、
前記クロスフェード区間における位置のインパルス応答係数に、前記クロスフェード区間において減少するような減少関数にしたがった重みを乗じて第２の重み付け係数を算出し、
前記第１の重み付け係数と第２の重み付け係数との加算結果を、前記クロスフェード区間における新たな補正されたインパルス応答係数とする。
【００１０】
別の好ましい実施態様においては、前記積和演算手段が、
前記音響信号記憶手段に記憶された音響信号データを遅延させる遅延手段と、
前記音響信号記憶手段の所定の音響信号データを所定の減衰率にて乗算し、当該乗算された音響信号データをフィードバックさせて、前記ループポイントに対応するインパルス応答係数と乗算すべき他の音響信号データに加算する帰還手段と、を有する。
【００１１】
また、本発明の目的は、上述したＦＩＲフィルタ装置と、
時間軸上の一連の音響信号を生成して、前記ＦＩＲフィルタ装置の音響信号記憶手段に出力する音響信号発生装置と、
前記音響信号発生装置により生成された音響信号データと、前記ＦＩＲフィルタ装置から出力された共鳴音データとを加算する加算装置と、を備えたことを特徴とする音響装置により達成される。
【００１２】
また、本発明の目的は、時間軸上の一連の音響信号データを格納した音響信号記憶装置と、インパルス応答特性を表す時間軸上の値であるインパルス応答係数を含むインパルス応答データを記憶するインパルス応答データ記憶装置と、を備えたコンピュータに、
前記インパルス応答係数の時間軸上において指定された、前記インパルス応答係数の繰り返しの始点に相当するループポイントと、前記インパルス応答係数の時間軸上の最後尾であるエンドポイントとで確定される区間を繰り返す際に、前記エンドポイントと前記ループポイントとの間でクロスフェードを行なうクロスフェード区間の始点に相当するクロスフェードポイントと、前記ループポイントとに基づいて、前記クロスフェードポイントと前記エンドポイントとで画定される前記クロスフェード区間における新たな補正されたインパルス応答係数を算出して、インパルス応答データ記憶手段に格納するインパルス応答係数補正ステップと、
前記音響信号記憶装置から前記音響信号データを読み出し、かつ、前記インパルス応答データ記憶装置から前記クロスフェード区間における補正されたインパルス応答係数を含むインパルス応答係数を読み出して、前記音響信号データと対応する前記インパルス応答係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算ステップと、を実行させることを特徴とするＦＩＲフィルタプログラムにより達成される。
【発明の効果】
【００１３】
本発明によれば、回路規模やデータ量を小さくしつつ、自然な共鳴音を得ることができるようなＦＩＲフィルタ装置、音響装置およびＦＩＲフィルタプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる楽音発生装置の構成を示すブロックダイヤグラムである。図１に示すように、楽音発生装置は、ＣＰＵ１１、入力装置１２、表示装置１３、ＲＯＭ１４、ＲＡＭ１５、サウンドシステム１６を備える。サウンドシステム１６は、楽音発生回路１７、共鳴音付加回路１８、Ａ／Ｄ変換器、増幅器（図示せず）、スピーカ（図示せず）などを含み、ＣＰＵ１１からの指示にしたがって、所定の楽音信号データを生成し、かつ、楽音信号データに基づいて、その共鳴音を再現した共鳴音データを生成し、生成された共鳴音データと楽音信号データとが合成された合成データに基づく音響を出力する。
【００１５】
本実施の形態においては、楽音発生装置に設けられたＣＰＵ１１が、インパルス応答係数（ＦＩＲフィルタ係数）を補正する。また、ＣＰＵ１１および共鳴音付加回路１８が、本発明にかかるＦＩＲフィルタ係数を補正し、かつ、補正されたＦＩＲフィルタ係数を利用したＦＩＲフィルタ装置を構成する。
【００１６】
図１に示すように、楽音発生装置は、通常のパーソナルコンピュータによって実現され得る。或いは、鍵盤（図示せず）を有する鍵盤楽器の形態をとっていても良い。ＣＰＵ１１は、システム制御、ＦＩＲフィルタのインパルス応答係数の補正、表示装置１３の画面上に表示すべき画像データの生成などの処理を実行する。入力装置１２は、たとえば、キーボードやマウスを有し、操作者が所望の指示を入力することができるようになっている。表示装置１３の画面上には、インパルス応答係数のグラフ、操作者が入力した指示、インパルス応答係数の補正処理の結果などが表示可能である。
【００１７】
ＲＯＭ１４は、インパルス応答係数の補正のためのプログラム、楽音信号データ生成のためのプログラム、フィルタリング処理のためのプログラム、プログラムの実行の際に使用される定数、ＦＩＲフィルタのインパルス応答係数、楽音信号データを生成するための各種音色の波形データなどを記憶する。ＲＡＭ１５は、プログラムの実行の過程で必要な変数、パラメータ、入力データ、出力データなどを一時的に記憶する。また、ＲＡＭ１５には、ユーザにより設定されたフィルタについての設定条件、インパルス応答係数の補正により得られた補正係数が格納される。
【００１８】
図２は、本実施の形態にかかる楽音発生装置において実行される処理の概略を示すフローチャートである。図２に示すように、ＣＰＵ１１は、ＲＡＭ１５中に格納されたパラメータや表示装置１３の画面のクリアを含む初期化処理を実行する（ステップ２０１）。ユーザの入力装置１２の操作による終了指示がある（ステップ２０２でＹｅｓ）まで、ステップ２０３以降の処理が実行される。
【００１９】
ユーザの入力装置１２の操作により条件設定の指示があった場合には（ステップ２０３でＹｅｓ）、ＣＰＵ１１は、条件設定処理を実行する（ステップ２０４）。また、条件設定処理２０４により、後述する設定条件メモリ３２（図５参照）に、新たな条件を示すデータが格納された場合には（ステップ２０５でＹｅｓ）、ＣＰＵ１１は、係数補正処理を実行する（ステップ２０６）。条件設定処理および係数補正処理については後に詳述する。
【００２０】
ＣＰＵ１１および楽音発生回路１７は、楽音発生処理を実行する（ステップ２０７）。楽音発生処理においては、鍵盤（図示せず）のいずれかの鍵の押鍵や、ＲＯＭ１４に格納された自動演奏データにおけるある音高の楽音のオン（ノートオン）に応答して、ＣＰＵ１１の指示にしたがって、楽音発生回路１７が、ＲＯＭ１４から所定の音色の波形データを読み出し、所定の音高の楽音信号データを生成して出力する。
【００２１】
また、ＣＰＵ１１および共鳴音付加回路１８は、フィルタリング処理を実行する（ステップ２０８）。フィルタリング処理においては、共鳴音付加回路１８が、楽音信号データにＦＩＲフィルタ処理を施して、共鳴音データを生成し、楽音データと共鳴音データとを加算した合成データを生成して出力する。フィルタリング処理についても後に詳述する。
【００２２】
図３は、本実施の形態にかかる条件設定処理の例を示すフローチャートである。条件設定処理において、ユーザは、ＦＩＲフィルタのインパルス応答係数の時間軸上で、所望のループポイントＬおよびクロスフェードポイントＸＰを指定することができる。
【００２３】
より詳細には、ＣＰＵ１１は、ＲＯＭ１４に設けられたインパルス応答係数メモリ３１（図５参照）からインパルス応答係数を読み出して（ステップ３０１）、たとえば、横軸を時間軸として縦軸をインパルス応答係数の値としたグラフを、表示装置１３の画面上に表示する（ステップ３０２）。図４は、インパルス応答係数のグラフの例を示す図である。ユーザは、入力装置１２を操作して、表示装置１３の画面上に表示されたグラフにおいて、インパルス応答係数のループをスタートさせるループポイントＬ（符号４０１参照）を指定することができる。また、本実施の形態においては、インパルス応答係数において、最後尾（第Ｎ番）の位置（エンドポイント）のインパルス応答係数と、ループポイントＬにおけるインパルス応答係数とを連続させるのではなく、後述するように、クロスフェードポイントＸＰとエンドポイントＮとの間のクロスフェード区間ｗ２において、クロスフェードを行って、ループにおけるインパルス応答係数の繋ぎを円滑にしている。したがって、ユーザは、入力装置１２を操作して、クロスフェードポイントＸＰ（符号４０２参照）も入力する。
【００２４】
ユーザが入力装置１２を操作して入力したループポイントＬおよびクロスフェードポイントＸＰが受理されると、受理されたループポイントＬおよびクロスフェードポイントＸＰは、ＲＡＭ１５に一時的に記憶される（ステップ３０３）。ユーザが入力装置１２を操作して、ループポイントＬおよびクロスフェードポイントＸＰを確定させることを指示すると（ステップ３０４でＹｅｓ）、ＣＰＵ１１は、ループポイントＬおよびクロスフェードポイントＸＰを設定条件メモリ３２に格納する（ステップ３０５）。
【００２５】
以下、設定条件メモリ３２に格納されたループポイントＬおよびクロスフェードポイントＸＰを利用して、インパルス応答係数が補正される。図５は、本実施の形態にかかる楽音発生装置において、係数補正および共鳴音データ生成にかかる構成部分のダイヤグラムである。図５に示すように、本実施の形態にかかる楽音発生装置は、係数補正のための係数補正処理部３３を有する。補正係数処理部３３は、設定条件メモリ３２に格納されたループポイントＬおよびクロスフェードポイントＸＰに基づいて、インパルス応答係数のうち、図４に示すクロスフェード区間ｗ２における補正されたインパルス応答係数を算出する。新たなインパルス応答係数は補正係数メモリ３４に格納される。
【００２６】
本実施の形態において、係数補正処理部３３の機能は主としてＣＰＵ１１により実現される。また、インパルス応答係数メモリ３１はＲＯＭ１４に、設定条件メモリ３２および補正係数メモリ３４はＲＡＭ１５に設けられる。
【００２７】
また、図５に示すように、共鳴音付加回路１８は、積和演算部３６および加算部３７を有する。また、楽音信号バッファ３５には、楽音発生回路１７から出力された楽音信号データが一時的に記憶される。楽音信号バッファ３５はＲＡＭ１５に設けられる。積和演算部３６は、補正係数メモリ３４に格納されたインパルス応答係数と、楽音信号バッファ３５に格納された楽音信号データとを積和演算して共鳴音データを生成する。また、本実施の形態においては、積和演算部３６は、楽音信号データをフィードバックさせる機能を有する。これによりインパルス応答係数をループさせ、ループさせたインパルス応答係数を用いた積和演算を実現している。加算部３７は、共鳴音データと楽音信号データとを加算して合成データを出力する。合成データは、Ａ／Ｄ変換器（図示せず）や増幅器（図示せず）を経てスピーカ（図示せず）から音響信号として出力される。
【００２８】
図６は、本実施の形態にかかる係数補正処理部３３において実行される係数補正処理（図２のステップ２０６）の例を示すフローチャートである。図６に示すように、係数補正処理部３３は、設定条件メモリ３２から、ループポイントＬおよびクロスフェードポイントＸＰを取得する（ステップ６０１）。次いで、係数補正処理部３３は、ループポイントＬからインパルス応答係数のエンドポイントＮとの差Ｌｌｅｎ、および、ループポイントＬからクロスフェードポイントＸＰとの差ＸＦを算出する（ステップ６０２）。
【００２９】
次いで、係数補正処理部３３は、クロスフェードポイントＸＰと、インパルス応答係数のエンドポイントＮとの間（クロスフェード区間ｗ２）でクロスフェードさせるために、インパルス応答係数の重みを決定する係数を算出する（ステップ６０３、６０４）。図７は、インパルス応答係数のクロスフェードを説明する図である。図７（ａ）において、クロスフェード区間は符号７０２で示されている。また、図４と同様に、クロスフェード区間７０２の幅はＮ−ＸＰ＝ｗ２＝ｗ１である。したがって、位置Ｌ−ｗ１からループポイントまでの区間７０１とクロスフェード区間７０２とが等しい。クロスフェードにおいては、区間７０１のインパルス応答係数に、時間の経過とともに値が増加するような増加関数（符号７１０）を乗じた第１の重み付きの係数と、クロスフェード区間７０２のインパルス応答係数に、時間の経過とともに値が減少するような減少関数（符号７１１）を乗じた第２の重み付きの係数とを加算して、加算結果を、クロスフェード区間７０２における補正されたインパルス応答係数としている。
【００３０】
より詳細には、係数補正処理部３３は、区間７０１のインパルス応答係数に乗ずるための増加関数を算出する（ステップ６０３）。本実施の形態においては、増加関数および減少関数の双方とも、一次関数としているため、それぞれの関数の傾きおよび切片の値が求められる。ステップ６０３においては、増加関数の傾きａ１および切片ｂ１は以下のように算出される。
【００３１】
傾きａ１＝１／（Ｌｌｅｎ−ＸＦ）
切片ｂ１＝−ａ１＊ＸＦ
また、係数補正処理部３３は、区間７０２のインパルス応答係数に乗ずるための減少関数を算出する（ステップ６０４）。ステップ６０４においては、減少関数の傾きａ２および切片ｂ２は以下のように算出される。
【００３２】
傾きａ２＝１／（ＸＦ−Ｌｌｅｎ）
切片ｂ２＝１−ａ２＊ＸＦ
図７（ａ）において、ループポイントＬを、ｘ座標上で「０」であると考えると、増加関数７１０および減少関数７１１は、図７（ｂ）に示すようになる。図７（ｂ）においては、増加関数７１０は、座標（ＸＦ，０）から座標（Ｌｌｅｎ，１）まで増加する一次関数であり、その一方、減少関数７１１は、座標（ＸＦ，１）から座標（Ｌｌｅｎ，０）まで減少する一次関数である。図７（ｂ）に示す座標に基づいて、上記増加関数の傾きａ１および切片ｂ１および、減少関数の傾きａ２および切片ｂ２が算出される。
【００３３】
次いで、係数補正処理部３３は、パラメータｊをＬに初期化して（ステップ６０５）、パラメータｊがＮ以上になるまで（ステップ６０６でＹｅｓ）、ステップ６０７〜６１１の処理を繰り返し実行する。係数補正処理部３３は、パラメータｊが、Ｌ＋ＸＦ以上、つまり、パラメータｊがクロスフェードポイントＸＰ以上であるか否かを判断する（ステップ６０７）。
【００３４】
ステップ６０７でＮｏと判断された場合には、係数補正処理部３３は、第１の重み付き係数ｄａｔ１を「０」にするとともに、第２の重み付き係数ｄａｔ２を、もとのインパルス応答係数ｈｎ［ｊ］とする（ステップ６０８）。その後、係数補正処理部２３は、新たな補正されたインパルス応答係数ｈｎ［ｊ］を、第１の重み付き係数ｄａｔ１および第２の重み付き係数ｄａｔ２の和とする（ステップ６１０）。ステップ６１０で算出されたインパルス応答係数は、補正係数メモリ３４に格納される。なお、ｊ＜Ｌの範囲では、補正係数メモリ３４に格納されるインパルス応答係数ｈｎ［ｊ］は、もとのインパルス応答係数と同じである。
【００３５】
パラメータｊがＬ＋ＸＦより小さい場合、つまり、重み付き係数の算出のためにステップ６０８を経た場合にｍｏ、補正係数メモリ３４に格納されるインパルス応答係数ｈｎ［ｊ］は、もとのインパルス応答係数と同じである。
【００３６】
その一方、ステップ６０７でＹｅｓと判断された場合には、係数補正処理部３３は、第１の重み付き係数ｄａｔ１および第２の重み付き係数を以下のように算出する（ステップ６０９）。
【００３７】
ｄａｔ１＝ｈｎ［ｊ−Ｌｌｅｎ］＊（ａ１＊（ｊ−Ｌ）＋ｂ１）
ｄａｔ２＝ｈｎ［ｊ］＊（ａ２＊（ｊ−Ｌ）＋ｂ２）
ステップ６０９においては、第１の重み付き係数ｄａｔ１は、図７（ａ）に示す区間７０１の位置ｊ−Ｌｌｅｎのインパルス応答係数ｈｎ［ｊ−Ｌｌｅｎ］に、増加関数である直線７１０に示す重みを与えた値となっている。また、第２の重み付き係数ｄａｔ２は、クロスフェード区間７０２の位置ｊのインパルス応答係数ｈｎ［ｊ］に、減少関数である直線７１１に示す重みを与えた値となっている。
【００３８】
次いで、係数補正処理部３３は、第１の重み付き係数ｄａｔ１および第２の重み付き係数ｄａｔ２を加算して、新たな補正されたインパルス応答係数ｈｎ［ｊ］を求め、求められたインパルス応答係数を、補正係数メモリ３４に格納する（ステップ６１０）。したがって、パラメータｊがＬ＋Ｘｆより大きい場合には、クロスフェードされたインパルス応答係数が得られることになる。
【００３９】
係数補正処理部３３は、パラメータｊをインクリメントして（ステップ６１１）、ステップ６０６に戻る。
【００４０】
次に、補正係数メモリ３４に格納された補正されたインパルス応答係数、および、楽音信号バッファに格納された楽音信号データとの積和演算を含むフィルタリング処理について説明する。図８および図９は、本実施の形態にかかるフィルタリング処理の例を示すフローチャートである。共鳴音付加装置１８の積和演算部３６は、累算値ｓｕｍを「０」に初期化し（ステップ８０１）、また、積和演算部３６は、演算のためのパラメータｊを「０」に初期化する（ステップ８０２）。次いで、積和演算部３６は、パラメータｊがＮ以上となるまで（ステップ８０３でＹｅｓ）、ステップ８０４からステップ８０７の処理を繰り返す。
【００４１】
積和演算部３６は、補正係数メモリ３４からインパルス応答係数ｈｎ［ｊ］を取得する（ステップ８０４）とともに、楽音信号バッファから楽音信号データｗａｖ［ｊ］を取得する（ステップ８０６）。なお、本実施の形態において、インパルス応答係数メモリ３１および補正係数メモリ３４に格納されたインパルス応答係数ｈｎ［ｊ］において、パラメータｊは時間軸上の値に対応している。また、楽音信号バッファ３５に格納される楽音信号データｗａｖ［ｊ］においては、ｗａｖ［０］が最新の楽音信号データであり、パラメータｊが大きくなるのにしたがって、より古い（過去の）楽音信号データとなる。
【００４２】
積和演算部３６は、インパルス応答係数ｈｎ［ｊ］と楽音信号データｗａｖ［ｊ］とを乗算して、累算値ｓｕｍに加え、これを新たな累算値ｓｕｍとする（ステップ８０６）。その後、積和演算部３６は、パラメータｊをインクリメントして（ステップ８０７）、ステップ８０３に戻る。
【００４３】
ステップ８０３でＹｅｓと判断された場合には、積和演算部３６は、楽音信号バッファ３５における楽音信号データのディレイ処理および所定の楽音信号データのフィードバック処理を実行する。図９に示すように、積和演算部３６は、パラメータｊをＮに初期化して（ステップ９０１）、ｊ＝０となるまで（ステップ９０２でＹｅｓ）、ステップ９０３〜９０６の処理を繰り返す。
【００４４】
積和演算部３６は、パラメータｊが、ループポイントＬであるか否かを判断する（ステップ９０３）。ステップ９０３でＮｏと判断された場合には、積和演算部３６は、楽音信号バッファ３５において、楽音信号データｗａｖ［ｊ−１］を遅延させて、楽音信号データｗａｖ［ｊ］とする（ステップ９０４）。その一方、ステップ９０３でＹｅｓと判断された場合には、積和演算部３６は、楽音信号データｗａｖ［ｊ−１］に、第Ｎ−１番の楽音信号データｗａｖ［Ｎ−１］にフィードバック係数Ｒを乗じたものを加算して、これを、楽音信号データｗａｖ［ｊ］とする（ステップ９０５）。ここで、フィードバック係数Ｒは、１より小さい正の値である。ステップ９０５により、第Ｎ−１番の楽音信号ｗａｖ［Ｎ−１］を、楽音信号データｗａｖ［Ｌ］にフィードバックさせることができる。
【００４５】
その後、積和演算部３６は、ｊをディクリメントして（ステップ９０６）、ステップ９０２に戻る。
【００４６】
上述したように、ステップ９０３、９０５において、ｊ＝Ｌのときに、楽音信号データｗａｖ［Ｎ−１］をフィードバック係数Ｒに示す減衰率で、ｗａｖ［Ｌ］にフィードバックしている。したがって、ステップ９０２〜９０６のループを繰り返すことによって、楽音信号データｗａｖ［Ｌ］〜ｗａｖ［Ｎ−１］には、フィードバックされた楽音信号データが反映される。したがって、インパルス応答係数との積和演算において、ｗａｖ［Ｌ］〜ｗａｖ［Ｎ−１］と対応するインパルス応答係数とが、ループされていることと同様の効果が得られる。
【００４７】
図１０（ａ）、（ｂ）および図１１（ａ）、（ｂ）は、それぞれ、インパルス応答係数の例を示すグラフである。図１０（ａ）はループをしていないもとのインパルス応答係数の例（第１の比較例）、図１０（ｂ）は、ループをしているが、クロスフェードをせずに、インパルス応答係数の末尾に引き続いて、ループポイント以降のインパルス応答係数を配置した例（第２の比較例）である。
【００４８】
これに対して、図１１（ａ）は、クロスフェードをさせた第１の例であり、（ＸＦ）／（Ｎ−Ｌ）＝０．８９３としている。また、図１１（ｂ）は、クロスフェードをさせた第２の例であり、（ＸＦ）／（Ｎ−Ｌ）＝０．３９３としている。なお、ＸＦ＝Ｎ−ＸＰである。
【００４９】
また、図１２（ａ）、（ｂ）および図１３（ａ）、（ｂ）は、インパルス応答係数のグラフにおいて、クロスフェードポイントＸＰおよびエンドポイントＮ付近の拡大図である。図１２（ａ）、（ｂ）および図１３（ａ）、（ｂ）は、それぞれ、第１の比較例、第２の比較例、クロスフェードさせた第１の例およびクロスフェードさせた第２の例の拡大図である。図１２（ｂ）と、図１３（ａ）、（ｂ）とを比較すると、第２の比較例で発生している不連続点が、クロスフェードさせることによりなめらかに繋がっていることがわかる。
【００５０】
本実施の形態によれば、係数補正処理部３３は、インパルス応答係数の繰り返しの始点に相当するループポイントＬとエンドポイントＮで確定される区間を繰り返す際に、エンドポイントＮとループポイントＬとの連結を円滑にするためにクロスフェードを行なうクロスフェード区間Ｗ２の始点に相当するクロスフェードポイントＸＰと、に基づいて、クロスフェード区間における新たな補正されたインパルス応答係数を算出して、補正係数メモリ３４に格納する。
【００５１】
積和演算部３６は、補正係数メモリ３４に格納されたインパルス応答係数を読み出して、読み出されたインパルス応答係数と、楽音信号データとの積和演算を行なう。したがって、エンドポイントＮのインパルス応答係数と、繰り返されたループポイントＬのインパルス応答係数との連結は円滑である。したがって、その連結された部分を含むインパル応答係数と、楽音信号データとの積和演算により得られた共鳴音も不自然ではない。また、クロスフェードした上でインパルス応答係数をループさせることにより、インパルス応答係数のデータ量を増大させることなく、十分な共鳴音を得ることが可能となる。
【００５２】
また、本実施の形態においては、係数補正処理部３３は、ループポイントＬよりクロスフェード区間に相当する時間長Ｗ１だけ遡った区間における位置のインパルス応答係数に、当該遡った区間において増加するような増加関数（図７の符号７１０参照）にしたがった重みを乗じて第１の重み付け係数を算出するとともに、クロスフェード区間における位置のインパルス応答係数に、クロスフェード区間において減少するような減少関数（図７の符号７１１参照）にしたがった重みを乗じて第２の重み付け係数を算出し、第１の重み付け係数と第２の重み付け係数との加算結果を、クロスフェード区間における新たな補正されたインパルス応答係数とする。このように補正されたインパルス応答係数を算出することで、クロスフェード区間における、インパルス応答係数の円滑なクロスフェードを実現でき、エンドポイントＮのインパルス応答係数と、繰り返されたループポイントＬのインパルス応答係数との連結を滑らかにすることができる。
【００５３】
また、本実施の形態においては、積和演算部３６は、楽音信号バッファ３５に記憶された楽音信号データを遅延させ、また、楽音信号バッファ３５の所定の楽音信号データを所定の減衰率Ｒで乗算し、当該乗算された楽音信号データをフィードバックさせて、ループポイントに対応するインパルス応答係数と乗算すべき楽音信号データに加算する。楽音信号バッファに格納された楽音信号データをループポイントに対応する位置にフィードバックさせることで、インパルス応答係数との積和演算において、上記ループポイントに対応する位置の楽音信号データ以降の楽音信号データと、インパルス応答係数とが、繰り返し積和演算され、ループが実現される。したがって、積和演算にて用いる楽音信号データのデータ量を増大させることなく、十分な共鳴音を得ることが可能となる。
【００５４】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００５５】
たとえば、前記実施の形態においては、鍵盤の押鍵や自動演奏データにおけるある音高の楽音のオン（ノートオン）に応じて生成された楽音信号データにＦＩＲフィルタ処理を施して、共鳴音データを生成している。しかしながら、これに限定されるものではなく、オーディオ機器から出力されるデータにＦＩＲフィルタ処理を施して、共鳴音データを生成しても良い。つまり、本件においてフィルタ処理を施す対象は、楽音信号データを含む音響信号データである。
【００５６】
また、前記実施の形態においては、積和演算部３６が、楽音信号データｗａｖ［Ｌ−１］に、第Ｎ−１番の楽音信号データｗａｖ［Ｎ−１］にフィードバック係数Ｒを乗じたものを加算して、これを、ループポイントに対応する楽音信号データｗａｖ［Ｌ］としている。すなわち、楽音信号データｗａｖ［Ｎ−１］をループポイントに対応する楽音信号データｗａｖ［Ｌ］にフィードバックさせて、ループを実現している。しかしながらこのような構成に限定されるものではなく、楽音信号バッファに格納される楽音信号データの数を、補正係数メモリ３４に格納されるインパルス応答係数の数より大きくして、ループされたインパルス応答係数と、楽音信号バッファに格納された楽音信号データとの積和演算が行なわれるように構成しても良い。
【００５７】
また、本実施の形態においては、増大関数および減少関数として、一次関数を利用しているがこれに限定されるものではない。たとえば、増大関数として、０〜π／２の範囲の正弦関数、減少関数として、０〜π／２の範囲の余弦関数を利用しても良い。或いは、他の関数（対数関数や、指数関数）を利用しても良い。
【図面の簡単な説明】
【００５８】
【図１】図１は、本発明の実施の形態にかかる共鳴音付加回路を有する楽音発生装置の構成を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかる楽音発生装置において実行される処理の概略を示すフローチャートである。
【図３】図３は、本実施の形態にかかる条件設定処理の例を示すフローチャートである。
【図４】図４は、インパルス応答係数の例を示す図である。
【図５】図５は、本実施の形態にかかる楽音発生装置において、係数補正および共鳴音データ生成にかかる構成部分のダイヤグラムである。
【図６】図６は、本実施の形態にかかる係数補正処理部において実行される係数補正処理（図２のステップ２０６）の例を示すフローチャートである。
【図７】図７は、インパルス応答係数のクロスフェードを説明する図である。
【図８】図８は、本実施の形態にかかるフィルタリング処理の例を示すフローチャートである。
【図９】図９は、本実施の形態にかかるフィルタリング処理の例を示すフローチャートである。
【図１０】図１０（ａ）、（ｂ）は、インパルス応答係数の例を示すグラフである。
【図１１】図１１（ａ）、（ｂ）は、インパルス応答係数の例を示すグラフである。
【図１２】図１２（ａ）、（ｂ）は、インパルス応答係数のグラフにおいて、クロスフェードポイントＸＰおよびエンドポイントＮ付近の拡大図である。
【図１３】図１３（ａ）、（ｂ）は、インパルス応答係数のグラフにおいて、クロスフェードポイントＸＰおよびエンドポイントＮ付近の拡大図である。
【符号の説明】
【００５９】
１１        ＣＰＵ
１２        入力装置
１３        表示装置
１４        ＲＯＭ
１５        ＲＡＭ
１６        サウンドシステム
１７        楽音発声回路
１８        共鳴音付加回路
３１        インパルス応答係数メモリ
３２        設定条件メモリ
３３        係数補正処理部
３４        補正係数メモリ
３５        楽音信号バッファ
３６        積和演算部
３７        加算部
【図１】
0004548516.tif 000002
【図２】
0004548516.tif 000003
【図３】
0004548516.tif 000004
【図４】
0004548516.tif 000005
【図５】
0004548516.tif 000006
【図６】
0004548516.tif 000007
【図７】
0004548516.tif 000008
【図８】
0004548516.tif 000009
【図９】
0004548516.tif 000010
【図１０】
0004548516.tif 000011
【図１１】
0004548516.tif 000012
【図１２】
0004548516.tif 000013
【図１３】
0004548516.tif 000014