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

以前、ブログでも取りあげた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 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください