previous_pitch = None
relative_pitches = False
-def warning (str):
- ly.stderr_write ((_ ("warning: %s") % str) + "\n")
-
def escape_instrument_string (input_string):
retstring = string.replace (input_string, "\"", "\\\"")
if re.match ('.*[\r\n]+.*', retstring):
rx = re.compile (r'[\n\r]+')
strings = rx.split (retstring)
- retstring = "\\markup { \\column { "
+ retstring = "\\markup { \\center-column { "
for s in strings:
retstring += "\\line {\"" + s + "\"} "
retstring += "} }"
return base * dot_fact * self.factor
+# implement the midi command line option '-m' and '--midi'
+# if TRUE add midi-block to .ly file (see below)
+def set_create_midi (option):
+ global midi_option
+ midi_option = option
+
+def get_create_midi ():
+ try:
+ return midi_option
+ except:
+ return False
# Implement the different note names for the various languages
def pitch_generic (pitch, notenames, accidentals):
# Handle remaining fraction to pitch.alteration (for microtones)
if (halftones != pitch.alteration):
if None in accidentals[1:3]:
- warning (_ ("Language does not support microtones contained in the piece"))
+ ly.warning (_ ("Language does not support microtones contained in the piece"))
else:
try:
str += {-0.5: accidentals[1], 0.5: accidentals[2]}[pitch.alteration-halftones]
except KeyError:
- warning (_ ("Language does not support microtones contained in the piece"))
+ ly.warning (_ ("Language does not support microtones contained in the piece"))
return str
def pitch_general (pitch):
func ("\\once \\override TupletBracket #'stencil = ##f")
func.newline ()
elif self.display_bracket == "curved":
- warning (_ ("Tuplet brackets of curved shape are not correctly implemented"))
+ ly.warning (_ ("Tuplet brackets of curved shape are not correctly implemented"))
func ("\\once \\override TupletBracket #'stencil = #ly:slur::print")
func.newline ()
self.music = SequentialMusic ()
self.music.elements = music
else:
- warning (_ ("unable to set the music %(music)s for the repeat %(repeat)s") % \
+ ly.warning (_ ("unable to set the music %(music)s for the repeat %(repeat)s") % \
{'music':music, 'repeat':self})
def add_ending (self, music):
self.endings.append (music)
if self.music:
self.music.print_ly (printer)
else:
- warning (_ ("encountered repeat without body"))
+ ly.warning (_ ("encountered repeat without body"))
printer.dump ('{}')
if self.endings:
printer.dump ('\\alternative {')
self.print_length_field (printer, "paper-width", self.page_width)
self.print_length_field (printer, "paper-height", self.page_height)
self.print_length_field (printer, "top-margin", self.top_margin)
- self.print_length_field (printer, "botton-margin", self.bottom_margin)
+ self.print_length_field (printer, "bottom-margin", self.bottom_margin)
self.print_length_field (printer, "left-margin", self.left_margin)
# TODO: maybe set line-width instead of right-margin?
self.print_length_field (printer, "right-margin", self.right_margin)
# don't print newlines after the { and } braces
self.grace_elements.print_ly (printer, False)
elif self.grace_elements: # no self.elements!
- warning (_ ("Grace note with no following music: %s") % self.grace_elements)
+ ly.warning (_ ("Grace note with no following music: %s") % self.grace_elements)
if self.grace_type:
printer ('\\%s' % self.grace_type)
else:
try:
value = {8: 1, 15: 2}[self.size]
except KeyError:
- warning (_ ("Invalid octave shift size found: %s. Using no shift.") % self.size)
+ ly.warning (_ ("Invalid octave shift size found: %s. Using no shift.") % self.size)
value = 0
# negative values go up!
value *= -1*self.span_type
try:
accidental = alter_dict[a[1]]
except KeyError:
- warning (_ ("Unable to convert alteration %s to a lilypond expression") % a[1])
+ ly.warning (_ ("Unable to convert alteration %s to a lilypond expression") % a[1])
return ''
if len (a) == 2:
return "( %s . %s )" % (a[0], accidental)
elif self.non_standard_alterations:
alterations = [self.format_non_standard_alteration (a) for
a in self.non_standard_alterations]
- return "\\set Staff.keySignature = #`(%s)" % string.join (alterations, " ")
+ return "\\set Staff.keyAlterations = #`(%s)" % string.join (alterations, " ")
else:
return ''
if self.spanbar == "no":
printer.dump ("\\override SpanBar #'transparent = ##t")
brack = {"brace": "SystemStartBrace",
- "none": "f",
+ "none": "SystemStartBar",
"line": "SystemStartSquare"}.get (self.symbol, None)
if brack:
printer.dump ("systemStartDelimiter = #'%s" % brack)
printer.dump (m)
printer.dump ("}")
+ def print_ly_chords (self,printer):
+ try:
+ for [staff_id, voices] in self.part_information:
+ for [v, lyrics, figuredbass, chordnames] in voices:
+ if chordnames:
+ printer ('\context ChordNames = "%s" \\%s' % (chordnames, chordnames))
+ printer.newline ()
+ except TypeError:
+ return
+
def print_ly (self, printer):
+ self.print_ly_chords (printer)
if self.stafftype:
printer.dump ("\\new %s" % self.stafftype)
self.print_ly_overrides (printer)
sub_staff_type = self.stafftype
for [staff_id, voices] in self.part_information:
- # Chord names need to come before the staff itself!
- for [v, lyrics, figuredbass, chordnames] in voices:
- if chordnames:
- printer ('\context ChordNames = "%s" \\%s' % (chordnames, chordnames))
-
- # now comes the real staff definition:
if staff_id:
printer ('\\context %s = "%s" << ' % (sub_staff_type, staff_id))
else:
if self.string_tunings or self.tablature_format:
printer.dump ("\\with {")
if self.string_tunings:
- printer.dump ("stringTunings = #'(")
+ printer.dump ("stringTunings = #`(")
for i in self.string_tunings:
- printer.dump ("%s" % i.semitones ())
+ printer.dump (",%s" % i.lisp_expression ())
printer.dump (")")
if self.tablature_format:
printer.dump ("tablatureFormat = #%s" % self.tablature_format)
self.contents.set_part_information (part_id, staves_info)
def print_ly (self, printer):
+ self.create_midi = get_create_midi ()
printer.dump ("\\score {");
printer.newline ()
if self.contents: