これはGNU Octaveによる、FIRデジタルフィルタを応用したRIAAフォノイコライザに関するプロジェクトです。 このプロジェクトでは次の事を実行することができます。
1 RIAAイコライザ特性をFIRで再現するためのフィルタ係数の算出と、シミュレーションした場合の特性グラフ ・フィルタ係数は直線位相と非直線位相(アナログ近似)の2種類を算出します。
2 算出したFIRの係数を使用したフィルタシミュレーションを行い、特性グラフの表示と、指定したwavファイルを処理して、wavファイルとして出力します。
3 比較用として、IIRでRIAAイコライザをシミュレーションして同じく特性グラフの表示と、指定したwavファイルを処理して、wavファイルとして出力します。
4 RIAAイコライザの伝達特性の表示。
【使用方法】 1 FIRフィルタ係数の算出 a 直線位相FIRフィルタによるRIAA実装 Calc_Linear_FIR_coeff_applicationホルダ内の 20241210_FIR_RIAA_Linear_+6dB@1kHz_001_OK.m を使用します。ファイルをOctaveのワークスペースにコピーしてLOADして、次の通りサンプリング周波数fsとFIRフィルタのタップ数Nを設定します。
% サンプリング周波数とフィルタ設定 fs = 48000; % サンプリング周波数 (Hz) N = 8192; % FIR フィルタのタップ数
サンプリング周波数は一般的に44100,48000,88200,96000、176400,192000などにします。 フィルタのタップ数によってフィルタの分解能が決まります。この例では、fs/N=5.86(Hz)となります。Nは2^nとなる数値にします。 fsとNを設定したら実行すると、"coeff_lin6db_48000.txt"が生成されます。これが求めるFIRフィルタの係数です。
b 非直線位相FIRフィルタによるRIAA実装 Calc_nonLinear_FIR_coeff_applicationホルダ内の 20241210_FIR_RIAA_nonLinear_+6dB@1kHz_002_OK.m を使用します。直線位相の場合と同じくfsとNを設定して実行すると、"coeff_nonlin6db_48000.txt"が生成されます。
2 FIRフィルタ係数を使ったFIRフィルタのシミュレーションおよびwavファイルの処理 上で求めたFIR係数を使ったFIRフィルタのシミュレーションおよびwavファイルの処理を行います。 WAVoutput_applicationホルダ内の 20241210_FIR_RIAA_WAVoutput004_OK.m をOctaveのワークスペースにコピーしてLOADし、次の通りサンプリング周波数フィルタ係数ファイルと処理したいwavファイルを設定します。
% FIRフィルタの係数を読み込み coeff = load('coeff_nonlin6db_48000.txt');
% 音声ファイルの読み込み inputFile = "alice4816_direct_15s.wav";
ここでは上の1で得られたフィルタ係数ファイルを指定しています。 音声ファイルは、フィルタ係数を求めたときのサンプリングのwavファイルを使用します。対象のwavファイルをワークスペースにコピーしてファイル名を指定します。 ・別のディレクトリにあるwavファイルを処理する場合は、c:/aaa/bbb.wavの形式で指定します。 ・対象のwavファイルをOctaveのコマンドウィンドウにドラッグ&ドロップするとフルパスが表示されるので、これをコピペして使うと便利です。 実行して少し待つと、特性のグラフが表示され、"FIR_RIAA_(fs)_(filename).wav"の形式で処理後のファイルが生成されます。 処理時間はおおむね元のwavファイルの再生時間と同じ程度かかります(corei5,windows11)。
3 IIRフィルタのシミュレーションおよびwavファイルの処理 比較用として、IIRフィルタを使用した場合のシミュレーションおよびwavファイルの処理を行います。 WAVoutput_applicationホルダ内の 20241212_IIR_RIAA_WAVoutput001_OK.m をOctaveのワークスペースにコピーしてLOADし、次の通り処理したいwavファイルを設定します。
% 音声ファイルの読み込み inputFile = "alice4816_direct_15s.wav";
なおこのファイルではIIRでのRIAA特性用の係数を、96000Hzと48000Hzの2種類を用意し、96000Hzの係数設定をコメントアウトしています。 実行すると直ちに特性のグラフが表示され、"IIR_RIAA_(fs)_(filename).wav"の形式で処理後のファイルが生成されます。
4 RIAAイコライザ特性のグラフ表示 RIAA伝達特性のグラフ表示を行います。 RIAA_PLOT_applicationホルダ内の 20241210_RIAA_PLOT000.m をOctaveのワークスペースにコピーしてLOADし、実行します。 RIAAフォノイコライザ特性の利得特性と位相特性が表示されます。