I am sure I should have been spending my time doing something else, but it was fun to do ![]()
This script will take any text you can throw at it and spit it out in Morse Code to the speaker.
The first script gets the text from the system log
# MikroTik Log Reader Script
#
# Author: Bob Burley - April 14, 2011
#
# Reads timestamp and message from system log entries and passes
# them to the Morse Code script using the global variable 'morsetext'.
#
foreach zz in [/log find] do= {
:global morsetext [/log get $zz time]
/system script run "Morse Code"
:global morsetext [/log get $zz message]
/system script run "Morse Code"
}
:global morsetext ""
Then this one will convert any text you give it to Morse Code
# MikroTik Morse Code Script
#
# Author: Bob Burley - April 14, 2011
#
# Text input is received with the global variable 'morsetext'.
# The text string is parsed and converted to Morse Code
# and sent to the RouterBoard speaker.
#
# This script will handle upper and lower case text
# as well as all standard punctuation.
#
# Use one of these lines for global or local input
:global morsetext
# :local morsetext "this is only a test"
# The pitch and speed (Words Per Minute) are set
# in the variables 'pitch' and 'wpm' below.
:local pitch 1000
:local wpm 30
# Timing Variables
# Element spacing includes the dot-length and
# dash-length timing as the script does not wait
# after executing the beep command.
:local ms (2400 / $wpm)
:local ms1 ([:tostr $ms]."ms")
:local ms2 ([:tostr ($ms * 2)]."ms")
:local ms3 ([:tostr ($ms * 3)]."ms")
:local ms4 ([:tostr ($ms * 4)]."ms")
:local textlen [:len $morsetext]
# Standard Morse Code word spacing is (7 * dot-length)
# This (4 * dot-length) is added to the character spacing
# of (3 * dot-length) which appears at the end of the script.
:for aa from=0 to=$textlen step=1 do={
:local char [:pick $morsetext $aa]
:if ($char=" ") do={
:delay $ms4
}
:if (($char="A") or ($char="a")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="B") or ($char="b")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="C") or ($char="c")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="D") or ($char="d")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="E") or ($char="e")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="F") or ($char="f")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="G") or ($char="g")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="H") or ($char="h")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="I") or ($char="i")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="J") or ($char="j")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="K") or ($char="k")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="L") or ($char="l")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="M") or ($char="m")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="N") or ($char="n")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="O") or ($char="o")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="P") or ($char="p")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="Q") or ($char="q")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="R") or ($char="r")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
if (($char="S") or ($char="s")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if (($char="T") or ($char="t")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="U") or ($char="u")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="V") or ($char="v")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="W") or ($char="w")) do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="X") or ($char="x")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="Y") or ($char="y")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if (($char="Z") or ($char="z")) do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="1") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="2") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="3") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="4") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="5") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="6") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="7") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="8") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="9") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="0") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char=".") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char=",") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="?") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="'") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="!") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="/") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="(") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char=")") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="&") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char=":") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char=";") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="=") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="+") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="-") do={
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="_") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="\"") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
:if ($char="\$") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
}
:if ($char="@") do={
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
:beep frequency=$pitch length=$ms3
:delay $ms4
:beep frequency=$pitch length=$ms1
:delay $ms2
}
# Character spacing of (3 * dot-length)
:delay $ms3
}