mirror of
https://github.com/sshlien/abcmidi.git
synced 2025-12-06 06:55:06 +00:00
2022.03.08
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
abcMIDI : abc <-> MIDI conversion utilities
|
abcMIDI : abc <-> MIDI conversion utilities
|
||||||
|
|
||||||
midi2abc version 3.50 February 12 2022
|
midi2abc version 3.52 March 04 2022
|
||||||
abc2midi version 4.69 February 22 2022
|
abc2midi version 4.69 February 22 2022
|
||||||
abc2abc version 2.16 February 22 2022
|
abc2abc version 2.16 February 22 2022
|
||||||
yaps version 1.88 February 22 2022
|
yaps version 1.88 February 22 2022
|
||||||
|
|||||||
30
midi2abc.c
30
midi2abc.c
@@ -45,7 +45,7 @@
|
|||||||
* based on public domain 'midifilelib' package.
|
* based on public domain 'midifilelib' package.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define VERSION "3.49 June 27 2021 midi2abc"
|
#define VERSION "3.52 March 04 2022 midi2abc"
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
/* Microsoft Visual C++ Version 6.0 or higher */
|
/* Microsoft Visual C++ Version 6.0 or higher */
|
||||||
@@ -165,6 +165,7 @@ int header_keysig= -50; /* header key signature */
|
|||||||
int active_keysig = -50; /* last key signature declared */
|
int active_keysig = -50; /* last key signature declared */
|
||||||
int xchannel; /* channel number to be extracted. -1 means all */
|
int xchannel; /* channel number to be extracted. -1 means all */
|
||||||
int timeunits = 1; /*tells prtime to display time in beats [SS] 2018-10-25 */
|
int timeunits = 1; /*tells prtime to display time in beats [SS] 2018-10-25 */
|
||||||
|
double bend2cents = 40.96; /* [SS] 2022-02-12 */
|
||||||
|
|
||||||
|
|
||||||
/* structure for storing music notes */
|
/* structure for storing music notes */
|
||||||
@@ -809,7 +810,7 @@ char *mess;
|
|||||||
int n;
|
int n;
|
||||||
char *p = mess;
|
char *p = mess;
|
||||||
char *buff;
|
char *buff;
|
||||||
char buffer2[BUFFSIZE];
|
char buffer2[BUFFSIZE+4]; /* [SS] 2022-02-12 */
|
||||||
|
|
||||||
if ((type < 1)||(type > unrecognized))
|
if ((type < 1)||(type > unrecognized))
|
||||||
type = unrecognized;
|
type = unrecognized;
|
||||||
@@ -1148,6 +1149,8 @@ void stats_header (int format, int ntrks, int ldivision)
|
|||||||
for (i=0;i<17;i++) {
|
for (i=0;i<17;i++) {
|
||||||
trkdata.npulses[i] = 0;
|
trkdata.npulses[i] = 0;
|
||||||
trkdata.pitchbend[i] = 0;
|
trkdata.pitchbend[i] = 0;
|
||||||
|
trkdata.cntlparam[i] = 0; /* [SS] 2022-03-04 */
|
||||||
|
trkdata.pressure[i] = 0; /* [SS] 2022-03-04 */
|
||||||
progcolor[i] = 0;
|
progcolor[i] = 0;
|
||||||
channel2prog[i] = -1;
|
channel2prog[i] = -1;
|
||||||
channel2nnotes[i] = 0;
|
channel2nnotes[i] = 0;
|
||||||
@@ -1308,6 +1311,7 @@ for (i=0;i<17;i++) {
|
|||||||
printf("%d %d ",i,trkdata.program[i]); /* channel number and program*/
|
printf("%d %d ",i,trkdata.program[i]); /* channel number and program*/
|
||||||
printf("%d %d ",trkdata.notecount[i],trkdata.chordcount[i]);
|
printf("%d %d ",trkdata.notecount[i],trkdata.chordcount[i]);
|
||||||
printf("%d %d ",trkdata.notemeanpitch[i], trkdata.notelength[i]);
|
printf("%d %d ",trkdata.notemeanpitch[i], trkdata.notelength[i]);
|
||||||
|
printf("%d %d ",trkdata.cntlparam[i],trkdata.pressure[i]); /* [SS] 2022-03-04 */
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
channel2nnotes[i] += trkdata.notecount[i] + trkdata.chordcount[i];
|
channel2nnotes[i] += trkdata.notecount[i] + trkdata.chordcount[i];
|
||||||
@@ -1408,13 +1412,21 @@ void stats_noteoff(int chan,int pitch,int vol)
|
|||||||
if(Mf_currtime > last_tick[chan+1]) last_tick[chan+1] = Mf_currtime;
|
if(Mf_currtime > last_tick[chan+1]) last_tick[chan+1] = Mf_currtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mftxt_pressure(chan,pitch,press)
|
void mftxt_polypressure(chan,pitch,press)
|
||||||
int chan, pitch, press;
|
int chan, pitch, press;
|
||||||
{
|
{
|
||||||
char *key;
|
char *key;
|
||||||
if (prtime(timeunits)) return;
|
if (prtime(timeunits)) return;
|
||||||
key = pitch2key(pitch);
|
key = pitch2key(pitch);
|
||||||
printf("Pressure %2d %3s %3d\n",chan+1,key,press);
|
printf("Polyphonic Key Pressure %2d %3s %3d\n",chan+1,key,press);
|
||||||
|
}
|
||||||
|
void mftxt_chanpressure(chan,pitch,press)
|
||||||
|
int chan, pitch, press;
|
||||||
|
{
|
||||||
|
char *key;
|
||||||
|
if (prtime(timeunits)) return;
|
||||||
|
key = pitch2key(pitch);
|
||||||
|
printf("Channel Pressure %2d %3s %3d\n",chan+1,key,press);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1423,6 +1435,7 @@ int chan, lsb, msb;
|
|||||||
{
|
{
|
||||||
float bend;
|
float bend;
|
||||||
int pitchbend;
|
int pitchbend;
|
||||||
|
double cents;
|
||||||
/*
|
/*
|
||||||
if (onlychan >=0 && chan != onlychan) return;
|
if (onlychan >=0 && chan != onlychan) return;
|
||||||
*/
|
*/
|
||||||
@@ -1430,8 +1443,8 @@ int chan, lsb, msb;
|
|||||||
/* [SS] 2014-01-05 2015-08-04*/
|
/* [SS] 2014-01-05 2015-08-04*/
|
||||||
pitchbend = (msb*128 + lsb);
|
pitchbend = (msb*128 + lsb);
|
||||||
bend = (float) (pitchbend - 8192);
|
bend = (float) (pitchbend - 8192);
|
||||||
bend = bend/40.96;
|
cents = bend/bend2cents; /* [SS] 2022-02-12 */
|
||||||
printf("Pitchbend %2d %d bend = %6.3f (cents)\n",chan+1,pitchbend,bend);
|
printf("Pitchbend %2d %d cents = %6.3f (cents)\n",chan+1,pitchbend,cents);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stats_pitchbend(chan,lsb,msb)
|
void stats_pitchbend(chan,lsb,msb)
|
||||||
@@ -1586,6 +1599,7 @@ int chan, control, value;
|
|||||||
/* if (onlychan >=0 && chan != onlychan) return; */
|
/* if (onlychan >=0 && chan != onlychan) return; */
|
||||||
if (prtime(timeunits)) return;
|
if (prtime(timeunits)) return;
|
||||||
|
|
||||||
|
if (control == 6) bend2cents = 8192.0/(100.0*value); /*[SS] 2022-02-12 */
|
||||||
printf("CntlParm %2d %s = %d\n",chan+1, ctype[control],value);
|
printf("CntlParm %2d %s = %d\n",chan+1, ctype[control],value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1776,11 +1790,11 @@ void initfunc_for_mftext()
|
|||||||
Mf_trackend = txt_trackend;
|
Mf_trackend = txt_trackend;
|
||||||
Mf_noteon = mftxt_noteon;
|
Mf_noteon = mftxt_noteon;
|
||||||
Mf_noteoff = mftxt_noteoff;
|
Mf_noteoff = mftxt_noteoff;
|
||||||
Mf_pressure =mftxt_pressure;
|
Mf_pressure =mftxt_polypressure;
|
||||||
Mf_parameter = mftxt_parameter;
|
Mf_parameter = mftxt_parameter;
|
||||||
Mf_pitchbend = mftxt_pitchbend;
|
Mf_pitchbend = mftxt_pitchbend;
|
||||||
Mf_program = mftxt_program;
|
Mf_program = mftxt_program;
|
||||||
Mf_chanpressure = mftxt_pressure;
|
Mf_chanpressure = mftxt_chanpressure;
|
||||||
Mf_sysex = no_op2;
|
Mf_sysex = no_op2;
|
||||||
Mf_metamisc = no_op3;
|
Mf_metamisc = no_op3;
|
||||||
Mf_seqnum = no_op1;
|
Mf_seqnum = no_op1;
|
||||||
|
|||||||
Reference in New Issue
Block a user