from rational import Rational
+lilypond_version = "@TOPLEVEL_VERSION@"
+
# Store command-line options in a global variable, so we can access them everywhere
options = None
set_if_exists('encoder', ids.get_encoding_person())
set_if_exists('encodingdescription', ids.get_encoding_description())
set_if_exists('source', ids.get_source())
- set_if_exists('miscellaneous', ids.get_file_description());
+
+ # <miscellaneous><miscellaneous-field name="description"> ... becomes
+ # \header { texidoc = ...
+ set_if_exists('texidoc', ids.get_file_description());
# Finally, apply the required compatibility modes
# Some applications created wrong MusicXML files, so we need to
new_list.extend(music_list[last:i1])
seq = musicexp.SequentialMusic()
last = i2 + 1
+
+ # At this point music_list[i1:last] encompasses all the notes of the
+ # tuplet. There might be dynamics following this range, however, which
+ # apply to the last note of the tuplet. Advance last to include them
+ # in the range.
+ while last < len(music_list) and isinstance(music_list[last], musicexp.DynamicsEvent):
+ last += 1
+
seq.elements = music_list[i1:last]
tsm.element = seq
#"shake": "?",
"snap-pizzicato": "snappizzicato",
#"spiccato": "?",
- "staccatissimo": (musicexp.ShortArticulationEvent, "|"), # or "staccatissimo"
+ "staccatissimo": (musicexp.ShortArticulationEvent, "!"), # or "staccatissimo"
"staccato": (musicexp.ShortArticulationEvent, "."), # or "staccato"
"stopped": (musicexp.ShortArticulationEvent, "+"), # or "stopped"
#"stress": "?",
def print_ly_preamble(printer, filename):
printer.dump_version(lilypond_version)
- printer.print_verbatim('% automatically converted by philomelos musicxml2ly v0.2.41\n')
+ printer.print_verbatim('% automatically converted by musicxml2ly from ' + filename)
printer.newline()
printer.dump(r'\pointAndClickOff')
printer.newline()
def main():
- global lilypond_version
- lilypond_version = "@TOPLEVEL_VERSION@"
opt_parser = option_parser()
global options