]> git.donarmstrong.com Git - lilypond.git/commitdiff
musicxml2ly: Normalize whitespace in the source.
authorJulien Rioux <jrioux@physics.utoronto.ca>
Fri, 22 Jun 2012 09:42:00 +0000 (05:42 -0400)
committerJulien Rioux <jrioux@physics.utoronto.ca>
Fri, 22 Jun 2012 09:48:58 +0000 (05:48 -0400)
python/musicxml.py
scripts/musicxml2ly.py

index 50945e8d8d8b78fc19e95bd2a545f2a817eb47d0..d03d116de7607718b2b0fa9c8a79a0d403d8339a 100644 (file)
@@ -51,10 +51,10 @@ class Xml_node:
         self._name = 'xml_node'
         self._parent = None
         self._attribute_dict = {}
-        
+
     def get_parent (self):
         return self._parent
-    
+
     def is_first (self):
         return self._parent.get_typed_children (self.__class__)[0] == self
 
@@ -79,7 +79,7 @@ class Xml_node:
         while p:
             ly.progress ('  In: <%s %s>\n' % (p._name, ' '.join (['%s=%s' % item for item in p._attribute_dict.items ()])))
             p = p.get_parent ()
-        
+
     def dump (self, indent = ''):
         ly.debug_output ('%s<%s%s>' % (indent, self._name, ''.join ([' %s=%s' % item for item in self._attribute_dict.items ()])))
         non_text_children = [c for c in self._children if not isinstance (c, Hash_text)]
@@ -91,7 +91,7 @@ class Xml_node:
             ly.debug_output (indent)
         ly.debug_output ('</%s>\n' % self._name)
 
-        
+
     def get_typed_children (self, klass):
         if not klass:
             return []
@@ -151,7 +151,7 @@ class Work (Xml_node):
             return wt.get_text ()
         else:
             return ''
-      
+
     def get_work_title (self):
         return self.get_work_information ('work-title')
     def get_work_number (self):
@@ -203,7 +203,7 @@ class Identification (Xml_node):
             return v
         v = self.get_creator ('poet')
         return v
-    
+
     def get_encoding_information (self, type):
         enc = self.get_named_children ('encoding')
         if enc:
@@ -212,7 +212,7 @@ class Identification (Xml_node):
                 return children[0].get_text ()
         else:
             return None
-      
+
     def get_encoding_software (self):
         return self.get_encoding_information ('software')
     def get_encoding_date (self):
@@ -221,7 +221,7 @@ class Identification (Xml_node):
         return self.get_encoding_information ('encoder')
     def get_encoding_description (self):
         return self.get_encoding_information ('encoding-description')
-    
+
     def get_encoding_software_list (self):
         enc = self.get_named_children ('encoding')
         software = []
@@ -237,7 +237,7 @@ class Identification (Xml_node):
             misc_fields = m.get_named_children ('miscellaneous-field')
             for mf in misc_fields:
                 if hasattr (mf, 'name') and mf.name == 'description':
-                    return mf.get_text () 
+                    return mf.get_text ()
         return None
 
 class Duration (Music_xml_node):
@@ -310,17 +310,17 @@ class Attributes (Measure_element):
             return cn[0] == self._original_tag
         else:
             return cn[0] == self
-    
+
     def set_attributes_from_previous (self, dict):
         self._dict.update (dict)
-        
+
     def read_self (self):
         for c in self.get_all_children ():
             self._dict[c.get_name()] = c
 
     def get_named_attribute (self, name):
         return self._dict.get (name)
-        
+
     def single_time_sig_to_fraction (self, sig):
         if len (sig) < 2:
             return 0
@@ -343,7 +343,7 @@ class Attributes (Measure_element):
            # Simple (maybe compound) time signature of the form (beat, ..., type)
             return self.single_time_sig_to_fraction (sig)
         return 0
-        
+
     def get_time_signature (self):
         "Return time sig as a (beat, beat-type) tuple. For compound signatures,"
         "return either (beat, beat,..., beat-type) or ((beat,..., type), "
@@ -480,7 +480,7 @@ class Note (Measure_element):
             return 3
         else:
             return None
-    
+
     def get_duration_info (self):
         log = self.get_duration_log ()
         if log != None:
@@ -499,7 +499,7 @@ class Part_list (Music_xml_node):
     def __init__ (self):
         Music_xml_node.__init__ (self)
         self._id_instrument_name_dict = {}
