last_str = ''
while last_str <> str:
last_str = str
+ def sub_tremolos (m):
+ tr = m.group (2)
+ if tr not in slur_strs:
+ slur_strs.append (tr)
+ return m.group (1)
+
+ str = re.sub (r"([a-z]+[',!? ]*)(:[0-9]+)", sub_tremolos, str)
+
def sub_dyn_end (m):
- dyns.append (' -\!')
+ dyns.append (' \!')
return ' ' + m.group(2)
str = re.sub (r'(\\!)\s*([a-z]+)', sub_dyn_end, str)
def sub_slurs(m):
if '-)' not in slur_strs:
- slur_strs.append ( '-)')
+ slur_strs.append ( ')')
return m.group(1)
def sub_p_slurs(m):
if '-\)' not in slur_strs:
- slur_strs.append ( '-\)')
+ slur_strs.append ( '\)')
return m.group(1)
str = re.sub (r"\)[ ]*([a-z]+)", sub_slurs, str)
str = re.sub (r"\\\)[ ]*([a-z]+)", sub_p_slurs, str)
def sub_begin_slurs(m):
if '-(' not in slur_strs:
- slur_strs.append ( '-(')
+ slur_strs.append ( '(')
return m.group(1)
str = re.sub (r"([a-z]+[,'!?0-9 ]*)\(", sub_begin_slurs, str)
def sub_begin_p_slurs(m):
if '-\(' not in slur_strs:
- slur_strs.append ( '-\(')
+ slur_strs.append ( '\(')
return m.group(1)
str = re.sub (r"([a-z]+[,'!?0-9 ]*)\\\(", sub_begin_p_slurs, str)
def sub_dyns (m):
s = m.group(0)
if s == '@STARTCRESC@':
- slur_strs.append ("-\\<")
+ slur_strs.append ("\\<")
elif s == '@STARTDECRESC@':
- slur_strs.append ("-\\>")
+ slur_strs.append ("\\>")
elif s == r'-?\\!':
- slur_strs.append ('-\\!')
+ slur_strs.append ('\\!')
return ''
str = re.sub (r'@STARTCRESC@', sub_dyns, str)
str = re.sub (r"([_^-][>_.+|^-])", sub_articulations, str)
def sub_pslurs(m):
- slur_strs.append ( ' -\\)')
+ slur_strs.append ( ' \\)')
return m.group(1)
str = re.sub (r"\\\)[ ]*([a-z]+)", sub_pslurs, str)
simstart = "<"
chordstart = '<<'
chordend = '>>'
+ marker_str = '%% new-chords-done %%'
if re.search (marker_str,str):
return str
str= re.sub (r'([_^-])>', r'\1@ACCENT@', str)
str = re.sub ('<([^<>{}]+)>', sub_chord, str)
- str = re.sub (r'\[ *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]+)',
- r'\1-[',
+ str = re.sub (r'\[ *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
+ r'\1[',
str)
- str = re.sub (r'\\! *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]+)',
- r'\1-\\!',
+ str = re.sub (r'\\! *(@STARTCHORD@[^@]+@ENDCHORD@[0-9.]*)',
+ r'\1\\!',
str)
str = re.sub ('<([^?])', r'%s\1' % simstart, str)
str = re.sub ('>([^?])', r'%s\1' % simend, str)
def articulation_substitute (str):
str = re.sub (r"""([^-])\[ *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
- r" \1 \2-[", str)
+ r" \1 \2[", str)
str = re.sub (r"""([^-])\) *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
- r"\1 \2-)", str)
+ r"\1 \2)", str)
str = re.sub (r"""([^-])\\! *([a-z]+[,']*[!?]?[0-9:]*\.*)""",
- r"\1 \2-\\!", str)
+ r"\1 \2\\!", str)
return str
def conv_relative(str):
def conv (str):
str = conv_relative (str)
- if re.search (marker_str, str) == None :
- str = sub_chords (str)
+ str = sub_chords (str)
str = articulation_substitute (str)
return str
conversions.append (((1,9,0), conv, """New relative mode,
-Postfix articulations, new chord syntax."))
+Postfix articulations, new chord syntax."""))
+
+if 1:
+ def conv (str):
+ if re.search ("font-style",str):
+ sys.stderr.write ("font-style is deprecated. Please remove.")
+ raise FatalConversionError()
+
+ str = re.sub (r'-\\markup', r'@\\markup', str)
+ str = re.sub (r'-\\', r'\\', str)
+ str = re.sub (r'-\)', ')', str)
+ str = re.sub (r'-\(', '(', str)
+ str = re.sub ('-\[', '[', str)
+ str = re.sub ('-\]', ']', str)
+ str = re.sub ('-~', '~', str)
+ str = re.sub (r'@\\markup', r'-\\markup', str)
+ return str
+
+ conversions.append (((1,9,1), conv, """Remove - before articulation"""))
+if 1:
+ def conv (str):
+ str = re.sub ('ly:set-context-property',
+ 'ly:set-context-property!', str)
+ str = re.sub ('\\\\newcontext', '\\\\new', str)
+ str = re.sub ('\\\\grace[\t\n ]*([^{ ]+)',
+ r'\\grace { \1 }', str)
+ str = re.sub ("\\\\grace[\t\n ]*{([^}]+)}",
+ r"""\\grace {
+ \\property Voice.Stem \\override #'stroke-style = #"grace"
+ \1
+ \\property Voice.Stem \\revert #'stroke-style }
+""", str)
+
+ return str
+
+ conversions.append (((1,9,2), conv, """\newcontext -> \new"""))
+
+if 1:
+ def conv (str):
+ str = re.sub ('accacciatura',
+ 'acciaccatura', str)
+
+ if re.search ("context-spec-music", str):
+ sys.stderr.write ("context-spec-music takes a symbol for the context now. Update by hand.")
+
+ raise FatalConversionError()
+
+ str = re.sub ('fingerHorizontalDirection *= *#(LEFT|-1)',
+ "fingeringOrientations = #'(up down left)", str)
+ str = re.sub ('fingerHorizontalDirection *= *#(RIGHT|1)',
+ "fingeringOrientations = #'(up down right)", str)
+
+ return str
+
+ conversions.append (((1,9,3), conv,
+ """\acciaccatura misspelling, fingerHorizontalDirection -> fingeringOrientations"""))
+
+
+def conv (str):
+ if re.search ('\\figures', str):
+ sys.stderr.write ("Warning: attempting automatic \\figures conversion. Check results!");
+
+
+ def figures_replace (m):
+ s = m.group (1)
+ s = re.sub ('<', '@FIGOPEN@',s)
+ s = re.sub ('>', '@FIGCLOSE@',s)
+ return '\\figures { %s }' % s
+
+ str = re.sub (r'\\figures[ \t\n]*{([^}]+)}', figures_replace, str)
+ str = re.sub (r'\\<', '@STARTCRESC@', str)
+ str = re.sub (r'\\>', '@STARTDECRESC@', str)
+ str = re.sub (r'([-^_])>', r'\1@ACCENT@', str)
+ str = re.sub (r'<<', '@STARTCHORD@', str)
+ str = re.sub (r'>>', '@ENDCHORD@', str)
+ str = re.sub (r'>', '@ENDSIMUL@', str)
+ str = re.sub (r'<', '@STARTSIMUL@', str)
+ str = re.sub ('@STARTDECRESC@', '\\>', str)
+ str = re.sub ('@STARTCRESC@', '\\<', str)
+ str = re.sub ('@ACCENT@', '>', str)
+ str = re.sub ('@ENDCHORD@', '>', str)
+ str = re.sub ('@STARTCHORD@', '<', str)
+ str = re.sub ('@STARTSIMUL@', '<<', str)
+ str = re.sub ('@ENDSIMUL@', '>>', str)
+ str = re.sub ('@FIGOPEN@', '<', str)
+ str = re.sub ('@FIGCLOSE@', '>', str)
+
+ return str
+
+conversions.append (((1,9,4), conv, 'Swap < > and << >>'))
+
+
+def conv (str):
+ str = re.sub ('HaraKiriVerticalGroup', 'RemoveEmptyVerticalGroup', str)
+
+ return str
+
+conversions.append (((1,9,5), conv, 'HaraKiriVerticalGroup -> RemoveEmptyVerticalGroup'))
+
+def conv (str):
+ if re.search ("ly:get-font", str):
+ sys.stderr.write (r"(ly:get-font foo ..) has been replaced by" + \
+ " (ly:paper-get-font (ly:grob-get-paper foo) .. ).\n" +\
+ "please update manually.")
+
+ raise FatalConversionError()
+ return str
+
+
+conversions.append (((1,9,6), conv, 'ly:get-font deprecated.'))
################################
# END OF CONVERSIONS
else:
sys.stderr.write ("%s: skipping: `%s' " % (program_name, f))
pass
+
sys.stderr.write ('\n')