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

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

</p>

<h1>!/usr/bin/env bash</h1>

<p>f=1800          # 周波数</p>

<h1>正確な再生単位</h1>

<p>b=60            # 単位長さ
t=$(($b&#42;1))    # 短点長さ
w=$(($b&#42;3))    # 長点長さ
s=$(($b&#42;1))    # 無音長さ
n=$(($b&#42;3))    # 次の文字との無音長さ</p>

<h1>こっちの方が聞き易い気がする</h1>

<h1>b=50          # 単位長さ</h1>

<h1>t=$(($b&#42;2))  # 短点長さ</h1>

<h1>w=$(($b&#42;6))  # 長点長さ</h1>

<h1>s=$(($b&#42;1))  # 無音長さ</h1>

<h1>n=$(($b&#42;3))  # 次の文字との無音長さ</h1>

<p>morse $@ | while read line
do
    echo $line
    opt=<code>echo &amp;quot;$line&amp;quot; | sed \
        -e &amp;quot;s/dit/ -n -f $f -l $t -n -f 1 -l $s/g&amp;quot; \
        -e &amp;quot;s/daw/ -n -f $f -l $w -n -f 1 -l $s/g&amp;quot; \
        -e 's/^ *-n *//'</code>
    if [ &quot;$opt&quot; ]; 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</p>

<p>dit dit dit daw dit daw

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

投稿者:

dyama

佐世保のシステムエンジニアです。詳しいプロフィールやこのブログについてはこちらをご覧ください。

コメントを残す

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

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