(57)【特許請求の範囲】
【請求項１】
所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、
前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、
前記オールパスフィルタは、
前記整数分遅延手段から取り出した整数分遅延出力を入力し、１サンプリング周期だけ遅延して出力するフィードフォワード側遅延手段と、
前記整数分遅延出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第１の乗算手段と、
出力信号を１サンプリング周期だけ遅延して出力するフィードバック側遅延手段と、
前記フィードバック側遅延手段の出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第２の乗算手段と、
前記フィードフォワード側遅延手段の出力と前記第２の乗算手段の乗算結果とを加算し、さらに前記第１の乗算手段の乗算結果を減算し、その結果を出力信号として出力する加算手段と
を備えるとともに、
前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値を、前記フィードフォワード側遅延手段およびフィードバック側遅延手段に設定する手段を備えたことを特徴とする可変遅延装置。
【請求項２】
所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、
前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、
前記オールパスフィルタは、
前記整数分遅延手段から取り出した整数分遅延出力を入力し、１サンプリング周期だけ遅延して出力するフィードフォワード側遅延手段と、
前記整数分遅延出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第１の乗算手段と、
出力信号を１サンプリング周期だけ遅延して出力するフィードバック側遅延手段と、
前記フィードバック側遅延手段の出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第２の乗算手段と、
前記フィードフォワード側遅延手段の出力と前記第２の乗算手段の乗算結果とを加算し、さらに前記第１の乗算手段の乗算結果を減算し、その結果を出力信号として出力する加算手段と
を備えるとともに、
前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値を前記フィードフォワード側遅延手段に設定し、さらに前記フィードバック側遅延手段には、最終的な出力値がディレイ補間による出力値と一致するように算出した値を設定する手段を備えたことを特徴とする可変遅延装置。
【請求項３】
所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、
前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、
前記オールパスフィルタは、
前記小数分の遅延量に応じて与えられる係数を１サンプリング周期だけ遅延して出力する係数遅延手段と、
前記整数分遅延手段から取り出した整数分遅延出力を入力し、該入力信号に、前記係数遅延手段で遅延された係数を乗算する第１の乗算手段と、
出力信号に、前記係数遅延手段を介さずに、前記係数を乗算する第２の乗算手段と、
前記入力信号と前記第２の乗算手段の乗算結果とを加算する第１の加算手段と、
前記第１の加算手段の加算結果を１サンプリング周期だけ遅延して出力する遅延手段と、
前記遅延手段の出力と前記第１の乗算手段の乗算結果とを加算し、その結果を出力信号として出力する第２の加算手段と
を備えるとともに、
前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値に、前記小数分の遅延量に応じて与えられる係数に１を加えた値を乗算し、その計算値を前記遅延手段に設定し、さらに前記係数遅延手段に、前記小数分の遅延量に応じて与えられる係数を設定する手段を備えたことを特徴とする可変遅延装置。
【請求項４】
所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、
前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、
前記オールパスフィルタは、
前記小数分の遅延量に応じて与えられる係数を１サンプリング周期だけ遅延して出力する係数遅延手段と、
前記整数分遅延手段から取り出した整数分遅延出力を入力し、該入力信号に、前記係数遅延手段で遅延された係数を乗算する第１の乗算手段と、
出力信号に、前記係数遅延手段を介さずに、前記係数を乗算する第２の乗算手段と、
前記入力信号と前記第２の乗算手段の乗算結果とを加算する第１の加算手段と、
前記第１の加算手段の加算結果を１サンプリング周期だけ遅延して出力する遅延手段と、
前記遅延手段の出力と前記第１の乗算手段の乗算結果とを加算し、その結果を出力信号として出力する第２の加算手段と
を備えるとともに、
前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記遅延手段には、最終的な出力値がディレイ補間による出力値と一致するように算出した値を設定し、さらに前記係数遅延手段には、前記小数分の遅延量に応じて与えられる係数を設定する手段を備えたことを特徴とする可変遅延装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、楽音合成装置などに適用して好適な可変遅延装置に関する。
【０００２】
【従来の技術】
近年、自然楽器の発音メカニズムをシミュレートしたモデルを動作させ、これにより自然楽器の楽音を合成する楽音合成装置が各種開発されている。この種の楽音合成装置としては、図１１に示すような、加算器１１０１、遅延回路（Ｄｅｌａｙ）１１０２、オールパスフィルタ（ＡＰＦ）１１０３、およびフィルタ１１０４を閉ループ状に接続したループ部を備えた構成が知られている。
【０００３】
遅延回路１１０２は、所定段数のシフトレジスタからなる。各段は、加算器１１０１の加算結果を記憶できるだけのビット数を持つ。遅延回路１１０２には所定サンプリング周期ごとにクロックが供給される。そして、サンプリング周期ごとに加算器１１０１から加算結果が入力し、遅延回路１１０２の第１段に書き込まれる。遅延回路１１０２の各段のデータは、サンプリング周期ごとに次の段へとシフトされる。遅延回路１１０２からのデータ読み出しは、指定された任意の段から読み出し可能である。したがって、サンプリング周期の整数倍の遅延時間だけ遅延したデータを得ることができる。遅延回路１１０２から読み出した所定の遅延時間だけ遅延されたデータは、ＡＰＦ１１０３に入力する。
【０００４】
上述の遅延回路１１０２では、サンプリング周期の整数倍の遅延時間しか設定できないので、サンプリング周期の整数倍からずれた遅延時間を設定するためにＡＰＦ１１０３を用いる。図１２に、ＡＰＦ１１０３の典型的なブロック構成を示す。この図のＡＰＦ１１０３は、１次のディジタルフィルタであり、乗算器（乗算係数をａとする）１２０１，１２０２、加算器１２０３，１２０４、および遅延回路（１段のレジスタ）１２０５から構成されている。これら各部には、サンプリング周期ごとにクロックが供給される。ＡＰＦ１１０３は、周波数特性がフラットであるとともに、乗算係数ａを適宜設定することにより、自己の遅延時間を調整することが可能である。これにより、サンプリング周期の整数倍からずれた値の遅延時間を設定できる。ＡＰＦ１１０３の出力は、フィルタ１１０４に入力する。
【０００５】
フィルタ１１０４は、ローパスフィルタその他のフィルタであり、このループ部内を循環する信号に所望の減衰特性を付与したり、所望の音色となるように加工するためのものである。フィルタ１１０４の出力は、加算器１１０１に入力し、入力信号と加算される。
【０００６】
図１１のループ部では、例えば、ノイズ信号のような多くの周波数成分を含んだアナログ信号をサンプリング周期ごとにＰＣＭ符号化し、この結果得られた時系列ディジタル信号を加算器１１０１への入力信号とする。この入力信号は、加算器１１０１を介して、遅延回路１１０２でサンプリング周期の整数倍だけ遅延され、さらにＡＰＦ１１０３でサンプリング周期の整数倍からのずれ分だけ遅延されて、フィルタ１１０４に入力し、再び加算器１１０１にフィードバックされて、ループ部内を循環する。
【０００７】
このようなループ部の共振周波数は、遅延回路１１０２およびＡＰＦ１１０３の遅延時間により決定される（フィルタ１１０４の位相遅れは無視するものとする）。したがって、遅延回路１１０２およびＡＰＦ１１０３による遅延時間（遅延回路１１０２で全体の遅延長の整数分の遅延を行ない、ＡＰＦ１１０３で全体の遅延長の小数分の遅延を行なう）を制御することにより、このループ部を循環する楽音信号の音高を制御することができる。出力は、ループ内のどこから楽音信号を取り出してもよい。図１１では、加算器１１０１から楽音信号を取り出して出力している。
【０００８】
ところで、上述したような楽音合成装置において、例えば、遅延量が「９．９９９」から「１０．０００」に変化するときなど（遅延量の整数部は「９」から「１０」に変化し、小数部は「０．９９９」から「０」に変化する）、整数部と小数部を不連続に制御せざるを得ない場合がある。このような場合、ＡＰＦの乗算器の乗算係数が大きく変化し、出力値の不連続が生じてノイズ発生の要因となる。そこで、特許第２７２７８８３号では、このようなノイズの発生を防ぐため、整数部と小数部を不連続に制御する際の切り替えの前後で出力値がほぼ等しくなるように、ＡＰＦの遅延回路（レジスタ）に所定の設定値（「０」や１サンプル前の値）を与え、またＡＰＦの乗算器に与える乗算係数を「０」や「−１」に強制的に設定している。これにより、不要なノイズを生じさせることなく、境界（遅延量の整数部が変化する部分）条件での連続性を保つようにしている。
【０００９】
また、特開平１１−１６１２７５号では、図１１および図１２で説明したような構成で、入力値が一定であるにもかかわらずＡＰＦの乗算係数が変化したためにノイズが生じてしまうことを防止するため、図１２の乗算器１２０１，１２０２に係数を与える際に、乗算器１２０１に与える係数を１サンプリング周期だけ遅れて与えるようにして、ノイズの発生を抑える手法が開示されている。
【００１０】
【発明が解決しようとする課題】
しかし、上述の従来技術では、ディレイ長（遅延量）の変化が小さい場合には問題はないが、境界（遅延量の整数部が変化する部分）前後において変化が大きい場合には不都合を生じる場合があった。例えば、特許第２７２７８８３号に示されているような整数部と小数部を不連続に制御する際の切り替えの前後でＡＰＦの遅延回路や乗算器に強制的に値を設定するものでは、ピッチ変化が速くて大きいとき、得られる出力値が本来求めたい理想の値とは異なる場合がある。該公報のものでは、例えば整数部が変化した後の乗算器の乗算係数は「０」または「−１」に近い値になるはずだからそれを強制的に設定して出力が理想値に近くなるようにするものであるが、ピッチ変化が速くて大きいときは上記の乗算係数は必ずしも「０」または「−１」に近い値を取るとは限らず、そのため得られる出力値は本来の値とは異なる場合がある。
【００１１】
この発明は、上述の従来技術における問題点に鑑み、遅延手段の整数部と小数部を不連続に制御する場合でもノイズの発生を抑え一定の出力値を保持できるような可変遅延装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
この目的を達成するため、請求項１に係る発明は、所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、前記オールパスフィルタは、前記整数分遅延手段から取り出した整数分遅延出力を入力し、１サンプリング周期だけ遅延して出力するフィードフォワード側遅延手段と、前記整数分遅延出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第１の乗算手段と、出力信号を１サンプリング周期だけ遅延して出力するフィードバック側遅延手段と、前記フィードバック側遅延手段の出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第２の乗算手段と、前記フィードフォワード側遅延手段の出力と前記第２の乗算手段の乗算結果とを加算し、さらに前記第１の乗算手段の乗算結果を減算し、その結果を出力信号として出力する加算手段とを備えるとともに、前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値を、前記フィードフォワード側遅延手段およびフィードバック側遅延手段に設定する手段を備えたことを特徴とする。
【００１３】
請求項２に係る発明は、所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、前記オールパスフィルタは、前記整数分遅延手段から取り出した整数分遅延出力を入力し、１サンプリング周期だけ遅延して出力するフィードフォワード側遅延手段と、前記整数分遅延出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第１の乗算手段と、出力信号を１サンプリング周期だけ遅延して出力するフィードバック側遅延手段と、前記フィードバック側遅延手段の出力に、前記小数分の遅延量に応じて与えられる係数を乗算する第２の乗算手段と、前記フィードフォワード側遅延手段の出力と前記第２の乗算手段の乗算結果とを加算し、さらに前記第１の乗算手段の乗算結果を減算し、その結果を出力信号として出力する加算手段とを備えるとともに、前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値を前記フィードフォワード側遅延手段に設定し、さらに前記フィードバック側遅延手段には、最終的な出力値がディレイ補間による出力値と一致するように算出した値を設定する手段を備えたことを特徴とする。
【００１４】
請求項３に係る発明は、所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、前記オールパスフィルタは、前記小数分の遅延量に応じて与えられる係数を１サンプリング周期だけ遅延して出力する係数遅延手段と、前記整数分遅延手段から取り出した整数分遅延出力を入力し、該入力信号に、前記係数遅延手段で遅延された係数を乗算する第１の乗算手段と、出力信号に、前記係数遅延手段を介さずに、前記係数を乗算する第２の乗算手段と、前記入力信号と前記第２の乗算手段の乗算結果とを加算する第１の加算手段と、前記第１の加算手段の加算結果を１サンプリング周期だけ遅延して出力する遅延手段と、前記遅延手段の出力と前記第１の乗算手段の乗算結果とを加算し、その結果を出力信号として出力する第２の加算手段とを備えるとともに、前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記整数分遅延手段からの現在の整数分遅延出力の１サンプリング前の値に、前記小数分の遅延量に応じて与えられる係数に１を加えた値を乗算し、その計算値を前記遅延手段に設定し、さらに前記係数遅延手段に、前記小数分の遅延量に応じて与えられる係数を設定する手段を備えたことを特徴とする。
【００１５】
請求項４に係る発明は、所定サンプリング周期ごとに入力するデジタル入力信号を、指定された係数に応じた遅延時間だけ遅延して出力する可変遅延装置であって、前記係数に応じた遅延時間のうち前記サンプリング周期の整数分の遅延を行なうための複数段の記憶領域を持つ整数分遅延手段と、前記係数に応じた遅延時間のうち前記サンプリング周期の小数分の遅延を行なうオールパスフィルタとを備え、前記オールパスフィルタは、前記小数分の遅延量に応じて与えられる係数を１サンプリング周期だけ遅延して出力する係数遅延手段と、前記整数分遅延手段から取り出した整数分遅延出力を入力し、該入力信号に、前記係数遅延手段で遅延された係数を乗算する第１の乗算手段と、出力信号に、前記係数遅延手段を介さずに、前記係数を乗算する第２の乗算手段と、前記入力信号と前記第２の乗算手段の乗算結果とを加算する第１の加算手段と、前記第１の加算手段の加算結果を１サンプリング周期だけ遅延して出力する遅延手段と、前記遅延手段の出力と前記第１の乗算手段の乗算結果とを加算し、その結果を出力信号として出力する第２の加算手段とを備えるとともに、前記整数分遅延手段で行なう整数分の遅延量が変化した場合、前記遅延手段には、最終的な出力値がディレイ補間による出力値と一致するように算出した値を設定し、さらに前記係数遅延手段には、前記小数分の遅延量に応じて与えられる係数を設定する手段を備えたことを特徴とする。
【００１６】
【発明の実施の形態】
以下、図面を用いてこの発明の実施の形態を説明する。
【００１７】
図１は、この発明の実施の形態に係るＡＰＦを用いた楽音信号処理装置の全体構成を示すブロック図である。この装置は、制御プロセッサ１０１、メモリ１０２、操作表示部１０３、ＡＤＣ（アナログ・ディジタル変換器）１０４、信号プロセッサ１０５、信号処理メモリ１０６、およびＤＡＣ（ディジタル・アナログ変換器）１０７を備える。
【００１８】
制御プロセッサ１０１は、この装置の全体の動作を制御する。メモリ１０２には、制御プロセッサ１０１が実行する各種制御プログラムが記憶されるとともに、ワークエリアおよびワークレジスタなどの領域が設けられる。操作表示部１０３は、各種の情報を設定するためのパネルスイッチなどの操作子と各種の情報を表示するための表示画面である。ＡＤＣ１０４は、入力したアナログ楽音信号をディジタル楽音信号に変換する回路である。ディジタル楽音信号が直接入力する場合は、ＡＤＣ１０４は不要である。信号プロセッサ１０５は、ＡＤＣ１０４から入力した楽音信号にエフェクト付与などの信号処理を施したり、楽音合成処理を行なう。信号処理メモリ１０６は、信号プロセッサ１０５が信号処理を行なう際に、主として信号遅延用として用いられるメモリである。信号プロセッサ１０５から出力されたデジタル楽音信号は、ＤＡＣ１０７によりアナログ楽音信号に変換され、不図示のサウンドシステムへと出力される。
【００１９】
図２は、信号プロセッサ１０５によって実現される楽音信号処理のモデルを示すブロック図である。この信号処理モデルにより、例えば、物理モデル音源、並びに、フランジャー、コーラス、およびリバーブなどの各種信号遅延応用エフェクタが実現される。この楽音信号処理モデルは、上述したように実際には信号プロセッサ１０５と信号処理メモリ１０６により実現されている。ここでは信号プロセッサ１０５はＤＳＰ（ディジタル・シグナル・プロセッサ）とし、該ＤＳＰが実行するマイクロ・プログラムはあらかじめ制御プロセッサ１０１の指示によりロードされているものとする。
【００２０】
図２において、入力楽音信号は加算器２０１に入力する。加算器２０１から出力された楽音信号は、遅延回路（ＤＥＬＡＹ）２０２とＡＰＦ２０３からなる信号遅延部２０６に入力する。信号遅延部２０６に入力した楽音信号は、遅延回路２０２でサンプリング周期の整数倍分の遅延を、ＡＰＦ２０３で小数分の遅延を与えられ、これらにより指定された遅延時間だけ遅延されたのち出力される。信号遅延部２０６からの出力信号は、フィルタ部（ＦＩＬＴＥＲ）２０４とループゲイン調整部（ＧＡＩＮ）２０５により所望の音色や減衰となるように特性を与えられる。ＧＡＩＮ２０５からの出力信号は、加算器２０１にフィード・バックされ、入力された楽音信号と加算されて出力される。
【００２１】
図３は、信号遅延部２０６の内部構造を示すブロック図である。遅延回路２０２は、サンプリング周期の整数倍分の遅延を行なう遅延回路であり、所定段数のシフトレジスタから構成されている。図の左側から入力したデータは、サンプリング周期ごとに右側の次の段にシフトされる。ｉｎｔを整数として、ｉｎｔ段目の記憶領域をＤintで表す。Ｘnは、サンプリング時刻ｎにおいて遅延回路２０２に入力したデータを示す。図３の状態では、Ｄint段目の内容がＸnになっており、ここから取り出したデータをＡＰＦ２０３に入力している。
【００２２】
ＡＰＦ２０３は、乗算器３０１，３０４、加算器３０２、および遅延回路３０３，３０５（１サンプリング周期分の遅延を行なう１段のレジスタ）を備えている。遅延回路２０２から取り出したデータは、乗算器３０１および遅延回路３０３に入力する。乗算器３０１は、入力データに、その時点で与えられた乗数Ｃmを乗算し、乗算結果を加算器３０２に出力する。遅延回路３０３は、入力データを１サンプリング周期遅延させて加算器３０２に出力する。加算器３０２は、遅延回路３０３からの入力データと乗算器３０４からの入力データとを加算し、さらに乗算器３０１からの入力データを減算して、その結果を出力する。加算器３０２の出力データは、遅延回路３０５に入力する。遅延回路３０５は、入力データを１サンプリング周期遅延させて乗算器３０４に出力する。乗算器３０４は、入力データに、その時点で与えられた乗数Ｃmを乗算し、乗算結果を加算器３０２に出力する。最終的な信号遅延部２０６の出力は、加算器３０２から取り出されて出力される。
【００２３】
図３は、現サンプリング時刻ｍにおいて、信号遅延部２０６の設定遅延量がＤm＝ｉｎｔ＋ｆmであったときの状態を示すものとする。ただし、設定遅延量Ｄmは遅延段数の換算値で表すものとし、ｉｎｔは整数部、ｆmは小数部を表すものとする。少数部ｆmを実現する乗数をＣmとする。
【００２４】
図３の状態から、次のサンプリング時刻ｍ＋１で、設定遅延量が変化し、遅延回路２０２の遅延段数、すなわち整数部が減少し、
Ｄm+1＝（ｉｎｔ−１）＋ｆm+1
となる場合を考える。
【００２５】
図４は、整数部が減少した場合の、図３の状態から１サンプリング周期後の状態を示す。整数部の減少に応じて、遅延回路２０２からのデータの取り出し位置は、ｉｎｔ−１段目に移行している。ここで、乗算係数Ｃm+1は、
Ｃm+1≒ｆm+1−１
と近似できる。一方、求めたい理想の出力値をＤＥＬＡＹＯＵＴとすると、
ＤＥＬＡＹＯＵＴ＝（１−ｆm+1）・Ｘn+2＋ｆm+1・Ｘn+1
である。これを上記の近似式で書き替えると、
ＤＥＬＡＹＯＵＴ＝−Ｃm+1・Ｘn+2＋（１＋Ｃm+1）・Ｘn+1
となる。これより、サンプリング時刻ｍ＋１では、ＡＰＦ２０３の２つの遅延回路３０３，３０５には入力値である「Ｘn+2」の１サンプリング前の値である「Ｘn+1」を設定すればよいことが分かる。図４は、サンプリング時刻ｍ＋１で、強制的に遅延回路３０３，３０５に「Ｘn+1」を設定している様子を示している。
【００２６】
次に、図３の状態から、次のサンプリング時刻ｍ＋１で、設定遅延量が変化し、遅延回路２０２の遅延段数、すなわち整数部が増加し、
Ｄm+1＝（ｉｎｔ＋１）＋ｆm+1
となる場合を考える。
【００２７】
図５は、整数部が増加した場合の、図３の状態から１サンプリング周期後の状態を示す。整数部の増加に応じて、遅延回路２０２からのデータの取り出し位置は、ｉｎｔ＋１段目に移行している。ここで、乗算係数Ｃm+1は、
Ｃm+1≒ｆm+1−１
と近似できる。一方、求めたい理想の出力値をＤＥＬＡＹＯＵＴとすると、
ＤＥＬＡＹＯＵＴ＝（１−ｆm+1）・Ｘn＋ｆm+1・Ｘn-1
である。これを上記の近似式で書き替えると、
ＤＥＬＡＹＯＵＴ＝−Ｃm+1・Ｘn＋（１＋Ｃm+1）・Ｘn-1
となる。これより、サンプリング時刻ｍ＋１では、ＡＰＦ２０３の２つの遅延回路３０３，３０５には入力値である「Ｘn」の１サンプリング前の値である「Ｘn-1」を設定すればよいことが分かる。図５は、サンプリング時刻ｍ＋１で、強制的に遅延回路３０３，３０５に「Ｘn-1」を設定している様子を示している。
【００２８】
図３から図５で説明した内容を一般化すると以下のようになる。すなわち、遅延量の整数部がｋ段変化（ｋ＞０の場合に段数増加、ｋ＜０の場合に段数減少）した場合（Ｄm+1＝（ｉｎｔ＋ｋ）＋ｆm+1）、ＡＰＦ２０３の入力はＤint+kから取り出すものとし、２つの遅延回路３０３，３０５にはＤint+k+1の値（１サンプリング前の値）を設定すればよい。現在のディレイ読み出し位置から１サンプリング前の値をＡＰＦの遅延回路３０３，３０５に強制的に設定することにより、所望の出力値を得ることができる。
【００２９】
さらに、図３から図５で説明した実施の形態に対し、フィードフォワード側の遅延回路３０３とフィードバック側の遅延回路３０５に別々の最適値を設定することにより、より厳密に理想的な遅延出力を得ることができる。以下、このことについて説明する。
【００３０】
図４に示した整数部が減少する場合、求めたい理想の出力値であるＤＥＬＡＹＯＵＴは以下の通りであり、これをＸ’とする。
【００３１】
ＤＥＬＡＹＯＵＴ＝（１−ｆm+1）・Ｘn+2＋ｆm+1・Ｘn+1＝Ｘ’
【００３２】
このＡＰＦ２０３の構成で、フィードフォワード側の遅延回路３０３には、その構成から明らかに「Ｘn+1」を設定すべきである。一方、フィードバック側の遅延回路３０５は、その設定値をｙとすれば、
Ｘ’＝−Ｃm+1・Ｘn+2＋Ｘn+1＋Ｃm+1・ｙ
となる。したがって、遅延回路３０５に与えるべき設定値ｙは、
ｙ＝（Ｘ’−Ｘn+1＋Ｃm+1・Ｘn+2）／Ｃm+1
となる。同様に、図５に示した整数部が増加する場合は、
ｙ＝（Ｘ’−Ｘn-1＋Ｃm+1・Ｘn）／Ｃm+1
となる。ただし、
Ｘ’＝（１−ｆm+1）・Ｘn＋ｆm+1・Ｘn-1
である。
【００３３】
以上のように、フィードフォワード側の遅延回路３０３とフィードバック側の遅延回路３０５に別々の最適値を設定することにより、より厳密に理想的な遅延出力を得ることができる。
【００３４】
図６は、信号遅延部２０６の内部構造の別の例を示すブロック図である。遅延回路２０２の構成は、図３と同様であるが、ＡＰＦ２０３の構成が異なる。図６の信号遅延部２０６のＡＰＦ２０３は、乗算器６０１，６０２、加算器６０３，６０４、および遅延回路（１段のレジスタ）６０５を備えている。さらにフィードフォワード側の乗算器６０１に与える乗算係数を１ディレイずらして与えるための係数遅延回路６０６を備えている。係数遅延回路６０６は、特開平１１−１６１２７５号に開示されているように、係数変更の効果が出力に波及するタイミングが同じになるように、係数を遅延させてフィードフォワード側の乗算器６０１に与えるようにするためのものである。
【００３５】
図６は、現サンプリング時刻ｍにおいて、信号遅延部２０６の設定遅延量がＤm＝ｉｎｔ＋ｆmであったときの状態を示すものとする。図３と同様に、設定遅延量Ｄmは遅延段数の換算値で表すものとし、ｉｎｔは整数部、ｆmは小数部を表すものとする。少数部ｆmを実現する乗数をＣmとする。図６の状態から、次のサンプリング時刻ｍ＋１で、設定遅延量が変化し、遅延回路２０２の遅延段数、すなわち整数部が減少し、
Ｄm+1＝（ｉｎｔ−１）＋ｆm+1
となる場合を考える。
【００３６】
図７は、整数部が減少した場合の、図６の状態から１サンプリング周期後の状態を示す。整数部の減少に応じて、遅延回路２０２からのデータの取り出し位置は、ｉｎｔ−１段目に移行している。求めたい理想の出力値をＤＥＬＡＹＯＵＴとすると、図４で説明したように、
0003743625.tif 000002
である。図７の時点において、遅延回路６０５の強制的な設定値をｙとし、さらに遅延回路６０６には乗算係数「Ｃm+1」が強制的に設定されるとすると、
ＤＥＬＡＹＯＵＴ＝ｙ−Ｃm+1・Ｘn+2
となるので、上述の式と比較すると、
ｙ＝（１＋Ｃm+1）・Ｘn+1
となることがわかる。すなわち、遅延回路６０５に与えるべき設定値ｙは「（１＋Ｃm+1）・Ｘn+1」であり、遅延回路６０６に与えるべき設定値は乗算係数「Ｃm+1」である。
【００３７】
図８は、整数部が増加した場合の、図６の状態から１サンプリング周期後の状態を示す。図７の整数部が減少した場合と同様にして、遅延回路６０５に与えるべき設定値は「（１＋Ｃm+1）・Ｘn-1」であり、遅延回路６０６に与えるべき設定値は「Ｃm+1」である。
【００３８】
図６から図８で説明した内容を一般化すると以下のようになる。すなわち、現在のディレイ読み出し位置から１サンプリング周期前の値をｘ’とすると、遅延回路６０５に与えるべき設定値ｙは以下の式で表すことができる。
【００３９】
ｙ＝（１＋Ｃm+1）・ｘ’
【００４０】
ただし、この構成では、ＡＰＦの乗算係数が１サンプリング遅れて与えられることになる。ディレイ不連続の場合は、遅延回路６０６に現在の乗算係数がセットされるので遅延出力は正常に得られる。
【００４１】
さらに、図７から図８で説明した実施の形態に対し、より厳密に理想的な遅延出力を得る方法について説明する。
【００４２】
図７に示した整数部が減少する場合、求めたい理想の出力値であるＤＥＬＡＹＯＵＴは以下の通りであり、これをＸ’とする。
【００４３】
ＤＥＬＡＹＯＵＴ＝（１−ｆm+1）・Ｘn+2＋ｆm+1・Ｘn+1＝Ｘ’
【００４４】
このＡＰＦ２０３の構成で、遅延回路６０６には、その構成から明らかに「Ｃm+1」を設定すべきである。一方、遅延回路６０５は、その設定値をｙとすれば、
ｙ−Ｃm+1・Ｘn+2＝Ｘ’
ｙ＝Ｘ’＋Ｃm+1・Ｘn+2
となる。したがって、遅延回路６０５に与えるべき設定値ｙは、
ｙ＝Ｘ’＋Ｃm+1・Ｘn+2
となる。同様に、図８に示した整数部が増加する場合は、
ｙ＝Ｘ’＋Ｃm+1・Ｘn
となる。ただし、
Ｘ’＝（１−ｆm+1）・Ｘn＋ｆm+1・Ｘn-1
である。
【００４５】
なお、シミュレーションの結果では、従来のＡＰＦの構成のまま遅延回路に与える設定値をより正しい値にする本方法が、他の方法に比べて最も良い結果が得られる。
【００４６】
図９および図１０のフローチャートを参照して、上述した遅延制御手法を実現する動作を説明する。
【００４７】
図９は、信号プロセッサ１０５に入力された楽音信号の信号処理手順を示すフローチャートである。この処理手順は、サンプリング周期ごとに実行される。ステップＳ９０１では、入力された楽音信号データを所定の遅延時間だけ遅延する。次に、ステップＳ９０２で、遅延された楽音信号を信号処理して楽音を合成する。
【００４８】
図１０は、図９のステップＳ９０１（遅延量制御）の処理手順を示すフローチャートである。ステップＳ１００１で、信号プロセッサ１０５は、楽音信号の遅延量情報を受信する。ステップＳ１００２では、その遅延量が変化したか否かを判断する。遅延量が変化していないときは、処理を終了してリターンする。遅延量が変化しているときは、ステップＳ１００３に進み、遅延量の整数部が変化したか否かを判断する。遅延量の整数部が変化しないときは、ステップＳ１００７に進み、小数部の遅延を実現するためにＡＰＦ２０３の乗算器に与える乗算係数Ｃmの変更制御を行ない、リターンする。
【００４９】
ステップＳ１００３で、遅延量の整数部に変化があったときは、ステップＳ１００４に進み、整数部の遅延を行なう遅延回路２０２の出力位置の変更制御を行なう。次に、ステップＳ１００５で、ＡＰＦ２０３の遅延回路３０３，３０５，６０５，６０６に上述した方法で求めた設定値を設定する。続いて、ステップＳ１００６で、小数部の遅延を実現するために、ステップＳ１００７と同様にＡＰＦの乗算器に与える乗算係数Ｃmの変更制御を行ない、リターンする。
【００５０】
なお、上記実施の形態では楽音合成に本発明を適用した例を示したが、本発明はエフェクタなどの遅延にも応用できる。特にフィードバックを用いたフランジャなどに用いれば、ディレイ補間で生じるノッチが無いので、ピーク特性のばらつきが無くなるだけでなく、ディレイを大きく振っても安定して動作するため高価なアナログに匹敵する高品質なエフェクタを得るのにも役立つ。
【００５１】
【発明の効果】
以上説明したように、この発明によれば、整数分の遅延を行なう遅延手段と小数分の遅延を行なうＡＰＦを備えた可変遅延装置において、整数分の遅延量が変化した場合、ディレイ変化後の出力値をディレイ補間した値に近づけるようにＡＰＦの遅延手段などに強制的に値を設定しているので、現状の境界条件も満足し、かつディレイ変化が大きく遅延手段の整数部と小数部を不連続に制御する場合でも、ノイズの発生を抑え一定の出力値を保持することができる。
【図面の簡単な説明】
【図１】この発明の実施の形態に係るＡＰＦを用いた楽音信号処理装置のブロック図
【図２】楽音信号処理モデルを示すブロック図
【図３】信号遅延部の内部構造を示すブロック図
【図４】整数部が減少した状態を示すブロック図
【図５】整数部が増加した状態を示すブロック図
【図６】信号遅延部の内部構造の別の例を示すブロック図
【図７】整数部が減少した状態を示すブロック図
【図８】整数部が増加した状態を示すブロック図
【図９】信号処理の動作を説明するフローチャート図
【図１０】遅延量の制御処理の動作を説明するフローチャート図
【図１１】従来の遅延フィードバック音源のループ部のブロック構成図
【図１２】ＡＰＦのブロック構成図
【符号の説明】
１０１…制御プロセッサ、１０２…メモリ、１０３…操作表示部、１０４…ＡＤＣ、１０５…信号プロセッサ、１０６…信号処理メモリ、１０７…ＤＡＣ、２０１…加算器、２０２…遅延回路、２０３…ＡＰＦ、２０４…フィルタ。
【図１】
0003743625.tif 000003
【図２】
0003743625.tif 000004
【図３】
0003743625.tif 000005
【図４】
0003743625.tif 000006
【図５】
0003743625.tif 000007
【図６】
0003743625.tif 000008
【図７】
0003743625.tif 000009
【図８】
0003743625.tif 000010
【図９】
0003743625.tif 000011
【図１０】
0003743625.tif 000012
【図１１】
0003743625.tif 000013
【図１２】
0003743625.tif 000014