モールス信号の逆変換
スーパーやコンビニへ買物に行く時、小銭を必ずポケットに忍ばせて行くようにしている。だって、xx1円ですって言われて、1円まけてよとは言えないからだ。おつりは、y9円 とかなって、知らぬ間に、小銭がわんさかとなるからだ。
わんさかとならない様に、家では、小銭(1,5円)と、コイン(10円以上)のバッファーで、管理している。コインの方は、少々溜ってもいいかなと思うのだけど、小銭は貯めたくないからだ。
たまたま、コインも小額紙幣も底をつくと、万札の登場となる訳だが、万札出して、おつりを、9700円も返してもらうのには、少々抵抗感がある。店によっては、両替買物おことわりと、いやな顔をする所もある。よって、小額紙幣も切らさないように、自分ではコントロールしてる。
特に勉強会とかの後の宴会費用清算は、おつりをもらわなくても済むように、小額紙幣5枚ぐらいと、コインで1000円ぐらいは、必ず用意するようにしてる。
そう言えば、コインの組合せを解く問題が、SICPにあったな。えっと、どんな問題だっけな?
FreeBSDのbeep問題
前回は、beepを自作したけど、直接ハードを叩いちゃいましょうと言う人もいるのね。 FreeBSDのリアルタイム性という発表記事(pdf)の中で、言及されていた。 処理時間のゆらぎを音で聞き分けちゃおうと言う発想。面白いなあ。
勿論、BSDerにとっては、それだけでなく、他の部分も十分面白いので、一読の価値あり です。
モールス信号の逆変換
ある読者から、ぼそっと
decodeは、どうします?
なんて、お便りを頂いてしまった。モールス信号の逆変換。'-.-. ' と言うのを、"C"に変換できますか? と言う、依頼(問題提起)だ。
そんなの、簡単しょ。haskellで書いたコード中にある、lookupの逆が出来ればOK。
[(k,v)]で、lookup は、k に対する、v を求める関数だった。これの逆、すなわち、v に対する k が 求まればいいんだから。lookupのコードをぱくってきて、ちょいと書き換えるだけ。
lookupは、こうなっている。
lookup :: (Eq a) => a -> [(a,b)] -> Maybe b lookup _key [] = Nothing lookup key ((x,y):xys) | key == x = Just y | otherwise = lookup key xys
これを、
lookupr :: (Eq b) => b -> [(a,b)] -> Maybe a lookupr _key [] = Nothing lookupr key ((x,y):xys) | key == y = Just x | otherwise = lookupr key xys
とでもすれば、OK。
これが一応の答えだけど、もう一歩先読みすると、ツー・ト・ツー・ト と言う、オーディオ(に準ずる)信号を受け取り、それを "C" に変換する事を問うていると理解した。 きっと、受信機から聞こえるモールス信号を、文字列にしたいんだろう。この装置をこっそり、1アマの試験会場へ持ち込んで、受験合格をしたいんだな。(笑)
そういう堪忍具願望があるなら、私もこっそりと、カンニング出来ないか調べてみる事にしよう。
FreeBSDの hamradio ports
cd /usr/ports; make search key=hamradio | grep morse してみましたよ。
でも、decode 機能を提供してるものは、ありませんでした。引っかかってくるのは、 こういうものばかりです。
We plan to build a program that will accept ASCII text as input and generate International Morse Code as output. The output formats can be: - . -..- - (text) on the console Raw audio on /dev/audio (8bit PCM data) .wav files .ogg or (proprietary format) compressed audio International Morse Code Supported character set includes [A-Za-z] (all downcased as Morse is not case sensitive), [0-9], ",-.?/" plus a few procedural characters (SK, AR, BT etc).
Python製でしたよ。おいらのは、Haskell製ですね。(正に、車輪の再発明だな)
そうだ、Debianにも、ham御用達のカテゴリが有ったな。 lenny hamradioを見てみました。 受信したのを、decodeするのは、無いようです。やはり、QRN(ノイズ), QRM(混信)にもQSB(フェージング)にも打ち勝って、decode出来るのは、「人ピュータ」だけなんでしょう。
そのうち、モールス信号をdecode(復号)出来る人は、人間国宝、世界遺産、ギネスブックに登録されるに、違いない。
結局、FreeBSDにもLinuxにも、モールス信号を解読するソフトは無いっぽいと言う結論になった。今なら、Linuxあたりで解読ソフトをリリースすれば、称賛されるに違いない。 でも、世界の大半は M$だからなあ。しょうがない、Windows系はどうなっているか、敵情視察しておくか。
Win_CW
WIN_CWは、電信信号を、サウンドカードに入力するみたい。XPでも動いたって報告あり。フリーウェア。
CWGet
CWGet残念ながら、シェアウェア。スペアナ風の窓とオシロ風の窓が出てきて、電信信号を最適な周波数に調整したり、クリップレベルを調整出来るみたい。
DSCW
Digital Sound CW説明書によると、定年退職されたOMさんが、一念発起されて開発中のソフトだ。ハムフェア中にお会い出来ないかなあ。いろいろ、お聞きしたい事があるぞ。
CWCom
CWCom、って、CW Communicatorの略なのね。これは、CQ誌で 知って、ちょっと試してみたのでした。
インターネット上で、電信を使って IRC しましょってソフトです。九州の方が ON AIRされてましたよ。いきなりでは、恐いので自習出来るようになっています。ネットに接続しない状態にしておけば、電波(この場合は、UDPパケットですが)は出ませんから、心おきなく使用できます。
初期状態では、キーボードの下向き矢印が、電鍵になってます。このキーを叩くと、モールス符合が解読されて、結果がASCII文字で表示されます。正確な符合を打つのはかなり難しいです。