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