mirror of
https://github.com/sshlien/abcmidi.git
synced 2026-04-15 14:23:41 +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
|
everything to the right.) It is necessary to adjust this position by
|
||||||
looking ahead.
|
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
|
abcMIDI : abc <-> MIDI conversion utilities
|
||||||
|
|
||||||
midi2abc version 3.47 November 01 2020
|
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
|
abc2abc version 2.12 October 19 2020
|
||||||
yaps version 1.86 December 10 2020
|
yaps version 1.86 December 10 2020
|
||||||
abcmatch version 1.77 December 10 2020
|
abcmatch version 1.77 December 10 2020
|
||||||
|
|||||||
@@ -518,7 +518,7 @@ int pass;
|
|||||||
{
|
{
|
||||||
char msg[80];
|
char msg[80];
|
||||||
|
|
||||||
if (barno >= 0 || barno < 1024) barloc[barno] = tracklen;
|
if (barno >= 0 && barno < 1024 && pass == 1) barloc[barno] = tracklen;
|
||||||
if (barchecking) {
|
if (barchecking) {
|
||||||
/* only generate these errors once */
|
/* only generate these errors once */
|
||||||
if (noteson && (partrepno == 0)) {
|
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 */
|
/* enables reading V: indication in header */
|
||||||
#define XTEN1 1
|
#define XTEN1 1
|
||||||
@@ -4707,6 +4707,22 @@ if (nofnop == 0) {
|
|||||||
done = 1;
|
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 */
|
if (done == 0 && quiet == -1) { /* [SS] 2013-11-02 */
|
||||||
sprintf(buff, "instruction !%s! ignored", s);
|
sprintf(buff, "instruction !%s! ignored", s);
|
||||||
event_warning(buff);
|
event_warning(buff);
|
||||||
@@ -5084,6 +5100,10 @@ if (gfact_method) applygrace_orig(place);
|
|||||||
else applygrace_new(place);
|
else applygrace_new(place);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cleargracenotes(int start,int end) {
|
||||||
|
removefeatures(start,end);
|
||||||
|
} /* [SS] 2021-01-24 */
|
||||||
|
|
||||||
|
|
||||||
static void applygrace_orig(place)
|
static void applygrace_orig(place)
|
||||||
int place;
|
int place;
|
||||||
@@ -5129,6 +5149,10 @@ int place;
|
|||||||
nextinchord = 0;
|
nextinchord = 0;
|
||||||
hostnotestart = -1;
|
hostnotestart = -1;
|
||||||
while ((hostnotestart == -1) && (j < notes)) {
|
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)) {
|
if ((feature[j] == NOTE) || (feature[j] == REST)) {
|
||||||
hostnotestart = j;
|
hostnotestart = j;
|
||||||
};
|
};
|
||||||
@@ -5192,7 +5216,6 @@ int place;
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void applygrace_new(place)
|
static void applygrace_new(place)
|
||||||
int place;
|
int place;
|
||||||
/* assign lengths to grace notes before generating MIDI */
|
/* assign lengths to grace notes before generating MIDI */
|
||||||
@@ -5238,6 +5261,10 @@ int place;
|
|||||||
nextinchord = 0;
|
nextinchord = 0;
|
||||||
hostnotestart = -1;
|
hostnotestart = -1;
|
||||||
while ((hostnotestart == -1) && (j < notes)) {
|
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)) {
|
if ((feature[j] == NOTE) || (feature[j] == REST)) {
|
||||||
hostnotestart = j;
|
hostnotestart = j;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user