mirror of
https://github.com/sshlien/abcmidi.git
synced 2026-02-04 04:38:10 +00:00
2021.01.24
This commit is contained in:
15
doc/CHANGES
15
doc/CHANGES
@@ -14072,3 +14072,18 @@ point directly to the VOICE features but before. (The insertion shifts
|
||||
everything to the right.) It is necessary to adjust this position by
|
||||
looking ahead.
|
||||
|
||||
|
||||
January 24 2021
|
||||
|
||||
Abc2midi: in some abc files the grace note sequence occurs after the
|
||||
host note just before a barline. The grace sequence does not steal time
|
||||
from a note eventually causing a synchronization problem between
|
||||
the voices. Fix: the grace sequence is removed from the internal
|
||||
representation using a new function cleargracenotes() in store.c if
|
||||
a bar line is encountered during the search for the host note.
|
||||
|
||||
Hooks to new instructions !accent! !mordent!, !sfz!, !wedge! were
|
||||
added to the function event_handle_instruction() in store.c.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
abcMIDI : abc <-> MIDI conversion utilities
|
||||
|
||||
midi2abc version 3.47 November 01 2020
|
||||
abc2midi version 4.46 January 21 2021
|
||||
abc2midi version 4.47 January 24 2021
|
||||
abc2abc version 2.12 October 19 2020
|
||||
yaps version 1.86 December 10 2020
|
||||
abcmatch version 1.77 December 10 2020
|
||||
|
||||
@@ -518,7 +518,7 @@ int pass;
|
||||
{
|
||||
char msg[80];
|
||||
|
||||
if (barno >= 0 || barno < 1024) barloc[barno] = tracklen;
|
||||
if (barno >= 0 && barno < 1024 && pass == 1) barloc[barno] = tracklen;
|
||||
if (barchecking) {
|
||||
/* only generate these errors once */
|
||||
if (noteson && (partrepno == 0)) {
|
||||
|
||||
31
store.c
31
store.c
@@ -186,7 +186,7 @@ int main()
|
||||
|
||||
*/
|
||||
|
||||
#define VERSION "4.46 January 21 2021 abc2midi"
|
||||
#define VERSION "4.47 January 24 2021 abc2midi"
|
||||
|
||||
/* enables reading V: indication in header */
|
||||
#define XTEN1 1
|
||||
@@ -4707,6 +4707,22 @@ if (nofnop == 0) {
|
||||
done = 1;
|
||||
};
|
||||
|
||||
if (strcmp(s,"accent") == 0) { /* [SS] 2021-01-24 */
|
||||
done = 1;
|
||||
};
|
||||
|
||||
if (strcmp(s,"mordent") == 0) { /* [SS] 2021-01-24 */
|
||||
done = 1;
|
||||
};
|
||||
|
||||
if (strcmp(s,"sfz") == 0) { /* [SS] 2021-01-24 */
|
||||
done = 1;
|
||||
};
|
||||
|
||||
if (strcmp(s,"wedge") == 0) { /* [SS] 2021-01-24 */
|
||||
done = 1;
|
||||
};
|
||||
|
||||
if (done == 0 && quiet == -1) { /* [SS] 2013-11-02 */
|
||||
sprintf(buff, "instruction !%s! ignored", s);
|
||||
event_warning(buff);
|
||||
@@ -5084,6 +5100,10 @@ if (gfact_method) applygrace_orig(place);
|
||||
else applygrace_new(place);
|
||||
}
|
||||
|
||||
static void cleargracenotes(int start,int end) {
|
||||
removefeatures(start,end);
|
||||
} /* [SS] 2021-01-24 */
|
||||
|
||||
|
||||
static void applygrace_orig(place)
|
||||
int place;
|
||||
@@ -5129,6 +5149,10 @@ int place;
|
||||
nextinchord = 0;
|
||||
hostnotestart = -1;
|
||||
while ((hostnotestart == -1) && (j < notes)) {
|
||||
if (feature[j] == SINGLE_BAR || feature[j] == DOUBLE_BAR) {
|
||||
cleargracenotes(start,end); /* [SS] 2021.01.24 */
|
||||
return;
|
||||
}
|
||||
if ((feature[j] == NOTE) || (feature[j] == REST)) {
|
||||
hostnotestart = j;
|
||||
};
|
||||
@@ -5192,7 +5216,6 @@ int place;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
static void applygrace_new(place)
|
||||
int place;
|
||||
/* assign lengths to grace notes before generating MIDI */
|
||||
@@ -5238,6 +5261,10 @@ int place;
|
||||
nextinchord = 0;
|
||||
hostnotestart = -1;
|
||||
while ((hostnotestart == -1) && (j < notes)) {
|
||||
if (feature[j] == SINGLE_BAR || feature[j] == DOUBLE_BAR) {
|
||||
cleargracenotes(start,end);
|
||||
return;
|
||||
} /* [SS] 2021-01-24 */
|
||||
if ((feature[j] == NOTE) || (feature[j] == REST)) {
|
||||
hostnotestart = j;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user