libcm/cmProc4.h

65 lines
1.8 KiB
C
Raw Normal View History

2012-11-15 04:01:05 +00:00
#ifndef cmProc4_h
#define cmProc4_h
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
unsigned smpIdx; // time tag sample index for val
cmMidiByte_t val; //
bool validFl; //
} cmScFolWndEle_t;
typedef struct
{
unsigned pitchCnt; //
unsigned* pitchV; // pitchV[pitchCnt]
unsigned evtIdx; // index of the score event (into cmScoreEvt[]) at this location
int barNumb; // bar number of this location
} cmScFolLoc_t;
typedef struct
{
cmObj obj;
cmReal_t srate;
cmScH_t scH;
unsigned maxWndSmp;
unsigned wndN;
cmScFolWndEle_t* wndV; // wnd[wndN]
int wni; // oldest value in wnd[]
int locN;
cmScFolLoc_t* loc;
unsigned sri; // last reset score index
unsigned sbi; // first (oldest) score index
unsigned sei; // last (newest) score index
unsigned evalWndN; // (dflt:5) count of elements to use for refined match window
unsigned allowedMissCnt; // (dflt:1) count of non-match elements in refined match where a match is still signaled
unsigned* edWndMtx;
} cmScFol;
// wndN = max count of elements in the score following window.
// wndMs = max length of the score following window in time
cmScFol* cmScFolAlloc( cmCtx* ctx, cmScFol* p, cmReal_t srate, unsigned wndN, cmReal_t wndMs, cmScH_t scH );
cmRC_t cmScFolFree( cmScFol** pp );
cmRC_t cmScFolInit( cmScFol* p, cmReal_t srate, unsigned wndN, cmReal_t wndMs, cmScH_t scH );
cmRC_t cmScFolFinal( cmScFol* p );
cmRC_t cmScFolReset( cmScFol* p, unsigned scoreIndex );
unsigned cmScFolExec( cmScFol* p, unsigned smpIdx, unsigned status, cmMidiByte_t d0, cmMidiByte_t d1 );
#ifdef __cplusplus
}
#endif
#endif