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')