From 92af67ffd8d9f041f6261f8142c88e623164371d Mon Sep 17 00:00:00 2001 From: Seymour Shlien Date: Wed, 7 Oct 2020 12:47:54 -0400 Subject: [PATCH] 2020.10.07 --- VERSION | 2 +- doc/CHANGES | 4 ++++ doc/readme.txt | 4 ++-- matchsup.c | 5 +++++ parseabc.c | 6 ++++-- parseabc.h | 2 ++ store.c | 7 ++++++- toabc.c | 6 ++++++ yapstree.c | 17 ++++++++++++++++- 9 files changed, 46 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 4b9d172..d6bd2ec 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -2020 October 06 2020 +2020 October 07 2020 diff --git a/doc/CHANGES b/doc/CHANGES index d84af5d..a97595d 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -13904,4 +13904,8 @@ structure gets corrupted during the switch. Event_voice was modified so that any remaining data in voice 1 is released before the switch. +October 7 2020 +James Allwright has introduced event_score_linebreak in parseabc.c, +yapstree.c, etc. which replaces the change made on December 09 2019. +Except for yapstree.c, event_score_linebreak does nothing. diff --git a/doc/readme.txt b/doc/readme.txt index 4041d05..715f60e 100644 --- a/doc/readme.txt +++ b/doc/readme.txt @@ -2,8 +2,8 @@ abcMIDI : abc <-> MIDI conversion utilities midi2abc version 3.46 June 22 2020 abc2midi version 4.42 October 01 2020 -abc2abc version 2.10 October 10 2020 -yaps version 1.79 October 01 2020 +abc2abc version 2.10 October 01 2020 +yaps version 1.80 October 07 2020 abcmatch version 1.74 October 01 2020 midicopy version 1.36 June 04 2019 diff --git a/matchsup.c b/matchsup.c index 66166eb..1968ddb 100644 --- a/matchsup.c +++ b/matchsup.c @@ -591,6 +591,11 @@ void event_linebreak() addfeature(LINENUM, lineno, 0, 0); } +/* a score linebreak character has been encountered */ +void event_score_linebreak(char ch) +{ +} + void event_startmusicline() /* starting to parse line of abc music */ { diff --git a/parseabc.c b/parseabc.c index 01d517b..71469c5 100644 --- a/parseabc.c +++ b/parseabc.c @@ -2608,6 +2608,10 @@ parsemusic (field) decorators_passback[i] = 0; /* [SS] 2012-03-30 */ } break; + case '$': + p = p + 1; + event_score_linebreak ('$'); /* [JA] 2020-10-07 */ + break; /* hidden rest */ case 'x': { @@ -2841,8 +2845,6 @@ parsemusic (field) { event_reserved (*p); } - else if (fileprogram == ABC2MIDI && *p == '$') ; /* ignore [SS] 2019-12-9 */ - /* $ sometimes used as a score linebreak character */ else { sprintf (msg, "Unrecognized character: %c", *p); diff --git a/parseabc.h b/parseabc.h index 258a197..ba65dec 100644 --- a/parseabc.h +++ b/parseabc.h @@ -83,6 +83,7 @@ extern void event_init(int argc, char *argv[], char **filename); extern void event_text(char *s); extern void event_reserved(char p); extern void event_tex(char *s); +extern void event_score_linebreak(char ch); extern void event_linebreak(void); extern void event_startmusicline(void); extern void event_endmusicline(char endchar); @@ -152,6 +153,7 @@ extern void event_init(); extern void event_text(); extern void event_reserved(); extern void event_tex(); +extern void event_score_linebreak(); extern void event_linebreak(); extern void event_startmusicline(); extern void event_endmusicline(); diff --git a/store.c b/store.c index c7a1915..c3a18a4 100644 --- a/store.c +++ b/store.c @@ -1787,6 +1787,11 @@ void event_linebreak() addfeature(LINENUM, lineno, 0, 0); } +/* a score linebreak character has been encountered */ +void event_score_linebreak(char ch) +{ +} + void event_startmusicline() /* starting to parse line of abc music */ { @@ -1903,7 +1908,7 @@ double x, h3; int n; float w; /* h3 (1901.955) is the 3rd harmonic (fifth+octave) represented in cents */ -h3 = 1200.0 * log2 (3.0); +h3 = 1200.0 * log (3.0)/log(2.0); /* 1200 * log2(3.0) */ x = h3 - octave_size; /* fifth reduced by the tempered octave */ n = (int) (0.5 + x * ndiv / octave_size); /* fifth in integer steps */ w = n * octave_size / ndiv; /* fifth quantized according to temperament */ diff --git a/toabc.c b/toabc.c index 7942c32..cc84f48 100644 --- a/toabc.c +++ b/toabc.c @@ -835,6 +835,12 @@ void event_linebreak() }; } +/* a score linebreak character has been encountered */ +void event_score_linebreak(char ch) +{ + emit_char(ch); +} + void event_startmusicline() /* encountered the start of a line of notes */ { diff --git a/yapstree.c b/yapstree.c index bc0b959..f28ed6c 100644 --- a/yapstree.c +++ b/yapstree.c @@ -22,7 +22,7 @@ /* yapstree.c - back-end for abc parser. */ /* generates a data structure suitable for typeset music */ -#define VERSION "1.79 October 01 2020 yaps" +#define VERSION "1.80 October 07 2020 yaps" #include #ifdef USE_INDEX #define strchr index @@ -1413,6 +1413,21 @@ static void divide_ties() }; } +/* A score_linebreak has been encountered [JA] 2020-10-07*/ +void event_score_linebreak (char ch) +{ + + if (xinbody) { + /* end current score line - code from endmusicline */ + cv->lineend = addfeature (MUSICSTOP, (void *)NULL); + addfeature (PRINTLINE, newvertspacing ()); + cv->line = newline; + divide_ties (); + /* start new score line - startmusicline */ + event_startmusicline (); + } +} + void event_endmusicline(endchar) char endchar; /* We are at the end of a line of abc notes */