PR

パドルエミュレータ

PCキーイングインタフェース

先日、PCでCWキーイングを行うためのインタフェースを頒布した。

これをエレキーのメモリ入力装置を使いたいという声があった。ストレートキー対応のエレキーならそれも可能だけど、そうでない場合はパドル操作で入力しなければならない。そうなると、PCからパドル操作を行う必要がある。

ということで、考えてみた。まず、当然ながら、出力は二つ。短点と長点。上のI/Fで使っているUSB-シリアルのチップは出力に使えるピンが一つだけ。そのため、チップの変更も必要。で、作ったのがこれ。

基本的な構成は前のものと同じ。チップを変えて出力を二つにした。パドルの入力端子も設けた。


【頒布開始】

パドル操作エミュレーションソフトウェア

さて、問題はソフトウェア。パドル出力を行ってくれるものがあるのかどうかわからない。普通にPCでキーイングすると考えたら出力はストレートキー相当にしたいはず。わざわざパドル操作を模す必要はないから。

しょうがないので、自作。WindowsのGUIなアプリは作れないけど、CUIのモノならなんとかなるんじゃないかと、はじめてのVC++。いきあたりばったりながら、なんとかそれらしいものができた。その時のツイートがこちら。

一応、それらしい動作をしているようなので基板を起こした。それでできあがったのが上の写真のもの。いざ、このインタフェースでエレキー(K3NG CW Keyer)につないでみたのだけど、上手く取れない(打鍵ミス)ことがある。確率としては数%程度。

改めて考えてみると、打鍵のタイミングはストレートキーとパドルとでは違う。ストレートキーなら打鍵のタイミングが符号送出のタイミングそのものだけど、エレキーの場合は符号送出よりもわずかに前にパドル操作を行わなければならい(エレキー側のパドル状態のサンプリングのタイミングとの問題)。こうなると、調整で追い込んでいくしかなさそう。

で、なんとか追い込んでみたものの、20WPMではミスらないけど30WPMだとたまにコケている。20WPMでも確率が低いだけでもっと長くやればコケるんじゃないかな?もうちょっとなんとかしたい。


【頒布開始】

パドル操作タイミング

改めて信号送出のタイミングを整理してみる。

上は「AB Q」を送出するタイミングをチャート化したもの。「AB C」ではなくて「Q」にしたのは長点が連続する符号を入れたかったため。

straightはストレートキー。キー操作のタイミングがそのまま信号出力タイミング(当然ながら)。

clockはエレキーがパドルの状態をサンプリングするクロックを模式化したもの。

p_ditとp_dahはパドルの短点と長点。信号の送出の前にパドルの状態を読み取るので、それまでにパドル状態を確定(操作)しておかなければならない。ストレートキーとは明らかに操作タイミングが異なる。

「?」はONでもOFFでもどちらでも良い状態。パドルはオンにし続けると短点(または、長点)を連続で送出するのでいちいち離す必要がないため。しかし、これをソフトウェアで実現しようとすると、次が短点か長点かを知らないとホールドし続けられないので、かえって難しい。p_dit_2とp_dah_2は、律儀に毎回リリースする場合。こちらの方が次の状態を知る必要がないので実現は比較的容易。

上の図は、もしかしたら微妙に間違っているところがあるかもしれないけど、そこは雰囲気で。エレキーのパドル操作のタイミングを言葉で表すとこう。

  1. パドルをオンにするのは信号送出よりもわずかに前(エレキーのサンプリングタイミング)。
    • オンにした瞬間に信号が送出されるのではないのはストレートキーとは大きな違い。
  2. 短点・長点の信号送出され始めたらパドルをオフにして構わない。
    • 信号送出の間オンにし続ける必要がない(早めにリリースしてよい)点もストレートキーとは大きく異る。
    • 同じ信号が連続する場合はオンにし続けても良い。
      • オンにし続けないなら、次の信号送出の前に再びオンにする。

なお、スクイーズ動作は考慮していない。それをやると状態が増えてもっと複雑になるので。機械操作ではシンプルな方が作りやすい。

ところで、このタイミングチャートの作成にはこちらの「タイミングチャート清書サービス」を使わせもらった。ものすごく便利。ありがたい。

それから、そもそもとして、エレキーとこのソフトウェアで同期を取っているわけではないので、タイミングのズレは避けようがない。両方を同じクロックで動かすとか、別途同期信号を与えるとかすれば合わせることもできるだろうけど、現実的ではない。

また、例えば、両方を20WPMと設定しても、完全に20WPMはなくて、それぞれ誤差がある。それに、WindowsはリアルタイムOSではないので、その点からもズレが生じる。なので、ミスを完全になくすのは原理的に無理。なんとか減らせるように、合わせこむしかない。しかし、あるエレキーで合わせ込みを追い込んだとしても、別のエレキーだとキー読み込みのタイミングが違うだろからミスする確率が違うことは想像に難くない。実に難しい問題。

こういう話なので、キーイング速度とは無関係。速いとミスしやすいとか、そういうことではない。遅くてもずれればミスる。速いほうがずれる可能性は高くなるかもしれないけど。

しかし、人間はそれに対応できるんだからやっぱりすごい。

コメント