import codecs
import zipfile
import StringIO
-from gettext import gettext as _
"""
@relocate-preamble@
"""
import lilylib as ly
+_ = ly._
import musicxml
import musicexp
def add_end (self, g):
self.end[getattr (g, 'number', "1")] = g
def print_ly (self, printer):
- error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+ error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
def ly_expression (self):
- error_message ("Unprocessed PartGroupInfo %s encountered" % self)
+ error_message (_ ("Unprocessed PartGroupInfo %s encountered") % self)
return ''
def staff_attributes_to_string_tunings (mxl_attr):
start_pitch.step = n
start_pitch.alteration = a
except KeyError:
- error_message ('unknown mode %s' % mode)
+ error_message (_ ("unknown mode %s, expecting 'major' or 'minor'") % mode)
fifth = musicexp.Pitch()
fifth.step = 4
'glissando' : musicexp.GlissandoEvent,
'octave-shift' : musicexp.OctaveShiftEvent,
'pedal' : musicexp.PedalEvent,
+ 'slide' : musicexp.GlissandoEvent,
'slur' : musicexp.SlurEvent,
'wavy-line' : musicexp.TrillSpanEvent,
'wedge' : musicexp.HairpinEvent
return ev
def musicxml_direction_to_indicator (direction):
- return { "above": 1, "upright": 1, "up":1, "below": -1, "downright": -1, "down": -1, "inverted": -1 }.get (direction, 0)
+ return { "above": 1, "upright": 1, "up": 1, "below": -1, "downright": -1, "down": -1, "inverted": -1 }.get (direction, 0)
def musicxml_fermata_to_lily_event (mxl_event):
ev = musicexp.ArticulationEvent ()
ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
return ev
+def musicxml_nonarpeggiate_to_lily_event (mxl_event):
+ ev = musicexp.ArpeggioEvent ()
+ ev.non_arpeggiate = True
+ ev.direction = musicxml_direction_to_indicator (getattr (mxl_event, 'direction', None))
+ return ev
+
def musicxml_tremolo_to_lily_event (mxl_event):
ev = musicexp.TremoloEvent ()
txt = mxl_event.get_text ()
diff = moment - current_end
if diff < Rational (0):
- error_message ('Negative skip %s' % diff)
+ error_message (_ ('Negative skip %s') % diff)
diff = Rational (0)
if diff > Rational (0) and not (self.ignore_skips and moment == 0):
if ev:
ev_chord.append (ev)
+ arpeggiate = notations.get_named_children ('non-arpeggiate')
+ for a in arpeggiate:
+ ev = musicxml_nonarpeggiate_to_lily_event (a)
+ if ev:
+ ev_chord.append (ev)
+
glissandos = notations.get_named_children ('glissando')
+ glissandos += notations.get_named_children ('slide')
for a in glissandos:
ev = musicxml_spanner_to_lily_event (a)
if ev:
def option_parser ():
p = ly.get_option_parser (usage = _ ("musicxml2ly [options] FILE.xml"),
- version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
+ description = _ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n",
+ add_help_option=False)
+
+ p.add_option("-h", "--help",
+ action="help",
+ help=_ ("show this help and exit"))
+
+ p.version = ('''%prog (LilyPond) @TOPLEVEL_VERSION@\n\n'''
+
_ ("""This program is free software. It is covered by the GNU General Public
License and you are welcome to change it and/or distribute copies of it
Han-Wen Nienhuys <hanwen@xs4all.nl>,
Jan Nieuwenhuizen <janneke@gnu.org> and
Reinhold Kainhofer <reinhold@kainhofer.com>
-"""),
- description = _ ("Convert %s to LilyPond input.") % 'MusicXML' + "\n")
+""")
+ p.add_option("--version",
+ action="version",
+ help=_ ("show version number and exit"))
+
p.add_option ('-v', '--verbose',
action = "store_true",
dest = 'verbose',
action = "store_true",
default = False,
dest = "use_lxml",
- help = _ ("Use lxml.etree; uses less memory and cpu time."))
+ help = _ ("use lxml.etree; uses less memory and cpu time"))
p.add_option ('-z', '--compressed',
action = "store_true",
dest = 'compressed',
default = False,
- help = _ ("Input file is a zip-compressed MusicXML file."))
+ help = _ ("input file is a zip-compressed MusicXML file"))
p.add_option ('-r', '--relative',
action = "store_true",
default = True,
dest = "relative",
- help = _ ("Convert pitches in relative mode. (Default)"))
+ help = _ ("convert pitches in relative mode (default)"))
p.add_option ('-a', '--absolute',
action = "store_false",
dest = "relative",
- help = _ ("Convert pitches in absolute mode."))
+ help = _ ("convert pitches in absolute mode"))
p.add_option ('-l', '--language',
metavar = _ ("LANG"),
action = "store",
- help = _ ("Use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly."))
+ help = _ ("use a different language file 'LANG.ly' and corresponding pitch names, e.g. 'deutsch' for deutsch.ly"))
p.add_option ('--nd', '--no-articulation-directions',
action = "store_false",
default = True,
dest = "convert_directions",
- help = _ ("Do not convert directions (^, _ or -) for articulations, dynamics, etc."))
+ help = _ ("do not convert directions (^, _ or -) for articulations, dynamics, etc."))
p.add_option ('-o', '--output',
metavar = _ ("FILE"),
type = 'string',
dest = 'output_name',
help = _ ("set output filename to FILE"))
- p.add_option_group ( _ ('Bugs'),
- description = ( _ ("Report bugs via")
+ p.add_option_group (ly.display_encode (_ ('Bugs')),
+ description = (_ ("Report bugs via")
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
return p
part_id = part_definition.id
nv_dict = voices.get (part_id)
if not nv_dict:
- error_message ('unknown part in part-list: %s' % part_id)
+ error_message (_ ('unknown part in part-list: %s') % part_id)
continue
staves = reduce (lambda x,y: x+ y,