5 # source file of the GNU LilyPond music typesetter
7 # (c) 1998, 1999 Jan Nieuwenhuizen <janneke@gnu.org>
24 return name + ' version ' + version;
27 sys.stdout.write (program_id () + '\n')
30 sys.stdout.write ("Usage: %s [options] [files]\n"
31 "Convert mup to ly\n\n"
33 + " -h, --help print this help\n"
39 (options, files) = getopt.getopt (
40 sys.argv[1:], 'hp:', ['help', 'package'])
44 if o== '--help' or o == '-h':
46 elif o == '-p' or o == '--package':
53 sys.stderr.write ('[%s' % f)
60 sys.stderr.write ('can\'t open file %s\n ' % f)
63 sys.stderr.write (']')
65 sys.stderr.write ('gulped empty file: %s\n'% f)
71 i = regex.search (";", s)
77 i = regex.search (";", s[o+1:])
80 name = regsub.gsub ("[0-9<>\.&]*", "", note)
81 duration = regsub.gsub ("[a-z+<>#+&\-]*", "", note)
82 duration = regsub.gsub (" ", "", duration)
93 last_duration = duration
95 duration = last_duration
96 name = regsub.sub ("#", "is", name)
97 name = regsub.sub ("+", "'", name)
98 name = regsub.sub ("-", ",", name)
99 #name = regsub.sub ("ms", "s1", name)
100 notes = notes + " %s%s" % (name, duration)
103 def get_voice (staff, s, staffs):
104 voice = len (staffs[staff-1]) + 1
105 tag = "^%d [0-9-]*%d[0-9-]*:" % (staff, voice)
108 i = regex.search (tag, s)
111 n = regex.search ("$", s[o:])
113 line = regsub.sub (tag, "", line)
114 line = line_to_ly (line)
116 i = regex.search (tag, s[o+n:])
120 sys.stderr.write ('%d ' % voice)
121 staffs[staff-1].append (notes)
124 def get_staff (s, staffs):
127 sys.stderr.write ('Staff %d ( ' % staff)
129 i = get_voice (staff, s, staffs)
131 sys.stderr.write (')\n')
134 sys.stderr.write ('Staff %d ( ' % staff)
135 i = get_voice (staff, s, staffs)
142 ly = os.path.basename (os.path.splitext (mup)[0]) + ".ly"
144 sys.stderr.write ('\n')
147 i=get_staff (s, staffs)
148 sys.stderr.write ('\n')
149 sys.stderr.write ('Ly output to: %s...' % ly)
150 lyfile = open (ly, "w")
151 for i in range (len (staffs)):
152 for v in range (len (staffs[i])):
153 lyfile.write ("$staff%d_voice_%d = \\notes {\n %s\n}\n\n" % (i+1, v+1, staffs[i][v]))
154 lyfile.write ("\\score{\n")
155 lyfile.write ("\\notes <\n")
156 for i in range (len (staffs)):
157 lyfile.write ("\\context Staff=staff%s <\n" % chr(ord('A')+i))
158 for v in range (len (staffs[i])):
159 lyfile.write ("{ \\$staff%d_voice_%d } " % (i+1, v+1))
160 lyfile.write ("\n>\n")
164 sys.stderr.write ('\n')