From 9ad8d7e1bf3f201c90184e6d134fc26bc218a947 Mon Sep 17 00:00:00 2001 From: moshix Date: Sat, 4 May 2024 17:15:38 -0500 Subject: [PATCH] Create text2morse.bash --- text2morse.bash | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 text2morse.bash diff --git a/text2morse.bash b/text2morse.bash new file mode 100644 index 0000000..dbe2491 --- /dev/null +++ b/text2morse.bash @@ -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 " "