X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Fmusicexp.py;h=2ae8a6784f3ea480f3343d6539323fd79ec706d0;hb=8190076d2ab3fcb8b0eac2cdbf3057232cd35e11;hp=1596cd392b0eca295aa88b9f74a02b6ccde3a49d;hpb=daf9c2c65d29cb29d1e895bc5e4f4f5f63a40924;p=lilypond.git diff --git a/python/musicexp.py b/python/musicexp.py index 1596cd392b..2ae8a6784f 100644 --- a/python/musicexp.py +++ b/python/musicexp.py @@ -2,9 +2,9 @@ import inspect import sys import string import re -import lilylib +import lilylib as ly -_ = lilylib._ +_ = ly._ from rational import Rational @@ -155,8 +155,12 @@ class Duration: def ly_expression (self, factor = None): if not factor: factor = self.factor - - str = '%d%s' % (1 << self.duration_log, '.'*self.dots) + + if self.duration_log < 0: + str = {-1: "\\breve", -2: "\\longa"}.get (self.duration_log, "1") + else: + str = '%d' % (1 << self.duration_log) + str += '.'*self.dots if factor <> Rational (1,1): if factor.denominator () <> 1: @@ -669,6 +673,31 @@ class Paper: printer.dump ('}') printer.newline () +class Layout: + def __init__ (self): + self.context_dict = {} + def add_context (self, context): + if not self.context_dict.has_key (context): + self.context_dict[context] = [] + def set_context_item (self, context, item): + self.add_context (context) + if not item in self.context_dict[context]: + self.context_dict[context].append (item) + def print_ly (self, printer): + if self.context_dict.items (): + printer.dump ('\\layout {') + printer.newline () + for (context, defs) in self.context_dict.items (): + printer.dump ('\\context { \\%s' % context) + printer.newline () + for d in defs: + printer.dump (d) + printer.newline () + printer.dump ('}') + printer.newline () + printer.dump ('}') + printer.newline () + class ChordEvent (NestedMusic): def __init__ (self): @@ -830,9 +859,17 @@ class TextSpannerEvent (SpanEvent): 1:'\\stopTextSpan'}.get (self.span_direction, '') class BracketSpannerEvent (SpanEvent): + # Ligature brackets use prefix-notation!!! + def print_before_note (self, printer): + if self.span_direction == -1: + printer.dump ('\[') + # the the bracket after the last note + def print_after_note (self, printer): + if self.span_direction == 1: + printer.dump ('\]') + # we're printing everything in print_(before|after)_note... def ly_expression (self): - return {-1: '\\startGroup', - 1:'\\stopGroup'}.get (self.span_direction, '') + return ''; class OctaveShiftEvent (SpanEvent):