-        
+
     def generate_id_instrument_dict (self):
 
         ## not empty to make sure this happens only once.
@@ -527,7 +527,7 @@ class Part_group (Music_xml_node):
     pass
 class Score_part (Music_xml_node):
     pass
-        
+
 class Measure (Music_xml_node):
     def __init__ (self):
         Music_xml_node.__init__ (self)
@@ -612,13 +612,13 @@ class Part (Music_xml_node):
             n = n._parent
 
         return n.get_named_child ('part-list')
-       
+
     def interpret (self):
         """Set durations and starting points."""
         """The starting point of the very first note is 0!"""
-        
+
         part_list = self.get_part_list ()
-        
+
         now = Rational (0)
         factor = Rational (1)
         attributes_dict = {}
@@ -675,15 +675,15 @@ class Part (Music_xml_node):
                     n.read_self ()
                     attributes_dict = n._dict.copy ()
                     attributes_object = n
-                    
+
                     factor = Rational (1,
                                        int (attributes_dict.get ('divisions').get_text ()))
 
-                
+
                 if (n.get_maybe_exist_typed_child (Duration)):
                     mxl_dur = n.get_maybe_exist_typed_child (Duration)
                     dur = mxl_dur.get_length () * factor
-                    
+
                     if n.get_name() == 'backup':
                         dur = - dur
                         # reset all graces before the backup to after-graces:
@@ -714,7 +714,7 @@ class Part (Music_xml_node):
                     n._prev_measure_position = last_measure_position
                 # After-graces are placed at the same position as the previous note
                 if isinstance(n, Note) and  n.is_after_grace ():
-                    # TODO: We should do the same for grace notes at the end of 
+                    # TODO: We should do the same for grace notes at the end of
                     # a measure with no following note!!!
                     n._when = last_moment
                     n._measure_position = last_measure_position
@@ -834,8 +834,8 @@ class Part (Music_xml_node):
             else:
                 id = "None"
 
