Sponsored Content
Top Forums Shell Programming and Scripting Morse Code with Associative Array Post 302927045 by sea on Sunday 30th of November 2014 08:55:40 AM
Old 11-30-2014
Barry, i couldnt resist and made some changes Smilie
Also, after some tries, figured, i cannot differ signs (.-) from chars (a-z) or words, without the use of some delaying sleep calls...

Code:
time morse -l "Play it again barry." | while read line; do morse-snd "$line";done
You now hear: .--.;.-..;.-;-.--;SP
You now hear: ..;-;SP
You now hear: .-;--.;.-;..;-.;SP
You now hear: -...;.-;.-.;.-.;-.--;STOP
You now hear: SP
You now hear: EOT
            
real	0m33.488s
user	0m0.220s
sys	0m0.315s

Code:
+ ~ $ morse  "Play it again barry."
.--.;.-..;.-;-.--;SP..;-;SP.-;--.;.-;..;-.;SP-...;.-;.-.;.-.;-.--;STOPSPEOT

+ ~ $ morse-snd ".--.;.-..;.-;-.--;SP..;-;SP.-;--.;.-;..;-.;SP-...;.-;.-.;.-.;-.--;STOPSPEOT"
You now hear: .--.;.-..;.-;-.--;SP..;-;SP.-;--.;.-;..;-.;SP-...;.-;.-.;.-.;-.--;STOPSPEOT
+ ~ $

[/CODE]
Code:
#!/bin/bash
# Working idea, Barry walker, G0LCU...
# Modified by Simon Arjuna Erat, sea
# Morse.sh --> morse-sox aka morse-snd
# Sounder for Morse at about 8 WPM...
# Output can be used to modulate an SSB HF transceiver...
# OSX 10.7.5, default bash terminal AND SOX.
# Just as easily do cat /tmp/sample.raw > /dev/dsp for machines with /dev/dsp.

WAIT_SIGN=0.05
WAIT_CHAR=0.5
WAIT_WORD=1.5
WAIT_SPACE=2

SOX=$(which sox||locate sox)
if [[ ! -f /tmp/dit.raw ]]
then	data="\\x80\\x26\\x00\\x26\\x7F\\xD9\\xFF\\xD9"
	sample=0
	# Create files & permission
	for F in dit dah;do
		> /tmp/$F.raw
		chmod 644 /tmp/$F.raw
	done
	# Increase data string
	for sample in {0..6} ; do data=$data$data ;done
	# Do not touch Barrys creations
	printf "$data" >> /tmp/dit.raw
	printf "$data" >> /tmp/dah.raw
	printf "$data" >> /tmp/dah.raw
	printf "$data" >> /tmp/dah.raw
fi

play_dot(){ $SOX -r 8000 -b 8 -c 1 -e unsigned-integer /tmp/dit.raw -d > /dev/null 2>&1 ; }
play_dash(){ $SOX -r 8000 -b 8 -c 1 -e unsigned-integer /tmp/dah.raw -d > /dev/null 2>&1 ; }

for input in $@;do
	printf "You now hear: " #$input"
	
	case "${input:2}" in
	"SP")	printf "SP"
		sleep $WAIT_SPACE 	;;
	"ST")	printf "STOP"
		sleep $WAIT_WORD 	;;
	*)	for (( i = 0; $i < "${#input}"; i = $i +1 ))
		do	printf "${input:$i:1}"
			case "${input:$i:1}" in
			"-")	play_dash	;;
			".")	play_dot	;;
			";")	sleep $WAIT_CHAR ;;
			esac
			sleep $WAIT_SIGN
		done
		;;
	esac
	printf "\nNew word..."
	sleep $WAIT_WORD
	printf "\r            \r"
done

Hope you like it Smilie

Last edited by sea; 11-30-2014 at 10:02 AM..
This User Gave Thanks to sea For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Associative Array

Hi, I am trying to make an associative array to use in a popup_menu on a website. Here is what i have: foreach $entr ( @entries ) { $temp_uid = $entr->get_value(uid); $temp_naam = $entr->get_value(sn); $s++; } This is the popup_menu i want to use it in. popup_menu(-name=>'modcon',... (4 Replies)
Discussion started by: tine
4 Replies

2. Shell Programming and Scripting

Perl: Sorting an associative array

Hi, When using sort on an associative array: foreach $key (sort(keys(%opalfabet))){ $value = $opalfabet{$key}; $result .= $value; } How does it handle double values? It seems to me that it removes them, is that true? If so, is there a way to get... (2 Replies)
Discussion started by: tine
2 Replies

3. Shell Programming and Scripting

Shell quiz: emulate an associative array

Most shells flavors do not have associative arrays a.k.a. maps. How would you emulate an associative array? I had this problem once and found a working solution, but I don't want to spoil the game hence I wont tell it. Wonder if anyone comes up with something better. (5 Replies)
Discussion started by: colemar
5 Replies

4. Shell Programming and Scripting

awk, associative array, compare files

i have a file like this < '393200103052';'H3G';'20081204' < '393200103059';'TIM';'20110111' < '393200103061';'TIM';'20060206' < '393200103064';'OPI';'20110623' > '393200103052';'HKG';'20081204' > '393200103056';'TIM';'20110111' > '393200103088';'TIM';'20060206' Now i have to generate a file... (9 Replies)
Discussion started by: shruthi123
9 Replies

5. Shell Programming and Scripting

Help needed on Associative array in awk

Hi All, I got stuck up with shell script where i use awk. The scenario which i am working on is as below. I have a file text.txt with contents COL1 COL2 COL3 COL4 1 A 500 400 1 B 500 400 1 A 500 200 2 A 290 300 2 B 290 280 3 C 100 100 I could able to sum col 3 and col4 based on... (3 Replies)
Discussion started by: imsularif
3 Replies

6. Shell Programming and Scripting

Associative array

I have an associative array named table declare -A table table="fruit" table="veggie" table="GT" table="eminem" Now say I have a variable returning the value highway How do I find corresponding value GT ?? (this value that I find (GT in this case) is supposed to be the name of a mysql... (1 Reply)
Discussion started by: leghorn
1 Replies

7. Shell Programming and Scripting

Associative Array with more than one item per entry

Hi all I have a problem where i have a large list ( up to 1000 of items) and need to have 2 items pulled from it into variables in a bash script my list is like the following and I could have it as an array or possibly an external text file maintained separately. Every line is different and... (6 Replies)
Discussion started by: kcpoole
6 Replies

8. Shell Programming and Scripting

Using associative array for comparison

Hello together, i make something wrong... I want an array that contains information to associate it for further processing. Here is something from my bash... You will know, what I'm trying to do. I have to point out in advance, that the variable $SYSOS is changing and not as static as in my... (2 Replies)
Discussion started by: Decstasy
2 Replies

9. Shell Programming and Scripting

Associative array index question

I am trying to assign indexes to an associative array in a for loop but I have to use an eval command to make it work, this doesn't seem correct I don't have to do this with regular arrays For example, the following assignment fails without the eval command: #! /bin/bash read -d "\0" -a... (19 Replies)
Discussion started by: Riker1204
19 Replies

10. UNIX for Beginners Questions & Answers

Loading associative array from exported function

Hello. I have an export of an associative array build using declare -p SOME_ARRAY_NAME > SOME_FILE_NAME.txt. Producing some thing like declare -A SOME_ARRAY_NAME=( ="some_text" ="a_text" ......... ="another_text" ) in a text file. I have a stock of functions which are sourced from... (1 Reply)
Discussion started by: jcdole
1 Replies
All times are GMT -4. The time now is 10:49 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy