ビープ音でモールス信号を再生

以前、ブログでも取りあげたbsdgamesパッケージにあるmorseコマンドを利用して、ビープ音(PCスピーカー)でモールス信号を再生するスクリプトを書いてみました。 ビープ音の再生には、自由に周波数と再生時間を指定する事が出来るbeepコマンドを利用しました。

[bash]

!/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]

$(()) での計算を行っている為、bash依存です。適宜、exprなどに置き換えれば他のシェルでも使えるはずです。 無音部分は、周波数1Hzの音を再生する事によって実現しています。 実行すると、以下のように表示され、ビープ音でモールスが再生されます。

[bash]
$ 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
[/bash]

ビープ音に加えて、赤外線送信デバイスをチカチカ光らせて遊んでみたいです。

投稿者:

dyama

システムエンジニアです。佐世保に住んでいます。

コメントを残す

メールアドレスが公開されることはありません。