2025.01.12

This commit is contained in:
sshlien
2025-01-12 12:39:05 -05:00
parent 8d5df56596
commit c85053c4db
4 changed files with 31 additions and 5 deletions

View File

@@ -1 +1 @@
January 07 2025 January 12 2025

View File

@@ -15557,3 +15557,24 @@ In addition event_key was not receiving negative fractional microtones.
The problem was traced to a missing check in process_microtones() The problem was traced to a missing check in process_microtones()
in parseabc.c in parseabc.c
January 12 2025
abc2midi ignores non-microtone accidentals. In the following example,
X:1
T: Non microtone accidentals
L:1/8
Q:1/4=60
M:8/8
%%MIDI temperamentequal 36
K:C
EF^FG^Gc^cd|
The accidentals in front of F, G, and c were
ignored.
Fix: in pitchof_b, for TEMPERLN or TEMPEREQ respect accidentals
occurring outside of microtones.

View File

@@ -1,7 +1,7 @@
abcMIDI : abc <-> MIDI conversion utilities abcMIDI : abc <-> MIDI conversion utilities
midi2abc version 3.59 February 08 2023 midi2abc version 3.59 February 08 2023
abc2midi version 4.98 January 07 2025 abc2midi version 4.99 January 12 2025
abc2abc version 2.22 April 30 2024 abc2abc version 2.22 April 30 2024
yaps version 1.94 April 30 2024 yaps version 1.94 April 30 2024
abcmatch version 1.83 February 19 2024 abcmatch version 1.83 February 19 2024

11
store.c
View File

@@ -186,7 +186,7 @@ int main()
*/ */
#define VERSION "4.98 January 07 2025 abc2midi" #define VERSION "4.99 January 12 2025 abc2midi"
/* enables reading V: indication in header */ /* enables reading V: indication in header */
#define XTEN1 1 #define XTEN1 1
@@ -3723,7 +3723,9 @@ int *pitchbend;
fifth_size, fifth_size,
(3*fifth_size-octave_size), (3*fifth_size-octave_size),
(5*fifth_size-2*octave_size) }; (5*fifth_size-2*octave_size) };
/* in units cents [SS] 2020-07-17 */ /* contains the pitches of c,d,etc in cent units after accounting
for fifth_size and octave_size
*/
static const char *anoctave = "cdefgab"; static const char *anoctave = "cdefgab";
acc = accidental; acc = accidental;
@@ -3731,7 +3733,6 @@ int *pitchbend;
noteno = (int)note - 'a'; noteno = (int)note - 'a';
/* [SS] 2015-08-18 */ /* [SS] 2015-08-18 */
if (acc == ' ' && !microtone) { /* no accidentals, apply current state */ if (acc == ' ' && !microtone) { /* no accidentals, apply current state */
acc = v->workmap[noteno][octave+4]; acc = v->workmap[noteno][octave+4];
@@ -3774,6 +3775,10 @@ int *pitchbend;
if ((temperament==TEMPERLN) || (temperament==TEMPEREQ)) { if ((temperament==TEMPERLN) || (temperament==TEMPEREQ)) {
pitchvalue = tscale[p]/100.0; /* cents to semitones */ pitchvalue = tscale[p]/100.0; /* cents to semitones */
/* respect accidentals when they do not occur in a microtone */
if (acc == '^' && !microtone) pitchvalue = pitchvalue + (float) mul; /* [SS] 2025-01-12 */
if (acc == '_' && !microtone) pitchvalue = pitchvalue - (float) mul;
/* printf("note = %c accidental = %c mul = %d p = %d pitchvalue = %f\n",note,accidental,mul,p,pitchvalue); */
pitchvalue = pitchvalue + octave*octave_size/100.0 + middle_c; pitchvalue = pitchvalue + octave*octave_size/100.0 + middle_c;