'longa': -2,
'long': -2}.get (dur, 0)
+def interpret_alter_element (alter_elm):
+ alter = 0
+ if alter_elm:
+ val = eval(alter_elm.get_text ())
+ if type (val) in (int, float):
+ alter = val
+ return alter
class Xml_node:
def get_alteration (self):
ch = self.get_maybe_exist_typed_child (get_class (u'alter'))
- alter = 0
- if ch:
- alter = int (ch.get_text ().strip ())
- return alter
+ return interpret_alter_element (ch)
class Unpitched (Music_xml_node):
def get_step (self):
if isinstance (i, KeyStep):
current_step = int (i.get_text ())
elif isinstance (i, KeyAlter):
- alterations.append ([current_step, int (i.get_text ())])
+ alterations.append ([current_step, interpret_alter_element (i)])
elif isinstance (i, KeyOctave):
nr = -1
if hasattr (i, 'number'):
else:
i.message (_ ("Key alteration octave given for a "
"non-existing alteration nr. %s, available numbers: %s!") % (nr, len(alterations)))
- i.message ( "Non-standard key signature (after octave %s for alter nr %s): %s" % (i.get_text (), nr, alterations))
- i.message ( "Non-standard key signature with alterations %s found!" % alterations)
return alterations
def get_transposition (self):
return (text == "begin") or (text == "middle")
class Elision (Music_xml_node):
pass
+class Extend (Music_xml_node):
+ pass
class Text (Music_xml_node):
pass
class Bend (Music_xml_node):
def bend_alter (self):
alter = self.get_maybe_exist_named_child ('bend-alter')
- if alter:
- return alter.get_text()
- else:
- return 0
+ return interpret_alter_element (alter)
class Words (Music_xml_node):
pass
return ch.get_text ().strip ()
def get_alteration (self):
ch = self.get_maybe_exist_typed_child (get_class (self.alter_class_name ()))
- alter = 0
- if ch:
- alter = int (ch.get_text ().strip ())
- return alter
+ return interpret_alter_element (ch)
class Root (ChordPitch):
pass
return value
def get_alter (self):
ch = self.get_maybe_exist_typed_child (get_class (u'degree-alter'))
- value = 0
- if ch:
- value = int (ch.get_text ().strip ())
- return value
+ return interpret_alter_element (ch)
class Frame (Music_xml_node):
'direction-type': DirType,
'duration': Duration,
'elision': Elision,
+ 'extend': Extend,
'frame': Frame,
'frame-note': Frame_Note,
'figured-bass': FiguredBass,