DirectX EmptyProjectを使う その3
1. DirectX
EmptyProjectを使う その3
上図の青いグラフは、96KHz sampling です。 薄いピンクのグラフは、48KHz
samplingです。
共に 7MHz帯受信で、Soft66DB2使用。
96KHzから、48KHzへは、瞬時に(と言っても、50msのwaitを掛けています。)切り替わります。
受信周波数の同調は、DirectXのslider componentを使用しました。
このsliderは、マウスの動きに、defaultで、連動していて、便利です。
g_tuneDlg.AddSlider(IDC_SLIDER_TUNE,0,0,1024,24,-512,512,false);
DirectXのサンプルフレームワークを、徹底的に利用しています。
今の所、96KHzから48KHzへの切り替え時に、sliderの位置だけ、保存してますが、mode及び、BandWidthの切り替えの保存は、難しくありません、その内に。
2.手間取った所は...
きれいな受信音が、聞こえるようにする事です。
今は、きれいに受信できます、soundcardが不安定になる時が、度々あるけんど...
これは、かなり手間取りました。
以前、送信時に、9KHzで送信すると、きれいな送信ができるのに、10KHzにすると、
とたんに、こけましたが、受信時も、同じ問題に遭遇しました。
207.複素フィルタを使って、SSBにチャレンジ その2
を、参照下さい。
3.どこが、まずかったのか...
受信周波数を、ずらす時、
48KHzサンプリングなら、100Hzだけ、ずらそうとすれば、普通なら
for( i = 0 ;i < Capture_Data_Length;i++
)
{
input_data[i]*cos(2.0*pi*100*i/48000)
}
と、します。 Capture_Data_Lengthは、今の場合 2048です。
これが、トラブルの元なのです。
48000 に対して、Capture_Data_Length 2048は、小さすぎて、
波形の、極一部しか、input_dataに掛けることが、できないのです。
そこで、48000を、Capture_Data_Length の整数倍、 例えば 1024,
2048等に、変更致しました。
そしたら、受信音は、きれいになりました。
実は、送信音も、9KHzでなくても、例えば 10,089Hzに しましても、
きれいな送信音に、する事が、できました、 うひょひょ 。
その見返りとして、周波数の移動は、1Hz単位ではなくて、1.171...Hz単位と、中途半端な値に....とほほ (=_=;;
でも、送受信音が、汚くては、全く意味が、ありませんね。
他に、なんか、ええ方法が、ないかにゃあ...
最初の図で、周波数目盛りを、打ってないのは、その辺の関係ですねん....
それと、この6/16日は、AAコンテストらしくて、CWを、受信してましたが、
CWの場合は、CW
bandだけ、拡大した方が、よさそうです。
H.19.6.18