13 origstr = '<%s>' % str
14 if re.search (r'\\\\', str):
17 if re.search (r'\\property', str):
20 if re.match (r'^\s*\)?\s*\\[a-zA-Z]+', str):
25 durs.append(m.group(2))
28 str = re.sub ("([a-z]+[,'!? ]*)([0-9.]+)", sub_durs, str)
35 return '<%s>' % m.group (1)
43 str = re.sub (r'(\\!)\s*([a-z]+)', sub_dyn_end, str)
47 if '-)' not in slur_strs:
48 slur_strs.append ( '-)')
51 if '-\)' not in slur_strs:
52 slur_strs.append ( '-\)')
54 str = re.sub (r"\)[ ]*([a-z]+)", sub_slurs, str)
55 str = re.sub (r"\\\)[ ]*([a-z]+)", sub_p_slurs, str)
56 def sub_begin_slurs(m):
57 if '-(' not in slur_strs:
58 slur_strs.append ( '-(')
60 str = re.sub (r"([a-z]+[,'!?0-9 ]*)\(", sub_begin_slurs, str)
61 def sub_begin_p_slurs(m):
62 if '-\(' not in slur_strs:
63 slur_strs.append ( '-\(')
66 str = re.sub (r"([a-z]+[,'!?0-9 ]*)\\\(", sub_begin_p_slurs, str)
70 if s == '@STARTCRESC@':
71 slur_strs.append ("-\\<")
72 elif s == '@STARTDECRESC@':
73 slur_strs.append ("-\\>")
75 slur_strs.append ('-\\!')
78 str = re.sub (r'@STARTCRESC@', sub_dyns, str)
79 str = re.sub (r'-?\\!', sub_dyns, str)
81 def sub_articulations (m):
83 if a not in slur_strs:
87 str = re.sub (r"([_^-]\@ACCENT\@)", sub_articulations, str)
88 str = re.sub (r"([_^-]\\[a-z]+)", sub_articulations, str)
89 str = re.sub (r"([_^-][>_.+|^-])", sub_articulations, str)
93 slur_strs.append ( ' -\\)')
95 str = re.sub (r"\\\)[ ]*([a-z]+)", sub_pslurs, str)
97 suffix = string.join (slur_strs, '') + string.join (pslur_strs, '') \
98 + string.join (dyns, '')
100 return '@STARTCHORD@%s@ENDCHORD@%s%s' % (str , dur_str, suffix)
106 simstart = "\n\\simultaneous {"
119 marker_str = '%% new-chords-done %%'
121 def sub_chords (str):
122 if re.search (marker_str,str):
125 str= re.sub (r'\\<', '@STARTCRESC@', str)
126 str= re.sub (r'\\>', '@STARTDECRESC@', str)
127 str= re.sub (r'([_^-])>', r'\1@ACCENT@', str)
128 str = re.sub ('<([^<>{}]+)>', sub_chord, str)
130 str = re.sub ('<([^?])', r'%s\1' % simstart, str)
131 str = re.sub ('>([^?])', r'%s\1' % simend, str)
132 str = re.sub ('@STARTCRESC@', r'\\<', str)
133 str = re.sub ('@STARTDECRESC@', r'\\>' ,str)
134 str = re.sub (r'\\context *Voice *@STARTCHORD@', '@STARTCHORD@', str)
135 str = re.sub ('@STARTCHORD@', chordstart, str)
136 str = re.sub ('@ENDCHORD@', chordend, str)
137 str = re.sub (r'@ACCENT@', '>', str)
140 (opts, files)= getopt.getopt( sys.argv[1:], 'e',['edit'])
143 if o == '-e' or o == '--edit':
147 str = open (a).read()
148 if re.search (marker_str, str):
151 sys.stderr.write ("processing %s\n" %a)
153 str = sub_chords (str) + marker_str + '\n'
156 open (a + '.NEW', 'w').write (str)
157 os.rename (a, a + '~')
158 os.rename (a + '.NEW', a)