mirror of
https://github.com/moshix/mvs.git
synced 2026-02-11 10:04:51 +00:00
Create text2morse.bash
This commit is contained in:
66
text2morse.bash
Normal file
66
text2morse.bash
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
# copyright by moshix 2024
|
||||
# text to morse
|
||||
# pass it an input text file
|
||||
|
||||
# Check if a file name is provided
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 filename"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Morse code definitions
|
||||
declare -A morse=(
|
||||
[A]=".-" [B]="-..." [C]="-.-." [D]="-.."
|
||||
[E]="." [F]="..-." [G]="--." [H]="...."
|
||||
[I]=".." [J]=".---" [K]="-.-" [L]=".-.."
|
||||
[M]="--" [N]="-." [O]="---" [P]=".--."
|
||||
[Q]="--.-" [R]=".-." [S]="..." [T]="-"
|
||||
[U]="..-" [V]="...-" [W]=".--" [X]="-..-"
|
||||
[Y]="-.--" [Z]="--.."
|
||||
[1]=".----" [2]="..---" [3]="...--" [4]="....-"
|
||||
[5]="....." [6]="-...." [7]="--..." [8]="---.."
|
||||
[9]="----." [0]="-----"
|
||||
)
|
||||
|
||||
|
||||
beep_morse() {
|
||||
local char="$1"
|
||||
case "$char" in
|
||||
".")
|
||||
# Dot: Short beep
|
||||
beep -l 100 -f 800
|
||||
#echo -n "$char"
|
||||
;;
|
||||
"-")
|
||||
# Dash: Longer beep
|
||||
beep -l 300 -f 800
|
||||
;;
|
||||
esac
|
||||
# Pause between parts of the same letter
|
||||
sleep 0.1
|
||||
}
|
||||
|
||||
# Read the file
|
||||
while IFS= read -r line; do
|
||||
# Convert line to uppercase (Morse is case-insensitive)
|
||||
line=$(echo "$line" | tr '[:lower:]' '[:upper:]')
|
||||
# Process each character
|
||||
for (( i=0; i<${#line}; i++ )); do
|
||||
char="${line:$i:1}"
|
||||
if [[ ${morse[$char]+_} ]]; then
|
||||
# Translate character to Morse and beep
|
||||
for (( j=0; j<${#morse[$char]}; j++ )); do
|
||||
echo -n "${morse[$char]} "
|
||||
#beep_char="${morse[$char]:$j:1}"
|
||||
#beep_morse "$beep_char"
|
||||
done
|
||||
# Pause between letters
|
||||
sleep 0.1
|
||||
fi
|
||||
done
|
||||
# Pause between lines
|
||||
echo -e "\n"
|
||||
sleep 0.3
|
||||
done < "$1"
|
||||
echo " "
|
||||
Reference in New Issue
Block a user