cmMidi.h/c : Added pedal related functions and control codes.
This commit is contained in:
parent
60de3ffb15
commit
bd5daa08bd
26
cmMidi.c
26
cmMidi.c
@ -4,16 +4,12 @@
|
|||||||
#include "cmMidi.h"
|
#include "cmMidi.h"
|
||||||
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
mdStatusDescLabelCharCnt = 5
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
cmMidiByte_t status;
|
cmMidiByte_t status;
|
||||||
cmMidiByte_t byteCnt;
|
cmMidiByte_t byteCnt;
|
||||||
char label[ mdStatusDescLabelCharCnt+1 ];
|
const char* label;
|
||||||
} cmMidiStatusDesc;
|
} cmMidiStatusDesc;
|
||||||
|
|
||||||
cmMidiStatusDesc _cmMidiStatusDescArray[] =
|
cmMidiStatusDesc _cmMidiStatusDescArray[] =
|
||||||
@ -72,6 +68,16 @@ cmMidiStatusDesc _cmMidiMetaStatusDescArray[] =
|
|||||||
{ kInvalidMetaMdId, kInvalidMidiByte, "ERROR"}
|
{ kInvalidMetaMdId, kInvalidMidiByte, "ERROR"}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cmMidiStatusDesc _cmMidiPedalLabel[] =
|
||||||
|
{
|
||||||
|
{ kSustainCtlMdId, 0, "sustn" },
|
||||||
|
{ kPortamentoCtlMdId, 0, "porta" },
|
||||||
|
{ kSostenutoCtlMdId, 0, "sostn" },
|
||||||
|
{ kSoftPedalCtlMdId, 0, "soft" },
|
||||||
|
{ kLegatoCtlMdId, 0, "legat" },
|
||||||
|
{ kInvalidMidiByte, kInvalidMidiByte, "ERROR"}
|
||||||
|
};
|
||||||
|
|
||||||
//====================================================================================================
|
//====================================================================================================
|
||||||
|
|
||||||
const char* cmMidiStatusToLabel( cmMidiByte_t status )
|
const char* cmMidiStatusToLabel( cmMidiByte_t status )
|
||||||
@ -102,6 +108,16 @@ const char* cmMidiMetaStatusToLabel( cmMidiByte_t metaStatus )
|
|||||||
return _cmMidiMetaStatusDescArray[i].label;
|
return _cmMidiMetaStatusDescArray[i].label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* cmMidiPedalLabel( cmMidiByte_t d0 )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for(i=0; _cmMidiPedalLabel[i].status != kInvalidMidiByte; ++i)
|
||||||
|
if( _cmMidiPedalLabel[i].status == d0 )
|
||||||
|
break;
|
||||||
|
|
||||||
|
return _cmMidiPedalLabel[i].label;
|
||||||
|
}
|
||||||
|
|
||||||
cmMidiByte_t cmMidiStatusToByteCount( cmMidiByte_t status )
|
cmMidiByte_t cmMidiStatusToByteCount( cmMidiByte_t status )
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
12
cmMidi.h
12
cmMidi.h
@ -68,7 +68,11 @@ extern "C" {
|
|||||||
kSeqSpecMdId = 0x7f,
|
kSeqSpecMdId = 0x7f,
|
||||||
kInvalidMetaMdId = 0x80,
|
kInvalidMetaMdId = 0x80,
|
||||||
|
|
||||||
kSustainCtlMdId = 64
|
kSustainCtlMdId = 0x40,
|
||||||
|
kPortamentoCtlMdId = 0x41,
|
||||||
|
kSostenutoCtlMdId = 0x42,
|
||||||
|
kSoftPedalCtlMdId = 0x43,
|
||||||
|
kLegatoCtlMdId = 0x44
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -89,8 +93,14 @@ extern "C" {
|
|||||||
#define cmMidiIsSustainPedalDown( s, d0, d1) ( cmMidiIsSustainPedal(s,d0) && (d1)>=64 )
|
#define cmMidiIsSustainPedalDown( s, d0, d1) ( cmMidiIsSustainPedal(s,d0) && (d1)>=64 )
|
||||||
#define cmMidiIsSustainPedalUp( s, d0, d1) ( cmMidiIsSustainPedal(s,d0) && (d1)<64 )
|
#define cmMidiIsSustainPedalUp( s, d0, d1) ( cmMidiIsSustainPedal(s,d0) && (d1)<64 )
|
||||||
|
|
||||||
|
#define cmMidiIsPedal( s, d0 ) ( kCtlMdId <= (s) && (s) <= (kCtlMdId + kMidiChCnt) && (d0)>=kSustainCtlMdId && (d0)<=kLegatoCtlMdId )
|
||||||
|
#define cmMidiIsPedalDown( s, d0, d1 ) ( cmMidiIsPedal(s,d0) && (d1)>=64 )
|
||||||
|
#define cmMidiIsPedalUp( s, d0, d1 ) ( cmMidiIsPedal(s,d0) && (d1)<64 )
|
||||||
|
|
||||||
|
|
||||||
const char* cmMidiStatusToLabel( cmMidiByte_t status );
|
const char* cmMidiStatusToLabel( cmMidiByte_t status );
|
||||||
const char* cmMidiMetaStatusToLabel( cmMidiByte_t metaStatus );
|
const char* cmMidiMetaStatusToLabel( cmMidiByte_t metaStatus );
|
||||||
|
const char* cmMidiPedalLabel( cmMidiByte_t d0 );
|
||||||
|
|
||||||
// Returns kInvalidMidiByte if status is not a valid status byte
|
// Returns kInvalidMidiByte if status is not a valid status byte
|
||||||
cmMidiByte_t cmMidiStatusToByteCount( cmMidiByte_t status );
|
cmMidiByte_t cmMidiStatusToByteCount( cmMidiByte_t status );
|
||||||
|
Loading…
Reference in New Issue
Block a user