def escape_ly_output_string (input_string):
return_string = input_string
- needs_quotes = not re.match ("^[a-zA-ZäöüÜÄÖßñ]*$", return_string);
+ needs_quotes = not re.match (u"^[a-zA-ZäöüÜÄÖßñ]*$", return_string);
if needs_quotes:
return_string = "\"" + string.replace (return_string, "\"", "\\\"") + "\""
return return_string
return ''.join ([c.get_text () for c in self._children])
def message (self, msg):
- sys.stderr.write (msg)
+ sys.stderr.write (msg+'\n')
p = self
while p:
- sys.stderr.write (' In: <%s %s>' % (p._name, ' '.join (['%s=%s' % item for item in p._attribute_dict.items()])))
+ sys.stderr.write (' In: <%s %s>\n' % (p._name, ' '.join (['%s=%s' % item for item in p._attribute_dict.items()])))
p = p.get_parent ()
def get_typed_children (self, klass):
def get_unique_typed_child (self, klass):
cn = self.get_typed_children(klass)
if len (cn) <> 1:
- sys.stderr.write (self.__dict__)
+ sys.stderr.write (self.__dict__ + '\n')
raise 'Child is not unique for', (klass, 'found', cn)
return cn[0]
for i in creators:
if hasattr (i, 'type') and i.type == type:
return i.get_text ()
- else:
- return ''
+ return None
def get_composer (self):
c = self.get_creator ('composer')
for i in creators:
if not hasattr (i, 'type'):
return i.get_text ()
- return c
+ return None
def get_arranger (self):
return self.get_creator ('arranger')
def get_editor (self):
return self.get_creator ('editor')
def get_poet (self):
- return self.get_creator ('poet')
+ v = self.get_creator ('lyricist')
+ if v:
+ return v
+ v = self.get_creator ('poet')
+ return v
def get_encoding_information (self, type):
enc = self.get_named_children ('encoding')
if children:
return children[0].get_text ()
else:
- return ''
+ return None
def get_encoding_software (self):
return self.get_encoding_information ('software')
else:
return (4, 4)
except KeyError:
- sys.stderr.write ('error: requested time signature, but time sig unknown')
+ sys.stderr.write ('error: requested time signature, but time sig unknown\n')
return (4, 4)
# returns clef information in the form ("cleftype", position, octave-shift)
if instrument_name:
return instrument_name
else:
- sys.stderr.write ("Opps, couldn't find instrument for ID=%s" % id)
+ sys.stderr.write ("Opps, couldn't find instrument for ID=%s\n" % id)
return "Grand Piano"
class Measure (Music_xml_node):
import re
import os
import string
+import codecs
from gettext import gettext as _
"""
ev_chord.append (ev)
# Extract the lyrics
- note_lyrics_processed = []
- note_lyrics_elements = n.get_typed_children (musicxml.Lyric)
- for l in note_lyrics_elements:
- if l.get_number () < 0:
- for k in lyrics.keys ():
- lyrics[k].append (l.lyric_to_text ())
- note_lyrics_processed.append (k)
- else:
- lyrics[l.number].append(l.lyric_to_text ())
- note_lyrics_processed.append (l.number)
- for lnr in lyrics.keys ():
- if not lnr in note_lyrics_processed:
- lyrics[lnr].append ("\skip4")
+ if not rest:
+ note_lyrics_processed = []
+ note_lyrics_elements = n.get_typed_children (musicxml.Lyric)
+ for l in note_lyrics_elements:
+ if l.get_number () < 0:
+ for k in lyrics.keys ():
+ lyrics[k].append (l.lyric_to_text ())
+ note_lyrics_processed.append (k)
+ else:
+ lyrics[l.number].append(l.lyric_to_text ())
+ note_lyrics_processed.append (l.number)
+ for lnr in lyrics.keys ():
+ if not lnr in note_lyrics_processed:
+ lyrics[lnr].append ("\skip4")
mxl_beams = [b for b in n.get_named_children ('beam')
printer = musicexp.Output_printer()
progress ("Output to `%s'" % defs_ly_name)
- printer.set_file (open (defs_ly_name, 'w'))
+ printer.set_file (codecs.open (defs_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
score_information.print_ly (printer)
progress ("Output to `%s'" % driver_ly_name)
printer = musicexp.Output_printer()
- printer.set_file (open (driver_ly_name, 'w'))
+ printer.set_file (codecs.open (driver_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
printer.dump (r'\include "%s"' % os.path.basename (defs_ly_name))
print_score_setup (printer, part_list, voices)