mirror of
https://github.com/sshlien/abcmidi.git
synced 2025-12-06 15:05:07 +00:00
Compare commits
3 Commits
2025.01.20
...
2025.01.30
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e42463f39f | ||
|
|
a67babdb21 | ||
|
|
abf7e15301 |
@@ -15579,10 +15579,12 @@ occurring outside of microtones.
|
||||
|
||||
|
||||
January 20 2025
|
||||
January 22 2025
|
||||
|
||||
midi2abc
|
||||
|
||||
Added new option -midinotes for listing the notes (including pitchbends)
|
||||
present in the midi file. This is useful for checking the accuracy
|
||||
of abc2midi or the abc notation representation.
|
||||
Added new options -midinotes and -midinotes-brief for listing the
|
||||
notes (including pitchbends) present in the midi file. This is
|
||||
useful for checking the accuracy of abc2midi or the abc notation
|
||||
representation.
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ midi2abc \-f \fIinfile\fP [\-xa] [\-ga]
|
||||
[\-k \fIkey\fP] [\-c \fIchannel\fP] [\-obpl] [\-bpl \fibars\fP] [\-bps \fPbars\fP]
|
||||
[\-o \fIfilename\fP] [\-s] [\-sr \fiunits\fP] [\-sum] [\-nb] [\-nt]
|
||||
[\-splitvoices] [\-midigram] [\-mftext] [-mftextpulses] [\-nogr] [\-title \fistring\fP]
|
||||
[\-origin \fistring\fP][\-midinotes]
|
||||
[\-origin \fistring\fP][\-midinotes][\-midinotes-brief]
|
||||
|
||||
|
||||
|
||||
@@ -178,6 +178,13 @@ Like -mftext, this option outputs the notes present in the
|
||||
midi file; however, the output is more consise (note-on and
|
||||
noteoff are combined) in order to make it easier to compare
|
||||
one or more midi files using dif, diffuse, or winmerge.
|
||||
The time as beat number, track number, channel number, pitch,
|
||||
and pitch bend are presented.
|
||||
|
||||
.TP
|
||||
.B -midinotes-brief
|
||||
Similar to -midinotes except only the pitch and pitch bend
|
||||
values are presented.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -277,13 +277,9 @@ of numbers ranging from 0 to 7 indicating the presence of note onsets
|
||||
for the selected percussion instrument for the sequence of beats
|
||||
in the midi file. Here is a truncated sample of the output.
|
||||
.br
|
||||
|
||||
0 0 0 0 0 0 0 0 1 0 0 4 1 0 0 4 1 0 0 4 1 0 0 4 1 0 0 4 1 0 0 4 1 4 4 0
|
||||
1 0 0 0 1 0 5 0 1 0 5 0 1 0 5 0 1 0 5 0 1 0 5 0 1 0 5 0 1 0 5 0 1 0 0 0
|
||||
1 0 5 0 1 0 5 0 1 etc.
|
||||
|
||||
11 71 c1 1 11 51 f1 c1 1 11 51 e1 1 11 d1 c1 31 1 1 1 21 b1 d1 d1 51
|
||||
.br
|
||||
One can see a repeating 4 beat pattern.
|
||||
51 51 51 51 41 71 c1 11 1 11 41 11 1 11 41 11 1 11 41 11 31 51 41 11
|
||||
|
||||
.PP
|
||||
-ppat
|
||||
@@ -294,14 +290,12 @@ If it is unsuccessful, it returns a message of its failue. Otherwise,
|
||||
encodes the position of these drum onsets in a 8 bit byte for each
|
||||
quarter note beat in the midi file. The lower (right) 4 bits encode the
|
||||
bass drum and the higher (left) 4 bits encode the snare drum in the
|
||||
same manner as described above for -ppatfor.
|
||||
same manner as described above for -ppatfor. The integers are printed
|
||||
in hexadecimal.
|
||||
.br
|
||||
0 0 0 0 0 0 0 0 0 0 33 145 33 145 33 145 33 145 33 145 33 145 33 145
|
||||
02 88 20 02 a0 08 80 02 82 08 80 02 82 08 80 02 82 08 80 02 82 08
|
||||
.br
|
||||
33 145 33 145 33 145 33 145 33 145 33 145 33 145 33 145 33 145 33 145
|
||||
.br
|
||||
33 145 33 145 33 145 33 145 33 145 33 and etc.
|
||||
|
||||
80 02 82 08 80 02 82 08 80 02 82 08 20 a0 0a 08 80 02 82 08 80 02
|
||||
|
||||
.PP
|
||||
-ppathist
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
abcMIDI : abc <-> MIDI conversion utilities
|
||||
|
||||
midi2abc version 3.60 January 20 2025
|
||||
midi2abc version 3.61 January 22 2025
|
||||
abc2midi version 4.99 January 12 2025
|
||||
abc2abc version 2.22 April 30 2024
|
||||
yaps version 1.94 April 30 2024
|
||||
abcmatch version 1.83 February 19 2024
|
||||
midicopy version 1.40 August 11 2024
|
||||
midistats version 0.96 July 26 2024
|
||||
midistats version 0.98 January 30 2025
|
||||
|
||||
24th January 2002
|
||||
Copyright James Allwright
|
||||
|
||||
15
midi2abc.c
15
midi2abc.c
@@ -45,7 +45,7 @@
|
||||
* based on public domain 'midifilelib' package.
|
||||
*/
|
||||
|
||||
#define VERSION "3.60 January 17 2025 midi2abc"
|
||||
#define VERSION "3.61 January 22 2025 midi2abc"
|
||||
|
||||
#include <limits.h>
|
||||
/* Microsoft Visual C++ Version 6.0 or higher */
|
||||
@@ -963,8 +963,9 @@ if (start_time >= 0)
|
||||
/* printf("%6.2f %6.2f %d %d %d %d\n",
|
||||
(double) start_time/(double) division, (double) Mf_currtime/(double) division, trackno+1, chan +1, pitch,chanbend[chan+1]);
|
||||
*/
|
||||
printf("%6.2f %d %d %d %d\n",
|
||||
if (midiprint == 3) printf("%6.2f %d %d %d %d\n",
|
||||
(double) start_time/(double) division, trackno+1, chan +1, pitch,chanbend[chan+1]);
|
||||
else printf("%d %d\n", pitch,chanbend[chan+1]);
|
||||
if(Mf_currtime > last_tick[chan+1]) last_tick[chan+1] = Mf_currtime;
|
||||
}
|
||||
|
||||
@@ -3239,6 +3240,11 @@ int argc;
|
||||
{
|
||||
midiprint = 3;
|
||||
}
|
||||
arg = getarg("-midinotes-brief",argc,argv);
|
||||
if (arg != -1)
|
||||
{
|
||||
midiprint = 4;
|
||||
}
|
||||
|
||||
|
||||
usesplits = 0;
|
||||
@@ -3477,6 +3483,7 @@ int argc;
|
||||
printf(" -origin <string> Adds O: field containing string\n");
|
||||
printf(" -midigram Prints midigram \n");
|
||||
printf(" -midinotes Prints pitches with bends\n");
|
||||
printf(" -midinotes-brief Prints only pitches and bends\n");
|
||||
printf(" -mftext mftext output in beats\n");
|
||||
printf(" -mftextpulses mftext output in midi pulses\n");
|
||||
printf(" -mftext mftext output in seconds\n");
|
||||
@@ -3748,6 +3755,10 @@ int argc;
|
||||
initfunc_for_midipitch();
|
||||
midigram(argc,argv);
|
||||
break;
|
||||
case 4: initfunc_for_midinotes();
|
||||
initfunc_for_midipitch();
|
||||
midigram(argc,argv);
|
||||
break;
|
||||
default:
|
||||
midi2abc(argc,argv);
|
||||
}
|
||||
|
||||
14
midistats.c
14
midistats.c
@@ -17,7 +17,7 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#define VERSION "0.96 October 10 2024 midistats"
|
||||
#define VERSION "0.98 January 30 2025 midistats"
|
||||
|
||||
/* midistrats.c is a descendent of midi2abc.c which was becoming to
|
||||
large. The object of the program is to extract statistical characterisitic
|
||||
@@ -1513,9 +1513,9 @@ for (i=1;i<256;i++) {
|
||||
}
|
||||
|
||||
|
||||
void output_drumpat () {
|
||||
void output_drumpat (char * c) {
|
||||
int i;
|
||||
for (i=0;i<=lastBeat;i++) printf("%d ",drumpat[i]);
|
||||
for (i=0;i<=lastBeat;i++) printf(c,drumpat[i]);
|
||||
/*for (i=0;i<lastBeat;i++) output_perc_pattern(drumpat[i]);*/
|
||||
printf("\n");
|
||||
}
|
||||
@@ -1654,11 +1654,11 @@ for (i=0;i<4;i++) {
|
||||
snaremax = drumhistogram[snareindex];
|
||||
}
|
||||
}
|
||||
if (bassmax && snaremax) {
|
||||
if (bassmax || snaremax) {
|
||||
printf("bass %d %d\n",bassindex,bassmax);
|
||||
printf("snare %d %d\n",snareindex,snaremax);
|
||||
} else {
|
||||
printf("missing bass or snare\n");
|
||||
printf("missing bass and snare\n");
|
||||
return;
|
||||
}
|
||||
dualDrumPattern(bassindex,snareindex);
|
||||
@@ -1944,11 +1944,11 @@ if (percanalysis) {
|
||||
if (percpattern) {
|
||||
drumanalysis();
|
||||
percsummary();
|
||||
output_drumpat();
|
||||
output_drumpat("%02x ");
|
||||
}
|
||||
if (percpatternfor) {
|
||||
drumpattern(percnum);
|
||||
output_drumpat();
|
||||
output_drumpat("%d ");
|
||||
}
|
||||
if (percpatternhist) {
|
||||
drumanalysis();
|
||||
|
||||
Reference in New Issue
Block a user