Compare commits

..

3 Commits

Author SHA1 Message Date
sshlien
e42463f39f 2025.01.30 2025-01-30 13:20:03 -05:00
sshlien
a67babdb21 2025.01.29 2025-01-29 16:43:42 -05:00
sshlien
abf7e15301 2025.01.22 2025-01-22 08:14:45 -05:00
7 changed files with 42 additions and 28 deletions

View File

@@ -1 +1 @@
January 20 2025
January 30 2025

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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();