JP5092902B2 - Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム - Google Patents

Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム Download PDF

Info

Publication number
JP5092902B2
JP5092902B2 JP2008140423A JP2008140423A JP5092902B2 JP 5092902 B2 JP5092902 B2 JP 5092902B2 JP 2008140423 A JP2008140423 A JP 2008140423A JP 2008140423 A JP2008140423 A JP 2008140423A JP 5092902 B2 JP5092902 B2 JP 5092902B2
Authority
JP
Japan
Prior art keywords
fir filter
coefficient
frequency
axis
filter coefficient
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008140423A
Other languages
English (en)
Other versions
JP2009290513A (ja
Inventor
純一 南高
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2008140423A priority Critical patent/JP5092902B2/ja
Publication of JP2009290513A publication Critical patent/JP2009290513A/ja
Application granted granted Critical
Publication of JP5092902B2 publication Critical patent/JP5092902B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、FIR(有限インパルス応答)フィルタのインパルス応答係数を算出する装置、当該FIRフィルタ係数算出装置により算出されたインパルス応答係数と入力信号との積和演算を行なうFIRフィルタ、および、FIRフィルタ係数算出プログラムに関する。
電子楽器やオーディオ機器からの楽音信号に共鳴音を付加する種々の装置が知られている。ここに、共鳴音には、ホールなど楽音が発生される場所における残響音や、楽器自体の共鳴音などが含まれる。
共鳴音を発生するためには、共鳴音付加装置は、ディジタルの楽音信号データを受け入れて、楽音信号データにディジタルフィルタによるフィルタ処理を施すのが一般的である。フィルタ処理においては、FIR(有限インパルス応答:Finite Impulse Response)フィルタ或いはIIR(無限インパルス応答:Infinite Impulse
Response)フィルタが利用される。
FIRフィルタを利用する場合には、入力された楽音信号データx(n−j)と、音楽ホールの残響特性などから得たインパルス応答hn(j)を畳み込み演算することで、共鳴音y(n)=Σx(n−j)×hn(j)のデータを得ることができる。しかしながら、FIRフィルタにおいては、インパルス応答データの数、つまり、フィルタの次数を高くすることにしたがって、より理想的なフィルタ特性に近づけることができる。その一方、フィルタの次数を上げるにしたがって、演算量も多量となるという問題点がある。
特開2000−163086号公報 特開2006−101461号公報
たとえば、特許文献1には、FIRフィルタにおいて少ないパラメータで多数の反射音を生成するための技術が開示されている。特許文献1においては、FIRフィルタを縦列に接続して、前段のFIRフィルタには、比較的まばら、つまり、時間的に間隔をおいて、かつ、長時間にわたるようなパラメータ(フィルタ係数)が用いられる。その一方、後段のFIRフィルタには、密になるように、狭い時間間隔となるようなパラメータ(フィルタ係数)が用いられる。また、特許文献2においても、同様に、特性の異なる2つのFIRフィルタを設け、前段のFIRフィルタの出力を、後段のFIRフィルタに入力させることが開示されている。上述したようにFIRフィルタを直列に接続させることで、より多くの反射音など共鳴音を得るようにしている。
その一方、ユーザが所望の周波数特性を設定して、それに応じたFIRフィルタ係数を算出する技術も提案されている。このようなFIRフィルタ係数の算出に際しては、より多くの反射音を得ることも重要であるが、特に、SN比や応答性能が良好であることが望まれる。
本発明は、設定された周波数特性に基づいてSN比および応答特性が良好なFIRフィルタ係数を算出するFIRフィルタ係数算出装置、FIRフィルタ装置、および、FIRフィルタ係数算出プログラムを提供することを目的とする。
本発明の目的は、周波数軸上の周波数応答係数を格納した周波数応答係数記憶手段と、
前記周波数応答係数記憶手段から読み出された周波数軸上の周波数応答係数に基づく、周波数軸上のスペクトルパワーの絶対値と、前記周波数軸上において、位相を特定するための所定の位相関数の関数値とに基づいて、周波数軸上のスペクトルパワーの実数部および虚数部を算出する個別位相情報生成手段と、
前記周波数軸上のスペクトルパワーの実数部および虚数部をフーリエ逆変換して得た時間軸上の係数を参照して、FIRフィルタ係数の先頭とすべき時間軸上の所定の先頭位置を特定する全体位相情報生成手段と、
前記時間軸上の所定の先頭位置に基づいて、前記係数を再配置して、再配置された係数をFIRフィルタ係数として、FIRフィルタ係数記憶手段に格納する係数再配置手段と、を備えたことを特徴とするFIRフィルタ係数算出装置により達成される。
好ましい実施態様においては、前記周波数軸上のレベルとしてユーザにより入力されたユーザ入力係数を受け入れ、前記ユーザ入力係数を、前記音響信号データのサンプリング周波数の1/2の周波数を対称軸として折り返すことで、周波数軸上の周波数応答係数を生成する周波数応答係数生成手段を有する。
また、別の好ましい実施態様においては、前記個別位相情報生成手段が、前記周波数軸上の位置jについて、
実数部re[j]=Power[j]×cos([Theta(j)])
虚数部im[j]=Power[j]×sin([Theta(j)])
ただし、Power[j]は位置jにおけるスペクトルパワーの絶対値、Theta(j)は、位置jにおける位相関数Thetaの関数値
を算出する。
また、好ましい実施態様においては、前記個別位相情報生成手段が、前記所定の位相関数として、値として極大、極小をもたない一様な関数を用いる。
別の好ましい実施態様においては、前記全体位相情報生成手段が、時間軸上の所定の位置から右側に位置する係数の積分値と、当該所定の位置から左側に位置する係数の積分値との差分値が最大となるような前記所定の位置を、前記時間軸上の先頭位置と決定する。
より好ましい実施態様においては、前記全体位相情報生成手段が、当該係数がピークとなる時間軸上の位置を見出し、前記所定の位置が、前記ピークとなる時間軸上の位置から所定の範囲内である場合に、前記時間軸上の先頭位置と決定する。
好ましい実施態様においては、前記係数再配置手段が、もとの時間軸上の末尾位置の後ろに、もとの時間軸上の0以降が引き続くように、前記係数を再配置する。
また、本発明の目的は、上述したFIRフィルタ係数算出装置と、
時間軸上の一連の音響信号データを格納した音響信号記憶手段と、
前記音響信号記憶手段から前記音響信号データを読み出し、かつ、前記FIR係数算出装置により算出されたFIRフィルタ係数を格納した前記FIRフィルタ係数記憶手段から、前記FIRフィルタ係数を読み出して、前記前記音響信号データと対応する前記FIRフィルタ係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算手段と、を備えたことを特徴とするFIRフィルタ装置により達成される。
さらに、本発明の目的は、周波数軸上の周波数応答係数を格納した周波数応答係数記憶装置を備えたコンピュータに、
前記周波数応答係数記憶装置から読み出された周波数軸上の周波数応答係数に基づく、周波数軸上のスペクトルパワーの絶対値と、前記周波数軸上において、位相を特定するための所定の位相関数の関数値とに基づいて、周波数軸上のスペクトルパワーの実数部および虚数部を算出する個別位相情報生成ステップと、
前記周波数軸上のスペクトルパワーの実数部および虚数部をフーリエ逆変換して得た時間軸上の係数を参照して、FIRフィルタ係数の先頭とすべき時間軸上の所定の先頭位置を特定する全体位相情報生成ステップと、
前記時間軸上の所定の先頭位置に基づいて、前記係数を再配置して、再配置された係数をFIRフィルタ係数として、前記コンピュータに備えられたFIRフィルタ係数記憶装置に格納する係数再配置ステップと、を実行させることを特徴とするFIRフィルタ係数算出プログラムにより達成される。
本発明によれば、設定された周波数特性に基づいてSN比および応答特性が良好なFIRフィルタ係数を算出するFIRフィルタ係数算出装置、FIRフィルタ装置、および、FIRフィルタ係数算出プログラムを提供することが可能となる。
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本発明の実施の形態にかかるFIRフィルタ係数算出部を含む楽音発生装置の構成を示すブロックダイヤグラムである。図1に示すように、楽音発生装置は、CPU11、入力装置12、表示装置13、ROM14、RAM15、サウンドシステム16を備える。サウンドシステム16は、楽音発生回路17、共鳴音付加回路18、増幅器(図示せず)、スピーカ(図示せず)などを含み、CPU11からの指示にしたがって、所定の楽音信号データを生成し、かつ、楽音信号データに基づいて、その共鳴音を再現した共鳴音データを生成し、生成された共鳴音データと楽音信号データとが合成された合成データに基づく音響信号を出力する。
図1に示すように、楽音発生装置は、通常のパーソナルコンピュータによって実現され得る。或いは、鍵盤(図示せず)を有する鍵盤楽器の形態を取っていても良い。CPU11は、システム制御、FIRフィルタ係数の算出、表示装置13の画面上に表示すべき画像データの生成などの処理を実行する。入力装置12は、たとえば、キーボードやマウスを有し、操作者が所望の指示を入力することができるようになっている。表示装置13の画面上には、操作者が入力した指示や処理結果が表示可能である。
ROM14は、FIRフィルタ係数を算出するためのプログラム、楽音信号データを生成するためのプログラム、プログラムの実行の際に使用される定数、楽音信号データを生成するための各種音色の波形データなどを記憶する。RAM15は、プログラムの実行の過程で必要な変数、パラメータ、入力データ、出力データなどを一時的に記憶する。楽音発生回路17は、鍵盤の押鍵や自動演奏データにおけるある音高の楽音のオン(ノートオン)に応じて、所定の音高の楽音信号データを出力する。共鳴音付加回路18は、楽音信号データを受け入れて、楽音信号データにFIRフィルタ処理を施す。
図2は、本実施の形態にかかるFIRフィルタ係数算出部の構成を示すブロックダイヤグラムである。図2に示すように、FIRフィルタ係数算出部20は、周波数応答係数編集部21、個別位相情報生成部22、全体位相情報生成部23、画像生成部24、および、係数順序変更部25を有する。これらにおいて実行される詳細な処理については後述する。
周波数応答係数編集部21は、入力部12から、ユーザの操作により入力されたパラメータを受け入れ、FIRフィルタ係数を算出するためのもととなるユーザ設定係数を、ユーザ設定係数メモリ30に格納する。ユーザ設定係数は、周波数特性を表す周波数軸上の係数(周波数応答係数)である。
また、個別位相情報生成部22、全体位相情報生成部23および係数順序変更部25は、ユーザ設定係数などに基づいて、FIRフィルタ係数を算出して、算出されたFIRフィルタ係数をFIRフィルタ係数メモリ31に格納する。また、画像生成部24は、処理の過程或いは処理結果に関する画像データを生成して、表示部13の画面上に表示する。
図2において、周波数応答係数編集部21、個別位相情報生成部22、全体位相情報生成部23、画像生成部24および係数順序生成部25の機能は、主として図1に示すCPU11により実現される。また、ユーザ設定係数メモリ30およびFIRフィルタ係数メモリ31は、RAM15中に設けられる。なお、ユーザ設定係数メモリ30には、上記ユーザ入力に基づく係数のほか、個別位相情報生成部22、全体位相情報生成部23および係数順序変更部25による処理の過程で算出された係数やパラメータが一時的に記憶される。
図3は、本実施の形態にかかる共鳴音付加回路18の構成を示すブロックダイヤグラムである。図3に示すように、共鳴音付加回路18は、楽音信号データバッファ32、応答係数バッファ33、積和演算回路34、共鳴音データバッファ35および加算回路36を有する。
楽音信号データバッファ32は、楽音発生回路から出力された楽音信号データを一時的に記憶し、それぞれのデータを所定の時間だけ遅延させて、遅延させた楽音信号データX(j)を積和演算回路34に出力する。応答係数バッファ33は、FIRフィルタ係数メモリ31から出力されたFIRフィルタ係数を一時的に記憶して、それぞれのデータを所定の時間だけ遅延させて、遅延させたFIRフィルタ係数(インパルス応答係数)aを積和演算回路34に出力する。
積和演算回路34は、楽音信号データX(j)(たとえば、j=0、1、・・・、n−1)と、対応するインパルス応答係数a(j=0、1、・・・、n−1)とを乗算し、乗算結果を順次累算して、Σa×X(j)を求め、共鳴音データYとして出力する。共鳴音データYは、共鳴音データバッファ35に一時的に記憶され、楽音発生回路17から出力された楽音信号データと、共鳴音データバッファ35から出力された共鳴音データとが加算回路36により加算され、合成データが出力される。
次に、本実施の形態にかかるCPU11(FIRフィルタ係数算出部20)において実行されるFIRフィルタ係数算出処理について説明する。図4は、本実施の形態にかかるFIRフィルタ係数算出処理の例を示すフローチャートである。図4に示すように、FIRフィルタ係数算出部20の周波数応答係数編集部21は、処理に使用するパラメータ、ユーザ設定係数メモリ30やFIRフィルタ係数メモリ31のデータなどを初期化する(ステップ401)。次いで、ユーザの操作により終了指示があったか否かを判断する(ステップ402)。
ステップ402でNoと判断された場合には、入力部21から、ユーザ操作によりフィルタ係数の入力があったか否かを判断する(ステップ403)。ステップ403でYesと判断された場合には、周波数応答係数編集部21は、データ入力処理を実行する(ステップ404)。データ入力処理においては、たとえば、周波数応答係数編集部21が、画像生成部24に指示を与え、図5に示すように、横軸を鍵域、縦軸をレベルとするようなグラフを生成させて、表示装置13の画面上に表示し、ユーザが、入力装置12のマウス、キーを操作して、グラフ上に所望の周波数特性を入力する。なお、縦軸のレベルは、後述するスペクトルパワー値の実数部に相当する。また、本実施の形態では、ユーザは可聴範囲において所望の周波数特性を入力すればよい。
図5では、表示装置13の画面上に表示されたグラフ500において、曲線501が入力されている。各鍵の鍵名は周波数と対応付けられるため、データ入力処理において、周波数応答係数編集部21は、ユーザ入力された曲線に基づいて、周波数軸上の所定の位置(周波数)における周波数応答係数を得る。この周波数軸上の周波数応答係数は、ユーザ設定係数としてユーザ設定係数メモリ30に格納される。なお、本実施の形態においては、ユーザが直感的に把握することを容易にするために、グラフにおいて横軸を鍵域としているため、対数軸となっている。
また、データ入力処理においては、後述するデータ出力処理において利用される位相を示す関数およびそのパラメータ値の入力が受理され、関数の情報およびパラメータ値がRAM15に記憶される。
次いで、FIRフィルタ係数算出部20は、データ出力処理を実行する必要があるか否かを判断する(ステップ405)。データ入力処理404で、新たにユーザ設定係数メモリ30にユーザ設定係数が格納され、或いは、ユーザ設定係数メモリ30に格納された情報が更新された場合には、ステップ405でYesと判断されて、データ出力処理が実行される。
図6は、本実施の形態にかかるデータ出力処理の例を示すフローチャートである。図6に示すように、FIRフィルタ係数算出部20の個別位相情報生成部22は、ユーザ設定係数メモリ30に格納されたユーザ設定係数を読み出して、読み出したユーザ設定係数を指数変換する(ステップ601)。ここに指数変換は、ユーザによるユーザ設定係数の入力の際には、横軸が対数軸となっているため、これをもとに戻すために実行される。
次いで、個別位相情報生成部22は、周波数軸上でFS/2を中心(対称軸)として、FS/2より低い周波数側のユーザ設定係数を、FS/2より高い周波数側にコピーする(ステップ602)。
ユーザ設定係数を、re[j]とすると、コピーによるFS/2より高い周波数側のフィルタ係数は以下のように表される。なお、re[j]は、スペクトルパワー値の実数部を表すが、ユーザ設定係数は、実数部のみを有する。
re[N−1−j]=re[j]
ただし、NはFIRフィルタのタップ数である。
図7に示すように、周波数軸上でFS/2を対称軸として、その右側に、左側にあったユーザ設定係数を折り返した形状の周波数応答係数が配置される。たとえば、第q番のフィルタ係数re[q]と、第(N−1−q)番のフィルタ係数re[N−1−q]は一致する。また、図7において、タップ数の第(N−1)番が、周波数FSに相当する。
次いで、個別位相情報生成部22は、パラメータjを「0」に初期化して(ステップ604)、j≧N(ステップ604でYes)になるまで、以下の処理を実行する。個別位相情報生成部22は、各パラメータjに関して、スペクトルパワー値を算出する(ステップ605)。スペクトルパワー値Power[j]は、以下のように算出される。
Power[j]=re[j]
実際には、スペクトルパワー値は、im[j]は、スペクトルパワー値の虚数部も考慮して、Power[j]=sqrt(re[j]+im[j]) (sqrtは、カッコ内の値の平方根)となるが、ステップ605では、im[j]=0であるため、実数部のみに基づく値となる。
次に、個別位相情報生成部22は、位相Theta[j]を算出する(ステップ606)。本実施の形態においては、位相Theta[j]は、極大或いは極小をもたない一様な関数(一様に増大或いは減少する関数)である。たとえば、本実施の形態においては、以下の関数のうちいずれかが選択できるようになっている。
Theta[j]=p×j
Theta[j]=p×j
Theta[j]=p×j
Theta[j]=p×sqrt(j)
Theta[j]=p×log(j+1)
なお、データ入力処理において、関数Theta[j]〜Theta[j]のいずれかが選択される。p〜pは、ユーザが入力する正または負の係数であり、これもデータ入力処理において入力され、RAM15に記憶されている。
個別位相情報生成部22は、ステップ606で算出された位相に基づいて、位相を考慮したスペクトルパワー値の実数部(ステップ607)およびスペクトルパワー値の虚数部(ステップ608)を算出する。スペクトルパワー値の実数部re[j]および虚数部im[j]は以下のように算出される。
re[j]=Power[j]×cos(Theta[j])
im[j]=Power[j]×sin(Theta[j])
その後、個別位相情報生成部22は、パラメータjをインクリメントして(ステップ609)、ステップ604に戻る。
ステップ604〜ステップ609によって、ユーザ設定係数に基づいて、位相を考慮したスペクトルパワー値を求めることが可能となる。
ステップ604でYesと判断されると、個別位相情報生成部22は、得られたre[j]およびim[j](j=0、1、・・・、(N−1))に逆FFT(逆高速フーリエ変換)処理を施す(ステップ610)。これにより、FIRフィルタ係数を得ることができる。逆FFTにより、時間軸方向、つまり、時間領域にN個の実数を得ることができる。実際には、実数部RE[j]および虚数部IM[j]が得られるが、虚数部IM[j]は「0」となるため、N個の実数値のみが得られることになる。これらがインパルス応答係数(FIRフィルタ係数)に相当する。逆FFT処理により得られたFIRフィルタ係数は、ユーザ設定係数メモリ30に一時的に記憶される。
次いで、全体位相情報生成部23が、全体位相情報生成処理を実行する(ステップ611)。図8および図9は、本実施の形態にかかる全体位相情報生成処理の例を示すフローチャートである。全体位相情報生成部23は、ユーザ設定係数メモリ30に一時的に記憶されたFIRフィルタ係数を読み出して、その値を調べて、値がピークポイントとなる時間軸上の値PPを特定する(ステップ801)。
図10は、逆FFTにより得られたFIRフィルタ係数の例を示す図である。FIRフィルタ係数は、符号1000に示すようなグラフとなる。この正或いは負のピーク値をとるような時間軸上の値がPPとなる。
次いで、全体位相情報生成部23は、パラメータjおよびMaxを、ともに「0」に初期化して(ステップ802)、j≧Nとなるまで(ステップ803でYes)、ステップ804以降の処理を実行する。全体位相情報生成部23は、(PP−j+N)のNによる剰余((PP−j+N) mod N)が、所定値N/4より小さいか否かを判断する(ステップ804)。ステップ804は、図10において符号1001で表す時間長が、所定値より小さいか否かを判断することを意味している。
本実施の形態においては、後述するように、位置jを中心として、右側に存在する一定の時間長widの区間(符号1003参照)におけるFIRフィルタ係数の積分値Rと、左側に存在する一定の時間長widの区間(符号1002参照)におけるFIRフィルタ係数の積分値Lとを算出している。位置jと、ピークポイントPPとの間隔が一定値より小さい場合のみ、積分値を有効としている。位置jとピークポイントPPとの間隔があまりに大きいことは、FIRフィルタの応答特性の劣化を招くため、上記間隔が所定の値より小さいことを条件としている。
ステップ804でNoと判断された場合には、全体位相情報生成部23は、パラメータjをインクリメントして(ステップ908)、ステップ803に戻る。その一方、ステップ804でYesと判断された場合には、図10における、位置jより右側に存在する一定の時間長widの区間1003におけるFIRフィルタ係数の積分値Rが算出される(ステップ805〜808)。
より詳細には、全体位相情報生成部23は、パラメータkおよび積分値Rを「0」に初期化して(ステップ805)、k≧widとなるまで(ステップ806でYes)、ステップ807、808を繰り返す。ステップ807においては、全体位相情報生成部23は、もとの積分値Rに、加算の対象となった位置((k+j) mod N)のFIRフィルタ係数の絶対値|RE[(k+j) mod N]|を加算して、これを新たな積分値Rとする(ステップ807)。次いで、全体位相情報生成部23はパラメータkをインクリメントする(ステップ808)。
ステップ806でYesと判断されると、図10における、位置jより左側に存在する一定の時間長widの区間1002におけるFIRフィルタ係数の積分値Lが算出される(ステップ901〜904)。
より詳細には、全体位相情報生成部23は、パラメータkおよび積分値Lを「0」に初期化して(ステップ901)、k≦−widとなるまで(ステップ902でYes)、ステップ903、904を繰り返す。ステップ903においては、全体位相情報生成部23は、もとの積分値Lに、加算の対象となった位置((k+j+N) mod N)のFIRフィルタ係数の絶対値|RE[(k+j+N) mod N]|を加算して、これを新たな積分値Lとする(ステップ903)。次いで、全体位相情報生成部23はパラメータkをディクリメントする(ステップ904)。
ステップ902でYesと判断されると、全体位相情報生成部23は、右側の積分値Rと左側の積分値Lとの差異の最大値を算出する。より詳細には、全体位相情報生成部23は、右側の積分値Rと左側の積分値Lとの差分値Dev(=R−L)を算出する(ステップ905)。次いで、全体位相情報生成部23は、算出された差分値Devが、それ以前の処理において得られていた差分値の最大値Max以上であるか否かを判断する(ステップ906)。
ステップ906でYesと判断された場合には、全体位相情報生成部23は、位置jを、最大値を表す位置SPとするとともに、差分値Devを最大値Maxとする(ステップ907)。位置SPおよび最大値Maxは、RAM15に記憶される。
その後、全体位相情報生成部23は、パラメータjをインクリメントして(ステップ908)、左右の積分値を算出するための中心位置を移動させて、ステップ803に戻る。
全体位相情報生成処理(ステップ611)が終了すると、係数順序変更部25は、FIRフィルタ係数メモリ31に格納されたFIRフィルタ係数を読み出して、その順序を、位置SPにおける値re[SP]が先頭となるように変更して、変更後のFIRフィルタ係数を、FIRフィルタ係数メモリ31に格納する(ステップ612)。図11は、係数順序変更部25による処理にしたがったFIRフィルタ係数について説明する図である。
図11に示すように、FIRフィルタ係数メモリ31には、N個のFIRフィルタ係数の列(符号1100参照)が、re[0]、re[1]・・・、re[SP] 、re[SP+1]、・・・、re[N−2]、re[N−1]の順で格納されている。係数順序変更部25は、全体位相情報生成部23による処理の結果、右側の積分値Rと左側の積分値Lとの差が最大となるような位置SPにおけるFIRフィルタ係数re[SP]を先頭として、元のFIRフィルタ係数の列の末尾であったre[N−1]まで続き、その後ろに、re[0]、re[1]、・・・、re[SP−1]が配置されたような、変更後の新たなFIRフィルタ係数の列(符号1101参照)を生成して、FIRフィルタ係数メモリ31に格納する。
係数の順序を、左右の積分値の差分値が最大となるような位置が先頭となるように再配置することは以下のような理由による。基本的に、FIRフィルタ係数のピークが時間軸上で早く出現することは応答特性が良好であることを意味している。しかしながら、ピークの出現には、一定の過渡状態が存在する。つまり、FIRフィルタ係数のピークが、時間軸上の先頭に出現することは、逆に不自然な状態となる。そこで、本実施の形態においては、左右の積分値の差分値が最大となるような位置を見出して、そのような位置が先頭となるように、FIRフィルタ係数の右側を先頭として、左側をそれに引き続くように配置することで、過渡状態を考慮しつつ、ピークが時間軸上で早く出現するようなFIRフィルタ係数を得ている。
FIRフィルタ係数メモリ31に格納された新たなFIRフィルタ係数の列が、共鳴音データの生成に利用されるFIRフィルタ係数となる。したがって、図3に示す共鳴音付加回路18は、FIRフィルタ係数メモリ31中の、新たなFIRフィルタ係数を、その順序にしたがって読み出して、応答係数バッファ33に一時的に記憶して、積和演算回路34における楽音信号データとの積和演算に利用する。
図12〜図14は、それぞれ、個別位相情報生成部22による処理(図6のステップ601〜609)の結果の例を説明するグラフである。図12(a)、図13(a)および図14(a)は、横軸が周波数軸、縦軸を位相としたグラフである。これらの図においては、図6のステップ606で算出された位相が示される。図12の例では、位相関数Theta(j)=2.23e1×sqrt(j)=22.3×sqrt(j)、図13の例では、位相関数Theta(j)=−1.6e−10×j=−1.6×10^−10×j、図14の例では、位相関数Theta(j)=−1.14e−7×j=−1.14×10^−7××jである。
図12(b)、図13(b)および図14(c)は、音名C−1〜A9までのそれぞれに同じレベルのユーザ設定係数が与えられたことを示している。図において、縦線が各音名に与えられたユーザ設定係数のレベルを示している。
図12(c)、図13(c)において図14(c)は、それぞれ、個別位相情報生成部22による処理(図6のステップ601〜609)が終了し、かつ、スペクトルパワー値の実数部および虚数部に逆FFT処理が施されたときのFIRフィルタ係数の例を示す。これらの図においては、横軸は時間軸、縦軸はFIRフィルタ係数の係数値である。図12(c)、図13(c)および図14(c)においては、全体位相情報生成部23および係数順序変更部25による処理の前であり、ピークの出現する位置は、時間軸上でほぼ中央部となっている。
図15は、個別位相情報処理部22、全体位相情報生成部23および係数順序変更部25による処理結果の例を示すグラフである。図15の例では、位相関数として、Theta(j)=1.65e1×sqrt(j)=16.5×sqrt(j)を用いている。図15(b)は、図12(b)、図13(b)および図14(c)と同様に、音名C−1〜A9までのそれぞれに同じレベルのユーザ設定係数が与えられたことを示している。図15(a)は、横軸を周波数軸、縦軸をスペクトルパワーとしたグラフである。図15(b)に示すように同じレベルのユーザ設定係数が与えられているため、スペクトルパワーの値も一定である。図15(c)は、最終的に得られたFIRフィルタ係数の例を示す。図15(c)において、横軸は時間軸、縦軸はFIRフィルタ係数の係数値である。図15(c)を参照すると、FIRフィルタ係数が、一定の過渡状態を経てピークに至っていることが理解できる。
本実施の形態によれば、個別位相情報算出部22が、周波数軸上の周波数応答係数に基づく、周波数軸上のスペクトルパワーの絶対値Power[j]と、周波数軸上において、位相を特定するための所定の位相関数の関数値Theta[j]とに基づいて、周波数軸上のスペクトルパワーの実数部re[j]および虚数部im[j]を算出する。これにより、後に時間軸に変換したときに応答特性の良い係数列を得る事ができる。
また、全体位相情報生成部23は、実数部re[j]および虚数部im[j]を逆フーリエ変換して得た時間軸状の係数RE[j]に基づいて、FIRフィルタ係数の先頭位置SPを見出す。その後、係数順序変更部25が、位置SPを先頭として、もとの時間軸上の末尾位置の後ろに、もとの時間軸上の「0」以降が引き続くように、係数を再配置し、これをFIRフィルタ係数とする。これにより、係数のピークが適切な位置に出現するようなFIRフィルタ係数を取得することが可能となる。
また、本実施の形態によれば、周波数応答係数編集部21は、周波数軸上のレベルとしてユーザにより入力されたユーザ入力係数を受け入れ、受け入れたユーザ入力係数を、楽音信号データのサンプリング周波数FSの1/2の周波数を対称軸として折り返すことで、周波数軸上の周波数応答係数を生成する。これにより、ユーザは、可聴範囲における所望の周波数特性を入力すれば良い。
さらに、本実施の形態によれば、個別位相情報生成部22は、周波数軸上の位置jについて、
実数部re[j]=Power[j]×cos([Theta(j)])
虚数部im[j]=Power[j]×sin([Theta(j)])
(ただし、Power[j]は位置jにおけるスペクトルパワーの絶対値、Theta(j)は、位置jにおける位相関数Thetaの関数値)を算出する。
このように実数部および虚数部を算出することで、位相が最適化されたFIRフィルタ係数を得ることが可能となる。
所定の位相関数として、値として極大、極小をもたない一様な関数を用いるのが望ましい。本実施の形態では、たとえば、以下のような位相関数が用いられる。
Theta[j]=p×j
Theta[j]=p×j
Theta[j]=p×j
Theta[j]=p×sqrt(j)
Theta[j]=p×log(j+1)
〜Pは、それぞれ正または負の係数
位相関数として極大、極小をもたない一様な関数を用いることで、応答性能の良好なFIRフィルタ係数の係数列を得ることが可能となる。
また、本実施の形態においては、全体位相情報生成部23が、時間軸上の所定の位置から右側に位置する係数の積分値Rと、所定の位置から左側に位置する係数の積分値Lとの差分値Devが最大となるような所定の位置を、時間軸上の先頭位置SPと決定している。これにより、FIRフィルタ係数のピークの出現には、一定の過渡状態が存在することを考慮したFIRフィルタ係数の係数列を得ることができる。
さらに、全体位相情報生成部23は、係数がピークとなる時間軸上の位置を見出し、ピークとなる時間軸上の位置から所定の範囲内である場合にのみ、左右の積分値の差分値Devが最大となるような所定の位置を、時間軸上の先頭位置SPと決定する。一定の過渡状態を考えても、ピークが出現するまでの時間長があまり長い場合には応答性能が劣化することを考慮している。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、位相関数Theta(j)は、上記実施の形態に列挙したものに限定されるものではない。
また、前記実施の形態において、FIRフィルタ係数の先頭からピークポイントPPとの距離(時間長)が、N/4より小さいか否かを判断している(ステップ804)。この時間長はN/4に限定されるものではない。
さらに、 前記実施の形態においては、鍵盤の押鍵や自動演奏データにおけるある音高の楽音のオン(ノートオン)に応じて生成された楽音信号データにFIRフィルタ処理を施して、共鳴音データを生成している。しかしながら、これに限定されるものではなく、オーディオ機器から出力されるデータにFIRフィルタ処理を施して、共鳴音データを生成しても良い。つまり、本件においてフィルタ処理を施す対象は、楽音信号データを含む音響信号データである。
図1は、本発明の実施の形態にかかるフィルタ係数算出部を含む楽音発生装置の構成を示すブロックダイヤグラムである。 図2は、本実施の形態にかかるFIRフィルタ係数算出部の構成を示すブロックダイヤグラムである。 図3は、本実施の形態にかかる共鳴音付加回路の構成を示すブロックダイヤグラムである。 図4は、本実施の形態にかかるFIRフィルタ係数算出処理の例を示すフローチャートである。 図5は、ユーザが入力するフィルタ特性の例を示すグラフである。 図6は、本実施の形態にかかるデータ出力処理の例を示すフローチャートである。 図7は、周波数軸上でFS/2を対称軸として、その右側に、左側にあったユーザ設定係数を折り返した形状の周波数応答係数の例を示す図である。 図8は、本実施の形態にかかる全体位相情報生成処理の例を示すフローチャートである。 図9は、本実施の形態にかかる全体位相情報生成処理の例を示すフローチャートである。 図10は、本実施の形態における積分値を説明する図である。 図11は、本実施の形態にかかる係数順序変更部によるFIRフィルタ係数の再配置を説明する図である。 図12は、本実施の形態にかかる個別位相情報生成部による処理(図6のステップ601〜609)の結果の例を説明するグラフである。 図13は、本実施の形態にかかる個別位相情報生成部による処理(図6のステップ601〜609)の結果の例を説明するグラフである。 図14は、本実施の形態にかかる個別位相情報生成部による処理(図6のステップ601〜609)の結果の例を説明するグラフである。 図15は、本実施の形態にかかる個別位相情報処理部、全体位相情報生成部および係数順序変更部による処理結果の例を示すグラフである。
符号の説明
11 CPU
12 入力装置
13 表示装置
14 ROM
15 RAM
16 サウンドシステム
17 楽音発生装置
18 共鳴音付加回路
20 FIRフィルタ係数算出部
21 周波数応答係数編集部
22 個別位相情報生成部
23 全体位相情報生成部
24 画像生成部
25 係数順序変更部
30 ユーザ設定係数メモリ
31 FIRフィルタ係数メモリ

Claims (9)

  1. 周波数軸上の周波数応答係数を格納した周波数応答係数記憶手段と、
    前記周波数応答係数記憶手段から読み出された周波数軸上の周波数応答係数に基づく、周波数軸上のスペクトルパワーの絶対値と、前記周波数軸上において、位相を特定するための所定の位相関数の関数値とに基づいて、周波数軸上のスペクトルパワーの実数部および虚数部を算出する個別位相情報生成手段と、
    前記周波数軸上のスペクトルパワーの実数部および虚数部をフーリエ逆変換して得た時間軸上の係数を参照して、FIRフィルタ係数の先頭とすべき時間軸上の所定の先頭位置を特定する全体位相情報生成手段と、
    前記時間軸上の所定の先頭位置に基づいて、前記係数を再配置して、再配置された係数をFIRフィルタ係数として、FIRフィルタ係数記憶手段に格納する係数再配置手段と、を備えたことを特徴とするFIRフィルタ係数算出装置。
  2. 前記周波数軸上のレベルとしてユーザにより入力されたユーザ入力係数を受け入れ、前記ユーザ入力係数を、前記音響信号データのサンプリング周波数の1/2の周波数を対称軸として折り返すことで、周波数軸上の周波数応答係数を生成する周波数応答係数生成手段を有することを特徴とする請求項1に記載のFIRフィルタ係数算出装置。
  3. 前記個別位相情報生成手段が、前記周波数軸上の位置jについて、
    実数部re[j]=Power[j]×cos([Theta(j)])
    虚数部im[j]=Power[j]×sin([Theta(j)])
    ただし、Power[j]は位置jにおけるスペクトルパワーの絶対値、Theta(j)は、位置jにおける位相関数Thetaの関数値
    を算出することを特徴とする請求項1または2に記載のFIRフィルタ係数算出装置。
  4. 前記個別位相情報生成手段が、前記所定の位相関数として、値として極大、極小をもたない一様な関数を用いることを特徴とする請求項1ないし3の何れか一項に記載のFIRフィルタ係数算出装置。
  5. 前記全体位相情報生成手段が、時間軸上の所定の位置から右側に位置する係数の積分値と、当該所定の位置から左側に位置する係数の積分値との差分値が最大となるような前記所定の位置を、前記時間軸上の先頭位置と決定することを特徴とする請求項1ないし4の何れか一項に記載のFIRフィルタ係数算出装置。
  6. 前記全体位相情報生成手段が、当該係数がピークとなる時間軸上の位置を見出し、前記所定の位置が、前記ピークとなる時間軸上の位置から所定の範囲内である場合に、前記時間軸上の先頭位置と決定することを特徴とする請求項5に記載のFIRフィルタ係数算出装置。
  7. 前記係数再配置手段が、もとの時間軸上の末尾位置の後ろに、もとの時間軸上の「0」以降が引き続くように、前記係数を再配置することを特徴とする請求項1ないし6の何れか一項に記載のFIRフィルタ係数算出装置。
  8. 請求項1ないし7に記載のFIRフィルタ係数算出装置と、
    時間軸上の一連の音響信号データを格納した音響信号記憶手段と、
    前記音響信号記憶手段から前記音響信号データを読み出し、かつ、前記FIR係数算出装置により算出されたFIRフィルタ係数を格納した前記FIRフィルタ係数記憶手段から、前記FIRフィルタ係数を読み出して、前記前記音響信号データと対応する前記FIRフィルタ係数とを乗算し、当該乗算結果を累算して、累算結果を出力する積和演算手段と、を備えたことを特徴とするFIRフィルタ装置。
  9. 周波数軸上の周波数応答係数を格納した周波数応答係数記憶装置を備えたコンピュータに、
    前記周波数応答係数記憶装置から読み出された周波数軸上の周波数応答係数に基づく、周波数軸上のスペクトルパワーの絶対値と、前記周波数軸上において、位相を特定するための所定の位相関数の関数値とに基づいて、周波数軸上のスペクトルパワーの実数部および虚数部を算出する個別位相情報生成ステップと、
    前記周波数軸上のスペクトルパワーの実数部および虚数部をフーリエ逆変換して得た時間軸上の係数を参照して、FIRフィルタ係数の先頭とすべき時間軸上の所定の先頭位置を特定する全体位相情報生成ステップと、
    前記時間軸上の所定の先頭位置に基づいて、前記係数を再配置して、再配置された係数をFIRフィルタ係数として、前記コンピュータに備えられたFIRフィルタ係数記憶装置に格納する係数再配置ステップと、を実行させることを特徴とするFIRフィルタ係数算出プログラム。
JP2008140423A 2008-05-29 2008-05-29 Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム Active JP5092902B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008140423A JP5092902B2 (ja) 2008-05-29 2008-05-29 Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008140423A JP5092902B2 (ja) 2008-05-29 2008-05-29 Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム

Publications (2)

Publication Number Publication Date
JP2009290513A JP2009290513A (ja) 2009-12-10
JP5092902B2 true JP5092902B2 (ja) 2012-12-05

Family

ID=41459294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008140423A Active JP5092902B2 (ja) 2008-05-29 2008-05-29 Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム

Country Status (1)

Country Link
JP (1) JP5092902B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015058789A (ja) * 2013-09-18 2015-03-30 株式会社東海理化電機製作所 タイヤ空気圧信号送信機及びタイヤ位置判定システム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3447220B2 (ja) * 1998-06-16 2003-09-16 ヤマハ株式会社 音声変換装置及び音声変換方法

Also Published As

Publication number Publication date
JP2009290513A (ja) 2009-12-10

Similar Documents

Publication Publication Date Title
US7612281B2 (en) Reverberation effect adding device
Zölzer et al. DAFX-Digital audio effects
US9478203B2 (en) Resonance tone generation apparatus and resonance tone generation program
US5270954A (en) Filter device and electronic musical instrument using the filter device
CA2462325C (en) Reverberation sound generating apparatus
JP4702392B2 (ja) 共鳴音発生装置および電子楽器
JP4076887B2 (ja) ボコーダ装置
JP2009175677A (ja) 共鳴音付加装置および電子楽器
JP5092902B2 (ja) Firフィルタ係数算出装置、firフィルタ装置、および、firフィルタ係数算出プログラム
JP4935556B2 (ja) 電子楽器の共鳴音付加装置および電子楽器
JP7147804B2 (ja) 効果付与装置、方法、およびプログラム
JP2779983B2 (ja) 電子楽器
JP5169753B2 (ja) 共鳴音付加装置および電子楽器
JP5593590B2 (ja) 共鳴音発生装置、電子楽器および共鳴音発生プログラム
JP4548516B2 (ja) Firフィルタ装置、音響装置およびfirフィルタプログラム
JP5035388B2 (ja) 共鳴音発生装置および電子楽器
JP4432951B2 (ja) 楽音発生装置および電子楽器
JP4132693B2 (ja) イコライザ
JP3105721B2 (ja) 音響変換装置
JP3149097B2 (ja) 音響成分抽出装置、それを用いた電子楽器、及び周波数成分抽出装置
JP3727110B2 (ja) 楽音合成装置
JP3226255B2 (ja) 楽音合成システム
JP3480063B2 (ja) 楽音合成装置
JP2001290483A (ja) 簡易音源装置
JP2004309980A (ja) 楽音信号処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120821

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120903

R150 Certificate of patent or registration of utility model

Ref document number: 5092902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3