self.alteration = 0
self.step = 0
self.octave = 0
+ self._force_absolute_pitch = False
def __repr__(self):
return self.ly_expression()
def ly_expression (self):
str = self.ly_step_expression ()
- if relative_pitches:
+ if relative_pitches and not self._force_absolute_pitch:
str += self.relative_pitch ()
else:
str += self.absolute_pitch ()
relative_pitches = prev_relative_pitches
class TimeScaledMusic (MusicWrapper):
+ def __init__ (self):
+ MusicWrapper.__init__ (self)
+ self.display_number = "actual" # valid values "actual" | "both" | None
+ # Display the basic note length for the tuplet:
+ self.display_type = None # value values "actual" | "both" | None
+ self.display_bracket = "bracket" # valid values "bracket" | "curved" | None
+
def print_ly (self, func):
+ if self.display_bracket == None:
+ func ("\\once \\override TupletBracket #'stencil = ##f")
+ func.newline ()
+ elif self.display_bracket == "curved":
+ warning (_ ("Tuplet brackets of curved shape are not correctly implemented"))
+ func ("\\once \\override TupletBracket #'stencil = #ly:slur::print")
+ func.newline ()
+
+ base_number_function = {None: "#f",
+ "actual": "tuplet-number::calc-denominator-text",
+ "both": "tuplet-number::calc-fraction-text"}.get (self.display_number, None)
+
+ if self.display_type == "actual":
+ base_duration = "8" # TODO!!!
+ func ("\\once \\override TupletNumber #'text = #(tuplet-number::append-note-wrapper %s \"%s\")" %
+ (base_number_function, base_duration))
+ func.newline ()
+ elif self.display_type == None:
+ if self.display_number == None:
+ func ("\\once \\override TupletNumber #'stencil = ##f")
+ func.newline ()
+ elif self.display_number == "both":
+ func ("\\once \\override TupletNumber #'text = #%s" % base_number_function)
+ func.newline ()
+ elif self.display_type == "both":
+ warning (_ ("Tuplet brackets displaying both note durations are not implemented, using default"))
+ if self.display_number == None:
+ func ("\\once \\override TupletNumber #'stencil = ##f")
+ func.newline ()
+ elif self.display_number == "both":
+ func ("\\once \\override TupletNumber #'text = #%s" % base_number_function)
+ func.newline ()
+
func ('\\times %d/%d ' %
(self.numerator, self.denominator))
func.add_factor (Rational (self.numerator, self.denominator))
""" % (glyph, pos, c0)
return clefsetting
+class Transposition (Music):
+ def __init__ (self):
+ Music.__init__ (self)
+ self.pitch = None
+ def ly_expression (self):
+ self.pitch._force_absolute_pitch = True
+ return '\\transposition %s' % self.pitch.ly_expression ()
class StaffChange (Music):
def __init__ (self, staff):