複素周波数変換が、有利では?
1.進化する myCapture Sound その2
使いやすいように、変化させています。
今回は、sampling周波数を、 選択できるように、しました。
ProDigy 7.1XTの場合、16, 22.05, 24, 32, 44.1, 48, 88.2, 96 各KHzの、samplingが可能です。
周波数分解能=sampling frequency / numberOfSampling
ですから、sampling数が同じなら、sampling周波数が低い方が、周波数分解能は優れています。
但し、Resetを掛けていますので、画面は、一旦消えます。
画面を消さないで、Resetする方法は、まだ、思いつきません、むにゃむにゃ。
それから、mixしますので、through スルーした場合、及び not through(mixed)の場合の、出力波形を観測できるように、しました。
mixした場合の、オシロの波形は、逆FFTで算出しました。
2.複素周波数変換と、実周波数による通常の周波数変換では、何れが有利か?
複素周波数変換
input = sin 2KHz (Real), mixer = exp^ 5KHz (Complex)
output = 3KHz & 7KHz ( output amplitude == input amplitude)
実周波数による変換
input = sin 2KHz (Real), mixer = cos 5KHz (Real)
output = 3KHz & 7KHz ( output amplitude == input amplitude/2) -6dB
どちらも、出力周波数は同じですが、
複素周波数変換のほうは、振幅が、inputと同じ。
実周波数による変換では、振幅が、inputの半分
に、なります。
これは、
168.Octaveで Signal Processing その2
で、調べてみましたように、シミュレーションでも、そうなります。
input = sin 100Hz (Real), mixer = cos 300Hz (Real)
output = 200Hz & 400Hz ( output amplitude = input amplitude/2)
input = sin 100Hz (Real), mixer = exp^ 300Hz (Complex)
output = 200Hz & 400Hz ( output amplitude = input amplitude)
従いまして、
複素周波数変換のほうが、S/N的に、有利だと、思いますが、どやろか?
3.複素入力に対応するために
入力が複素数になると、もはや、実入力用のFFTである rdft(大浦様の御製作のもの)は、使えません。
複素入力に対応した、cdft(やはり、大浦様御製作)が、必要です。
マネージアセンブリの作成時は、大浦様のfftsg.c : FFT Package in C - Fast Version III (Split-Radix)を
使わせて頂きました、ありがとうございます。
窓関数(WindowFunc)も、虚部、実部と、別々に、窓掛けせねば、なりません。
マネージアセンブリを利用する側の、C#のプログラムは、こんな感じです。
Mixerも、 myCaputere Sound プログラム内に、書いていますので、サイズが段々、膨らんできました。
それに連れて、SSBへの道も、段々開けていけば、いいなあと、思いますが、そんな甘くは、なさそうね....
H.18.10.11