(57)【要約】   【課題】  小規模な回路で、かつ、少ないデータ量で、適切な共鳴音を発生する  【解決手段】  時系列順に供給され、順次遅延された楽音信号データとインパルス応答データメモリ３３から読み出された、対応するインパルス応答係数とをそれぞれ乗算するとともに、各乗算結果を加算した積和演算結果を出力する積和演算手段は、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する、複数の積和演算ブロック６０−１〜６０−２８を有する。積和演算ブロックからの積和演算結果は、乗算回路６２−１〜６２−２８により、所定の増幅率でそれぞれ増幅され、加算回路６３において加算されて、共鳴音データとして出力される。【選択図】  図６
2010002792.tif 000002
【特許請求の範囲】
【請求項１】
複数個のインパルス応答係数を記憶したインパルス応答係数メモリと、
時系列順に供給される楽音信号データを遅延させ、当該遅延された楽音信号データと前記インパルス応答係数メモリから読み出された、対応するインパルス応答係数とをそれぞれ乗算するとともに、各乗算結果を加算した積和演算結果を出力する積和演算手段と、を備え、
前記積和演算手段は、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する、複数の積和演算ブロックを有し、
さらに、前記積和演算手段の前記積和演算ブロックからの積和演算結果をそれぞれ受け入れ、前記積和演算出力を所定の増幅率でそれぞれ増幅する複数の乗算手段を有する出力制御手段と、
前記出力制御手段の前記複数の乗算手段からの出力を加算して、共鳴音データとして出力する加算手段と、を備えたことを特徴とする共鳴音発生装置。
【請求項２】
前記出力制御手段が、前記乗算手段のそれぞれに対して出力する増幅率を算出する増幅率算出手段を有し、
前記増幅率算出手段が、前記積和演算ブロックのうち、楽音信号データの遅延の度合いが大きくなるのにしたがって、当該積和演算ブロックに接続された乗算手段に対する増幅率が所定の初期値から小さくなるように、或いは、増幅率が所定の初期値から大きくなるように増幅率を算出することを特徴とする請求項１に記載の共鳴音発生装置。
【請求項３】
前記増幅率算出手段が、前記増幅率における減少或いは増加の開始時の値を変更し、或いは、前記遅延の度合いに応じた増幅率の減少或いは増加の度合いを変更することが可能であることを特徴とする請求項２に記載の共鳴音発生装置。
【請求項４】
請求項２または３に記載の共鳴音発生装置と、
波形データを格納した波形データメモリと、
前記波形データメモリに波形データを読み出して、波形データに基づき、指定された所定の音高の楽音信号データを生成する楽音発生手段と、
共鳴音の共鳴度合いを制御するダンパペダルとを備えた電子楽器であって、
前記出力制御手段の増幅率算出手段が、前記ダンパペダルの状態にしたがって、前記増幅率を算出することを特徴とする電子楽器。
【請求項５】
前記インパルス応答係数メモリが、ピアノのダンパペダルのオン状態のときに相当するインパルス応答係数を格納し、
前記出力制御手段の増幅率算出手段が、前記ダンパペダルがオフ状態のときに、前記積和演算ブロックのうち楽音信号データの遅延の度合いが大きくなるのにしたがって、当該積和演算ブロックに接続された乗算手段に対する増幅率が小さくなるような増幅率を算出して、算出された増幅率を、前記出力制御手段の乗算手段に出力することを特徴とする請求項４に記載の電子楽器。
【請求項６】
前記ダンパペダルが、フルペダルの状態、ハーフペダルの状態およびオフの状態の何れかを示し、
前記出力制御手段の増幅率算出手段が、フルペダルの状態における第１の増幅率、ハーフペダルの状態における、対応する第２の増幅率、および、オフの状態における、対応する第３の増幅率について、
第１の増幅率≧第２の増幅率≧第３の増幅率
となるように増幅率を算出することを特徴とする請求項５に記載の電子楽器。
【請求項７】
複数個のインパルス応答係数を記憶したインパルス応答係数メモリを含む記憶装置を備えたコンピュータを、
時系列順に供給される楽音信号データを遅延させ、当該遅延された楽音信号データと前記インパルス応答係数メモリから読み出された、対応するインパルス応答係数とをそれぞれ乗算するとともに、各乗算結果を加算した積和演算結果を出力する積和演算手段であって、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する、複数の積和演算ブロックを有する積和演算手段、
前記積和演算手段の前記積和演算ブロックからの積和演算結果をそれぞれ受け入れ、前記積和演算出力を所定の増幅率でそれぞれ増幅する複数の乗算手段を有する出力制御手段、並びに、
前記出力制御手段の前記複数の乗算手段からの出力を加算して、共鳴音データとして出力する加算手段、として機能させることを特徴とする共鳴音発生プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽音に付加すべき共鳴音を生成する共鳴音発生装置、当該共鳴音発生装置を備えた電子楽器、および、共鳴音発生プログラムに関する。
【背景技術】
【０００２】
楽音に付加するための共鳴音を生成する共鳴音発生装置は、ディジタルの楽音信号データを受け入れて、楽音信号データにディジタルフィルタによるフィルタ処理を施して共鳴音データを生成するのが一般的である。フィルタ処理においては、ＦＩＲ（有限インパルス応答：Finite Impulse Response）フィルタ或いはＩＩＲ（無限インパルス応答：Infinite Impulse
Response）フィルタが利用される。
【０００３】
ＦＩＲフィルタを利用する場合には、入力された楽音信号のデータＸ［ｎ−ｋ］（ｋ＝０，１，２，・・・，ｎ−１）と、音楽ホールの残響特性などから得たインパルス応答ａ［ｋ］を畳み込み演算することで、共鳴音のデータＳ［ｎ］＝ΣＸ［ｎ−ｋ］×ａ［ｋ］を得ることができる。
【０００４】
たとえば、特許文献１には、高音質を得るために、インパルス応答の直接音部の畳み込みを実行する信号処理系と、インパルス応答の反射音部の畳み込みを実行する信号処理系とを別個に並列して設け、反射音部の畳み込みを実行する信号処理系では、直接音部の畳み込みを実行する信号処理系よりも低いサンプリング信号にダウンサンプリングした信号を用いる技術が提案されている。
【０００５】
また、特許文献２には、遅延素子からの楽音信号データと乗算する共鳴係数のそれぞれを、発音すべき楽音の音高などにしたがって変化させて、楽音信号データと共鳴係数とを乗算し、かつ、乗算結果を加算するような共鳴装置が開示されている。
【特許文献１】特開２００７−２０２０２０号公報
【特許文献２】特開２００２−３１１９５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１のように、二つの信号処理系を並列させる構成では、２つのＦＩＲフィルタを含む畳み込み演算回路が必要であるだけでなく、２系列のインパルス応答データが必要である。したがって、多くの回路要素やデータを必要とする。また、２つの信号処理系を並列に設けているため、インパルス応答係数が「０」となって何れか一方の信号処理系が実質的に演算を行わないような状況も起こりえるため、回路および演算に無駄が生じる場合がある。
【０００７】
また、特許文献２に記載された共鳴装置においては、楽音の状況にしたがって、全ての共鳴係数を変更する必要がある。フィルタのタップ数が多い（たとえば、数千〜数万タップ）場合には、共鳴係数の演算に著しく時間を要する。また、テーブルにより共鳴係数を保持する場合にも、テーブルのデータ量は膨大なものとなる。
【０００８】
本発明は、小規模な回路で、かつ、少ないデータ量で、適切な共鳴音を発生することができる共鳴音発生装置、電子楽器および共鳴音発生プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の目的は、複数個のインパルス応答係数を記憶したインパルス応答係数メモリと、
時系列順に供給される楽音信号データを遅延させ、当該遅延された楽音信号データと前記インパルス応答係数メモリから読み出された、対応するインパルス応答係数とをそれぞれ乗算するとともに、各乗算結果を加算した積和演算結果を出力する積和演算手段と、を備え、
前記積和演算手段は、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する、複数の積和演算ブロックを有し、
さらに、前記積和演算手段の前記積和演算ブロックからの積和演算結果をそれぞれ受け入れ、前記積和演算出力を所定の増幅率でそれぞれ増幅する複数の乗算手段を有する出力制御手段と、
前記出力制御手段の前記複数の乗算手段からの出力を加算して、共鳴音データとして出力する加算手段と、を備えたことを特徴とする共鳴音発生装置により達成される。
【００１０】
好ましい実施態様においては、前記出力制御手段が、前記乗算手段のそれぞれに対して出力する増幅率を算出する増幅率算出手段を有し、
前記増幅率算出手段が、前記積和演算ブロックのうち、楽音信号データの遅延の度合いが大きくなるのにしたがって、当該積和演算ブロックに接続された乗算手段に対する増幅率が所定の初期値から小さくなるように、或いは、増幅率が所定の初期値から大きくなるように増幅率を算出する。
【００１１】
より好ましい実施態様においては、前記増幅率算出手段が、前記増幅率における減少或いは増加の開始時の値を変更し、或いは、前記遅延の度合いに応じた増幅率の減少或いは増加の度合いを変更することが可能である。
【００１２】
また、本発明の目的は、上述した共鳴音発生装置と、
波形データを格納した波形データメモリと、
前記波形データメモリに波形データを読み出して、波形データに基づき、指定された所定の音高の楽音信号データを生成する楽音発生手段と、
共鳴音の共鳴度合いを制御するダンパペダルとを備えた電子楽器であって、
前記出力制御手段の増幅率算出手段が、前記ダンパペダルの状態にしたがって、前記増幅率を算出することを特徴とする電子楽器により達成される。
【００１３】
好ましい実施態様においては、前記インパルス応答係数メモリが、ピアノのダンパペダルのオン状態のときに相当するインパルス応答係数を格納し、
前記出力制御手段の増幅率算出手段が、前記ダンパペダルがオフ状態のときに、前記積和演算ブロックのうち楽音信号データの遅延の度合いが大きくなるのにしたがって、当該積和演算ブロックに接続された乗算手段に対する増幅率が小さくなるような増幅率を算出して、算出された増幅率を、前記出力制御手段の乗算手段に出力する。
【００１４】
好ましい実施態様においては、前記ダンパペダルが、フルペダルの状態、ハーフペダルの状態およびオフの状態の何れかを示し、
前記出力制御手段の増幅率算出手段が、フルペダルの状態における第１の増幅率、ハーフペダルの状態における、対応する第２の増幅率、および、オフの状態における、対応する第３の増幅率について、
第１の増幅率≧第２の増幅率≧第３の増幅率
となるように増幅率を算出する。
【００１５】
また、本発明の目的は、複数個のインパルス応答係数を記憶したインパルス応答係数メモリを含む記憶装置を備えたコンピュータを、
時系列順に供給される楽音信号データを遅延させ、当該遅延された楽音信号データと前記インパルス応答係数メモリから読み出された、対応するインパルス応答係数とをそれぞれ乗算するとともに、各乗算結果を加算した積和演算結果を出力する積和演算手段であって、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する、複数の積和演算ブロックを有する積和演算手段、
前記積和演算手段の前記積和演算ブロックからの積和演算結果をそれぞれ受け入れ、前記積和演算出力を所定の増幅率でそれぞれ増幅する複数の乗算手段を有する出力制御手段、並びに、
前記出力制御手段の前記複数の乗算手段からの出力を加算して、共鳴音データとして出力する加算手段、として機能させることを特徴とする共鳴音発生プログラムにより達成される。
【発明の効果】
【００１６】
本発明によれば、小規模な回路で、かつ、少ないデータ量で、適切な共鳴音を発生することができる共鳴音発生装置、電子楽器および共鳴音発生プログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。本実施の形態においては、電子楽器に共鳴音付加回路を設けている。
【００１８】
図１に示すように、本実施の形態にかかる電子楽器１０は、鍵盤１２、ＣＰＵ１４、ＲＯＭ１６、ＲＡＭ１８、楽音生成部２０、ダンパペダル２１および操作子群２２を有する。鍵盤１２、ＣＰＵ１４、ＲＯＭ１６、ＲＡＭ１８、楽音生成部２０、ダンパペダル２１および操作子群２２は、バス３０を介して接続される。楽音生成部２０は、楽音発生回路２４、共鳴音付加回路２６および音響システム２８を有する。
【００１９】
鍵盤１２は、演奏者の押鍵操作に応じて、押鍵された鍵を特定する情報および押鍵された鍵のベロシティを示す情報をＣＰＵ１４に伝達することができる。
【００２０】
ＣＰＵ１４は、システム制御、操作子群２２を構成するスイッチの操作や鍵盤１２を構成する鍵の操作の検出、押鍵された鍵に応じた音高の楽音データを生成させるため、楽音生成部２０に与える種々の制御信号の生成、共鳴音付加回路２６に与える制御信号の生成などを実行する。
【００２１】
ＲＯＭ１６は、スイッチや鍵の操作を検出するプログラム、楽音生成部２０の楽音発生回路２４に与える制御信号の生成プログラム、共鳴音付加回路２６に出力する制御信号の生成プログラムなど、種々のプログラム、プログラムの実行の際に使用される定数、楽音生成部２０の楽音発生回路２４において生成される楽音信号データのもととなる波形データ、共鳴音付加回路２６にて用いられる、インパルス応答係数を含むインパルス応答データなどを記憶する。ＲＡＭ１８は、プログラムの実行の過程で必要な変数、演算により得られた値、パラメータ、入力データ、出力データなどを一時的に記憶する。
【００２２】
本実施の形態において、ダンパペダル２１は、オン・オフのみではなくその中間の段階を示す信号を出力することができる。たとえば、ダンパペダル２１には縦方向（ペダルの回動軸と垂直方向）に２つのスイッチ（図示せず）が配置され、第１スイッチおよび第２スイッチの双方がオフの状態（ダンパペダル２１が踏み込まれていない状態）、第１スイッチのみがオンされている状態（ダンパペダル２１が途中まで踏み込まれている状態）、および、第１スイッチおよび第２スイッチの双方がオンされている状態（ダンパペダル２１がフルに踏み込まれている状態）を作ることができる。このような構成により、２つのスイッチ双方がオンであるとフルペダル、第１スイッチのみがオンであるとハーフペダル、双方のスイッチがオフであると、ペダルのオフという３つの状態を作ることが可能となる。
【００２３】
或いは、ダンパペダル２１の踏み込み量に応じて抵抗値が変更できる可変抵抗値を備え、抵抗値に応じた信号を出力するように構成しても良い。
【００２４】
図２は、本実施の形態にかかる楽音発生回路、共鳴音付加回路およびこれらに関連する構成部材の例を示すブロックダイヤグラムである。
【００２５】
図１および図２に示すように、楽音発生回路２４は、ＣＰＵ１４から与えられた、発音すべき楽音の音色を示す音色情報、発音すべき音高を示す音高情報およびベロシティ情報に基づいて、所定の音色で、かつ、所定音高の楽音信号データを出力する。上記音色情報、音高情報およびベロシティ情報が第１の制御信号を構成する。
【００２６】
第１の制御信号に含まれる音高情報およびベロシティ情報は、鍵盤１２からの信号に基づいて、ＣＰＵ１４により生成される。また、第１の制御信号に含まれる音色情報は、操作子群２２に含まれるスイッチの操作情報に基づいて、ＣＰＵ１４により生成される。
【００２７】
共鳴音付加回路２６は、複数の畳み込み演算回路を有する共鳴音発生回路３０、出力レベルを調整する乗算回路３１および加算回路３２を備え、第２の制御信号にしたがって、楽音信号データに基づく共鳴音データを生成し、楽音信号データと共鳴音データとを合成した合成データを生成して出力する。
【００２８】
共鳴音発生回路３０は、楽音発生回路２４から出力された楽音信号データと、インパルス応答データメモリ３３から読み出された対応するインパルス応答係数とを乗算し、乗算結果を加算して共鳴音データとして出力する。乗算回路３１は、共鳴音データを所定の増幅率にて乗算する。本実施の形態においては、乗算回路３１における増幅率は一定である。また、この乗算回路３１は省略されていても良い。加算回路３２は、楽音信号データと共鳴音データとを加算して、合成データを出力する。
【００２９】
図２に示すように、共鳴音発生回路３０には第２の制御信号が与えられる。ＣＰＵ１２は、ダンパペダル２１の状態にしたがった第２の制御信号を生成して共鳴音発生回路３０に出力する。
【００３０】
音響システム２８は、Ｄ／Ａ変換器、増幅回路およびスピーカを有し、合成データをアナログ信号に変換して、アナログ信号を増幅し、スピーカから放音する。
【００３１】
図３は、本実施の形態にかかる楽音発生回路および波形メモリの構成例を示すブロックダイヤグラムである。図３に示すように、本実施の形態にかかる楽音発生回路２４は、波形再生回路３６、エンベロープ生成回路３７および乗算回路３８を有する。
【００３２】
波形メモリ３５には、ピアノ音色データ、ギター系音色データ、ヴァイオリン系音色データなど、種々の音色の波形データが記憶されている。波形メモリ３５は、たとえばＲＯＭ１６により実現される。波形再生回路３６は、波形メモリ３５に記憶された種々の音色のデータから、第１の制御信号に含まれる音色情報にしたがって所定の種別（たとえば、ピアノ音色）の波形データを、第１の制御信号に含まれる音高情報にしたがって読み出す。また、エンベロープ生成回路３７は、第１の制御信号に含まれるベロシティ情報にしたがったエンベロープデータを出力する。波形データとエンベロープデータとは、乗算回路３８において乗算され、楽音信号データＸ［ｎ］が出力される。
【００３３】
また、本実施の形態においては、インパルス応答データメモリ３３に、楽音信号データのそれぞれの値と乗算されるインパルス応答係数を含むインパルス応答データが格納される。インパルス応答データメモリには、音色ごとのインパルス応答データが格納される。図３に示す波形メモリを使用する場合には、ピアノ音色インパルス応答データ、フォークギター音色インパルス応答データ、ガットギター音色インパルス応答データ、チェロ音色インパルス応答データ、ヴァイオリン音色インパルスデータが、インパルス応答データメモリ３３に格納される。たとえば、インパルス応答データメモリ３３はＲＯＭ１６により実現される。また、第２の制御信号には、インパルス応答データを選択する情報、および、共鳴音発生回路３０に含まれる乗算回路のそれぞれに与えられる増幅率が含まれる。
【００３４】
一般的な積和演算回路においては、以下の式にしたがった積和演算が実行される。
【００３５】
Ｓ［ｎ］＝ΣＸ［ｎ−ｋ］×ａ［ｋ］  （ｋ＝０，１，２，・・・，ｍ）
Ｓ［ｎ］は、積和演算結果である。また、Ｘ［ｎ−ｋ］は楽音信号データ、ａ［ｋ］はインパルス応答係数である。
【００３６】
図４は、一般的な積和演算回路の概略を示すブロックダイヤグラムである。図４に示すように積和演算回路は、ＦＩＲフィルタであり、入力されたデータ（たとえば、楽音信号データＸ［ｎ］）を受け入れて、これを１クロック分だけ遅延して出力する複数の遅延回路４０−１〜４０−（ｎ−１）、楽音信号データ、或いは、遅延回路から出力された遅延された楽音信号データを受け入れて、受け入れた楽音信号データと、インパルス応答係数ａ［ｋ］とを乗算する乗算回路４１−０〜４１−（ｎ−１）、および、乗算回路４１−０〜４１−（ｎ−１）の出力を加算する加算回路４２−１〜４２−（ｎ−１）とを有している。図４に示す例では、加算回路４２−１は、第０番の乗算回路４１−０の出力と第１番の乗算回路４１−１の出力とを加算する。また、加算回路４２−ｉ（ｉ≧２）は、前段の加算回路４２−（ｉ−１）の出力と、第ｉ番の乗算回路４１−ｉの出力とを加算する。
【００３７】
また、図４に示す例では、最後尾（第（ｎ−１）番）の遅延回路４０−（ｎ−１）からの出力が、遅延された楽音信号データ（遅延楽音信号データ）Ｙ（ｎ）として出力できるようになっている。
【００３８】
ＦＩＲフィルタのタップ数は、たとえば１０２４など大きいものであるため、図４に示すような回路をそのまま実現しようとすると、多量の遅延回路および乗算回路が必要となる。たとえば、図４に示す例では、そのままでは、１０２３個の遅延回路および加算回路、１０２４個の乗算回路が必要となる。そこで、実際には、パイプラインを利用して、データ読み出し、乗算回路における乗算および加算回路における加算を並列的に実行することで、少数の乗算回路および加算回路によるＦＩＲフィルタを実現している。
【００３９】
たとえば、ＦＩＲフィルタは、図示しないが、遅延された楽音信号データを記憶するとともに、クロックにしたがって楽音信号データをシフトするシフトレジスタと、シフトレジスタにより保持された所定の段の楽音信号データと、当該楽音信号データと乗算すべきインパルス応答係数とを乗算する乗算回路と、乗算回路からの出力と、自身の出力とを累算する加算回路と、を有し、楽音信号データの読み出しおよびインパルス応答係数の読み出し、乗算回路における乗算、並びに、加算回路における累算がパイプライン処理により並列的に実行される。
【００４０】
図５は、パイプラインを説明する図である。図５に示すように、ＦＩＲフィルタは、最初のクロックタイミング（クロック＝０）で、楽音信号データＸ［ｎ］およびインパルス応答係数ａ［０］を取得し（符号５０１参照）、次のクロックタイミング（クロック＝１）で、楽音信号データＸ［ｎ］とインパルス応答係数ａ［０］とを乗算して乗算値Ｚ［０］を得る（符号５１１参照）。クロック＝１のクロックタイミングでは、ＦＩＲフィルタは、上記乗算と並列して、次の楽音信号データＸ［ｎ−１］およびインパルス応答係数ａ［１］を読み出す（符号５０２参照）。
【００４１】
さらに次のクロックタイミング（クロック＝２）で、乗算値Ｚ［０］と元の累算値（初期的には累算値＝０）とが加算されて累算値Ｓ［０］が得られる（符号５２１参照）。クロック＝２のクロックタイミングにおいても、ＦＩＲフィルタにおいては、並列的に、楽音信号データＸ［ｎ−２］およびインパルス応答係数ａ［２］が取得されるとともに（符号５０３参照）、楽音信号データＸ［ｎ−１］とインパルス応答係数ａ［１］とが乗算されて乗算値Ｚ［１］が算出される（符号５１２参照）。
【００４２】
パイプライン処理によって、少数の乗算回路および加算回路によって高速な積和演算が実現される。しかしながら、楽音信号データのサンプリング周波数を４４．１ｋＨｚと考えると、２２．７μｓで積和演算全てを終了させる必要がある。ＦＩＲフィルタの動作クロックを５０ＭＨｚと高速動作を仮定しても、１クロックあたりの時間は２０ｎｓである。したがって、「２２．７μｓ／２０ｎｓ＝１１３５」であり、ＦＩＲフィルタのタップ数は１１００程度となる。実際に、１１００タップ程度のＦＩＲフィルタでは、共鳴音の生成には不十分である。
【００４３】
そこで、本実施の形態においては、共鳴音発生回路３０において、複数タップ、たとえば、１０２４タップの積和演算が可能なＦＩＲフィルタを複数設け、それぞれのＦＩＲフィルタから積和演算結果を出力され、かつ、ＦＩＲフィルタを直列に接続して、上流側のＦＩＲフィルタにより遅延され、出力された遅延楽音信号データを、下流側のＦＩＲフィルタに入力するような構成とした。このような複数のＦＩＲフィルタによれば、各ＦＩＲフィルタから出力された積和演算値を加算することにより、サンプリング周波数を小さくすることなく、より多くのタップ数のＦＩＲフィルタを実現することができる。
【００４４】
図６は、本実施の形態にかかる共鳴音発生回路の例を示すブロックダイヤグラムである。図６に示すように、本実施の形態にかかる共鳴音発生回路３０は、複数（本実施の形態では２８個）のＦＩＲフィルタ６０−１〜６０−２８を有している。ＦＩＲフィルタ６０−１〜６０−２８は、機能的には、図４に示す積和演算回路と同様に、積和演算データＳ（ｎ）および遅延楽音信号データＹ（ｎ）を出力することができる。また、実際には、これらＦＩＲフィルタ６０−１〜６０−２８は、それぞれ、パイプライン演算を用いることで、少数の乗算回路および加算回路によって積和演算を実現している。なお、本実施の形態では、複数のＦＩＲフィルタ６０−１〜６０−２８は、全体としてもＦＩＲフィルタを構成する。したがって、以下の説明では、ＦＩＲフィルタ６０−１〜６０−２８を、それぞれ積和演算ブロック６０−１〜６０−２８とも称する。
【００４５】
本実施の形態にかかる共鳴音発生回路３０においては、積和演算ブロック６０−１〜６０−２７のそれぞれから出力される遅延楽音信号データＹ（ｎ）が、下流側に隣接する積和演算ブロックの楽音信号データとして入力される。たとえば、最上流に位置する積和演算ブロック６０−１の遅延楽音信号データＹ１（ｎ）は、下流に隣接する積和演算ブロック６０−２の楽音信号データＸ２（ｎ）となる。
【００４６】
また、共鳴音発生回路３０は、積和演算ブロック６０−１〜６０−２８のそれぞれの積和演算出力（積和演算データ）Ｓ１（ｎ）〜Ｓ２８（ｎ）を、所定の増幅率を用いて乗算する乗算回路６２−１〜６２−２８を含む出力制御回路６１を有している。乗算回路６２−１〜６２−２８のそれぞれの増幅率は、ダンパペダル２１の状態などにしたがって、ＣＰＵ１４により演算され、第２の制御信号としてＣＰＵ１４から共鳴音発生回路３０の出力制御回路６１に与えられる。この増幅率の演算については後に詳述する。
【００４７】
共鳴音発生回路３０は、乗算回路６２−１〜６２−８の出力を加算（累算）する加算（累算）回路６３を有する。加算（累算）回路は、一方の入力を自身の出力（累算値）として、また、他方の入力を積和演算ブロック６０−１〜６０−２８の何れか１つから出力された積和演算値として、累算値と、積和演算ブロック６０−１〜６０−２８の何れかからの積和演算値とを累算していく。全ての積和演算ブロックの積和演算値を累算することで、共鳴音データＳ［ｎ］を得ることができる。
【００４８】
本実施の形態においては、それぞれが１０２４タップのＦＩＲフィルタ（積和演算ブロック）を２８個用いることで、２８６７２タップのＦＩＲフィルタが実現される。また、加算（累算）回路６３においては、２８回の累算処理を要するが、１０２４タップのＦＩＲフィルタ処理および累算処理により、１０２４＋２８＝１０７６クロック程度しか要することはなく、上述した１１３５クロックの範囲内におさまる。
【００４９】
次に、上述したような構成の電子楽器１０において実行される処理について説明する。図７は、本実施の形態にかかる電子楽器１０において実行される処理の概略を示すフローチャートである。図７に示すように、ＣＰＵ１４は、ＲＡＭ１８に格納された種々のパラメータを初期化する処理（イニシャライズ）を実行する（ステップ７０１）。次いで、ＣＰＵ１４は、操作子群２２のスイッチの操作、および、鍵盤１２の鍵の操作を検出し、操作されたスイッチや鍵の情報をＲＡＭ１８に格納する（ステップ７０２）。また、ＣＰＵ１４は、ダンパペダル２１の踏み込み状態を検出する（ステップ７０３）。ステップ７０３のペダル処理において、ＣＰＵ１４は、ダンパペダル２１の現在のペダル状態が、フルペダル、ハーフペダル或いはオフの何れかであるかを検出する。次いで、ＣＰＵ１４は、ＲＡＭ１５に格納されたペダル状態と、現在のペダル状態とを比較して、ペダル状態に変化があった場合には、ペダル状態に変化があったことを示す情報をＲＡＭ１５に格納する（たとえば、フラグとオンにする）とともに、ＲＡＭ１５中のペダル状態を最新のものに変更する。
【００５０】
ＣＰＵ１４は、出力制御回路６１の乗算回路の各々を制御するための、共鳴度目標値を算出する共鳴度目標値算出処理（ステップ７０４）、および、共鳴度の現在値を算出する共鳴度演算処理（ステップ７０５）を実行する。共鳴度目標値算出処理および共鳴度演算処理については後に詳述する。また、ＣＰＵ１４は、ステップ７０２でオンされたと判断された鍵について、その発音を開始させるべく、音色、音高およびベロシティを示す情報を含む第１の制御信号を、楽音発生回路２４に出力する。これにより、押鍵された鍵の音高に相当する楽音信号データが、楽音発生回路２４から出力される(ステップ７０６)。
【００５１】
図８は、本実施の形態にかかる共鳴度目標値算出処理を詳細に示すフローチャートである。図８に示すように、ＣＰＵ１４は、ペダル処理によりＲＡＭ１５に格納された情報を参照して、ダンパペダル２１の状態に変化があったか否かを判断する（ステップ８０１）。ステップ８０１でＹｅｓと判断された場合には、ＣＰＵ１４は、ダンパペダル２１の最新の状態がペダルオフ状態であるか否かを判断する（ステップ８０２）。ステップ８０３でＹｅｓと判断された場合には、現在の鍵盤の押鍵数に応じた値「押鍵数×ａ＋Ｃ」を算出する（ステップ８０３）。ａは係数、Ｃは定数であり、たとえば、ａ＝８、Ｃ＝３０と定められる。
【００５２】
次いで、ＣＰＵ１４は、ステップ８０３で算出された値が、ハーフペダルの状態に対応する共鳴度目標値８３以上であるか否かを判断する（ステップ８０４）。ステップ８０４でＮｏと判断された場合には、上記ステップ８０３で算出された値がそのまま共鳴度目標値となる。その一方、ステップ８０３でＹｅｓと判断された場合には、ＣＰＵ１１は、共鳴度目標値を、「８３」と決定する（ステップ８０７）。共鳴度目標値は、ＲＡＭ１５に記憶される。
【００５３】
ステップ８０２でＮｏと判断された場合には、ＣＰＵ１１は、ＲＡＭ１５を参照して、ダンパペダル２１の最新の状態が、フルペダルの状態であるか否かを判断する（ステップ８０５）。ステップ８０５でＮｏ、つまり、ダンパペダル２１がハーフペダルの状態である場合には、ＣＰＵ１１は、共鳴度目標値を「８３」とする（ステップ８０５）。その一方、ステップ８０２でＹｅｓ、つまり、ダンパペダル２１がフルペダルの状態である場合には、ＣＰＵ１１は、共鳴度目標値を「１００」とする（ステップ８０６）。
【００５４】
図９は、本実施の形態にかかる共鳴度演算処理を詳細に示すフローチャートである。共鳴度演算処理は、共鳴度現在値を、徐々に共鳴度目標値に近づけていくことで、共鳴音中にノイズが生じることを防止している。また、本実施の形態においては、乗算回路６２−ｎにおいて、共鳴度現在値に応じて、各積和演算ブロックの積和演算出力Ｓｉ（ｎ）と、増幅率Ａ（ｉ）とが乗算される。この増幅率Ａ（ｉ）も積和演算ブロックの番号ｉと共鳴度現在値とによって算出される。
【００５５】
複数の積和演算ブロック６０−１〜６０−２８は、積和演算ブロック６０−ｉのｉが小さくなるほど、時間軸上、現在に近い楽音信号データとの積和演算が行なわれている。本実施の形態においては、基本的に、増幅率Ａ（ｉ）は、時間軸上の現在に近い位置が最大値を示し、その後、時間軸上で過去になるのにしたがって値が一定或いは減少するような値をとる。
【００５６】
図９に示すように、ＣＰＵ１１は、ＲＡＭ１５に格納されている共鳴度現在値および共鳴度目標値を取得して（ステップ９０１）、共鳴度現在値と共鳴度目標値とを比較する（ステップ９０２）。
【００５７】
共鳴度現在値が共鳴度目標値より小さい場合（現在値＜目標値）には、ＣＰＵ１４は、共鳴度現在値をインクリメントする（ステップ９０３）。共鳴度現在値が共鳴度目標値より大きい場合（現在値＞目標値）には、ＣＰＵ１４は、共鳴度現在値をデクリメントする（ステップ９０４）。得られた共鳴度現在値はＲＡＭ１５に記憶される。なお、両者が等しい場合（現在値＝目標値）にはＣＰＵ１４は共鳴度現在値についての処理は行なわない。
【００５８】
次いで、ＣＰＵ１４は、積和演算ブロック６０−１〜６０−２８を特定するためのパラメータｉを「１」に初期化し（ステップ９０６）、ｉが「２９」以上になるまで（ステップ９０６でＹｅｓ）、ステップ９０７〜９１１を繰り返す。
【００５９】
ＣＰＵ１４は、パラメータｉが４以下（つまり、１≦ｉ≦４）であれば、当該パラメータｉについての増幅率Ａ（ｉ）を「１」に設定する（ステップ９０８）。得られた増幅率Ａ（ｉ）はＲＡＭ１５に記憶される。パラメータｉが５以上（つまり、５≦ｉ≦２８）であれば、ＣＰＵ１４は、共鳴度現在値が１００の場合には（ステップ９０９でＹｅｓ）、当該パラメータｉについての増幅率Ａ（ｉ）を「１」に設定する（ステップ９０８）。その一方、共鳴度現在値が１００でない（つまり１００未満）である場合には、ＣＰＵ１４は、当該パラメータについての増幅率Ａ（ｉ）を以下のように算出する（ステップ９１０）。
【００６０】
増幅率Ａ（ｉ）＝（共鳴度現在値＊（２９−ｉ）／２４００
ステップ９１０における増幅率Ａ（ｉ）は、ｉが大きくなるのにしたがって減少し、ｉが「２９」のときに値が「０」となる関数となっている。
【００６１】
ＣＰＵ１４は、パラメータｉをインクリメントして（ステップ９１１）、ステップ９０６に戻る。
【００６２】
増幅率Ａ（ｉ）は、ｉについて以下の関数となる。共鳴度現在値が１００であれば、増幅率Ａ（ｉ）は、定数「１」である。共鳴度現在値が１００未満の場合には、増幅率Ａ（ｉ）は、ｉが１〜４のときには一定値「１」であり、ｉ＝５以上のときには、ｉが大きくなるのにしたがって減少し、ｉが「２９」のときに値が「０」となる。また、この増幅率Ａ（ｉ）は、ｉ＝５、つまり、減少の開始時の値が、共鳴度現在値により変化する。図１０（ａ）、（ｂ）および（ｃ）は、それぞれ、共鳴度現在値が「３０」、「８０」および「１００」のときの増幅率を示すグラフである。図１０（ａ）、（ｂ）において、パラメータｉ（積和演算ブロックの番号）が１〜４の範囲では増幅率Ａ（ｉ）は「１」である。その後、パラメータｉ（積和演算ブロックの番号）が５〜２８の範囲では、増幅率Ａ（ｉ）＝（共鳴度現在値＊（２９−ｉ）／２４００という演算式にしたがって、パラメータｉにしたがった所定の値から増幅率Ａ（ｉ）は単調減少する。また、パラメータｉ＝５における増幅率Ａ（５）、つまり、単調減少する増幅率における初期値（最大値）は、共鳴度現在値が大きくなるのにしたがって大きくなっている。
【００６３】
ＣＰＵ１４は、算出した増幅率Ａ（ｉ）（ｉ＝１〜２８）を、積和演算ブロック６０−ｉに接続された乗算回路６２−ｉにそれぞれ出力する。以下、積和演算ブロック６０−ｉ、乗算回路６２−ｉおよび増幅率Ａ（ｉ）について説明する。
【００６４】
図１１（ａ）、（ｂ）は、ピアノのインパルス応答係数の例を示すグラフである。図１１（ａ）は、ダンパペダルがフルペダルの状態におけるインパルス応答係数、図１１（ｂ）は、ダンパペダルがオフの状態におけるインパルス応答係数である。図１１（ａ）、（ｂ）から理解できるように、フルペダルの状態では、ピアノの弦がダンパーから開放されるため、大きな弦共鳴が、フレームや板の共鳴に加わり、かつ、その共鳴が長時間にわたって継続する。それに比較して、ダンパペダルがオフ状態の場合には、ダンパーによって弦が押さえられているため、押鍵された鍵以外の鍵の弦共鳴はほとんどなく、その全体的なレベルが小さい。また、共鳴が継続される時間も、フルペダルの状態と比較すると短い。
【００６５】
そこで、ダンパペダルがフルペダルの状態におけるインパルス応答係数のみを、ＲＯＭ１６などのメモリに保持し、ダンパペダルがオフ状態のときには、インパルス応答係数に、所定の増幅率を乗じて、インパルス応答係数の値を重み付けすることが考えられる。しかしながら、多数のインパルス応答係数（たとえば、本実施の形態では１０２４×２８＝２８６７２タップ）を重み付け演算するためには、乗算回数が非常に多くなる。
【００６６】
本実施の形態においては、所定のタップ数（１０２４タップ）の積和演算ブロック６０−１〜６０−２８の積和演算出力のそれぞれに、増幅率に基づく重みを与え、乗算回路６２−１〜６２−２８において、積和演算出力と、所定の増幅率とを乗算し、重み付けされた積和演算出力を、加算（累算）回路６３により累算して、最終的な積和演算結果を共鳴音データとして出力している。このように、直列に接続された積和演算ブロックのそれぞれの積和演算出力と増幅率とを乗算することで、重み付け演算による乗算の回数を著しく小さくすることが可能となる。
【００６７】
特に、本実施の形態においては、ダンパペダルがフルペダルの状態におけるインパルス応答係数を、インパルス応答係数メモリ３３に格納しておき、フルペダルのときには、増幅率を「１」として、積和演算結果がそのまま出力され、かつ、それ以外のときには、１以下の増幅率で重み付けをすることにより、ハーフペダルの状態や、ペダルのオフ状態における共鳴音を適切に生成することができる。
【００６８】
本実施の形態において、複数の積和演算ブロック６０−１〜６０−２８は、積和演算ブロック６０−ｉのｉが小さくなるほど、時間軸上、現在に近い楽音信号データとの積和演算が行なわれている。したがって、増幅率は、時間軸上の現在に近い位置が最大値を示し、その後、時間軸上で過去になるのにしたがって値が減少している。
【００６９】
本実施の形態によれば、共鳴音発生回路３０は、複数の積和演算ブロック６０−１〜６０−２８を有し、積和演算ブロック６０−１〜６０−２８は、それぞれ、所定のタップ数を有し、楽音信号データとインパルス応答係数データとの乗算結果を加算した積和演算結果を出力するとともに、遅延された楽音信号データを、直列に接続された次の段の積和演算ブロックに供給する楽音信号データとなるように出力する。積和演算ブロックのそれぞれの積和演算出力は、出力制御部６１の乗算回路６２−１〜６２−２８により、所定の増幅率Ａ（ｉ）（ｉ＝１〜２８）と乗算され、さらに加算回路６３において加算される。
【００７０】
したがって、積和演算によるインパルス応答係数のそれぞれを変更せず、一定のタップ数の積和演算ブロックからの積和演算出力の重みを変更することで、処理の負担を増大させることなく、所望の共鳴音を生成することが可能となる。また、一連のインパルス応答係数の組を多数有する必要なく、共鳴音を変化させることが可能となる。
【００７１】
また、本実施の形態においては、ＣＰＵ１４は、乗算手段のそれぞれに対して出力する増幅率を算出する。ＣＰＵ１４は、初期値が「１」であり、かつ、積和演算ブロックのうち、楽音信号データの遅延の度合いが大きくなるのにしたがって、積和演算ブロックに接続された乗算回路に対する増幅率が小さくなるように増幅率を算出する。たとえば、インパルス応答係数として、もっとも共鳴度合いの大きな楽音に対するインパルス応答係数を、インパルス応答データメモリ３３に格納しておき、必要に応じて、楽音信号データの遅延の度合いが大きくなるのにしたがって該積和演算ブロックに接続された乗算回路に対する増幅率が小さくなるように重み付けすることで、共鳴の度合いが適切に小さくなった共鳴音データを生成することが可能となる。
【００７２】
また、本実施の形態においては、ＣＰＵ１４は、増幅率の減少の開始時の値を変更し、或いは、遅延の度合いに応じた増幅率の減少の度合いを変更することが可能である。これにより、共鳴の度合いを任意に変更することが可能となる。
【００７３】
さらに、本実施の形態においては、ＣＰＵ１４は、ダンパペダルの状態にしたがって、積和演算ブロックに接続された乗算回路に対する増幅率をそれぞれ変更することができる。これにより、電子楽器のダンパペダルの状態に基づいて適切に共鳴の度合いが異なる共鳴音データを生成することが可能となる。
【００７４】
特に、本実施の形態においては、ＣＰＵ１４は、ダンパペダル２１がオフ状態のときに、積和演算ブロックのうち、楽音信号データの遅延の度合いが大きくなるのにしたがって、積和演算ブロックに接続された乗算回路の増幅率が小さくなるような増幅率を算出する。これにより、ダンパペダル２１のオフ状態のときには、ダンパペダル２１がオン状態のときと比較して、時間の経過にともなって共鳴の度合いが寄り小さくなるような共鳴音データを生成することができる。
【００７５】
また、本実施の形態においては、ダンパペダル２１が、フルペダルの状態、ハーフペダルの状態およびオフの状態の何れかを示し、ＣＰＵ１４は、フルペダルの状態における第１の増幅率、ハーフペダルの状態における、対応する第２の増幅率、および、オフの状態における、対応する第３の増幅率について、第１の増幅率≧第２の増幅率≧第３の増幅率、となるように増幅率を算出している。これにより、ダンパペダル２１の踏み込み状態に応じて、適切な共鳴の度合いの共鳴音データを生成することが可能となる。
【００７６】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【００７７】
たとえば、前記実施の形態においては、１０２４タップのＦＩＲフィルタを試用しているが、ＦＩＲのフィルタのタップ数はこれに限定されるものではなく楽音信号データのサンプリング周波数（第１のサンプリング周波数ｆｓ１）およびＦＩＲフィルタの処理速度に応じて決定すれば良い。
【００７８】
本実施の形態によれば、所定の番号以上の積和演算ブロック（たとえば、ｉ＝５）について、増幅率Ａ（ｉ）を、増幅率Ａ（ｉ）＝（共鳴度現在値＊（２９−ｉ）／２４００という数式にて算出している。しかしながら、上述したような数式に限定されない。図１２（ａ）〜（ｃ）は、それぞれ、共鳴度現在値が「３０」、「８０」および「１００」のときの増幅率の他の例を示すグラフである。この例においては、積和演算ブロックの番号（パラメータ）ｉが４以下（つまり、１≦ｉ≦４）であれば、増幅率Ａ（ｉ）は「１」であり、積和演算ブロックの番号ｉが、５≦ｉ≦２８では、増幅率Ａ（ｉ）は下記の式により演算される。
【００７９】
Ａ（ｉ）＝（−（１００−共鳴度現在値）／ａ）＊（ｉ−５）
＋（（１−Ｃ）／１００）＊共鳴度現在値＋Ｃ
ａは減少の度合いを決定する定数、また、Ｃ（０＜Ｃ＜１）は、ｉ＝５のときの増幅率Ａ（ｉ）の初期値を示す定数である。この例では、共鳴度現在値が大きくなるのにしたがって、ｉ＝５のときの初期値が大きくなり、かつ、ｉの増加に伴う増幅率Ａ（ｉ）の減少の度合いが、共鳴度現在値が大きくなるのにしたがって小さくなる。
【００８０】
また、前記実施の形態においては、ダンパペダルがフルペダルの状態におけるインパルス応答係数のみを、ＲＯＭなどのメモリに保持し、ペダルの踏み込みが小さくなるのにしたがって共鳴度を小さくして、上記増幅率Ａ（ｉ）は、ｉが一定の範囲で単調減少するようにしている。しかしながら、これに限定されるものではない。たとえば、ダンパペダルがハーフペダル或いはペダルオフの状態におけるインパルス応答係数を、ＲＯＭなどのメモリに応答して、ペダルの踏み込みが大きくなるのにしたがって、共鳴度を大きくして、増幅率Ａ（ｉ）を、ｉが一定の範囲で増加するようにしても良い。
【００８１】
また、前記実施の形態においては、共鳴度現在値に対する増幅率Ａ（ｉ）を収容したテーブルをＲＯＭなどメモリに記憶し、ＣＰＵ１１は、共鳴度現在値に応じて、テーブルを読み出して、増幅率Ａ（ｉ）を取得しても良い。
【００８２】
また、上記実施の形態においては、鍵盤およびダンパペダルを有する電子楽器に本発明を適用したがこれに限定されるものではない。たとえば、通常のパーソナルコンピュータの記憶装置に、上記実施の形態にかかる共鳴音発生回路を実現する処理プログラムを格納し、当該パーソナルコンピュータを、図６〜図９にかかる処理を実現する種々の手段として機能させれば良い。
【図面の簡単な説明】
【００８３】
【図１】図１は、本発明の実施の形態にかかる電子楽器の構成を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかる楽音発生回路、共鳴音付加回路およびこれらに関連する構成部材の例を示すブロックダイヤグラムである。
【図３】図３は、本実施の形態にかかる楽音発生回路および波形メモリの構成例を示すブロックダイヤグラムである。
【図４】図４は、一般的な積和演算回路の概略を示すブロックダイヤグラムである。
【図５】図５は、パイプラインを説明する図である。
【図６】図６は、本実施の形態にかかる共鳴音発生回路の例を示すブロックダイヤグラムである。
【図７】図７は、本実施の形態にかかる電子楽器１０において実行される処理の概略を示すフローチャートである。
【図８】図８は、本実施の形態にかかる共鳴度目標値算出処理を詳細に示すフローチャートである。
【図９】図９は、本実施の形態にかかる共鳴度演算処理を詳細に示すフローチャートである。
【図１０】図１０（ａ）、（ｂ）および（ｃ）は、それぞれ、共鳴度現在値が「３０」、「８０」および「１００」のときの増幅率を示すグラフである。
【図１１】図１１（ａ）、（ｂ）は、ピアノのインパルス応答係数の例を示すグラフである。
【図１２】図１２（ａ）〜（ｃ）は、それぞれ、共鳴度現在値が「３０」、「８０」および「１００」のときの増幅率の他の例を示すグラフである。
【符号の説明】
【００８４】
１０        電子楽器
１２        鍵盤
１４        ＣＰＵ
１６        ＲＯＭ
１８        ＲＡＭ
２０        楽音生成部
２１        ダンパペダル
２２        操作子群
２４        楽音発生回路
２６        共鳴音付加回路
２８        音響システム
３０        共鳴音発生回路
３１        乗算回路
３２        加算回路
【図１】
2010002792.tif 000003
【図２】
2010002792.tif 000004
【図３】
2010002792.tif 000005
【図４】
2010002792.tif 000006
【図５】
2010002792.tif 000007
【図６】
2010002792.tif 000008
【図７】
2010002792.tif 000009
【図８】
2010002792.tif 000010
【図９】
2010002792.tif 000011
【図１０】
2010002792.tif 000012
【図１１】
2010002792.tif 000013
【図１２】
2010002792.tif 000014