3.3 V ノイズジェネレータ (2)
ノイズ出力をピンクノイズ化して音を聞き比べたところ、生成多項式 1、2 と、3 との間には明らかな違いが認められました。
それぞれの wave ファイルを mp3 化したものをこちらに置きました。
これは、リアルタイムにノイズ出力にアナログフィルタをかけたのではなく、いったん PC でホワイトノイズを録音して wave ファイル化し、それに -3 dB/oct 特性のディジタル・フィルタをかけて PC 上で作成したものです。
-3 dB/oct (-10 dB/dec) の特性のディジタル・フィルタの係数は、Scilab の「remezb」関数のヘルプ中で示されているサンプルを元に作ったプログラムで計算しました。
Scilab プログラムのリストを下に示します。 サンプリング周波数は 48 kHz です。
////////////// // -3 dB/oct filter, // modified from "remezb" sample program // nc=399; ngrid=nc*4; ngraph=1024; fs=48e3; fl=20; fh=fs/2; wl=fl/fs; wh=fh/fs; bw=wh-wl; fg=(0:ngrid)*(bw/ngrid)+wl; // Specify a -3dB/oct magnitude // for the desired response ds=sqrt(wl./fg); // Specify weighting function // as reciprocal of magnitude wt=ds(1)./ds; // Run remezb an=remezb(nc,fg,ds,wt); // Make a linear phase FIR filter hn(1:nc-1)=an(nc:-1:2)/2; hn(nc)=an(1); hn(nc+1:2*nc-1)=an(2:nc)/2; // Plot the filter's magnitude response clf(); xgrid(2); plot2d(fs*.5*(0:(ngraph-1))/ngraph,20*log10(frmag(hn,ngraph)),logflag="ln",style=5);
上のプログラムを実行すると、ディジタル・フィルタの係数は hn() に求まり、下のような周波数特性のグラフが表示されます。 (両軸のラベルは「グラフ・エディタ」で追加したものです。)
アナログシンセサイザ用途のピンクノイズを生成する -3 dB/oct フィルタの振幅特性に要求される仕様が分からなかったので、全帯域に渡り等リプル (約 2 dB) の特性になるように設定したため、無駄にタップ数の多い (797 タップ) フィルタとなっています。
このディジタル・フィルタで加工したピンクノイズの wave ファイルを WaveSpectra で再生してスペクトラムのピークレベルを表示したものを下に生成多項式 1、2、3 の順で示します。
50 Hz に見られるピークは電源ハムの成分です。
このスペクトラムを見るかぎり、それぞれには大きな違いは見られません。
次に、できあがったピンクノイズの wave ファイルの波形を波形編集ソフトで表示したものを示します。 約 30 秒の区間を表示しています。
まず、生成多項式 1 の場合です。
見てわかる通り、波形は正負非対称で、プラス側にパルス的なピークが多数見られます。
音を聞くと、バックグラウンドの「ザー」とか「ゴー」といった一様で連続的な成分に混じって、波形の各ピーク位置で不規則で断続的な「ズッ」とか「ジッ」とかいうような音が聞こえます。
下に生成多項式 2 の場合を示しますが、これも同じような傾向です。
次は生成多項式 3 の場合ですが、これは前ふたつとは異なっています。
波形の正負の対称性は良く、パルス的なピークの大きさは小さくなっています。
音を聞いても、不規則で断続的な成分は少なく、「なめらか」というか、比較的に均質な感じに聞こえます。