2022.03.20

This commit is contained in:
Seymour Shlien
2022-03-21 08:39:17 -04:00
parent 35876618bb
commit 47a0cecc5d
5 changed files with 45 additions and 4 deletions

View File

@@ -1,2 +1,2 @@
2022 February 22 2022
2022 March 20 2022

View File

@@ -14661,4 +14661,43 @@ if (strstr(line,"%%begintext") != NULL) {
which returns the pointer to %%begintext in the line.
March 20 2022
abc2midi bug: I could not demonstrate this bug on my own system.
When abc2midi is compiled on a Debian linux system using the -O2 compilation
flag (by default), it produces a faulty midi file for abc files containing
gchords. Here is a sample file.
%abc-2.2
X:1
T:Test
M:C
L:1/4
Q:1/4=135
V:S clef=treble
V:s clef=treble
K:C
%%score (s S)
%
[V:s] "C" x2 "a" x2 |
[V:S] C C A A |
The problem occurs with the bass accompaniment generated by "a". The
bass accompaniment creates a long string of A,, notes.
This problem disappears when abc2midi is compiled without the
-O2 optimizer.
Analysis: the bug was traced to the code gchord_configure in genmidi.c.
The limit of the loops
for (j=0; j<chordlen[chordnum]; j++)
contain bad data when chordnum is set to -1 (for bass accompaniment).
Fix: exit from gchord_configure function when chordnum is less than
zero.
The problem was identified to me by Jakob Englhauser. Jakob verified
that this fix works.

View File

@@ -1,7 +1,7 @@
abcMIDI : abc <-> MIDI conversion utilities
midi2abc version 3.52 March 04 2022
abc2midi version 4.69 February 22 2022
abc2midi version 4.70 March 20 2022
abc2abc version 2.16 February 22 2022
yaps version 1.88 February 22 2022
abcmatch version 1.80 November 25 2021

View File

@@ -358,7 +358,9 @@ void configure_gchord()
{
int j;
int inchord, note;
gchordnotes_size = 0;
if (chordnum < 0) return; /* [SS] 2022-03-20 */
inchord = 0;
if (inversion != -1) {

View File

@@ -186,7 +186,7 @@ int main()
*/
#define VERSION "4.70 February 22 2022 abc2midi"
#define VERSION "4.71 March 20 2022 abc2midi"
/* enables reading V: indication in header */
#define XTEN1 1
@@ -1860,7 +1860,7 @@ nmidicmd++;
/* [SS] 2015-06-01 For converting the %%MIDIx command to a
%%MIDI command
*/
void event_midi();
void event_midi(char* s); /* [SS] 2022-03-19 */
void process_midix(s)