X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fabc2ly.py;h=e6e0d12407e4ed53006ee529da85f55f7ac7dbab;hb=HEAD;hp=60900ca8315d78890eebea3a208b4a139790c8f0;hpb=c6a5b9b4a8a46c18ea94886627e57dcfbb7bfa0d;p=lilypond.git diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py index 60900ca831..e6e0d12407 100644 --- a/scripts/abc2ly.py +++ b/scripts/abc2ly.py @@ -222,18 +222,18 @@ def dump_header (outf,hdr): def dump_lyrics (outf): if (len(lyrics)): - outf.write("\n\\score\n{\n \\lyrics\n <<\n") + outf.write("\n\\markup \\column {\n") for i in range (len (lyrics)): - outf.write ( lyrics [i]) + outf.write (lyrics [i]) outf.write ("\n") - outf.write(" >>\n \\layout{}\n}\n") + outf.write("}\n") def dump_default_bar (outf): """ Nowadays abc2ly outputs explicits barlines (?) """ ## < 2.2 - outf.write ("\n\\set Score.defaultBarType = \"empty\"\n") + outf.write ("\n\\set Score.defaultBarType = \"\"\n") def dump_slyrics (outf): @@ -284,7 +284,15 @@ def try_parse_q(a): dur = duration_to_lilypond_duration ((numerator,denominator), 1, 0) voices_append ("\\tempo " + descr + " " + dur + "=" + tempo + "\n") else: - sys.stderr.write("abc2ly: Warning, unable to parse Q specification: %s\n" % a) + # Parsing of numeric tempi, as these are fairly + # common. The spec says the number is a "beat" so using + # a quarter note as the standard time + numericQ = re.compile ('[0-9]+') + m = numericQ.match (a) + if m: + voices_append ("\\tempo 4=" + m.group(0)) + else: + sys.stderr.write("abc2ly: Warning, unable to parse Q specification: %s\n" % a) def dump_score (outf): outf.write (r""" @@ -617,7 +625,7 @@ def repeat_prepend(): def lyrics_append(a): a = re.sub ('#', '\\#', a) # latex does not like naked #'s a = re.sub ('"', '\\"', a) # latex does not like naked "'s - a = '\t{ "' + a + '" }\n' + a = ' \\line { "' + a + '" }\n' stuff_append (lyrics, current_lyric_idx, a) # break lyrics to words and put "'s around words containing numbers and '"'s @@ -753,8 +761,12 @@ def try_parse_header_line (ln, state): lyrics_append(a) if g == 'w': # vocals slyrics_append (a) - if g == 'Q': #tempo + if g == 'Q': # tempo try_parse_q (a) + if g == 'R': # Rhythm (e.g. jig, reel, hornpipe) + header['meter'] = a + if g == 'Z': # Transcription (e.g. Steve Mansfield 1/2/2000) + header['transcription'] = a return '' return ln @@ -1116,12 +1128,12 @@ old_bar_dict = { '|]' : '|.', '||' : '||', '[|' : '||', -':|' : ':|', +':|' : ':|.', '|:' : '|:', -'::' : ':|:', +'::' : ':|.|:', '|1' : '|', '|2' : '|', -':|2' : ':|', +':|2' : ':|.', '|' : '|' } bar_dict = { @@ -1195,6 +1207,9 @@ def try_parse_bar (str,state): clear_bar_acc(state) close_beam_state(state) + if str[:1] == '}': + close_beam_state(state) + if bs <> None or state.next_bar != '': if state.parsing_tuplet: state.parsing_tuplet =0