-            # We don't need backup/forward any more, since we have already 
-            # assigned the correct onset times. 
+            # We don't need backup/forward any more, since we have already
+            # assigned the correct onset times.
             # TODO: Let Grouping through. Also: link, print, bokmark sound
             if not (isinstance (n, Note) or isinstance (n, Attributes) or
                     isinstance (n, Direction) or isinstance (n, Partial) or
@@ -874,13 +874,13 @@ class Part (Music_xml_node):
                 continue
 
             if isinstance (n, Harmony) or isinstance (n, FiguredBass):
-                # store the harmony or figured bass element until we encounter 
+                # store the harmony or figured bass element until we encounter
                 # the next note and assign it only to that one voice.
                 assign_to_next_note.append (n)
                 continue
 
             if hasattr (n, 'print-object') and getattr (n, 'print-object') == "no":
-                #Skip this note. 
+                #Skip this note.
                 pass
             else:
                 for i in assign_to_next_note:
@@ -987,7 +987,7 @@ class Tuplet (Music_xml_spanner):
     def get_tuplet_note_count (self, tuplet_note):
         if tuplet_note:
             tuplet_nr = tuplet_note.get_maybe_exist_named_child ('tuplet-number')
-            if tuplet_nr: 
+            if tuplet_nr:
                 return int (tuplet_nr.get_text ())
         return None
     def get_normal_nr (self):
@@ -1016,7 +1016,7 @@ class Beam (Music_xml_spanner):
 
 class Wavy_line (Music_xml_spanner):
     pass
-    
+
 class Pedal (Music_xml_spanner):
     pass
 
@@ -1249,7 +1249,7 @@ def get_class (name):
         klass = new.classobj (class_name, (Music_xml_node,) , {})
         class_dict[name] = klass
         return klass
-        
+
 def lxml_demarshal_node (node):
     name = node.tag
 
@@ -1258,13 +1258,13 @@ def lxml_demarshal_node (node):
         return None
     klass = get_class (name)
     py_node = klass()
-    
+
     py_node._original = node
     py_node._name = name
     py_node._data = node.text
     py_node._children = [lxml_demarshal_node (cn) for cn in node.getchildren()]
     py_node._children = filter (lambda x: x, py_node._children)
-    
+
     for c in py_node._children:
         c._parent = py_node
 
@@ -1288,7 +1288,7 @@ def minidom_demarshal_node (node):
         for (nm, value) in node.attributes.items ():
             py_node.__dict__[nm] = value
             py_node._attribute_dict[nm] = value
-            
+
     py_node._data = None
     if node.nodeType == node.TEXT_NODE and node.data:
         py_node._data = node.data
@@ -1299,7 +1299,7 @@ def minidom_demarshal_node (node):
 
 if __name__  == '__main__':
     import lxml.etree
-        
+
     tree = lxml.etree.parse ('beethoven.xml')
     mxl_tree = lxml_demarshal_node (tree.getroot ())
     ks = class_dict.keys ()
index 69125dc9db6cdccbb52d47c19296c6191974fa4e..5d44c39cfb30374cd20f2502a4ef37a12dc7c9c3 100644 (file)
@@ -265,7 +265,7 @@ def staff_attributes_to_string_tunings (mxl_attr):
     if staff_lines:
         lines = string.atoi (staff_lines.get_text ())
 
-    tunings = [musicexp.Pitch()]*lines
+    tunings = [musicexp.Pitch()] * lines
     staff_tunings = details.get_named_children ('staff-tuning')
     for i in staff_tunings:
         p = musicexp.Pitch()
@@ -617,15 +617,15 @@ def group_repeats (music_list):
                 r.repeat_count = repeat_times
                 # don't erase the first element for "implicit" repeats (i.e. no
                 # starting repeat bars at the very beginning)
-                start = repeat_start+1
+                start = repeat_start + 1
                 if repeat_start == music_start:
                     start = music_start
                 r.set_music (music_list[start:repeat_end])
                 for (start, end) in endings:
                     s = musicexp.SequentialMusic ()
-                    s.elements = music_list[start+1:end]
+                    s.elements = music_list[start + 1:end]
                     r.add_ending (s)
-                del music_list[repeat_start:final_marker+1]
+                del music_list[repeat_start:final_marker + 1]
                 music_list.insert (repeat_start, r)
                 repeat_replaced = True
             pos += 1
@@ -637,11 +637,11 @@ def group_repeats (music_list):
 # <time-modification> elements of the note:
 def musicxml_tuplet_to_lily (tuplet_elt, time_modification):
     tsm = musicexp.TimeScaledMusic ()
-    fraction = (1,1)
+    fraction = (1, 1)
     if time_modification:
         fraction = time_modification.get_fraction ()
     tsm.numerator = fraction[0]
-    tsm.denominator  = fraction[1]
+    tsm.denominator = fraction[1]
 
 
     normal_type = tuplet_elt.get_normal_type ()
@@ -776,19 +776,19 @@ def musicxml_key_to_lily (attributes):
         (fifths, mode) = key_sig
         change.mode = mode
 
-        start_pitch  = musicexp.Pitch ()
+        start_pitch = musicexp.Pitch ()
         start_pitch.octave = 0
         try:
-            (n,a) = {
-                'major'     : (0,0),
-                'minor'     : (5,0),
-                'ionian'    : (0,0),
-                'dorian'    : (1,0),
-                'phrygian'  : (2,0),
-                'lydian'    : (3,0),
-                'mixolydian': (4,0),
-                'aeolian'   : (5,0),
-                'locrian'   : (6,0),
+            (n, a) = {
+                'major'     : (0, 0),
+                'minor'     : (5, 0),
+                'ionian'    : (0, 0),
+                'dorian'    : (1, 0),
+                'phrygian'  : (2, 0),
+                'lydian'    : (3, 0),
+                'mixolydian': (4, 0),
+                'aeolian'   : (5, 0),
+                'locrian'   : (6, 0),
                 }[mode]
             start_pitch.step = n
             start_pitch.alteration = a
@@ -828,9 +828,9 @@ def musicxml_transpose_to_lily (attributes):
     chromatic_shift = string.atoi (transpose.get_named_child ('chromatic').get_text ())
     chromatic_shift_normalized = chromatic_shift % 12;
     (shift.step, shift.alteration) = [
-        (0,0), (0,1), (1,0), (2,-1), (2,0),
-        (3,0), (3,1), (4,0), (5,-1), (5,0),
-        (6,-1), (6,0)][chromatic_shift_normalized];
+        (0, 0), (0, 1), (1, 0), (2, -1), (2, 0),
+        (3, 0), (3, 1), (4, 0), (5, -1), (5, 0),
+        (6, -1), (6, 0)][chromatic_shift_normalized];
 
     shift.octave += (chromatic_shift - chromatic_shift_normalized) / 12
 
@@ -867,7 +867,7 @@ def musicxml_staff_details_to_lily (attributes):
 
 def musicxml_attributes_to_lily (attrs):
     elts = []
-    attr_dispatch =  {
+    attr_dispatch = {
         'clef': musicxml_clef_to_lily,
         'time': musicxml_time_to_lily,
         'key': musicxml_key_to_lily,
@@ -1226,7 +1226,7 @@ def musicxml_dynamics_to_lily_event (dynentry):
     dynamicsname = dynentry.get_name ()
     if dynamicsname == "other-dynamics":
         dynamicsname = dynentry.get_text ()
-    if not dynamicsname or dynamicsname=="#text":
+    if not dynamicsname or dynamicsname == "#text":
         return
 
     if not dynamicsname in dynamics_available:
@@ -1253,7 +1253,7 @@ def hexcolorval_to_nr (hex_val):
 def hex_to_color (hex_val):
     res = re.match (r'#([0-9a-f][0-9a-f]|)([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$', hex_val, re.IGNORECASE)
     if res:
-        return map (lambda x: hexcolorval_to_nr (x), res.group (2,3,4))
+        return map (lambda x: hexcolorval_to_nr (x), res.group (2, 3, 4))
     else:
         return None
 
@@ -1753,7 +1753,7 @@ def musicxml_figured_bass_to_lily (n):
     dur = n.get_maybe_exist_named_child ('duration')
     if dur:
         # apply the duration to res
-        length = Rational(int(dur.get_text()), n._divisions)*Rational(1,4)
+        length = Rational(int(dur.get_text()), n._divisions) * Rational(1, 4)
         res.set_real_duration (length)
         duration = rational_to_lily_duration (length)
         if duration:
@@ -1772,7 +1772,7 @@ instrument_drumtype_dict = {
 }
 
 def musicxml_note_to_lily_main_event (n):
-    pitch  = None
+    pitch = None
     duration = None
     event = None
 
@@ -1908,7 +1908,7 @@ class LilyPondVoiceBuilder:
     def current_duration (self):
         return self.end_moment - self.begin_moment
 
-    def add_music (self, music, duration, relevant = True):
+    def add_music (self, music, duration, relevant=True):
         assert isinstance (music, musicexp.Music)
         if self.pending_multibar > Rational (0):
             self._insert_multibar ()
@@ -1925,13 +1925,13 @@ class LilyPondVoiceBuilder:
             self.pending_dynamics = []
 
     # Insert some music command that does not affect the position in the measure
-    def add_command (self, command, relevant = True):
+    def add_command (self, command, relevant=True):
         assert isinstance (command, musicexp.Music)
         if self.pending_multibar > Rational (0):
             self._insert_multibar ()
         self.has_relevant_elements = self.has_relevant_elements or relevant
         self.elements.append (command)
-    def add_barline (self, barline, relevant = False):
+    def add_barline (self, barline, relevant=False):
         # Insert only if we don't have a barline already
         # TODO: Implement proper merging of default barline and custom bar line
         has_relevant = self.has_relevant_elements
@@ -1963,8 +1963,8 @@ class LilyPondVoiceBuilder:
         diff = moment - current_end
 
         if diff < Rational (0):
-            ly.warning (_ ('Negative skip %s (from position %s to %s)') %
-                           (diff, current_end, moment))
+            ly.warning (_ ('Negative skip %s (from position %s to %s)')
+                % (diff, current_end, moment))
             diff = Rational (0)
 
         if diff > Rational (0) and not (self.ignore_skips and moment == 0):
@@ -2000,7 +2000,7 @@ class LilyPondVoiceBuilder:
         value = None
 
         # if the position matches, find the last ChordEvent, do not cross a bar line!
-        at = len( self.elements ) - 1
+        at = len(self.elements) - 1
         while (at >= 0 and
                not isinstance (self.elements[at], musicexp.ChordEvent) and
                not isinstance (self.elements[at], musicexp.BarLine)):
@@ -2717,7 +2717,7 @@ def print_voice_definitions (printer, part_list, voices):
 
 
 def uniq_list (l):
-    return dict ([(elt,1) for elt in l]).keys ()
+    return dict ([(elt, 1) for elt in l]).keys ()
 
 # format the information about the staff in the form
 #     [staffid,