(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-03
(45)【発行日】2024-06-11
(54)【発明の名称】FIRフィルタを制御する方法および装置
(51)【国際特許分類】
H04R 3/04 20060101AFI20240604BHJP
H03H 17/00 20060101ALI20240604BHJP
H03H 17/06 20060101ALI20240604BHJP
【FI】
H04R3/04
H03H17/00 601G
H03H17/00 611A
H03H17/06 633A
H03H17/06 635B
(21)【出願番号】P 2020158810
(22)【出願日】2020-09-23
【審査請求日】2023-07-21
(73)【特許権者】
【識別番号】000004075
【氏名又は名称】ヤマハ株式会社
(74)【代理人】
【識別番号】100111763
【氏名又は名称】松本 隆
(72)【発明者】
【氏名】石塚 健治
【審査官】渡邊 正宏
(56)【参考文献】
【文献】国際公開第2005/057784(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H03G 5/00-99/00
H03H 17/00-17/08
H04R 3/00- 3/14
(57)【特許請求の範囲】
【請求項1】
音信号を処理するFIRフィルタを制御する方法において、
角周波数の関数として表現される伝達関数に対応した所定の第1振幅特性の周波数軸方向の伸縮量であって、非整数値をも取り得る伸縮量を示す第1制御データ、および周波数軸方向のシフト量を示す第2制御データを、ユーザから与えられる操作情報に基づいて生成し、
前記第1振幅特性を前記第1制御データに従って周波数軸方向に伸縮し、かつ、前記第2制御データに従って周波数軸方向にシフトした第2振幅特性を生成し、
前記第2振幅特性に基づいて、前記FIRフィルタにフィルタ係数を設定する方法。
【請求項2】
前記第1振幅特性に対応した伝達関数において、前記角周波数の次数を、前記第1制御データが示す周波数軸方向の伸縮量を反映させた仮想次数に置換し、前記角周波数を、前記第2制御データが示す周波数軸方向のシフト量を反映させた仮想角周波数に置換し、前記仮想次数および前記仮想角周波数に基づいて算出される伝達関数から、前記第1制御データと前記第2制御データに応じて前記第2振幅特性を生成する請求項1に記載の方法。
【請求項3】
前記伝達関数は、スロープ部を含む前記第1振幅特性を有するフィルタの伝達関数であり、
前記操作情報として、前記第1振幅特性のスロープ部の傾き角を指示する第1操作情報と、周波数軸上において前記スロープ部の所在する位置を指示する第2操作情報とを受け取り、
前記第1操作情報から前記第1制御データを生成し、前記第2操作情報から前記第2制御データを生成する請求項1または2に記載の方法。
【請求項4】
前記伝達関数は、Butterworthフィルタ、Chebyshevフィルタ、Ellipticフィルタ、およびBesselフィルタのいずれか1つの伝達関数である請求項3に記載の方法。
【請求項5】
音信号を処理するFIRフィルタを制御する装置において、
操作情報をユーザから受け取る入力部と、
角周波数の関数として表現される伝達関数に対応した所定の第1振幅特性の周波数軸方向の伸縮量であって、非整数値をも取り得る伸縮量を示す第1制御データ、および周波数軸方向のシフト量を示す第2制御データを前記操作情報に基づいて生成し、前記第1振幅特性を前記第1制御データに従って周波数軸方向に伸縮し、かつ、前記第2制御データに従って周波数軸方向にシフトした第2振幅特性を生成し、前記第2振幅特性に基づいて、前記FIRフィルタにフィルタ係数を設定する処理部と、
を有する装置。
【請求項6】
前記伝達関数は、スロープ部を含む前記第1振幅特性を有するフィルタの伝達関数であり、
前記入力部は、前記第1振幅特性に関する画面を表示部に表示し、前記第1振幅特性のスロープ部の傾き角を指示する第1操作情報と、周波数軸上において前記スロープ部の所在する位置を指示する第2操作情報とをユーザから受け取り、
前記処理部は、前記第1操作情報から前記第1制御データを生成し、前記第2操作情報から前記第2制御データを生成する請求項5に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、FIRフィルタを制御する方法および装置に関する。
【背景技術】
【0002】
IIR(Infinite Impulse
Response;無限インパルス応答)フィルタは、構成が小規模であることから、多くの分野において使用されている。例えば非特許文献1には、IIRフィルタの一例であるバタワースフィルタが開示されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】Wikipedia, “Butterworth filter”,[令和2年7月1日検索],インターネット,<URL: https://en.wikipedia.org/wiki/Butterworth_filter>
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、アナログフィルタを模擬するIIRフィルタは、構成が小規模であるものの、振幅特性のその調整に固有の制限がある。例えばIIRフィルタの場合、伝達関数の次数nが整数に限定されるため、次数nの調整により振幅特性(振幅周波数レスポンス)のスロープ部の傾き角を飛び飛びの値しか制御できない。IIRフィルタの伝達関数の次数nと振幅特性の先鋭度Qで振幅特性のスロープ部の傾き角を細かく調整することが考えられるが、その場合の振幅特性の形状は、先鋭度Qを固定し次数nだけで傾き角を調整する場合とは異なる変化をし、次数の異なるIIRフィルタ間での振幅特性の連続性が保てない。
【0005】
この発明は、以上のような事情に鑑みて、アナログフィルタやIIRフィルタと互換の振幅特性のスロープ部の傾き角を、細かくかつ連続的に調整する技術的手段を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明は、音信号を処理するFIRフィルタを制御する方法において、角周波数の関数として表現される伝達関数に対応した所定の第1振幅特性の周波数軸方向の伸縮量であって、非整数値をも取り得る伸縮量を示す第1制御データ、および周波数軸方向のシフト量を示す第2制御データを、ユーザから与えられる操作情報に基づいて生成し、前記第1振幅特性を前記第1制御データに従って周波数軸方向に伸縮し、かつ、前記第2制御データに従って周波数軸方向にシフトした第2振幅特性を生成し、前記第2振幅特性に基づいて、前記FIRフィルタにフィルタ係数を設定する方法を提供する。
【0007】
また、この発明は、音信号を処理するFIRフィルタを制御する装置において、操作情報をユーザから受け取る入力部と、角周波数の関数として表現される伝達関数に対応した所定の第1振幅特性の周波数軸方向の伸縮量であって、非整数値をも取り得る伸縮量を示す第1制御データ、および周波数軸方向のシフト量を示す第2制御データを前記操作情報に基づいて生成し、前記第1振幅特性を前記第1制御データに従って周波数軸方向に伸縮し、かつ、前記第2制御データに従って周波数軸方向にシフトした第2振幅特性を生成し、前記第2振幅特性に基づいて、前記FIRフィルタにフィルタ係数を設定する処理部と、を有する装置を提供する。
【図面の簡単な説明】
【0008】
【
図1】この発明の一実施形態である信号処理装置の構成を示すブロック図である。
【
図2】同実施形態の動作を示すフローチャートである。
【
図3】同信号処理装置の表示部の表示例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照し、この発明の実施形態について説明する。
【0010】
図1はこの発明の一実施形態である信号処理装置100の構成を示すブロック図である。
図1に示すように、信号処理装置100は、プロセッサ10と、音信号入力部41と、音信号出力部42と、表示部51と、操作部52と、記憶部53とを有する。
【0011】
プロセッサ10は、信号処理装置100全体を制御する制御中枢である。音信号入力部41は、チューナ、オーディオ再生装置等の外部装置(図示略)から音信号を取り込んでプロセッサ10に供給する装置である。音信号出力部42は、プロセッサ10から出力される音信号を図示しないスピーカ等の外部装置に供給して放音させる装置である。表示部51は、各種の表示情報をユーザに提供する装置であり、液晶ディスプレイパネル等により構成されている。操作部52は、ユーザが各種のデータおよび指示をプロセッサ10に与えるために操作する手段であり、キーボード、マウス等の各種の操作子により構成されている。表示部51および操作部52は、各々の機能を併有するタッチパネルであってもよい。記憶部53は、RAM(Random Access Memory)等の揮発性記憶部と、ROM(Read Only Memory)またはHD(Hard Disk)等の不揮発性記憶部とにより構成されている。揮発性記憶部は、プロセッサ10によりワークエリアとして使用される。不揮発性記憶部には、各種のプログラムや固定的な制御データが記憶される。不揮発性記憶部に記憶されるプログラムには、プロセッサ10をフィルタ制御部20として機能されるフィルタ制御プログラム20Pと、プロセッサ10をフィルタ実行部30として機能させるフィルタ実行プログラム30Pが含まれる。
【0012】
フィルタ実行部30としてのプロセッサ10は、処理対象である音信号のサンプルを音信号入力部41により取り込み、過去取り込んだ所定個数のサンプルに対して、記憶部53の揮発性記憶部に記憶された所定個数のフィルタ係数を畳み込み、この畳み込み演算結果であるサンプルを音信号出力部42により出力する。すなわち、フィルタ実行部30は、入力される音信号を処理して、フィルタ係数に対応する周波数レスポンスが付与された音信号を出力するFIRフィルタとして機能する。
【0013】
フィルタ制御部20としてのプロセッサ10は、フィルタ実行部30が畳み込み演算に使用するフィルタ係数を生成して記憶部53の揮発性記憶部に格納する。このフィルタ制御部20は、入力部21と処理部22とを有する。
【0014】
入力部21は、操作情報をユーザから受け取る手段である。処理部22は、角周波数の関数として表現される伝達関数に対応した所定の第1振幅特性の周波数軸方向の伸縮量であって、非整数値をも取り得る伸縮量を示す第1制御データ、および周波数軸方向のシフト量を示す第2制御データを操作情報に基づいて生成し、第1振幅特性を第1制御データに従って周波数軸方向に伸縮し、かつ、第2制御データに従って周波数軸方向にシフトした第2振幅特性を生成し、第2振幅特性に基づいて、フィルタ実行部30が実行するFIRフィルタのフィルタ係数を設定する手段である。
【0015】
さらに詳述すると、次の通りである。式(1)は、アナログフィルタやIIRフィルタの周波数レスポンスに対応する、角周波数ωの関数として表現される一般的な伝達関数H(ω)を示している。
H(ω)
={b0+b1(jω)+b2(jω)2+…+bN(jω)N}
/{a0+a1(jω)+a2(jω)2+…+aM(jω)M}
……(1)
【0016】
処理部22は、次式(2)に示すように、第1振幅特性に対応した伝達関数H(ω)において、角周波数ωの次数nを、第1制御データcが示す周波数軸方向の伸縮量を反映させた仮想次数n′=n・cに置換し、角周波数ωを、第2制御データω0が示す周波数軸方向のシフト量を反映させた仮想角周波数ω′=ω/ω0に置換し、伝達関数H′(ω)を生成する。
H′(ω)
={b0+b1(jω/ω0)c+b2(jω/ω0)2・c+
…+bN(jω/ω0)N・c}
/{a0+a1(jω/ω0)c+a2(jω/ω0)2・c+
…+aM(jω/ω0)M・c}
……(2)
【0017】
そして、処理部22は、この仮想次数および仮想角周波数に基づいて算出される伝達関数H′(ω)から、第1制御データcおよび第2制御データω0に応じた第2振幅特性を生成する。この第2振幅特性は、伝達関数H(ω)に対応した第1振幅特性を角周波数軸方向に伸縮量cだけ伸縮し、かつ、シフト量ω0だけシフトした振幅特性となる。
【0018】
好ましい態様において、伝達関数は、スロープ部を含む第1振幅特性を有するフィルタの伝達関数である。入力部21は、第1振幅特性に関する画面を表示部51に表示し、操作部52を介して、第1振幅特性のスロープ部の傾き角を指示する第1操作情報と、周波数軸上においてスロープ部の所在する位置を指示する第2操作情報とを操作情報としてユーザから受け取る。処理部22は、第1操作情報から第1制御データを生成し、第2操作情報から第2制御データを生成する。
【0019】
そして、処理部22は、伝達関数と、第1制御データと、第2制御データとに基づいて、第2振幅特性を生成し、この第2振幅特性に基づいて、FIRフィルタのフィルタ係数を生成し、記憶部53の揮発性記憶部に格納する。
以上が本実施形態による信号処理装置100の構成の説明である。
【0020】
次に本実施形態の動作について説明する。
図2は本実施形態におけるフィルタ制御部20の動作例を示すフローチャートである。
【0021】
本実施形態において、操作部52の操作によりフィルタ制御プログラム30Pが起動されると、プロセッサ10は、フィルタ制御部20として機能する。このフィルタ制御部20の入力部21は、操作情報として、第1振幅特性のスロープ部の傾き角を指示する第1操作情報ROと、周波数軸上においてスロープ部の所在する位置を指示する第2操作情報Freqとを操作部52を介してユーザから受け取る(ステップS1)。好ましい態様において、入力部21は、このステップS1において、ユーザに所望のフィルタの種類を選択させ、そのフィルタの伝達関数から得られる第1振幅特性を表示部51に表示し、第1操作情報ROと、第2操作情報Freqとを取得する。
【0022】
次にフィルタ制御部20の処理部22は、第1操作情報ROから第1制御データcを算出する(ステップS2)。この第1制御データcは、非整数値をも取りうる。次に処理部22は、第2操作情報Freqから第2制御データω0を算出する(ステップS3)。
【0023】
次に処理部22は、第1制御データcおよび第2制御データω0に基づいて、第2振幅特性に対応した伝達関数を算出する(ステップS4)。次に処理部22は、ステップS4において算出した伝達関数から第2振幅特性を生成する(ステップS5)。
【0024】
次に処理部22は、第2振幅特性を表示部51に表示し、この第2振幅特性が所望のものであるか否かをユーザに判定させる(ステップS6)。第2振幅特性が所望のものでない場合、ユーザは、第1操作情報ROまたは第2操作情報Freqの再入力を操作部52の操作により要求することができる。この再入力の要求があった場合、ステップS6の判定結果は「NO」となり、処理部22は、処理をステップS1に戻す。
【0025】
ステップS6の判定結果が「YES」になると、処理部22は、第2振幅特性から位相特性を生成する。本実施形態において、処理部22は、この位相特性として、最小位相特性を生成する。
【0026】
次に処理部22は、第2振幅特性と位相特性とに逆FFTを施し、FIRフィルタのインパルス応答波形を生成する(ステップS8)。次に処理部22は、インパルス応答波形をサンプリングすることによりFIRフィルタのフィルタ係数を生成し、記憶部53の揮発性記憶部に格納する(ステップS9)。フィルタ実行部30は、このようにして記憶部53に格納されたフィルタ係数を利用し、FIRフィルタとして機能する。
【0027】
図3は以上の動作例における表示部51の表示例を示す図である。
図3に例示するように、表示部51の表示画面の上側には第2振幅特性を表示する特性表示エリアA0が設けられている。第2振幅特性は、横軸を周波数、縦軸をゲインとする特性である。
【0028】
表示部51の表示画面において、特性表示エリアA0の下側には3種類の指示エリアB0、B1およびB2が設けられている。
【0029】
右側の指示エリアB0において、上部にはフィルタの種類を意味するTypeの文字B01が表示され、中央には現在選択されているフィルタの種類を示す窓B02が表示され、下部には指示ボタンB03が表示される。本実施形態では、複数種類のフィルタの伝達関数が記憶部53に記憶されており、それらの複数種類のフィルタのうちの任意のフィルタについて第2振幅特性を生成可能である。ユーザは、操作部52のポインティングデバイスにより指示ボタンB03を指示し、キーボードの矢印キーの操作等により、窓B02に表示されるフィルタの種類、すなわち、第2振幅特性を生成するフィルタの種類を変えることができる。
図3に示す例では、窓B02にLPの文字が表示されているが、これは現在、Butterworth型ローパスフィルタが選択されていることを示している。
【0030】
中央の指示エリアB1において、上部には振幅特性のスロープ部を意味するRoll Offの文字B11が表示され、中央には現在選択されている第1操作情報ROを示す窓B12が表示され、下部には指示ボタンB13が表示される。本実施形態では、複数種類の第1操作情報ROのうちの任意の第1操作情報ROを選択可能である。ユーザは、操作部52のポインティングデバイスにより指示ボタンB13を指示し、キーボードの矢印キーの操作等により、窓B12に表示される第1操作情報ROを変えることができる。
図3に示す例では、スロープ部の傾き角を指示する第1操作情報ROとして、15dB/octが選択されている。通常のButterworth型ローパスフィルタの場合、20ndB/oct(nは整数)という飛び飛びの傾き角しか指示することができない。しかしながら、本実施形態では、この飛び飛びの値以外の任意の傾き角を指示することが可能である。
【0031】
左側の指示エリアB2において、上部にはFreqの文字B21が表示され、中央には周波数軸上においてスロープ部の所在する位置を指示する第2操作情報Freqを示す窓B22が表示され、下部には指示ボタンB23が表示される。本実施形態では、複数種類の第2操作情報Freqのうちの任意の第2操作情報Freqを選択可能である。ユーザは、操作部52のポインティングデバイスにより指示ボタンB23を指示し、キーボードの矢印キーの操作等により、窓B22に表示される第2操作情報Freqを変えることができる。
図3に示す例では、第2操作情報Freqとして、1kHzが選択されている。
【0032】
ここで、
図3に例示するように、Butterworth型ローパスフィルタが選択されている場合を例に第2振幅特性を生成するための処理を具体的に説明する。
【0033】
Butterworth型ローパスフィルタが選択された場合、第2振幅特性を生成するために次式に示す伝達関数が使用される。
Hlpf(ω)
=1/{1+ω2n)
……(3)
【0034】
上述のステップS2では、次式に従い、第1操作情報ROから第1制御データcが算出される。
c=RO/(10log102) ……(4)
【0035】
次にステップS3では、次式に従い、第2操作情報Freqから第2制御データω0が算出される。
ω0=2π×Freq ……(5)
【0036】
次にステップS4では、前掲式(3)の伝達関数Hlpf(ω)において、角周波数ωの次数nを、第1制御データcが示す周波数軸方向の伸縮量を反映させた仮想次数cに置換し、角周波数ωを、第2制御データω0が示す周波数軸方向のシフト量を反映させた仮想角周波数ω/ω0に置換することにより、次式に示す伝達関数H′lpf(ω)を算出する。
H′lpf(ω)
=1/{1+(ω/ω0)2c)
……(6)
ステップS5では、このようにして得られた伝達関数H′lpf(ω)に基づいて第2振幅特性が生成される。
【0037】
図3には、第2操作情報Freqを1kHzとし、第1操作情報ROを各種変化させた場合にステップS6において特性表示エリアA0に表示される各種の第2振幅特性が示されている。さらに詳述すると、
図3には、第1操作情報ROとして、20ndB/oct、すなわち、20dB/octが選択された場合の第2振幅特性G1と、40dB/octが選択された場合の第2振幅特性G2と、60dB/octが選択された場合の第2振幅特性G3と、80dB/octが選択された場合の第2振幅特性G4と、100dB/octが選択された場合の第2振幅特性G5とが示されている。さらに
図3には、第1操作情報ROとして、20ndB/octに該当しない傾き角、すなわち、50dB/octが選択された場合の第2振幅特性G6とが示されている。
【0038】
第2操作情報Freqを1kHzとしているため、第2振幅特性G1~G6のスロープ部の開始位置、すなわち、ゲインが下降を開始する周波数は、いずれも1kHz付近となる。
【0039】
第2振幅特性G1~G5のスロープ部の傾き角を示す第1操作情報ROは、20ndB/octという飛び飛びの値になる。これらの場合、第1操作情報ROから得られる第1制御データcは、1、2、3、4、5という整数値nになる。このスロープ部の傾き角は、通常のButterworth型ローパスフィルタにおいて実現可能な傾き角である。
【0040】
第2振幅特性G6に関しては、第1操作情報ROが50dB/octを示しており、この第1操作情報RO=50dB/octから得られる第1制御データcは、非整数値となる。このスロープ部の傾き角は、通常のButterworth型ローパスフィルタでは実現不可能な傾き角である。
【0041】
しかしながら、本実施形態では、第1操作情報RO=50dB/octから得られる非整数値の第1制御データcを用いて前掲式(6)の伝達関数H′lpf(ω)を算出し、この伝達関数H′lpf(ω)から得られる第2振幅特性G6に基づいてFIRフィルタのフィルタ係数を設定する。従って、本実施形態によれば、通常のButterworth型ローパスフィルタでは実現不可能なスロープ部の傾き角を有する振幅特性をFIRフィルタにより実現することができる。
【0042】
以上のように、本実施形態によれば、フィルタの振幅特性のスロープ部の傾き角の調整を容易にすることができる。また、本実施形態によれば、振幅特性における他の形状を変えないで、スロープ部の傾き角のみを調整することができるので、既存のIIRフィルタの振幅特性との互換性が保つことができる。
【0043】
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態があり得る。例えば次の通りである。
【0044】
(1)上記実施形態では、Butterworth型ローパスフィルタに本発明を適用した態様を示したが、本発明の適用対象はこれに限定されるものではなく、例えばButterworth型ハイパスフィルタに本発明を適用してもよい。
【0045】
(2)また、この発明は、次式に示す伝達関数を有するハイシェルフフィルタにも適用可能である。
Hhshelf(ω)
={1+√g(2/Q)jω+g(jω)2}
/{1+(2/Q)jω+(jω)2}
……(7)
【0046】
この場合、第2振幅特性に対応した伝達関数は、次式に示すものとなる。
H′hshelf(ω)
={1+√g(2/Q)(jω/ω0)c+g(jω/ω0)2c}
/{1+(2/Q)(jω/ω0)c+(jω/ω0)2c}
……(8)
ローシェルフフィルタについても同様である。
【0047】
(3)また、この発明は、次式に示す伝達関数を有するピーキングフィルタにも適用可能である。
Hpeq(ω)
={1+g(1/Q)jω+(jω)2}
/{1+(1/Q)jω+(jω)2}
……(9)
【0048】
この場合、第2振幅特性に対応した伝達関数は、次式に示すものとなる。
H′peq(ω)
={1+g(1/Q)(jω/ω0)c+(jω/ω0)2c}
/{1+(1/Q)(jω/ω0)c+(jω/ω0)2c}
……(10)
【0049】
(4)本発明において、第1振幅特性に対応した伝達関数は、Butterworthフィルタの伝達関数に限定されるものではない。Butterworthフィルタ、Chebyshevフィルタ、Ellipticフィルタ、およびBesselフィルタの伝達関数が、第1振幅特性に対応した伝達関数として好適である。
【0050】
(5)上記実施形態では、第1振幅特性に対応した伝達関数から第2振幅特性に対応した伝達関数を算出し、この算出した伝達関数から第2振幅特性を生成した。しかし、そのようにする代わりに、第1振幅特性に対応した伝達関数から第1振幅特性を生成し、この第1振幅特性を第1制御データcおよび第2制御データω0に基づいて変形することにより第2振幅特性を生成してもよい。
【符号の説明】
【0051】
100……信号処理装置、41……音信号入力部、42……音信号出力部、10……プロセッサ、20……フィルタ制御部、21……入力部、22……処理部、30……フィルタ実行部、51……表示部、52……操作部、53……記憶部、20P……フィルタ制御プログラム、30P……フィルタ実行プログラム。