以前、ブログでも取りあげたbsdgamesパッケージにあるmorseコマンドを利用して、ビープ音(PCスピーカー)でモールス信号を再生するスクリプトを書いてみました。 ビープ音の再生には、自由に周波数と再生時間を指定する事が出来るbeepコマンドを利用しました。
#!/usr/bin/env bash
f=1800 # 周波数
#正確な再生単位
b=60 # 単位長さ
t=$(($b*1)) # 短点長さ
w=$(($b*3)) # 長点長さ
s=$(($b*1)) # 無音長さ
n=$(($b*3)) # 次の文字との無音長さ
#こっちの方が聞き易い気がする
#b=50 # 単位長さ
#t=$(($b*2)) # 短点長さ
#w=$(($b*6)) # 長点長さ
#s=$(($b*1)) # 無音長さ
#n=$(($b*3)) # 次の文字との無音長さ
morse $@ | while read line
do
echo $line
opt=$(echo '$line' | sed \
-e 's/dit/ -n -f $f -l $t -n -f 1 -l $s/g' \
-e 's/daw/ -n -f $f -l $w -n -f 1 -l $s/g' \
-e 's/^ *-n *//')
if [ "$opt" ]; then
beep $opt -n -f 1 -l $n
else
beep -f 1 -l $n
fi
done
$(()) での計算を行っている為、bash依存です。適宜、exprなどに置き換えれば他のシェルでも使えるはずです。 無音部分は、周波数1Hzの音を再生する事によって実現しています。 実行すると、以下のように表示され、ビープ音でモールスが再生されます。
$ sh bmorse hello
dit dit dit dit
dit
dit daw dit dit
dit daw dit dit
daw daw daw
dit dit dit daw dit daw
ビープ音に加えて、赤外線送信デバイスをチカチカ光らせて遊んでみたいです。
※ 2020/07/02 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。