]> git.donarmstrong.com Git - lilypond.git/blobdiff - python/musicexp.py
Typos: Lilypond -> LilyPond, explicite -> explicit, fix docstring
[lilypond.git] / python / musicexp.py
index 440fcbfb3f1c12c87957c79b2f204f95b2efcf0f..9ebdb70a0005d8e93d403a0d7ba8568fa470a1b5 100644 (file)
@@ -508,13 +508,25 @@ class TimeScaledMusic (MusicWrapper):
                 (base_number_function, base_duration))
             func.newline ()
         elif self.display_type == "both": # TODO: Implement this using actual_type and normal_type!
-            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 ()
+                den_duration = self.normal_type.ly_expression (None, True)
+                # If we don't have an actual type set, use the normal duration!
+                if self.actual_type:
+                    num_duration = self.actual_type.ly_expression (None, True)
+                else:
+                    num_duration = den_duration
+                if (self.display_denominator or self.display_numerator):
+                    func ("\\once \\override TupletNumber #'text = #(tuplet-number::non-default-fraction-with-notes %s \"%s\" %s \"%s\")" % 
+                                (self.display_denominator, den_duration,
+                                 self.display_numerator, num_duration))
+                    func.newline ()
+                else:
+                    func ("\\once \\override TupletNumber #'text = #(tuplet-number::fraction-with-notes \"%s\" \"%s\")" % 
+                                (den_duration, num_duration))
+                    func.newline ()
         else:
             if self.display_number == None:
                 func ("\\once \\override TupletNumber #'stencil = ##f")
@@ -741,7 +753,7 @@ class Paper:
         # TODO: maybe set line-width instead of right-margin?
         self.print_length_field (printer, "right-margin", self.right_margin)
         # TODO: What's the corresponding setting for system_left_margin and
-        #        system_right_margin in Lilypond?
+        #        system_right_margin in LilyPond?
         self.print_length_field (printer, "between-system-space", self.system_distance)
         self.print_length_field (printer, "page-top-space", self.top_system_distance)
 
@@ -1468,11 +1480,6 @@ class KeySignatureChange (Music):
         elif self.non_standard_alterations:
             alterations = [self.format_non_standard_alteration (a) for
                                         a in self.non_standard_alterations]
-            # TODO: Check if the alterations should really be given in reverse
-            #       order of if that's just a bug in Lilypond. If it's a bug,
-            #       fix it and remove the following call, otherwise add a
-            #       proper comment here!
-            alterations.reverse ()
             return "\\set Staff.keySignature = #`(%s)" % string.join (alterations, " ")
         else:
             return ''
@@ -1532,6 +1539,8 @@ class ClefChange (Music):
                 ('F', 4): "bass",
                 ('F', 5): "subbass",
                 ("percussion", 2): "percussion",
+                # Workaround: MuseScore uses PERC instead of percussion
+                ("PERC", 2): "percussion",
                 ("TAB", 5): "tab"}.get ((self.type, self.position), None)
     def ly_expression (self):
         return '\\clef "%s%s"' % (self.clef_name (), self.octave_modifier ())
@@ -1700,6 +1709,14 @@ class MultiMeasureRest(Music):
         return 'R%s' % self.duration.ly_expression ()
 
 
+class Break (Music):
+    def __init__ (self, tp="break"):
+        Music.__init__ (self)
+        self.type = tp
+    def print_ly (self, printer):
+        if self.type:
+            printer.dump ("\\%s" % self.type)
+
 class StaffGroup:
     def __init__ (self, command = "StaffGroup"):
         self.stafftype = command