PowerMorse
PowerMorse came about simply... I got a Griffin PowerMate for Christmas 2004. As soon as I installed it I noticed in the driver's .dmg that it had apple scripts. I popped open the Tickler and it seemed pretty easy. Then I figured that it sure would be funny if you could use the light to do something interesting. Realizing I only had to re-invent most of the wheel I decided to use Morse Code.
The result of about 2 or 3 hours of work is this little AppleScript. It will prompt you for a line of text and then make your Griffin PowerMate's light blink. You can configure the brightness and timing by changing the properties in the first few lines of the script. If I made a mistake, or you'd like to contact me for other reasons my email is chmullig@mbhs.edu. Thanks and enjoy.
Open this script in a new Script Editor window or
Download this script.
The Script
--Copyright 2004
--Chris Mulligan
--chmullig@mbhs.edu
--Edit these values to change the length of elements or brightness of the on level
property dit : 0.1 --in seconds, aka a "Dot"
property onlevel : 200 --max brightness, up to 255
--Don't edit!
property dah : 3 * dit
property char_space : 1 * dit
property letter_space : 3 * dit
property word_space : 7 * dit
(* for WPM
(50 * wpm)/60 = dit)
*)
tell application "PowerMateDriver"
-- save previous settings
set prevbrightness to get brightness
set prevpulserate to get pulse rate
set prevpulsealways to pulse always
set pulse always to false
set prevpulseduringsleep to pulse during sleep
--send SOS
set brightness to 0
end tell
display dialog "Enter text to be Morse-Codified..." default answer "" buttons {"OK"} default button 1
copy the result as list to {text_returned, button_pressed}
set input_text to text_returned
parsetext(contents of input_text)
delay word_space
tell application "PowerMateDriver"
--restore previous settings
set brightness to prevbrightness
set pulse rate to prevpulserate
set pulse always to prevpulsealways
set pulse during sleep to prevpulseduringsleep
end tell
---end run...
on parsetext(this_text)
repeat with this_char in this_text
parseletter(contents of this_char)
end repeat
end parsetext
on parseletter(letter)
if letter = "A" or letter = "a" then
dot()
dash()
else if letter = "B" or letter = "b" then
dash()
dot()
dot()
dot()
else if letter = "C" or letter = "c" then
dash()
dot()
dash()
dot()
else if letter = "D" or letter = "d" then
dash()
dot()
dot()
else if letter = "E" or letter = "e" then
dot()
else if letter = "F" or letter = "f" then
dot()
dot()
dash()
dot()
else if letter = "G" or letter = "g" then
dash()
dash()
dot()
else if letter = "H" or letter = "h" then
dot()
dot()
dot()
dot()
else if letter = "I" or letter = "i" then
dot()
dot()
else if letter = "J" or letter = "j" then
dot()
dash()
dash()
dash()
else if letter = "K" or letter = "k" then
dash()
dot()
dash()
else if letter = "L" or letter = "l" then
dot()
dash()
dot()
dot()
else if letter = "M" or letter = "m" then
dash()
dash()
else if letter = "N" or letter = "n" then
dash()
dot()
else if letter = "O" or letter = "o" then
dash()
dash()
dash()
else if letter = "P" or letter = "p" then
dot()
dash()
dash()
dot()
else if letter = "Q" or letter = "q" then
dash()
dash()
dot()
dash()
else if letter = "R" or letter = "r" then
dot()
dash()
dot()
else if letter = "S" or letter = "s" then
dot()
dot()
dot()
else if letter = "T" or letter = "t" then
dash()
else if letter = "U" or letter = "u" then
dot()
dot()
dash()
else if letter = "V" or letter = "v" then
dot()
dot()
dot()
dash()
else if letter = "W" or letter = "w" then
dot()
dash()
dash()
else if letter = "X" or letter = "x" then
dash()
dot()
dot()
dash()
else if letter = "Y" or letter = "y" then
dash()
dot()
dash()
dash()
else if letter = "Z" or letter = "z" then
dash()
dash()
dot()
dot()
else if letter = space then
delay word_space - letter_space
end if
delay letter_space
end parseletter
on dash()
tell application "PowerMateDriver"
set brightness to onlevel
delay dah
set brightness to 0
delay char_space
end tell
end dash
on dot()
tell application "PowerMateDriver"
set brightness to onlevel
delay dit
set brightness to 0
delay char_space
end tell
end dot