2024.02.23

This commit is contained in:
sshlien
2024-02-23 14:26:37 -05:00
parent 6441b47841
commit bf013dc428
5 changed files with 60 additions and 14 deletions

View File

@@ -1,2 +1,2 @@
February 22 2024
February 23 2024

View File

@@ -15377,7 +15377,7 @@ it is only called if the token was a clef.
Fix: commented out the line in isclef() which zeros the octave_offset.
February 22 2024
February 23 2024
abcmidi bug:
@@ -15387,7 +15387,33 @@ clef=treble^8 to be substituted for treble+8. abc2midi does not
recognize these variants.
Fix: extended the function get_clef_octave_offset in music_utils.c
to recognize these variants.
to recognize these variants. Unfortunately, readword() called by
parseclef breaks the clef string when it encounters either a ^
or _. This was necessary to handle sharps and flats in the
K: declaration. (See note above April 8 2015.) It was necessary
to create a replacement function, readword_with_() which does
not break the string on underscore _ or caret ^.
The following test file was used to verify the correct operation
of this feature.
X:1
T: clef= variants
M:4/4
L:1/4
V:1 clef=treble-8
V:2 clef=treble_8
V:3 clef=treble+8
V:4 clef=treble^8
K:C
[V:1] z z C z |
[V:2] z z z C |
[V:3] C z z z |
[V:4] z C z z |

View File

@@ -1,7 +1,7 @@
abcMIDI : abc <-> MIDI conversion utilities
midi2abc version 3.59 February 08 2023
abc2midi version 4.88 February 22 2024
abc2midi version 4.89 February 23 2024
abc2abc version 2.21 February 19 2024
yaps version 1.93 February 19 2024
abcmatch version 1.83 February 19 2024

View File

@@ -742,6 +742,33 @@ readword (word, s)
return (p);
}
char *
readword_with_ (word, s)
/* This version allows ^ and _ characters to be embedded in*/
/* the string. It is needed to parse clef=treble_8 or
/* clef=treble^8 . [SS] 2024-02-23 */
char word[];
char *s;
{
char *p;
int i;
p = s;
i = 0;
/* [SS] 2015-04-08 */
while ((*p != '\0') && (*p != ' ') && (*p != '\t') && ((i == 0) ||
((*p != '='))))
{
if (i < 29)
{
word[i] = *p;
i = i + 1;
};
p = p + 1;
};
word[i] = '\0';
return (p);
}
void
lcase (s)
/* convert word to lower case */
@@ -965,7 +992,7 @@ parseclef (s, word, gotclef, clefstr, newclef, gotoctave, octave)
{
int successful;
skipspace (s);
*s = readword (word, *s);
*s = readword_with_ (word, *s);
successful = 0;
if (casecmp (word, "clef") == 0)
{
@@ -978,7 +1005,7 @@ parseclef (s, word, gotclef, clefstr, newclef, gotoctave, octave)
{
*s = *s + 1;
skipspace (s);
*s = readword (clefstr, *s);
*s = readword_with_ (clefstr, *s);
if (isclef (clefstr, newclef, gotoctave, octave, 1))
{
*gotclef = 1;
@@ -1743,13 +1770,6 @@ parsevoice (s)
}
event_voice (num, s, &vparams);
/*
if (gottranspose) printf("transpose = %d\n", vparams.transpose);
if (gotoctave) printf("octave= %d\n", vparams.octave);
if (gotclef) printf("clef= %s\n", vparams.clefstr);
if (gotname) printf("parsevoice: name= %s\n", vparams.namestring);
if(gotmiddle) printf("parsevoice: middle= %s\n", vparams.middlestring);
*/
}

View File

@@ -186,7 +186,7 @@ int main()
*/
#define VERSION "4.88 February 22 2024 abc2midi"
#define VERSION "4.89 February 23 2024 abc2midi"
/* enables reading V: indication in header */
#define XTEN1 1