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