decimatioの前のフィルタは、0-4kHzのLPFで、6kHzのところで 設計した帯域外減衰の-60dBになる。係数の数(タップ数)は89である (設計の例)。 ヒルベルト変換器はタップ数127である
それからalsaのサウンドドライバのAPIもいまひとつよく わかっていないので、適切な処理が出来ていない部分があると思う。 APIのドキュメントもあるにはあるのだが、古くて今のバージョンと かなり違っているようだ(ごく最近version0.5対応のドキュメントが alsaのページに現れた)。
2000.Apr.27 Javaへの移植
ユーザインタフェースを何とかしたいなあと思ってJavaと
組み合わせることを考えていたが、java.sun.comを見たら
最近は Java Sound APIというのがあって、それを使うと
全部Javaでできそうな気がしてきた(ただしLinuxではまだ動かない)。
2000.May.3
一応Javaでも動きました。なんかチューニングがとりずらいと
思ったらディレイが1秒くらいあるような感じ。遅れが増えていく
わけでもないようだ。とにかくWindows環境でも変調が出来るように
なった。
現状のSound APIでは録音と再生で同じフォーマットでしか デバイスをオープンできない。なのでdecimationはしないか、 decimationしてヒルベルト変換等の計算量を減らしてから、 もう一度interpolationするとかしないといけない。
次はGUIか? と言っても当面はモード、フィルタ切替えボタン くらいかな。せめてレベルメータくらいつけたいもの。
2000.May.22
GUIつくりはじめました。と言ってもまだこんなのですが Hi.
勉強中です、ハイ。
Jun 21 LinuxでもJava
Linux版のJDKも1.3betaが出たので早速ダウンロードして
検波プログラムをコンパイルしてみた。速度がちょっと心配だったが、
なんとか間に合いそう。
と思ったのだが、やっぱりだめ、うまく行かない。capture用と playback用のlineを両方オープンしようとするとLineUnavailableExceptionが 出てしまう。ううむ...
Java版を公開しようと思うと色々直したくなってきて直してます。 もうちょっとということろでバグが取れません。 それから、IBM版のJDKだとLinuxでもうまく動くような気がしたが、 気のせいだったのか動かない。SUNのもあいかわらず駄目みたいである。
メインのフィルタの帯域は、ジェネレータ/ディテクタとも300-3000Hzで 設計してあります。
Linuxでは...今のところ動きません。
次にこのDSP関連のプログラムを置くディレクトリ、たとえば'c:\dsp'
というディレクトリをつくります。
さらにその下に'src'と'classes'というディレクトリを
つくり、'src'ディレクトリの中に上の4つのソースをコピーします。
それから、CLASSPATHという変数に今つくった'classes'ディレクトリを
追加します。
set CLASSPATH=%CLASSPATH%;c:\dsp\classes;そしてコンパイル。
cd c:\dsp\srcこれで準備は出来ました。実行は、ジェネレータが
javac -d c:\dsp\classes *.java
java ji3gab.dsp.Generator 1ディテクタ(検波器)が
java ji3gab.dsp.Detector 1です。いずれも最後の'1'というのはプログラムに対する引数で、 これでモードを決めます。0がAM(Detectorのみ)、1がLSB、2がUSBです。
あとはWindowsのオーディプロパティでMic(あるいはLine in)の 録音レベル、Wave出力、Master出力のレベルを調整します。 これで12kHzのSSB信号が得られるはずです。
注: ここに公開しているプログラムはまったくの無保証です。 このプログラムを使用することによって生じたいかなる不利益についても 作者は一切の責任を負いません。御自分の責任のもとで 利用してください。
Wave関係のコードについてはatsu氏の「ソフトウェアDSP」のプログラムを 参考にしました()。
今回はコンソールアプリケーションとして作ってありますが、 atsu氏のプログラムを少し変更して、SSB変復調の処理を組み込んで Windowsアプリケーションを作った方が素直かも知れません。 今のところ作者はこのWindows版を発展させていく予定はありません。
プログラムはそれほどきちんとしたものではなく、色々と手抜きが あります。
dsp.lzhをダウンロードして解凍すると、
READMEファイル、srcディレクトリ、binディレクトリが
できます。binの下に実行ファイルがあるので、それをコマンドプロンプトから
実行することができます。
コマンドプロンプトに対して復調プログラムの場合は、
detector 1変調プログラムの場合は、
generator 1というように入力します。いずれも最後の'1'というのはプログラムに対する 引数で、これでモードを決めます。0がAM(detectorのみ)、1がLSB、2がUSBで す(引数を省略するとdetectorはAM、generatorはLSBになる)。
あとはWindowsのオーディプロパティでMic(あるいはLine in)の録音レベル、 Wave出力、Master出力等のレベルを調整します。
なお、detector.exeとgenerator.exeは適当なディレクトリにコピーして 使うことができます。
何かキーを押すとプログラムは終了します。
注: ここに公開しているプログラムはまったくの無保証です。 このプログラムを使用することによって生じたいかなる不利益についても 作者は一切の責任を負いません。御自分の責任のもとで 利用してください。