#!/usr/bin/python

# MorseMelody.py
# Copyright (c) 2006, David Singer (http://readthisblog.net)

import sys
if len(sys.argv) <= 1:
  print sys.argv[0], 'word1 [words]'
  print
  print "Creates an IMelody file which plays its argument in Morse code."
  print 
  print "The output file is named 'word1'.imy"
  sys.exit(0)

code = {}

code['A']   = '.-'
code['B']   = '-...'
code['C']   = '-.-.'
code['D']   = '-..'
code['E']   = '.'
code['F']   = '..-.'
code['G']   = '--.'
code['H']   = '....'
code['I']   = '..'
code['J']   = '.---'
code['K']   = '-.-'
code['L']   = '.-..'
code['M']   = '--'
code['N']   = '-.'
code['O']   = '---'
code['P']   = '.--.'
code['Q']   = '--.-'
code['R']   = '.-.'
code['S']   = '...'
code['T']   = '-'
code['U']   = '..-'
code['V']   = '...-'
code['W']   = '.--'
code['X']   = '-..-'
code['Y']   = '-.--'
code['Z']   = '--..'
code['0']   = '-----'
code['1']   = '.----'
code['2']   = '..---'
code['3']   = '...--'
code['4']   = '....-'
code['5']   = '..! ! ...'
code['6']   = '-....'
code['7']   = '--...'
code['8']   = '---..'
code['9']   = '----.'

input = ' '.join(sys.argv[1:])
outfilename = sys.argv[1]+'.imy'
outfile = open(outfilename,'w')
outfile.write('BEGIN:IMELODY\n')
outfile.write('VERSION:1.2\n')
outfile.write('FORMAT:CLASS1.0\n')
outfile.write('NAME:%s \n' % (input))
outfile.write('BEAT:700\n')
outfile.write('STYLE:S1\n')
outfile.write('VOLUME:V15\n')
outfile.write('MELODY:\n')

note = '*5f'
song = []
for word in input.upper().split():
  for letter in word:
     if letter in code.keys():
       char = code[letter]
       for element in char:
         if element == '.':
           song.append(note+'3;')
           song.append('r3;')
         else:
           song.append(note+'1')
           song.append('r3;')
       song[-1] = 'r1'
       outfile.write('  ')
       outfile.write(''.join(song))
       outfile.write('\n')
       song = []
  song.append('r3;r1')
# We'll be left with an unwritten wordspace, but no harm done.
outfile.write('END:IMELODY\n')
outfile.close()
print outfilename, "created successfully."


